diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-12 01:26:29 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-12 01:26:29 -0400 |
commit | 1a8fe435e7deabf06029c8e50201136518e3af73 (patch) | |
tree | 9746f2f4f4901e81496465da485d0f5c8a647586 /src/field_player_avatar.c | |
parent | bb0cad7c072703f5a540e8c22c8e137267331f4d (diff) |
split out src/ directory into categorized subdirectories.
Diffstat (limited to 'src/field_player_avatar.c')
-rw-r--r-- | src/field_player_avatar.c | 1728 |
1 files changed, 0 insertions, 1728 deletions
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c deleted file mode 100644 index 2a7b2f3e0..000000000 --- a/src/field_player_avatar.c +++ /dev/null @@ -1,1728 +0,0 @@ -#include "global.h" -#include "field_player_avatar.h" -#include "bike.h" -#include "event_data.h" -#include "field_effect.h" -#include "field_effect_helpers.h" -#include "field_ground_effect.h" -#include "field_map_obj.h" -#include "field_map_obj_helpers.h" -#include "fieldmap.h" -#include "main.h" -#include "map_object_constants.h" -#include "menu.h" -#include "metatile_behavior.h" -#include "party_menu.h" -#include "rng.h" -#include "rom4.h" -#include "rotating_gate.h" -#include "script.h" -#include "songs.h" -#include "sound.h" -#include "strings2.h" -#include "task.h" -#include "tv.h" -#include "wild_encounter.h" - -EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {0}; - -//Functions -static bool8 sub_8058854(struct MapObject *, u8); -static void npc_clear_strange_bits(struct MapObject *a); -static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); -static void PlayerAllowForcedMovementIfMovingSameDirection(void); -static u8 TryDoMetatileBehaviorForcedMovement(void); -static u8 GetForcedMovementByMetatileBehavior(void); -static void MovePlayerNotOnBike(u8 a, u16 b); -static u8 CheckMovementInputNotOnBike(u8 a); -static u8 CheckForPlayerAvatarCollision(u8 a); -static u8 sub_8058EF0(s16 a, s16 b, u8 c); -static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c); -static u8 sub_8058F6C(s16 a, s16 b, u8 c); -static void check_acro_bike_metatile(int unused1, int unused2, u8 c, u8 *d); -static void DoPlayerAvatarTransition(void); -static bool8 player_is_anim_in_certain_ranges(void); -static bool8 sub_80592A4(void); -static bool8 PlayerIsAnimActive(void); -static bool8 PlayerCheckIfAnimFinishedOrInactive(void); -static void PlayerNotOnBikeCollide(u8 a); -static void PlayCollisionSoundIfNotFacingWarp(u8 a); -static void sub_8059D60(struct MapObject *a); -static void StartStrengthAnim(u8 a, u8 b); -static void sub_8059F94(void); -static void sub_805A06C(void); - -static bool8 (*const gUnknown_0830FB58[])(u8) = -{ - MetatileBehavior_IsTrickHouseSlipperyFloor, - MetatileBehavior_IsIce_2, - MetatileBehavior_IsWalkSouth, - MetatileBehavior_IsWalkNorth, - MetatileBehavior_IsWalkWest, - MetatileBehavior_IsWalkEast, - MetatileBehavior_IsSouthwardCurrent, - MetatileBehavior_IsNorthwardCurrent, - MetatileBehavior_IsWestwardCurrent, - MetatileBehavior_IsEastwardCurrent, - MetatileBehavior_IsSlideSouth, - MetatileBehavior_IsSlideNorth, - MetatileBehavior_IsSlideWest, - MetatileBehavior_IsSlideEast, - MetatileBehavior_IsWaterfall, - MetatileBehavior_0xBB, - MetatileBehavior_0xBC, - MetatileBehavior_IsMuddySlope, -}; -static u8 (*const gUnknown_0830FBA0[])(void) = -{ - ForcedMovement_None, - ForcedMovement_Slip, - ForcedMovement_Slip, - sub_8058AAC, - sub_8058AC4, - sub_8058ADC, - sub_8058AF4, - sub_8058B0C, - sub_8058B24, - sub_8058B3C, - sub_8058B54, - ForcedMovement_SlideSouth, - ForcedMovement_SlideNorth, - ForcedMovement_SlideWest, - ForcedMovement_SlideEast, - sub_8058B0C, - sub_8058C04, - sub_8058C10, - ForcedMovement_MuddySlope, -}; -static void (*const gUnknown_0830FBEC[])(u8, u16) = -{ - PlayerNotOnBikeNotMoving, - PlayerNotOnBikeTurningInPlace, - sub_8058D0C, -}; -static bool8 (*const gUnknown_0830FBF8[])(u8) = -{ - MetatileBehavior_IsBumpySlope, - MetatileBehavior_IsIsolatedVerticalRail, - MetatileBehavior_IsIsolatedHorizontalRail, - MetatileBehavior_IsVerticalRail, - MetatileBehavior_IsHorizontalRail, -}; -static const u8 gUnknown_0830FC0C[] = {9, 10, 11, 12, 13}; -static void (*const gUnknown_0830FC14[])(struct MapObject *) = -{ - PlayerAvatarTransition_Normal, - PlayerAvatarTransition_MachBike, - PlayerAvatarTransition_AcroBike, - PlayerAvatarTransition_Surfing, - PlayerAvatarTransition_Underwater, - sub_80591F4, - nullsub_49, - nullsub_49, -}; -static bool8 (*const gUnknown_0830FC34[])(u8) = -{ - MetatileBehavior_IsSouthArrowWarp, - MetatileBehavior_IsNorthArrowWarp, - MetatileBehavior_IsWestArrowWarp, - MetatileBehavior_IsEastArrowWarp, -}; -static const u8 sRivalAvatarGfxIds[][2] = -{ - {MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, MAP_OBJ_GFX_RIVAL_MAY_NORMAL}, - {MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE}, - {MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE}, - {MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, MAP_OBJ_GFX_RIVAL_MAY_SURFING}, - {MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER}, - {MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE}, - {MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING}, - {MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING}, -}; -static const u8 sPlayerAvatarGfxIds[][2] = -{ - {MAP_OBJ_GFX_BRENDAN_NORMAL, MAP_OBJ_GFX_MAY_NORMAL}, - {MAP_OBJ_GFX_BRENDAN_MACH_BIKE, MAP_OBJ_GFX_MAY_MACH_BIKE}, - {MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, MAP_OBJ_GFX_MAY_ACRO_BIKE}, - {MAP_OBJ_GFX_BRENDAN_SURFING, MAP_OBJ_GFX_MAY_SURFING}, - {MAP_OBJ_GFX_BRENDAN_UNDERWATER, MAP_OBJ_GFX_MAY_UNDERWATER}, - {MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, MAP_OBJ_GFX_MAY_FIELD_MOVE}, - {MAP_OBJ_GFX_BRENDAN_FISHING, MAP_OBJ_GFX_MAY_FISHING}, - {MAP_OBJ_GFX_BRENDAN_WATERING, MAP_OBJ_GFX_MAY_WATERING}, -}; -static const u8 gUnknown_0830FC64[2][5][2] = -{ - //male - { - {MAP_OBJ_GFX_BRENDAN_NORMAL, 1}, - {MAP_OBJ_GFX_BRENDAN_MACH_BIKE, 2}, - {MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, 4}, - {MAP_OBJ_GFX_BRENDAN_SURFING, 8}, - {MAP_OBJ_GFX_BRENDAN_UNDERWATER, 16}, - }, - //female - { - {MAP_OBJ_GFX_MAY_NORMAL, 1}, - {MAP_OBJ_GFX_MAY_MACH_BIKE, 2}, - {MAP_OBJ_GFX_MAY_ACRO_BIKE, 4}, - {MAP_OBJ_GFX_MAY_SURFING, 8}, - {MAP_OBJ_GFX_MAY_UNDERWATER, 16}, - } -}; -static bool8 (*const gUnknown_0830FC78[])(u8) = //Duplicate of gUnknown_0830FC34 -{ - MetatileBehavior_IsSouthArrowWarp, - MetatileBehavior_IsNorthArrowWarp, - MetatileBehavior_IsWestArrowWarp, - MetatileBehavior_IsEastArrowWarp, -}; -static u8 (*const gUnknown_0830FC88[])(struct Task *, struct MapObject *, struct MapObject *) = -{ - sub_8059E84, - sub_8059EA4, - sub_8059F40, -}; -static u8 (*const gUnknown_0830FC94[])(struct Task *, struct MapObject *) = -{ - sub_805A000, -}; -static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) = -{ - sub_805A0D8, - sub_805A100, - sub_805A178, - sub_805A1B8, -}; - -fieldmap_object_null_cb(sub_80587B4, sub_80587D8); - -void player_step(u8 direction, u16 newKeys, u16 heldKeys) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - sub_8059D60(playerMapObj); - if (gPlayerAvatar.unk6 == 0) - { - sub_80E5B38(newKeys, heldKeys); - if (!sub_8058854(playerMapObj, direction)) - { - npc_clear_strange_bits(playerMapObj); - DoPlayerAvatarTransition(); - if (TryDoMetatileBehaviorForcedMovement() == 0) - { - MovePlayerAvatarUsingKeypadInput(direction, newKeys, heldKeys); - PlayerAllowForcedMovementIfMovingSameDirection(); - } - } - } -} - -static bool8 sub_8058854(struct MapObject *playerMapObj, u8 direction) -{ - if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerMapObj) - && !FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj)) - { - u8 specialAnim = FieldObjectGetSpecialAnim(playerMapObj); - - if (specialAnim > 24 && specialAnim < 29 && direction != DIR_NONE && playerMapObj->placeholder18 != direction) - { - FieldObjectClearAnim(playerMapObj); - return FALSE; - } - else - { - return TRUE; - } - } - return FALSE; -} - -static void npc_clear_strange_bits(struct MapObject *a) -{ - a->mapobj_bit_12 = 0; - a->mapobj_bit_10 = 0; - a->mapobj_bit_9 = 0; - gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH; -} - -static void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 heldKeys) -{ - if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) - || (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)) - MovePlayerOnBike(direction, newKeys, heldKeys); - else - MovePlayerNotOnBike(direction, heldKeys); -} - -static void PlayerAllowForcedMovementIfMovingSameDirection(void) -{ - if (gPlayerAvatar.running2 == 2) - gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5; -} - -static u8 TryDoMetatileBehaviorForcedMovement(void) -{ - return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()](); -} - -static u8 GetForcedMovementByMetatileBehavior(void) -{ - u8 i; - - if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_5)) - { - u8 r5 = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E; - - for (i = 0; i < 18; i++) - { - if (gUnknown_0830FB58[i](r5)) - return i + 1; - } - } - return 0; -} - -u8 ForcedMovement_None(void) -{ - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6) - { - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - playerMapObj->mapobj_bit_9 = 0; - playerMapObj->mapobj_bit_11 = 1; - FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18); - gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_6; - } - return 0; -} - -static u8 DoForcedMovement(u8 direction, void (*b)(u8)) -{ - struct PlayerAvatar *playerAvatar = &gPlayerAvatar; - u8 collisionType = CheckForPlayerAvatarCollision(direction); - - playerAvatar->flags |= PLAYER_AVATAR_FLAG_6; - if (collisionType != 0) - { - ForcedMovement_None(); - if (collisionType <= 4) - { - return 0; - } - else - { - if (collisionType == COLLISION_LEDGE_JUMP) - PlayerJumpLedge(direction); - playerAvatar->flags |= PLAYER_AVATAR_FLAG_6; - playerAvatar->running2 = 2; - return 1; - } - } - else - { - playerAvatar->running2 = 2; - b(direction); - return 1; - } -} - -static u8 DoForcedMovementInCurrentDirection(void (*a)(u8)) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - playerMapObj->mapobj_bit_10 = 1; - return DoForcedMovement(playerMapObj->placeholder18, a); -} - -u8 ForcedMovement_Slip(void) -{ - return DoForcedMovementInCurrentDirection(sub_80593C4); -} - -u8 sub_8058AAC(void) -{ - return DoForcedMovement(1, PlayerGoSpeed0); -} - -u8 sub_8058AC4(void) -{ - return DoForcedMovement(2, PlayerGoSpeed0); -} - -u8 sub_8058ADC(void) -{ - return DoForcedMovement(3, PlayerGoSpeed0); -} - -u8 sub_8058AF4(void) -{ - return DoForcedMovement(4, PlayerGoSpeed0); -} - -u8 sub_8058B0C(void) -{ - return DoForcedMovement(1, npc_use_some_d2s); -} - -u8 sub_8058B24(void) -{ - return DoForcedMovement(2, npc_use_some_d2s); -} - -u8 sub_8058B3C(void) -{ - return DoForcedMovement(3, npc_use_some_d2s); -} - -u8 sub_8058B54(void) -{ - return DoForcedMovement(4, npc_use_some_d2s); -} - -static u8 ForcedMovement_Slide(u8 direction, void (*b)(u8)) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - playerMapObj->mapobj_bit_10 = 1; - playerMapObj->mapobj_bit_9 = 1; - return DoForcedMovement(direction, b); -} - -u8 ForcedMovement_SlideSouth(void) -{ - return ForcedMovement_Slide(1, sub_80593C4); -} - -u8 ForcedMovement_SlideNorth(void) -{ - return ForcedMovement_Slide(2, sub_80593C4); -} - -u8 ForcedMovement_SlideWest(void) -{ - return ForcedMovement_Slide(3, sub_80593C4); -} - -u8 ForcedMovement_SlideEast(void) -{ - return ForcedMovement_Slide(4, sub_80593C4); -} - -u8 sub_8058C04(void) -{ - sub_8059F94(); - return 1; -} - -u8 sub_8058C10(void) -{ - sub_805A06C(); - return 1; -} - -u8 ForcedMovement_MuddySlope(void) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - if (playerMapObj->placeholder18 != 2 || GetPlayerSpeed() <= 3) - { - sub_80E6010(0); - playerMapObj->mapobj_bit_9 = 1; - return DoForcedMovement(1, sub_80593C4); - } - else - { - return 0; - } -} - -static void MovePlayerNotOnBike(u8 direction, u16 heldKeys) -{ - gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys); -} - -static u8 CheckMovementInputNotOnBike(u8 direction) -{ - if (direction == DIR_NONE) - { - gPlayerAvatar.running2 = 0; - return 0; - } - else if (direction != player_get_direction_upper_nybble() && gPlayerAvatar.running2 != 2) - { - gPlayerAvatar.running2 = 1; - return 1; - } - else - { - gPlayerAvatar.running2 = 2; - return 2; - } -} - -void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys) -{ - PlayerFaceDirection(player_get_direction_lower_nybble()); -} - -void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys) -{ - PlayerTurnInPlace(direction); -} - -void sub_8058D0C(u8 direction, u16 heldKeys) -{ - u8 r1 = CheckForPlayerAvatarCollision(direction); - - switch (r1) - { - case 6: - PlayerJumpLedge(direction); - return; - default: - if (r1 > 8 || r1 < 5) - PlayerNotOnBikeCollide(direction); - return; - case 0: - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - { - sub_80593C4(direction); - return; - } - if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(SYS_B_DASH) - && IsRunningDisallowed(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) == 0) - { - sub_805940C(direction); - gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH; - } - else - { - PlayerGoSpeed0(direction); - } - } -} - -static u8 CheckForPlayerAvatarCollision(u8 direction) -{ - s16 x, y; - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - x = playerMapObj->coords2.x; - y = playerMapObj->coords2.y; - MoveCoords(direction, &x, &y); - return CheckForFieldObjectCollision(playerMapObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y)); -} - -u8 CheckForFieldObjectCollision(struct MapObject *a, s16 x, s16 y, u8 direction, u8 e) -{ - u8 collision; - - collision = npc_block_way(a, x, y, direction); - if (collision == 3 && sub_8058EF0(x, y, direction)) - return 5; - if (ShouldJumpLedge(x, y, direction)) - { - IncrementGameStat(0x2B); - return COLLISION_LEDGE_JUMP; - } - if (collision == 4 && sub_8058F6C(x, y, direction)) - return 7; - - if (collision == 0) - { - if (CheckForRotatingGatePuzzleCollision(direction, x, y)) - return 8; - check_acro_bike_metatile(x, y, e, &collision); - } - return collision; -} - -static u8 sub_8058EF0(s16 a, s16 b, u8 c) -{ - if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - && MapGridGetZCoordAt(a, b) == 3 - && GetFieldObjectIdByXYZ(a, b, 3) == 16) - { - sub_805A20C(c); - return 1; - } - else - { - return 0; - } -} - -static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c) -{ - if (GetLedgeJumpDirection(a, b, c) != 0) - return 1; - else - return 0; -} - -static u8 sub_8058F6C(s16 a, s16 b, u8 c) -{ - if (FlagGet(SYS_USE_STRENGTH)) - { - u8 mapObjectId = GetFieldObjectIdByXY(a, b); - - if (mapObjectId != 16) - { - if (gMapObjects[mapObjectId].graphicsId == 0x57) - { - a = gMapObjects[mapObjectId].coords2.x; - b = gMapObjects[mapObjectId].coords2.y; - MoveCoords(c, &a, &b); - if (npc_block_way(&gMapObjects[mapObjectId], a, b, c) == 0 - && MetatileBehavior_IsNonAnimDoor(MapGridGetMetatileBehaviorAt(a, b)) == 0) - { - StartStrengthAnim(mapObjectId, c); - return 1; - } - } - } - } - return 0; -} - -static void check_acro_bike_metatile(int unused1, int unused2, u8 c, u8 *d) -{ - u8 i; - - for (i = 0; i < 5; i++) - { - if (gUnknown_0830FBF8[i](c)) - { - *d = gUnknown_0830FC0C[i]; - return; - } - } -} - -void SetPlayerAvatarTransitionFlags(u16 a) -{ - gPlayerAvatar.bike |= a; - DoPlayerAvatarTransition(); -} - -static void DoPlayerAvatarTransition(void) -{ - u8 i; - u32 flags = gPlayerAvatar.bike; - - if (flags != 0) - { - for (i = 0; i < 8; i++, flags >>= 1) - { -#ifdef NONMATCHING - if (flags & 1) - { - gUnknown_0830FC14[i](&gMapObjects[gPlayerAvatar.mapObjectId]); - } -#else - if (flags & 1) - { - register void (*const *funcs)(struct MapObject *) asm("r0") = gUnknown_0830FC14; - funcs[i](&gMapObjects[gPlayerAvatar.mapObjectId]); - } -#endif - } - gPlayerAvatar.bike = 0; - } -} - -void nullsub_49(struct MapObject *a) -{ -} - -void PlayerAvatarTransition_Normal(struct MapObject *a) -{ - sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(0)); - FieldObjectTurn(a, a->placeholder18); - SetPlayerAvatarStateMask(1); -} - -void PlayerAvatarTransition_MachBike(struct MapObject *a) -{ - sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(1)); - FieldObjectTurn(a, a->placeholder18); - SetPlayerAvatarStateMask(2); - BikeClearState(0, 0); -} - -void PlayerAvatarTransition_AcroBike(struct MapObject *a) -{ - sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(2)); - FieldObjectTurn(a, a->placeholder18); - SetPlayerAvatarStateMask(4); - BikeClearState(0, 0); - sub_80E6084(); -} - -void PlayerAvatarTransition_Surfing(struct MapObject *a) -{ - u8 unk; - - sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3)); - FieldObjectTurn(a, a->placeholder18); - SetPlayerAvatarStateMask(8); - gUnknown_0202FF84[0] = a->coords2.x; - gUnknown_0202FF84[1] = a->coords2.y; - gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId; - unk = FieldEffectStart(8); - a->mapobj_unk_1A = unk; - sub_8127ED0(unk, 1); -} - -void PlayerAvatarTransition_Underwater(struct MapObject *a) -{ - sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(4)); - FieldObjectTurn(a, a->placeholder18); - SetPlayerAvatarStateMask(16); - a->mapobj_unk_1A = sub_8128124(a->spriteId); -} - -void sub_80591F4(struct MapObject *a) -{ - gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_5; -} - -void sub_8059204(void) -{ - gPlayerAvatar.running1 = 0; - if (PlayerIsAnimActive()) - { - if (!PlayerCheckIfAnimFinishedOrInactive()) - { - if (!player_is_anim_in_certain_ranges()) - gPlayerAvatar.running1 = 1; - } - else - { - if (!sub_80592A4()) - gPlayerAvatar.running1 = 2; - } - } -} - -static bool8 player_is_anim_in_certain_ranges(void) -{ - u8 unk = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C; - - if (unk < 4 - || (unk >= 16 && unk < 0x15) - || (unk >= 25 && unk < 41) - || (unk >= 98 && unk < 110) - || (unk >= 122 && unk < 126)) - return TRUE; - else - return FALSE; -} - -static bool8 sub_80592A4(void) -{ - if (player_is_anim_in_certain_ranges() && gPlayerAvatar.running2 != 1) - return TRUE; - else - return FALSE; -} - -static bool8 PlayerIsAnimActive(void) -{ - return FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[gPlayerAvatar.mapObjectId]); -} - -static bool8 PlayerCheckIfAnimFinishedOrInactive(void) -{ - return FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]); -} - -static void player_set_x22(u8 a) -{ - gMapObjects[gPlayerAvatar.mapObjectId].animId = a; -} - -u8 player_get_x22(void) -{ - return gMapObjects[gPlayerAvatar.mapObjectId].animId; -} - -static void sub_8059348(u8 a) -{ - FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], a); -} - -void PlayerSetAnimId(u8 animId, u8 b) -{ - if (!PlayerIsAnimActive()) - { - player_set_x22(b); - FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], animId); - } -} - -void PlayerGoSpeed0(u8 a) -{ - PlayerSetAnimId(GetGoSpeed0AnimId(a), 2); -} - -void sub_80593C4(u8 a) -{ - PlayerSetAnimId(sub_8060744(a), 2); -} - -void npc_use_some_d2s(u8 a) -{ - PlayerSetAnimId(d2s_08064034(a), 2); -} - -void sub_80593F4(u8 a) -{ - PlayerSetAnimId(sub_806079C(a), 2); -} - -void sub_805940C(u8 a) -{ - PlayerSetAnimId(sub_80607F4(a), 2); -} - -void PlayerOnBikeCollide(u8 a) -{ - PlayCollisionSoundIfNotFacingWarp(a); - PlayerSetAnimId(GetStepInPlaceDelay16AnimId(a), 2); -} - -static void PlayerNotOnBikeCollide(u8 a) -{ - PlayCollisionSoundIfNotFacingWarp(a); - PlayerSetAnimId(GetStepInPlaceDelay32AnimId(a), 2); -} - -void PlayerFaceDirection(u8 direction) -{ - PlayerSetAnimId(GetFaceDirectionAnimId(direction), 1); -} - -void PlayerTurnInPlace(u8 direction) -{ - PlayerSetAnimId(GetStepInPlaceDelay8AnimId(direction), 1); -} - -void PlayerJumpLedge(u8 direction) -{ - PlaySE(SE_DANSA); - PlayerSetAnimId(GetJumpLedgeAnimId(direction), 8); -} - -void sub_80594C0(void) -{ - if (gPlayerAvatar.running1 == 2 || gPlayerAvatar.running1 == 0) - { - if (player_should_look_direction_be_enforced_upon_movement()) - sub_8059348(GetFaceDirectionAnimId(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_18)); - } -} - -void sub_8059504(u8 a) -{ - PlayerSetAnimId(sub_80609D8(a), 1); -} - -//normal to wheelie -void PlayerStartWheelie(u8 a) -{ - PlayerSetAnimId(sub_8060A04(a), 1); -} - -void sub_8059534(u8 a) -{ - PlayerSetAnimId(sub_8060A30(a), 1); -} - -void sub_805954C(u8 a) -{ - PlaySE(SE_JITE_PYOKO); - PlayerSetAnimId(sub_8060A5C(a), 1); -} - -void sub_8059570(u8 a) -{ - PlaySE(SE_JITE_PYOKO); - PlayerSetAnimId(sub_8060A88(a), 2); -} - -void sub_8059594(u8 a) -{ - PlaySE(SE_JITE_PYOKO); - PlayerSetAnimId(sub_8060AB4(a), 8); -} - -void sub_80595B8(u8 direction) -{ - PlaySE(SE_JITE_PYOKO); - PlayerSetAnimId(sub_8060878(direction), 1); -} - -void sub_80595DC(u8 direction) -{ - PlaySE(SE_WALL_HIT); - PlayerSetAnimId(sub_8060AE0(direction), 2); -} - -void sub_8059600(u8 a) -{ - PlayerSetAnimId(sub_8060B0C(a), 2); -} - -void sub_8059618(u8 a) -{ - PlayerSetAnimId(sub_8060B38(a), 2); -} - -void sub_8059630(u8 a) -{ - PlayerSetAnimId(sub_8060B64(a), 2); -} - -static void PlayCollisionSoundIfNotFacingWarp(u8 a) -{ - s16 x, y; - u8 unk = gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E; - - if (!gUnknown_0830FC34[a - 1](unk)) - { - if (a == 2) - { - PlayerGetDestCoords(&x, &y); - MoveCoords(2, &x, &y); - if (MetatileBehavior_IsWarpDoor(MapGridGetMetatileBehaviorAt(x, y))) - return; - } - PlaySE(SE_WALL_HIT); - } -} - -void GetXYCoordsOneStepInFrontOfPlayer(s16 *x, s16 *y) -{ - *x = gMapObjects[gPlayerAvatar.mapObjectId].coords2.x; - *y = gMapObjects[gPlayerAvatar.mapObjectId].coords2.y; - MoveCoords(player_get_direction_lower_nybble(), x, y); -} - -void PlayerGetDestCoords(s16 *x, s16 *y) -{ - *x = gMapObjects[gPlayerAvatar.mapObjectId].coords2.x; - *y = gMapObjects[gPlayerAvatar.mapObjectId].coords2.y; -} - -u8 player_get_direction_lower_nybble(void) -{ - return gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_18; -} - -u8 player_get_direction_upper_nybble(void) -{ - return gMapObjects[gPlayerAvatar.mapObjectId].placeholder18; -} - -u8 PlayerGetZCoord(void) -{ - return gMapObjects[gPlayerAvatar.mapObjectId].elevation; -} - -void unref_sub_8059790(s16 a, s16 b) -{ - sub_805C058(&gMapObjects[gPlayerAvatar.mapObjectId], a, b); -} - -u8 TestPlayerAvatarFlags(u8 a) -{ - return gPlayerAvatar.flags & a; -} - -u8 sub_80597D0(void) -{ - return gPlayerAvatar.flags; -} - -u8 GetPlayerAvatarObjectId(void) -{ - return gPlayerAvatar.spriteId; -} - -void sub_80597E8(void) -{ - ForcedMovement_None(); -} - -void sub_80597F4(void) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - npc_clear_strange_bits(playerMapObj); - FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18); - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) - { - sub_80E6084(); - sub_80E6010(0); - } -} - -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) -{ - return sRivalAvatarGfxIds[state][gender]; -} - -static u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) -{ - return sPlayerAvatarGfxIds[state][gender]; -} - -u8 GetPlayerAvatarGraphicsIdByStateId(u8 state) -{ - return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender); -} - -u8 unref_GetRivalAvatarGenderByGraphcsId(u8 gfxId) -{ - switch (gfxId) - { - case MAP_OBJ_GFX_RIVAL_MAY_NORMAL: - case MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE: - case MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE: - case MAP_OBJ_GFX_RIVAL_MAY_SURFING: - case MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE: - case MAP_OBJ_GFX_MAY_UNDERWATER: - case MAP_OBJ_GFX_MAY_FISHING: - case MAP_OBJ_GFX_MAY_WATERING: - return FEMALE; - default: - return MALE; - } -} - -u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) -{ - switch (gfxId) - { - case MAP_OBJ_GFX_MAY_NORMAL: - case MAP_OBJ_GFX_MAY_MACH_BIKE: - case MAP_OBJ_GFX_MAY_ACRO_BIKE: - case MAP_OBJ_GFX_MAY_SURFING: - case MAP_OBJ_GFX_MAY_FIELD_MOVE: - case MAP_OBJ_GFX_MAY_UNDERWATER: - case MAP_OBJ_GFX_MAY_FISHING: - case MAP_OBJ_GFX_MAY_WATERING: - return FEMALE; - default: - return MALE; - } -} - -bool8 PartyHasMonWithSurf(void) -{ - u8 i; - - if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - { - for (i = 0; i < 6; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == 0) - break; - if (pokemon_has_move(&gPlayerParty[i], 0x39)) - return TRUE; - } - } - return FALSE; -} - -bool8 IsPlayerSurfingNorth(void) -{ - if (player_get_direction_upper_nybble() == DIR_NORTH && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - return TRUE; - else - return FALSE; -} - -bool8 IsPlayerFacingSurfableFishableWater(void) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - s16 x = playerMapObj->coords2.x; - s16 y = playerMapObj->coords2.y; - - MoveCoords(playerMapObj->mapobj_unk_18, &x, &y); - if (npc_block_way(playerMapObj, x, y, playerMapObj->mapobj_unk_18) == 3 && PlayerGetZCoord() == 3 - && MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(x, y))) - return TRUE; - else - return FALSE; -} - -void ClearPlayerAvatarInfo(void) -{ - //TODO: 0x24 should be the size of gPlayerAvatar - memset(&gPlayerAvatar, 0, sizeof(struct PlayerAvatar)); -} - -void SetPlayerAvatarStateMask(u8 a) -{ - gPlayerAvatar.flags &= 0xE0; - gPlayerAvatar.flags |= a; -} - -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 a, u8 gender) -{ - u8 i; - - for (i = 0; i < 5; i++) - { - if (gUnknown_0830FC64[gender][i][0] == a) - return gUnknown_0830FC64[gender][i][1]; - } - return 1; -} - -u8 GetPlayerAvatarGraphicsIdByCurrentState(void) -{ - u8 i; - u8 r5 = gPlayerAvatar.flags; - - for (i = 0; i < 5; i++) - { - if (gUnknown_0830FC64[gPlayerAvatar.gender][i][1] & r5) - return gUnknown_0830FC64[gPlayerAvatar.gender][i][0]; - } - return 0; -} - -void SetPlayerAvatarExtraStateTransition(u8 a, u8 b) -{ - u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(a, gPlayerAvatar.gender); - - gPlayerAvatar.bike |= unk | b; - DoPlayerAvatarTransition(); -} - -void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) -{ - struct MapObjectTemplate playerMapObjTemplate; - u8 mapObjectId; - struct MapObject *mapObject; - - playerMapObjTemplate.localId = 0xFF; - playerMapObjTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(0, gender); - playerMapObjTemplate.x = x - 7; - playerMapObjTemplate.y = y - 7; - playerMapObjTemplate.elevation = 0; - playerMapObjTemplate.movementType = 11; - playerMapObjTemplate.unkA_0 = 0; - playerMapObjTemplate.unkA_4 = 0; - playerMapObjTemplate.unkC = 0; - playerMapObjTemplate.unkE = 0; - playerMapObjTemplate.script = NULL; - playerMapObjTemplate.flagId = 0; - mapObjectId = SpawnSpecialFieldObject(&playerMapObjTemplate); - mapObject = &gMapObjects[mapObjectId]; - mapObject->mapobj_bit_16 = 1; - mapObject->mapobj_unk_1B = sub_8126B54(); - FieldObjectTurn(mapObject, direction); - ClearPlayerAvatarInfo(); - gPlayerAvatar.running2 = 0; - gPlayerAvatar.running1 = 0; - gPlayerAvatar.mapObjectId = mapObjectId; - gPlayerAvatar.spriteId = mapObject->spriteId; - gPlayerAvatar.gender = gender; - SetPlayerAvatarStateMask(0x21); -} - -void sub_8059B88(u8 a) -{ - gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = a; - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - gSprites[gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A].invisible = a; -} - -void sub_8059BF4(void) -{ - sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(5)); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0); -} - -void sub_8059C3C(u8 a) -{ - sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(6)); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDE8(a)); -} - -void sub_8059C94(u8 a) -{ - sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(2)); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FD98(a)); - SeekSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 1); -} - -void sub_8059D08(u8 a) -{ - sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByStateId(7)); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], FieldObjectDirectionToImageAnimId(a)); -} - -static void sub_8059D60(struct MapObject *a) -{ - s16 x; - s16 y; - u8 r6; - u8 r8 = a->mapobj_unk_1E; - - for (x = 0, r6 = 1; x < 4; x++, r6++) - { - if (gUnknown_0830FC78[x](r8) && r6 == a->placeholder18) - { - x = a->coords2.x; - y = a->coords2.y; - MoveCoords(r6, &x, &y); - sub_8126BC4(a->mapobj_unk_1B, r6, x, y); - return; - } - } - objid_set_invisible(a->mapobj_unk_1B); -} - -/* Strength */ - -static void sub_8059E2C(u8 taskId); - -static void StartStrengthAnim(u8 a, u8 b) -{ - u8 taskId = CreateTask(sub_8059E2C, 0xFF); - - gTasks[taskId].data[1] = a; - gTasks[taskId].data[2] = b; - sub_8059E2C(taskId); -} - -static void sub_8059E2C(u8 taskId) -{ - while (gUnknown_0830FC88[gTasks[taskId].data[0]](&gTasks[taskId], - &gMapObjects[gPlayerAvatar.mapObjectId], - &gMapObjects[gTasks[taskId].data[1]])) - ; -} - -u8 sub_8059E84(struct Task *task, struct MapObject *b, struct MapObject *c) -{ - ScriptContext2_Enable(); - gPlayerAvatar.unk6 = 1; - task->data[0]++; - return 0; -} - -u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) -{ - if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(b) - && !FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(c)) - { - FieldObjectClearAnimIfSpecialAnimFinished(b); - FieldObjectClearAnimIfSpecialAnimFinished(c); - FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2])); - FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2])); - gUnknown_0202FF84[0] = c->coords2.x; - gUnknown_0202FF84[1] = c->coords2.y; - gUnknown_0202FF84[2] = c->elevation; - gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority; - FieldEffectStart(10); - PlaySE(SE_W070); - task->data[0]++; - } - return 0; -} - -u8 sub_8059F40(struct Task *task, struct MapObject *b, struct MapObject *c) -{ - if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(b) - && FieldObjectCheckIfSpecialAnimFinishedOrInactive(c)) - { - FieldObjectClearAnimIfSpecialAnimFinished(b); - FieldObjectClearAnimIfSpecialAnimFinished(c); - gPlayerAvatar.unk6 = 0; - ScriptContext2_Disable(); - DestroyTask(FindTaskIdByFunc(sub_8059E2C)); - } - return 0; -} - -/* Some field effect */ - -static void sub_8059FB4(u8 taskId); - -static void sub_8059F94(void) -{ - u8 taskId = CreateTask(sub_8059FB4, 0xFF); - - sub_8059FB4(taskId); -} - -static void sub_8059FB4(u8 taskId) -{ - while (gUnknown_0830FC94[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId])) - ; -} - -u8 sub_805A000(struct Task *task, struct MapObject *mapObject) -{ - gPlayerAvatar.unk6 = 1; - if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) - { - PlaySE(SE_DANSA); - FieldObjectSetSpecialAnim(mapObject, sub_806084C(mapObject->mapobj_unk_18)); - task->data[1]++; - if (task->data[1] > 1) - { - gPlayerAvatar.unk6 = 0; - gPlayerAvatar.bike |= 0x20; - DestroyTask(FindTaskIdByFunc(sub_8059FB4)); - } - } - return 0; -} - -/* Some field effect */ - -static void sub_805A08C(u8 taskId); - -static void sub_805A06C(void) -{ - u8 taskId = CreateTask(sub_805A08C, 0xFF); - - sub_805A08C(taskId); -} - -static void sub_805A08C(u8 taskId) -{ - while (gUnknown_0830FC98[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId])) - ; -} - -u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject) -{ - task->data[0]++; - task->data[1] = mapObject->placeholder18; - gPlayerAvatar.unk6 = 1; - ScriptContext2_Enable(); - PlaySE(SE_TK_WARPIN); - return 1; -} - -u8 sub_805A100(struct Task *task, struct MapObject *mapObject) -{ - u8 directions[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH}; - - if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) - { - u8 direction; - - FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(direction = directions[mapObject->placeholder18 - 1])); - if (direction == (u8)task->data[1]) - task->data[2]++; - task->data[0]++; - if (task->data[2] > 3 && direction == GetOppositeDirection(task->data[1])) - task->data[0]++; - } - return 0; -} - -u8 sub_805A178(struct Task *task, struct MapObject *mapObject) -{ - const u8 arr[] = {16, 16, 17, 18, 19}; - - if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) - { - FieldObjectSetSpecialAnim(mapObject, arr[task->data[2]]); - task->data[0] = 1; - } - return 0; -} - -u8 sub_805A1B8(struct Task *task, struct MapObject *mapObject) -{ - if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) - { - FieldObjectSetSpecialAnim(mapObject, GetSimpleGoAnimId(GetOppositeDirection(task->data[1]))); - ScriptContext2_Disable(); - gPlayerAvatar.unk6 = 0; - DestroyTask(FindTaskIdByFunc(sub_805A08C)); - } - return 0; -} - -/* Some Field effect */ - -static void taskFF_0805D1D4(u8 taskId); -static void sub_805A2D0(u8 taskId); - -void sub_805A20C(u8 a) -{ - u8 taskId; - - ScriptContext2_Enable(); - sav1_reset_battle_music_maybe(); - sub_8053F84(); - gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING; - gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT; - gPlayerAvatar.unk6 = 1; - taskId = CreateTask(taskFF_0805D1D4, 0xFF); - gTasks[taskId].data[0] = a; - taskFF_0805D1D4(taskId); -} - -static void taskFF_0805D1D4(u8 taskId) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerMapObj)) - { - if (!FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj)) - return; - } - sub_8127ED0(playerMapObj->mapobj_unk_1A, 2); - FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0(gTasks[taskId].data[0])); - gTasks[taskId].func = sub_805A2D0; -} - -static void sub_805A2D0(u8 taskId) -{ - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - if (FieldObjectClearAnimIfSpecialAnimFinished(playerMapObj)) - { - sub_805B980(playerMapObj, GetPlayerAvatarGraphicsIdByStateId(0)); - FieldObjectSetSpecialAnim(playerMapObj, GetFaceDirectionAnimId(playerMapObj->mapobj_unk_18)); - gPlayerAvatar.unk6 = 0; - ScriptContext2_Disable(); - DestroySprite(&gSprites[playerMapObj->mapobj_unk_1A]); - DestroyTask(taskId); - } -} - -/* Fishing */ - -static u8 (*const gUnknown_0830FCB4[])(struct Task *) = -{ - Fishing1, - Fishing2, - Fishing3, - Fishing4, - Fishing5, - Fishing6, - Fishing7, - Fishing8, - Fishing9, - Fishing10, - Fishing11, - Fishing12, - Fishing13, - Fishing14, - Fishing15, - Fishing16, -}; - -static void Task_Fishing(u8 taskId); -static void sub_805A954(void); - -void StartFishing(u8 a) -{ - u8 taskId = CreateTask(Task_Fishing, 0xFF); - - gTasks[taskId].data[15] = a; - Task_Fishing(taskId); -} - -static void Task_Fishing(u8 taskId) -{ - while (gUnknown_0830FCB4[gTasks[taskId].data[0]](&gTasks[taskId])) - ; -} - -u8 Fishing1(struct Task *task) -{ - ScriptContext2_Enable(); - gPlayerAvatar.unk6 = 1; - task->data[0]++; - return 0; -} - -u8 Fishing2(struct Task *task) -{ - struct MapObject *playerMapObj; - const s16 arr1[] = {1, 1, 1}; - const s16 arr2[] = {1, 3, 6}; - - task->data[12] = 0; - task->data[13] = arr1[task->data[15]] + (Random() % arr2[task->data[15]]); - task->data[14] = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId; - playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - FieldObjectClearAnimIfSpecialAnimActive(playerMapObj); - playerMapObj->mapobj_bit_11 = 1; - sub_8059C3C(playerMapObj->mapobj_unk_18); - task->data[0]++; - return 0; -} - -u8 Fishing3(struct Task *task) -{ - sub_805A954(); - task->data[1]++; - if (task->data[1] > 0x3B) - task->data[0]++; - return 0; -} - -u8 Fishing4(struct Task *task) -{ - u32 randVal; - - MenuDisplayMessageBox(); - task->data[0]++; - task->data[1] = 0; - task->data[2] = 0; - randVal = Random(); - randVal %= 10; - task->data[3] = randVal + 1; - if (task->data[12] == 0) - task->data[3] = randVal + 4; - if (task->data[3] > 9) - task->data[3] = 10; - return 1; -} - -u8 Fishing5(struct Task *task) -{ - const u8 dot[] = _("·"); - - sub_805A954(); - task->data[1]++; - if (gMain.newKeys & A_BUTTON) - { - task->data[0] = 11; - if (task->data[12] != 0) - task->data[0] = 12; - return 1; - } - else - { - if (task->data[1] > 0x13) - { - task->data[1] = 0; - if (task->data[2] >= task->data[3]) - { - task->data[0]++; - if (task->data[12] != 0) - task->data[0]++; - task->data[12]++; - } - else - { - MenuPrint(dot, task->data[2] + 4, 15); - task->data[2]++; - } - } - return 0; - } -} - -u8 Fishing6(struct Task *task) -{ - sub_805A954(); - task->data[0]++; - if (!GetFishingWildMonListHeader() || (Random() & 1)) - task->data[0] = 11; - else - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FE08(player_get_direction_lower_nybble())); - return 1; -} - -u8 Fishing7(struct Task *task) -{ - sub_805A954(); - MenuPrint(gOtherText_OhABite, 4, 17); - task->data[0]++; - task->data[1] = 0; - return 0; -} - -u8 Fishing8(struct Task *task) -{ - const s16 arr[3] = {36, 33, 30}; - - sub_805A954(); - task->data[1]++; - if (task->data[1] >= arr[task->data[15]]) - task->data[0] = 12; - else if (gMain.newKeys & A_BUTTON) - task->data[0]++; - return 0; -} - -u8 Fishing9(struct Task *task) -{ - const s16 arr[][2] = - { - {0, 0}, - {40, 10}, - {70, 30} - }; - - sub_805A954(); - task->data[0]++; - if (task->data[12] < task->data[13]) - { - task->data[0] = 3; - } - else if (task->data[12] < 2) - { - s16 randVal = Random() % 100; - - if (arr[task->data[15]][task->data[12]] > randVal) - task->data[0] = 3; - } - return 0; -} - -u8 Fishing10(struct Task *task) -{ - sub_805A954(); - sub_8072044(gOtherText_PokeOnHook); - MenuDisplayMessageBox(); - task->data[0]++; - task->data[1] = 0; - return 0; -} - -u8 Fishing11(struct Task *task) -{ - if (task->data[1] == 0) - { - sub_805A954(); - if (task->data[1] == 0) - { - if (MenuUpdateWindowText()) - { - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - sub_805B980(playerMapObj, task->data[14]); - FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); - gSprites[gPlayerAvatar.spriteId].pos2.x = 0; - gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - MenuZeroFillScreen(); - task->data[1]++; - return 0; - } - else - { - if (task->data[1] == 0) - return 0; - } - } - } - gPlayerAvatar.unk6 = 0; - ScriptContext2_Disable(); - FishingWildEncounter(task->data[15]); - sub_80BE97C(1); - DestroyTask(FindTaskIdByFunc(Task_Fishing)); - return 0; -} - -u8 Fishing12(struct Task *task) -{ - sub_805A954(); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble())); - sub_8072044(gOtherText_NotEvenANibble); - task->data[0] = 13; - return 1; -} - -u8 Fishing13(struct Task *task) -{ - sub_805A954(); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble())); - sub_8072044(gOtherText_ItGotAway); - task->data[0]++; - return 1; -} - -u8 Fishing14(struct Task *task) -{ - sub_805A954(); - MenuDisplayMessageBox(); - task->data[0]++; - return 0; -} - -u8 Fishing15(struct Task *task) -{ - sub_805A954(); - if (gSprites[gPlayerAvatar.spriteId].animEnded) - { - struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - - sub_805B980(playerMapObj, task->data[14]); - FieldObjectTurn(playerMapObj, playerMapObj->placeholder18); - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); - gSprites[gPlayerAvatar.spriteId].pos2.x = 0; - gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - task->data[0]++; - } - return 0; -} - -u8 Fishing16(struct Task *task) -{ - if (MenuUpdateWindowText()) - { - gPlayerAvatar.unk6 = 0; - ScriptContext2_Disable(); - UnfreezeMapObjects(); - MenuZeroFillScreen(); - sub_80BE97C(0); - DestroyTask(FindTaskIdByFunc(Task_Fishing)); - } - return 0; -} - -static void sub_805A954(void) -{ - struct Sprite *playerSprite = &gSprites[gPlayerAvatar.spriteId]; - u8 animCmdIndex; - u8 animType; - - AnimateSprite(playerSprite); - playerSprite->pos2.x = 0; - playerSprite->pos2.y = 0; - animCmdIndex = playerSprite->animCmdIndex; - if (playerSprite->anims[playerSprite->animNum][animCmdIndex].type == -1) - { - animCmdIndex--; - } - else - { - playerSprite->animDelayCounter++; - if (playerSprite->anims[playerSprite->animNum][animCmdIndex].type == -1) - animCmdIndex--; - } - animType = playerSprite->anims[playerSprite->animNum][animCmdIndex].type; - if (animType == 1 || animType == 2 || animType == 3) - { - playerSprite->pos2.x = 8; - if (player_get_direction_lower_nybble() == 3) - playerSprite->pos2.x = -8; - } - if (animType == 5) - playerSprite->pos2.y = -8; - if (animType == 10 || animType == 11) - playerSprite->pos2.y = 8; - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 1, playerSprite->pos2.y); -} |