Cleaned up follower code.
Added support for asymmetrical follower pokemon. Fixed bug with changing GraphicsInfo size. Added follower Substitute gfx. Credit: shikashipx
This commit is contained in:
parent
b56158428e
commit
a407c72235
21 changed files with 738 additions and 544 deletions
|
@ -30,17 +30,6 @@ EventScript_Follower::
|
|||
bufferlivemonnickname 0
|
||||
playfirstmoncry
|
||||
callfunc ScrFunc_getfolloweraction
|
||||
checkpartymove MOVE_FLY
|
||||
compare VAR_RESULT 6
|
||||
goto_if_eq EventScript_FollowerEnd
|
||||
bufferlivemonnickname 0
|
||||
msgbox gText_WantsToFly, MSGBOX_YESNO
|
||||
switch VAR_RESULT
|
||||
case NO, EventScript_FollowerEnd
|
||||
case YES, EventScript_FollowerFly
|
||||
case MULTI_B_PRESSED, EventScript_FollowerEnd
|
||||
EventScript_FollowerFly::
|
||||
callfunc ScrFunc_followerfly
|
||||
EventScript_FollowerEnd::
|
||||
waitfieldeffect FLDEFF_EMOTE
|
||||
release
|
||||
|
|
|
@ -56,7 +56,6 @@ static void AddSpritesToOamBuffer(void);
|
|||
static u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
|
||||
static void ResetOamMatrices(void);
|
||||
static void ResetSprite(struct Sprite *sprite);
|
||||
static s16 AllocSpriteTiles(u16 tileCount);
|
||||
static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images);
|
||||
static void ResetAllSprites(void);
|
||||
static void BeginAnim(struct Sprite *sprite);
|
||||
|
|
|
@ -297,6 +297,7 @@ void InitSpriteAffineAnim(struct Sprite *sprite);
|
|||
void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation);
|
||||
u16 LoadSpriteSheet(const struct SpriteSheet *sheet);
|
||||
void LoadSpriteSheets(const struct SpriteSheet *sheets);
|
||||
s16 AllocSpriteTiles(u16 tileCount);
|
||||
u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet);
|
||||
void AllocTilesForSpriteSheets(struct SpriteSheet *sheets);
|
||||
void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet);
|
||||
|
|
BIN
graphics/object_events/pics/pokemon/substitute.png
Normal file
BIN
graphics/object_events/pics/pokemon/substitute.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -276,6 +276,11 @@
|
|||
#define ANIM_RUN_WEST (ANIM_STD_COUNT + 2)
|
||||
#define ANIM_RUN_EAST (ANIM_STD_COUNT + 3)
|
||||
|
||||
#define ANIM_EXIT_POKEBALL_FAST_SOUTH (ANIM_STD_COUNT + 0)
|
||||
#define ANIM_EXIT_POKEBALL_FAST_NORTH (ANIM_STD_COUNT + 1)
|
||||
#define ANIM_EXIT_POKEBALL_FAST_WEST (ANIM_STD_COUNT + 2)
|
||||
#define ANIM_EXIT_POKEBALL_FAST_EAST (ANIM_STD_COUNT + 3)
|
||||
|
||||
#define ANIM_BUNNY_HOP_BACK_WHEEL_SOUTH (ANIM_STD_COUNT + 0)
|
||||
#define ANIM_BUNNY_HOP_BACK_WHEEL_NORTH (ANIM_STD_COUNT + 1)
|
||||
#define ANIM_BUNNY_HOP_BACK_WHEEL_WEST (ANIM_STD_COUNT + 2)
|
||||
|
|
|
@ -289,6 +289,7 @@ void MovementType_FollowPlayer(struct Sprite *);
|
|||
u8 GetSlideMovementAction(u32);
|
||||
u8 GetJumpMovementAction(u32);
|
||||
u8 GetJump2MovementAction(u32);
|
||||
u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority);
|
||||
u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority);
|
||||
|
||||
u8 MovementType_WanderAround_Step0(struct ObjectEvent *, struct Sprite *);
|
||||
|
|
|
@ -125,5 +125,6 @@ enum {
|
|||
};
|
||||
|
||||
extern const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT];
|
||||
extern const struct FollowerMessagePool gFollowerBasicMessages[FOLLOWER_EMOTION_LENGTH];
|
||||
|
||||
#endif //GUARD_FOLLOWER_HELPER_H
|
||||
|
|
|
@ -272,6 +272,11 @@ enum {
|
|||
#define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6)
|
||||
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
|
||||
|
||||
#define PLAYER_AVATAR_FLAG_BIKE (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)
|
||||
// Player avatar flags for which follower pokemon are hidden
|
||||
#define FOLLOWER_INVISIBLE_FLAGS (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_UNDERWATER | \
|
||||
PLAYER_AVATAR_FLAG_BIKE | PLAYER_AVATAR_FLAG_FORCED_MOVE)
|
||||
|
||||
enum
|
||||
{
|
||||
ACRO_BIKE_NORMAL,
|
||||
|
|
|
@ -11,7 +11,23 @@ remote_path=$(git remote get-url build | sed -nr -e "s/ssh:\/\/\w+@?\w*://p") #
|
|||
make_cmd=$(git config --local remake.make)
|
||||
make_product=$(git config --local remake.src)
|
||||
make_dest=$(git config --local remake.dest)
|
||||
set -x
|
||||
old_head=$(git rev-parse --short @)
|
||||
set +e
|
||||
# Make a temp commit for unstaged changes
|
||||
temp_commit_msg="temp build"
|
||||
git commit -aem "$temp_commit_msg"
|
||||
retVal=$?
|
||||
set -e
|
||||
# set -x
|
||||
git push build --force-with-lease
|
||||
ssh $remote_host "cd $remote_path && git reset --hard && git checkout $git_branch && $make_cmd"
|
||||
scp "$remote_host:$remote_path/$make_product" $make_dest
|
||||
# { set +x; } 2>/dev/null
|
||||
# Reset temp commit
|
||||
if [[ $retVal -eq 0 ]]; then
|
||||
commit_msg=$(git log -1 --pretty=%B)
|
||||
if [[ "$commit_msg" == "$temp_commit_msg" ]]; then
|
||||
git reset "$old_head" &>/dev/null
|
||||
fi
|
||||
fi
|
||||
set -x
|
||||
ssh -o "VisualHostKey=no" $remote_host "cd $remote_path && git reset --hard && git checkout $git_branch && $make_cmd"
|
||||
scp -o "VisualHostKey=no" "$remote_host:$remote_path/$make_product" $make_dest
|
||||
|
|
|
@ -687,6 +687,9 @@ $(FLDEFFGFXDIR)/secret_power_tree.4bpp: %.4bpp: %.png
|
|||
$(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png
|
||||
$(GFX) $< $@ -mwidth 4 -mheight 1
|
||||
|
||||
$(OBJEVENTGFXDIR)/pokemon/substitute.4bpp: %.4bpp: %.png
|
||||
$(GFX) $< $@ -mwidth 4 -mheight 4
|
||||
|
||||
$(OBJEVENTGFXDIR)/pokemon/bulbasaur.4bpp: %.4bpp: %.png
|
||||
$(GFX) $< $@ -mwidth 4 -mheight 4
|
||||
|
||||
|
|
|
@ -217,6 +217,12 @@ static const union AnimCmd sAnim_FaceEast2F[] =
|
|||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_FaceEast2F_Asym[] =
|
||||
{
|
||||
ANIMCMD_FRAME(6, 16),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoSouth[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 8),
|
||||
|
@ -246,11 +252,11 @@ static const union AnimCmd sAnim_GoNorth[] =
|
|||
|
||||
static const union AnimCmd sAnim_GoNorth2F[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 6),
|
||||
ANIMCMD_FRAME(3, 6),
|
||||
ANIMCMD_FRAME(3, 6),
|
||||
ANIMCMD_FRAME(2, 6),
|
||||
ANIMCMD_JUMP(0),
|
||||
ANIMCMD_FRAME(2, 6),
|
||||
ANIMCMD_FRAME(3, 6),
|
||||
ANIMCMD_FRAME(3, 6),
|
||||
ANIMCMD_FRAME(2, 6),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoWest[] =
|
||||
|
@ -289,6 +295,15 @@ static const union AnimCmd sAnim_GoEast2F[] =
|
|||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoEast2F_Asym[] =
|
||||
{
|
||||
ANIMCMD_FRAME(6, 6),
|
||||
ANIMCMD_FRAME(7, 6),
|
||||
ANIMCMD_FRAME(7, 6),
|
||||
ANIMCMD_FRAME(6, 6),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoFastSouth[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
|
@ -361,6 +376,15 @@ static const union AnimCmd sAnim_GoFastEast2F[] =
|
|||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoFastEast2F_Asym[] =
|
||||
{
|
||||
ANIMCMD_FRAME(6, 4),
|
||||
ANIMCMD_FRAME(7, 4),
|
||||
ANIMCMD_FRAME(7, 4),
|
||||
ANIMCMD_FRAME(6, 4),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoFasterSouth[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 2),
|
||||
|
@ -422,6 +446,19 @@ static const union AnimCmd sAnim_ExitPokeballEast[] =
|
|||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_ExitPokeballEast_Asym[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_FRAME(2, 1),
|
||||
ANIMCMD_FRAME(3, 1),
|
||||
ANIMCMD_FRAME(4, 1),
|
||||
ANIMCMD_FRAME(6, 8),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_EnterSouth[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
|
@ -497,6 +534,18 @@ static const union AnimCmd sAnim_EnterEast[] =
|
|||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_EnterEast_Asym[] =
|
||||
{
|
||||
ANIMCMD_FRAME(6, 8),
|
||||
ANIMCMD_FRAME(4, 1),
|
||||
ANIMCMD_FRAME(3, 1),
|
||||
ANIMCMD_FRAME(2, 1),
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoFastestSouth[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 1),
|
||||
|
@ -554,6 +603,18 @@ static const union AnimCmd sAnim_ExitPokeballFastEast[] =
|
|||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_ExitPokeballFastEast_Asym[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_FRAME(2, 1),
|
||||
ANIMCMD_FRAME(3, 1),
|
||||
ANIMCMD_FRAME(4, 1),
|
||||
ANIMCMD_FRAME(6, 2),
|
||||
ANIMCMD_FRAME(6, 1),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_GoFastestNorth[] =
|
||||
{
|
||||
ANIMCMD_FRAME(5, 1),
|
||||
|
@ -1084,31 +1145,59 @@ static const union AnimCmd *const sAnimTable_Standard[] = {
|
|||
};
|
||||
|
||||
static const union AnimCmd *const sAnimTable_Following[] = {
|
||||
sAnim_FaceSouth,
|
||||
sAnim_FaceNorth2F,
|
||||
sAnim_FaceWest2F,
|
||||
sAnim_FaceEast2F,
|
||||
sAnim_GoSouth2F,
|
||||
sAnim_GoNorth2F,
|
||||
sAnim_GoWest2F,
|
||||
sAnim_GoEast2F,
|
||||
sAnim_GoFastSouth2F,
|
||||
sAnim_GoFastNorth2F,
|
||||
sAnim_GoFastWest2F,
|
||||
sAnim_GoFastEast2F,
|
||||
sAnim_EnterSouth,
|
||||
sAnim_EnterNorth,
|
||||
sAnim_EnterWest,
|
||||
sAnim_EnterEast,
|
||||
sAnim_ExitPokeballSouth,
|
||||
sAnim_ExitPokeballNorth,
|
||||
sAnim_ExitPokeballWest,
|
||||
sAnim_ExitPokeballEast,
|
||||
// ANIM_STD_COUNT =
|
||||
sAnim_ExitPokeballFastSouth,
|
||||
sAnim_ExitPokeballFastNorth,
|
||||
sAnim_ExitPokeballFastWest,
|
||||
sAnim_ExitPokeballFastEast,
|
||||
[ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
|
||||
[ANIM_STD_FACE_NORTH] = sAnim_FaceNorth2F,
|
||||
[ANIM_STD_FACE_WEST] = sAnim_FaceWest2F,
|
||||
[ANIM_STD_FACE_EAST] = sAnim_FaceEast2F,
|
||||
[ANIM_STD_GO_SOUTH] = sAnim_GoSouth2F,
|
||||
[ANIM_STD_GO_NORTH] = sAnim_GoNorth2F,
|
||||
[ANIM_STD_GO_WEST] = sAnim_GoWest2F,
|
||||
[ANIM_STD_GO_EAST] = sAnim_GoEast2F,
|
||||
[ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth2F,
|
||||
[ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth2F,
|
||||
[ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest2F,
|
||||
[ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast2F,
|
||||
// 'Faster' and above used for entering/exiting pokeball
|
||||
[ANIM_STD_GO_FASTER_SOUTH] = sAnim_EnterSouth,
|
||||
[ANIM_STD_GO_FASTER_NORTH] = sAnim_EnterNorth,
|
||||
[ANIM_STD_GO_FASTER_WEST] = sAnim_EnterWest,
|
||||
[ANIM_STD_GO_FASTER_EAST] = sAnim_EnterEast,
|
||||
[ANIM_STD_GO_FASTEST_SOUTH] = sAnim_ExitPokeballSouth,
|
||||
[ANIM_STD_GO_FASTEST_NORTH] = sAnim_ExitPokeballNorth,
|
||||
[ANIM_STD_GO_FASTEST_WEST] = sAnim_ExitPokeballWest,
|
||||
[ANIM_STD_GO_FASTEST_EAST] = sAnim_ExitPokeballEast,
|
||||
[ANIM_EXIT_POKEBALL_FAST_SOUTH] = sAnim_ExitPokeballFastSouth,
|
||||
[ANIM_EXIT_POKEBALL_FAST_NORTH] = sAnim_ExitPokeballFastNorth,
|
||||
[ANIM_EXIT_POKEBALL_FAST_WEST] = sAnim_ExitPokeballFastWest,
|
||||
[ANIM_EXIT_POKEBALL_FAST_EAST] = sAnim_ExitPokeballFastEast,
|
||||
};
|
||||
|
||||
// Like the above, but has separate frames for facing right
|
||||
static const union AnimCmd *const sAnimTable_Following_Asym[] = {
|
||||
[ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
|
||||
[ANIM_STD_FACE_NORTH] = sAnim_FaceNorth2F,
|
||||
[ANIM_STD_FACE_WEST] = sAnim_FaceWest2F,
|
||||
[ANIM_STD_FACE_EAST] = sAnim_FaceEast2F_Asym,
|
||||
[ANIM_STD_GO_SOUTH] = sAnim_GoSouth2F,
|
||||
[ANIM_STD_GO_NORTH] = sAnim_GoNorth2F,
|
||||
[ANIM_STD_GO_WEST] = sAnim_GoWest2F,
|
||||
[ANIM_STD_GO_EAST] = sAnim_GoEast2F_Asym,
|
||||
[ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth2F,
|
||||
[ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth2F,
|
||||
[ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest2F,
|
||||
[ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast2F_Asym,
|
||||
[ANIM_STD_GO_FASTER_SOUTH] = sAnim_EnterSouth,
|
||||
[ANIM_STD_GO_FASTER_NORTH] = sAnim_EnterNorth,
|
||||
[ANIM_STD_GO_FASTER_WEST] = sAnim_EnterWest,
|
||||
[ANIM_STD_GO_FASTER_EAST] = sAnim_EnterEast_Asym,
|
||||
[ANIM_STD_GO_FASTEST_SOUTH] = sAnim_ExitPokeballSouth,
|
||||
[ANIM_STD_GO_FASTEST_NORTH] = sAnim_ExitPokeballNorth,
|
||||
[ANIM_STD_GO_FASTEST_WEST] = sAnim_ExitPokeballWest,
|
||||
[ANIM_STD_GO_FASTEST_EAST] = sAnim_ExitPokeballEast_Asym,
|
||||
[ANIM_EXIT_POKEBALL_FAST_SOUTH] = sAnim_ExitPokeballFastSouth,
|
||||
[ANIM_EXIT_POKEBALL_FAST_NORTH] = sAnim_ExitPokeballFastNorth,
|
||||
[ANIM_EXIT_POKEBALL_FAST_WEST] = sAnim_ExitPokeballFastWest,
|
||||
[ANIM_EXIT_POKEBALL_FAST_EAST] = sAnim_ExitPokeballFastEast_Asym,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnimTable_HoOh[] = {
|
||||
|
|
|
@ -392,6 +392,7 @@ const u32 gObjectEventPic_StrangeBall[] = INCBIN_U32("graphics/object_events/pic
|
|||
#endif
|
||||
#endif
|
||||
|
||||
const u32 gObjectEventPic_Substitute[] = INCBIN_U32("graphics/object_events/pics/pokemon/substitute.4bpp");
|
||||
const u32 gObjectEventPic_Bulbasaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/bulbasaur.4bpp");
|
||||
const u32 gObjectEventPic_Ivysaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/ivysaur.4bpp");
|
||||
const u32 gObjectEventPic_Venusaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/venusaur.4bpp");
|
||||
|
@ -836,6 +837,8 @@ const u32 gObjectEventPic_RayquazaCutscene[] = INCBIN_U32("graphics/object_event
|
|||
const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal");
|
||||
const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal");
|
||||
|
||||
const u16 gObjectEventPal_Substitute[] = INCBIN_U16("graphics/object_events/pics/pokemon/substitute.gbapal");
|
||||
|
||||
const u16 gObjectEventPaletteEmotes[] = INCBIN_U16("graphics/misc/emotes.gbapal");
|
||||
|
||||
#if OW_MON_POKEBALLS
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
// Species-indexed pokemon object event table
|
||||
const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = {
|
||||
// placeholder gfx, used when other gfx aren't found
|
||||
[SPECIES_NONE] = {0xFFFF, OBJ_EVENT_PAL_TAG_SUBSTITUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Substitute, gDummySpriteAffineAnimTable},
|
||||
[SPECIES_BULBASAUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Bulbasaur, gDummySpriteAffineAnimTable},
|
||||
[SPECIES_IVYSAUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ivysaur, gDummySpriteAffineAnimTable},
|
||||
[SPECIES_VENUSAUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Venusaur, gDummySpriteAffineAnimTable},
|
||||
|
|
|
@ -2117,6 +2117,14 @@ static const struct SpriteFrameImage sPicTable_Ball_STRANGE[] = {
|
|||
|
||||
#endif
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_Substitute[] = {
|
||||
overworld_frame(gObjectEventPic_Substitute, 4, 4, 0),
|
||||
overworld_frame(gObjectEventPic_Substitute, 4, 4, 1),
|
||||
overworld_frame(gObjectEventPic_Substitute, 4, 4, 2),
|
||||
overworld_frame(gObjectEventPic_Substitute, 4, 4, 3),
|
||||
overworld_frame(gObjectEventPic_Substitute, 4, 4, 4),
|
||||
overworld_frame(gObjectEventPic_Substitute, 4, 4, 5),
|
||||
};
|
||||
static const struct SpriteFrameImage sPicTable_Bulbasaur[] = {
|
||||
overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 0),
|
||||
overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 1),
|
||||
|
|
|
@ -50,7 +50,7 @@ static const u8 sHappyMsg27[] = _("Your POKéMON is smelling the scent\nof flowe
|
|||
static const u8 sHappyMsg28[] = _("{STR_VAR_1} seems very happy to see\nyou!");
|
||||
static const u8 sHappyMsg29[] = _("{STR_VAR_1} faced this way and\ngrinned.");
|
||||
static const u8 sHappyMsg30[] = _("{STR_VAR_1} happily cuddled up to\nyou!");
|
||||
// Conditional messages begin here, index 31
|
||||
// Conditional messages begin here, index 31
|
||||
static const u8 sHappyMsg31[] = _("Your POKéMON seems happy about the\ngreat weather.");
|
||||
static const u8 sHappyMsg32[] = _("{STR_VAR_1} is very composed and\nsure of itself!");
|
||||
|
||||
|
@ -106,7 +106,7 @@ const struct FollowerMsgInfo gFollowerNeutralMessages[] = {
|
|||
static const u8 sSadMsg00[] = _("{STR_VAR_1} is dizzy.");
|
||||
static const u8 sSadMsg01[] = _("{STR_VAR_1} is stepping on your\nfeet!");
|
||||
static const u8 sSadMsg02[] = _("{STR_VAR_1} seems a little tired.");
|
||||
// Conditional messages begin, index 3
|
||||
// Conditional messages begin, index 3
|
||||
static const u8 sSadMsg03[] = _("{STR_VAR_1} is not happy.");
|
||||
static const u8 sSadMsg04[] = _("{STR_VAR_1} is going to fall down!\n");
|
||||
static const u8 sSadMsg05[] = _("{STR_VAR_1} seems to be about to\nfall over!");
|
||||
|
@ -123,7 +123,7 @@ const struct FollowerMsgInfo gFollowerSadMessages[] = {
|
|||
static const u8 sUpsetMsg00[] = _("{STR_VAR_1} seems unhappy somehow…");
|
||||
static const u8 sUpsetMsg01[] = _("{STR_VAR_1} is making an unhappy\nface.");
|
||||
static const u8 sUpsetMsg02[] = _("…Your POKéMON seems a little\ncold.");
|
||||
// Conditional messages, index 3
|
||||
// Conditional messages, index 3
|
||||
static const u8 sUpsetMsg03[] = _("{STR_VAR_1} is taking shelter in the\ngrass from the rain.");
|
||||
|
||||
const struct FollowerMsgInfo gFollowerUpsetMessages[] = {
|
||||
|
@ -225,7 +225,7 @@ static const u8 sSurpriseMsg16[] = _("{STR_VAR_1} sensed something strange\nand
|
|||
static const u8 sSurpriseMsg17[] = _("{STR_VAR_1} is scared and snuggled\nup to you!");
|
||||
static const u8 sSurpriseMsg18[] = _("{STR_VAR_1} is feeling an unusual\npresence…");
|
||||
static const u8 sSurpriseMsg19[] = _("{STR_VAR_1} is getting tense with\nnervous energy.");
|
||||
// Conditional messages, index 20
|
||||
// Conditional messages, index 20
|
||||
static const u8 sSurpriseMsg20[] = _("{STR_VAR_1} seems to be very\nsurprised that it is raining!");
|
||||
|
||||
const struct FollowerMsgInfo gFollowerSurpriseMessages[] = {
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -55,10 +55,10 @@ u32 FldEff_Shadow(void);
|
|||
#define sIsStillReflection data[7]
|
||||
|
||||
void SetUpShadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) {
|
||||
gFieldEffectArguments[0] = objectEvent->localId;
|
||||
gFieldEffectArguments[1] = gSaveBlock1Ptr->location.mapNum;
|
||||
gFieldEffectArguments[2] = gSaveBlock1Ptr->location.mapGroup;
|
||||
FldEff_Shadow();
|
||||
gFieldEffectArguments[0] = objectEvent->localId;
|
||||
gFieldEffectArguments[1] = gSaveBlock1Ptr->location.mapNum;
|
||||
gFieldEffectArguments[2] = gSaveBlock1Ptr->location.mapGroup;
|
||||
FldEff_Shadow();
|
||||
}
|
||||
|
||||
void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 stillReflection)
|
||||
|
|
|
@ -295,3 +295,18 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT
|
|||
.emotion = FOLLOWER_EMOTION_SAD,
|
||||
},
|
||||
};
|
||||
|
||||
// Pool of "unconditional" follower messages
|
||||
const struct FollowerMessagePool gFollowerBasicMessages[FOLLOWER_EMOTION_LENGTH] = {
|
||||
[FOLLOWER_EMOTION_HAPPY] = {gFollowerHappyMessages, EventScript_FollowerGeneric, N_FOLLOWER_HAPPY_MESSAGES},
|
||||
[FOLLOWER_EMOTION_NEUTRAL] = {gFollowerNeutralMessages, EventScript_FollowerGeneric, N_FOLLOWER_NEUTRAL_MESSAGES},
|
||||
[FOLLOWER_EMOTION_SAD] = {gFollowerSadMessages, EventScript_FollowerGeneric, N_FOLLOWER_SAD_MESSAGES},
|
||||
[FOLLOWER_EMOTION_UPSET] = {gFollowerUpsetMessages, EventScript_FollowerGeneric, N_FOLLOWER_UPSET_MESSAGES},
|
||||
[FOLLOWER_EMOTION_ANGRY] = {gFollowerAngryMessages, EventScript_FollowerGeneric, N_FOLLOWER_ANGRY_MESSAGES},
|
||||
[FOLLOWER_EMOTION_PENSIVE] = {gFollowerPensiveMessages, EventScript_FollowerGeneric, N_FOLLOWER_PENSIVE_MESSAGES},
|
||||
[FOLLOWER_EMOTION_LOVE] = {gFollowerLoveMessages, EventScript_FollowerGeneric, N_FOLLOWER_LOVE_MESSAGES},
|
||||
[FOLLOWER_EMOTION_SURPRISE] = {gFollowerSurpriseMessages, EventScript_FollowerGeneric, N_FOLLOWER_SURPRISE_MESSAGES},
|
||||
[FOLLOWER_EMOTION_CURIOUS] = {gFollowerCuriousMessages, EventScript_FollowerGeneric, N_FOLLOWER_CURIOUS_MESSAGES},
|
||||
[FOLLOWER_EMOTION_MUSIC] = {gFollowerMusicMessages, EventScript_FollowerGeneric, N_FOLLOWER_MUSIC_MESSAGES},
|
||||
[FOLLOWER_EMOTION_POISONED] = {gFollowerPoisonedMessages, EventScript_FollowerGeneric, N_FOLLOWER_POISONED_MESSAGES},
|
||||
};
|
||||
|
|
|
@ -2074,9 +2074,9 @@ bool8 ScrCmd_playmoncry(struct ScriptContext *ctx)
|
|||
|
||||
bool8 ScrFunc_playfirstmoncry(struct ScriptContext *ctx)
|
||||
{
|
||||
u16 species = GetMonData(GetFirstLiveMon(), MON_DATA_SPECIES);
|
||||
PlayCry_Script(species, 0);
|
||||
return FALSE;
|
||||
u16 species = GetMonData(GetFirstLiveMon(), MON_DATA_SPECIES);
|
||||
PlayCry_Script(species, 0);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx)
|
||||
|
|
|
@ -152,28 +152,28 @@ static const struct SpriteFrameImage sSpriteImageTable_HeartIcon[] =
|
|||
|
||||
static const struct SpriteFrameImage sSpriteImageTable_Emotes[] =
|
||||
{
|
||||
{ .data = (u8 *)sEmotion_Gfx+0*0x80, .size = 0x80}, // FOLLOWER_EMOTION_HAPPY
|
||||
{ .data = (u8 *)sEmotion_Gfx+1*0x80, .size = 0x80}, // FOLLOWER_EMOTION_HAPPY
|
||||
{ .data = (u8 *)sEmotion_Gfx+2*0x80, .size = 0x80}, // FOLLOWER_EMOTION_NEUTRAL
|
||||
{ .data = (u8 *)sEmotion_Gfx+3*0x80, .size = 0x80}, // FOLLOWER_EMOTION_NEUTRAL
|
||||
{ .data = (u8 *)sEmotion_Gfx+4*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SAD
|
||||
{ .data = (u8 *)sEmotion_Gfx+5*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SAD
|
||||
{ .data = (u8 *)sEmotion_Gfx+6*0x80, .size = 0x80}, // FOLLOWER_EMOTION_UPSET
|
||||
{ .data = (u8 *)sEmotion_Gfx+7*0x80, .size = 0x80}, // FOLLOWER_EMOTION_UPSET
|
||||
{ .data = (u8 *)sEmotion_Gfx+8*0x80, .size = 0x80}, // FOLLOWER_EMOTION_ANGRY
|
||||
{ .data = (u8 *)sEmotion_Gfx+9*0x80, .size = 0x80}, // FOLLOWER_EMOTION_ANGRY
|
||||
{ .data = (u8 *)sEmotion_Gfx+10*0x80, .size = 0x80}, // FOLLOWER_EMOTION_PENSIVE
|
||||
{ .data = (u8 *)sEmotion_Gfx+11*0x80, .size = 0x80}, // FOLLOWER_EMOTION_PENSIVE
|
||||
{ .data = (u8 *)sEmotion_Gfx+12*0x80, .size = 0x80}, // FOLLOWER_EMOTION_LOVE
|
||||
{ .data = (u8 *)sEmotion_Gfx+13*0x80, .size = 0x80}, // FOLLOWER_EMOTION_LOVE
|
||||
{ .data = (u8 *)sEmotion_Gfx+14*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SURPRISE
|
||||
{ .data = (u8 *)sEmotion_Gfx+15*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SURPRISE
|
||||
{ .data = (u8 *)sEmotion_Gfx+16*0x80, .size = 0x80}, // FOLLOWER_EMOTION_CURIOUS
|
||||
{ .data = (u8 *)sEmotion_Gfx+17*0x80, .size = 0x80}, // FOLLOWER_EMOTION_CURIOUS
|
||||
{ .data = (u8 *)sEmotion_Gfx+18*0x80, .size = 0x80}, // FOLLOWER_EMOTION_MUSIC
|
||||
{ .data = (u8 *)sEmotion_Gfx+19*0x80, .size = 0x80}, // FOLLOWER_EMOTION_MUSIC
|
||||
{ .data = (u8 *)sEmotion_Gfx+20*0x80, .size = 0x80}, // FOLLOWER_EMOTION_POISONED
|
||||
{ .data = (u8 *)sEmotion_Gfx+21*0x80, .size = 0x80}, // FOLLOWER_EMOTION_POISONED
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 0), // FOLLOWER_EMOTION_HAPPY
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 1), // FOLLOWER_EMOTION_HAPPY
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 2), // FOLLOWER_EMOTION_NEUTRAL
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 3), // FOLLOWER_EMOTION_NEUTRAL
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 4), // FOLLOWER_EMOTION_SAD
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 5), // FOLLOWER_EMOTION_SAD
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 6), // FOLLOWER_EMOTION_UPSET
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 7), // FOLLOWER_EMOTION_UPSET
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 8), // FOLLOWER_EMOTION_ANGRY
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 9), // FOLLOWER_EMOTION_ANGRY
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 10), // FOLLOWER_EMOTION_PENSIVE
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 11), // FOLLOWER_EMOTION_PENSIVE
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 12), // FOLLOWER_EMOTION_LOVE
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 13), // FOLLOWER_EMOTION_LOVE
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 14), // FOLLOWER_EMOTION_SURPRISE
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 15), // FOLLOWER_EMOTION_SURPRISE
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 16), // FOLLOWER_EMOTION_CURIOUS
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 17), // FOLLOWER_EMOTION_CURIOUS
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 18), // FOLLOWER_EMOTION_MUSIC
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 19), // FOLLOWER_EMOTION_MUSIC
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 20), // FOLLOWER_EMOTION_POISONED
|
||||
overworld_frame(sEmotion_Gfx, 2, 2, 21), // FOLLOWER_EMOTION_POISONED
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_Emotes0[] = {
|
||||
|
|
Loading…
Reference in a new issue