diff options
35 files changed, 342 insertions, 629 deletions
diff --git a/asm/bike.s b/asm/bike.s index 5ca0e605c..f78bc0a1d 100644 --- a/asm/bike.s +++ b/asm/bike.s @@ -611,21 +611,21 @@ sub_80BD4F0: @ 80BD4F0 cmp r0, 0x1 bhi _080BD51A adds r0, r4, 0 - bl MetatileBehavior_ReturnFalse_15 + bl MetatileBehavior_IsIsolatedVerticalRail lsls r0, 24 cmp r0, 0 bne _080BD532 adds r0, r4, 0 - bl MetatileBehavior_ReturnFalse_17 + bl MetatileBehavior_IsVerticalRail b _080BD52C _080BD51A: adds r0, r5, 0 - bl MetatileBehavior_ReturnFalse_16 + bl MetatileBehavior_IsIsolatedHorizontalRail lsls r0, 24 cmp r0, 0 bne _080BD532 adds r0, r5, 0 - bl MetatileBehavior_ReturnFalse_18 + bl MetatileBehavior_IsHorizontalRail _080BD52C: lsls r0, 24 cmp r0, 0 @@ -697,7 +697,7 @@ player_should_look_direction_be_enforced_upon_movement: @ 80BD58C lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1E] - bl MetatileBehavior_ReturnFalse_14 + bl MetatileBehavior_IsBumpySlope lsls r0, 24 cmp r0, 0 beq _080BD5C0 @@ -875,7 +875,7 @@ Bike_HandleBumpySlopeJump: @ 80BD6C4 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 - bl MetatileBehavior_ReturnFalse_14 + bl MetatileBehavior_IsBumpySlope lsls r0, 24 cmp r0, 0 beq _080BD70C diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index 029f1a3e0..e75595ccf 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -5,510 +5,6 @@ .text - thumb_func_start CanStopSurfing -CanStopSurfing: @ 805BC60 - push {r4-r6,lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, _0805BCB8 @ =gPlayerAvatar - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0805BCC0 - lsls r5, r3, 16 - asrs r0, r5, 16 - lsls r4, 16 - asrs r1, r4, 16 - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805BCC0 - lsrs r0, r5, 16 - lsrs r1, r4, 16 - movs r2, 0x3 - bl GetObjectEventIdByXYZ - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - bne _0805BCC0 - ldr r0, _0805BCBC @ =gUnknown_835B820 - adds r0, r6, r0 - ldrb r0, [r0] - movs r1, 0x10 - bl sub_811278C - adds r0, r6, 0 - bl sub_805D0F8 - movs r0, 0x1 - b _0805BCC2 - .align 2, 0 -_0805BCB8: .4byte gPlayerAvatar -_0805BCBC: .4byte gUnknown_835B820 -_0805BCC0: - movs r0, 0 -_0805BCC2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end CanStopSurfing - - thumb_func_start ShouldJumpLedge -ShouldJumpLedge: @ 805BCC8 - push {lr} - lsls r2, 24 - lsrs r2, 24 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetLedgeJumpDirection - lsls r0, 24 - cmp r0, 0 - bne _0805BCE4 - movs r0, 0 - b _0805BCE6 -_0805BCE4: - movs r0, 0x1 -_0805BCE6: - pop {r1} - bx r1 - thumb_func_end ShouldJumpLedge - - thumb_func_start TryPushBoulder -TryPushBoulder: @ 805BCEC - push {r4-r7,lr} - sub sp, 0x4 - mov r3, sp - strh r0, [r3] - mov r5, sp - adds r5, 0x2 - strh r1, [r5] - lsls r2, 24 - lsrs r7, r2, 24 - ldr r0, _0805BD98 @ =0x00000805 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0805BDA0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl GetObjectEventIdByXY - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x10 - beq _0805BDA0 - ldr r0, _0805BD9C @ =gObjectEvents - lsls r1, r6, 3 - adds r1, r6 - lsls r1, 2 - adds r4, r1, r0 - ldrb r0, [r4, 0x5] - cmp r0, 0x61 - bne _0805BDA0 - ldrh r1, [r4, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r4, 0x12] - strh r0, [r5] - adds r0, r7, 0 - mov r1, sp - adds r2, r5, 0 - bl MoveCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - cmp r0, 0x66 - beq _0805BD8A - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r7, 0 - bl GetCollisionAtCoords - lsls r0, 24 - cmp r0, 0 - bne _0805BDA0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsCaveDoor - lsls r0, 24 - cmp r0, 0 - bne _0805BDA0 -_0805BD8A: - adds r0, r6, 0 - adds r1, r7, 0 - bl task_add_bump_boulder - movs r0, 0x1 - b _0805BDA2 - .align 2, 0 -_0805BD98: .4byte 0x00000805 -_0805BD9C: .4byte gObjectEvents -_0805BDA0: - movs r0, 0 -_0805BDA2: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end TryPushBoulder - - thumb_func_start CheckAcroBikeCollision -CheckAcroBikeCollision: @ 805BDAC - push {r4-r7,lr} - adds r6, r3, 0 - lsls r2, 24 - lsrs r5, r2, 24 - movs r4, 0 - ldr r7, _0805BDD4 @ =gUnknown_835B828 -_0805BDB8: - lsls r0, r4, 2 - adds r0, r7 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _0805BDDC - ldr r0, _0805BDD8 @ =gUnknown_835B83C - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r6] - b _0805BDE6 - .align 2, 0 -_0805BDD4: .4byte gUnknown_835B828 -_0805BDD8: .4byte gUnknown_835B83C -_0805BDDC: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _0805BDB8 -_0805BDE6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CheckAcroBikeCollision - - thumb_func_start SetPlayerAvatarTransitionFlags -SetPlayerAvatarTransitionFlags: @ 805BDEC - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0805BE04 @ =gPlayerAvatar - ldrb r1, [r2, 0x1] - orrs r0, r1 - strb r0, [r2, 0x1] - bl DoPlayerAvatarTransition - pop {r0} - bx r0 - .align 2, 0 -_0805BE04: .4byte gPlayerAvatar - thumb_func_end SetPlayerAvatarTransitionFlags - - thumb_func_start DoPlayerAvatarTransition -DoPlayerAvatarTransition: @ 805BE08 - push {r4,r5,lr} - ldr r0, _0805BE50 @ =gPlayerAvatar - ldrb r4, [r0, 0x1] - cmp r4, 0 - beq _0805BE48 - movs r5, 0 -_0805BE14: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0805BE36 - ldr r0, _0805BE54 @ =gUnknown_835B844 - lsls r2, r5, 2 - adds r2, r0 - ldr r0, _0805BE50 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805BE58 @ =gObjectEvents - adds r0, r1 - ldr r1, [r2] - bl _call_via_r1 -_0805BE36: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - lsrs r4, 1 - cmp r5, 0x7 - bls _0805BE14 - ldr r1, _0805BE50 @ =gPlayerAvatar - movs r0, 0 - strb r0, [r1, 0x1] -_0805BE48: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805BE50: .4byte gPlayerAvatar -_0805BE54: .4byte gUnknown_835B844 -_0805BE58: .4byte gObjectEvents - thumb_func_end DoPlayerAvatarTransition - - thumb_func_start nullsub_22 -nullsub_22: @ 805BE5C - bx lr - thumb_func_end nullsub_22 - - thumb_func_start sub_805BE60 -sub_805BE60: @ 805BE60 - push {lr} - movs r0, 0 - bl sub_8150474 - movs r0, 0 - bl sub_8150498 - pop {r0} - bx r0 - thumb_func_end sub_805BE60 - - thumb_func_start sub_805BE74 -sub_805BE74: @ 805BE74 - push {lr} - movs r0, 0x1 - bl sub_8150474 - movs r0, 0x1 - bl sub_8150498 - movs r0, 0 - movs r1, 0 - bl sub_80BD620 - pop {r0} - bx r0 - thumb_func_end sub_805BE74 - - thumb_func_start sub_805BE90 -sub_805BE90: @ 805BE90 - push {lr} - movs r0, 0x3 - bl sub_8150474 - movs r0, 0x3 - bl sub_8150498 - pop {r0} - bx r0 - thumb_func_end sub_805BE90 - - thumb_func_start nullsub_23 -nullsub_23: @ 805BEA4 - bx lr - thumb_func_end nullsub_23 - - thumb_func_start PlayerAvatarTransition_ReturnToField -PlayerAvatarTransition_ReturnToField: @ 805BEA8 - ldr r2, _0805BEB4 @ =gPlayerAvatar - ldrb r1, [r2] - movs r0, 0x20 - orrs r0, r1 - strb r0, [r2] - bx lr - .align 2, 0 -_0805BEB4: .4byte gPlayerAvatar - thumb_func_end PlayerAvatarTransition_ReturnToField - - thumb_func_start sub_805BEB8 -sub_805BEB8: @ 805BEB8 - push {r4,lr} - ldr r4, _0805BEE4 @ =gPlayerAvatar - movs r0, 0 - strb r0, [r4, 0x3] - bl PlayerIsAnimActive - lsls r0, 24 - cmp r0, 0 - beq _0805BEF6 - bl PlayerCheckIfAnimFinishedOrInactive - lsls r0, 24 - cmp r0, 0 - bne _0805BEE8 - bl player_is_anim_in_certain_ranges - lsls r0, 24 - cmp r0, 0 - bne _0805BEF6 - movs r0, 0x1 - b _0805BEF4 - .align 2, 0 -_0805BEE4: .4byte gPlayerAvatar -_0805BEE8: - bl sub_805BF58 - lsls r0, 24 - cmp r0, 0 - bne _0805BEF6 - movs r0, 0x2 -_0805BEF4: - strb r0, [r4, 0x3] -_0805BEF6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_805BEB8 - - thumb_func_start player_is_anim_in_certain_ranges -player_is_anim_in_certain_ranges: @ 805BEFC - push {lr} - ldr r2, _0805BF48 @ =gObjectEvents - ldr r0, _0805BF4C @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1C] - cmp r1, 0x7 - bls _0805BF42 - adds r0, r1, 0 - subs r0, 0x18 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _0805BF42 - adds r0, r1, 0 - subs r0, 0x21 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - bls _0805BF42 - adds r0, r1, 0 - subs r0, 0x70 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bls _0805BF42 - adds r0, r1, 0 - adds r0, 0x78 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _0805BF50 -_0805BF42: - movs r0, 0x1 - b _0805BF52 - .align 2, 0 -_0805BF48: .4byte gObjectEvents -_0805BF4C: .4byte gPlayerAvatar -_0805BF50: - movs r0, 0 -_0805BF52: - pop {r1} - bx r1 - thumb_func_end player_is_anim_in_certain_ranges - - thumb_func_start sub_805BF58 -sub_805BF58: @ 805BF58 - push {lr} - bl player_is_anim_in_certain_ranges - lsls r0, 24 - cmp r0, 0 - beq _0805BF74 - ldr r0, _0805BF70 @ =gPlayerAvatar - ldrb r0, [r0, 0x2] - cmp r0, 0x1 - beq _0805BF74 - movs r0, 0x1 - b _0805BF76 - .align 2, 0 -_0805BF70: .4byte gPlayerAvatar -_0805BF74: - movs r0, 0 -_0805BF76: - pop {r1} - bx r1 - thumb_func_end sub_805BF58 - - thumb_func_start PlayerIsAnimActive -PlayerIsAnimActive: @ 805BF7C - push {lr} - ldr r0, _0805BF98 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805BF9C @ =gObjectEvents - adds r0, r1 - bl ObjectEventIsMovementOverridden - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0805BF98: .4byte gPlayerAvatar -_0805BF9C: .4byte gObjectEvents - thumb_func_end PlayerIsAnimActive - - thumb_func_start PlayerCheckIfAnimFinishedOrInactive -PlayerCheckIfAnimFinishedOrInactive: @ 805BFA0 - push {lr} - ldr r0, _0805BFBC @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805BFC0 @ =gObjectEvents - adds r0, r1 - bl ObjectEventCheckHeldMovementStatus - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0805BFBC: .4byte gPlayerAvatar -_0805BFC0: .4byte gObjectEvents - thumb_func_end PlayerCheckIfAnimFinishedOrInactive - - thumb_func_start player_set_x22 -player_set_x22: @ 805BFC4 - ldr r3, _0805BFD8 @ =gObjectEvents - ldr r1, _0805BFDC @ =gPlayerAvatar - ldrb r2, [r1, 0x5] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - adds r1, 0x22 - strb r0, [r1] - bx lr - .align 2, 0 -_0805BFD8: .4byte gObjectEvents -_0805BFDC: .4byte gPlayerAvatar - thumb_func_end player_set_x22 - - thumb_func_start PlayerGetCopyableMovement -PlayerGetCopyableMovement: @ 805BFE0 - ldr r2, _0805BFF4 @ =gObjectEvents - ldr r0, _0805BFF8 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x22 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805BFF4: .4byte gObjectEvents -_0805BFF8: .4byte gPlayerAvatar - thumb_func_end PlayerGetCopyableMovement - thumb_func_start sub_805BFFC sub_805BFFC: @ 805BFFC push {lr} @@ -542,7 +38,7 @@ PlayerSetAnimId: @ 805C024 cmp r0, 0 bne _0805C05E adds r0, r4, 0 - bl player_set_x22 + bl PlayerSetCopyableMovement ldr r0, _0805C064 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 @@ -2244,8 +1740,8 @@ _0805CCC2: bx r0 thumb_func_end sub_805CC40 - thumb_func_start task_add_bump_boulder -task_add_bump_boulder: @ 805CCD0 + thumb_func_start StartStrengthAnim +StartStrengthAnim: @ 805CCD0 push {r4-r6,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -2273,7 +1769,7 @@ task_add_bump_boulder: @ 805CCD0 .align 2, 0 _0805CD04: .4byte taskFF_bump_boulder _0805CD08: .4byte gTasks - thumb_func_end task_add_bump_boulder + thumb_func_end StartStrengthAnim thumb_func_start taskFF_bump_boulder taskFF_bump_boulder: @ 805CD0C @@ -2771,8 +2267,8 @@ _0805D0F0: .4byte gPlayerAvatar _0805D0F4: .4byte sub_805CF78 thumb_func_end sub_805D0A4 - thumb_func_start sub_805D0F8 -sub_805D0F8: @ 805D0F8 + thumb_func_start CreateStopSurfingTask +CreateStopSurfingTask: @ 805D0F8 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 @@ -2810,7 +2306,7 @@ sub_805D0F8: @ 805D0F8 _0805D148: .4byte gPlayerAvatar _0805D14C: .4byte taskFF_0805D1D4 _0805D150: .4byte gTasks - thumb_func_end sub_805D0F8 + thumb_func_end CreateStopSurfingTask thumb_func_start sub_805D154 sub_805D154: @ 805D154 @@ -2865,7 +2361,7 @@ sub_805D1A8: @ 805D1A8 movs r1, 0x10 bl sub_811278C movs r0, 0x2 - bl sub_805D0F8 + bl CreateStopSurfingTask _0805D1C6: pop {r0} bx r0 diff --git a/asm/overworld.s b/asm/overworld.s index 8e20c09f4..6ab3ef811 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -2073,7 +2073,7 @@ _08055B94: cmp r0, 0x1 beq _08055BD0 adds r0, r5, 0 - bl MetatileBehavior_IsCaveDoor + bl MetatileBehavior_IsNonAnimDoor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s index bfa367941..f7b7a3493 100644 --- a/data/field_player_avatar.s +++ b/data/field_player_avatar.s @@ -3,31 +3,6 @@ .include "constants/constants.inc" .section .rodata .align 2 -gUnknown_835B820:: @ 835B820 - .byte 0x04, 0x04, 0x05, 0x06, 0x07 - - .align 2 -gUnknown_835B828:: @ 835B828 - .4byte MetatileBehavior_ReturnFalse_14 // Related to Acro Bike - .4byte MetatileBehavior_ReturnFalse_15 // Related to Acro Bike - .4byte MetatileBehavior_ReturnFalse_16 // Related to Acro Bike - .4byte MetatileBehavior_ReturnFalse_17 // Related to Acro Bike - .4byte MetatileBehavior_ReturnFalse_18 // Related to Acro Bike - -gUnknown_835B83C:: @ 835B83C - .byte 0x09, 0x0a, 0x0b, 0x0c, 0x0d - - .align 2 -gUnknown_835B844:: @ 835B844 - .4byte sub_805BE60 - .4byte sub_805BE74 - .4byte sub_805BE74 - .4byte sub_805BE90 - .4byte nullsub_23 - .4byte PlayerAvatarTransition_ReturnToField - .4byte nullsub_22 - .4byte nullsub_22 - gUnknown_835B864:: @ 835B864 .4byte MetatileBehavior_IsSouthArrowWarp .4byte MetatileBehavior_IsNorthArrowWarp diff --git a/data/maps/FuchsiaCity_WardensHouse/map.json b/data/maps/FuchsiaCity_WardensHouse/map.json index a6d7e8044..74e75066a 100644 --- a/data/maps/FuchsiaCity_WardensHouse/map.json +++ b/data/maps/FuchsiaCity_WardensHouse/map.json @@ -29,7 +29,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 11, "y": 6, "elevation": 3, diff --git a/data/maps/MtEmber_Exterior/map.json b/data/maps/MtEmber_Exterior/map.json index 7499f0047..86fe279ca 100644 --- a/data/maps/MtEmber_Exterior/map.json +++ b/data/maps/MtEmber_Exterior/map.json @@ -120,7 +120,7 @@ "flag": "FLAG_TEMP_13" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 22, "y": 45, "elevation": 3, @@ -133,7 +133,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 17, "y": 46, "elevation": 3, @@ -146,7 +146,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 36, "y": 14, "elevation": 3, @@ -185,7 +185,7 @@ "flag": "FLAG_TEMP_15" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 35, "y": 14, "elevation": 3, @@ -198,7 +198,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 35, "y": 17, "elevation": 3, diff --git a/data/maps/MtEmber_RubyPath_B2F/map.json b/data/maps/MtEmber_RubyPath_B2F/map.json index e505dd6ab..e260e42bd 100644 --- a/data/maps/MtEmber_RubyPath_B2F/map.json +++ b/data/maps/MtEmber_RubyPath_B2F/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 9, "y": 3, "elevation": 3, @@ -29,7 +29,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 12, "y": 5, "elevation": 3, @@ -42,7 +42,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 12, "y": 2, "elevation": 3, diff --git a/data/maps/MtEmber_RubyPath_B3F/map.json b/data/maps/MtEmber_RubyPath_B3F/map.json index 3107af9f3..1888f4506 100644 --- a/data/maps/MtEmber_RubyPath_B3F/map.json +++ b/data/maps/MtEmber_RubyPath_B3F/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 10, "y": 4, "elevation": 3, @@ -29,7 +29,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 26, "y": 12, "elevation": 3, @@ -42,7 +42,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 28, "y": 8, "elevation": 3, @@ -133,7 +133,7 @@ "flag": "FLAG_TEMP_17" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 15, "y": 13, "elevation": 3, diff --git a/data/maps/MtEmber_Summit/map.json b/data/maps/MtEmber_Summit/map.json index 9442cb532..92aabd11e 100644 --- a/data/maps/MtEmber_Summit/map.json +++ b/data/maps/MtEmber_Summit/map.json @@ -29,7 +29,7 @@ "flag": "FLAG_HIDE_MOLTRES" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 10, "y": 12, "elevation": 3, @@ -42,7 +42,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 9, "y": 12, "elevation": 3, @@ -55,7 +55,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 8, "y": 11, "elevation": 3, @@ -68,7 +68,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 8, "y": 10, "elevation": 3, diff --git a/data/maps/SeafoamIslands_1F/map.json b/data/maps/SeafoamIslands_1F/map.json index 9ec2b53ae..5962bae21 100644 --- a/data/maps/SeafoamIslands_1F/map.json +++ b/data/maps/SeafoamIslands_1F/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 22, "y": 12, "elevation": 3, @@ -29,7 +29,7 @@ "flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_1" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 32, "y": 9, "elevation": 3, diff --git a/data/maps/SeafoamIslands_B1F/map.json b/data/maps/SeafoamIslands_B1F/map.json index b5a669e7d..684842b1c 100644 --- a/data/maps/SeafoamIslands_B1F/map.json +++ b/data/maps/SeafoamIslands_B1F/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 22, "y": 8, "elevation": 3, @@ -29,7 +29,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 30, "y": 8, "elevation": 3, diff --git a/data/maps/SeafoamIslands_B2F/map.json b/data/maps/SeafoamIslands_B2F/map.json index a91d362c1..a12678c4f 100644 --- a/data/maps/SeafoamIslands_B2F/map.json +++ b/data/maps/SeafoamIslands_B2F/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 22, "y": 8, "elevation": 3, @@ -29,7 +29,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 30, "y": 8, "elevation": 3, diff --git a/data/maps/SeafoamIslands_B3F/map.json b/data/maps/SeafoamIslands_B3F/map.json index 25ad96266..9d9c4db52 100644 --- a/data/maps/SeafoamIslands_B3F/map.json +++ b/data/maps/SeafoamIslands_B3F/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 23, "y": 8, "elevation": 1, @@ -29,7 +29,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_1" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 24, "y": 8, "elevation": 1, @@ -42,7 +42,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_2" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 12, "y": 16, "elevation": 3, @@ -55,7 +55,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_5" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 13, "y": 16, "elevation": 3, @@ -68,7 +68,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_6" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 9, "y": 16, "elevation": 3, @@ -81,7 +81,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_4" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 6, "y": 17, "elevation": 3, diff --git a/data/maps/SeafoamIslands_B4F/map.json b/data/maps/SeafoamIslands_B4F/map.json index 4375e5fad..eeae9ad11 100644 --- a/data/maps/SeafoamIslands_B4F/map.json +++ b/data/maps/SeafoamIslands_B4F/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 8, "y": 18, "elevation": 1, @@ -29,7 +29,7 @@ "flag": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_1" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 9, "y": 18, "elevation": 1, diff --git a/data/maps/SevenIsland_SevaultCanyon/map.json b/data/maps/SevenIsland_SevaultCanyon/map.json index 0cb611d5e..7b579284e 100644 --- a/data/maps/SevenIsland_SevaultCanyon/map.json +++ b/data/maps/SevenIsland_SevaultCanyon/map.json @@ -144,7 +144,7 @@ "flag": "FLAG_TEMP_12" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 13, "y": 47, "elevation": 3, @@ -209,7 +209,7 @@ "flag": "FLAG_TEMP_17" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 17, "y": 47, "elevation": 3, diff --git a/data/maps/SevenIsland_SevaultCanyon_TanobyKey/map.json b/data/maps/SevenIsland_SevaultCanyon_TanobyKey/map.json index cbcc15d02..8cb2b4fe3 100644 --- a/data/maps/SevenIsland_SevaultCanyon_TanobyKey/map.json +++ b/data/maps/SevenIsland_SevaultCanyon_TanobyKey/map.json @@ -16,7 +16,7 @@ "connections": null, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 7, "y": 6, "elevation": 3, @@ -29,7 +29,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 8, "y": 6, "elevation": 3, @@ -42,7 +42,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 8, "y": 9, "elevation": 3, @@ -55,7 +55,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 6, "y": 10, "elevation": 3, @@ -68,7 +68,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 8, "y": 10, "elevation": 3, @@ -81,7 +81,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 6, "y": 9, "elevation": 3, @@ -94,7 +94,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 6, "y": 6, "elevation": 3, diff --git a/data/maps/SixIsland_RuinValley/map.json b/data/maps/SixIsland_RuinValley/map.json index 8a5ff9436..c6bc3b25a 100644 --- a/data/maps/SixIsland_RuinValley/map.json +++ b/data/maps/SixIsland_RuinValley/map.json @@ -100,7 +100,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 17, "y": 10, "elevation": 5, @@ -113,7 +113,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 17, "y": 12, "elevation": 5, @@ -126,7 +126,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 18, "y": 11, "elevation": 5, @@ -139,7 +139,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 6, "y": 33, "elevation": 3, @@ -152,7 +152,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 6, "y": 34, "elevation": 3, @@ -165,7 +165,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 41, "y": 32, "elevation": 3, @@ -178,7 +178,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 41, "y": 33, "elevation": 3, @@ -191,7 +191,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 42, "y": 33, "elevation": 3, diff --git a/data/maps/VictoryRoad_1F/map.json b/data/maps/VictoryRoad_1F/map.json index 75a812a17..1dc53b977 100644 --- a/data/maps/VictoryRoad_1F/map.json +++ b/data/maps/VictoryRoad_1F/map.json @@ -68,7 +68,7 @@ "flag": "FLAG_HIDE_VICTORY_ROAD_1F_TM02" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 7, "y": 18, "elevation": 3, @@ -81,7 +81,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 4, "y": 12, "elevation": 3, @@ -94,7 +94,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 16, "y": 3, "elevation": 3, diff --git a/data/maps/VictoryRoad_2F/map.json b/data/maps/VictoryRoad_2F/map.json index 20ce486e2..023f96e1c 100644 --- a/data/maps/VictoryRoad_2F/map.json +++ b/data/maps/VictoryRoad_2F/map.json @@ -133,7 +133,7 @@ "flag": "FLAG_HIDE_VICTORY_ROAD_2F_TM37" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 8, "y": 7, "elevation": 3, @@ -146,7 +146,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 6, "y": 17, "elevation": 3, @@ -159,7 +159,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 33, "y": 19, "elevation": 3, diff --git a/data/maps/VictoryRoad_3F/map.json b/data/maps/VictoryRoad_3F/map.json index cf2d28b45..a20c6a276 100644 --- a/data/maps/VictoryRoad_3F/map.json +++ b/data/maps/VictoryRoad_3F/map.json @@ -94,7 +94,7 @@ "flag": "FLAG_HIDE_VICTORY_ROAD_3F_TM50" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 19, "y": 15, "elevation": 3, @@ -107,7 +107,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 33, "y": 18, "elevation": 0, @@ -120,7 +120,7 @@ "flag": "FLAG_HIDE_VICTORY_ROAD_3F_BOULDER" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 35, "y": 13, "elevation": 3, @@ -133,7 +133,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_STRENGTH_BOULDER", + "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", "x": 32, "y": 5, "elevation": 3, diff --git a/data/scripts/field_moves.inc b/data/scripts/field_moves.inc index 282071755..7ae90849d 100644 --- a/data/scripts/field_moves.inc +++ b/data/scripts/field_moves.inc @@ -125,7 +125,7 @@ EventScript_StrengthBoulder:: @ 81BE11D goto_if_questlog EventScript_ReleaseEnd lockall goto_if_unset FLAG_BADGE04_GET, EventScript_CantMoveBoulder - goto_if_set FLAG_SYS_STRENGTH_ACTIVE, EventScript_AlreadyUsedStrength + goto_if_set FLAG_SYS_USE_STRENGTH, EventScript_AlreadyUsedStrength checkpartymove MOVE_STRENGTH compare VAR_RESULT, PARTY_SIZE goto_if_eq EventScript_CantMoveBoulder @@ -147,7 +147,7 @@ EventScript_FldEffStrength:: @ 81BE16E end EventScript_UseStrength:: @ 81BE179 - setflag FLAG_SYS_STRENGTH_ACTIVE + setflag FLAG_SYS_USE_STRENGTH msgbox Text_MonUsedStrengthCanMoveBoulders, MSGBOX_SIGN end diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 2d51cd74d..08634f5f2 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -98,7 +98,7 @@ #define OBJ_EVENT_GFX_POKEDEX 94 #define OBJ_EVENT_GFX_CUT_TREE 95 #define OBJ_EVENT_GFX_ROCK_SMASH_ROCK 96 -#define OBJ_EVENT_GFX_STRENGTH_BOULDER 97 +#define OBJ_EVENT_GFX_PUSHABLE_BOULDER 97 #define OBJ_EVENT_GFX_FOSSIL 98 #define OBJ_EVENT_GFX_RUBY 99 #define OBJ_EVENT_GFX_SAPPHIRE 100 diff --git a/include/constants/flags.h b/include/constants/flags.h index 417e68255..6fd532a0e 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1321,7 +1321,7 @@ #define FLAG_SYS_VS_SEEKER_CHARGING (SYS_FLAGS + 0x1) #define FLAG_SYS_WHITE_FLUTE_ACTIVE (SYS_FLAGS + 0x3) #define FLAG_SYS_BLACK_FLUTE_ACTIVE (SYS_FLAGS + 0x4) -#define FLAG_SYS_STRENGTH_ACTIVE (SYS_FLAGS + 0x5) +#define FLAG_SYS_USE_STRENGTH (SYS_FLAGS + 0x5) #define FLAG_SYS_FLASH_ACTIVE (SYS_FLAGS + 0x6) #define FLAG_SYS_SPECIAL_WILD_BATTLE (SYS_FLAGS + 0x7) #define FLAG_0x808 (SYS_FLAGS + 0x8) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 3d5ea03f1..7bdeb08c5 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -199,5 +199,6 @@ extern const struct OamData gObjectEventBaseOam_32x32; extern const u16 gUnknown_8398648[]; extern const u16 gUnknown_8398688[]; extern const u8 gReflectionEffectPaletteMap[]; +u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z); #endif // GUARD_EVENT_OBJECT_MOVEMENT_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 658ad7393..f5660a8a4 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -309,6 +309,11 @@ enum COLLISION_LEDGE_JUMP, COLLISION_PUSHED_BOULDER, COLLISION_UNKNOWN_WARP_6C_6D_6E_6F, + COLLISION_WHEELIE_HOP, + COLLISION_ISOLATED_VERTICAL_RAIL, + COLLISION_ISOLATED_HORIZONTAL_RAIL, + COLLISION_VERTICAL_RAIL, + COLLISION_HORIZONTAL_RAIL, }; // player running states diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index 34f5bbd7b..a5f5a81b7 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -23,7 +23,7 @@ bool8 MetatileBehavior_IsUnknownWarp6E(u8 metatileBehavior); bool8 MetatileBehavior_IsUnknownWarp6F(u8 metatileBehavior); bool8 MetatileBehavior_IsUnknownWarp6C_to_6F(u8 metatileBehavior); bool8 MetatileBehavior_IsLadder(u8 metatileBehavior); -bool8 MetatileBehavior_IsCaveDoor(u8 metatileBehavior); +bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse_2(u8 metatileBehavior); bool8 MetatileBehavior_IsSurfable(u8 metatileBehavior); bool8 MetatileBehavior_IsSemiDeepWater(u8 metatileBehavior); @@ -98,11 +98,11 @@ bool8 MetatileBehavior_IsFallWarp(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse_13(u8 metatileBehavior); bool8 MetatileBehavior_IsCyclingRoadPullDownTile(u8 metatileBehavior); bool8 MetatileBehavior_IsCyclingRoadPullDownTileGrass(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_14(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_15(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_16(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_17(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_18(u8 metatileBehavior); +bool8 MetatileBehavior_IsBumpySlope(u8 metatileBehavior); +bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 metatileBehavior); +bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 metatileBehavior); +bool8 MetatileBehavior_IsVerticalRail(u8 metatileBehavior); +bool8 MetatileBehavior_IsHorizontalRail(u8 metatileBehavior); bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior); bool8 MetatileBehavior_IsMB0A(u8 metatileBehavior); bool8 MetatileBehavior_UnusedReturnFalse_9(u8 metatileBehavior); diff --git a/include/quest_log_player.h b/include/quest_log_player.h index 9cde1747e..eedb6fa37 100644 --- a/include/quest_log_player.h +++ b/include/quest_log_player.h @@ -4,5 +4,7 @@ #include "global.h" void sub_8150454(void); +bool8 sub_8150474(u8 a0); +void sub_8150498(u8 a0); #endif //GUARD_QUEST_LOG_PLAYER_H diff --git a/src/dynamic_placeholder_text_util.c b/src/dynamic_placeholder_text_util.c index 921612cfc..955c4866a 100644 --- a/src/dynamic_placeholder_text_util.c +++ b/src/dynamic_placeholder_text_util.c @@ -56,7 +56,7 @@ static const u8 sTextColorTable[] = [OBJ_EVENT_GFX_TEACHY_TV_HOST / 2] = 0x00, // OBJ_EVENT_GFX_GYM_GUY [OBJ_EVENT_GFX_ITEM_BALL / 2] = 0x33, // OBJ_EVENT_GFX_TOWN_MAP [OBJ_EVENT_GFX_POKEDEX / 2] = 0x33, // OBJ_EVENT_GFX_CUT_TREE - [OBJ_EVENT_GFX_ROCK_SMASH_ROCK / 2] = 0x33, // OBJ_EVENT_GFX_STRENGTH_BOULDER + [OBJ_EVENT_GFX_ROCK_SMASH_ROCK / 2] = 0x33, // OBJ_EVENT_GFX_PUSHABLE_BOULDER [OBJ_EVENT_GFX_FOSSIL / 2] = 0x33, // OBJ_EVENT_GFX_RUBY [OBJ_EVENT_GFX_SAPPHIRE / 2] = 0x33, // OBJ_EVENT_GFX_OLD_AMBER [OBJ_EVENT_GFX_GYM_SIGN / 2] = 0x33, // OBJ_EVENT_GFX_SIGN diff --git a/src/event_data.c b/src/event_data.c index a162e8701..f16267c98 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -44,7 +44,7 @@ void sub_806E110(void) memset(gSaveBlock1Ptr->vars, 0, 16 * 2); FlagClear(FLAG_SYS_WHITE_FLUTE_ACTIVE); FlagClear(FLAG_SYS_BLACK_FLUTE_ACTIVE); - FlagClear(FLAG_SYS_STRENGTH_ACTIVE); + FlagClear(FLAG_SYS_USE_STRENGTH); FlagClear(FLAG_SYS_SPECIAL_WILD_BATTLE); FlagClear(FLAG_SYS_INFORMED_OF_LOCAL_WIRELESS_PLAYER); } diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index da3fb4a03..891af3e90 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -906,7 +906,7 @@ static bool8 IsWarpMetatileBehavior(u16 metatileBehavior) return TRUE; if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE) return TRUE; - if (MetatileBehavior_IsCaveDoor(metatileBehavior) == TRUE) + if (MetatileBehavior_IsNonAnimDoor(metatileBehavior) == TRUE) return TRUE; if (MetatileBehavior_IsLavaridgeB1FWarp(metatileBehavior) == TRUE) return TRUE; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 10d6b3d72..c24d153ac 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -260,7 +260,7 @@ static void sub_807DE78(bool8 a0) else { sub_807DF4C(a0); - if (MetatileBehavior_IsCaveDoor(behavior) == TRUE) + if (MetatileBehavior_IsNonAnimDoor(behavior) == TRUE) func = task_map_chg_seq_0807E20C; else if (MetatileBehavior_IsUnknownWarp6C_to_6F(behavior) == TRUE) { diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 5b2820f96..c27eb2650 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -8,9 +8,13 @@ #include "field_player_avatar.h" #include "metatile_behavior.h" #include "overworld.h" +#include "quest_log.h" +#include "quest_log_player.h" #include "constants/event_object_movement.h" +#include "constants/event_objects.h" #include "constants/songs.h" #include "constants/flags.h" +#include "constants/metatile_behaviors.h" EWRAM_DATA struct ObjectEvent * gUnknown_2036E30 = NULL; EWRAM_DATA bool8 gUnknown_2036E34 = FALSE; @@ -21,7 +25,6 @@ u8 ObjectEventCB2_NoMovement2(struct ObjectEvent * object, struct Sprite * sprit bool8 sub_805B528(void); bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent * playerObjEvent, u8 direction); void npc_clear_strange_bits(struct ObjectEvent * playerObjEvent); -void DoPlayerAvatarTransition(void); bool8 TryDoMetatileBehaviorForcedMovement(void); void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 heldKeys); void PlayerAllowForcedMovementIfMovingSameDirection(void); @@ -56,7 +59,20 @@ u8 CheckForObjectEventCollision(struct ObjectEvent * objectEvent, s16 x, s16 y, bool8 CanStopSurfing(s16 x, s16 y, u8 direction); bool8 ShouldJumpLedge(s16 x, s16 y, u8 direction); bool8 TryPushBoulder(s16 x, s16 y, u8 direction); -bool8 CheckAcroBikeCollision(s16 x, s16 y, u8 metatileBehavior, u8 *collision); +void CheckAcroBikeCollision(s16 x, s16 y, u8 metatileBehavior, u8 *collision); +void DoPlayerAvatarTransition(void); +void PlayerAvatarTransition_Dummy(struct ObjectEvent * playerObject); +void PlayerAvatarTransition_Normal(struct ObjectEvent * playerObject); +void PlayerAvatarTransition_Bike(struct ObjectEvent * playerObject); +void PlayerAvatarTransition_Surfing(struct ObjectEvent * playerObject); +void PlayerAvatarTransition_Underwater(struct ObjectEvent * playerObject); +void PlayerAvatarTransition_ReturnToField(struct ObjectEvent * playerObject); +bool8 PlayerIsAnimActive(void); +bool8 PlayerCheckIfAnimFinishedOrInactive(void); +bool8 player_is_anim_in_certain_ranges(void); +bool8 sub_805BF58(void); +void CreateStopSurfingTask(u8 direction); +void StartStrengthAnim(u8 objectEventId, u8 direction); void PlayerNotOnBikeCollide(u8 direction); void PlayerRun(u8 direction); void PlayerRunSlow(u8 direction); @@ -531,3 +547,221 @@ u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u } return collision; } + +const u8 gUnknown_835B820[] = { + MOVEMENT_ACTION_FACE_DOWN_FAST, + MOVEMENT_ACTION_FACE_DOWN_FAST, + MOVEMENT_ACTION_FACE_UP_FAST, + MOVEMENT_ACTION_FACE_LEFT_FAST, + MOVEMENT_ACTION_FACE_RIGHT_FAST +}; + +bool8 CanStopSurfing(s16 x, s16 y, u8 direction) +{ + if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) + && MapGridGetZCoordAt(x, y) == 3 + && GetObjectEventIdByXYZ(x, y, 3) == OBJECT_EVENTS_COUNT) + { + sub_811278C(gUnknown_835B820[direction], 16); + CreateStopSurfingTask(direction); + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 ShouldJumpLedge(s16 x, s16 y, u8 z) +{ + if (GetLedgeJumpDirection(x, y, z) != 0) + return TRUE; + else + return FALSE; +} + +bool8 TryPushBoulder(s16 x, s16 y, u8 direction) +{ + u8 objectEventId; + if (!FlagGet(FLAG_SYS_USE_STRENGTH)) + return FALSE; + + objectEventId = GetObjectEventIdByXY(x, y); + if (objectEventId == OBJECT_EVENTS_COUNT) + return FALSE; + + if (gObjectEvents[objectEventId].graphicsId != OBJ_EVENT_GFX_PUSHABLE_BOULDER) + return FALSE; + + x = gObjectEvents[objectEventId].currentCoords.x; + y = gObjectEvents[objectEventId].currentCoords.y; + MoveCoords(direction, &x, &y); + if (MapGridGetMetatileBehaviorAt(x, y) == MB_FALL_WARP || (GetCollisionAtCoords(&gObjectEvents[objectEventId], x, y, direction) == COLLISION_NONE && !MetatileBehavior_IsNonAnimDoor(MapGridGetMetatileBehaviorAt(x, y)))) + { + StartStrengthAnim(objectEventId, direction); + return TRUE; + } + else + { + direction++; + direction--; + return FALSE; + } +} + +bool8 (*const gUnknown_835B828[])(u8) = { + MetatileBehavior_IsBumpySlope, + MetatileBehavior_IsIsolatedVerticalRail, + MetatileBehavior_IsIsolatedHorizontalRail, + MetatileBehavior_IsVerticalRail, + MetatileBehavior_IsHorizontalRail +}; + +const u8 gUnknown_835B83C[] = { + COLLISION_WHEELIE_HOP, + COLLISION_ISOLATED_VERTICAL_RAIL, + COLLISION_ISOLATED_HORIZONTAL_RAIL, + COLLISION_VERTICAL_RAIL, + COLLISION_HORIZONTAL_RAIL, +}; + +void CheckAcroBikeCollision(s16 x, s16 y, u8 metatileBehavior, u8 *collision) +{ + u8 i; + + for (i = 0; i < NELEMS(gUnknown_835B828); i++) + { + if (gUnknown_835B828[i](metatileBehavior)) + { + *collision = gUnknown_835B83C[i]; + return; + } + } +} + +void SetPlayerAvatarTransitionFlags(bool16 flags) +{ + gPlayerAvatar.unk1 |= flags; + DoPlayerAvatarTransition(); +} + +void (*const gUnknown_835B844[])(struct ObjectEvent *) = { + PlayerAvatarTransition_Normal, + PlayerAvatarTransition_Bike, + PlayerAvatarTransition_Bike, + PlayerAvatarTransition_Surfing, + PlayerAvatarTransition_Underwater, + PlayerAvatarTransition_ReturnToField, + PlayerAvatarTransition_Dummy, + PlayerAvatarTransition_Dummy +}; + +void DoPlayerAvatarTransition(void) +{ + u8 i; + u8 flags = gPlayerAvatar.unk1; + + if (flags != 0) + { + for (i = 0; i < NELEMS(gUnknown_835B844); i++, flags >>= 1) + { + if (flags & 1) + gUnknown_835B844[i](&gObjectEvents[gPlayerAvatar.objectEventId]); + } + gPlayerAvatar.unk1 = 0; + } +} + +void PlayerAvatarTransition_Dummy(struct ObjectEvent * playerObjEvent) +{ + +} + +void PlayerAvatarTransition_Normal(struct ObjectEvent * playerObjEvent) +{ + sub_8150474(0); + sub_8150498(0); +} + +void PlayerAvatarTransition_Bike(struct ObjectEvent * playerObjEvent) +{ + sub_8150474(1); + sub_8150498(1); + sub_80BD620(0, 0); +} + +void PlayerAvatarTransition_Surfing(struct ObjectEvent * playerObjEvent) +{ + sub_8150474(3); + sub_8150498(3); +} + +void PlayerAvatarTransition_Underwater(struct ObjectEvent * playerObjEvent) +{ + +} + +void PlayerAvatarTransition_ReturnToField(struct ObjectEvent * playerObjEvent) +{ + gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_FORCED_MVMT_DISABLED; +} + +void sub_805BEB8(void) +{ + gPlayerAvatar.tileTransitionState = T_NOT_MOVING; + if (PlayerIsAnimActive()) + { + if (!PlayerCheckIfAnimFinishedOrInactive()) + { + if (!player_is_anim_in_certain_ranges()) + gPlayerAvatar.tileTransitionState = T_TILE_TRANSITION; + } + else + { + if (!sub_805BF58()) + gPlayerAvatar.tileTransitionState = T_TILE_CENTER; + } + } +} + +bool8 player_is_anim_in_certain_ranges(void) +{ + u8 movementActionId = gObjectEvents[gPlayerAvatar.objectEventId].movementActionId; + + if (movementActionId <= MOVEMENT_ACTION_FACE_RIGHT_FAST + || (movementActionId >= MOVEMENT_ACTION_DELAY_1 && movementActionId <= MOVEMENT_ACTION_DELAY_16) + || (movementActionId >= MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN && movementActionId <= MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT) + || (movementActionId >= MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN && movementActionId <= MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT) + || (movementActionId >= MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN && movementActionId <= MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT)) + return TRUE; + else + return FALSE; +} + +bool8 sub_805BF58(void) +{ + if (player_is_anim_in_certain_ranges() && gPlayerAvatar.runningState != TURN_DIRECTION) + return TRUE; + else + return FALSE; +} + +bool8 PlayerIsAnimActive(void) +{ + return ObjectEventIsMovementOverridden(&gObjectEvents[gPlayerAvatar.objectEventId]); +} + +bool8 PlayerCheckIfAnimFinishedOrInactive(void) +{ + return ObjectEventCheckHeldMovementStatus(&gObjectEvents[gPlayerAvatar.objectEventId]); +} + +void PlayerSetCopyableMovement(u8 a) +{ + gObjectEvents[gPlayerAvatar.objectEventId].playerCopyableMovement = a; +} + +u8 PlayerGetCopyableMovement(void) +{ + return gObjectEvents[gPlayerAvatar.objectEventId].playerCopyableMovement; +} diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index c6b92b28c..c9a0fd1d5 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -13,7 +13,7 @@ static void ShowMonCB_UseStrength(void); bool8 SetUpFieldMove_Strength(void) { - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_STRENGTH_BOULDER) != TRUE) + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_PUSHABLE_BOULDER) != TRUE) { return FALSE; } diff --git a/src/item_use.c b/src/item_use.c index 6f81ee0e3..0b74e0726 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -263,10 +263,10 @@ void FieldUseFunc_MachBike(u8 taskId) behavior = MapGridGetMetatileBehaviorAt(x, y); if (FlagGet(FLAG_SYS_ON_CYCLING_ROAD) == TRUE - || MetatileBehavior_ReturnFalse_17(behavior) == TRUE - || MetatileBehavior_ReturnFalse_18(behavior) == TRUE - || MetatileBehavior_ReturnFalse_15(behavior) == TRUE - || MetatileBehavior_ReturnFalse_16(behavior) == TRUE) + || MetatileBehavior_IsVerticalRail(behavior) == TRUE + || MetatileBehavior_IsHorizontalRail(behavior) == TRUE + || MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE + || MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE) sub_80A10C4(taskId, gTasks[taskId].data[3], 2, gUnknown_8416451); else if (sub_8055C9C() == TRUE && !sub_80BD540()) { diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 988c9fad0..c937a3b48 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -191,7 +191,7 @@ bool8 MetatileBehavior_IsLadder(u8 metatileBehavior) return FALSE; } -bool8 MetatileBehavior_IsCaveDoor(u8 metatileBehavior) +bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior) { if(metatileBehavior == MB_CAVE_DOOR) return TRUE; @@ -677,11 +677,11 @@ bool8 MetatileBehavior_IsCyclingRoadPullDownTileGrass(u8 metatileBehavior) return metatileBehavior == MB_CYCLING_ROAD_PULL_DOWN_GRASS; } -bool8 MetatileBehavior_ReturnFalse_14(u8 metatileBehavior) { return FALSE; } -bool8 MetatileBehavior_ReturnFalse_15(u8 metatileBehavior) { return FALSE; } -bool8 MetatileBehavior_ReturnFalse_16(u8 metatileBehavior) { return FALSE; } -bool8 MetatileBehavior_ReturnFalse_17(u8 metatileBehavior) { return FALSE; } -bool8 MetatileBehavior_ReturnFalse_18(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsBumpySlope(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsVerticalRail(u8 metatileBehavior) { return FALSE; } +bool8 MetatileBehavior_IsHorizontalRail(u8 metatileBehavior) { return FALSE; } bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior) { |