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_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_Lucy[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/lucy.4bpp");
|
||||||
const u32 gObjectEventPic_Brandon[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/brandon.4bpp");
|
const u32 gObjectEventPic_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 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_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_Ivysaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/ivysaur.4bpp");
|
||||||
const u32 gObjectEventPic_Venusaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/venusaur.4bpp");
|
const u32 gObjectEventPic_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
|
static bool8 IsFollowerVisible(void) { // Determine whether follower *should* be visible
|
||||||
return
|
return
|
||||||
!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE)
|
!(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].currentMetatileBehavior)
|
||||||
|| MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior));
|
|| MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior));
|
||||||
}
|
}
|
||||||
|
|
|
@ -2995,8 +2995,19 @@ static void Task_SurfFieldEffect(u8 taskId)
|
||||||
|
|
||||||
static void SurfFieldEffect_Init(struct Task *task)
|
static void SurfFieldEffect_Init(struct Task *task)
|
||||||
{
|
{
|
||||||
|
struct ObjectEvent *followerObject = GetFollowerObject();
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
FreezeObjectEvents();
|
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;
|
gPlayerAvatar.preventStep = TRUE;
|
||||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
|
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
|
||||||
PlayerGetDestCoords(&task->tDestX, &task->tDestY);
|
PlayerGetDestCoords(&task->tDestX, &task->tDestY);
|
||||||
|
@ -3047,13 +3058,15 @@ static void SurfFieldEffect_JumpOnSurfBlob(struct Task *task)
|
||||||
|
|
||||||
static void SurfFieldEffect_End(struct Task *task)
|
static void SurfFieldEffect_End(struct Task *task)
|
||||||
{
|
{
|
||||||
struct ObjectEvent *objectEvent;
|
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
struct ObjectEvent *followerObject = GetFollowerObject();
|
||||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||||
{
|
{
|
||||||
gPlayerAvatar.preventStep = FALSE;
|
gPlayerAvatar.preventStep = FALSE;
|
||||||
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
|
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
|
||||||
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
|
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
|
||||||
|
if (followerObject)
|
||||||
|
ObjectEventClearHeldMovementIfFinished(followerObject);
|
||||||
SetSurfBobState(objectEvent->fieldEffectSpriteId, 1);
|
SetSurfBobState(objectEvent->fieldEffectSpriteId, 1);
|
||||||
UnfreezeObjectEvents();
|
UnfreezeObjectEvents();
|
||||||
ScriptContext2_Disable();
|
ScriptContext2_Disable();
|
||||||
|
|
Loading…
Reference in a new issue