Add rock climb history from ghoul
This commit is contained in:
commit
0eb715de11
@ -456,21 +456,21 @@ EventScript_UseRockClimb::
|
||||
waitstate
|
||||
goto EventScript_EndRockClimb
|
||||
end
|
||||
|
||||
|
||||
EventScript_CantRockClimb::
|
||||
msgbox Text_CantRockClimb, MSGBOX_DEFAULT
|
||||
|
||||
|
||||
EventScript_EndRockClimb::
|
||||
releaseall
|
||||
end
|
||||
|
||||
|
||||
Text_WantToRockClimb:
|
||||
.string "The cliff is steep.\n"
|
||||
.string "Would you like to use Rock Climb?$"
|
||||
|
||||
|
||||
Text_MonUsedRockClimb:
|
||||
.string "{STR_VAR_1} used Rock Climb!$"
|
||||
|
||||
|
||||
Text_CantRockClimb:
|
||||
.string "The cliff is steep.\n"
|
||||
.string "A Pokémon may be able to climb it.$"
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
#ifndef GUARD_CONSTANTS_MOVES_H
|
||||
#define GUARD_CONSTANTS_MOVES_H
|
||||
|
||||
#ifndef BATTLE_ENGINE
|
||||
#define MOVE_ROCK_CLIMB 1
|
||||
#endif
|
||||
|
||||
#define MOVE_NONE 0
|
||||
#define MOVE_POUND 1
|
||||
#define MOVE_KARATE_CHOP 2
|
||||
|
||||
@ -1386,7 +1386,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {
|
||||
static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPal_Npc3, FLDEFF_PAL_TAG_UNKNOWN};
|
||||
|
||||
// cave dust
|
||||
static const struct SpriteFrameImage sPicTable_CaveDust[] =
|
||||
static const struct SpriteFrameImage sPicTable_CaveDust[] =
|
||||
{
|
||||
overworld_frame(gFieldEffectObjectPic_CaveDust, 2, 2, 0),
|
||||
overworld_frame(gFieldEffectObjectPic_CaveDust, 2, 2, 1),
|
||||
|
||||
@ -656,7 +656,7 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *)
|
||||
[MOVEMENT_ACTION_WALK_FAST_DIAGONAL_UP_RIGHT] = gMovementActionFuncs_WalkFastDiagonalUpRight,
|
||||
[MOVEMENT_ACTION_WALK_FAST_DIAGONAL_DOWN_LEFT] = gMovementActionFuncs_WalkFastDiagonalDownLeft,
|
||||
[MOVEMENT_ACTION_WALK_FAST_DIAGONAL_DOWN_RIGHT] = gMovementActionFuncs_WalkFastDiagonalDownRight,
|
||||
|
||||
|
||||
};
|
||||
|
||||
u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = {
|
||||
@ -1667,28 +1667,28 @@ bool8 (*const gMovementActionFuncs_WalkSlowStairsRight[])(struct ObjectEvent *,
|
||||
MovementAction_PauseSpriteAnim,
|
||||
};
|
||||
|
||||
u8 (*const gMovementActionFuncs_SurfStillDown[])(struct ObjectEvent *, struct Sprite *) =
|
||||
u8 (*const gMovementActionFuncs_SurfStillDown[])(struct ObjectEvent *, struct Sprite *) =
|
||||
{
|
||||
MovementAction_SurfStillDown_Step0,
|
||||
MovementAction_SurfStillDown_Step1,
|
||||
MovementAction_PauseSpriteAnim,
|
||||
};
|
||||
|
||||
u8 (*const gMovementActionFuncs_SurfStillUp[])(struct ObjectEvent *, struct Sprite *) =
|
||||
u8 (*const gMovementActionFuncs_SurfStillUp[])(struct ObjectEvent *, struct Sprite *) =
|
||||
{
|
||||
MovementAction_SurfStillUp_Step0,
|
||||
MovementAction_SurfStillUp_Step1,
|
||||
MovementAction_PauseSpriteAnim,
|
||||
};
|
||||
|
||||
u8 (*const gMovementActionFuncs_SurfStillLeft[])(struct ObjectEvent *, struct Sprite *) =
|
||||
u8 (*const gMovementActionFuncs_SurfStillLeft[])(struct ObjectEvent *, struct Sprite *) =
|
||||
{
|
||||
MovementAction_SurfStillLeft_Step0,
|
||||
MovementAction_SurfStillLeft_Step1,
|
||||
MovementAction_PauseSpriteAnim,
|
||||
};
|
||||
|
||||
u8 (*const gMovementActionFuncs_SurfStillRight[])(struct ObjectEvent *, struct Sprite *) =
|
||||
u8 (*const gMovementActionFuncs_SurfStillRight[])(struct ObjectEvent *, struct Sprite *) =
|
||||
{
|
||||
MovementAction_SurfStillRight_Step0,
|
||||
MovementAction_SurfStillRight_Step1,
|
||||
|
||||
@ -259,6 +259,10 @@ static bool8 RockClimb_WaitStopRockClimb(struct Task *task, struct ObjectEvent *
|
||||
static bool8 RockClimb_StopRockClimbInit(struct Task *task, struct ObjectEvent *objectEvent);
|
||||
// Static RAM declarations
|
||||
|
||||
#if FOLLOW_ME_IMPLEMENTED
|
||||
static void TryAttachFollowerToPlayer(void);
|
||||
#endif
|
||||
|
||||
static u8 sActiveList[32];
|
||||
|
||||
// External declarations
|
||||
@ -1999,7 +2003,7 @@ static bool8 WaterfallFieldEffect_ContinueRideOrEnd(struct Task *task, struct Ob
|
||||
{
|
||||
if (!ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
return FALSE;
|
||||
|
||||
|
||||
if (MetatileBehavior_IsWaterfall(objectEvent->currentMetatileBehavior))
|
||||
{
|
||||
// Still ascending waterfall, back to WaterfallFieldEffect_RideUp
|
||||
@ -4191,7 +4195,7 @@ static u8 CreateRockClimbBlob(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct Sprite *sprite;
|
||||
|
||||
|
||||
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ROCK_CLIMB_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
@ -4204,7 +4208,7 @@ static u8 CreateRockClimbBlob(void)
|
||||
sprite->data[6] = -1;
|
||||
sprite->data[7] = -1;
|
||||
}
|
||||
|
||||
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
@ -4240,7 +4244,7 @@ static bool8 RockClimb_Init(struct Task *task, struct ObjectEvent *objectEvent)
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
// Put follower into pokeball before using Rock Climb
|
||||
HideFollowerForFieldEffect();
|
||||
HideFollowerForFieldEffect();
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
|
||||
PlayerGetDestCoords(&task->tDestX, &task->tDestY);
|
||||
@ -4276,7 +4280,7 @@ static bool8 RockClimb_JumpOnRockClimbBlob(struct Task *task, struct ObjectEvent
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
|
||||
{
|
||||
objectEvent->noShadow = TRUE; // hide shadow
|
||||
objectEvent->noShadow = TRUE; // hide shadow
|
||||
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
|
||||
ObjectEventClearHeldMovementIfFinished(objectEvent);
|
||||
ObjectEventSetHeldMovement(objectEvent, GetJumpSpecialMovementAction(objectEvent->movementDirection));
|
||||
@ -4286,7 +4290,7 @@ static bool8 RockClimb_JumpOnRockClimbBlob(struct Task *task, struct ObjectEvent
|
||||
objectEvent->fieldEffectSpriteId = CreateRockClimbBlob();
|
||||
task->tState++;
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -4312,10 +4316,10 @@ static bool8 RockClimb_WaitJumpOnRockClimbBlob(struct Task *task, struct ObjectE
|
||||
objectEvent->movementDirection = DIR_SOUTHWEST;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
task->tState = STATE_ROCK_CLIMB_CONTINUE_RIDE;
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -4326,7 +4330,7 @@ struct RockClimbRide
|
||||
s8 dy;
|
||||
u8 jumpDir;
|
||||
};
|
||||
static const struct RockClimbRide sRockClimbMovement[] =
|
||||
static const struct RockClimbRide sRockClimbMovement[] =
|
||||
{
|
||||
[DIR_NONE] = {MOVEMENT_ACTION_WALK_FAST_DOWN, 0, 0, DIR_NONE},
|
||||
[DIR_SOUTH] = {MOVEMENT_ACTION_WALK_FAST_DOWN, 0, -1, DIR_SOUTH},
|
||||
@ -4343,7 +4347,7 @@ static void RockClimbDust(struct ObjectEvent *objectEvent, u8 direction)
|
||||
{
|
||||
s8 dx = sRockClimbMovement[direction].dx;
|
||||
s8 dy = sRockClimbMovement[direction].dy;
|
||||
|
||||
|
||||
gFieldEffectArguments[0] = objectEvent->currentCoords.x + dx;
|
||||
gFieldEffectArguments[1] = objectEvent->currentCoords.y + dy;
|
||||
gFieldEffectArguments[2] = objectEvent->previousElevation;
|
||||
@ -4352,7 +4356,7 @@ static void RockClimbDust(struct ObjectEvent *objectEvent, u8 direction)
|
||||
}
|
||||
|
||||
static bool8 RockClimb_Ride(struct Task *task, struct ObjectEvent *objectEvent)
|
||||
{
|
||||
{
|
||||
ObjectEventSetHeldMovement(objectEvent, sRockClimbMovement[objectEvent->movementDirection].action);
|
||||
PlaySE(SE_M_ROCK_THROW);
|
||||
RockClimbDust(objectEvent, objectEvent->movementDirection);
|
||||
@ -4364,11 +4368,11 @@ static bool8 RockClimb_ContinueRideOrEnd(struct Task *task, struct ObjectEvent *
|
||||
{
|
||||
if (!ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
return FALSE;
|
||||
|
||||
|
||||
PlayerGetDestCoords(&task->tDestX, &task->tDestY);
|
||||
MoveCoords(objectEvent->movementDirection, &task->tDestX, &task->tDestY);
|
||||
if (MetatileBehavior_IsRockClimbable(MapGridGetMetatileBehaviorAt(task->tDestX, task->tDestY)))
|
||||
{
|
||||
{
|
||||
task->tState = STATE_ROCK_CLIMB_RIDE;
|
||||
return TRUE;
|
||||
}
|
||||
@ -4387,7 +4391,7 @@ static bool8 RockClimb_StopRockClimbInit(struct Task *task, struct ObjectEvent *
|
||||
if (!ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
RockClimbDust(objectEvent, DIR_NONE); //dust on final spot
|
||||
ObjectEventSetHeldMovement(objectEvent, GetJumpSpecialMovementAction(sRockClimbMovement[objectEvent->movementDirection].jumpDir));
|
||||
SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_NONE);
|
||||
@ -4405,7 +4409,7 @@ static bool8 RockClimb_WaitStopRockClimb(struct Task *task, struct ObjectEvent *
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
if (followerObject)
|
||||
ObjectEventClearHeldMovementIfFinished(followerObject); // restore follower to normal
|
||||
objectEvent->noShadow = FALSE; // restore shadow
|
||||
objectEvent->noShadow = FALSE; // restore shadow
|
||||
UnfreezeObjectEvents();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroySprite(&gSprites[objectEvent->fieldEffectSpriteId]);
|
||||
@ -4413,7 +4417,7 @@ static bool8 RockClimb_WaitStopRockClimb(struct Task *task, struct ObjectEvent *
|
||||
objectEvent->triggerGroundEffectsOnMove = TRUE; // e.g. if dismount on grass
|
||||
DestroyTask(FindTaskIdByFunc(Task_UseRockClimb));
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -4206,7 +4206,7 @@ bool32 SetUpFieldMove_RockClimb(void)
|
||||
gPostMenuFieldCallback = FieldCallback_RockClimb;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user