diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-17 22:08:02 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-17 22:08:02 -0400 |
commit | ba7e4acfeee5bdda18113586fde37b19429c3715 (patch) | |
tree | 34a9bcc6ea830aedaefed91a60473c1567329e17 | |
parent | 901fceec188ff640f32b22343e5a0b6e7e4c9c42 (diff) |
through CheckStandardWildEncounter
-rw-r--r-- | asm/field_control_avatar.s | 922 | ||||
-rw-r--r-- | data/scripts/obtain_item.inc | 2 | ||||
-rw-r--r-- | data/scripts/test.inc | 2 | ||||
-rw-r--r-- | include/constants/event_bg.h | 2 | ||||
-rw-r--r-- | include/constants/vars.h | 8 | ||||
-rw-r--r-- | include/daycare.h | 1 | ||||
-rw-r--r-- | include/event_scripts.h | 44 | ||||
-rw-r--r-- | include/vs_seeker.h | 1 | ||||
-rw-r--r-- | include/wild_encounter.h | 2 | ||||
-rw-r--r-- | src/battle_setup.c | 4 | ||||
-rw-r--r-- | src/field_control_avatar.c | 305 |
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); +} |