diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-10-31 21:05:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-31 21:05:45 -0400 |
commit | 193c12d401ac5b1016d77e60c36e8d9960af9d82 (patch) | |
tree | 83da7d0c549974e392aa3eb897fb038e889fbd20 | |
parent | c6cd74fed25cbb6e2fa0296960fbcda795311b06 (diff) | |
parent | f0a7ee8d16f40707fbec80d7224f410ae455c071 (diff) |
Merge pull request #137 from PikalaxALT/split_835b488
Split 835b488
30 files changed, 13904 insertions, 1911 deletions
diff --git a/.gitignore b/.gitignore index 176611d4a..67e416fd7 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ sound/**/*.bin sound/songs/midi/*.s src/*.s src/data/items.h +src/data/wild_encounters.h tags tools/agbcc tools/binutils @@ -45,6 +45,7 @@ ELF = $(ROM:.gba=.elf) MAP = $(ROM:.gba=.map) C_SUBDIR = src +DATA_C_SUBDIR = src/data ASM_SUBDIR = asm DATA_ASM_SUBDIR = data SONG_SUBDIR = sound/songs diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 46587dc52..dd84f75c1 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1725,7 +1725,7 @@ sub_806D5E8: @ 806D5E8 lsls r0, 24 cmp r0, 0 bne _0806D658 - bl sub_80830B8 + bl UpdateRepelCounter lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1956,7 +1956,7 @@ _0806D7E2: thumb_func_start RestartWildEncounterImmunitySteps RestartWildEncounterImmunitySteps: @ 806D7E8 push {lr} - bl sub_80832D4 + bl ResetEncounterRateModifiers pop {r0} bx r0 thumb_func_end RestartWildEncounterImmunitySteps @@ -1964,7 +1964,7 @@ RestartWildEncounterImmunitySteps: @ 806D7E8 thumb_func_start is_it_battle_time_3 is_it_battle_time_3: @ 806D7F4 push {lr} - bl sub_80833B0 + bl TryStandardWildEncounter lsls r0, 24 lsrs r0, 24 pop {r1} diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index 5e7f64670..f6b50bdc6 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -4481,7 +4481,7 @@ sub_805D508: @ 805D508 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] - bl sub_8082F78 + bl DoesCurrentMapHaveFishingMons lsls r0, 24 cmp r0, 0 beq _0805D53A @@ -4791,7 +4791,7 @@ _0805D788: ldrh r0, [r5, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8082FB0 + bl FishingWildEncounter ldr r0, _0805D7BC @ =sub_805D304 bl FindTaskIdByFunc lsls r0, 24 diff --git a/asm/trainer_see.s b/asm/trainer_see.s index 659e96c32..a2210173a 100644 --- a/asm/trainer_see.s +++ b/asm/trainer_see.s @@ -198,8 +198,8 @@ _08081C8C: _08081C98: .4byte gUnknown_83C7248 thumb_func_end sub_8081BEC - thumb_func_start sub_8081C9C -sub_8081C9C: @ 8081C9C + thumb_func_start IsTrainerInRangeSouth +IsTrainerInRangeSouth: @ 8081C9C push {r4,r5,lr} adds r4, r0, 0 lsls r1, 16 @@ -242,7 +242,7 @@ _08081CE6: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_8081C9C + thumb_func_end IsTrainerInRangeSouth thumb_func_start IsTrainerInRangeNorth IsTrainerInRangeNorth: @ 8081CEC diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s deleted file mode 100644 index 86e3d964f..000000000 --- a/asm/wild_encounter.s +++ /dev/null @@ -1,1773 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8082740 -sub_8082740: @ 8082740 - ldr r1, _08082748 @ =gUnknown_20386DC - strb r0, [r1] - bx lr - .align 2, 0 -_08082748: .4byte gUnknown_20386DC - thumb_func_end sub_8082740 - - thumb_func_start ChooseWildMonIndex_Land -ChooseWildMonIndex_Land: @ 808274C - push {lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x13 - bhi _08082768 - movs r0, 0 - b _08082802 -_08082768: - adds r0, r1, 0 - subs r0, 0x14 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _08082778 - movs r0, 0x1 - b _08082802 -_08082778: - adds r0, r1, 0 - subs r0, 0x28 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _08082788 - movs r0, 0x2 - b _08082802 -_08082788: - adds r0, r1, 0 - subs r0, 0x32 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _08082798 - movs r0, 0x3 - b _08082802 -_08082798: - adds r0, r1, 0 - subs r0, 0x3C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _080827A8 - movs r0, 0x4 - b _08082802 -_080827A8: - adds r0, r1, 0 - subs r0, 0x46 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bhi _080827B8 - movs r0, 0x5 - b _08082802 -_080827B8: - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080827C8 - movs r0, 0x6 - b _08082802 -_080827C8: - adds r0, r1, 0 - subs r0, 0x55 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080827D8 - movs r0, 0x7 - b _08082802 -_080827D8: - adds r0, r1, 0 - subs r0, 0x5A - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080827E8 - movs r0, 0x8 - b _08082802 -_080827E8: - adds r0, r1, 0 - subs r0, 0x5E - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080827F8 - movs r0, 0x9 - b _08082802 -_080827F8: - cmp r1, 0x62 - beq _08082800 - movs r0, 0xB - b _08082802 -_08082800: - movs r0, 0xA -_08082802: - pop {r1} - bx r1 - thumb_func_end ChooseWildMonIndex_Land - - thumb_func_start ChooseWildMonIndex_WaterRock -ChooseWildMonIndex_WaterRock: @ 8082808 - push {lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - cmp r1, 0x3B - bhi _08082826 - movs r0, 0 - b _08082858 -_08082826: - adds r0, r1, 0 - subs r0, 0x3C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1D - bhi _08082836 - movs r0, 0x1 - b _08082858 -_08082836: - adds r0, r1, 0 - subs r0, 0x5A - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _08082846 - movs r0, 0x2 - b _08082858 -_08082846: - adds r0, r2, 0 - subs r0, 0x5F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08082856 - movs r0, 0x4 - b _08082858 -_08082856: - movs r0, 0x3 -_08082858: - pop {r1} - bx r1 - thumb_func_end ChooseWildMonIndex_WaterRock - - thumb_func_start ChooseWildMonIndex_Fishing -ChooseWildMonIndex_Fishing: @ 808285C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - movs r5, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r4, 0x1 - beq _08082896 - cmp r4, 0x1 - bgt _08082886 - cmp r4, 0 - beq _0808288C - b _080828F0 -_08082886: - cmp r6, 0x2 - beq _080828BA - b _080828F0 -_0808288C: - movs r5, 0x1 - cmp r1, 0x45 - bhi _080828F0 - movs r5, 0 - b _080828F0 -_08082896: - cmp r1, 0x3B - bhi _0808289C - movs r5, 0x2 -_0808289C: - adds r0, r1, 0 - subs r0, 0x3C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080828AA - movs r5, 0x3 -_080828AA: - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080828F0 - movs r5, 0x4 - b _080828F0 -_080828BA: - cmp r1, 0x27 - bhi _080828C0 - movs r5, 0x5 -_080828C0: - adds r0, r1, 0 - subs r0, 0x28 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x27 - bhi _080828CE - movs r5, 0x6 -_080828CE: - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE - bhi _080828DC - movs r5, 0x7 -_080828DC: - adds r0, r1, 0 - subs r0, 0x5F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080828EA - movs r5, 0x8 -_080828EA: - cmp r1, 0x63 - bne _080828F0 - movs r5, 0x9 -_080828F0: - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ChooseWildMonIndex_Fishing - - thumb_func_start ChooseWildMonLevel -ChooseWildMonLevel: @ 80828F8 - push {r4,r5,lr} - adds r4, r0, 0 - ldrb r0, [r4, 0x1] - ldrb r1, [r4] - cmp r0, r1 - bcc _08082908 - ldrb r5, [r4] - b _0808290C -_08082908: - ldrb r5, [r4, 0x1] - ldrb r0, [r4] -_0808290C: - subs r4, r0, r5 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 24 - lsrs r0, 24 - adds r0, r5, r0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ChooseWildMonLevel - - thumb_func_start sub_8082934 -sub_8082934: @ 8082934 - push {r4-r6,lr} - movs r4, 0 - ldr r0, _08082990 @ =gWildMonHeaders - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0xFF - beq _080829B4 - ldr r6, _08082994 @ =0x00007a01 -_08082944: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r5 - ldrb r1, [r3] - ldr r0, _08082998 @ =gSaveBlock1Ptr - ldr r2, [r0] - movs r0, 0x4 - ldrsb r0, [r2, r0] - cmp r1, r0 - bne _080829A0 - ldrb r1, [r3, 0x1] - movs r0, 0x5 - ldrsb r0, [r2, r0] - cmp r1, r0 - bne _080829A0 - ldrh r0, [r2, 0x4] - cmp r0, r6 - bne _08082980 - ldr r0, _0808299C @ =0x00004024 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bls _0808297A - movs r0, 0 -_0808297A: - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 -_08082980: - bl sub_80829C0 - lsls r0, 24 - cmp r0, 0 - beq _080829B4 - adds r0, r4, 0 - b _080829B6 - .align 2, 0 -_08082990: .4byte gWildMonHeaders -_08082994: .4byte 0x00007a01 -_08082998: .4byte gSaveBlock1Ptr -_0808299C: .4byte 0x00004024 -_080829A0: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08082944 -_080829B4: - ldr r0, _080829BC @ =0x0000ffff -_080829B6: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080829BC: .4byte 0x0000ffff - thumb_func_end sub_8082934 - - thumb_func_start sub_80829C0 -sub_80829C0: @ 80829C0 - push {lr} - ldr r0, _080829EC @ =0x00000849 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080829F4 - ldr r0, _080829F0 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080829F4 - ldrb r0, [r1, 0x5] - subs r0, 0x1B - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bhi _080829F4 - movs r0, 0 - b _080829F6 - .align 2, 0 -_080829EC: .4byte 0x00000849 -_080829F0: .4byte gSaveBlock1Ptr -_080829F4: - movs r0, 0x1 -_080829F6: - pop {r1} - bx r1 - thumb_func_end sub_80829C0 - - thumb_func_start sub_80829FC -sub_80829FC: @ 80829FC - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - bl ZeroEnemyPartyMons - cmp r4, 0xC9 - beq _08082A3C - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08082A38 @ =gEnemyParty - str r0, [sp] - adds r0, r1, 0 - adds r1, r4, 0 - adds r2, r6, 0 - movs r3, 0x20 - bl CreateMonWithNature - b _08082A74 - .align 2, 0 -_08082A38: .4byte gEnemyParty -_08082A3C: - ldr r0, _08082A7C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x5] - subs r1, 0x1B - ldr r2, _08082A80 @ =gUnknown_83CA71C - lsls r1, 24 - asrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5, r0 - adds r0, r2 - ldrb r0, [r0] - bl sub_8082A88 - ldr r2, _08082A84 @ =gEnemyParty - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - adds r0, r2, 0 - movs r1, 0xC9 - adds r2, r6, 0 - movs r3, 0x20 - bl CreateMon -_08082A74: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08082A7C: .4byte gSaveBlock1Ptr -_08082A80: .4byte gUnknown_83CA71C -_08082A84: .4byte gEnemyParty - thumb_func_end sub_80829FC - - thumb_func_start sub_8082A88 -sub_8082A88: @ 8082A88 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 -_08082A8E: - bl Random - adds r4, r0, 0 - bl Random - lsls r4, 16 - lsls r0, 16 - lsrs r0, 16 - orrs r4, r0 - adds r0, r4, 0 - bl GetUnownLetterByPersonalityLoByte - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bne _08082A8E - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8082A88 - - thumb_func_start GetUnownLetterByPersonalityLoByte -GetUnownLetterByPersonalityLoByte: @ 8082AB8 - push {lr} - adds r2, r0, 0 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetUnownLetterByPersonalityLoByte - - thumb_func_start sub_8082AEC -sub_8082AEC: @ 8082AEC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r1, 0 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - movs r6, 0 - cmp r1, 0x1 - beq _08082B1C - cmp r1, 0x1 - bgt _08082B10 - cmp r1, 0 - beq _08082B16 - b _08082B24 -_08082B10: - cmp r0, 0x2 - beq _08082B1C - b _08082B24 -_08082B16: - bl ChooseWildMonIndex_Land - b _08082B20 -_08082B1C: - bl ChooseWildMonIndex_WaterRock -_08082B20: - lsls r0, 24 - lsrs r6, r0, 24 -_08082B24: - lsls r4, r6, 2 - ldr r0, [r7, 0x4] - adds r0, r4 - bl ChooseWildMonLevel - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - cmp r0, 0x1 - bne _08082B48 - adds r0, r5, 0 - bl sub_808310C - lsls r0, 24 - cmp r0, 0 - bne _08082B48 - movs r0, 0 - b _08082B58 -_08082B48: - ldr r0, [r7, 0x4] - adds r0, r4, r0 - ldrh r0, [r0, 0x2] - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_80829FC - movs r0, 0x1 -_08082B58: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8082AEC - - thumb_func_start sub_8082B64 -sub_8082B64: @ 8082B64 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r0, r1, 24 - lsrs r0, 24 - bl ChooseWildMonIndex_Fishing - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, r4, 2 - ldr r0, [r6, 0x4] - adds r0, r5 - bl ChooseWildMonLevel - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, [r6, 0x4] - adds r0, r5, r0 - ldrh r0, [r0, 0x2] - adds r2, r4, 0 - bl sub_80829FC - ldr r0, [r6, 0x4] - adds r5, r0 - ldrh r0, [r5, 0x2] - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8082B64 - - thumb_func_start sub_8082BA0 -sub_8082BA0: @ 8082BA0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_808322C - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xC8 - lsls r1, 3 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcc _08082BC4 - movs r0, 0 - b _08082BC6 -_08082BC4: - movs r0, 0x1 -_08082BC6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8082BA0 - - thumb_func_start sub_8082BCC -sub_8082BCC: @ 8082BCC - push {r4,r5,lr} - sub sp, 0x4 - str r0, [sp] - lsls r1, 24 - lsrs r5, r1, 24 - lsls r0, 4 - str r0, [sp] - movs r0, 0x6 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08082BF6 - ldr r1, [sp] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - movs r1, 0x64 - bl __udivsi3 - str r0, [sp] -_08082BF6: - ldr r4, _08082C24 @ =gUnknown_20386D0 - ldrh r0, [r4, 0x6] - lsls r0, 4 - movs r1, 0xC8 - bl __divsi3 - ldr r1, [sp] - adds r1, r0 - str r1, [sp] - mov r0, sp - bl sub_8083174 - mov r0, sp - bl sub_80831D8 - cmp r5, 0 - bne _08082C34 - ldrb r0, [r4, 0x9] - cmp r0, 0x1 - beq _08082C28 - cmp r0, 0x2 - beq _08082C2E - b _08082C34 - .align 2, 0 -_08082C24: .4byte gUnknown_20386D0 -_08082C28: - ldr r0, [sp] - lsrs r0, 1 - b _08082C32 -_08082C2E: - ldr r0, [sp] - lsls r0, 1 -_08082C32: - str r0, [sp] -_08082C34: - ldr r0, [sp] - movs r1, 0xC8 - lsls r1, 3 - cmp r0, r1 - bls _08082C40 - str r1, [sp] -_08082C40: - ldr r0, [sp] - lsls r0, 16 - lsrs r0, 16 - bl sub_8082BA0 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8082BCC - - thumb_func_start sub_8082C58 -sub_8082C58: @ 8082C58 - push {r4,r5,lr} - ldr r5, _08082C90 @ =gUnknown_20386D0 - movs r0, 0 - strb r0, [r5, 0x9] - ldr r4, _08082C94 @ =gPlayerParty - adds r0, r4, 0 - movs r1, 0x6 - bl GetMonData - cmp r0, 0 - bne _08082C84 - adds r0, r4, 0 - bl GetMonAbility - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08082C82 - cmp r0, 0x23 - bne _08082C84 - movs r0, 0x2 -_08082C82: - strb r0, [r5, 0x9] -_08082C84: - ldr r0, _08082C90 @ =gUnknown_20386D0 - ldrb r0, [r0, 0x9] - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08082C90: .4byte gUnknown_20386D0 -_08082C94: .4byte gPlayerParty - thumb_func_end sub_8082C58 - - thumb_func_start sub_8082C98 -sub_8082C98: @ 8082C98 - push {lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3B - bhi _08082CB4 - movs r0, 0x1 - b _08082CB6 -_08082CB4: - movs r0, 0 -_08082CB6: - pop {r1} - bx r1 - thumb_func_end sub_8082C98 - - thumb_func_start sub_8082CBC -sub_8082CBC: @ 8082CBC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 16 - lsrs r7, r1, 16 - mov r8, r7 - ldr r0, _08082D44 @ =gUnknown_20386DC - ldrb r0, [r0] - cmp r0, 0x1 - bne _08082CD4 - b _08082E46 -_08082CD4: - bl sub_8082934 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _08082D48 @ =0x0000ffff - cmp r4, r0 - bne _08082CE4 - b _08082E46 -_08082CE4: - adds r0, r6, 0 - movs r1, 0x4 - bl sub_8058F1C - cmp r0, 0x1 - bne _08082D78 - ldr r1, _08082D4C @ =gWildMonHeaders - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - adds r5, r2, 0 - cmp r0, 0 - bne _08082D06 - b _08082E46 -_08082D06: - adds r0, r6, 0 - movs r1, 0 - bl sub_8058F1C - cmp r7, r0 - beq _08082D1E - bl sub_8082C98 - lsls r0, 24 - cmp r0, 0 - bne _08082D1E - b _08082E46 -_08082D1E: - ldr r1, _08082D4C @ =gWildMonHeaders - adds r0, r5, r4 - lsls r0, 2 - adds r1, 0x4 - adds r4, r0, r1 - ldr r0, [r4] - ldrb r0, [r0] - movs r1, 0 - bl sub_8082BCC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08082D50 -_08082D3A: - ldr r0, [r4] - ldrb r0, [r0] - bl sub_8083410 - b _08082E46 - .align 2, 0 -_08082D44: .4byte gUnknown_20386DC -_08082D48: .4byte 0x0000ffff -_08082D4C: .4byte gWildMonHeaders -_08082D50: - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08082DFA - ldr r4, [r4] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_8082AEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08082E38 - ldrb r0, [r4] - bl sub_8083410 - b _08082E46 -_08082D78: - adds r0, r6, 0 - movs r1, 0x4 - bl sub_8058F1C - cmp r0, 0x2 - beq _08082DA8 - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08082E46 - adds r0, r6, 0 - movs r1, 0 - bl sub_8058F1C - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsBridge - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08082E46 -_08082DA8: - ldr r1, _08082E18 @ =gWildMonHeaders - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 2 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - adds r5, r2, 0 - cmp r0, 0 - beq _08082E46 - adds r0, r6, 0 - movs r1, 0 - bl sub_8058F1C - cmp r8, r0 - beq _08082DD2 - bl sub_8082C98 - lsls r0, 24 - cmp r0, 0 - beq _08082E46 -_08082DD2: - ldr r1, _08082E18 @ =gWildMonHeaders - adds r0, r5, r4 - lsls r0, 2 - adds r1, 0x8 - adds r4, r0, r1 - ldr r0, [r4] - ldrb r0, [r0] - movs r1, 0 - bl sub_8082BCC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08082D3A - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08082E24 -_08082DFA: - ldr r0, _08082E1C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08082E20 @ =0x000030d0 - adds r0, r1 - ldrb r0, [r0, 0xC] - bl sub_808310C - lsls r0, 24 - cmp r0, 0 - beq _08082E46 - bl BattleSetup_StartRoamerBattle - movs r0, 0x1 - b _08082E48 - .align 2, 0 -_08082E18: .4byte gWildMonHeaders -_08082E1C: .4byte gSaveBlock1Ptr -_08082E20: .4byte 0x000030d0 -_08082E24: - ldr r4, [r4] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_8082AEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08082E40 -_08082E38: - bl BattleSetup_StartWildBattle - movs r0, 0x1 - b _08082E48 -_08082E40: - ldrb r0, [r4] - bl sub_8083410 -_08082E46: - movs r0, 0 -_08082E48: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8082CBC - - thumb_func_start Special_RockSmashEncounter -Special_RockSmashEncounter: @ 8082E54 - push {r4,lr} - bl sub_8082934 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _08082EA4 @ =0x0000ffff - cmp r2, r0 - beq _08082EB0 - ldr r1, _08082EA8 @ =gWildMonHeaders - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r1, 0xC - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - beq _08082E9C - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8082BCC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08082EB0 - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0x1 - bl sub_8082AEC - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _08082EB0 - bl BattleSetup_StartWildBattle -_08082E9C: - ldr r0, _08082EAC @ =gSpecialVar_Result - strh r4, [r0] - b _08082EB6 - .align 2, 0 -_08082EA4: .4byte 0x0000ffff -_08082EA8: .4byte gWildMonHeaders -_08082EAC: .4byte gSpecialVar_Result -_08082EB0: - ldr r1, _08082EBC @ =gSpecialVar_Result - movs r0, 0 - strh r0, [r1] -_08082EB6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08082EBC: .4byte gSpecialVar_Result - thumb_func_end Special_RockSmashEncounter - - thumb_func_start SweetScentWildEncounter -SweetScentWildEncounter: @ 8082EC0 - push {r4,r5,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - bl sub_8082934 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _08082F14 @ =0x0000ffff - cmp r5, r0 - beq _08082F6C - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r2, 0x4 - bl sub_8058F48 - cmp r0, 0x1 - bne _08082F1C - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08082F3C - ldr r1, _08082F18 @ =gWildMonHeaders - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _08082F6C - movs r1, 0 - b _08082F58 - .align 2, 0 -_08082F14: .4byte 0x0000ffff -_08082F18: .4byte gWildMonHeaders -_08082F1C: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r2, 0x4 - bl sub_8058F48 - cmp r0, 0x2 - bne _08082F6C - bl TryStartRoamerEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08082F44 -_08082F3C: - bl BattleSetup_StartRoamerBattle - movs r0, 0x1 - b _08082F6E -_08082F44: - ldr r1, _08082F68 @ =gWildMonHeaders - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 2 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _08082F6C - movs r1, 0x1 -_08082F58: - movs r2, 0 - bl sub_8082AEC - bl BattleSetup_StartWildBattle - movs r0, 0x1 - b _08082F6E - .align 2, 0 -_08082F68: .4byte gWildMonHeaders -_08082F6C: - movs r0, 0 -_08082F6E: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end SweetScentWildEncounter - - thumb_func_start sub_8082F78 -sub_8082F78: @ 8082F78 - push {lr} - bl sub_8082934 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _08082FA0 @ =0x0000ffff - cmp r2, r0 - beq _08082FA8 - ldr r0, _08082FA4 @ =gWildMonHeaders - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x10 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - beq _08082FA8 - movs r0, 0x1 - b _08082FAA - .align 2, 0 -_08082FA0: .4byte 0x0000ffff -_08082FA4: .4byte gWildMonHeaders -_08082FA8: - movs r0, 0 -_08082FAA: - pop {r1} - bx r1 - thumb_func_end sub_8082F78 - - thumb_func_start sub_8082FB0 -sub_8082FB0: @ 8082FB0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _08082FE4 @ =gWildMonHeaders - bl sub_8082934 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r4, 0x10 - adds r1, r4 - ldr r0, [r1] - adds r1, r5, 0 - bl sub_8082B64 - movs r0, 0xC - bl IncrementGameStat - bl BattleSetup_StartWildBattle - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08082FE4: .4byte gWildMonHeaders - thumb_func_end sub_8082FB0 - - thumb_func_start GetLocalWildMon -GetLocalWildMon: @ 8082FE8 - push {r4-r6,lr} - adds r6, r0, 0 - movs r0, 0 - strb r0, [r6] - bl sub_8082934 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _08083020 @ =0x0000ffff - cmp r3, r0 - beq _0808301A - ldr r2, _08083024 @ =gWildMonHeaders - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldr r5, [r0] - adds r2, 0x8 - adds r1, r2 - ldr r4, [r1] - cmp r5, 0 - bne _08083028 - cmp r4, 0 - bne _0808302E -_0808301A: - movs r0, 0 - b _0808306E - .align 2, 0 -_08083020: .4byte 0x0000ffff -_08083024: .4byte gWildMonHeaders -_08083028: - cmp r4, 0 - bne _0808303C - b _08083060 -_0808302E: - movs r0, 0x1 - strb r0, [r6] - bl ChooseWildMonIndex_WaterRock - lsls r0, 24 - ldr r1, [r4, 0x4] - b _08083068 -_0808303C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4F - bls _08083060 - movs r0, 0x1 - strb r0, [r6] - bl ChooseWildMonIndex_WaterRock - lsls r0, 24 - ldr r1, [r4, 0x4] - b _08083068 -_08083060: - bl ChooseWildMonIndex_Land - lsls r0, 24 - ldr r1, [r5, 0x4] -_08083068: - lsrs r0, 22 - adds r0, r1 - ldrh r0, [r0, 0x2] -_0808306E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetLocalWildMon - - thumb_func_start GetLocalWaterMon -GetLocalWaterMon: @ 8083074 - push {r4,lr} - bl sub_8082934 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _080830A8 @ =0x0000ffff - cmp r2, r0 - beq _080830B0 - ldr r1, _080830AC @ =gWildMonHeaders - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - beq _080830B0 - bl ChooseWildMonIndex_WaterRock - lsls r0, 24 - ldr r1, [r4, 0x4] - lsrs r0, 22 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080830B2 - .align 2, 0 -_080830A8: .4byte 0x0000ffff -_080830AC: .4byte gWildMonHeaders -_080830B0: - movs r0, 0 -_080830B2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetLocalWaterMon - - thumb_func_start sub_80830B8 -sub_80830B8: @ 80830B8 - push {r4,r5,lr} - bl InUnionRoom - cmp r0, 0x1 - beq _08083104 - ldr r0, _080830F8 @ =gUnknown_203ADFA - ldrb r0, [r0] - cmp r0, 0x2 - beq _08083104 - ldr r5, _080830FC @ =0x00004020 - adds r0, r5, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08083104 - subs r4, r0, 0x1 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl VarSet - cmp r4, 0 - bne _08083104 - ldr r0, _08083100 @ =EventScript_1BFB65 - bl ScriptContext1_SetupScript - movs r0, 0x1 - b _08083106 - .align 2, 0 -_080830F8: .4byte gUnknown_203ADFA -_080830FC: .4byte 0x00004020 -_08083100: .4byte EventScript_1BFB65 -_08083104: - movs r0, 0 -_08083106: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80830B8 - - thumb_func_start sub_808310C -sub_808310C: @ 808310C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08083158 @ =0x00004020 - bl VarGet - lsls r0, 16 - cmp r0, 0 - beq _08083152 - movs r5, 0 -_08083120: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0808315C @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08083160 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08083160 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bcc _0808316A -_08083152: - movs r0, 0x1 - b _0808316C - .align 2, 0 -_08083158: .4byte 0x00004020 -_0808315C: .4byte gPlayerParty -_08083160: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08083120 -_0808316A: - movs r0, 0 -_0808316C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_808310C - - thumb_func_start sub_8083174 -sub_8083174: @ 8083174 - push {r4,lr} - adds r4, r0, 0 - bl sub_80831A0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0808318A - cmp r0, 0x2 - beq _08083192 - b _08083198 -_0808318A: - ldr r0, [r4] - lsrs r1, r0, 1 - adds r0, r1 - b _08083196 -_08083192: - ldr r0, [r4] - lsrs r0, 1 -_08083196: - str r0, [r4] -_08083198: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8083174 - - thumb_func_start sub_80831A0 -sub_80831A0: @ 80831A0 - push {lr} - ldr r0, _080831B4 @ =0x00000803 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080831B8 - movs r0, 0x1 - b _080831D2 - .align 2, 0 -_080831B4: .4byte 0x00000803 -_080831B8: - ldr r0, _080831CC @ =0x00000804 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080831D0 - movs r0, 0 - b _080831D2 - .align 2, 0 -_080831CC: .4byte 0x00000804 -_080831D0: - movs r0, 0x2 -_080831D2: - pop {r1} - bx r1 - thumb_func_end sub_80831A0 - - thumb_func_start sub_80831D8 -sub_80831D8: @ 80831D8 - push {r4,lr} - adds r4, r0, 0 - bl sub_80831F8 - lsls r0, 24 - cmp r0, 0 - beq _080831F2 - ldr r0, [r4] - lsls r0, 1 - movs r1, 0x3 - bl __udivsi3 - str r0, [r4] -_080831F2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80831D8 - - thumb_func_start sub_80831F8 -sub_80831F8: @ 80831F8 - push {lr} - ldr r0, _08083208 @ =gUnknown_20386D0 - ldrh r0, [r0, 0xA] - cmp r0, 0xBE - beq _0808320C - movs r0, 0 - b _0808320E - .align 2, 0 -_08083208: .4byte gUnknown_20386D0 -_0808320C: - movs r0, 0x1 -_0808320E: - pop {r1} - bx r1 - thumb_func_end sub_80831F8 - - thumb_func_start sub_8083214 -sub_8083214: @ 8083214 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08083228 @ =gUnknown_20386D0 - str r0, [r1] - bl sub_80832D4 - pop {r0} - bx r0 - .align 2, 0 -_08083228: .4byte gUnknown_20386D0 - thumb_func_end sub_8083214 - - thumb_func_start sub_808322C -sub_808322C: @ 808322C - ldr r2, _08083240 @ =gUnknown_20386D0 - ldr r1, [r2] - ldr r0, _08083244 @ =0x41c64e6d - muls r0, r1 - ldr r1, _08083248 @ =0x00003039 - adds r0, r1 - str r0, [r2] - lsrs r0, 16 - bx lr - .align 2, 0 -_08083240: .4byte gUnknown_20386D0 -_08083244: .4byte 0x41c64e6d -_08083248: .4byte 0x00003039 - thumb_func_end sub_808322C - - thumb_func_start sub_808324C -sub_808324C: @ 808324C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl sub_8082934 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _08083284 @ =0x0000ffff - cmp r2, r0 - beq _080832CC - cmp r4, 0x1 - bne _0808328C - ldr r1, _08083288 @ =gWildMonHeaders - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080832CC - ldrb r1, [r0] - cmp r1, 0x4F - bhi _080832A8 - cmp r1, 0x9 - bls _080832B4 - b _080832B8 - .align 2, 0 -_08083284: .4byte 0x0000ffff -_08083288: .4byte gWildMonHeaders -_0808328C: - cmp r5, 0x2 - bne _080832CC - ldr r1, _080832AC @ =gWildMonHeaders - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080832CC - ldrb r1, [r0] - cmp r1, 0x4F - bls _080832B0 -_080832A8: - movs r0, 0 - b _080832CE - .align 2, 0 -_080832AC: .4byte gWildMonHeaders -_080832B0: - cmp r1, 0x9 - bhi _080832B8 -_080832B4: - movs r0, 0x8 - b _080832CE -_080832B8: - ldrb r0, [r0] - movs r1, 0xA - bl __udivsi3 - adds r1, r0, 0 - movs r0, 0x8 - subs r0, r1 - lsls r0, 24 - lsrs r0, 24 - b _080832CE -_080832CC: - movs r0, 0xFF -_080832CE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_808324C - - thumb_func_start sub_80832D4 -sub_80832D4: @ 80832D4 - ldr r0, _080832E0 @ =gUnknown_20386D0 - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x6] - strb r2, [r0, 0x8] - bx lr - .align 2, 0 -_080832E0: .4byte gUnknown_20386D0 - thumb_func_end sub_80832D4 - - thumb_func_start sub_80832E4 -sub_80832E4: @ 80832E4 - push {r4,r5,lr} - movs r1, 0x4 - bl sub_8058F1C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080833A0 - bl sub_808324C - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - beq _080833A0 - lsls r4, 8 - movs r5, 0xA0 - lsls r5, 3 - bl sub_80831A0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08083318 - cmp r0, 0x2 - beq _08083326 - b _0808332A -_08083318: - lsrs r0, r4, 1 - subs r4, r0 - lsrs r0, r5, 1 - movs r1, 0xA0 - lsls r1, 3 - adds r5, r0, r1 - b _0808332A -_08083326: - lsls r4, 1 - lsrs r5, 1 -_0808332A: - ldr r0, _08083368 @ =gPlayerParty - movs r1, 0xC - bl GetMonData - ldr r1, _0808336C @ =gUnknown_20386D0 - strh r0, [r1, 0xA] - bl sub_80831F8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08083356 - adds r0, r4, 0 - movs r1, 0x3 - bl __udivsi3 - adds r4, r0 - adds r0, r5, 0 - movs r1, 0x3 - bl __udivsi3 - subs r5, r0 -_08083356: - bl sub_8082C58 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08083370 - cmp r0, 0x2 - beq _08083376 - b _0808337A - .align 2, 0 -_08083368: .4byte gPlayerParty -_0808336C: .4byte gUnknown_20386D0 -_08083370: - lsls r4, 1 - lsrs r5, 1 - b _0808337A -_08083376: - lsrs r4, 1 - lsls r5, 1 -_0808337A: - lsrs r4, 8 - lsrs r5, 8 - ldr r1, _080833A4 @ =gUnknown_20386D0 - ldrb r0, [r1, 0x8] - cmp r0, r4 - bcs _080833A8 - adds r0, 0x1 - strb r0, [r1, 0x8] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080833A8 -_080833A0: - movs r0, 0 - b _080833AA - .align 2, 0 -_080833A4: .4byte gUnknown_20386D0 -_080833A8: - movs r0, 0x1 -_080833AA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80832E4 - - thumb_func_start sub_80833B0 -sub_80833B0: @ 80833B0 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_80832E4 - lsls r0, 24 - cmp r0, 0 - bne _080833D4 - adds r0, r4, 0 - movs r1, 0 - bl sub_8058F1C - ldr r1, _080833D0 @ =gUnknown_20386D0 - strh r0, [r1, 0x4] - movs r0, 0 - b _0808340A - .align 2, 0 -_080833D0: .4byte gUnknown_20386D0 -_080833D4: - ldr r5, _080833F4 @ =gUnknown_20386D0 - ldrh r1, [r5, 0x4] - adds r0, r4, 0 - bl sub_8082CBC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080833F8 - adds r0, r4, 0 - movs r1, 0 - bl sub_8058F1C - strh r0, [r5, 0x4] - movs r0, 0 - b _0808340A - .align 2, 0 -_080833F4: .4byte gUnknown_20386D0 -_080833F8: - movs r0, 0 - movs r1, 0 - strh r1, [r5, 0x6] - strb r0, [r5, 0x8] - adds r0, r4, 0 - bl sub_8058F1C - strh r0, [r5, 0x4] - movs r0, 0x1 -_0808340A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80833B0 - - thumb_func_start sub_8083410 -sub_8083410: @ 8083410 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808342C @ =0x00004020 - bl VarGet - lsls r0, 16 - cmp r0, 0 - bne _08083434 - ldr r1, _08083430 @ =gUnknown_20386D0 - ldrh r0, [r1, 0x6] - adds r0, r4 - b _08083438 - .align 2, 0 -_0808342C: .4byte 0x00004020 -_08083430: .4byte gUnknown_20386D0 -_08083434: - ldr r1, _08083440 @ =gUnknown_20386D0 - movs r0, 0 -_08083438: - strh r0, [r1, 0x6] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08083440: .4byte gUnknown_20386D0 - thumb_func_end sub_8083410 - - .align 2, 0 @ Don't pad with nop. diff --git a/baserom.ips b/baserom.ips Binary files differindex 5fc13b159..a73fe2991 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/data/cable_club.s b/data/cable_club.s new file mode 100644 index 000000000..8ea8b9167 --- /dev/null +++ b/data/cable_club.s @@ -0,0 +1,15 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 + +gUnknown_83C6AB0:: @ 83C6AB0 + .byte 0, 16, 11, 11, 2, 15 + .2byte 0x125 + +gUnknown_83C6AB8:: @ 83C6AB8 + .4byte gUnknown_841DF8B + .4byte gUnknown_841DF92 + .4byte gUnknown_841DF99 + .4byte gUnknown_841DFA0 diff --git a/data/data_835B488.s b/data/data_835B488.s index 88c12b035..623c252c6 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -1,43 +1,12 @@ +#include "constants/maps.h" +#include "constants/species.h" .include "asm/macros.inc" .include "constants/constants.inc" .section .rodata .align 2 -gUnknown_83C68E0:: @ 83C68E0 - .incbin "baserom.gba", 0x3C68E0, 0x4 - -gUnknown_83C68E4:: @ 83C68E4 - .incbin "baserom.gba", 0x3C68E4, 0x8 - -gUnknown_83C68EC:: @ 83C68EC - .incbin "baserom.gba", 0x3C68EC, 0x4 - - .section .rodata.83C6AB0 - -gUnknown_83C6AB0:: @ 83C6AB0 - .incbin "baserom.gba", 0x3C6AB0, 0x8 - -gUnknown_83C6AB8:: @ 83C6AB8 - .incbin "baserom.gba", 0x3C6AB8, 0x790 - -gUnknown_83C7248:: @ 83C7248 - .incbin "baserom.gba", 0x3C7248, 0x10 - -gUnknown_83C7258:: @ 83C7258 - .incbin "baserom.gba", 0x3C7258, 0x3C - -gUnknown_83C7294:: @ 83C7294 - .incbin "baserom.gba", 0x3C7294, 0xF4 - -gUnknown_83C7388:: @ 83C7388 - .incbin "baserom.gba", 0x3C7388, 0x2930 - -gWildMonHeaders:: @ 83C9CB8 - .incbin "baserom.gba", 0x3C9CB8, 0xA64 - -gUnknown_83CA71C:: @ 83CA71C - .incbin "baserom.gba", 0x3CA71C, 0xED4 + .incbin "baserom.gba", 0x3CA770, 0xE80 gUnknown_83CB5F0:: @ 83CB5F0 .incbin "baserom.gba", 0x3CB5F0, 0x200 diff --git a/data/event_scripts.s b/data/event_scripts.s index a3943d494..eb2c8ed60 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -10397,7 +10397,7 @@ EventScript_1BE06F:: @ 81BE06F applymovement VAR_LAST_TALKED, Movement_1BE08F waitmovement 0 removeobject VAR_LAST_TALKED - special Special_RockSmashEncounter + special ScrSpecial_RockSmashWildEncounter compare_var_to_value VAR_RESULT, 0 goto_if eq, EventScript_1BE08D waitstate @@ -11731,7 +11731,7 @@ EventScript_81BFB5F:: @ 81BFB5F setflashradius 0 end -EventScript_1BFB65:: @ 81BFB65 +EventScript_RepelWoreOff:: @ 81BFB65 msgbox Text_1BFB6E, 3 end diff --git a/data/field_screen_effect.s b/data/field_screen_effect.s new file mode 100644 index 000000000..92078287d --- /dev/null +++ b/data/field_screen_effect.s @@ -0,0 +1,15 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 + +gUnknown_83C68E0:: @ 83C68E0 + .4byte 4 + +gUnknown_83C68E4:: @ 83C68E4 + .byte 0, 0, 5, 30, 11, 15 + .2byte 0x001 + +gUnknown_83C68EC:: @ 83C68EC + .byte 0, 1, 2 diff --git a/data/specials.inc b/data/specials.inc index 516b5f768..9da9bdfc7 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -179,7 +179,7 @@ gSpecials:: @ 815FD60 def_special sub_8113510 def_special sub_81130A8 def_special sub_8113530 - def_special Special_RockSmashEncounter + def_special ScrSpecial_RockSmashWildEncounter def_special nullsub_75 def_special nullsub_75 def_special nullsub_75 diff --git a/data/trainer_see.s b/data/trainer_see.s new file mode 100644 index 000000000..3392f090f --- /dev/null +++ b/data/trainer_see.s @@ -0,0 +1,97 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 + +gUnknown_83C6AC8:: + .incbin "graphics/map_objects/emoticons.4bpp" + +gUnknown_83C7248:: @ 83C7248 + .4byte IsTrainerInRangeSouth + .4byte IsTrainerInRangeNorth + .4byte IsTrainerInRangeWest + .4byte IsTrainerInRangeEast + +gUnknown_83C7258:: @ 83C7258 + .4byte sub_8081F34 + .4byte sub_8081F38 + .4byte sub_8081F90 + .4byte sub_8081FD0 + .4byte sub_808202C + .4byte sub_80820BC + .4byte sub_8082100 + .4byte sub_8082134 + .4byte sub_8082150 + .4byte sub_8082184 + .4byte sub_80821DC + .4byte sub_8082250 + .4byte sub_808226C + .4byte sub_80822CC + .4byte sub_808237C + +gUnknown_83C7294:: @ 83C7294 + .4byte sub_8082150 + .4byte sub_8082184 + .4byte sub_80821DC + .4byte sub_8082250 + +gOamData_83C72A4:: + .4byte 0x40000000, 0x00000400 + +gSpriteImages_83C72AC:: + .4byte gUnknown_83C6AC8 + 0x000, 0x80 + .4byte gUnknown_83C6AC8 + 0x080, 0x80 + .4byte gUnknown_83C6AC8 + 0x100, 0x80 + .4byte gUnknown_83C6AC8 + 0x300, 0x80 + .4byte gUnknown_83C6AC8 + 0x380, 0x80 + .4byte gUnknown_83C6AC8 + 0x400, 0x80 + .4byte gUnknown_83C6AC8 + 0x180, 0x80 + .4byte gUnknown_83C6AC8 + 0x200, 0x80 + .4byte gUnknown_83C6AC8 + 0x280, 0x80 + .4byte gUnknown_83C6AC8 + 0x480, 0x80 + .4byte gUnknown_83C6AC8 + 0x500, 0x80 + .4byte gUnknown_83C6AC8 + 0x580, 0x80 + .4byte gUnknown_83C6AC8 + 0x600, 0x80 + .4byte gUnknown_83C6AC8 + 0x680, 0x80 + .4byte gUnknown_83C6AC8 + 0x700, 0x80 + +gAnimCmd_83C7324:: + obj_image_anim_frame 0x0000, 0x0004 + obj_image_anim_frame 0x0001, 0x0004 + obj_image_anim_frame 0x0002, 0x0034 + obj_image_anim_end + +gAnimCmd_83C7334:: + obj_image_anim_frame 0x0006, 0x0004 + obj_image_anim_frame 0x0007, 0x0004 + obj_image_anim_frame 0x0008, 0x0034 + obj_image_anim_end + +gAnimCmd_83C7344:: + obj_image_anim_frame 0x0003, 0x0004 + obj_image_anim_frame 0x0004, 0x0004 + obj_image_anim_frame 0x0005, 0x0034 + obj_image_anim_end + +gAnimCmd_83C7354:: + obj_image_anim_frame 0x0009, 0x0004 + obj_image_anim_frame 0x000a, 0x0004 + obj_image_anim_frame 0x000b, 0x0034 + obj_image_anim_end + +gAnimCmd_83C7364:: + obj_image_anim_frame 0x000c, 0x0004 + obj_image_anim_frame 0x000d, 0x0004 + obj_image_anim_frame 0x000e, 0x0034 + obj_image_anim_end + +gSpriteAnimTable_83C7374:: + .4byte gAnimCmd_83C7324 + .4byte gAnimCmd_83C7334 + .4byte gAnimCmd_83C7344 + .4byte gAnimCmd_83C7354 + .4byte gAnimCmd_83C7364 + +gUnknown_83C7388:: @ 83C7388 + spr_template 65535, 65535, gOamData_83C72A4, gSpriteAnimTable_83C7374, gSpriteImages_83C72AC, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably diff --git a/data/unknown_serial_data.bin b/data/unknown_serial_data.bin Binary files differnew file mode 100644 index 000000000..63d26ca2a --- /dev/null +++ b/data/unknown_serial_data.bin diff --git a/graphics/map_objects/emoticons.png b/graphics/map_objects/emoticons.png Binary files differnew file mode 100644 index 000000000..43cb818da --- /dev/null +++ b/graphics/map_objects/emoticons.png diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 3a42a3cea..26c525272 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -521,3 +521,6 @@ graphics/pokemon/heracross/unk_icon.4bpp: %.4bpp: %.png graphics/map_objects/151.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 8 -mheight 4 + +graphics/map_objects/emoticons.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 diff --git a/include/event_scripts.h b/include/event_scripts.h index c0f0300b1..e8fc40fa4 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1186,4 +1186,6 @@ extern const u8 Text_1BCA95[]; extern const u8 Text_1BCACB[]; extern const u8 Text_1BCAF2[]; +extern const u8 EventScript_RepelWoreOff[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/fieldmap.h b/include/fieldmap.h index c3709c616..4af4342f7 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -28,5 +28,7 @@ struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y); void sub_8059948(u8 a0, u8 a1); void save_serialize_map(void); +u32 sub_8058F1C(u32 original, u8 bit); +u32 sub_8058F48(s16 x, s16 y, u8 z); #endif //GUARD_FIELDMAP_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 5bcab1249..d0420438a 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -34,7 +34,7 @@ struct WildPokemonHeader extern const struct WildPokemonHeader gWildMonHeaders[]; void DisableWildEncounters(bool8 disabled); -bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior); +bool8 StandardWildEncounter(u32 currMetaTileBehavior, u16 previousMetaTileBehavior); void ScrSpecial_RockSmashWildEncounter(void); bool8 SweetScentWildEncounter(void); bool8 DoesCurrentMapHaveFishingMons(void); @@ -42,9 +42,10 @@ void FishingWildEncounter(u8 rod); u16 GetLocalWildMon(bool8 *isWaterMon); u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); -void sub_8082740(u8); +void DisableWildEncounters(bool8 state); u8 GetUnownLetterByPersonalityLoByte(u32 personality); bool8 SweetScentWildEncounter(void); -void sub_8083214(u16 randVal); +void SeedWildEncounterRng(u16 randVal); +void ResetEncounterRateModifiers(void); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/json_data_rules.mk b/json_data_rules.mk index 980e63e88..9b5cebe5d 100644 --- a/json_data_rules.mk +++ b/json_data_rules.mk @@ -1,9 +1,15 @@ # JSON files are run through jsonproc, which is a tool that converts JSON data to an output file # based on an Inja template. https://github.com/pantor/inja -AUTO_GEN_TARGETS += src/data/items.h +AUTO_GEN_TARGETS += $(DATA_C_SUBDIR)/items.h -src/data/items.h: src/data/items.json src/data/items.json.txt +$(DATA_C_SUBDIR)/items.h: $(DATA_C_SUBDIR)/items.json $(DATA_C_SUBDIR)/items.json.txt $(JSONPROC) $^ $@ -$(C_BUILDDIR)/item.o: c_dep += src/data/items.h +$(C_BUILDDIR)/item.o: c_dep += $(DATA_C_SUBDIR)/items.h + +AUTO_GEN_TARGETS += $(DATA_C_SUBDIR)/wild_encounters.h +$(DATA_C_SUBDIR)/wild_encounters.h: $(DATA_C_SUBDIR)/wild_encounters.json $(DATA_C_SUBDIR)/wild_encounters.json.txt + $(JSONPROC) $^ $@ + +$(C_BUILDDIR)/wild_encounter.o: c_dep += $(DATA_C_SUBDIR)/wild_encounters.h diff --git a/ld_script.txt b/ld_script.txt index f8e33aa9f..a8919e9b2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -125,7 +125,7 @@ SECTIONS { src/battle_setup.o(.text); asm/cable_club.o(.text); asm/trainer_see.o(.text); - asm/wild_encounter.o(.text); + src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); asm/option_menu.o(.text); @@ -426,9 +426,12 @@ SECTIONS { data/battle_anim_status_effects.o(.rodata); src/title_screen.o(.rodata); data/field_weather.o(.rodata); - data/data_835B488.o(.rodata); + data/field_screen_effect.o(.rodata); src/battle_setup.o(.rodata); - data/data_835B488.o(.rodata.83C6AB0); + data/cable_club.o(.rodata); + data/trainer_see.o(.rodata); + src/wild_encounter.o(.rodata); + data/data_835B488.o(.rodata); src/pokemon_icon.o(.rodata); data/data_835B488.o(.rodata.83D4100); src/item_menu_icons.o(.rodata); diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json new file mode 100644 index 000000000..9030dee5f --- /dev/null +++ b/src/data/wild_encounters.json @@ -0,0 +1,12625 @@ +{ + "wild_encounter_groups": [ + { + "label": "gWildMonHeaders", + "for_maps": true, + "fields": [ + { + "type": "land_mons", + "encounter_rates": [ + 20, + 20, + 10, + 10, + 10, + 10, + 5, + 5, + 4, + 4, + 1, + 1 + ] + }, + { + "type": "water_mons", + "encounter_rates": [ + 60, + 30, + 5, + 4, + 1 + ] + }, + { + "type": "rock_smash_mons", + "encounter_rates": [ + 60, + 30, + 5, + 4, + 1 + ] + }, + { + "type": "fishing_mons", + "encounter_rates": [ + 70, + 30, + 60, + 20, + 20, + 40, + 40, + 15, + 4, + 1 + ], + "groups": { + "old_rod": [ + 0, + 1 + ], + "good_rod": [ + 2, + 3, + 4 + ], + "super_rod": [ + 5, + 6, + 7, + 8, + 9 + ] + } + } + ], + "encounters": [ + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER", + "base_label": "sSevenIslandTanobyRuinsMoneanChamber", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_LIPTOO_CHAMBER", + "base_label": "sSevenIslandTanobyRuinsLiptooChamber", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_WEEPTH_CHAMBER", + "base_label": "sSevenIslandTanobyRuinsWeepthChamber", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER", + "base_label": "sSevenIslandTanobyRuinsDilfordChamber", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_SCUFIB_CHAMBER", + "base_label": "sSevenIslandTanobyRuinsScufibChamber", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER", + "base_label": "sSevenIslandTanobyRuinsRixyChamber", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER", + "base_label": "sSevenIslandTanobyRuinsViapoisChamber", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_UNOWN" + } + ] + } + }, + { + "map": "MAP_VIRIDIAN_FOREST", + "base_label": "sViridianForest", + "land_mons": { + "encounter_rate": 14, + "mons": [ + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_WEEDLE" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_WEEDLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WEEDLE" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_METAPOD" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_KAKUNA" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_KAKUNA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_PIKACHU" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_KAKUNA" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_PIKACHU" + } + ] + } + }, + { + "map": "MAP_MT_MOON_1F", + "base_label": "sMtMoon1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_PARAS" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_CLEFAIRY" + } + ] + } + }, + { + "map": "MAP_MT_MOON_B1F", + "base_label": "sMtMoonB1F", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_PARAS" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_PARAS" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_PARAS" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_PARAS" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_PARAS" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_PARAS" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_PARAS" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_PARAS" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_PARAS" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_PARAS" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_PARAS" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_PARAS" + } + ] + } + }, + { + "map": "MAP_MT_MOON_B2F", + "base_label": "sMtMoonB2F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_PARAS" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_PARAS" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_CLEFAIRY" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_CLEFAIRY" + } + ] + } + }, + { + "map": "MAP_SSANNE_EXTERIOR", + "base_label": "sSSAnneExterior", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SHELLDER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_DIGLETTS_CAVE_B1F", + "base_label": "sDiglettsCaveB1F", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 21, + "max_level": 21, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_DUGTRIO" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_DIGLETT" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_DUGTRIO" + } + ] + } + }, + { + "map": "MAP_VICTORY_ROAD_1F", + "base_label": "sVictoryRoad1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_ONIX" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_ONIX" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_ONIX" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_ARBOK" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_MAROWAK" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_MAROWAK" + } + ] + } + }, + { + "map": "MAP_VICTORY_ROAD_2F", + "base_label": "sVictoryRoad2F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_PRIMEAPE" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_ONIX" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_ONIX" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_ARBOK" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_MAROWAK" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_MAROWAK" + } + ] + } + }, + { + "map": "MAP_VICTORY_ROAD_3F", + "base_label": "sVictoryRoad3F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_ONIX" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_ONIX" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_ONIX" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_ARBOK" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_MAROWAK" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_MAROWAK" + } + ] + } + }, + { + "map": "MAP_POKEMON_MANSION_1F", + "base_label": "sPokemonMansion1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GRIMER" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_WEEZING" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + } + ] + } + }, + { + "map": "MAP_POKEMON_MANSION_2F", + "base_label": "sPokemonMansion2F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GRIMER" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_WEEZING" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + } + ] + } + }, + { + "map": "MAP_POKEMON_MANSION_3F", + "base_label": "sPokemonMansion3F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GRIMER" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_WEEZING" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + } + ] + } + }, + { + "map": "MAP_POKEMON_MANSION_B1F", + "base_label": "sPokemonMansionB1F", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_KOFFING" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_DITTO" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GRIMER" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_WEEZING" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RATTATA" + } + ] + } + }, + { + "map": "MAP_SAFARI_ZONE_CENTER", + "base_label": "sSafariZoneCenter", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_RHYHORN" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_NIDORAN_M" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_NIDORINO" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_NIDORINA" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_SCYTHER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_CHANSEY" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_DRATINI" + }, + { + "min_level": 15, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_DRAGONAIR" + } + ] + } + }, + { + "map": "MAP_SAFARI_ZONE_EAST", + "base_label": "sSafariZoneEast", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_NIDORAN_M" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_DODUO" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_PARAS" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_NIDORINO" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_NIDORAN_F" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_PARAS" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_KANGASKHAN" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_PARAS" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SCYTHER" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_DRATINI" + }, + { + "min_level": 15, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_DRAGONAIR" + } + ] + } + }, + { + "map": "MAP_SAFARI_ZONE_NORTH", + "base_label": "sSafariZoneNorth", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_RHYHORN" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_NIDORAN_M" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PARAS" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_NIDORINO" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_NIDORINA" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_VENOMOTH" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PARAS" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_CHANSEY" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PARAS" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_TAUROS" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_DRATINI" + }, + { + "min_level": 15, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_DRAGONAIR" + } + ] + } + }, + { + "map": "MAP_SAFARI_ZONE_WEST", + "base_label": "sSafariZoneWest", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_DODUO" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_NIDORAN_M" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_NIDORINO" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_NIDORAN_F" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_VENOMOTH" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_TAUROS" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_KANGASKHAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_DRATINI" + }, + { + "min_level": 15, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_DRAGONAIR" + } + ] + } + }, + { + "map": "MAP_CERULEAN_CAVE_1F", + "base_label": "sCeruleanCave1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_MAGNETON" + }, + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_PRIMEAPE" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_DITTO" + }, + { + "min_level": 58, + "max_level": 58, + "species": "SPECIES_ELECTRODE" + }, + { + "min_level": 58, + "max_level": 58, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 55, + "max_level": 55, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 55, + "max_level": 55, + "species": "SPECIES_WOBBUFFET" + }, + { + "min_level": 61, + "max_level": 61, + "species": "SPECIES_PRIMEAPE" + }, + { + "min_level": 61, + "max_level": 61, + "species": "SPECIES_DITTO" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 45, + "max_level": 55, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 45, + "max_level": 55, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_GEODUDE" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_CERULEAN_CAVE_2F", + "base_label": "sCeruleanCave2F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_MAGNETON" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 55, + "max_level": 55, + "species": "SPECIES_KADABRA" + }, + { + "min_level": 55, + "max_level": 55, + "species": "SPECIES_DITTO" + }, + { + "min_level": 58, + "max_level": 58, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 58, + "max_level": 58, + "species": "SPECIES_WOBBUFFET" + }, + { + "min_level": 61, + "max_level": 61, + "species": "SPECIES_ELECTRODE" + }, + { + "min_level": 61, + "max_level": 61, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 64, + "max_level": 64, + "species": "SPECIES_KADABRA" + }, + { + "min_level": 64, + "max_level": 64, + "species": "SPECIES_DITTO" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 35, + "max_level": 45, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 45, + "max_level": 55, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 50, + "max_level": 60, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 45, + "max_level": 55, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 45, + "max_level": 55, + "species": "SPECIES_GEODUDE" + } + ] + } + }, + { + "map": "MAP_CERULEAN_CAVE_B1F", + "base_label": "sCeruleanCaveB1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 58, + "max_level": 58, + "species": "SPECIES_KADABRA" + }, + { + "min_level": 58, + "max_level": 58, + "species": "SPECIES_DITTO" + }, + { + "min_level": 55, + "max_level": 55, + "species": "SPECIES_MAGNETON" + }, + { + "min_level": 55, + "max_level": 55, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 67, + "max_level": 67, + "species": "SPECIES_KADABRA" + }, + { + "min_level": 67, + "max_level": 67, + "species": "SPECIES_DITTO" + }, + { + "min_level": 64, + "max_level": 64, + "species": "SPECIES_ELECTRODE" + }, + { + "min_level": 64, + "max_level": 64, + "species": "SPECIES_PARASECT" + }, + { + "min_level": 61, + "max_level": 61, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 61, + "max_level": 61, + "species": "SPECIES_WOBBUFFET" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 50, + "max_level": 60, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 55, + "max_level": 65, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 50, + "max_level": 60, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 50, + "max_level": 60, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 40, + "max_level": 50, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 50, + "max_level": 60, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 55, + "max_level": 65, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 50, + "max_level": 60, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 50, + "max_level": 60, + "species": "SPECIES_GEODUDE" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GYARADOS" + } + ] + } + }, + { + "map": "MAP_ROCK_TUNNEL_1F", + "base_label": "sRockTunnel1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ONIX" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_ONIX" + } + ] + } + }, + { + "map": "MAP_ROCK_TUNNEL_B1F", + "base_label": "sRockTunnelB1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ONIX" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_ONIX" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_ONIX" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 30, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 25, + "max_level": 40, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GRAVELER" + } + ] + } + }, + { + "map": "MAP_SEAFOAM_ISLANDS_1F", + "base_label": "sSeafoamIslands1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GOLBAT" + } + ] + } + }, + { + "map": "MAP_SEAFOAM_ISLANDS_B1F", + "base_label": "sSeafoamIslandsB1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SEEL" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GOLBAT" + } + ] + } + }, + { + "map": "MAP_SEAFOAM_ISLANDS_B2F", + "base_label": "sSeafoamIslandsB2F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SEEL" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SEEL" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GOLBAT" + } + ] + } + }, + { + "map": "MAP_SEAFOAM_ISLANDS_B3F", + "base_label": "sSeafoamIslandsB3F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SEEL" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SEEL" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GOLBAT" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEEL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_GOLDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GYARADOS" + } + ] + } + }, + { + "map": "MAP_SEAFOAM_ISLANDS_B4F", + "base_label": "sSeafoamIslandsB4F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SEEL" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SEEL" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_SEEL" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GOLBAT" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEEL" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_GOLDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GYARADOS" + } + ] + } + }, + { + "map": "MAP_POKEMON_TOWER_3F", + "base_label": "sPokemonTower3F", + "land_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_HAUNTER" + } + ] + } + }, + { + "map": "MAP_POKEMON_TOWER_4F", + "base_label": "sPokemonTower4F", + "land_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_GASTLY" + } + ] + } + }, + { + "map": "MAP_POKEMON_TOWER_5F", + "base_label": "sPokemonTower5F", + "land_mons": { + "encounter_rate": 6, + "mons": [ + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_GASTLY" + } + ] + } + }, + { + "map": "MAP_POKEMON_TOWER_6F", + "base_label": "sPokemonTower6F", + "land_mons": { + "encounter_rate": 8, + "mons": [ + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 21, + "max_level": 21, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_HAUNTER" + } + ] + } + }, + { + "map": "MAP_POKEMON_TOWER_7F", + "base_label": "sPokemonTower7F", + "land_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_HAUNTER" + } + ] + } + }, + { + "map": "MAP_POWER_PLANT", + "base_label": "sPowerPlant", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_VOLTORB" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MAGNEMITE" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_VOLTORB" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_MAGNEMITE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_PIKACHU" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_PIKACHU" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_MAGNETON" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_MAGNETON" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_PIKACHU" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_ELECTABUZZ" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_PIKACHU" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_ELECTABUZZ" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_EXTERIOR", + "base_label": "sMtEmberExterior", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_PONYTA" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_PONYTA" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_PONYTA" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 39, + "max_level": 39, + "species": "SPECIES_RAPIDASH" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_RAPIDASH" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 30, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 25, + "max_level": 40, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GRAVELER" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_SUMMIT_PATH_1F", + "base_label": "sMtEmberSummitPath1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 39, + "max_level": 39, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 39, + "max_level": 39, + "species": "SPECIES_MACHOP" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_SUMMIT_PATH_2F", + "base_label": "sMtEmberSummitPath2F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_MACHOKE" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 30, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 25, + "max_level": 40, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GRAVELER" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_SUMMIT_PATH_3F", + "base_label": "sMtEmberSummitPath3F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 39, + "max_level": 39, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 39, + "max_level": 39, + "species": "SPECIES_MACHOP" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_RUBY_PATH_1F", + "base_label": "sMtEmberRubyPath1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_MACHOP" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_MACHOKE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_MACHOKE" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 45, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 35, + "max_level": 50, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_RUBY_PATH_B1F", + "base_label": "sMtEmberRubyPathB1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SLUGMA" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 45, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 35, + "max_level": 50, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_RUBY_PATH_B2F", + "base_label": "sMtEmberRubyPathB2F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SLUGMA" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 45, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 35, + "max_level": 50, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_RUBY_PATH_B3F", + "base_label": "sMtEmberRubyPathB3F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_SLUGMA" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_MAGCARGO" + }, + { + "min_level": 35, + "max_level": 45, + "species": "SPECIES_MAGCARGO" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_MAGCARGO" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_RUBY_PATH_B1F_STAIRS", + "base_label": "sMtEmberRubyPathB1FStairs", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SLUGMA" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 45, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 35, + "max_level": 50, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + } + ] + } + }, + { + "map": "MAP_MT_EMBER_RUBY_PATH_B2F_STAIRS", + "base_label": "sMtEmberRubyPathB2FStairs", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SLUGMA" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SLUGMA" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 50, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 45, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 35, + "max_level": 50, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + } + ] + } + }, + { + "map": "MAP_THREE_ISLAND_BERRY_FOREST", + "base_label": "sThreeIslandBerryForest", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_DROWZEE" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_EXEGGCUTE" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_VENOMOTH" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_HYPNO" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_VENOMOTH" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_HYPNO" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_GOLDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE", + "base_label": "sFourIslandIcefallCaveEntrance", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_SEEL" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_SEEL" + }, + { + "min_level": 47, + "max_level": 47, + "species": "SPECIES_SEEL" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 51, + "max_level": 51, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 53, + "max_level": 53, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 53, + "max_level": 53, + "species": "SPECIES_DEWGONG" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_SEEL" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_WOOPER" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F", + "base_label": "sFourIslandIcefallCave1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_SEEL" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_DELIBIRD" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_SWINUB" + } + ] + } + }, + { + "map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_B1F", + "base_label": "sFourIslandIcefallCaveB1F", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_SEEL" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_DELIBIRD" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_SWINUB" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_SWINUB" + } + ] + } + }, + { + "map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_BACK", + "base_label": "sFourIslandIcefallCaveBack", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_SEEL" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 45, + "max_level": 45, + "species": "SPECIES_SEEL" + }, + { + "min_level": 47, + "max_level": 47, + "species": "SPECIES_SEEL" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 51, + "max_level": 51, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 53, + "max_level": 53, + "species": "SPECIES_DEWGONG" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 53, + "max_level": 53, + "species": "SPECIES_DEWGONG" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 45, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 45, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 30, + "max_level": 45, + "species": "SPECIES_LAPRAS" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SHELLDER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_PATTERN_BUSH", + "base_label": "sSixIslandPatternBush", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_SPINARAK" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_KAKUNA" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_SPINARAK" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_WEEDLE" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_HERACROSS" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_METAPOD" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_HERACROSS" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_LEDYBA" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_HERACROSS" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_LEDYBA" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_HERACROSS" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1", + "base_label": "sFiveIslandLostCaveRoom1", + "land_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM2", + "base_label": "sFiveIslandLostCaveRoom2", + "land_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM3", + "base_label": "sFiveIslandLostCaveRoom3", + "land_mons": { + "encounter_rate": 3, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM4", + "base_label": "sFiveIslandLostCaveRoom4", + "land_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM5", + "base_label": "sFiveIslandLostCaveRoom5", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM6", + "base_label": "sFiveIslandLostCaveRoom6", + "land_mons": { + "encounter_rate": 6, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM7", + "base_label": "sFiveIslandLostCaveRoom7", + "land_mons": { + "encounter_rate": 7, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM8", + "base_label": "sFiveIslandLostCaveRoom8", + "land_mons": { + "encounter_rate": 8, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM9", + "base_label": "sFiveIslandLostCaveRoom9", + "land_mons": { + "encounter_rate": 9, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM10", + "base_label": "sFiveIslandLostCaveRoom10", + "land_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM11", + "base_label": "sFiveIslandLostCaveRoom11", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM12", + "base_label": "sFiveIslandLostCaveRoom12", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM13", + "base_label": "sFiveIslandLostCaveRoom13", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM14", + "base_label": "sFiveIslandLostCaveRoom14", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GASTLY" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_GOLBAT" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_HAUNTER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_MURKROW" + } + ] + } + }, + { + "map": "MAP_ONE_ISLAND_KINDLE_ROAD", + "base_label": "sOneIslandKindleRoad", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_PONYTA" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_PONYTA" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_RAPIDASH" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_RAPIDASH" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_PERSIAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 25, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 30, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 25, + "max_level": 40, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GRAVELER" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ONE_ISLAND_TREASURE_BEACH", + "base_label": "sOneIslandTreasureBeach", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 33, + "max_level": 33, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_PERSIAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_TWO_ISLAND_CAPE_BRINK", + "base_label": "sTwoIslandCapeBrink", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 38, + "max_level": 38, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_PERSIAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_GOLDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_GOLDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_THREE_ISLAND_BOND_BRIDGE", + "base_label": "sThreeIslandBondBridge", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 36, + "max_level": 36, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 31, + "max_level": 31, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 37, + "max_level": 37, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_PERSIAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_THREE_ISLAND_PORT", + "base_label": "sThreeIslandPort", + "land_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_DUNSPARCE" + }, + { + "min_level": 35, + "max_level": 35, + "species": "SPECIES_DUNSPARCE" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_RESORT_GORGEOUS", + "base_label": "sFiveIslandResortGorgeous", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_WATER_LABYRINTH", + "base_label": "sFiveIslandWaterLabyrinth", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_MEADOW", + "base_label": "sFiveIslandMeadow", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_SENTRET" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_SENTRET" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 47, + "max_level": 47, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_PERSIAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND_MEMORIAL_PILLAR", + "base_label": "sFiveIslandMemorialPillar", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_HOPPIP" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_OUTCAST_ISLAND", + "base_label": "sSixIslandOutcastIsland", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_GREEN_PATH", + "base_label": "sSixIslandGreenPath", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_WATER_PATH", + "base_label": "sSixIslandWaterPath", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_SENTRET" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_SENTRET" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 47, + "max_level": 47, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_PERSIAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_RUIN_VALLEY", + "base_label": "sSixIslandRuinValley", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_NATU" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_YANMA" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_WOBBUFFET" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_NATU" + }, + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_NATU" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_PERSIAN" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_WOOPER" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TRAINER_TOWER", + "base_label": "sSevenIslandTrainerTower", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE", + "base_label": "sSevenIslandSevaultCanyonEntrance", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_SENTRET" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_PHANPY" + }, + { + "min_level": 48, + "max_level": 48, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_SENTRET" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 41, + "max_level": 41, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PHANPY" + }, + { + "min_level": 47, + "max_level": 47, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PHANPY" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_PERSIAN" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON", + "base_label": "sSevenIslandSevaultCanyon", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PHANPY" + }, + { + "min_level": 46, + "max_level": 46, + "species": "SPECIES_CUBONE" + }, + { + "min_level": 50, + "max_level": 50, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_MAROWAK" + }, + { + "min_level": 43, + "max_level": 43, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 54, + "max_level": 54, + "species": "SPECIES_ONIX" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_SKARMORY" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_LARVITAR" + }, + { + "min_level": 49, + "max_level": 49, + "species": "SPECIES_PERSIAN" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_LARVITAR" + }, + { + "min_level": 52, + "max_level": 52, + "species": "SPECIES_PERSIAN" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 25, + "mons": [ + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 45, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 35, + "max_level": 50, + "species": "SPECIES_GRAVELER" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GEODUDE" + } + ] + } + }, + { + "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS", + "base_label": "sSevenIslandTanobyRuins", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_QWILFISH" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE1", + "base_label": "sRoute1", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_RATTATA" + } + ] + } + }, + { + "map": "MAP_ROUTE2", + "base_label": "sRoute2", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_WEEDLE" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_WEEDLE" + } + ] + } + }, + { + "map": "MAP_ROUTE3", + "base_label": "sRoute3", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_NIDORAN_M" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_JIGGLYPUFF" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_NIDORAN_M" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_JIGGLYPUFF" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_NIDORAN_F" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_JIGGLYPUFF" + } + ] + } + }, + { + "map": "MAP_ROUTE4", + "base_label": "sRoute4", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_EKANS" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_EKANS" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_EKANS" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_EKANS" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE5", + "base_label": "sRoute5", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_MEOWTH" + } + ] + } + }, + { + "map": "MAP_ROUTE6", + "base_label": "sRoute6", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_MEOWTH" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE7", + "base_label": "sRoute7", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_MEOWTH" + } + ] + } + }, + { + "map": "MAP_ROUTE8", + "base_label": "sRoute8", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_MEOWTH" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_EKANS" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_EKANS" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_EKANS" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_GROWLITHE" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_EKANS" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_GROWLITHE" + } + ] + } + }, + { + "map": "MAP_ROUTE9", + "base_label": "sRoute9", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_EKANS" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_EKANS" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_EKANS" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_EKANS" + } + ] + } + }, + { + "map": "MAP_ROUTE10", + "base_label": "sRoute10", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_VOLTORB" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_EKANS" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_EKANS" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_VOLTORB" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_VOLTORB" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_VOLTORB" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_EKANS" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_VOLTORB" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_EKANS" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE11", + "base_label": "sRoute11", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_EKANS" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_EKANS" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_DROWZEE" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_DROWZEE" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_EKANS" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_EKANS" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_DROWZEE" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_EKANS" + }, + { + "min_level": 15, + "max_level": 15, + "species": "SPECIES_DROWZEE" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE12", + "base_label": "sRoute12", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GLOOM" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 60, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE13", + "base_label": "sRoute13", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_DITTO" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GLOOM" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE14", + "base_label": "sRoute14", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_DITTO" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_DITTO" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_DITTO" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PIDGEOTTO" + } + ] + } + }, + { + "map": "MAP_ROUTE15", + "base_label": "sRoute15", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_VENONAT" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_DITTO" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_GLOOM" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PIDGEOTTO" + }, + { + "min_level": 30, + "max_level": 30, + "species": "SPECIES_GLOOM" + } + ] + } + }, + { + "map": "MAP_ROUTE16", + "base_label": "sRoute16", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_DODUO" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_DODUO" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_DODUO" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_RATICATE" + } + ] + } + }, + { + "map": "MAP_ROUTE17", + "base_label": "sRoute17", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_DODUO" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_DODUO" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_DODUO" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_FEAROW" + } + ] + } + }, + { + "map": "MAP_ROUTE18", + "base_label": "sRoute18", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_DODUO" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_DODUO" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_DODUO" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_RATICATE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_FEAROW" + } + ] + } + }, + { + "map": "MAP_ROUTE19", + "base_label": "sRoute19", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE20", + "base_label": "sRoute20", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE21_NORTH", + "base_label": "sRoute21North", + "land_mons": { + "encounter_rate": 14, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 21, + "max_level": 21, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_TANGELA" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE21_SOUTH", + "base_label": "sRoute21South", + "land_mons": { + "encounter_rate": 14, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 21, + "max_level": 21, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 17, + "max_level": 17, + "species": "SPECIES_TANGELA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_TANGELA" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE22", + "base_label": "sRoute22", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 4, + "max_level": 4, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MANKEY" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE23", + "base_label": "sRoute23", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 40, + "max_level": 40, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_MANKEY" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_EKANS" + }, + { + "min_level": 34, + "max_level": 34, + "species": "SPECIES_EKANS" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_PRIMEAPE" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_ARBOK" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 42, + "max_level": 42, + "species": "SPECIES_FEAROW" + }, + { + "min_level": 32, + "max_level": 32, + "species": "SPECIES_SPEAROW" + }, + { + "min_level": 44, + "max_level": 44, + "species": "SPECIES_FEAROW" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE24", + "base_label": "sRoute24", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_WEEDLE" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_ABRA" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_KAKUNA" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_ABRA" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_METAPOD" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_ABRA" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ROUTE25", + "base_label": "sRoute25", + "land_mons": { + "encounter_rate": 21, + "mons": [ + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_WEEDLE" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_CATERPIE" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_ABRA" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_PIDGEY" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_KAKUNA" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_ABRA" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_METAPOD" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ABRA" + } + ] + }, + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_PALLET_TOWN", + "base_label": "sPalletTown", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SHELLDER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_VIRIDIAN_CITY", + "base_label": "sViridianCity", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_CERULEAN_CITY", + "base_label": "sCeruleanCity", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_VERMILION_CITY", + "base_label": "sVermilionCity", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SHELLDER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_CELADON_CITY", + "base_label": "sCeladonCity", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_KOFFING" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 30, + "max_level": 40, + "species": "SPECIES_GRIMER" + } + ] + } + }, + { + "map": "MAP_FUCHSIA_CITY", + "base_label": "sFuchsiaCity", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_PSYDUCK" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_SEAKING" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_CINNABAR_ISLAND", + "base_label": "sCinnabarIsland", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_KRABBY" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SHELLDER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_ONE_ISLAND", + "base_label": "sOneIsland", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 20, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 20, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SHELLDER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_FOUR_ISLAND", + "base_label": "sFourIsland", + "water_mons": { + "encounter_rate": 2, + "mons": [ + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WOOPER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_WOOPER" + } + ] + }, + "fishing_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_POLIWAG" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_POLIWHIRL" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_PSYDUCK" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_FIVE_ISLAND", + "base_label": "sFiveIsland", + "water_mons": { + "encounter_rate": 1, + "mons": [ + { + "min_level": 5, + "max_level": 35, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HOPPIP" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACOOL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_TENTACRUEL" + } + ] + }, + "fishing_mons": { + "encounter_rate": 10, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 15, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_HORSEA" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_SHELLDER" + }, + { + "min_level": 15, + "max_level": 25, + "species": "SPECIES_GYARADOS" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_SEADRA" + }, + { + "min_level": 25, + "max_level": 35, + "species": "SPECIES_PSYDUCK" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 10, + "max_level": 10, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 8, + "max_level": 8, + "species": "SPECIES_ZUBAT" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_ZUBAT" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_2", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 7, + "max_level": 7, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 9, + "max_level": 9, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_MAREEP" + }, + { + "min_level": 11, + "max_level": 11, + "species": "SPECIES_MAREEP" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_3", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PINECO" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_PINECO" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_PINECO" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PINECO" + }, + { + "min_level": 23, + "max_level": 23, + "species": "SPECIES_PINECO" + }, + { + "min_level": 25, + "max_level": 25, + "species": "SPECIES_PINECO" + }, + { + "min_level": 29, + "max_level": 29, + "species": "SPECIES_PINECO" + }, + { + "min_level": 19, + "max_level": 19, + "species": "SPECIES_PINECO" + }, + { + "min_level": 21, + "max_level": 21, + "species": "SPECIES_PINECO" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PINECO" + }, + { + "min_level": 21, + "max_level": 21, + "species": "SPECIES_PINECO" + }, + { + "min_level": 27, + "max_level": 27, + "species": "SPECIES_PINECO" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_4", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 16, + "max_level": 16, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 12, + "max_level": 12, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_HOUNDOUR" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_HOUNDOUR" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_5", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_TEDDIURSA" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_TEDDIURSA" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_6", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_AIPOM" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_AIPOM" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_7", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SHUCKLE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SHUCKLE" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_8", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_STANTLER" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_STANTLER" + } + ] + } + }, + { + "map": "MAP_SIX_ISLAND_ALTERING_CAVE", + "base_label": "sSixIslandAlteringCave_9", + "land_mons": { + "encounter_rate": 5, + "mons": [ + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 22, + "max_level": 22, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 24, + "max_level": 24, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 28, + "max_level": 28, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 18, + "max_level": 18, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 20, + "max_level": 20, + "species": "SPECIES_SMEARGLE" + }, + { + "min_level": 26, + "max_level": 26, + "species": "SPECIES_SMEARGLE" + } + ] + } + } + ] + } + ] +} diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt new file mode 100644 index 000000000..bf848249f --- /dev/null +++ b/src/data/wild_encounters.json.txt @@ -0,0 +1,90 @@ +{{ doNotModifyHeader }} + +## for wild_encounter_group in wild_encounter_groups +{% if wild_encounter_group.for_maps %} +## for wild_encounter_field in wild_encounter_group.fields +{% if not existsIn(wild_encounter_field, "groups") %} +## for encounter_rate in wild_encounter_field.encounter_rates +{% if loop.index == 0 %} +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} {{ setVarInt(wild_encounter_field.type, loop.index) }} +## endfor +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ getVar(wild_encounter_field.type) }}) +{% else %} +## for field_subgroup_key, field_subgroup_subarray in wild_encounter_field.groups +## for field_subgroup_index in field_subgroup_subarray +{% if loop.index == 0 %} +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar("previous_slot") }} + {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }}{% endif %}{{ setVarInt(concat(wild_encounter_field.type, field_subgroup_key), field_subgroup_index) }}{{ setVarInt("previous_slot", field_subgroup_index) }} +## endfor +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar(concat(wild_encounter_field.type, field_subgroup_key)) }}) +## endfor +{% endif %} +## endfor +{% endif %} + + + +## for encounter in wild_encounter_group.encounters +{% if existsIn(encounter, "land_mons") %} +const struct WildPokemon {{ encounter.base_label }}_LandMons[] = +{ +## for wild_mon in encounter.land_mons.mons + { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} }, +## endfor +}; + +const struct WildPokemonInfo {{ encounter.base_label }}_LandMonsInfo = { {{encounter.land_mons.encounter_rate}}, {{ encounter.base_label }}_LandMons }; +{% endif %} +{% if existsIn(encounter, "water_mons") %} +const struct WildPokemon {{ encounter.base_label }}_WaterMons[] = +{ +## for wild_mon in encounter.water_mons.mons + { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} }, +## endfor +}; + +const struct WildPokemonInfo {{ encounter.base_label }}_WaterMonsInfo = { {{encounter.water_mons.encounter_rate}}, {{ encounter.base_label }}_WaterMons }; +{% endif %} +{% if existsIn(encounter, "rock_smash_mons") %} +const struct WildPokemon {{ encounter.base_label }}_RockSmashMons[] = +{ +## for wild_mon in encounter.rock_smash_mons.mons + { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} }, +## endfor +}; + +const struct WildPokemonInfo {{ encounter.base_label }}_RockSmashMonsInfo = { {{encounter.rock_smash_mons.encounter_rate}}, {{ encounter.base_label }}_RockSmashMons }; +{% endif %} +{% if existsIn(encounter, "fishing_mons") %} +const struct WildPokemon {{ encounter.base_label }}_FishingMons[] = +{ +## for wild_mon in encounter.fishing_mons.mons + { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} }, +## endfor +}; + +const struct WildPokemonInfo {{ encounter.base_label }}_FishingMonsInfo = { {{encounter.fishing_mons.encounter_rate}}, {{ encounter.base_label }}_FishingMons }; +{% endif %} +## endfor + +const struct WildPokemonHeader {{ wild_encounter_group.label }}[] = +{ +## for encounter in wild_encounter_group.encounters + { + .mapGroup = {% if wild_encounter_group.for_maps %}MAP_GROUP({{ removePrefix(encounter.map, "MAP_") }}){% else %}0{% endif %}, + .mapNum = {% if wild_encounter_group.for_maps %}MAP_NUM({{ removePrefix(encounter.map, "MAP_") }}){% else %}{{ loop.index1 }}{% endif %}, + .landMonsInfo = {% if existsIn(encounter, "land_mons") %}&{{ encounter.base_label }}_LandMonsInfo{% else %}NULL{% endif %}, + .waterMonsInfo = {% if existsIn(encounter, "water_mons") %}&{{ encounter.base_label }}_WaterMonsInfo{% else %}NULL{% endif %}, + .rockSmashMonsInfo = {% if existsIn(encounter, "rock_smash_mons") %}&{{ encounter.base_label }}_RockSmashMonsInfo{% else %}NULL{% endif %}, + .fishingMonsInfo = {% if existsIn(encounter, "fishing_mons") %}&{{ encounter.base_label }}_FishingMonsInfo{% else %}NULL{% endif %}, + }, +## endfor + { + .mapGroup = MAP_GROUP(UNDEFINED), + .mapNum = MAP_NUM(UNDEFINED), + .landMonsInfo = NULL, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, +}; +## endfor diff --git a/src/new_game.c b/src/new_game.c index e27c862bb..4c1dc2dbf 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -102,7 +102,7 @@ void ResetMenuAndMonGlobals(void) ResetTMCaseCursorPos(); BerryPouch_CursorResetToTop(); sub_811089C(); - sub_8083214(Random()); + SeedWildEncounterRng(Random()); ResetSpecialVars(); } diff --git a/src/quest_log.c b/src/quest_log.c index 896a44d17..d76a6173d 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -870,7 +870,7 @@ static void sub_8110F90(u8 unused) gSaveBlock1Ptr->location.warpId = -1; gUnknown_203ADF8 = 0; gDisableMapMusicChangeOnMapLoad = 1; - sub_8082740(1); + DisableWildEncounters(TRUE); sub_8111368(); } @@ -1600,7 +1600,7 @@ static void sub_81120AC(u8 taskId) ScriptContext2_Disable(); gTextFlags.autoScroll = FALSE; gUnknown_2036E28 = 0; - sub_8082740(0); + DisableWildEncounters(FALSE); gHelpSystemEnabled = TRUE; DestroyTask(taskId); break; diff --git a/src/wild_encounter.c b/src/wild_encounter.c new file mode 100644 index 000000000..f17e1f79b --- /dev/null +++ b/src/wild_encounter.c @@ -0,0 +1,789 @@ +#include "global.h" +#include "random.h" +#include "wild_encounter.h" +#include "event_data.h" +#include "fieldmap.h" +#include "roamer.h" +#include "field_player_avatar.h" +#include "battle_setup.h" +#include "overworld.h" +#include "metatile_behavior.h" +#include "event_scripts.h" +#include "script.h" +#include "link.h" +#include "quest_log.h" +#include "constants/species.h" +#include "constants/maps.h" +#include "constants/vars.h" +#include "constants/abilities.h" +#include "constants/items.h" + +struct WildEncounterData +{ + u32 rngState; + u16 prevMetatileBehavior; + u16 encounterRateBuff; + u8 stepsSinceLastEncounter; + u8 abilityEffect; + u16 leadMonHeldItem; +}; + +static EWRAM_DATA struct WildEncounterData sWildEncounterData = {}; +static EWRAM_DATA bool8 sWildEncountersDisabled = FALSE; + +static bool8 UnlockedTanobyOrAreNotInTanoby(void); +static u32 GenerateUnownPersonalityByLetter(u8 letter); +static bool8 IsWildLevelAllowedByRepel(u8 level); +static void ApplyFluteEncounterRateMod(u32 *rate); +static u8 GetFluteEncounterRateModType(void); +static void ApplyCleanseTagEncounterRateMod(u32 *rate); +static bool8 IsLeadMonHoldingCleanseTag(void); +static u16 WildEncounterRandom(void); +static void AddToWildEncounterRateBuff(u8 encouterRate); + +#include "data/wild_encounters.h" + +static const u8 sUnownLetterSlots[][12] = { + // A A A A A A A A A A A ? + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27}, + // C C C D D D H H H U U O + { 2, 2, 2, 3, 3, 3, 7, 7, 7, 20, 20, 14}, + // N N N N S S S S I I E E + {13, 13, 13, 13, 18, 18, 18, 18, 8, 8, 4, 4}, + // P P L L J J R R R Q Q Q + {15, 15, 11, 11, 9, 9, 17, 17, 17, 16, 16, 16}, + // Y Y T T G G G F F F K K + {24, 24, 19, 19, 6, 6, 6, 5, 5, 5, 10, 10}, + // V V V W W W X X M M B B + {21, 21, 21, 22, 22, 22, 23, 23, 12, 12, 1, 1}, + // Z Z Z Z Z Z Z Z Z Z Z ! + {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26}, +}; + +void DisableWildEncounters(bool8 state) +{ + sWildEncountersDisabled = state; +} + +static u8 ChooseWildMonIndex_Land(void) +{ + u8 rand = Random() % ENCOUNTER_CHANCE_LAND_MONS_TOTAL; + + if (rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_0) + return 0; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_1) + return 1; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_2) + return 2; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_3) + return 3; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_4) + return 4; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_4 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_5) + return 5; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_6) + return 6; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_7) + return 7; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_8) + return 8; + else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_8 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_9) + return 9; + else if (rand == ENCOUNTER_CHANCE_LAND_MONS_SLOT_9) + return 10; + else + return 11; +} + +static u8 ChooseWildMonIndex_WaterRock(void) +{ + u8 rand = Random() % ENCOUNTER_CHANCE_WATER_MONS_TOTAL; + + if (rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_0) + return 0; + else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_1) + return 1; + else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_2) + return 2; + else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_3) + return 3; + else + return 4; +} + +enum +{ + OLD_ROD, + GOOD_ROD, + SUPER_ROD +}; + +static u8 ChooseWildMonIndex_Fishing(u8 rod) +{ + u8 wildMonIndex = 0; + u8 rand = Random() % max(max(ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_TOTAL, ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_TOTAL), + ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_TOTAL); + + switch (rod) + { + case OLD_ROD: + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_0) + wildMonIndex = 0; + else + wildMonIndex = 1; + break; + case GOOD_ROD: + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2) + wildMonIndex = 2; + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3) + wildMonIndex = 3; + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_4) + wildMonIndex = 4; + break; + case SUPER_ROD: + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5) + wildMonIndex = 5; + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6) + wildMonIndex = 6; + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7) + wildMonIndex = 7; + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8) + wildMonIndex = 8; + if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8) + wildMonIndex = 9; + break; + } + return wildMonIndex; +} + +static u8 ChooseWildMonLevel(const struct WildPokemon * info) +{ + u8 lo; + u8 hi; + u8 mod; + u8 res; + if (info->maxLevel >= info->minLevel) + { + lo = info->minLevel; + hi = info->maxLevel; + } + else + { + lo = info->maxLevel; + hi = info->minLevel; + } + mod = hi - lo + 1; + res = Random() % mod; + return lo + res; +} + +static u16 GetCurrentMapWildMonHeaderId(void) +{ + u16 i; + + for (i = 0; ; i++) + { + const struct WildPokemonHeader * wildHeader = &gWildMonHeaders[i]; + if (wildHeader->mapGroup == 0xFF) + break; + + if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && + gWildMonHeaders[i].mapNum == gSaveBlock1Ptr->location.mapNum) + { + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SIX_ISLAND_ALTERING_CAVE) && + gSaveBlock1Ptr->location.mapNum == MAP_NUM(SIX_ISLAND_ALTERING_CAVE)) + { + u16 alteringCaveId = VarGet(VAR_ALTERING_CAVE_WILD_SET); + if (alteringCaveId > 8) + alteringCaveId = 0; + + i += alteringCaveId; + } + + if (!UnlockedTanobyOrAreNotInTanoby()) + break; + return i; + } + } + + return -1; +} + +static bool8 UnlockedTanobyOrAreNotInTanoby(void) +{ + if (FlagGet(FLAG_SYS_UNLOCKED_TANOBY_RUINS)) + return TRUE; + if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER)) + return TRUE; + if (!(gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_LIPTOO_CHAMBER) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_WEEPTH_CHAMBER) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_SCUFIB_CHAMBER) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER) + )) + return TRUE; + return FALSE; +} + +static void GenerateWildMon(u16 species, u8 level, u8 slot) +{ + u32 personality; + s8 chamber; + ZeroEnemyPartyMons(); + if (species != SPECIES_UNOWN) + { + CreateMonWithNature(&gEnemyParty[0], species, level, 32, Random() % 25); + } + else + { + chamber = gSaveBlock1Ptr->location.mapNum - MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER); + personality = GenerateUnownPersonalityByLetter(sUnownLetterSlots[chamber][slot]); + CreateMon(&gEnemyParty[0], species, level, 32, TRUE, personality, FALSE, 0); + } +} + +static u32 GenerateUnownPersonalityByLetter(u8 letter) +{ + u32 personality; + do + { + personality = (Random() << 16) | Random(); + } while (GetUnownLetterByPersonalityLoByte(personality) != letter); + return personality; +} + +u8 GetUnownLetterByPersonalityLoByte(u32 personality) +{ + return (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 0x3)) % 0x1C; +} + +enum +{ + WILD_AREA_LAND, + WILD_AREA_WATER, + WILD_AREA_ROCKS, + WILD_AREA_FISHING, +}; + +#define WILD_CHECK_REPEL 0x1 +#define WILD_CHECK_KEEN_EYE 0x2 + +static bool8 TryGenerateWildMon(const struct WildPokemonInfo * info, u8 area, u8 flags) +{ + u8 slot = 0; + u8 level; + switch (area) + { + case WILD_AREA_LAND: + slot = ChooseWildMonIndex_Land(); + break; + case WILD_AREA_WATER: + slot = ChooseWildMonIndex_WaterRock(); + break; + case WILD_AREA_ROCKS: + slot = ChooseWildMonIndex_WaterRock(); + break; + } + level = ChooseWildMonLevel(&info->wildPokemon[slot]); + if (flags == WILD_CHECK_REPEL && !IsWildLevelAllowedByRepel(level)) + { + return FALSE; + } + GenerateWildMon(info->wildPokemon[slot].species, level, slot); + return TRUE; +} + +static u16 GenerateFishingEncounter(const struct WildPokemonInfo * info, u8 rod) +{ + u8 slot = ChooseWildMonIndex_Fishing(rod); + u8 level = ChooseWildMonLevel(&info->wildPokemon[slot]); + GenerateWildMon(info->wildPokemon[slot].species, level, slot); + return info->wildPokemon[slot].species; +} + +static bool8 DoWildEncounterRateDiceRoll(u16 a0) +{ + if (WildEncounterRandom() % 1600 < a0) + return TRUE; + return FALSE; +} + +static bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility) +{ + encounterRate *= 16; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) + encounterRate = encounterRate * 80 / 100; + encounterRate += sWildEncounterData.encounterRateBuff * 16 / 200; + ApplyFluteEncounterRateMod(&encounterRate); + ApplyCleanseTagEncounterRateMod(&encounterRate); + if (!ignoreAbility) + { + switch (sWildEncounterData.abilityEffect) + { + case 1: + encounterRate /= 2; + break; + case 2: + encounterRate *= 2; + break; + } + } + if (encounterRate > 1600) + encounterRate = 1600; + return DoWildEncounterRateDiceRoll(encounterRate); +} + +static u8 GetAbilityEncounterRateModType(void) +{ + sWildEncounterData.abilityEffect = 0; + if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) + { + u8 ability = GetMonAbility(&gPlayerParty[0]); + if (ability == ABILITY_STENCH) + sWildEncounterData.abilityEffect = 1; + else if (ability == ABILITY_ILLUMINATE) + sWildEncounterData.abilityEffect = 2; + } + return sWildEncounterData.abilityEffect; +} + +static bool8 DoGlobalWildEncounterDiceRoll(void) +{ + if ((Random() % 100) >= 60) + return FALSE; + return TRUE; +} + +bool8 StandardWildEncounter(u32 currMetatileBehavior, u16 previousMetatileBehavior) +{ + u16 headerId; + struct Roamer * roamer; + + if (sWildEncountersDisabled == TRUE) + return FALSE; + + headerId = GetCurrentMapWildMonHeaderId(); + if (headerId != 0xFFFF) + { + if (sub_8058F1C(currMetatileBehavior, 4) == TRUE) + { + if (gWildMonHeaders[headerId].landMonsInfo == NULL) + return FALSE; + else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll()) + return FALSE; + if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + { + AddToWildEncounterRateBuff(gWildMonHeaders[headerId].landMonsInfo->encounterRate); + return FALSE; + } + + else if (TryStartRoamerEncounter() == TRUE) + { + roamer = &gSaveBlock1Ptr->roamer; + if (!IsWildLevelAllowedByRepel(roamer->level)) + { + return FALSE; + } + + BattleSetup_StartRoamerBattle(); + return TRUE; + } + else + { + + // try a regular wild land encounter + if (TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_REPEL) == TRUE) + { + BattleSetup_StartWildBattle(); + return TRUE; + } + else + { + AddToWildEncounterRateBuff(gWildMonHeaders[headerId].landMonsInfo->encounterRate); + } + } + } + else if (sub_8058F1C(currMetatileBehavior, 4) == 2 + || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(sub_8058F1C(currMetatileBehavior, 0)) == TRUE)) + { + if (gWildMonHeaders[headerId].waterMonsInfo == NULL) + return FALSE; + else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll()) + return FALSE; + else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) + { + AddToWildEncounterRateBuff(gWildMonHeaders[headerId].waterMonsInfo->encounterRate); + return FALSE; + } + + if (TryStartRoamerEncounter() == TRUE) + { + roamer = &gSaveBlock1Ptr->roamer; + if (!IsWildLevelAllowedByRepel(roamer->level)) + { + return FALSE; + } + + BattleSetup_StartRoamerBattle(); + return TRUE; + } + else // try a regular surfing encounter + { + if (TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_REPEL) == TRUE) + { + BattleSetup_StartWildBattle(); + return TRUE; + } + else + { + AddToWildEncounterRateBuff(gWildMonHeaders[headerId].waterMonsInfo->encounterRate); + } + } + } + } + + return FALSE; +} + +void ScrSpecial_RockSmashWildEncounter(void) +{ + u16 headerIdx = GetCurrentMapWildMonHeaderId(); + if (headerIdx == 0xFFFF) + gSpecialVar_Result = FALSE; + else if (gWildMonHeaders[headerIdx].rockSmashMonsInfo == NULL) + gSpecialVar_Result = FALSE; + else if (DoWildEncounterRateTest(gWildMonHeaders[headerIdx].rockSmashMonsInfo->encounterRate, TRUE) != TRUE) + gSpecialVar_Result = FALSE; + else if (TryGenerateWildMon(gWildMonHeaders[headerIdx].rockSmashMonsInfo, WILD_AREA_ROCKS, WILD_CHECK_REPEL) == TRUE) + { + BattleSetup_StartWildBattle(); + gSpecialVar_Result = TRUE; + } + else + gSpecialVar_Result = FALSE; +} + +bool8 SweetScentWildEncounter(void) +{ + s16 x, y; + u16 headerId; + + PlayerGetDestCoords(&x, &y); + headerId = GetCurrentMapWildMonHeaderId(); + if (headerId != 0xFFFF) + { + if (sub_8058F48(x, y, 4) == 1) + { + if (TryStartRoamerEncounter() == TRUE) + { + BattleSetup_StartRoamerBattle(); + return TRUE; + } + + if (gWildMonHeaders[headerId].landMonsInfo == NULL) + return FALSE; + + TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0); + + BattleSetup_StartWildBattle(); + return TRUE; + } + else if (sub_8058F48(x, y, 4) == 2) + { + if (TryStartRoamerEncounter() == TRUE) + { + BattleSetup_StartRoamerBattle(); + return TRUE; + } + + if (gWildMonHeaders[headerId].waterMonsInfo == NULL) + return FALSE; + + TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, 0); + BattleSetup_StartWildBattle(); + return TRUE; + } + } + + return FALSE; +} + +bool8 DoesCurrentMapHaveFishingMons(void) +{ + u16 headerIdx = GetCurrentMapWildMonHeaderId(); + if (headerIdx == 0xFFFF) + return FALSE; + if (gWildMonHeaders[headerIdx].fishingMonsInfo == NULL) + return FALSE; + return TRUE; +} + +void FishingWildEncounter(u8 rod) +{ + GenerateFishingEncounter(gWildMonHeaders[GetCurrentMapWildMonHeaderId()].fishingMonsInfo, rod); + IncrementGameStat(GAME_STAT_FISHING_CAPTURES); + BattleSetup_StartWildBattle(); +} + +u16 GetLocalWildMon(bool8 *isWaterMon) +{ + u16 headerId; + const struct WildPokemonInfo * landMonsInfo; + const struct WildPokemonInfo * waterMonsInfo; + + *isWaterMon = FALSE; + headerId = GetCurrentMapWildMonHeaderId(); + if (headerId == 0xFFFF) + return SPECIES_NONE; + landMonsInfo = gWildMonHeaders[headerId].landMonsInfo; + waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; + // Neither + if (landMonsInfo == NULL && waterMonsInfo == NULL) + return SPECIES_NONE; + // Land Pokemon + else if (landMonsInfo != NULL && waterMonsInfo == NULL) + return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; + // Water Pokemon + else if (landMonsInfo == NULL && waterMonsInfo != NULL) + { + *isWaterMon = TRUE; + return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; + } + // Either land or water Pokemon + if ((Random() % 100) < 80) + { + return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; + } + else + { + *isWaterMon = TRUE; + return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; + } +} + +u16 GetLocalWaterMon(void) +{ + u16 headerId = GetCurrentMapWildMonHeaderId(); + + if (headerId != 0xFFFF) + { + const struct WildPokemonInfo * waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; + + if (waterMonsInfo) + return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; + } + return SPECIES_NONE; +} + +bool8 UpdateRepelCounter(void) +{ + u16 steps; + + if (InUnionRoom() == TRUE) + return FALSE; + + if (gUnknown_203ADFA == 2) + return FALSE; + + steps = VarGet(VAR_REPEL_STEP_COUNT); + + if (steps != 0) + { + steps--; + VarSet(VAR_REPEL_STEP_COUNT, steps); + if (steps == 0) + { + ScriptContext1_SetupScript(EventScript_RepelWoreOff); + return TRUE; + } + } + return FALSE; +} + +static bool8 IsWildLevelAllowedByRepel(u8 wildLevel) +{ + u8 i; + + if (!VarGet(VAR_REPEL_STEP_COUNT)) + return TRUE; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_HP) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + u8 ourLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + + if (wildLevel < ourLevel) + return FALSE; + else + return TRUE; + } + } + + return FALSE; +} + +static void ApplyFluteEncounterRateMod(u32 *encounterRate) +{ + switch (GetFluteEncounterRateModType()) + { + case 1: + *encounterRate += *encounterRate / 2; + break; + case 2: + *encounterRate = *encounterRate / 2; + break; + } +} + +static u8 GetFluteEncounterRateModType(void) +{ + if (FlagGet(FLAG_SYS_WHITE_FLUTE_ACTIVE) == TRUE) + return 1; + else if (FlagGet(FLAG_SYS_BLACK_FLUTE_ACTIVE) == TRUE) + return 2; + else + return 0; +} + +static void ApplyCleanseTagEncounterRateMod(u32 *encounterRate) +{ + if (IsLeadMonHoldingCleanseTag()) + *encounterRate = *encounterRate * 2 / 3; +} + +static bool8 IsLeadMonHoldingCleanseTag(void) +{ + if (sWildEncounterData.leadMonHeldItem == ITEM_CLEANSE_TAG) + return TRUE; + else + return FALSE; +} + +void SeedWildEncounterRng(u16 seed) +{ + sWildEncounterData.rngState = seed; + ResetEncounterRateModifiers(); +} + +static u16 WildEncounterRandom(void) +{ + sWildEncounterData.rngState *= 1103515245; + sWildEncounterData.rngState += 12345; + return sWildEncounterData.rngState >> 16; +} + +static u8 GetMapBaseEncounterCooldown(u8 a0) +{ + u16 headerIdx = GetCurrentMapWildMonHeaderId(); + if (headerIdx == 0xFFFF) + return 0xFF; + if (a0 == 1) + { + if (gWildMonHeaders[headerIdx].landMonsInfo == NULL) + return 0xFF; + if (gWildMonHeaders[headerIdx].landMonsInfo->encounterRate >= 80) + return 0; + if (gWildMonHeaders[headerIdx].landMonsInfo->encounterRate < 10) + return 8; + return 8 - (gWildMonHeaders[headerIdx].landMonsInfo->encounterRate / 10); + } + if (a0 == 2) + { + if (gWildMonHeaders[headerIdx].waterMonsInfo == NULL) + return 0xFF; + if (gWildMonHeaders[headerIdx].waterMonsInfo->encounterRate >= 80) + return 0; + if (gWildMonHeaders[headerIdx].waterMonsInfo->encounterRate < 10) + return 8; + return 8 - (gWildMonHeaders[headerIdx].waterMonsInfo->encounterRate / 10); + } + return 0xFF; +} + +void ResetEncounterRateModifiers(void) +{ + sWildEncounterData.encounterRateBuff = 0; + sWildEncounterData.stepsSinceLastEncounter = 0; +} + +static bool8 HandleWildEncounterCooldown(u32 currMetatileBehavior) +{ + u8 unk = sub_8058F1C(currMetatileBehavior, 4); + u32 minSteps; + u32 encRate; + if (unk == 0) + return FALSE; + minSteps = GetMapBaseEncounterCooldown(unk); + if (minSteps == 0xFF) + return FALSE; + minSteps *= 256; + encRate = 5 * 256; + switch (GetFluteEncounterRateModType()) + { + case 1: + minSteps -= minSteps / 2; + encRate += encRate / 2; + break; + case 2: + minSteps *= 2; + encRate /= 2; + break; + } + sWildEncounterData.leadMonHeldItem = GetMonData(&gPlayerParty[0], MON_DATA_HELD_ITEM); + if (IsLeadMonHoldingCleanseTag() == TRUE) + { + minSteps += minSteps / 3; + encRate -= encRate / 3; + } + switch (GetAbilityEncounterRateModType()) + { + case 1: + minSteps *= 2; + encRate /= 2; + break; + case 2: + minSteps /= 2; + encRate *= 2; + break; + } + minSteps /= 256; + encRate /= 256; + if (sWildEncounterData.stepsSinceLastEncounter >= minSteps) + return TRUE; + sWildEncounterData.stepsSinceLastEncounter++; + if ((Random() % 100) < encRate) + return TRUE; + return FALSE; +} + +bool8 TryStandardWildEncounter(u32 currMetatileBehavior) +{ + if (!HandleWildEncounterCooldown(currMetatileBehavior)) + { + sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0); + return FALSE; + } + else if (StandardWildEncounter(currMetatileBehavior, sWildEncounterData.prevMetatileBehavior) == TRUE) + { + sWildEncounterData.encounterRateBuff = 0; + sWildEncounterData.stepsSinceLastEncounter = 0; + sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0); + return TRUE; + } + else + { + sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0); + return FALSE; + } +} + +static void AddToWildEncounterRateBuff(u8 encounterRate) +{ + if (VarGet(VAR_REPEL_STEP_COUNT) == 0) + sWildEncounterData.encounterRateBuff += encounterRate; + else + sWildEncounterData.encounterRateBuff = 0; +} diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c index df8f9b8d9..fc4df06ed 100644 --- a/src/wild_pokemon_area.c +++ b/src/wild_pokemon_area.c @@ -265,7 +265,7 @@ static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * d return TRUE; if (PokemonInEncounterTable(data->waterMonsInfo, species, 5)) return TRUE; - if (PokemonInEncounterTable(data->fishingMonsInfo, species, 12)) + if (PokemonInEncounterTable(data->fishingMonsInfo, species, 12)) // 10 return TRUE; if (PokemonInEncounterTable(data->rockSmashMonsInfo, species, 5)) return TRUE; diff --git a/sym_ewram.txt b/sym_ewram.txt index d4c25d15f..51501e162 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -213,13 +213,9 @@ gUnknown_20386A8: @ 20386A8 .include "src/battle_setup.o" .align 2 + .include "src/wild_encounter.o" -gUnknown_20386D0: @ 20386D0 - .space 0xC - -gUnknown_20386DC: @ 20386DC - .space 0x4 - + .align 2 gFieldEffectArguments: @ 20386E0 .space 0x20 diff --git a/tools/jsonproc/inja.hpp b/tools/jsonproc/inja.hpp index 3b7263546..d5bf5bcba 100644 --- a/tools/jsonproc/inja.hpp +++ b/tools/jsonproc/inja.hpp @@ -517,7 +517,7 @@ public: typedef const_pointer iterator; typedef const_pointer const_iterator; typedef std::reverse_iterator< const_iterator > reverse_iterator; - typedef std::reverse_iterator< const_iterator > const_reverse_iterator; + typedef std::reverse_iterator< const_iterator > const_reverse_iterator; typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; @@ -1411,6 +1411,9 @@ enum class ElementNotation { Pointer }; +/*! + * \brief Class for lexer configuration. + */ struct LexerConfig { std::string statement_open {"{%"}; std::string statement_close {"%}"}; @@ -1421,6 +1424,9 @@ struct LexerConfig { std::string comment_close {"#}"}; std::string open_chars {"#{"}; + bool trim_blocks {false}; + bool lstrip_blocks {false}; + void update_open_chars() { open_chars = ""; if (open_chars.find(line_statement[0]) == std::string::npos) { @@ -1438,6 +1444,9 @@ struct LexerConfig { } }; +/*! + * \brief Class for parser configuration. + */ struct ParserConfig { ElementNotation notation {ElementNotation::Dot}; }; @@ -1450,10 +1459,13 @@ struct ParserConfig { #ifndef PANTOR_INJA_FUNCTION_STORAGE_HPP #define PANTOR_INJA_FUNCTION_STORAGE_HPP +#include <vector> + // #include "bytecode.hpp" #ifndef PANTOR_INJA_BYTECODE_HPP #define PANTOR_INJA_BYTECODE_HPP +#include <string> #include <utility> #include <nlohmann/json.hpp> @@ -1464,7 +1476,7 @@ struct ParserConfig { namespace inja { -using namespace nlohmann; +using json = nlohmann::json; struct Bytecode { @@ -1492,6 +1504,7 @@ struct Bytecode { GreaterEqual, Less, LessEqual, + At, Different, DivisibleBy, Even, @@ -1594,6 +1607,9 @@ using namespace nlohmann; using Arguments = std::vector<const json*>; using CallbackFunction = std::function<json(Arguments& args)>; +/*! + * \brief Class for builtin functions and user-defined callbacks. + */ class FunctionStorage { public: void add_builtin(nonstd::string_view name, unsigned int num_args, Bytecode::Op op) { @@ -1658,6 +1674,9 @@ class FunctionStorage { #define PANTOR_INJA_PARSER_HPP #include <limits> +#include <string> +#include <utility> +#include <vector> // #include "bytecode.hpp" @@ -1678,12 +1697,17 @@ class FunctionStorage { #ifndef PANTOR_INJA_TOKEN_HPP #define PANTOR_INJA_TOKEN_HPP +#include <string> + // #include "string_view.hpp" namespace inja { +/*! + * \brief Helper-class for the inja Parser. + */ struct Token { enum class Kind { Text, @@ -1737,13 +1761,17 @@ struct Token { } -#endif // PANTOR_INJA_TOKEN_HPP +#endif // PANTOR_INJA_TOKEN_HPP // #include "utils.hpp" #ifndef PANTOR_INJA_UTILS_HPP #define PANTOR_INJA_UTILS_HPP +#include <algorithm> +#include <fstream> #include <stdexcept> +#include <string> +#include <utility> // #include "string_view.hpp" @@ -1755,11 +1783,22 @@ inline void inja_throw(const std::string& type, const std::string& message) { throw std::runtime_error("[inja.exception." + type + "] " + message); } +inline std::ifstream open_file_or_throw(const std::string& path) { + std::ifstream file; + file.exceptions(std::ifstream::failbit | std::ifstream::badbit); + try { + file.open(path); + } catch(const std::ios_base::failure& e) { + inja_throw("file_error", "failed accessing file at '" + path + "'"); + } + return file; +} + namespace string_view { inline nonstd::string_view slice(nonstd::string_view view, size_t start, size_t end) { start = std::min(start, view.size()); end = std::min(std::max(start, end), view.size()); - return view.substr(start, end - start); // StringRef(Data + Start, End - Start); + return view.substr(start, end - start); // StringRef(Data + Start, End - Start); } inline std::pair<nonstd::string_view, nonstd::string_view> split(nonstd::string_view view, char Separator) { @@ -1783,6 +1822,9 @@ namespace string_view { namespace inja { +/*! + * \brief Class for lexing an inja Template. + */ class Lexer { enum class State { Text, @@ -1831,12 +1873,15 @@ class Lexer { // try to match one of the opening sequences, and get the close nonstd::string_view open_str = m_in.substr(m_pos); + bool must_lstrip = false; if (inja::string_view::starts_with(open_str, m_config.expression_open)) { m_state = State::ExpressionStart; } else if (inja::string_view::starts_with(open_str, m_config.statement_open)) { m_state = State::StatementStart; + must_lstrip = m_config.lstrip_blocks; } else if (inja::string_view::starts_with(open_str, m_config.comment_open)) { m_state = State::CommentStart; + must_lstrip = m_config.lstrip_blocks; } else if ((m_pos == 0 || m_in[m_pos - 1] == '\n') && inja::string_view::starts_with(open_str, m_config.line_statement)) { m_state = State::LineStart; @@ -1844,8 +1889,13 @@ class Lexer { m_pos += 1; // wasn't actually an opening sequence goto again; } - if (m_pos == m_tok_start) goto again; // don't generate empty token - return make_token(Token::Kind::Text); + + nonstd::string_view text = string_view::slice(m_in, m_tok_start, m_pos); + if (must_lstrip) + text = clear_final_line_if_whitespace(text); + + if (text.empty()) goto again; // don't generate empty token + return Token(Token::Kind::Text, text); } case State::ExpressionStart: { m_state = State::ExpressionBody; @@ -1872,7 +1922,7 @@ class Lexer { case State::LineBody: return scan_body("\n", Token::Kind::LineStatementClose); case State::StatementBody: - return scan_body(m_config.statement_close, Token::Kind::StatementClose); + return scan_body(m_config.statement_close, Token::Kind::StatementClose, m_config.trim_blocks); case State::CommentBody: { // fast-scan to comment close size_t end = m_in.substr(m_pos).find(m_config.comment_close); @@ -1883,7 +1933,10 @@ class Lexer { // return the entire comment in the close token m_state = State::Text; m_pos += end + m_config.comment_close.size(); - return make_token(Token::Kind::CommentClose); + Token tok = make_token(Token::Kind::CommentClose); + if (m_config.trim_blocks) + skip_newline(); + return tok; } } } @@ -1891,7 +1944,7 @@ class Lexer { const LexerConfig& get_config() const { return m_config; } private: - Token scan_body(nonstd::string_view close, Token::Kind closeKind) { + Token scan_body(nonstd::string_view close, Token::Kind closeKind, bool trim = false) { again: // skip whitespace (except for \n as it might be a close) if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof); @@ -1905,7 +1958,10 @@ class Lexer { if (inja::string_view::starts_with(m_in.substr(m_tok_start), close)) { m_state = State::Text; m_pos = m_tok_start + close.size(); - return make_token(closeKind); + Token tok = make_token(closeKind); + if (trim) + skip_newline(); + return tok; } // skip \n @@ -2026,6 +2082,34 @@ class Lexer { Token make_token(Token::Kind kind) const { return Token(kind, string_view::slice(m_in, m_tok_start, m_pos)); } + + void skip_newline() { + if (m_pos < m_in.size()) { + char ch = m_in[m_pos]; + if (ch == '\n') + m_pos += 1; + else if (ch == '\r') { + m_pos += 1; + if (m_pos < m_in.size() && m_in[m_pos] == '\n') + m_pos += 1; + } + } + } + + static nonstd::string_view clear_final_line_if_whitespace(nonstd::string_view text) + { + nonstd::string_view result = text; + while (!result.empty()) { + char ch = result.back(); + if (ch == ' ' || ch == '\t') + result.remove_suffix(1); + else if (ch == '\n' || ch == '\r') + break; + else + return text; + } + return result; + } }; } @@ -2036,6 +2120,7 @@ class Lexer { #ifndef PANTOR_INJA_TEMPLATE_HPP #define PANTOR_INJA_TEMPLATE_HPP +#include <map> #include <string> #include <vector> @@ -2045,6 +2130,9 @@ class Lexer { namespace inja { +/*! + * \brief The main inja Template. + */ struct Template { std::vector<Bytecode> bytecodes; std::string content; @@ -2054,7 +2142,7 @@ using TemplateStorage = std::map<std::string, Template>; } -#endif // PANTOR_INJA_TEMPLATE_HPP +#endif // PANTOR_INJA_TEMPLATE_HPP // #include "token.hpp" @@ -2068,6 +2156,7 @@ namespace inja { class ParserStatic { ParserStatic() { + functions.add_builtin("at", 2, Bytecode::Op::At); functions.add_builtin("default", 2, Bytecode::Op::Default); functions.add_builtin("divisibleBy", 2, Bytecode::Op::DivisibleBy); functions.add_builtin("even", 1, Bytecode::Op::Even); @@ -2107,13 +2196,16 @@ class ParserStatic { FunctionStorage functions; }; +/*! + * \brief Class for parsing an inja Template. + */ class Parser { public: explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config, TemplateStorage& included_templates): m_config(parser_config), m_lexer(lexer_config), m_included_templates(included_templates), m_static(ParserStatic::get_instance()) { } bool parse_expression(Template& tmpl) { if (!parse_expression_and(tmpl)) return false; - if (m_tok.kind != Token::Kind::Id || m_tok.text != "or") return true; + if (m_tok.kind != Token::Kind::Id || m_tok.text != static_cast<decltype(m_tok.text)>("or")) return true; get_next_token(); if (!parse_expression_and(tmpl)) return false; append_function(tmpl, Bytecode::Op::Or, 2); @@ -2122,7 +2214,7 @@ class Parser { bool parse_expression_and(Template& tmpl) { if (!parse_expression_not(tmpl)) return false; - if (m_tok.kind != Token::Kind::Id || m_tok.text != "and") return true; + if (m_tok.kind != Token::Kind::Id || m_tok.text != static_cast<decltype(m_tok.text)>("and")) return true; get_next_token(); if (!parse_expression_not(tmpl)) return false; append_function(tmpl, Bytecode::Op::And, 2); @@ -2130,7 +2222,7 @@ class Parser { } bool parse_expression_not(Template& tmpl) { - if (m_tok.kind == Token::Kind::Id && m_tok.text == "not") { + if (m_tok.kind == Token::Kind::Id && m_tok.text == static_cast<decltype(m_tok.text)>("not")) { get_next_token(); if (!parse_expression_not(tmpl)) return false; append_function(tmpl, Bytecode::Op::Not, 1); @@ -2145,7 +2237,7 @@ class Parser { Bytecode::Op op; switch (m_tok.kind) { case Token::Kind::Id: - if (m_tok.text == "in") + if (m_tok.text == static_cast<decltype(m_tok.text)>("in")) op = Bytecode::Op::In; else return true; @@ -2233,7 +2325,9 @@ class Parser { append_callback(tmpl, func_token.text, num_args); return true; } - } else if (m_tok.text == "true" || m_tok.text == "false" || m_tok.text == "null") { + } else if (m_tok.text == static_cast<decltype(m_tok.text)>("true") || + m_tok.text == static_cast<decltype(m_tok.text)>("false") || + m_tok.text == static_cast<decltype(m_tok.text)>("null")) { // true, false, null are json literals if (brace_level == 0 && bracket_level == 0) { json_first = m_tok.text; @@ -2312,7 +2406,7 @@ class Parser { bool parse_statement(Template& tmpl, nonstd::string_view path) { if (m_tok.kind != Token::Kind::Id) return false; - if (m_tok.text == "if") { + if (m_tok.text == static_cast<decltype(m_tok.text)>("if")) { get_next_token(); // evaluate expression @@ -2323,7 +2417,7 @@ class Parser { // conditional jump; destination will be filled in by else or endif tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump); - } else if (m_tok.text == "endif") { + } else if (m_tok.text == static_cast<decltype(m_tok.text)>("endif")) { if (m_if_stack.empty()) { inja_throw("parser_error", "endif without matching if"); } @@ -2342,7 +2436,7 @@ class Parser { // pop if stack m_if_stack.pop_back(); - } else if (m_tok.text == "else") { + } else if (m_tok.text == static_cast<decltype(m_tok.text)>("else")) { if (m_if_stack.empty()) inja_throw("parser_error", "else without matching if"); auto& if_data = m_if_stack.back(); @@ -2358,7 +2452,7 @@ class Parser { if_data.prev_cond_jump = std::numeric_limits<unsigned int>::max(); // chained else if - if (m_tok.kind == Token::Kind::Id && m_tok.text == "if") { + if (m_tok.kind == Token::Kind::Id && m_tok.text == static_cast<decltype(m_tok.text)>("if")) { get_next_token(); // evaluate expression @@ -2370,7 +2464,7 @@ class Parser { // conditional jump; destination will be filled in by else or endif tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump); } - } else if (m_tok.text == "for") { + } else if (m_tok.text == static_cast<decltype(m_tok.text)>("for")) { get_next_token(); // options: for a in arr; for a, b in obj @@ -2389,7 +2483,7 @@ class Parser { get_next_token(); } - if (m_tok.kind != Token::Kind::Id || m_tok.text != "in") + if (m_tok.kind != Token::Kind::Id || m_tok.text != static_cast<decltype(m_tok.text)>("in")) inja_throw("parser_error", "expected 'in', got '" + m_tok.describe() + "'"); get_next_token(); @@ -2403,7 +2497,7 @@ class Parser { tmpl.bytecodes.back().value = key_token.text; } tmpl.bytecodes.back().str = static_cast<std::string>(value_token.text); - } else if (m_tok.text == "endfor") { + } else if (m_tok.text == static_cast<decltype(m_tok.text)>("endfor")) { get_next_token(); if (m_loop_stack.empty()) { inja_throw("parser_error", "endfor without matching for"); @@ -2415,7 +2509,7 @@ class Parser { tmpl.bytecodes.emplace_back(Bytecode::Op::EndLoop); tmpl.bytecodes.back().args = m_loop_stack.back() + 1; // loop body m_loop_stack.pop_back(); - } else if (m_tok.text == "include") { + } else if (m_tok.text == static_cast<decltype(m_tok.text)>("include")) { get_next_token(); if (m_tok.kind != Token::Kind::String) { @@ -2431,8 +2525,10 @@ class Parser { } // sys::path::remove_dots(pathname, true, sys::path::Style::posix); - Template include_template = parse_template(pathname); - m_included_templates.emplace(pathname, include_template); + if (m_included_templates.find(pathname) == m_included_templates.end()) { + Template include_template = parse_template(pathname); + m_included_templates.emplace(pathname, include_template); + } // generate a reference bytecode tmpl.bytecodes.emplace_back(Bytecode::Op::Include, json(pathname), Bytecode::Flag::ValueImmediate); @@ -2552,10 +2648,10 @@ class Parser { } std::string load_file(nonstd::string_view filename) { - std::ifstream file(static_cast<std::string>(filename)); - std::string text((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); - return text; - } + std::ifstream file = open_file_or_throw(static_cast<std::string>(filename)); + std::string text((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); + return text; + } private: const ParserConfig& m_config; @@ -2605,6 +2701,7 @@ class Parser { #if __cplusplus < 201402L #include <cstddef> +#include <memory> #include <type_traits> #include <utility> @@ -2655,6 +2752,9 @@ namespace stdinja = std; #include <algorithm> #include <numeric> +#include <string> +#include <utility> +#include <vector> #include <nlohmann/json.hpp> @@ -2679,6 +2779,9 @@ inline nonstd::string_view convert_dot_to_json_pointer(nonstd::string_view dot, return nonstd::string_view(out.data(), out.size()); } +/*! + * \brief Class for rendering a Template with data. + */ class Renderer { std::vector<const json*>& get_args(const Bytecode& bc) { m_tmp_args.clear(); @@ -2765,7 +2868,7 @@ class Renderer { LoopLevel& level = m_loop_stack.back(); if (level.loop_type == LoopLevel::Type::Array) { - level.data[static_cast<std::string>(level.value_name)] = level.values.at(level.index); // *level.it; + level.data[static_cast<std::string>(level.value_name)] = level.values.at(level.index); // *level.it; auto& loopData = level.data["loop"]; loopData["index"] = level.index; loopData["index1"] = level.index + 1; @@ -2787,8 +2890,8 @@ class Renderer { enum class Type { Map, Array }; Type loop_type; - nonstd::string_view key_name; // variable name for keys - nonstd::string_view value_name; // variable name for values + nonstd::string_view key_name; // variable name for keys + nonstd::string_view value_name; // variable name for values json data; // data with loop info added json values; // values to iterate over @@ -2800,8 +2903,8 @@ class Renderer { // loop over map using KeyValue = std::pair<nonstd::string_view, json*>; using MapValues = std::vector<KeyValue>; - MapValues map_values; // values to iterate over - MapValues::iterator map_it; // iterator over values + MapValues map_values; // values to iterate over + MapValues::iterator map_it; // iterator over values }; @@ -2835,11 +2938,11 @@ class Renderer { } case Bytecode::Op::PrintValue: { const json& val = *get_args(bc)[0]; - if (val.is_string()) + if (val.is_string()) { os << val.get_ref<const std::string&>(); - else + } else { os << val.dump(); - // val.dump(os); + } pop_args(bc); break; } @@ -2870,7 +2973,15 @@ class Renderer { break; } case Bytecode::Op::Length: { - auto result = get_args(bc)[0]->size(); + const json& val = *get_args(bc)[0]; + + int result; + if (val.is_string()) { + result = val.get_ref<const std::string&>().length(); + } else { + result = val.size(); + } + pop_args(bc); m_stack.emplace_back(result); break; @@ -2882,6 +2993,13 @@ class Renderer { m_stack.emplace_back(std::move(result)); break; } + case Bytecode::Op::At: { + auto args = get_args(bc); + auto result = args[0]->at(args[1]->get<int>()); + pop_args(bc); + m_stack.emplace_back(result); + break; + } case Bytecode::Op::First: { auto result = get_args(bc)[0]->front(); pop_args(bc); @@ -3091,7 +3209,7 @@ class Renderer { break; } case Bytecode::Op::Include: - Renderer(m_included_templates, m_callbacks).render_to(os, m_included_templates.find(get_imm(bc)->get_ref<const std::string&>())->second, data); + Renderer(m_included_templates, m_callbacks).render_to(os, m_included_templates.find(get_imm(bc)->get_ref<const std::string&>())->second, *m_data); break; case Bytecode::Op::Callback: { auto callback = m_callbacks.find_callback(bc.str, bc.args); @@ -3216,12 +3334,17 @@ class Renderer { // #include "template.hpp" +// #include "utils.hpp" + namespace inja { using namespace nlohmann; +/*! + * \brief Class for changing the configuration. + */ class Environment { class Impl { public: @@ -3238,7 +3361,7 @@ class Environment { std::unique_ptr<Impl> m_impl; public: - Environment(): Environment("./") { } + Environment(): Environment("") { } explicit Environment(const std::string& global_path): m_impl(stdinja::make_unique<Impl>()) { m_impl->input_path = global_path; @@ -3277,6 +3400,16 @@ class Environment { m_impl->lexer_config.update_open_chars(); } + /// Sets whether to remove the first newline after a block + void set_trim_blocks(bool trim_blocks) { + m_impl->lexer_config.trim_blocks = trim_blocks; + } + + /// Sets whether to strip the spaces and tabs from the start of a line to a block + void set_lstrip_blocks(bool lstrip_blocks) { + m_impl->lexer_config.lstrip_blocks = lstrip_blocks; + } + /// Sets the element notation syntax void set_element_notation(ElementNotation notation) { m_impl->parser_config.notation = notation; @@ -3290,8 +3423,8 @@ class Environment { Template parse_template(const std::string& filename) { Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates); - return parser.parse_template(m_impl->input_path + static_cast<std::string>(filename)); - } + return parser.parse_template(m_impl->input_path + static_cast<std::string>(filename)); + } std::string render(nonstd::string_view input, const json& data) { return render(parse(input), data); @@ -3304,35 +3437,35 @@ class Environment { } std::string render_file(const std::string& filename, const json& data) { - return render(parse_template(filename), data); - } + return render(parse_template(filename), data); + } std::string render_file_with_json_file(const std::string& filename, const std::string& filename_data) { - const json data = load_json(filename_data); - return render_file(filename, data); - } + const json data = load_json(filename_data); + return render_file(filename, data); + } void write(const std::string& filename, const json& data, const std::string& filename_out) { - std::ofstream file(m_impl->output_path + filename_out); - file << render_file(filename, data); - file.close(); - } + std::ofstream file(m_impl->output_path + filename_out); + file << render_file(filename, data); + file.close(); + } void write(const Template& temp, const json& data, const std::string& filename_out) { - std::ofstream file(m_impl->output_path + filename_out); - file << render(temp, data); - file.close(); - } + std::ofstream file(m_impl->output_path + filename_out); + file << render(temp, data); + file.close(); + } - void write_with_json_file(const std::string& filename, const std::string& filename_data, const std::string& filename_out) { - const json data = load_json(filename_data); - write(filename, data, filename_out); - } + void write_with_json_file(const std::string& filename, const std::string& filename_data, const std::string& filename_out) { + const json data = load_json(filename_data); + write(filename, data, filename_out); + } - void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) { - const json data = load_json(filename_data); - write(temp, data, filename_out); - } + void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) { + const json data = load_json(filename_data); + write(temp, data, filename_out); + } std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) { Renderer(m_impl->included_templates, m_impl->callbacks).render_to(os, tmpl, data); @@ -3341,15 +3474,15 @@ class Environment { std::string load_file(const std::string& filename) { Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates); - return parser.load_file(m_impl->input_path + filename); - } + return parser.load_file(m_impl->input_path + filename); + } json load_json(const std::string& filename) { - std::ifstream file(m_impl->input_path + filename); - json j; - file >> j; - return j; - } + std::ifstream file = open_file_or_throw(m_impl->input_path + filename); + json j; + file >> j; + return j; + } void add_callback(const std::string& name, unsigned int numArgs, const CallbackFunction& callback) { m_impl->callbacks.add_callback(name, numArgs, callback); diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp index efe48f39f..2ba5fd082 100644 --- a/tools/jsonproc/jsonproc.cpp +++ b/tools/jsonproc/jsonproc.cpp @@ -5,7 +5,7 @@ #include <map> #include <string> -using std::string; +using std::string; using std::to_string; #include <inja.hpp> using namespace inja; @@ -36,7 +36,14 @@ int main(int argc, char *argv[]) // Add custom command callbacks. env.add_callback("doNotModifyHeader", 0, [jsonfilepath, templateFilepath](Arguments& args) { - return "//\n// DO NOT MODIFY THIS FILE! IT IS AUTO-GENERATED FROM " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n"; + return "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n"; + }); + + env.add_callback("subtract", 2, [](Arguments& args) { + int minuend = args.at(0)->get<int>(); + int subtrahend = args.at(1)->get<int>(); + + return minuend - subtrahend; }); env.add_callback("setVar", 2, [=](Arguments& args) { @@ -46,6 +53,13 @@ int main(int argc, char *argv[]) return ""; }); + env.add_callback("setVarInt", 2, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + string value = to_string(args.at(1)->get<int>()); + set_custom_var(key, value); + return ""; + }); + env.add_callback("getVar", 1, [=](Arguments& args) { string key = args.at(0)->get<string>(); return get_custom_var(key); @@ -67,7 +81,6 @@ int main(int argc, char *argv[]) return rawValue.erase(0, prefix.length()); }); - // Add custom command callbacks. env.add_callback("removeSuffix", 2, [](Arguments& args) { string rawValue = args.at(0)->get<string>(); string suffix = args.at(1)->get<string>(); @@ -78,6 +91,11 @@ int main(int argc, char *argv[]) return rawValue.substr(0, i); }); + // single argument is a json object + env.add_callback("isEmpty", 1, [](Arguments& args) { + return args.at(0)->empty(); + }); + try { env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath); |