summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/bike.s12
-rw-r--r--asm/field_player_avatar.s520
-rw-r--r--asm/overworld.s2
-rw-r--r--data/field_player_avatar.s25
-rw-r--r--data/maps/FuchsiaCity_WardensHouse/map.json2
-rw-r--r--data/maps/MtEmber_Exterior/map.json10
-rw-r--r--data/maps/MtEmber_RubyPath_B2F/map.json6
-rw-r--r--data/maps/MtEmber_RubyPath_B3F/map.json8
-rw-r--r--data/maps/MtEmber_Summit/map.json8
-rw-r--r--data/maps/SeafoamIslands_1F/map.json4
-rw-r--r--data/maps/SeafoamIslands_B1F/map.json4
-rw-r--r--data/maps/SeafoamIslands_B2F/map.json4
-rw-r--r--data/maps/SeafoamIslands_B3F/map.json12
-rw-r--r--data/maps/SeafoamIslands_B4F/map.json4
-rw-r--r--data/maps/SevenIsland_SevaultCanyon/map.json4
-rw-r--r--data/maps/SevenIsland_SevaultCanyon_TanobyKey/map.json14
-rw-r--r--data/maps/SixIsland_RuinValley/map.json16
-rw-r--r--data/maps/VictoryRoad_1F/map.json6
-rw-r--r--data/maps/VictoryRoad_2F/map.json6
-rw-r--r--data/maps/VictoryRoad_3F/map.json8
-rw-r--r--data/scripts/field_moves.inc4
-rw-r--r--include/constants/event_objects.h2
-rw-r--r--include/constants/flags.h2
-rw-r--r--include/event_object_movement.h1
-rw-r--r--include/global.fieldmap.h5
-rw-r--r--include/metatile_behavior.h12
-rw-r--r--include/quest_log_player.h2
-rw-r--r--src/dynamic_placeholder_text_util.c2
-rw-r--r--src/event_data.c2
-rw-r--r--src/field_control_avatar.c2
-rw-r--r--src/field_fadetransition.c2
-rw-r--r--src/field_player_avatar.c238
-rw-r--r--src/fldeff_strength.c2
-rw-r--r--src/item_use.c8
-rw-r--r--src/metatile_behavior.c12
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)
{