diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index e9a88367a7..84d45c962a 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -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.$" diff --git a/include/constants/moves.h b/include/constants/moves.h index dc8bc59a3f..f8fa1773bf 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -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 diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index aae9ad1948..8b37f37b61 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -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), diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 686e468fca..17f601af8a 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -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, diff --git a/src/field_effect.c b/src/field_effect.c index 8a11f56a68..a79409fd93 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -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; } diff --git a/src/party_menu.c b/src/party_menu.c index 9b48152b9b..f820c63147 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4206,7 +4206,7 @@ bool32 SetUpFieldMove_RockClimb(void) gPostMenuFieldCallback = FieldCallback_RockClimb; return TRUE; } - + return FALSE; }