summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-17 22:08:02 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-17 22:08:02 -0400
commitba7e4acfeee5bdda18113586fde37b19429c3715 (patch)
tree34a9bcc6ea830aedaefed91a60473c1567329e17
parent901fceec188ff640f32b22343e5a0b6e7e4c9c42 (diff)
through CheckStandardWildEncounter
-rw-r--r--asm/field_control_avatar.s922
-rw-r--r--data/scripts/obtain_item.inc2
-rw-r--r--data/scripts/test.inc2
-rw-r--r--include/constants/event_bg.h2
-rw-r--r--include/constants/vars.h8
-rw-r--r--include/daycare.h1
-rw-r--r--include/event_scripts.h44
-rw-r--r--include/vs_seeker.h1
-rw-r--r--include/wild_encounter.h2
-rw-r--r--src/battle_setup.c4
-rw-r--r--src/field_control_avatar.c305
11 files changed, 371 insertions, 922 deletions
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 7721da952..71cf34c05 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -5,902 +5,6 @@
.text
- thumb_func_start GetInteractedBackgroundEventScript
-GetInteractedBackgroundEventScript: @ 806D0E4
- push {r4-r7,lr}
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r4, _0806D118 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl FindInvisibleObjectEventByPosition
- adds r5, r0, 0
- cmp r5, 0
- beq _0806D164
- ldr r0, [r5, 0x8]
- cmp r0, 0
- bne _0806D120
- ldr r0, _0806D11C @ =Test_EventScript_Sign
- b _0806D1E6
- .align 2, 0
-_0806D118: .4byte gMapHeader
-_0806D11C: .4byte Test_EventScript_Sign
-_0806D120:
- adds r0, r7, 0
- adds r1, r6, 0
- bl sub_806D898
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r5, 0x5]
- cmp r0, 0x7
- bhi _0806D1D8
- lsls r0, 2
- ldr r1, _0806D13C @ =_0806D140
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806D13C: .4byte _0806D140
- .align 2, 0
-_0806D140:
- .4byte _0806D1D8
- .4byte _0806D160
- .4byte _0806D168
- .4byte _0806D16E
- .4byte _0806D174
- .4byte _0806D17A
- .4byte _0806D17A
- .4byte _0806D17A
-_0806D160:
- cmp r6, 0x2
- beq _0806D1D8
-_0806D164:
- movs r0, 0
- b _0806D1E6
-_0806D168:
- cmp r6, 0x1
- beq _0806D1D8
- b _0806D164
-_0806D16E:
- cmp r6, 0x4
- beq _0806D1D8
- b _0806D164
-_0806D174:
- cmp r6, 0x3
- beq _0806D1D8
- b _0806D164
-_0806D17A:
- ldr r0, [r5, 0x8]
- movs r1, 0x3
- bl GetHiddenItemAttr
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _0806D164
- ldr r0, [r5, 0x8]
- movs r1, 0
- bl GetHiddenItemAttr
- ldr r1, _0806D1C4 @ =gSpecialVar_0x8005
- strh r0, [r1]
- ldr r0, [r5, 0x8]
- movs r1, 0x1
- bl GetHiddenItemAttr
- ldr r4, _0806D1C8 @ =gSpecialVar_0x8004
- strh r0, [r4]
- ldr r0, [r5, 0x8]
- movs r1, 0x2
- bl GetHiddenItemAttr
- ldr r1, _0806D1CC @ =gSpecialVar_0x8006
- strh r0, [r1]
- ldrh r0, [r4]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D164
- ldr r0, _0806D1D0 @ =gSpecialVar_Facing
- strh r6, [r0]
- ldr r0, _0806D1D4 @ =EventScript_FoundHiddenItem
- b _0806D1E6
- .align 2, 0
-_0806D1C4: .4byte gSpecialVar_0x8005
-_0806D1C8: .4byte gSpecialVar_0x8004
-_0806D1CC: .4byte gSpecialVar_0x8006
-_0806D1D0: .4byte gSpecialVar_Facing
-_0806D1D4: .4byte EventScript_FoundHiddenItem
-_0806D1D8:
- cmp r2, 0xFF
- beq _0806D1E0
- bl sub_8069A20
-_0806D1E0:
- ldr r0, _0806D1EC @ =gSpecialVar_Facing
- strh r6, [r0]
- ldr r0, [r5, 0x8]
-_0806D1E6:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0806D1EC: .4byte gSpecialVar_Facing
- thumb_func_end GetInteractedBackgroundEventScript
-
- thumb_func_start GetInteractedMetatileScript
-GetInteractedMetatileScript: @ 806D1F0
- push {r4,r5,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- ldr r0, _0806D210 @ =gSpecialVar_Facing
- strh r5, [r0]
- adds r0, r4, 0
- bl MetatileBehavior_IsPC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D218
- ldr r0, _0806D214 @ =EventScript_PC
- b _0806D53E
- .align 2, 0
-_0806D210: .4byte gSpecialVar_Facing
-_0806D214: .4byte EventScript_PC
-_0806D218:
- adds r0, r4, 0
- bl MetatileBehavior_IsRegionMap
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D230
- ldr r0, _0806D22C @ =EventScript_WallTownMap
- b _0806D53E
- .align 2, 0
-_0806D22C: .4byte EventScript_WallTownMap
-_0806D230:
- adds r0, r4, 0
- bl MetatileBehavior_IsBookshelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D248
- ldr r0, _0806D244 @ =gUnknown_81A7606
- b _0806D53E
- .align 2, 0
-_0806D244: .4byte gUnknown_81A7606
-_0806D248:
- adds r0, r4, 0
- bl MetatileBehavior_IsPokeMartShelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D260
- ldr r0, _0806D25C @ =gUnknown_81A760F
- b _0806D53E
- .align 2, 0
-_0806D25C: .4byte gUnknown_81A760F
-_0806D260:
- adds r0, r4, 0
- bl MetatileBehavior_IsFood
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D278
- ldr r0, _0806D274 @ =gUnknown_81A7618
- b _0806D53E
- .align 2, 0
-_0806D274: .4byte gUnknown_81A7618
-_0806D278:
- adds r0, r4, 0
- bl MetatileBehavior_IsImpressiveMachine
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D290
- ldr r0, _0806D28C @ =gUnknown_81A7633
- b _0806D53E
- .align 2, 0
-_0806D28C: .4byte gUnknown_81A7633
-_0806D290:
- adds r0, r4, 0
- bl MetatileBehavior_IsBlueprints
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2A8
- ldr r0, _0806D2A4 @ =gUnknown_81A763C
- b _0806D53E
- .align 2, 0
-_0806D2A4: .4byte gUnknown_81A763C
-_0806D2A8:
- adds r0, r4, 0
- bl MetatileBehavior_IsVideoGame
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2C0
- ldr r0, _0806D2BC @ =gUnknown_81A7621
- b _0806D53E
- .align 2, 0
-_0806D2BC: .4byte gUnknown_81A7621
-_0806D2C0:
- adds r0, r4, 0
- bl MetatileBehavior_IsBurglary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2D8
- ldr r0, _0806D2D4 @ =gUnknown_81A7645
- b _0806D53E
- .align 2, 0
-_0806D2D4: .4byte gUnknown_81A7645
-_0806D2D8:
- adds r0, r4, 0
- bl MetatileBehavior_IsComputer
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2F0
- ldr r0, _0806D2EC @ =gUnknown_81A762A
- b _0806D53E
- .align 2, 0
-_0806D2EC: .4byte gUnknown_81A762A
-_0806D2F0:
- adds r0, r4, 0
- bl MetatileBehavior_IsMBA3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D308
- ldr r0, _0806D304 @ =TrainerTower_EventScript_ShowTime
- b _0806D53E
- .align 2, 0
-_0806D304: .4byte TrainerTower_EventScript_ShowTime
-_0806D308:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingTVScreen
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D320
- ldr r0, _0806D31C @ =gUnknown_81A764E
- b _0806D53E
- .align 2, 0
-_0806D31C: .4byte gUnknown_81A764E
-_0806D320:
- adds r0, r4, 0
- bl MetatileBehavior_IsCabinet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D338
- ldr r0, _0806D334 @ =gUnknown_81A7657
- b _0806D53E
- .align 2, 0
-_0806D334: .4byte gUnknown_81A7657
-_0806D338:
- adds r0, r4, 0
- bl MetatileBehavior_IsKitchen
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D350
- ldr r0, _0806D34C @ =gUnknown_81A7660
- b _0806D53E
- .align 2, 0
-_0806D34C: .4byte gUnknown_81A7660
-_0806D350:
- adds r0, r4, 0
- bl MetatileBehavior_IsDresser
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D368
- ldr r0, _0806D364 @ =gUnknown_81A7669
- b _0806D53E
- .align 2, 0
-_0806D364: .4byte gUnknown_81A7669
-_0806D368:
- adds r0, r4, 0
- bl MetatileBehavior_IsSnacks
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D380
- ldr r0, _0806D37C @ =gUnknown_81A7672
- b _0806D53E
- .align 2, 0
-_0806D37C: .4byte gUnknown_81A7672
-_0806D380:
- adds r0, r4, 0
- bl MetatileBehavior_IsPainting
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D398
- ldr r0, _0806D394 @ =gUnknown_81A767B
- b _0806D53E
- .align 2, 0
-_0806D394: .4byte gUnknown_81A767B
-_0806D398:
- adds r0, r4, 0
- bl MetatileBehavior_IsPowerPlantMachine
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3B0
- ldr r0, _0806D3AC @ =gUnknown_81A7684
- b _0806D53E
- .align 2, 0
-_0806D3AC: .4byte gUnknown_81A7684
-_0806D3B0:
- adds r0, r4, 0
- bl MetatileBehavior_IsTelephone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3C8
- ldr r0, _0806D3C4 @ =gUnknown_81A768D
- b _0806D53E
- .align 2, 0
-_0806D3C4: .4byte gUnknown_81A768D
-_0806D3C8:
- adds r0, r4, 0
- bl MetatileBehavior_IsAdvertisingPoster
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3E0
- ldr r0, _0806D3DC @ =gUnknown_81A7696
- b _0806D53E
- .align 2, 0
-_0806D3DC: .4byte gUnknown_81A7696
-_0806D3E0:
- adds r0, r4, 0
- bl MetatileBehavior_IsTastyFood
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3F8
- ldr r0, _0806D3F4 @ =gUnknown_81A769F
- b _0806D53E
- .align 2, 0
-_0806D3F4: .4byte gUnknown_81A769F
-_0806D3F8:
- adds r0, r4, 0
- bl MetatileBehavior_IsTrashBin
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D410
- ldr r0, _0806D40C @ =gUnknown_81A76A8
- b _0806D53E
- .align 2, 0
-_0806D40C: .4byte gUnknown_81A76A8
-_0806D410:
- adds r0, r4, 0
- bl MetatileBehavior_IsCup
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D428
- ldr r0, _0806D424 @ =gUnknown_81A76B1
- b _0806D53E
- .align 2, 0
-_0806D424: .4byte gUnknown_81A76B1
-_0806D428:
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_19
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D440
- ldr r0, _0806D43C @ =gUnknown_81A76BA
- b _0806D53E
- .align 2, 0
-_0806D43C: .4byte gUnknown_81A76BA
-_0806D440:
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_20
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D458
- ldr r0, _0806D454 @ =gUnknown_81A76C3
- b _0806D53E
- .align 2, 0
-_0806D454: .4byte gUnknown_81A76C3
-_0806D458:
- adds r0, r4, 0
- bl MetatileBehavior_IsBlinkingLights
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D470
- ldr r0, _0806D46C @ =gUnknown_81A76CC
- b _0806D53E
- .align 2, 0
-_0806D46C: .4byte gUnknown_81A76CC
-_0806D470:
- adds r0, r4, 0
- bl MetatileBehavior_IsMB9F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D488
- ldr r0, _0806D484 @ =gUnknown_81A76D5
- b _0806D53E
- .align 2, 0
-_0806D484: .4byte gUnknown_81A76D5
-_0806D488:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingMB_8D
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4A0
- ldr r0, _0806D49C @ =CableClub_EventScript_81BBFD8
- b _0806D53E
- .align 2, 0
-_0806D49C: .4byte CableClub_EventScript_81BBFD8
-_0806D4A0:
- adds r0, r4, 0
- bl MetatileBehavior_IsQuestionnaire
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4B8
- ldr r0, _0806D4B4 @ =EventScript_Questionnaire
- b _0806D53E
- .align 2, 0
-_0806D4B4: .4byte EventScript_Questionnaire
-_0806D4B8:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingBattleRecords
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4D0
- ldr r0, _0806D4CC @ =CableClub_EventScript_ShowBattleRecords
- b _0806D53E
- .align 2, 0
-_0806D4CC: .4byte CableClub_EventScript_ShowBattleRecords
-_0806D4D0:
- adds r0, r4, 0
- bl MetatileBehavior_IsIndigoPlateauMark
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4EC
- bl sub_8069A20
- ldr r0, _0806D4E8 @ =gUnknown_81A76F0
- b _0806D53E
- .align 2, 0
-_0806D4E8: .4byte gUnknown_81A76F0
-_0806D4EC:
- adds r0, r4, 0
- bl MetatileBehavior_IsIndigoPlateauMark2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D508
- bl sub_8069A20
- ldr r0, _0806D504 @ =gUnknown_81A76F9
- b _0806D53E
- .align 2, 0
-_0806D504: .4byte gUnknown_81A76F9
-_0806D508:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingPokeMartSign
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D524
- bl sub_8069A20
- ldr r0, _0806D520 @ =gUnknown_81A76DE
- b _0806D53E
- .align 2, 0
-_0806D520: .4byte gUnknown_81A76DE
-_0806D524:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingPokemonCenterSign
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D538
- movs r0, 0
- b _0806D53E
-_0806D538:
- bl sub_8069A20
- ldr r0, _0806D544 @ =gUnknown_81A76E7
-_0806D53E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0806D544: .4byte gUnknown_81A76E7
- thumb_func_end GetInteractedMetatileScript
-
- thumb_func_start GetInteractedWaterScript
-GetInteractedWaterScript: @ 806D548
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSemiDeepWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D570
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D570
- ldr r0, _0806D56C @ =EventScript_CurrentTooFast
- b _0806D5E2
- .align 2, 0
-_0806D56C: .4byte EventScript_CurrentTooFast
-_0806D570:
- ldr r0, _0806D59C @ =0x00000824
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5A4
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5A4
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5A4
- ldr r0, _0806D5A0 @ =EventScript_UseSurf
- b _0806D5E2
- .align 2, 0
-_0806D59C: .4byte 0x00000824
-_0806D5A0: .4byte EventScript_UseSurf
-_0806D5A4:
- adds r0, r4, 0
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5E0
- ldr r0, _0806D5D0 @ =0x00000826
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5D8
- bl IsPlayerSurfingNorth
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5D8
- ldr r0, _0806D5D4 @ =EventScript_Waterfall
- b _0806D5E2
- .align 2, 0
-_0806D5D0: .4byte 0x00000826
-_0806D5D4: .4byte EventScript_Waterfall
-_0806D5D8:
- ldr r0, _0806D5DC @ =EventScript_CantUseWaterfall
- b _0806D5E2
- .align 2, 0
-_0806D5DC: .4byte EventScript_CantUseWaterfall
-_0806D5E0:
- movs r0, 0
-_0806D5E2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetInteractedWaterScript
-
- thumb_func_start TryStartStepBasedScript
-TryStartStepBasedScript: @ 806D5E8
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r6, r4, 0
- bl sub_806D660
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_806DA10
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- adds r0, r4, 0
- bl sub_806D694
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- adds r0, r4, 0
- bl sub_806D698
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- ldr r0, _0806D654 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0806D658
- lsls r0, r6, 24
- lsrs r0, 24
- bl MetatileBehavior_IsForcedMovementTile
- lsls r0, 24
- cmp r0, 0
- bne _0806D658
- bl UpdateRepelCounter
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D658
-_0806D650:
- movs r0, 0x1
- b _0806D65A
- .align 2, 0
-_0806D654: .4byte gPlayerAvatar
-_0806D658:
- movs r0, 0
-_0806D65A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end TryStartStepBasedScript
-
- thumb_func_start sub_806D660
-sub_806D660: @ 806D660
- push {r4,lr}
- ldr r4, _0806D688 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl mapheader_trigger_activate_at
- cmp r0, 0
- beq _0806D68C
- bl ScriptContext1_SetupScript
- movs r0, 0x1
- b _0806D68E
- .align 2, 0
-_0806D688: .4byte gMapHeader
-_0806D68C:
- movs r0, 0
-_0806D68E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806D660
-
- thumb_func_start sub_806D694
-sub_806D694: @ 806D694
- movs r0, 0
- bx lr
- thumb_func_end sub_806D694
-
- thumb_func_start sub_806D698
-sub_806D698: @ 806D698
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl InUnionRoom
- cmp r0, 0x1
- beq _0806D72C
- ldr r0, _0806D6E0 @ =gQuestLogState
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0806D72C
- bl AdjustFriendship_step
- ldr r0, _0806D6E4 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0806D720
- lsls r0, r4, 24
- lsrs r0, 24
- bl MetatileBehavior_IsForcedMovementTile
- lsls r0, 24
- cmp r0, 0
- bne _0806D720
- bl sub_810C4EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D6EC
- ldr r0, _0806D6E8 @ =gUnknown_81A8CED
- bl ScriptContext1_SetupScript
- b _0806D730
- .align 2, 0
-_0806D6E0: .4byte gQuestLogState
-_0806D6E4: .4byte gPlayerAvatar
-_0806D6E8: .4byte gUnknown_81A8CED
-_0806D6EC:
- bl DoPoisonFieldEffect_step
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D704
- ldr r0, _0806D700 @ =EventScript_FieldPoison
- bl ScriptContext1_SetupScript
- b _0806D730
- .align 2, 0
-_0806D700: .4byte EventScript_FieldPoison
-_0806D704:
- bl ShouldEggHatch
- lsls r0, 24
- cmp r0, 0
- beq _0806D720
- movs r0, 0xD
- bl IncrementGameStat
- ldr r0, _0806D71C @ =EventScript_EggHatch
- bl ScriptContext1_SetupScript
- b _0806D730
- .align 2, 0
-_0806D71C: .4byte EventScript_EggHatch
-_0806D720:
- bl SafariZoneTakeStep
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D730
-_0806D72C:
- movs r0, 0
- b _0806D732
-_0806D730:
- movs r0, 0x1
-_0806D732:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806D698
-
- thumb_func_start sub_806D738
-sub_806D738: @ 806D738
- push {lr}
- ldr r0, _0806D748 @ =0x00004021
- movs r1, 0
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0806D748: .4byte 0x00004021
- thumb_func_end sub_806D738
-
- thumb_func_start AdjustFriendship_step
-AdjustFriendship_step: @ 806D74C
- push {r4,r5,lr}
- ldr r0, _0806D780 @ =0x00004021
- bl GetVarPointer
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
- ldrh r1, [r0]
- movs r2, 0x7F
- ands r1, r2
- strh r1, [r0]
- cmp r1, 0
- bne _0806D77A
- ldr r5, _0806D784 @ =gPlayerParty
- movs r4, 0x5
-_0806D76A:
- adds r0, r5, 0
- movs r1, 0x5
- bl AdjustFriendship
- adds r5, 0x64
- subs r4, 0x1
- cmp r4, 0
- bge _0806D76A
-_0806D77A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806D780: .4byte 0x00004021
-_0806D784: .4byte gPlayerParty
- thumb_func_end AdjustFriendship_step
-
- thumb_func_start ClearPoisonStepCounter
-ClearPoisonStepCounter: @ 806D788
- push {lr}
- ldr r0, _0806D798 @ =0x00004022
- movs r1, 0
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0806D798: .4byte 0x00004022
- thumb_func_end ClearPoisonStepCounter
-
- thumb_func_start DoPoisonFieldEffect_step
-DoPoisonFieldEffect_step: @ 806D79C
- push {r4,lr}
- ldr r0, _0806D7D8 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x9
- beq _0806D7E0
- ldr r0, _0806D7DC @ =0x00004022
- bl GetVarPointer
- adds r4, r0, 0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0x5
- bl __umodsi3
- strh r0, [r4]
- lsls r0, 16
- cmp r0, 0
- bne _0806D7E0
- bl DoPoisonFieldEffect
- cmp r0, 0x1
- beq _0806D7E0
- cmp r0, 0x1
- ble _0806D7E0
- cmp r0, 0x2
- bne _0806D7E0
- movs r0, 0x1
- b _0806D7E2
- .align 2, 0
-_0806D7D8: .4byte gMapHeader
-_0806D7DC: .4byte 0x00004022
-_0806D7E0:
- movs r0, 0
-_0806D7E2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end DoPoisonFieldEffect_step
-
- thumb_func_start RestartWildEncounterImmunitySteps
-RestartWildEncounterImmunitySteps: @ 806D7E8
- push {lr}
- bl ResetEncounterRateModifiers
- pop {r0}
- bx r0
- thumb_func_end RestartWildEncounterImmunitySteps
-
- thumb_func_start CheckStandardWildEncounter
-CheckStandardWildEncounter: @ 806D7F4
- push {lr}
- bl TryStandardWildEncounter
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end CheckStandardWildEncounter
-
thumb_func_start sub_806D804
sub_806D804: @ 806D804
push {r4-r7,lr}
@@ -1069,7 +173,7 @@ sub_806D928: @ 806D928
lsrs r2, 16
ldrb r3, [r0, 0x4]
adds r0, r4, 0
- bl FindInvisibleObjectEventByPosition
+ bl GetBackgroundEventAtPosition
cmp r0, 0
bne _0806D950
movs r0, 0
@@ -1080,13 +184,13 @@ _0806D950:
ldr r0, [r0, 0x8]
cmp r0, 0
bne _0806D958
- ldr r0, _0806D960 @ =Test_EventScript_Sign
+ ldr r0, _0806D960 @ =EventScript_TestSignpostMsg
_0806D958:
pop {r4}
pop {r1}
bx r1
.align 2, 0
-_0806D960: .4byte Test_EventScript_Sign
+_0806D960: .4byte EventScript_TestSignpostMsg
thumb_func_end sub_806D928
thumb_func_start TryArrowWarp
@@ -1173,8 +277,8 @@ _0806DA02:
bx r1
thumb_func_end TryArrowWarp
- thumb_func_start sub_806DA10
-sub_806DA10: @ 806DA10
+ thumb_func_start TryStartWarpEventScript
+TryStartWarpEventScript: @ 806DA10
push {r4-r7,lr}
adds r6, r0, 0
lsls r1, 16
@@ -1278,7 +382,7 @@ _0806DAEE:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_806DA10
+ thumb_func_end TryStartWarpEventScript
thumb_func_start sub_806DAF4
sub_806DAF4: @ 806DAF4
@@ -1662,8 +766,8 @@ _0806DDB8:
bx r1
thumb_func_end trigger_activate
- thumb_func_start mapheader_trigger_activate_at
-mapheader_trigger_activate_at: @ 806DDC0
+ thumb_func_start GetCoordEventScriptAtPosition
+GetCoordEventScriptAtPosition: @ 806DDC0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1719,7 +823,7 @@ _0806DE18:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end mapheader_trigger_activate_at
+ thumb_func_end GetCoordEventScriptAtPosition
thumb_func_start sub_806DE28
sub_806DE28: @ 806DE28
@@ -1814,7 +918,7 @@ sub_806DEC4: @ 806DEC4
lsrs r2, 16
ldrb r3, [r0, 0x4]
adds r0, r4, 0
- bl mapheader_trigger_activate_at
+ bl GetCoordEventScriptAtPosition
pop {r4}
pop {r1}
bx r1
@@ -1822,8 +926,8 @@ sub_806DEC4: @ 806DEC4
_0806DEE8: .4byte gMapHeader
thumb_func_end sub_806DEC4
- thumb_func_start FindInvisibleObjectEventByPosition
-FindInvisibleObjectEventByPosition: @ 806DEEC
+ thumb_func_start GetBackgroundEventAtPosition
+GetBackgroundEventAtPosition: @ 806DEEC
push {r4-r7,lr}
lsls r1, 16
lsrs r7, r1, 16
@@ -1868,7 +972,7 @@ _0806DF34:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end FindInvisibleObjectEventByPosition
+ thumb_func_end GetBackgroundEventAtPosition
thumb_func_start dive_warp
dive_warp: @ 806DF3C
diff --git a/data/scripts/obtain_item.inc b/data/scripts/obtain_item.inc
index 961be1971..e89aabfba 100644
--- a/data/scripts/obtain_item.inc
+++ b/data/scripts/obtain_item.inc
@@ -158,7 +158,7 @@ EventScript_NoRoomToPickUpItem:: @ 81A682D
setvar VAR_RESULT, FALSE
return
-EventScript_FoundHiddenItem:: @ 81A6843
+EventScript_HiddenItemScript:: @ 81A6843
lockall
textcolor 3
waitse
diff --git a/data/scripts/test.inc b/data/scripts/test.inc
index bd0497209..f909dae57 100644
--- a/data/scripts/test.inc
+++ b/data/scripts/test.inc
@@ -2,7 +2,7 @@ Test_EventScript_NPC:: @ 81C5552
msgbox Test_Text_WelcomeToWorldOfPokemon, MSGBOX_NPC
end
-Test_EventScript_Sign:: @ 81C555B
+EventScript_TestSignpostMsg:: @ 81C555B
msgbox Test_Text_ThisIsASignpost, MSGBOX_SIGN
end
diff --git a/include/constants/event_bg.h b/include/constants/event_bg.h
index b106a74ef..37fedf25b 100644
--- a/include/constants/event_bg.h
+++ b/include/constants/event_bg.h
@@ -7,4 +7,6 @@
#define BG_EVENT_PLAYER_FACING_EAST 3
#define BG_EVENT_PLAYER_FACING_WEST 4
+#define BG_EVENT_HIDDEN_ITEM 7
+
#endif // GUARD_CONSTANTS_EVENT_BG_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 640bf41fd..6e0553931 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -49,10 +49,10 @@
// Counts up every step. Wraps around at 128.
// When wraparound occurs, the friendship of
// every party poke gets a slight boost.
-#define VAR_FRIENDSHIP_STEP_COUNT 0x4021
+#define VAR_HAPPINESS_STEP_COUNTER 0x4021
// Maybe unused?
-#define VAR_0x4022 0x4022
+#define VAR_POISON_STEP_COUNTER 0x4022
// Step counter. Caps at 1500. If you enter a map with
// renewable hidden items and this counter is capped,
@@ -81,8 +81,8 @@
#define VAR_QUEST_LOG_MON_COUNTS 0x4027
#define VAR_MENEWS_JISAN_STEP_COUNTER 0x4028
#define VAR_0x4029 0x4029
-#define VAR_HAPPINESS_STEP_COUNTER 0x402A
-#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_0x402A 0x402A
+#define VAR_0x402B 0x402B
#define VAR_RESET_RTC_ENABLE 0x402C
#define VAR_0x402D 0x402D
#define VAR_0x402E 0x402E
diff --git a/include/daycare.h b/include/daycare.h
index 71eada93e..01751641e 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -29,5 +29,6 @@ bool8 sub_8071614(void);
void EggHatch(void);
u8 GetEggStepsToSubtract(void);
u16 sub_80722E0(void);
+bool8 ShouldEggHatch(void);
#endif // GUARD_DAYCARE_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 9b1f65fef..1a2b26bf2 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1161,7 +1161,7 @@ extern const u8 EventScript_TryDoNormalTrainerBattle[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_TryDoRematchBattle[];
extern const u8 EventScript_DoTrainerBattleFromApproach[];
-extern const u8 Test_EventScript_Sign[];
+extern const u8 EventScript_TestSignpostMsg[];
// new_game
extern const u8 EventScript_ResetAllMapFlags[];
@@ -1215,5 +1215,47 @@ extern const u8 EventScript_FldEffFlash[];
// field_control_avatar
extern const u8 gUnknown_81A7ADB[];
extern const u8 PalletTown_PlayersHouse_2F_EventScript_PC[];
+extern const u8 EventScript_HiddenItemScript[];
+extern const u8 EventScript_PC[];
+extern const u8 EventScript_WallTownMap[];
+extern const u8 gUnknown_81A7606[];
+extern const u8 gUnknown_81A760F[];
+extern const u8 gUnknown_81A7618[];
+extern const u8 gUnknown_81A7633[];
+extern const u8 gUnknown_81A763C[];
+extern const u8 gUnknown_81A7621[];
+extern const u8 gUnknown_81A7645[];
+extern const u8 gUnknown_81A762A[];
+extern const u8 TrainerTower_EventScript_ShowTime[];
+extern const u8 gUnknown_81A764E[];
+extern const u8 gUnknown_81A7657[];
+extern const u8 gUnknown_81A7660[];
+extern const u8 gUnknown_81A7669[];
+extern const u8 gUnknown_81A7672[];
+extern const u8 gUnknown_81A767B[];
+extern const u8 gUnknown_81A7684[];
+extern const u8 gUnknown_81A768D[];
+extern const u8 gUnknown_81A7696[];
+extern const u8 gUnknown_81A769F[];
+extern const u8 gUnknown_81A76A8[];
+extern const u8 gUnknown_81A76B1[];
+extern const u8 gUnknown_81A76BA[];
+extern const u8 gUnknown_81A76C3[];
+extern const u8 gUnknown_81A76CC[];
+extern const u8 gUnknown_81A76D5[];
+extern const u8 CableClub_EventScript_81BBFD8[];
+extern const u8 EventScript_Questionnaire[];
+extern const u8 CableClub_EventScript_ShowBattleRecords[];
+extern const u8 gUnknown_81A76F0[];
+extern const u8 gUnknown_81A76F9[];
+extern const u8 gUnknown_81A76DE[];
+extern const u8 gUnknown_81A76E7[];
+extern const u8 EventScript_CurrentTooFast[];
+extern const u8 EventScript_UseSurf[];
+extern const u8 EventScript_Waterfall[];
+extern const u8 EventScript_CantUseWaterfall[];
+extern const u8 gUnknown_81A8CED[];
+extern const u8 EventScript_FieldPoison[];
+extern const u8 EventScript_EggHatch[];
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/vs_seeker.h b/include/vs_seeker.h
index 2d88417fa..d80e558ea 100644
--- a/include/vs_seeker.h
+++ b/include/vs_seeker.h
@@ -14,5 +14,6 @@ bool8 sub_810CF04(u8 a0);
u8 sub_810CF54();
void sub_810D0D0(void);
void sub_810CB90(void);
+bool8 sub_810C4EC(void);
#endif //GUARD_VS_SEEKER_H
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index 5d57ddd12..2749d4744 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -45,6 +45,6 @@ void DisableWildEncounters(bool8 state);
u8 GetUnownLetterByPersonalityLoByte(u32 personality);
bool8 SweetScentWildEncounter(void);
void SeedWildEncounterRng(u16 randVal);
-void ResetEncounterRateModifiers(void);
+void ResetEncounterRateModifiers(void);bool8 TryStandardWildEncounter(u32 currMetatileBehavior);
#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 1abbbcec6..df8a3ac45 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -974,7 +974,7 @@ const u8 *BattleSetup_GetScriptAddrAfterBattle(void)
if (sTrainerBattleEndScript != NULL)
return sTrainerBattleEndScript;
else
- return Test_EventScript_Sign;
+ return EventScript_TestSignpostMsg;
}
const u8 *BattleSetup_GetTrainerPostBattleScript(void)
@@ -982,7 +982,7 @@ const u8 *BattleSetup_GetTrainerPostBattleScript(void)
if (sTrainerABattleScriptRetAddr != NULL)
return sTrainerABattleScriptRetAddr;
else
- return Test_EventScript_Sign;
+ return EventScript_TestSignpostMsg;
}
void ShowTrainerCantBattleSpeech(void)
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index bf743d071..590589937 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -1,12 +1,14 @@
#include "global.h"
#include "gflib.h"
#include "bike.h"
+#include "daycare.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "event_scripts.h"
#include "fieldmap.h"
#include "field_control_avatar.h"
#include "field_player_avatar.h"
+#include "field_poison.h"
#include "field_specials.h"
#include "item_menu.h"
#include "link.h"
@@ -15,11 +17,16 @@
#include "overworld.h"
#include "renewable_hidden_items.h"
#include "quest_log.h"
+#include "safari_zone.h"
#include "script.h"
#include "start_menu.h"
#include "trainer_see.h"
+#include "vs_seeker.h"
+#include "wild_encounter.h"
#include "constants/songs.h"
+#include "constants/event_bg.h"
#include "constants/event_objects.h"
+#include "constants/maps.h"
void sub_806CA4C(struct FieldInput *input, u16 *newKeys, u16 *heldKeys);
bool8 sub_80699D4(void);
@@ -27,15 +34,24 @@ void sub_806CDF8(u8 taskId);
void GetPlayerPosition(struct MapPosition * position);
void GetInFrontOfPlayerPosition(struct MapPosition * position);
u16 GetPlayerCurMetatileBehavior(void);
-bool8 TryStartStepBasedScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
-bool8 TryArrowWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
-bool8 TryDoorWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
bool8 TryStartInteractionScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
const u8 *GetInteractionScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
const u8 *GetInteractedObjectEventScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
const u8 *GetInteractedBackgroundEventScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
+const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *, u16, u16, u8);
const u8 *GetInteractedMetatileScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
const u8 *GetInteractedWaterScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
+bool8 TryStartStepBasedScript(struct MapPosition * position, u16 metatileBehavior, u16 playerDirection);
+bool8 TryStartCoordEventScript(struct MapPosition * position);
+bool8 TryStartMiscWalkingScripts(u16 metatileBehavior);
+bool8 TryStartStepCountScript(u16 metatileBehavior);
+void UpdateHappinessStepCounter(void);
+bool8 UpdatePoisonStepCounter(void);
+u8 sub_806D898(u8 metatileBehvaior, u8 direction);
+const u8 *GetCoordEventScriptAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
+bool8 TryStartWarpEventScript(struct MapPosition * position, u16 metatileBehavior);
+bool8 TryArrowWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
+bool8 TryDoorWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
bool8 sub_806D804(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
bool8 CheckStandardWildEncounter(u32 encounter);
@@ -426,3 +442,286 @@ const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 metati
script = GetRamScript(gSpecialVar_LastTalked, script);
return script;
}
+
+const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
+{
+ u8 r2;
+ const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+
+ if (bgEvent == NULL)
+ return NULL;
+ if (bgEvent->bgUnion.script == NULL)
+ return EventScript_TestSignpostMsg;
+
+ r2 = sub_806D898(metatileBehavior, direction);
+
+ switch (bgEvent->kind)
+ {
+ case BG_EVENT_PLAYER_FACING_ANY:
+ default:
+ break;
+ case BG_EVENT_PLAYER_FACING_NORTH:
+ if (direction != DIR_NORTH)
+ return NULL;
+ break;
+ case BG_EVENT_PLAYER_FACING_SOUTH:
+ if (direction != DIR_SOUTH)
+ return NULL;
+ break;
+ case BG_EVENT_PLAYER_FACING_EAST:
+ if (direction != DIR_EAST)
+ return NULL;
+ break;
+ case BG_EVENT_PLAYER_FACING_WEST:
+ if (direction != DIR_WEST)
+ return NULL;
+ break;
+ case 5:
+ case 6:
+ case BG_EVENT_HIDDEN_ITEM:
+ if (GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_UNDERFOOT) == TRUE)
+ return NULL;
+ gSpecialVar_0x8005 = GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_ID);
+ gSpecialVar_0x8004 = GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_FLAG);
+ gSpecialVar_0x8006 = GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_QUANTITY);
+ if (FlagGet(gSpecialVar_0x8004) == TRUE)
+ return NULL;
+ gSpecialVar_Facing = direction;
+ return EventScript_HiddenItemScript;
+ }
+
+ if (r2 != 0xFF)
+ sub_8069A20();
+ gSpecialVar_Facing = direction;
+ return bgEvent->bgUnion.script;
+}
+
+const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
+{
+ gSpecialVar_Facing = direction;
+ if (MetatileBehavior_IsPC(metatileBehavior) == TRUE)
+ return EventScript_PC;
+ if (MetatileBehavior_IsRegionMap(metatileBehavior) == TRUE)
+ return EventScript_WallTownMap;
+ if (MetatileBehavior_IsBookshelf(metatileBehavior) == TRUE)
+ return gUnknown_81A7606;
+ if (MetatileBehavior_IsPokeMartShelf(metatileBehavior) == TRUE)
+ return gUnknown_81A760F;
+ if (MetatileBehavior_IsFood(metatileBehavior) == TRUE)
+ return gUnknown_81A7618;
+ if (MetatileBehavior_IsImpressiveMachine(metatileBehavior) == TRUE)
+ return gUnknown_81A7633;
+ if (MetatileBehavior_IsBlueprints(metatileBehavior) == TRUE)
+ return gUnknown_81A763C;
+ if (MetatileBehavior_IsVideoGame(metatileBehavior) == TRUE)
+ return gUnknown_81A7621;
+ if (MetatileBehavior_IsBurglary(metatileBehavior) == TRUE)
+ return gUnknown_81A7645;
+ if (MetatileBehavior_IsComputer(metatileBehavior) == TRUE)
+ return gUnknown_81A762A;
+ if (MetatileBehavior_IsMBA3(metatileBehavior) == TRUE)
+ return TrainerTower_EventScript_ShowTime;
+ if (MetatileBehavior_IsPlayerFacingTVScreen(metatileBehavior, direction) == TRUE)
+ return gUnknown_81A764E;
+ if (MetatileBehavior_IsCabinet(metatileBehavior) == TRUE)
+ return gUnknown_81A7657;
+ if (MetatileBehavior_IsKitchen(metatileBehavior) == TRUE)
+ return gUnknown_81A7660;
+ if (MetatileBehavior_IsDresser(metatileBehavior) == TRUE)
+ return gUnknown_81A7669;
+ if (MetatileBehavior_IsSnacks(metatileBehavior) == TRUE)
+ return gUnknown_81A7672;
+ if (MetatileBehavior_IsPainting(metatileBehavior) == TRUE)
+ return gUnknown_81A767B;
+ if (MetatileBehavior_IsPowerPlantMachine(metatileBehavior) == TRUE)
+ return gUnknown_81A7684;
+ if (MetatileBehavior_IsTelephone(metatileBehavior) == TRUE)
+ return gUnknown_81A768D;
+ if (MetatileBehavior_IsAdvertisingPoster(metatileBehavior) == TRUE)
+ return gUnknown_81A7696;
+ if (MetatileBehavior_IsTastyFood(metatileBehavior) == TRUE)
+ return gUnknown_81A769F;
+ if (MetatileBehavior_IsTrashBin(metatileBehavior) == TRUE)
+ return gUnknown_81A76A8;
+ if (MetatileBehavior_IsCup(metatileBehavior) == TRUE)
+ return gUnknown_81A76B1;
+ if (MetatileBehavior_ReturnFalse_19(metatileBehavior) == TRUE)
+ return gUnknown_81A76BA;
+ if (MetatileBehavior_ReturnFalse_20(metatileBehavior) == TRUE)
+ return gUnknown_81A76C3;
+ if (MetatileBehavior_IsBlinkingLights(metatileBehavior) == TRUE)
+ return gUnknown_81A76CC;
+ if (MetatileBehavior_IsMB9F(metatileBehavior) == TRUE)
+ return gUnknown_81A76D5;
+ if (MetatileBehavior_IsPlayerFacingMB_8D(metatileBehavior, direction) == TRUE)
+ return CableClub_EventScript_81BBFD8;
+ if (MetatileBehavior_IsQuestionnaire(metatileBehavior) == TRUE)
+ return EventScript_Questionnaire;
+ if (MetatileBehavior_IsPlayerFacingBattleRecords(metatileBehavior, direction) == TRUE)
+ return CableClub_EventScript_ShowBattleRecords;
+ if (MetatileBehavior_IsIndigoPlateauMark(metatileBehavior) == TRUE)
+ {
+ sub_8069A20();
+ return gUnknown_81A76F0;
+ }
+ if (MetatileBehavior_IsIndigoPlateauMark2(metatileBehavior) == TRUE)
+ {
+ sub_8069A20();
+ return gUnknown_81A76F9;
+ }
+ if (MetatileBehavior_IsPlayerFacingPokeMartSign(metatileBehavior, direction) == TRUE)
+ {
+ sub_8069A20();
+ return gUnknown_81A76DE;
+ }
+ if (MetatileBehavior_IsPlayerFacingPokemonCenterSign(metatileBehavior, direction) == TRUE)
+ {
+ sub_8069A20();
+ return gUnknown_81A76E7;
+ }
+ return NULL;
+}
+
+const u8 *GetInteractedWaterScript(struct MapPosition *unused1, u8 metatileBehavior, u8 direction)
+{
+ if (MetatileBehavior_IsSemiDeepWater(metatileBehavior) == TRUE &&PartyHasMonWithSurf() == TRUE)
+ return EventScript_CurrentTooFast;
+ if (FlagGet(FLAG_BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
+ return EventScript_UseSurf;
+
+ if (MetatileBehavior_IsWaterfall(metatileBehavior) == TRUE)
+ {
+ if (FlagGet(FLAG_BADGE07_GET) == TRUE && IsPlayerSurfingNorth() == TRUE)
+ return EventScript_Waterfall;
+ else
+ return EventScript_CantUseWaterfall;
+ }
+ return NULL;
+}
+
+bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileBehavior, u16 direction)
+{
+ if (TryStartCoordEventScript(position) == TRUE)
+ return TRUE;
+ if (TryStartWarpEventScript(position, metatileBehavior) == TRUE)
+ return TRUE;
+ if (TryStartMiscWalkingScripts(metatileBehavior) == TRUE)
+ return TRUE;
+ if (TryStartStepCountScript(metatileBehavior) == TRUE)
+ return TRUE;
+ if (!(gPlayerAvatar.flags & 0x40) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior) && UpdateRepelCounter() == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 TryStartCoordEventScript(struct MapPosition *position)
+{
+ const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+
+ if (script == NULL)
+ return FALSE;
+ ScriptContext1_SetupScript(script);
+ return TRUE;
+}
+
+bool8 TryStartMiscWalkingScripts(u16 metatileBehavior)
+{
+ // Dummied
+ return FALSE;
+}
+
+bool8 TryStartStepCountScript(u16 metatileBehavior)
+{
+ if (InUnionRoom() == TRUE)
+ return FALSE;
+ if (gQuestLogState == QL_STATE_2)
+ return FALSE;
+
+ UpdateHappinessStepCounter();
+
+ if (!(gPlayerAvatar.flags & 0x40) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
+ {
+ if (sub_810C4EC() == TRUE)
+ {
+ ScriptContext1_SetupScript(gUnknown_81A8CED);
+ return TRUE;
+ }
+ else if (UpdatePoisonStepCounter() == TRUE)
+ {
+ ScriptContext1_SetupScript(EventScript_FieldPoison);
+ return TRUE;
+ }
+ else if (ShouldEggHatch())
+ {
+ IncrementGameStat(GAME_STAT_HATCHED_EGGS);
+ ScriptContext1_SetupScript(EventScript_EggHatch);
+ return TRUE;
+ }
+ }
+ if (SafariZoneTakeStep() == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+void Unref_ClearHappinessStepCounter(void)
+{
+ VarSet(VAR_HAPPINESS_STEP_COUNTER, 0);
+}
+
+void UpdateHappinessStepCounter(void)
+{
+ u16 *ptr = GetVarPointer(VAR_HAPPINESS_STEP_COUNTER);
+ int i;
+
+ (*ptr)++;
+ (*ptr) %= 128;
+ if (*ptr == 0)
+ {
+ struct Pokemon *mon = gPlayerParty;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ AdjustFriendship(mon, FRIENDSHIP_EVENT_WALKING);
+ mon++;
+ }
+ }
+}
+
+void ClearPoisonStepCounter(void)
+{
+ VarSet(VAR_POISON_STEP_COUNTER, 0);
+}
+
+bool8 UpdatePoisonStepCounter(void)
+{
+ u16 *ptr;
+
+ if (gMapHeader.mapType != MAP_TYPE_SECRET_BASE)
+ {
+ ptr = GetVarPointer(VAR_POISON_STEP_COUNTER);
+ (*ptr)++;
+ (*ptr) %= 5;
+ if (*ptr == 0)
+ {
+ switch (DoPoisonFieldEffect())
+ {
+ case FLDPSN_NONE:
+ return FALSE;
+ case FLDPSN_PSN:
+ return FALSE;
+ case FLDPSN_FNT:
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+void RestartWildEncounterImmunitySteps(void)
+{
+ ResetEncounterRateModifiers();
+}
+
+bool8 CheckStandardWildEncounter(u32 encounter)
+{
+ return TryStandardWildEncounter(encounter);
+}