Followers disappear properly when using Surf.
Removed leftover palette 31.
This commit is contained in:
parent
89774dfc48
commit
3a0795d862
3 changed files with 17 additions and 4 deletions
|
@ -340,9 +340,7 @@ const u32 gObjectEventPic_Greta[] = INCBIN_U32("graphics/object_events/pics/peop
|
|||
const u32 gObjectEventPic_Noland[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/noland.4bpp");
|
||||
const u32 gObjectEventPic_Lucy[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/lucy.4bpp");
|
||||
const u32 gObjectEventPic_Brandon[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/brandon.4bpp");
|
||||
const u16 gObjectEventPalette32[] = INCBIN_U16("graphics/object_events/palettes/32.gbapal");
|
||||
const u32 gObjectEventPic_AnimatedBall[] = INCBIN_U32("graphics/object_events/pics/misc/animated_ball.4bpp");
|
||||
const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal");
|
||||
const u32 gObjectEventPic_Bulbasaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/bulbasaur.4bpp");
|
||||
const u32 gObjectEventPic_Ivysaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/ivysaur.4bpp");
|
||||
const u32 gObjectEventPic_Venusaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/venusaur.4bpp");
|
||||
|
|
|
@ -1695,6 +1695,8 @@ void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent.
|
|||
static bool8 IsFollowerVisible(void) { // Determine whether follower *should* be visible
|
||||
return
|
||||
!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE)
|
||||
|| MetatileBehavior_IsSurfableWaterOrUnderwater(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior)
|
||||
|| MetatileBehavior_IsSurfableWaterOrUnderwater(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior)
|
||||
|| MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior)
|
||||
|| MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior));
|
||||
}
|
||||
|
|
|
@ -2995,8 +2995,19 @@ static void Task_SurfFieldEffect(u8 taskId)
|
|||
|
||||
static void SurfFieldEffect_Init(struct Task *task)
|
||||
{
|
||||
struct ObjectEvent *followerObject = GetFollowerObject();
|
||||
ScriptContext2_Enable();
|
||||
FreezeObjectEvents();
|
||||
// Put follower into pokeball before using Surf
|
||||
if (followerObject && !followerObject->invisible) {
|
||||
// TODO: ClearObjectEventMovement (
|
||||
followerObject->singleMovementActive = 0;
|
||||
ObjectEventClearHeldMovement(followerObject);
|
||||
gSprites[followerObject->spriteId].data[1] = 0;
|
||||
gSprites[followerObject->spriteId].animCmdIndex = 0; // Needed because of weird animCmdIndex stuff
|
||||
// )
|
||||
ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL);
|
||||
}
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
|
||||
PlayerGetDestCoords(&task->tDestX, &task->tDestY);
|
||||
|
@ -3047,13 +3058,15 @@ static void SurfFieldEffect_JumpOnSurfBlob(struct Task *task)
|
|||
|
||||
static void SurfFieldEffect_End(struct Task *task)
|
||||
{
|
||||
struct ObjectEvent *objectEvent;
|
||||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct ObjectEvent *followerObject = GetFollowerObject();
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
|
||||
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
|
||||
if (followerObject)
|
||||
ObjectEventClearHeldMovementIfFinished(followerObject);
|
||||
SetSurfBobState(objectEvent->fieldEffectSpriteId, 1);
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
|
|
Loading…
Reference in a new issue