diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-12-28 21:34:16 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-28 21:34:16 -0600 |
commit | 6512ebff67e163a5a6c0f5e19847e2a4dda19ad1 (patch) | |
tree | 028f81d66b2cd990d163062280e558a080b30071 | |
parent | 7a1956f51d3bbba5f49f97526b79efafa85792bb (diff) | |
parent | f0ef6ae481ec2cc655f1606f074de38ef26276c4 (diff) |
Merge pull request #90 from pret/pokemon_mail_data
Pokemon mail data and some decomp
-rw-r--r-- | asm/code_80428A0.s | 4 | ||||
-rw-r--r-- | asm/code_80521D0.s | 4 | ||||
-rw-r--r-- | asm/code_8057144.s | 4 | ||||
-rw-r--r-- | asm/code_8057824.s | 4 | ||||
-rw-r--r-- | asm/code_80718D8.s | 243 | ||||
-rw-r--r-- | asm/code_808333C.s | 11 | ||||
-rw-r--r-- | asm/code_808417C.s (renamed from asm/code_8084160.s) | 18 | ||||
-rw-r--r-- | data/pokemon_mail.s | 1072 | ||||
-rw-r--r-- | include/dungeon_entity.h | 6 | ||||
-rw-r--r-- | include/dungeon_pokemon_attributes_1.h | 10 | ||||
-rw-r--r-- | include/pokemon_mail.h | 15 | ||||
-rwxr-xr-x | ld_script.txt | 4 | ||||
-rw-r--r-- | src/data/pokemon_mail.h | 1176 | ||||
-rw-r--r-- | src/dungeon_ai_items.c | 1 | ||||
-rw-r--r-- | src/dungeon_pokemon_attributes_1.c | 124 | ||||
-rw-r--r-- | src/dungeon_random.c | 5 | ||||
-rw-r--r-- | src/dungeon_random_1.c | 9 | ||||
-rw-r--r-- | src/moves.c | 2 | ||||
-rw-r--r-- | src/pokemon_mail.c | 15 | ||||
-rw-r--r-- | src/pokemon_mid.c | 30 | ||||
-rw-r--r-- | src/wonder_mail_2.c | 9 |
21 files changed, 1372 insertions, 1394 deletions
diff --git a/asm/code_80428A0.s b/asm/code_80428A0.s index 49ef590..bb4e09e 100644 --- a/asm/code_80428A0.s +++ b/asm/code_80428A0.s @@ -1099,7 +1099,7 @@ _08043318: movs r0, 0xA strh r0, [r1] ldr r0, [r2] - bl sub_80840D8 + bl SetDungeonRNG _08043346: ldr r0, [r4] ldr r1, _080434C4 @@ -4197,4 +4197,4 @@ ResetAction: bx lr thumb_func_end ResetAction - .align 2, 0
\ No newline at end of file + .align 2, 0 diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 8e97c19..417d5da 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -5863,7 +5863,7 @@ sub_8055640: lsrs r4, 24 adds r0, r6, 0 adds r1, r5, 0 - bl sub_8071A44 + bl CalculateMovePower mov r8, r0 adds r0, r5, 0 bl GetMoveCriticalHitChance @@ -5917,7 +5917,7 @@ sub_80556BC: lsls r4, 24 lsrs r4, 24 adds r1, r5, 0 - bl sub_8071A44 + bl CalculateMovePower mov r8, r0 adds r0, r5, 0 bl GetMoveCriticalHitChance diff --git a/asm/code_8057144.s b/asm/code_8057144.s index 8aecb64..795e7cf 100644 --- a/asm/code_8057144.s +++ b/asm/code_8057144.s @@ -218,7 +218,7 @@ sub_805727C: _080572D2: adds r0, r4, 0 _080572D4: - bl sub_8084160 + bl RollPercentChance_2 lsls r0, 24 lsrs r4, r0, 24 b _080572E0 @@ -276,7 +276,7 @@ _08057324: _08057336: lsls r0, r4, 1 _08057338: - bl sub_8084160 + bl RollPercentChance_2 lsls r0, 24 lsrs r0, 24 _08057340: diff --git a/asm/code_8057824.s b/asm/code_8057824.s index 7ea4a18..3943de2 100644 --- a/asm/code_8057824.s +++ b/asm/code_8057824.s @@ -4918,7 +4918,7 @@ _08059E8A: lsrs r4, 24 adds r0, r6, 0 adds r1, r7, 0 - bl sub_8071A44 + bl CalculateMovePower adds r5, r0, 0 adds r0, r7, 0 bl GetMoveCriticalHitChance @@ -5100,7 +5100,7 @@ _08059FFE: lsrs r4, 24 adds r0, r6, 0 adds r1, r7, 0 - bl sub_8071A44 + bl CalculateMovePower adds r5, r0, 0 adds r0, r7, 0 bl GetMoveCriticalHitChance diff --git a/asm/code_80718D8.s b/asm/code_80718D8.s index 699dad9..caa62de 100644 --- a/asm/code_80718D8.s +++ b/asm/code_80718D8.s @@ -5,249 +5,6 @@ .text - thumb_func_start LoadIQSkills -LoadIQSkills: - push {r4-r6,lr} - ldr r5, [r0, 0x70] - ldrb r1, [r5, 0x6] - cmp r1, 0 - beq _08071978 - adds r4, r5, 0 - adds r4, 0x90 - adds r0, r4, 0 - movs r1, 0x8 - bl SetIQSkill - adds r0, r4, 0 - movs r1, 0x6 - bl SetIQSkill - adds r0, r4, 0 - movs r1, 0x2 - bl SetIQSkill - adds r0, r5, 0 - adds r0, 0xF7 - ldrb r0, [r0] - cmp r0, 0 - beq _08071954 - adds r0, r4, 0 - movs r1, 0x12 - bl SetIQSkill -_08071954: - ldrb r0, [r5, 0x9] - ldr r1, _08071974 - movs r2, 0 - ldrsh r1, [r1, r2] - cmp r0, r1 - blt _08071968 - adds r0, r4, 0 - movs r1, 0x16 - bl SetIQSkill -_08071968: - adds r1, r5, 0 - adds r1, 0x94 - movs r0, 0x2 - strb r0, [r1] - b _080719BE - .align 2, 0 -_08071974: .4byte gItemMasterMinWildLevel -_08071978: - adds r0, r5, 0 - adds r0, 0x90 - strb r1, [r0] - adds r2, r5, 0 - adds r2, 0x91 - strb r1, [r2] - adds r2, 0x1 - strb r1, [r2] - movs r4, 0x1 - adds r6, r0, 0 -_0807198C: - movs r1, 0xC - ldrsh r0, [r5, r1] - lsls r1, r4, 24 - lsrs r1, 24 - bl HasIQForSkill - lsls r0, 24 - cmp r0, 0 - beq _080719B8 - movs r1, 0x1 - lsls r1, r4 - adds r0, r5, 0 - adds r0, 0x8C - bl IsIQSkillSet - lsls r0, 24 - cmp r0, 0 - beq _080719B8 - adds r0, r6, 0 - adds r1, r4, 0 - bl SetIQSkill -_080719B8: - adds r4, 0x1 - cmp r4, 0x17 - ble _0807198C -_080719BE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end LoadIQSkills - - thumb_func_start CanSeeTeammate -CanSeeTeammate: - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _080719D6 - b _08071A0A -_080719D2: - movs r0, 0x1 - b _08071A0C -_080719D6: - movs r6, 0 -_080719D8: - ldr r0, _08071A14 - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _08071A18 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08071A04 - cmp r5, r4 - beq _08071A04 - adds r0, r5, 0 - adds r1, r4, 0 - bl CanSee - lsls r0, 24 - cmp r0, 0 - bne _080719D2 -_08071A04: - adds r6, 0x1 - cmp r6, 0x3 - ble _080719D8 -_08071A0A: - movs r0, 0 -_08071A0C: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08071A14: .4byte gDungeonGlobalData -_08071A18: .4byte 0x0001357c - thumb_func_end CanSeeTeammate - - thumb_func_start GetMoveType_2 -GetMoveType_2: - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - ldrh r1, [r2, 0x2] - movs r0, 0xA2 - lsls r0, 1 - cmp r1, r0 - beq _08071A38 - adds r0, r2, 0 - bl GetMoveType - lsls r0, 24 - lsrs r0, 24 - b _08071A3E -_08071A38: - ldr r0, [r3, 0x70] - adds r0, 0x3E - ldrb r0, [r0] -_08071A3E: - pop {r1} - bx r1 - thumb_func_end GetMoveType_2 - - thumb_func_start sub_8071A44 -sub_8071A44: - push {r4,lr} - adds r2, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4, 0x2] - movs r0, 0xA2 - lsls r0, 1 - cmp r1, r0 - beq _08071A60 - adds r0, r4, 0 - bl GetMovePower - ldrb r1, [r4, 0x5] - adds r0, r1 - b _08071A6A -_08071A60: - ldr r0, [r2, 0x70] - movs r1, 0x3C - ldrsh r0, [r0, r1] - ldrb r4, [r4, 0x5] - adds r0, r4 -_08071A6A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8071A44 - - thumb_func_start ToolboxEnabled -ToolboxEnabled: - push {lr} - movs r1, 0x2 - ldrsh r0, [r0, r1] - bl IsToolboxEnabled - lsls r0, 24 - cmp r0, 0 - beq _08071A84 - movs r0, 0x1 - b _08071A86 -_08071A84: - movs r0, 0 -_08071A86: - pop {r1} - bx r1 - thumb_func_end ToolboxEnabled - - thumb_func_start sub_8071A8C -sub_8071A8C: - push {r4,lr} - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08071AC2 - ldr r1, [r4, 0x70] - adds r0, r1, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08071AC2 - adds r0, r1, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _08071AB4 - cmp r0, 0x47 - bne _08071AB8 -_08071AB4: - movs r0, 0x1 - b _08071ABA -_08071AB8: - movs r0, 0 -_08071ABA: - cmp r0, 0 - bne _08071AC2 - movs r0, 0x1 - b _08071AC4 -_08071AC2: - movs r0, 0 -_08071AC4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8071A8C - thumb_func_start SetVisualFlags SetVisualFlags: push {r4,r5,lr} diff --git a/asm/code_808333C.s b/asm/code_808333C.s index 5677a42..bd38800 100644 --- a/asm/code_808333C.s +++ b/asm/code_808333C.s @@ -1865,15 +1865,4 @@ _080840D0: .4byte 0xffff0000 _080840D4: .4byte 0x00ffffff thumb_func_end sub_80840A4 - thumb_func_start sub_80840D8 -sub_80840D8: - ldr r2, _080840E4 - movs r1, 0x1 - orrs r1, r0 - str r1, [r2] - bx lr - .align 2, 0 -_080840E4: .4byte gDungeonRngState - thumb_func_end sub_80840D8 - .align 2, 0 diff --git a/asm/code_8084160.s b/asm/code_808417C.s index fce2f1b..03b4f3b 100644 --- a/asm/code_8084160.s +++ b/asm/code_808417C.s @@ -5,24 +5,6 @@ .text - thumb_func_start sub_8084160 -sub_8084160: - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x64 - bl DungeonRandomCapped - cmp r0, r4 - blt _08084172 - movs r0, 0 - b _08084174 -_08084172: - movs r0, 0x1 -_08084174: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8084160 - thumb_func_start sub_808417C sub_808417C: push {r4-r6,lr} diff --git a/data/pokemon_mail.s b/data/pokemon_mail.s deleted file mode 100644 index 7d44db2..0000000 --- a/data/pokemon_mail.s +++ /dev/null @@ -1,1072 +0,0 @@ - .section .rodata - - .global gPokemonMail -gPokemonMail: @ 80EBA18 - @ replacing .incbin "baserom.gba", 0x000eba18, 0x463c - .4byte gMail_WelcomeHeadline - .4byte gMail_WelcomeText - .4byte gMail_BasicsHeadline - .4byte gMail_BasicsText - .4byte gMail_JobHeadline - .4byte gMail_JobText - .4byte gMail_HungerHeadline - .4byte gMail_HungerText - .4byte gMail_SeedHeadline - .4byte gMail_SeedText - .4byte gMail_DisasterHeadline - .4byte gMail_DisasterText - .4byte gMail_OptionsHeadline - .4byte gMail_OptionsText - .4byte gMail_MoveHeadline - .4byte gMail_MoveText - .4byte gMail_WonderHeadline - .4byte gMail_WonderText - .4byte gMail_DungeonHeadline - .4byte gMail_DungeonText - .4byte gMail_TypeHeadline - .4byte gMail_TypeText - .4byte gMail_LinkedEntryHeadline1 - .4byte gMail_LinkedEntryText1 - .4byte gMail_LinkedEntryHeadline2 - .4byte gMail_LinkedEntryText2 - .4byte gMail_LinkedEntryHeadline3 - .4byte gMail_LinkedEntryText3 - .4byte gMail_PollHeadline - .4byte gMail_PollText - .4byte gMail_WondersHeadline - .4byte gMail_WondersText - .4byte gMail_TeamMoveHeadline - .4byte gMail_TeamMoveText - .4byte gMail_AddMembersHeadline - .4byte gMail_AddMembersText - .4byte gMail_MoveTipsHeadline - .4byte gMail_MoveTipsText - .4byte gMail_GummiHeadline - .4byte gMail_GummiText - .4byte gMail_UltimateHeadline - .4byte gMail_UltimateText - .4byte gMail_MachineHeadline - .4byte gMail_MachineText - .4byte gMail_MakuhitaHeadline - .4byte gMail_MakuhitaText - .4byte gMail_TrapTileHeadline - .4byte gMail_TrapTileText - .4byte gMail_IQHeadline - .4byte gMail_IQText - .4byte gMail_RangeHeadline - .4byte gMail_RangeText - .4byte gMail_SweetHeadline - .4byte gMail_SweetText - .4byte gMail_KeyHeadline - .4byte gMail_KeyText - .4byte gMail_AzurillHeadline - .4byte gMail_AzurillText - .4byte gMail_WeatherHeadline1 - .4byte gMail_WeatherText1 - .4byte gMail_PechaHeadline - .4byte gMail_PechaText - .4byte gMail_WobbuffetHeadline - .4byte gMail_WobbuffetText - .4byte gMail_WeatherHeadline2 - .4byte gMail_WeatherText2 - .4byte gMail_KecleonHeadline - .4byte gMail_KecleonText - .4byte gMail_SwitchHeadline - .4byte gMail_SwitchText - .4byte gMail_KeyItemHeadline1 - .4byte gMail_KeyItemText1 - .4byte gMail_KeyItemHeadline2 - .4byte gMail_KeyItemText2 - .4byte gMail_GasHeadline - .4byte gMail_GasText - .4byte gMail_CastformHeadline - .4byte gMail_CastformText - .4byte gMail_SmeargleHeadline - .4byte gMail_SmeargleText - .4byte gMail_KabutoHeadline - .4byte gMail_KabutoText - .4byte gMail_ChanseyHeadline - .4byte gMail_ChanseyText - .4byte gMail_ClubHeadline - .4byte gMail_ClubText - .4byte gMail_RawstHeadline - .4byte gMail_RawstText - .4byte gMail_VileplumeHeadline - .4byte gMail_VileplumeText - .4byte gMail_SeaRescueHeadline - .4byte gMail_SeaRescueText - .4byte gMail_PitfallHeadline - .4byte gMail_PitfallText - .4byte gMail_SlakothHeadline - .4byte gMail_SlakothText - .4byte gMail_LinkedProHeadline1 - .4byte gMail_LinkedProText1 - .4byte gMail_LinkedProHeadline2 - .4byte gMail_LinkedProText2 - .4byte gMail_PelipperHeadline - .4byte gMail_PelipperText - .4byte gMail_NewsHeadline1 - .4byte gMail_NewsText1 - .4byte gMail_NewsHeadline2 - .4byte gMail_NewsText2 - .4byte gMail_BuriedRelicHeadline - .4byte gMail_BuriedRelicText - .4byte gMail_LucarioRankHeadline - .4byte gMail_LucarioRankText - .4byte gMail_NewFriendAreasHeadline - .4byte gMail_NewFriendAreasText - - .global gMail_NewFriendAreasText - gMail_NewFriendAreasText: - .string "The Wigglytuff Club has added new Friend\n" - .string "Areas for sale!\n" - .string "Rescue Teams are urged to check with\n" - .string "Wigglytuff for what is available.\n" - .string "By adding to your Friend Areas{COMMA} you can\n" - .string "recruit Pokémon that wouldn{APOSTROPHE}t join your\n" - .string "rescue team before!\0" - .align 2,0 - - .global gMail_NewFriendAreasHeadline - gMail_NewFriendAreasHeadline: - .string "New Friend Areas!\0" - .align 2,0 - - .global gMail_LucarioRankText - gMail_LucarioRankText: - .string "Congratulations! Your team has attained\n" - .string "the Lucario Rank--the top rank among\n" - .string "rescue teams! In commemoration of your\n" - .string "fantastic achievement{COMMA} we award you the\n" - .string "Lucario Statue{COMMA} crafted after the legendary\n" - .string "rescue team leader.\n" - .string "Keep working for world peace!\n" - .string " - Pokémon Rescue Organization -\0" - .align 2,0 - - .global gMail_LucarioRankHeadline - gMail_LucarioRankHeadline: - .string "Congratulations - Lucario Rank!\0" - - .global gMail_BuriedRelicText - gMail_BuriedRelicText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Mystery Ruin Found Underground!{END_COLOR_TEXT_1}\n" - .string "Its site had been hidden by the crater of a\n" - .string "meteor strike in ancient times. The Buried\n" - .string "Relic is thought to date back beyond\n" - .string "recorded history. There are rumors of\n" - .string "treasures... And perhaps even Pokémon\n" - .string "that lived in ancient times. The Buried\n" - .string "Relic is the main topic in Pokémon Square.\0" - .align 2,0 - - .global gMail_BuriedRelicHeadline - gMail_BuriedRelicHeadline: - .string "Buried Relic Discovered!\0" - .align 2,0 - - .global gMail_NewsText2 - gMail_NewsText2: - .string "{CENTER_ALIGN}{COLOR_1 CYAN}{ARG_POKEMON_0} Innocent! Part 2{END_COLOR_TEXT_1}\n" - .string "{COLOR_1 GREEN}Quote from Charizard on the scene:{END_COLOR_TEXT_1}\n" - .string "{QUOTE_START}That{APOSTROPHE}s what I thought right from\n" - .string "the start{COMMA} hahaha!{QUOTE_END}\n" - .string "{COLOR_1 GREEN}Quote from Tyranitar on the scene:{END_COLOR_TEXT_1}\n" - .string "{QUOTE_START}That muckraking Gengar...\n" - .string "He{APOSTROPHE}s not getting away with this!\n" - .string "He{APOSTROPHE}d better be ready for it!{QUOTE_END}\0" - .align 2,0 - - .global gMail_NewsHeadline2 - gMail_NewsHeadline2: - .string "Pokémon News Extra 2\0" - .align 2,0 - - .global gMail_NewsText1 - gMail_NewsText1: - .string "{CENTER_ALIGN}{COLOR_1 CYAN}{ARG_POKEMON_0} Innocent! Part 1{END_COLOR_TEXT_1}\n" - .string "{ARG_POKEMON_1} met with Ninetales on {COLOR_1 RED}Mt. Freeze{END_COLOR_TEXT_1}.\n" - .string "Ninetales testified that {ARG_POKEMON_0} was\n" - .string "not the human that appeared in the legend.\n" - .string "As a result{COMMA} Gengar{APOSTROPHE}s claims were found to\n" - .string "be malicious lies.\n" - .string "{COLOR_1 GREEN}The clearly dismayed Gengar{APOSTROPHE}s quote:{END_COLOR_TEXT_1}\n" - .string "{QUOTE_START}Ugegegegegegegegegegegeh!{QUOTE_END}\0" - .align 2,0 - - .global gMail_NewsHeadline1 - gMail_NewsHeadline1: - .string "Pokémon News Extra 1\0" - .align 2,0 - - .global gMail_PelipperText - gMail_PelipperText: - .string "Yo! Amigo! It{APOSTROPHE}s awesome you{APOSTROPHE}re back!\n" - .string "I{APOSTROPHE}ll be delivering mail to you again!\n" - .string "I{APOSTROPHE}ve been looking forward to this with\n" - .string "my bill outstretched!\n" - .string "I{APOSTROPHE}ll deliver tons of mail{COMMA} so you{APOSTROPHE}d better\n" - .string "be ready{COMMA} amigo!\n\n" - .string " - The wandering postal carrier{COMMA} Pelipper -\0" - .align 2,0 - - .global gMail_PelipperHeadline - gMail_PelipperHeadline: - .string "A Letter from Pelipper\0" - .align 2,0 - - .global gMail_LinkedProText2 - gMail_LinkedProText2: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Try These Linked Moves to KO Foes!{END_COLOR_TEXT_1}\n\n" - .string "Psyduck\n" - .string "{COLOR_1 GREEN}Confusion{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Disable{END_COLOR_TEXT_1}\n" - .string "Totodile\n" - .string "{COLOR_1 GREEN}Bite{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Scary Face{END_COLOR_TEXT_1}\n" - .string "Cyndaquil\n" - .string "{COLOR_1 GREEN}Flame Wheel{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Smokescreen{END_COLOR_TEXT_1}{EXTRA_MSG}" - .string "Pikachu\n" - .string "{COLOR_1 GREEN}Thunderbolt{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Double Team{END_COLOR_TEXT_1}\n" - .string "Skitty\n" - .string "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Doubleslap{END_COLOR_TEXT_1}\0" - .align 2,0 - - .global gMail_LinkedProHeadline2 - gMail_LinkedProHeadline2: - .string "#50 Linked Moves Pro Level 2\0" - .align 2,0 - - .global gMail_LinkedProText1 - gMail_LinkedProText1: - .string "{CENTER_ALIGN COLOR_1 YELLOW}These Linked Move Combinations{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}Can Be Devastating!{END_COLOR_TEXT_1}\n\n" - .string "Bulbasaur\n" - .string "{COLOR_1 GREEN}Razor Leaf{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Sleep Powder{END_COLOR_TEXT_1}\n" - .string "Chikorita\n" - .string "{COLOR_1 GREEN}Body Slam{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Reflect{END_COLOR_TEXT_1}{EXTRA_MSG}" - .string "Treecko\n" - .string "{COLOR_1 GREEN}Screech{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Pound{END_COLOR_TEXT_1}\n" - .string "Machop\n" - .string "{COLOR_1 GREEN}Focus Energy{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Karate Chop{END_COLOR_TEXT_1}\n" - .string "Cubone\n" - .string "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Bonemerang{END_COLOR_TEXT_1}\0" - .align 2,0 - - .global gMail_LinkedProHeadline1 - gMail_LinkedProHeadline1: - .string "#49 Linked Moves Pro Level 1\0" - .align 2,0 - - .global gMail_SlakothText - gMail_SlakothText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Relief for Delicate Souls Who Can{APOSTROPHE}t{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}Sleep with Different Pillows!{END_COLOR_TEXT_1}\n" - .string "Insomniacs rejoiced over the announcement\n" - .string "of the Slakoth Pillow{COMMA} which is said to\n" - .string "induce sleepiness just by seeing it.\n" - .string "Already the inventor is swamped with\n" - .string "inquiries from all over. However{COMMA}\n" - .string "production is said to be not yet ready.\0" - .align 2,0 - - .global gMail_SlakothHeadline - gMail_SlakothHeadline: - .string "#48 Slakoth Pillows for Insomnia!\0" - .align 2,0 - - .global gMail_PitfallText - gMail_PitfallText: - .string "As a result of the natural disasters{COMMA}\n" - .string "there have been many reports of Pitfall\n" - .string "Traps appearing in dungeons.\n" - .string "However{COMMA} there also appear to be pitfalls\n" - .string "made by Pokémon that are not harmful.\n" - .string "The latter are thought to be made by\n" - .string "foraging Swinub. Some even turn out to\n" - .string "be hot springs that erupt occasionally.\0" - .align 2,0 - - .global gMail_PitfallHeadline - gMail_PitfallHeadline: - .string "#47 Beware of Pitfalls\0" - .align 2,0 - - .global gMail_SeaRescueText - gMail_SeaRescueText: - .string "A high-seas rescue in the {COLOR_1 RED}Stormy Sea{END_COLOR_TEXT_1} by\n" - .string "{COLOR_1 CYAN}Team Sea Dragons{END_COLOR_TEXT_1} ended yesterday with\n" - .string "the successful recovery of Tentacool.\n" - .string "The client{COMMA} Corsola{COMMA} is said to be delighted\n" - .string "by the outcome.\n" - .string "Tentacool stated{COMMA} {QUOTE_START}I didn{APOSTROPHE}t realize how far\n" - .string "I{APOSTROPHE}d been washed out to sea.{QUOTE_END}\n" - .string "The {COLOR_1 RED}Stormy Sea{END_COLOR_TEXT_1} is unforgiving!\0" - .align 2,0 - - .global gMail_SeaRescueHeadline - gMail_SeaRescueHeadline: - .string "#46 Sea Rescue a Success!\0" - .align 2,0 - - .global gMail_VileplumeText - gMail_VileplumeText: - .string "Vileplume are widely recognized for \n" - .string "their massive flower. However{COMMA} few dare\n" - .string "to approach Vileplume because they\n" - .string "scatter clouds of allergy-inducing\n" - .string "pollen. Vileplume complain that they tire\n" - .string "very easily because the flower{APOSTROPHE}s weight\n" - .string "makes their head heavy.\0" - .align 2,0 - - .global gMail_VileplumeHeadline - gMail_VileplumeHeadline: - .string "#45 Vileplume{APOSTROPHE}s Weighty Problem\0" - .align 2,0 - - .global gMail_RawstText - gMail_RawstText: - .string "Research has revealed that {COLOR_1 GREEN}Rawst Berries{END_COLOR_TEXT_1}\n" - .string "found in dungeons are usually unripened\n" - .string "and colored green. When ripe{COMMA} they turn a\n" - .string "sky blue color. An unripened one is easier\n" - .string "to eat{COMMA} however{COMMA} because it has not yet\n" - .string "turned bitter. It is known to heal all\n" - .string "burns.\0" - .align 2,0 - - .global gMail_RawstHeadline - gMail_RawstHeadline: - .string "#44 Rawst Berry{APOSTROPHE}s Effect\0" - .align 2,0 - - .global gMail_ClubText - gMail_ClubText: - .string "We proudly announce the foundation of\n" - .string "the Red & Blue Fan Club{COMMA} an organization\n" - .string "for supporting Pokémon rescue teams.\n" - .string "We are currently recruiting new members.\n" - .string "Won{APOSTROPHE}t you join and throw your support\n" - .string "behind our hard-working rescue heroes?\n\n" - .string " - Plusle and Minun -\0" - .align 2,0 - - .global gMail_ClubHeadline - gMail_ClubHeadline: - .string "#43 Fan Club Seeks Members!\0" - .align 2,0 - - .global gMail_ChanseyText - gMail_ChanseyText: - .string "As a special treat{COMMA} I{APOSTROPHE}ll share a simple\n" - .string "way to tell fortunes with you!\n" - .string "The key is the first thing you find in the\n" - .string "day{APOSTROPHE}s first dungeon.\n" - .string "If it{APOSTROPHE}s money{COMMA} you{APOSTROPHE}ll be sure to make more.\n" - .string "If it{APOSTROPHE}s a Berry{COMMA} your health luck is good.\n" - .string "If it{APOSTROPHE}s an Apple{COMMA} you{APOSTROPHE}re super lucky!\n" - .string " - Chansey -\0" - .align 2,0 - - .global gMail_ChanseyHeadline - gMail_ChanseyHeadline: - .string "#42 Chansey{APOSTROPHE}s Fortune-Telling\0" - .align 2,0 - - .global gMail_KabutoText - gMail_KabutoText: - .string "One of our oldest residents claims to feel\n" - .string "rejuvenated. Kabuto reportedly had an\n" - .string "encounter with Relicanth in which both\n" - .string "parties reminisced about the {QUOTE_START}old days.{QUOTE_END}\n" - .string "However{COMMA} even Kabuto could not keep up\n" - .string "with Relicanth{APOSTROPHE}s tales from a hundred\n" - .string "million years ago. Kabuto stated{COMMA} {QUOTE_START}It\n" - .string "made me feel young talking to Relicanth.{QUOTE_END}\0" - .align 2,0 - - .global gMail_KabutoHeadline - gMail_KabutoHeadline: - .string "#41 Kabuto Feels Young Again!\0" - .align 2,0 - - .global gMail_SmeargleText - gMail_SmeargleText: - .string "Smeargle{COMMA} the artist known for his unique\n" - .string "artistic vision{COMMA} had a windfall day as one\n" - .string "of his paintings was auctioned for 300\n" - .string "million {POKE} yesterday. The auctioned\n" - .string "artwork was one of Smeargle{APOSTROPHE}s signature\n" - .string "works from early in his career.\0" - .align 2,0 - - .global gMail_SmeargleHeadline - gMail_SmeargleHeadline: - .string "#40 Smeargle Painting Auctioned!\0" - .align 2,0 - - .global gMail_CastformText - gMail_CastformText: - .string "Today{COMMA} the weather over Pokémon\n" - .string "Square promises to be clear with no\n" - .string "chance of showers.\n" - .string "Other regions can expect showers followed\n" - .string "by clouds. There may be sun breaks\n" - .string "depending on the day{APOSTROPHE}s moods.\0" - .align 2,0 - - .global gMail_CastformHeadline - gMail_CastformHeadline: - .string "#39 Castform{APOSTROPHE}s Daily Weather\0" - .align 2,0 - - .global gMail_GasText - gMail_GasText: - .string "Reports of a noxious gas leak caused\n" - .string "widespread chaos in the {COLOR_1 YELLOW_4}Sinister Woods{END_COLOR_TEXT_1}.\n" - .string "Specialists speculate that the recent\n" - .string "natural disasters are to blame. However{COMMA}\n" - .string "some also blame {COLOR_1 CYAN}Team Koffing{END_COLOR_TEXT_1}{APOSTROPHE}s training\n" - .string "in the area for the foul-smelling gas.\n" - .string "The answer{COMMA} apparently{COMMA} is blowing in the\n" - .string "wind.\0" - .align 2,0 - - .global gMail_GasHeadline - gMail_GasHeadline: - .string "#38 Noxious Gas Leak?!\0" - .align 2,0 - - .global gMail_KeyItemText2 - gMail_KeyItemText2: - .string "{CENTER_ALIGN COLOR_1 YELLOW}When Used Somewhere Special...{END_COLOR_TEXT_1}\n" - .string "Eevee and Water Stone{COMMA} Fire Stone{COMMA}\n" - .string "Thunderstone{COMMA} or...\n" - .string "Exeggcute and Leaf Stone...\n" - .string "Onix{COMMA} Metal Coat{COMMA} and Link Cable...\n" - .string "There appear to be many others!\0" - .align 2,0 - - .global gMail_KeyItemHeadline2 - gMail_KeyItemHeadline2: - .string "#37 Key Items for Pokémon 2\0" - .align 2,0 - - .global gMail_KeyItemText1 - gMail_KeyItemText1: - .string "{CENTER_ALIGN COLOR_1 YELLOW}When Used Somewhere Special...{END_COLOR_TEXT_1}\n" - .string "Sunkern and Sun Stone...\n" - .string "Skitty and Moon Stone...\n" - .string "Growlithe and Fire Stone...\n" - .string "Shellder and Water Stone...\n" - .string "Clamperl and Deepseatooth...\n" - .string "There appear to be many others!\0" - .align 2,0 - - .global gMail_KeyItemHeadline1 - gMail_KeyItemHeadline1: - .string "#36 Key Items for Pokémon 1\0" - .align 2,0 - - .global gMail_SwitchText - gMail_SwitchText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Power Up Combination Attacks!{END_COLOR_TEXT_1}\n" - .string "Some dungeons allow rescue teams to\n" - .string "switch leaders on the spot for doing\n" - .string "combination attacks and so on.\n" - .string "When you enter a dungeon{COMMA} open the menu{COMMA}\n" - .string "choose the Pokémon you want as the\n" - .string "leader under {COLOR_1 YELLOW}Team{END_COLOR_TEXT_1}{COMMA} then select the\n" - .string "command {COLOR_1 YELLOW}Leader{END_COLOR_TEXT_1}.\0" - .align 2,0 - - .global gMail_SwitchHeadline - gMail_SwitchHeadline: - .string "#35 Switching Leaders\0" - .align 2,0 - - .global gMail_KecleonText - gMail_KecleonText: - .string "There have been numerous reports that\n" - .string "the older of the Kecleon merchants in\n" - .string "Pokémon Square occasionally goes\n" - .string "missing. Some residents claim{COMMA} {QUOTE_START}He{APOSTROPHE}s\n" - .string "greedy. He must be off doing business\n" - .string "somewhere.{QUOTE_END} His younger brother denies\n" - .string "such claims: {QUOTE_START}He wouldn{APOSTROPHE}t get free items\n" - .string "in dungeons and try to sell them...{QUOTE_END}\0" - .align 2,0 - - .global gMail_KecleonHeadline - gMail_KecleonHeadline: - .string "#34 Where Is Kecleon?\0" - .align 2,0 - - .global gMail_WeatherText2 - gMail_WeatherText2: - .string "Clear: Pleasant weather.\n" - .string "Hail: Regularly inflicts damage{COMMA}\n" - .string "except on the Ice type.\n" - .string "Fog: Turns the status of all Pokémon on\n" - .string "the floor to Mud Sport.\n" - .string "Blizzard: Boosts the movement speed of\n" - .string "Ice-type Pokémon by one level.\0" - .align 2,0 - - .global gMail_WeatherHeadline2 - gMail_WeatherHeadline2: - .string "#33 Dungeons and Weather 2\0" - .align 2,0 - - .global gMail_WobbuffetText - gMail_WobbuffetText: - .string "Earlier today{COMMA} Wobbuffet reportedly\n" - .string "wobbled the wrong way and wandered off.\n" - .string "It had to be rescued by the famous\n" - .string "{COLOR_1 CYAN}Team Hydro{END_COLOR_TEXT_1}.\n" - .string "Fortunately{COMMA} the wayward wanderer\n" - .string "Wobbuffet was only wobbly and otherwise\n" - .string "unharmed.\0" - .align 2,0 - - .global gMail_WobbuffetHeadline - gMail_WobbuffetHeadline: - .string "#32 Wobbly Wobbuffet Wanders!\0" - .align 2,0 - - .global gMail_PechaText - gMail_PechaText: - .string "Among rescue teams{COMMA} there is growing\n" - .string "demand for equipment that is not only\n" - .string "practical{COMMA} but also fashionably appealing.\n" - .string "The pink {COLOR_1 GREEN}Pecha Scarf{END_COLOR_TEXT_1} is especially popular.\n" - .string "Even the {COLOR_1 CYAN}Kecleon Shop{END_COLOR_TEXT_1} is having trouble\n" - .string "keeping it in stock.\n" - .string "If you{APOSTROPHE}re lucky enough to spot one{COMMA} make a\n" - .string "beeline for it!\0" - .align 2,0 - - .global gMail_PechaHeadline - gMail_PechaHeadline: - .string "#31 Pecha Scarf--Top Popularity!\0" - .align 2,0 - - .global gMail_WeatherText1 - gMail_WeatherText1: - .string "Sunny: Boosts Fire-type moves{COMMA} and\n" - .string "weakens Water-type moves.\n" - .string "Sandstorm: Regularly inflicts damage\n" - .string "except on Ground{COMMA} Rock{COMMA} and Steel types.\n" - .string "Cloudy: All moves and attacks{COMMA} excluding\n" - .string "the Normal type{COMMA} are weakened.\n" - .string "Rain: Boosts Water-type moves{COMMA} and\n" - .string "weakens Fire. Prevents explosions.\0" - .align 2,0 - - .global gMail_WeatherHeadline1 - gMail_WeatherHeadline1: - .string "#30 Dungeons and Weather 1\0" - .align 2,0 - - .global gMail_AzurillText - gMail_AzurillText: - .string "With a simple act of courage{COMMA} Azurill\n" - .string "became a hero despite being small in size.\n" - .string "Azurill came across Slowpoke{COMMA} who had\n" - .string "fallen into a pond. Our hero{APOSTROPHE}s tail{COMMA} thrown\n" - .string "at the struggling Slowpoke{COMMA} saved a sure\n" - .string "drowning! Slowpoke claimed to have\n" - .string "entirely forgotten having the ability to\n" - .string "swim capably.\0" - .align 2,0 - - .global gMail_AzurillHeadline - gMail_AzurillHeadline: - .string "#29 Azurill--the Little Hero!\0" - .align 2,0 - - .global gMail_KeyText - gMail_KeyText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Head Out to the Desert Region!{END_COLOR_TEXT_1}\n" - .string "If you{APOSTROPHE}ve been wondering what lies behind\n" - .string "the mysterious locked doors of the {COLOR_1 YELLOW_4}Solar\n" - .string "Cave{END_COLOR_TEXT_1}{COMMA} there{APOSTROPHE}s been a breakthrough!\n" - .string "Reports indicate the door keys are easily\n" - .string "found in the {COLOR_1 YELLOW_4}Desert Region{END_COLOR_TEXT_1}. Explorers are\n" - .string "advised to compose teams with Pokémon\n" - .string "adapted to the desert environment.\0" - .align 2,0 - - .global gMail_KeyHeadline - gMail_KeyHeadline: - .string "#28 The Key\0" - .align 2,0 - - .global gMail_SweetText - gMail_SweetText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Feel a Little Envious?{END_COLOR_TEXT_1}\n" - .string "Teddiursa is often seen licking its paws\n" - .string "that have soaked up sweet honey. While it\n" - .string "may be sticky shaking paws with\n" - .string "Teddiursa{COMMA} one can{APOSTROPHE}t help but feel a\n" - .string "twinge of envy.\0" - .align 2,0 - - .global gMail_SweetHeadline - gMail_SweetHeadline: - .string "#27 Sweet Hands!\0" - .align 2,0 - - .global gMail_RangeText - gMail_RangeText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}All Moves Have Effective Ranges{END_COLOR_TEXT_1}\n" - .string "Moves that affect an entire room have a\n" - .string "range of two tiles in a corridor. The move\n" - .string "{COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{COMMA} which lowers the Attack stat of\n" - .string "foes in a room{COMMA} will reach two tiles away\n" - .string "in a corridor{COMMA} for example. If{COMMA} however{COMMA}\n" - .string "the visibility is limited to just one tile{COMMA}\n" - .string "the range of moves will also be limited.\0" - .align 2,0 - - .global gMail_RangeHeadline - gMail_RangeHeadline: - .string "#26 The Range of Moves\0" - .align 2,0 - - .global gMail_IQText - gMail_IQText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Make Your Explorations Easier by{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}Boosting the IQ of Team Members!{END_COLOR_TEXT_1}\n" - .string "Eating Gummis boosts the IQ of Pokémon.\n" - .string "Upon reaching certain IQ levels{COMMA} a Pokémon\n" - .string "learns IQ Skills that can be very helpful\n" - .string "(for example{COMMA} learning to seek out foes\n" - .string "with type disadvantages). Check\n" - .string "the IQ Skills of your team members!\0" - .align 2,0 - - .global gMail_IQHeadline - gMail_IQHeadline: - .string "#25 IQ\0" - .align 2,0 - - .global gMail_TrapTileText - gMail_TrapTileText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}New Types of Floor Tiles?{END_COLOR_TEXT_1}\n" - .string "There have been numerous reports of new\n" - .string "floor tiles other than Wonder Tiles.\n" - .string "Believed to have been made by the recent\n" - .string "natural disasters{COMMA} these floor tiles remain\n" - .string "hidden until they are stepped on. They then\n" - .string "trigger a variety of traps. Rescue teams\n" - .string "are urged to use extreme caution.\0" - .align 2,0 - - .global gMail_TrapTileHeadline - gMail_TrapTileHeadline: - .string "#24 New Floor Tiles?\0" - .align 2,0 - - .global gMail_MakuhitaText - gMail_MakuhitaText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Study Type Matchups{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}at the Makuhita Dojo!{END_COLOR_TEXT_1}\n" - .string "At the Makuhita Dojo{COMMA} one can learn how\n" - .string "Pokémon type matchups affect battles.\n" - .string "It{APOSTROPHE}s because the dojo{APOSTROPHE}s training rooms are\n" - .string "divided by type. For example{COMMA} in the {COLOR_1 YELLOW_4}Fire\n" - .string "Maze{END_COLOR_TEXT_1}{COMMA} there are only Fire-type Pokémon.\n" - .string "Try move types to see what works best!\0" - .align 2,0 - - .global gMail_MakuhitaHeadline - gMail_MakuhitaHeadline: - .string "#23 Train at the Makuhita Dojo!\0" - .align 2,0 - - .global gMail_MachineText - gMail_MachineText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}New Types of Machines Discovered?{END_COLOR_TEXT_1}\n" - .string "In a recently discovered cave{COMMA} explorers\n" - .string "found unique types of Technical Machines.\n" - .string "They apparently do not break after a single\n" - .string "use. Further studies are said to be under\n" - .string "consideration by the authorities.\n" - .string "In related news{COMMA} the cave is to be named\n" - .string "the {COLOR_1 YELLOW_4}Solar Cave{END_COLOR_TEXT_1}.\0" - .align 2,0 - - .global gMail_MachineHeadline - gMail_MachineHeadline: - .string "#22 New Types of Machines?\0" - .align 2,0 - - .global gMail_UltimateText - gMail_UltimateText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}The Ultimate Dungeon{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}Challenges You to Do Your Best!{END_COLOR_TEXT_1}\n" - .string "Somewhere in the world{COMMA} there supposedly\n" - .string "is an incredibly tough dungeon. One must\n" - .string "enter alone at Level 1{COMMA} and without any\n" - .string "items. No one has ever completed the\n" - .string "challenge. It is considered a test not of\n" - .string "power{COMMA} but of intelligence and wits.\0" - .align 2,0 - - .global gMail_UltimateHeadline - gMail_UltimateHeadline: - .string "#21 The Ultimate Dungeon\0" - .align 2,0 - - .global gMail_GummiText - gMail_GummiText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Gummis That Make You Smart{END_COLOR_TEXT_1}\n" - .string "Research has revealed that popular Gummi\n" - .string "treats not only enhance intelligence{COMMA} they\n" - .string "also have different effects depending on\n" - .string "type. Share Gummis with your friends and\n" - .string "get smarter for your adventures! In\n" - .string "dungeons{COMMA} throw them at your friends.\n" - .string "Use them in Friend Areas and...?\0" - .align 2,0 - - .global gMail_GummiHeadline - gMail_GummiHeadline: - .string "#20 Secrets of the Gummi\0" - .align 2,0 - - .global gMail_MoveTipsText - gMail_MoveTipsText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Moving Diagonally{END_COLOR_TEXT_1}\n" - .string "Move diagonally to avoid foes!\n" - .string "Keeping {R_BUTTON}" - .string " pressed{COMMA} use\n" - .byte 0x87 - .string "R to move diagonally.\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}Changing Direction{END_COLOR_TEXT_1}\n" - .string "It{APOSTROPHE}s also very important to change\n" - .string "directions without moving. Check Hints to\n" - .string "see how you can do this maneuver!\0" - .align 2,0 - - .global gMail_MoveTipsHeadline - gMail_MoveTipsHeadline: - .string "#19 Important Moving Tips\0" - .align 2,0 - - .global gMail_AddMembersText - gMail_AddMembersText: - .string "If you want to enlarge your rescue team{COMMA}\n" - .string "you must first get Friend Areas. When\n" - .string "a Pokémon that can live in an obtained\n" - .string "Friend Area is defeated{COMMA} it may ask to\n" - .string "join your rescue team. Add to your\n" - .string "Friend Areas so you can recruit more\n" - .string "members! Incidentally{COMMA} you may take no\n" - .string "more than three friends into a dungeon.\0" - .align 2,0 - - .global gMail_AddMembersHeadline - gMail_AddMembersHeadline: - .string "#18 Adding Team Members\0" - .align 2,0 - - .global gMail_TeamMoveText - gMail_TeamMoveText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Use Team Members Effectively!{END_COLOR_TEXT_1}\n" - .string "When you{APOSTROPHE}re fighting in a dungeon{COMMA} it{APOSTROPHE}s\n" - .string "important to use your team members. If\n" - .string "attacked from the side{COMMA} move horizontally.\n" - .string "If attacked from above or below{COMMA} move\n" - .string "vertically. That way{COMMA} you can have several\n" - .string "Pokémon fighting a single foe. Change\n" - .string "Tactics if members don{APOSTROPHE}t move properly.\0" - .align 2,0 - - .global gMail_TeamMoveHeadline - gMail_TeamMoveHeadline: - .string "#17 Moving as a Team\0" - .align 2,0 - - .global gMail_WondersText - gMail_WondersText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}The Seven Wonders of Pokémon?{END_COLOR_TEXT_1}\n" - .string "The mysterious feet of Diglett.\n" - .string "What is inside Forretress{APOSTROPHE}s shell.\n" - .string "The intelligence of Girafarig{APOSTROPHE}s tail.\n" - .string "Arbok{APOSTROPHE}s variety of patterns.\n" - .string "We await submissions from readers on\n" - .string "other Pokémon mysteries!\n" - .string " - Mystery Hunter Team -\0" - .align 2,0 - - .global gMail_WondersHeadline - gMail_WondersHeadline: - .string "#16 Seven Wonders of Pokémon\0" - .align 2,0 - - .global gMail_PollText - gMail_PollText: - .string "{COLOR_1 YELLOW}First#=2Gravelerock{END_COLOR_TEXT_1}\n" - .string "{COLOR_1 YELLOW}Second#=2Oran Berry{END_COLOR_TEXT_1}\n" - .string "In a nationwide survey involving rescue\n" - .string "teams{COMMA} the most popular item was found to\n" - .string "be {COLOR_1 GREEN}Gravelerocks{END_COLOR_TEXT_1}. According to Sudowoodo\n" - .string "of {COLOR_1 CYAN}Team Fakers{END_COLOR_TEXT_1}{COMMA} {QUOTE_START}It lets you attack\n" - .string "from far away. It{APOSTROPHE}s invaluable.{QUOTE_END} The next\n" - .string "most popular item was {COLOR_1 GREEN}Oran Berries{END_COLOR_TEXT_1}.\0" - .align 2,0 - - .global gMail_PollHeadline - gMail_PollHeadline: - .string "#15 Poll: Top Two Items\0" - .align 2,0 - - .global gMail_LinkedEntryText3 - gMail_LinkedEntryText3: - .string "{CENTER_ALIGN COLOR_1 YELLOW}These Are the Final Linked Moves{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}We Recommend in the Entry Level!{END_COLOR_TEXT_1}\n" - .string "{COLOR_1 RED}Electric and Water Types{END_COLOR_TEXT_1}\n" - .string "Pikachu\n" - .string "{COLOR_1 GREEN}Thundershock{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" - .string "Squirtle\n" - .string "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}{EXTRA_MSG}Totodile\n" - .string "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Scratch{END_COLOR_TEXT_1}\n" - .string "Mudkip\n" - .string "{COLOR_1 GREEN}Water Gun{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Mud-Slap{END_COLOR_TEXT_1}\n" - .string "Psyduck\n" - .string "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Scratch{END_COLOR_TEXT_1}\0" - .align 2,0 - - .global gMail_LinkedEntryHeadline3 - gMail_LinkedEntryHeadline3: - .string "#14 Linked Moves Entry Level 3\0" - .align 2,0 - - .global gMail_LinkedEntryText2 - gMail_LinkedEntryText2: - .string "{COLOR_1 RED}Fire and Normal Types{END_COLOR_TEXT_1}\n" - .string "Charmander\n" - .string "{COLOR_1 GREEN}Ember{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" - .string "Cyndaquil\n" - .string "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}\n" - .string "Torchic\n" - .string "{COLOR_1 GREEN}Ember{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{EXTRA_MSG}Eevee\n" - .string "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}\n" - .string "Meowth\n" - .string "{COLOR_1 GREEN}Scratch{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" - .string "Skitty\n" - .string "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}\0" - .align 2,0 - - .global gMail_LinkedEntryHeadline2 - gMail_LinkedEntryHeadline2: - .string "#13 Linked Moves Entry Level 2\0" - .align 2,0 - - .global gMail_LinkedEntryText1 - gMail_LinkedEntryText1: - .string "{CENTER_ALIGN COLOR_1 YELLOW}These Are the Recommended{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}Linked Moves for Beginners!{END_COLOR_TEXT_1}\n" - .string "{COLOR_1 RED}Grass{COMMA} Fighting{COMMA} and Ground Types{END_COLOR_TEXT_1}\n" - .string "Bulbasaur\n" - .string "{COLOR_1 GREEN}Vine Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" - .string "Chikorita\n" - .string "{COLOR_1 GREEN}Razor Leaf{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{EXTRA_MSG}Treecko\n" - .string "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Pound{END_COLOR_TEXT_1}\n" - .string "Machop\n" - .string "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Low Kick{END_COLOR_TEXT_1}\n" - .string "Cubone\n" - .string "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Bone Club{END_COLOR_TEXT_1}\0" - .align 2,0 - - .global gMail_LinkedEntryHeadline1 - gMail_LinkedEntryHeadline1: - .string "#12 Linked Moves Entry Level 1\0" - .align 2,0 - - .global gMail_TypeText - gMail_TypeText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Learn How Types Match Up!{END_COLOR_TEXT_1}\n" - .string "All Pokémon are of certain types{COMMA} such as\n" - .string "{COLOR_1 RED}Fire{END_COLOR_TEXT_1} and {COLOR_1 CYAN}Water{END_COLOR_TEXT_1}. In a battle{COMMA} the damage\n" - .string "inflicted depends on how the Pokémon{APOSTROPHE}s\n" - .string "type matches up with the move{APOSTROPHE}s type.\n" - .string "For example{COMMA} a {COLOR_1 RED}Fire{END_COLOR_TEXT_1}-type Pokémon is\n" - .string "weak against {COLOR_1 CYAN}Water{END_COLOR_TEXT_1}-type moves.\n" - .string "Exploit type matchups to win battles!\0" - .align 2,0 - - .global gMail_TypeHeadline - gMail_TypeHeadline: - .string "#11 Types and Matchups\0" - .align 2,0 - - .global gMail_DungeonText - gMail_DungeonText: - .string "If your rescue team is defeated in a\n" - .string "dungeon{COMMA} you lose several items and\n" - .string "all the money you are carrying.\n" - .string "Beware of what you{APOSTROPHE}re carrying before\n" - .string "you go off on a rescue or an outing.\n" - .string "Use {COLOR_1 CYAN}Kangaskhan Storage{END_COLOR_TEXT_1} to keep\n" - .string "invaluable items safely stored.\n" - .string " - Pokémon Rescue Organization -\0" - .align 2,0 - - .global gMail_DungeonHeadline - gMail_DungeonHeadline: - .string "#10 Mysterious Dungeons?\0" - .align 2,0 - - .global gMail_WonderText - gMail_WonderText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Wonder Tiles Reset Attack and Defense!{END_COLOR_TEXT_1}\n" - .string "If your Attack is lowered by a foe{APOSTROPHE}s\n" - .string "{COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{COMMA} or your Defense is lowered\n" - .string "by a foe{APOSTROPHE}s {COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1}{COMMA} for example{COMMA} the\n" - .string "affected stat can be reset to normal by\n" - .string "stepping on a Wonder Tile or going to the\n" - .string "next floor. Beware{COMMA} enhanced stats are\n" - .string "also reset to normal!\0" - .align 2,0 - - .global gMail_WonderHeadline - gMail_WonderHeadline: - .string "#9 Wonder Tiles\0" - .align 2,0 - - .global gMail_MoveText - gMail_MoveText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}The Benefits of Using Moves{END_COLOR_TEXT_1}\n" - .string "If a move is used on a foe{COMMA} when it is\n" - .string "defeated{COMMA} {COLOR_1 CYAN}you earn more Exp. Points{END_COLOR_TEXT_1}!\n" - .string "A move only has to be used once on the\n" - .string "foe: after that it can be defeated using a\n" - .string "regular attack to earn more Exp. Points.\n" - .string "Moves are also more likely to become\n" - .string "{COLOR_1 CYAN}critical hits{END_COLOR_TEXT_1}! Don{APOSTROPHE}t overuse them{COMMA} though!\0" - .align 2,0 - - .global gMail_MoveHeadline - gMail_MoveHeadline: - .string "#8 Let{APOSTROPHE}s Use Moves!\0" - .align 2,0 - - .global gMail_OptionsText - gMail_OptionsText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Change Your Option Settings{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}to Suit Your Play Style!{END_COLOR_TEXT_1}\n" - .string "Press {B_BUTTON} to open the menu{COMMA} then\n" - .string "choose {COLOR_1 YELLOW}Others{END_COLOR_TEXT_1} and {COLOR_1 YELLOW}Game Options{END_COLOR_TEXT_1}.\n" - .string "You can change settings to suit the way\n" - .string "you play.\0" - .align 2,0 - - .global gMail_OptionsHeadline - gMail_OptionsHeadline: - .string "#7 Game Options\0" - .align 2,0 - - .global gMail_DisasterText - gMail_DisasterText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Investigations Under Way into{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN COLOR_1 YELLOW}Recent Rash of Natural Disasters{END_COLOR_TEXT_1}\n" - .string "Pokémon in affected areas attack any\n" - .string "outsider without hesitation. Some believe\n" - .string "a mysterious force is behind their\n" - .string "behavior. One source blamed Diglett\n" - .string "for triggering earthquakes{COMMA} but the\n" - .string "investigative team is skeptical.\0" - .align 2,0 - - .global gMail_DisasterHeadline - gMail_DisasterHeadline: - .string "#6 Recent Natural Disasters\0" - .align 2,0 - - .global gMail_SeedText - gMail_SeedText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Seeds Can Be Thrown{COMMA} Too!{END_COLOR_TEXT_1}\n" - .string "Seeds are usually meant to be eaten.\n" - .string "But did you know? They can also be thrown\n" - .string "at other Pokémon to unlock their effects.\n" - .string "Toss seeds you don{APOSTROPHE}t want to eat at foes!\n" - .string "Throw good seeds at friends!\n" - .string "Don{APOSTROPHE}t be afraid to throw your seeds!\0" - .align 2,0 - - .global gMail_SeedHeadline - gMail_SeedHeadline: - .string "#5 Throw Seeds!\0" - .align 2,0 - - .global gMail_HungerText - gMail_HungerText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Eat Something When You Get Hungry!{END_COLOR_TEXT_1}\n" - .string "While you{APOSTROPHE}re exploring a dungeon{COMMA} you will\n" - .string "get progressively hungry (your Belly goes\n" - .string "down). If you become famished{COMMA} you will\n" - .string "eventually lose HP and even faint.\n" - .string "That{APOSTROPHE}s why you should eat something to fill\n" - .string "your Belly! You can always buy food at the\n" - .string "{COLOR_1 CYAN}Kecleon Shop{END_COLOR_TEXT_1}.\0" - .align 2,0 - - .global gMail_HungerHeadline - gMail_HungerHeadline: - .string "#4 Getting Hungry\0" - .align 2,0 - - .global gMail_JobText - gMail_JobText: - .string "If you want to go on a rescue job listed\n" - .string "on the Bulletin Board at the Pelipper Post\n" - .string "Office{COMMA} or one that{APOSTROPHE}s delivered to your\n" - .string "Mailbox{COMMA} you first need to {COLOR_1 YELLOW}Accept{END_COLOR_TEXT_1} the job{COMMA}\n" - .string "then choose {COLOR_1 YELLOW}Take Job{END_COLOR_TEXT_1}. Only then will you\n" - .string "be able to handle that job.\n" - .string "Try to do accepted jobs quickly!\n" - .string " - Pokémon Rescue Organization -\0" - .align 2,0 - - .global gMail_JobHeadline - gMail_JobHeadline: - .string "#3 Accepting Rescue Jobs\0" - .align 2,0 - - .global gMail_BasicsText - gMail_BasicsText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}Saving Your Adventure and Pokémon News{END_COLOR_TEXT_1}\n" - .string "You can save your adventure by going to\n" - .string "your bed. Get in the habit of saving often.\n" - .string "You should also store old Pokémon News.\n" - .string "If your Mailbox is full{COMMA} you won{APOSTROPHE}t get the\n" - .string "latest issue of the news or any job mail.\n" - .string "Check the Mailbox and store old news!\n" - .string " - Pokémon Rescue Organization -\0" - .align 2,0 - - .global gMail_BasicsHeadline - gMail_BasicsHeadline: - .string "#2 Rescue Team Basics\0" - .align 2,0 - - .global gMail_WelcomeText - gMail_WelcomeText: - .string "{CENTER_ALIGN COLOR_1 YELLOW}To All New Members!{END_COLOR_TEXT_1}\n" - .string "Your badge has the power to send back\n" - .string "to town any Pokémon you{APOSTROPHE}ve rescued. Just\n" - .string "hold the badge up{COMMA} and it does the rest.\n" - .string "By completing rescue jobs{COMMA} you will be\n" - .string "awarded points that raise your team{APOSTROPHE}s\n" - .string "ranking. Aim for the Bronze Rank for now!\n" - .string " - Pokémon Rescue Organization -\0" - .align 2,0 - - .global gMail_WelcomeHeadline - gMail_WelcomeHeadline: - .string "#1 Welcome to a Rescue Team!\0" - .align 2,0 - - .string "pksdir0\0" diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index f4e836c..29fda0a 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -34,7 +34,7 @@ struct DungeonEntityData /* 0x9 */ u8 level; /* 0xA */ u8 partyIndex; // Leader is 0, partner is 1, etc. u8 fillB; - /* 0xC */ u16 IQ; + /* 0xC */ s16 IQ; /* 0xE */ s16 HP; /* 0x10 */ s16 maxHP; // Bosses have higher HP than normal for their level. This is the max HP they would normally have given their level. @@ -60,7 +60,7 @@ struct DungeonEntityData /* 0x30 */ s32 specialAttackMultiplier; /* 0x34 */ s32 defenseMultiplier; /* 0x38 */ s32 specialDefenseMultiplier; - u8 fill3C[0x3E - 0x3C]; + /* 0x3C */ s16 hiddenPowerPower; /* 0x3E */ u8 hiddenPowerType; u8 fill3F; /* 0x40 */ u8 joinLocation; // Uses the dungeon index in dungeon.h. @@ -151,7 +151,7 @@ struct DungeonEntityData u8 fillF3; /* 0xF4 */ bool8 grudgeStatus; /* 0xF5 */ bool8 exposedStatus; - u8 fillF7; + u8 fillF6; /* 0xF7 */ bool8 isBoss; u8 fillF8[0xFA - 0xF8]; /* 0xFA */ u8 terrifiedTurnsLeft; // Doubles as a bool for whether the Pokémon is terrified. diff --git a/include/dungeon_pokemon_attributes_1.h b/include/dungeon_pokemon_attributes_1.h index ccf68e5..cdfa989 100644 --- a/include/dungeon_pokemon_attributes_1.h +++ b/include/dungeon_pokemon_attributes_1.h @@ -8,6 +8,14 @@ bool8 CanSeeInvisible(struct DungeonEntity *pokemon); // 0x718AC bool8 HasTactic(struct DungeonEntity *pokemon, u8 tactic); // 0x718D8 -bool8 HasIQSkill(struct DungeonEntity* pokemon, u8 IQSkill); +bool8 HasIQSkill(struct DungeonEntity *pokemon, u8 IQSkill); + +void LoadIQSkills(struct DungeonEntity *pokemon); +bool8 CanSeeTeammate(struct DungeonEntity * pokemon); +u8 GetMoveType_2(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove); + +// 0x71A44 +s32 CalculateMovePower(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove); +bool8 ToolboxEnabled(struct DungeonEntityData *pokemon); #endif diff --git a/include/pokemon_mail.h b/include/pokemon_mail.h new file mode 100644 index 0000000..600db74 --- /dev/null +++ b/include/pokemon_mail.h @@ -0,0 +1,15 @@ +#ifndef POKEMON_MAIL_H +#define POKEMON_MAIL_H + +struct PokemonMail +{ + const char *headline; + const char *text; +}; + +#define NUM_POKEMON_MAIL 56 + +const char *GetPokemonMailHeadline(u8 index); +const char *GetPokemonMailText(u8 index); + +#endif // POKEMON_MAIL_H diff --git a/ld_script.txt b/ld_script.txt index 198e3a1..0dce9c7 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,7 +226,7 @@ SECTIONS { src/dungeon_random.o(.text); asm/code_808411C.o(.text); src/dungeon_random_1.o(.text); - asm/code_8084160.o(.text); + asm/code_808417C.o(.text); src/code_80848F0.o(.text); asm/code_80848F0.o(.text); src/dungeon_util_1.o(.text); @@ -380,7 +380,7 @@ SECTIONS { src/wonder_mail_main_menu.o(.rodata); src/debug_menu.o(.rodata); data/data_80E7D40.o(.rodata); - data/pokemon_mail.o(.rodata); + src/pokemon_mail.o(.rodata); data/personality_test.o(.rodata); src/personality_test.o(.rodata); data/data_80F4278.o(.rodata); diff --git a/src/data/pokemon_mail.h b/src/data/pokemon_mail.h new file mode 100644 index 0000000..b53aa4f --- /dev/null +++ b/src/data/pokemon_mail.h @@ -0,0 +1,1176 @@ +// Forward declaration for the array of Mail +extern const u8 gMail_WelcomeHeadline[]; +extern const u8 gMail_WelcomeText[]; +extern const u8 gMail_BasicsHeadline[]; +extern const u8 gMail_BasicsText[]; +extern const u8 gMail_JobHeadline[]; +extern const u8 gMail_JobText[]; +extern const u8 gMail_HungerHeadline[]; +extern const u8 gMail_HungerText[]; +extern const u8 gMail_SeedHeadline[]; +extern const u8 gMail_SeedText[]; +extern const u8 gMail_DisasterHeadline[]; +extern const u8 gMail_DisasterText[]; +extern const u8 gMail_OptionsHeadline[]; +extern const u8 gMail_OptionsText[]; +extern const u8 gMail_MoveHeadline[]; +extern const u8 gMail_MoveText[]; +extern const u8 gMail_WonderHeadline[]; +extern const u8 gMail_WonderText[]; +extern const u8 gMail_DungeonHeadline[]; +extern const u8 gMail_DungeonText[]; +extern const u8 gMail_TypeHeadline[]; +extern const u8 gMail_TypeText[]; +extern const u8 gMail_LinkedEntryHeadline1[]; +extern const u8 gMail_LinkedEntryText1[]; +extern const u8 gMail_LinkedEntryHeadline2[]; +extern const u8 gMail_LinkedEntryText2[]; +extern const u8 gMail_LinkedEntryHeadline3[]; +extern const u8 gMail_LinkedEntryText3[]; +extern const u8 gMail_PollHeadline[]; +extern const u8 gMail_PollText[]; +extern const u8 gMail_WondersHeadline[]; +extern const u8 gMail_WondersText[]; +extern const u8 gMail_TeamMoveHeadline[]; +extern const u8 gMail_TeamMoveText[]; +extern const u8 gMail_AddMembersHeadline[]; +extern const u8 gMail_AddMembersText[]; +extern const u8 gMail_MoveTipsHeadline[]; +extern const u8 gMail_MoveTipsText[]; +extern const u8 gMail_GummiHeadline[]; +extern const u8 gMail_GummiText[]; +extern const u8 gMail_UltimateHeadline[]; +extern const u8 gMail_UltimateText[]; +extern const u8 gMail_MachineHeadline[]; +extern const u8 gMail_MachineText[]; +extern const u8 gMail_MakuhitaHeadline[]; +extern const u8 gMail_MakuhitaText[]; +extern const u8 gMail_TrapTileHeadline[]; +extern const u8 gMail_TrapTileText[]; +extern const u8 gMail_IQHeadline[]; +extern const u8 gMail_IQText[]; +extern const u8 gMail_RangeHeadline[]; +extern const u8 gMail_RangeText[]; +extern const u8 gMail_SweetHeadline[]; +extern const u8 gMail_SweetText[]; +extern const u8 gMail_KeyHeadline[]; +extern const u8 gMail_KeyText[]; +extern const u8 gMail_AzurillHeadline[]; +extern const u8 gMail_AzurillText[]; +extern const u8 gMail_WeatherHeadline1[]; +extern const u8 gMail_WeatherText1[]; +extern const u8 gMail_PechaHeadline[]; +extern const u8 gMail_PechaText[]; +extern const u8 gMail_WobbuffetHeadline[]; +extern const u8 gMail_WobbuffetText[]; +extern const u8 gMail_WeatherHeadline2[]; +extern const u8 gMail_WeatherText2[]; +extern const u8 gMail_KecleonHeadline[]; +extern const u8 gMail_KecleonText[]; +extern const u8 gMail_SwitchHeadline[]; +extern const u8 gMail_SwitchText[]; +extern const u8 gMail_KeyItemHeadline1[]; +extern const u8 gMail_KeyItemText1[]; +extern const u8 gMail_KeyItemHeadline2[]; +extern const u8 gMail_KeyItemText2[]; +extern const u8 gMail_GasHeadline[]; +extern const u8 gMail_GasText[]; +extern const u8 gMail_CastformHeadline[]; +extern const u8 gMail_CastformText[]; +extern const u8 gMail_SmeargleHeadline[]; +extern const u8 gMail_SmeargleText[]; +extern const u8 gMail_KabutoHeadline[]; +extern const u8 gMail_KabutoText[]; +extern const u8 gMail_ChanseyHeadline[]; +extern const u8 gMail_ChanseyText[]; +extern const u8 gMail_ClubHeadline[]; +extern const u8 gMail_ClubText[]; +extern const u8 gMail_RawstHeadline[]; +extern const u8 gMail_RawstText[]; +extern const u8 gMail_VileplumeHeadline[]; +extern const u8 gMail_VileplumeText[]; +extern const u8 gMail_SeaRescueHeadline[]; +extern const u8 gMail_SeaRescueText[]; +extern const u8 gMail_PitfallHeadline[]; +extern const u8 gMail_PitfallText[]; +extern const u8 gMail_SlakothHeadline[]; +extern const u8 gMail_SlakothText[]; +extern const u8 gMail_LinkedProHeadline1[]; +extern const u8 gMail_LinkedProText1[]; +extern const u8 gMail_LinkedProHeadline2[]; +extern const u8 gMail_LinkedProText2[]; +extern const u8 gMail_PelipperHeadline[]; +extern const u8 gMail_PelipperText[]; +extern const u8 gMail_NewsHeadline1[]; +extern const u8 gMail_NewsText1[]; +extern const u8 gMail_NewsHeadline2[]; +extern const u8 gMail_NewsText2[]; +extern const u8 gMail_BuriedRelicHeadline[]; +extern const u8 gMail_BuriedRelicText[]; +extern const u8 gMail_LucarioRankHeadline[]; +extern const u8 gMail_LucarioRankText[]; +extern const u8 gMail_NewFriendAreasHeadline[]; +extern const u8 gMail_NewFriendAreasText[]; + + +const struct PokemonMail gPokemonMail[NUM_POKEMON_MAIL] = +{ + { + .headline = gMail_WelcomeHeadline, + .text = gMail_WelcomeText, + }, + { + .headline = gMail_BasicsHeadline, + .text = gMail_BasicsText, + }, + { + .headline = gMail_JobHeadline, + .text = gMail_JobText, + }, + { + .headline = gMail_HungerHeadline, + .text = gMail_HungerText, + }, + { + .headline = gMail_SeedHeadline, + .text = gMail_SeedText, + }, + { + .headline = gMail_DisasterHeadline, + .text = gMail_DisasterText, + }, + { + .headline = gMail_OptionsHeadline, + .text = gMail_OptionsText, + }, + { + .headline = gMail_MoveHeadline, + .text = gMail_MoveText, + }, + { + .headline = gMail_WonderHeadline, + .text = gMail_WonderText, + }, + { + .headline = gMail_DungeonHeadline, + .text = gMail_DungeonText, + }, + { + .headline = gMail_TypeHeadline, + .text = gMail_TypeText, + }, + { + .headline = gMail_LinkedEntryHeadline1, + .text = gMail_LinkedEntryText1, + }, + { + .headline = gMail_LinkedEntryHeadline2, + .text = gMail_LinkedEntryText2, + }, + { + .headline = gMail_LinkedEntryHeadline3, + .text = gMail_LinkedEntryText3, + }, + { + .headline = gMail_PollHeadline, + .text = gMail_PollText, + }, + { + .headline = gMail_WondersHeadline, + .text = gMail_WondersText, + }, + { + .headline = gMail_TeamMoveHeadline, + .text = gMail_TeamMoveText, + }, + { + .headline = gMail_AddMembersHeadline, + .text = gMail_AddMembersText, + }, + { + .headline = gMail_MoveTipsHeadline, + .text = gMail_MoveTipsText, + }, + { + .headline = gMail_GummiHeadline, + .text = gMail_GummiText, + }, + { + .headline = gMail_UltimateHeadline, + .text = gMail_UltimateText, + }, + { + .headline = gMail_MachineHeadline, + .text = gMail_MachineText, + }, + { + .headline = gMail_MakuhitaHeadline, + .text = gMail_MakuhitaText, + }, + { + .headline = gMail_TrapTileHeadline, + .text = gMail_TrapTileText, + }, + { + .headline = gMail_IQHeadline, + .text = gMail_IQText, + }, + { + .headline = gMail_RangeHeadline, + .text = gMail_RangeText, + }, + { + .headline = gMail_SweetHeadline, + .text = gMail_SweetText, + }, + { + .headline = gMail_KeyHeadline, + .text = gMail_KeyText, + }, + { + .headline = gMail_AzurillHeadline, + .text = gMail_AzurillText, + }, + { + .headline = gMail_WeatherHeadline1, + .text = gMail_WeatherText1, + }, + { + .headline = gMail_PechaHeadline, + .text = gMail_PechaText, + }, + { + .headline = gMail_WobbuffetHeadline, + .text = gMail_WobbuffetText, + }, + { + .headline = gMail_WeatherHeadline2, + .text = gMail_WeatherText2, + }, + { + .headline = gMail_KecleonHeadline, + .text = gMail_KecleonText, + }, + { + .headline = gMail_SwitchHeadline, + .text = gMail_SwitchText, + }, + { + .headline = gMail_KeyItemHeadline1, + .text = gMail_KeyItemText1, + }, + { + .headline = gMail_KeyItemHeadline2, + .text = gMail_KeyItemText2, + }, + { + .headline = gMail_GasHeadline, + .text = gMail_GasText, + }, + { + .headline = gMail_CastformHeadline, + .text = gMail_CastformText, + }, + { + .headline = gMail_SmeargleHeadline, + .text = gMail_SmeargleText, + }, + { + .headline = gMail_KabutoHeadline, + .text = gMail_KabutoText, + }, + { + .headline = gMail_ChanseyHeadline, + .text = gMail_ChanseyText, + }, + { + .headline = gMail_ClubHeadline, + .text = gMail_ClubText, + }, + { + .headline = gMail_RawstHeadline, + .text = gMail_RawstText, + }, + { + .headline = gMail_VileplumeHeadline, + .text = gMail_VileplumeText, + }, + { + .headline = gMail_SeaRescueHeadline, + .text = gMail_SeaRescueText, + }, + { + .headline = gMail_PitfallHeadline, + .text = gMail_PitfallText, + }, + { + .headline = gMail_SlakothHeadline, + .text = gMail_SlakothText, + }, + { + .headline = gMail_LinkedProHeadline1, + .text = gMail_LinkedProText1, + }, + { + .headline = gMail_LinkedProHeadline2, + .text = gMail_LinkedProText2, + }, + { + .headline = gMail_PelipperHeadline, + .text = gMail_PelipperText, + }, + { + .headline = gMail_NewsHeadline1, + .text = gMail_NewsText1, + }, + { + .headline = gMail_NewsHeadline2, + .text = gMail_NewsText2, + }, + { + .headline = gMail_BuriedRelicHeadline, + .text = gMail_BuriedRelicText, + }, + { + .headline = gMail_LucarioRankHeadline, + .text = gMail_LucarioRankText, + }, + { + .headline = gMail_NewFriendAreasHeadline, + .text = gMail_NewFriendAreasText + } +}; + +ALIGNED(4) const u8 gMail_NewFriendAreasText[] = _( + "The Wigglytuff Club has added new Friend\n" + "Areas for sale!\n" + "Rescue Teams are urged to check with\n" + "Wigglytuff for what is available.\n" + "By adding to your Friend Areas{COMMA} you can\n" + "recruit Pokémon that wouldn{APOSTROPHE}t join your\n" + "rescue team before!"); + +ALIGNED(4) const u8 gMail_NewFriendAreasHeadline[] = "New Friend Areas!"; + +ALIGNED(4) const u8 gMail_LucarioRankText[] = _( + "Congratulations! Your team has attained\n" + "the Lucario Rank--the top rank among\n" + "rescue teams! In commemoration of your\n" + "fantastic achievement{COMMA} we award you the\n" + "Lucario Statue{COMMA} crafted after the legendary\n" + "rescue team leader.\n" + "Keep working for world peace!\n" + " - Pokémon Rescue Organization -"); + + +ALIGNED(4) const u8 gMail_LucarioRankHeadline[] = "Congratulations - Lucario Rank!"; + +ALIGNED(4) const u8 gMail_BuriedRelicText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Mystery Ruin Found Underground!{END_COLOR_TEXT_1}\n" + "Its site had been hidden by the crater of a\n" + "meteor strike in ancient times. The Buried\n" + "Relic is thought to date back beyond\n" + "recorded history. There are rumors of\n" + "treasures... And perhaps even Pokémon\n" + "that lived in ancient times. The Buried\n" + "Relic is the main topic in Pokémon Square."); + + +ALIGNED(4) const u8 gMail_BuriedRelicHeadline[] = + "Buried Relic Discovered!"; + + +ALIGNED(4) const u8 gMail_NewsText2[] = _( + "{CENTER_ALIGN}{COLOR_1 CYAN}{ARG_POKEMON_0} Innocent! Part 2{END_COLOR_TEXT_1}\n" + "{COLOR_1 GREEN}Quote from Charizard on the scene:{END_COLOR_TEXT_1}\n" + "{QUOTE_START}That{APOSTROPHE}s what I thought right from\n" + "the start{COMMA} hahaha!{QUOTE_END}\n" + "{COLOR_1 GREEN}Quote from Tyranitar on the scene:{END_COLOR_TEXT_1}\n" + "{QUOTE_START}That muckraking Gengar...\n" + "He{APOSTROPHE}s not getting away with this!\n" + "He{APOSTROPHE}d better be ready for it!{QUOTE_END}"); + + +ALIGNED(4) const u8 gMail_NewsHeadline2[] = _( + "Pokémon News Extra 2"); + + +ALIGNED(4) const u8 gMail_NewsText1[] = _( + "{CENTER_ALIGN}{COLOR_1 CYAN}{ARG_POKEMON_0} Innocent! Part 1{END_COLOR_TEXT_1}\n" + "{ARG_POKEMON_1} met with Ninetales on {COLOR_1 RED}Mt. Freeze{END_COLOR_TEXT_1}.\n" + "Ninetales testified that {ARG_POKEMON_0} was\n" + "not the human that appeared in the legend.\n" + "As a result{COMMA} Gengar{APOSTROPHE}s claims were found to\n" + "be malicious lies.\n" + "{COLOR_1 GREEN}The clearly dismayed Gengar{APOSTROPHE}s quote:{END_COLOR_TEXT_1}\n" + "{QUOTE_START}Ugegegegegegegegegegegeh!{QUOTE_END}"); + + +ALIGNED(4) const u8 gMail_NewsHeadline1[] = _( + "Pokémon News Extra 1"); + + +ALIGNED(4) const u8 gMail_PelipperText[] = _( + "Yo! Amigo! It{APOSTROPHE}s awesome you{APOSTROPHE}re back!\n" + "I{APOSTROPHE}ll be delivering mail to you again!\n" + "I{APOSTROPHE}ve been looking forward to this with\n" + "my bill outstretched!\n" + "I{APOSTROPHE}ll deliver tons of mail{COMMA} so you{APOSTROPHE}d better\n" + "be ready{COMMA} amigo!\n\n" + " - The wandering postal carrier{COMMA} Pelipper -"); + + +ALIGNED(4) const u8 gMail_PelipperHeadline[] = + "A Letter from Pelipper"; + + +ALIGNED(4) const u8 gMail_LinkedProText2[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Try These Linked Moves to KO Foes!{END_COLOR_TEXT_1}\n\n" + "Psyduck\n" + "{COLOR_1 GREEN}Confusion{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Disable{END_COLOR_TEXT_1}\n" + "Totodile\n" + "{COLOR_1 GREEN}Bite{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Scary Face{END_COLOR_TEXT_1}\n" + "Cyndaquil\n" + "{COLOR_1 GREEN}Flame Wheel{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Smokescreen{END_COLOR_TEXT_1}{EXTRA_MSG}" + "Pikachu\n" + "{COLOR_1 GREEN}Thunderbolt{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Double Team{END_COLOR_TEXT_1}\n" + "Skitty\n" + "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Doubleslap{END_COLOR_TEXT_1}"); + + +ALIGNED(4) const u8 gMail_LinkedProHeadline2[] = + "#50 Linked Moves Pro Level 2"; + + +ALIGNED(4) const u8 gMail_LinkedProText1[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}These Linked Move Combinations{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}Can Be Devastating!{END_COLOR_TEXT_1}\n\n" + "Bulbasaur\n" + "{COLOR_1 GREEN}Razor Leaf{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Sleep Powder{END_COLOR_TEXT_1}\n" + "Chikorita\n" + "{COLOR_1 GREEN}Body Slam{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Reflect{END_COLOR_TEXT_1}{EXTRA_MSG}" + "Treecko\n" + "{COLOR_1 GREEN}Screech{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Pound{END_COLOR_TEXT_1}\n" + "Machop\n" + "{COLOR_1 GREEN}Focus Energy{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Karate Chop{END_COLOR_TEXT_1}\n" + "Cubone\n" + "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Bonemerang{END_COLOR_TEXT_1}"); + + +ALIGNED(4) const u8 gMail_LinkedProHeadline1[] = + "#49 Linked Moves Pro Level 1"; + + +ALIGNED(4) const u8 gMail_SlakothText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Relief for Delicate Souls Who Can{APOSTROPHE}t{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}Sleep with Different Pillows!{END_COLOR_TEXT_1}\n" + "Insomniacs rejoiced over the announcement\n" + "of the Slakoth Pillow{COMMA} which is said to\n" + "induce sleepiness just by seeing it.\n" + "Already the inventor is swamped with\n" + "inquiries from all over. However{COMMA}\n" + "production is said to be not yet ready."); + + +ALIGNED(4) const u8 gMail_SlakothHeadline[] = + "#48 Slakoth Pillows for Insomnia!"; + + +ALIGNED(4) const u8 gMail_PitfallText[] = _( + "As a result of the natural disasters{COMMA}\n" + "there have been many reports of Pitfall\n" + "Traps appearing in dungeons.\n" + "However{COMMA} there also appear to be pitfalls\n" + "made by Pokémon that are not harmful.\n" + "The latter are thought to be made by\n" + "foraging Swinub. Some even turn out to\n" + "be hot springs that erupt occasionally."); + + +ALIGNED(4) const u8 gMail_PitfallHeadline[] = + "#47 Beware of Pitfalls"; + + +ALIGNED(4) const u8 gMail_SeaRescueText[] = _( + "A high-seas rescue in the {COLOR_1 RED}Stormy Sea{END_COLOR_TEXT_1} by\n" + "{COLOR_1 CYAN}Team Sea Dragons{END_COLOR_TEXT_1} ended yesterday with\n" + "the successful recovery of Tentacool.\n" + "The client{COMMA} Corsola{COMMA} is said to be delighted\n" + "by the outcome.\n" + "Tentacool stated{COMMA} {QUOTE_START}I didn{APOSTROPHE}t realize how far\n" + "I{APOSTROPHE}d been washed out to sea.{QUOTE_END}\n" + "The {COLOR_1 RED}Stormy Sea{END_COLOR_TEXT_1} is unforgiving!"); + + +ALIGNED(4) const u8 gMail_SeaRescueHeadline[] = + "#46 Sea Rescue a Success!"; + + +ALIGNED(4) const u8 gMail_VileplumeText[] = _( + "Vileplume are widely recognized for \n" + "their massive flower. However{COMMA} few dare\n" + "to approach Vileplume because they\n" + "scatter clouds of allergy-inducing\n" + "pollen. Vileplume complain that they tire\n" + "very easily because the flower{APOSTROPHE}s weight\n" + "makes their head heavy."); + + +ALIGNED(4) const u8 gMail_VileplumeHeadline[] = _( + "#45 Vileplume{APOSTROPHE}s Weighty Problem"); + + +ALIGNED(4) const u8 gMail_RawstText[] = _( + "Research has revealed that {COLOR_1 GREEN}Rawst Berries{END_COLOR_TEXT_1}\n" + "found in dungeons are usually unripened\n" + "and colored green. When ripe{COMMA} they turn a\n" + "sky blue color. An unripened one is easier\n" + "to eat{COMMA} however{COMMA} because it has not yet\n" + "turned bitter. It is known to heal all\n" + "burns."); + + +ALIGNED(4) const u8 gMail_RawstHeadline[] = _( + "#44 Rawst Berry{APOSTROPHE}s Effect"); + + +ALIGNED(4) const u8 gMail_ClubText[] = _( + "We proudly announce the foundation of\n" + "the Red & Blue Fan Club{COMMA} an organization\n" + "for supporting Pokémon rescue teams.\n" + "We are currently recruiting new members.\n" + "Won{APOSTROPHE}t you join and throw your support\n" + "behind our hard-working rescue heroes?\n\n" + " - Plusle and Minun -"); + + +ALIGNED(4) const u8 gMail_ClubHeadline[] = + "#43 Fan Club Seeks Members!"; + + +ALIGNED(4) const u8 gMail_ChanseyText[] = _( + "As a special treat{COMMA} I{APOSTROPHE}ll share a simple\n" + "way to tell fortunes with you!\n" + "The key is the first thing you find in the\n" + "day{APOSTROPHE}s first dungeon.\n" + "If it{APOSTROPHE}s money{COMMA} you{APOSTROPHE}ll be sure to make more.\n" + "If it{APOSTROPHE}s a Berry{COMMA} your health luck is good.\n" + "If it{APOSTROPHE}s an Apple{COMMA} you{APOSTROPHE}re super lucky!\n" + " - Chansey -"); + + +ALIGNED(4) const u8 gMail_ChanseyHeadline[] = _( + "#42 Chansey{APOSTROPHE}s Fortune-Telling"); + + +ALIGNED(4) const u8 gMail_KabutoText[] = _( + "One of our oldest residents claims to feel\n" + "rejuvenated. Kabuto reportedly had an\n" + "encounter with Relicanth in which both\n" + "parties reminisced about the {QUOTE_START}old days.{QUOTE_END}\n" + "However{COMMA} even Kabuto could not keep up\n" + "with Relicanth{APOSTROPHE}s tales from a hundred\n" + "million years ago. Kabuto stated{COMMA} {QUOTE_START}It\n" + "made me feel young talking to Relicanth.{QUOTE_END}"); + + +ALIGNED(4) const u8 gMail_KabutoHeadline[] = + "#41 Kabuto Feels Young Again!"; + + +ALIGNED(4) const u8 gMail_SmeargleText[] = _( + "Smeargle{COMMA} the artist known for his unique\n" + "artistic vision{COMMA} had a windfall day as one\n" + "of his paintings was auctioned for 300\n" + "million {POKE} yesterday. The auctioned\n" + "artwork was one of Smeargle{APOSTROPHE}s signature\n" + "works from early in his career."); + + +ALIGNED(4) const u8 gMail_SmeargleHeadline[] = + "#40 Smeargle Painting Auctioned!"; + + +ALIGNED(4) const u8 gMail_CastformText[] = _( + "Today{COMMA} the weather over Pokémon\n" + "Square promises to be clear with no\n" + "chance of showers.\n" + "Other regions can expect showers followed\n" + "by clouds. There may be sun breaks\n" + "depending on the day{APOSTROPHE}s moods."); + + +ALIGNED(4) const u8 gMail_CastformHeadline[] = _( + "#39 Castform{APOSTROPHE}s Daily Weather"); + + +ALIGNED(4) const u8 gMail_GasText[] = _( + "Reports of a noxious gas leak caused\n" + "widespread chaos in the {COLOR_1 YELLOW_4}Sinister Woods{END_COLOR_TEXT_1}.\n" + "Specialists speculate that the recent\n" + "natural disasters are to blame. However{COMMA}\n" + "some also blame {COLOR_1 CYAN}Team Koffing{END_COLOR_TEXT_1}{APOSTROPHE}s training\n" + "in the area for the foul-smelling gas.\n" + "The answer{COMMA} apparently{COMMA} is blowing in the\n" + "wind."); + + +ALIGNED(4) const u8 gMail_GasHeadline[] = + "#38 Noxious Gas Leak?!"; + + +ALIGNED(4) const u8 gMail_KeyItemText2[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}When Used Somewhere Special...{END_COLOR_TEXT_1}\n" + "Eevee and Water Stone{COMMA} Fire Stone{COMMA}\n" + "Thunderstone{COMMA} or...\n" + "Exeggcute and Leaf Stone...\n" + "Onix{COMMA} Metal Coat{COMMA} and Link Cable...\n" + "There appear to be many others!"); + + +ALIGNED(4) const u8 gMail_KeyItemHeadline2[] = _( + "#37 Key Items for Pokémon 2"); + + +ALIGNED(4) const u8 gMail_KeyItemText1[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}When Used Somewhere Special...{END_COLOR_TEXT_1}\n" + "Sunkern and Sun Stone...\n" + "Skitty and Moon Stone...\n" + "Growlithe and Fire Stone...\n" + "Shellder and Water Stone...\n" + "Clamperl and Deepseatooth...\n" + "There appear to be many others!"); + + +ALIGNED(4) const u8 gMail_KeyItemHeadline1[] = _( + "#36 Key Items for Pokémon 1"); + + +ALIGNED(4) const u8 gMail_SwitchText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Power Up Combination Attacks!{END_COLOR_TEXT_1}\n" + "Some dungeons allow rescue teams to\n" + "switch leaders on the spot for doing\n" + "combination attacks and so on.\n" + "When you enter a dungeon{COMMA} open the menu{COMMA}\n" + "choose the Pokémon you want as the\n" + "leader under {COLOR_1 YELLOW}Team{END_COLOR_TEXT_1}{COMMA} then select the\n" + "command {COLOR_1 YELLOW}Leader{END_COLOR_TEXT_1}."); + + +ALIGNED(4) const u8 gMail_SwitchHeadline[] = + "#35 Switching Leaders"; + + +ALIGNED(4) const u8 gMail_KecleonText[] = _( + "There have been numerous reports that\n" + "the older of the Kecleon merchants in\n" + "Pokémon Square occasionally goes\n" + "missing. Some residents claim{COMMA} {QUOTE_START}He{APOSTROPHE}s\n" + "greedy. He must be off doing business\n" + "somewhere.{QUOTE_END} His younger brother denies\n" + "such claims: {QUOTE_START}He wouldn{APOSTROPHE}t get free items\n" + "in dungeons and try to sell them...{QUOTE_END}"); + + +ALIGNED(4) const u8 gMail_KecleonHeadline[] = + "#34 Where Is Kecleon?"; + + +ALIGNED(4) const u8 gMail_WeatherText2[] = _( + "Clear: Pleasant weather.\n" + "Hail: Regularly inflicts damage{COMMA}\n" + "except on the Ice type.\n" + "Fog: Turns the status of all Pokémon on\n" + "the floor to Mud Sport.\n" + "Blizzard: Boosts the movement speed of\n" + "Ice-type Pokémon by one level."); + + +ALIGNED(4) const u8 gMail_WeatherHeadline2[] = + "#33 Dungeons and Weather 2"; + + +ALIGNED(4) const u8 gMail_WobbuffetText[] = _( + "Earlier today{COMMA} Wobbuffet reportedly\n" + "wobbled the wrong way and wandered off.\n" + "It had to be rescued by the famous\n" + "{COLOR_1 CYAN}Team Hydro{END_COLOR_TEXT_1}.\n" + "Fortunately{COMMA} the wayward wanderer\n" + "Wobbuffet was only wobbly and otherwise\n" + "unharmed."); + + +ALIGNED(4) const u8 gMail_WobbuffetHeadline[] = + "#32 Wobbly Wobbuffet Wanders!"; + + +ALIGNED(4) const u8 gMail_PechaText[] = _( + "Among rescue teams{COMMA} there is growing\n" + "demand for equipment that is not only\n" + "practical{COMMA} but also fashionably appealing.\n" + "The pink {COLOR_1 GREEN}Pecha Scarf{END_COLOR_TEXT_1} is especially popular.\n" + "Even the {COLOR_1 CYAN}Kecleon Shop{END_COLOR_TEXT_1} is having trouble\n" + "keeping it in stock.\n" + "If you{APOSTROPHE}re lucky enough to spot one{COMMA} make a\n" + "beeline for it!"); + + +ALIGNED(4) const u8 gMail_PechaHeadline[] = + "#31 Pecha Scarf--Top Popularity!"; + + +ALIGNED(4) const u8 gMail_WeatherText1[] = _( + "Sunny: Boosts Fire-type moves{COMMA} and\n" + "weakens Water-type moves.\n" + "Sandstorm: Regularly inflicts damage\n" + "except on Ground{COMMA} Rock{COMMA} and Steel types.\n" + "Cloudy: All moves and attacks{COMMA} excluding\n" + "the Normal type{COMMA} are weakened.\n" + "Rain: Boosts Water-type moves{COMMA} and\n" + "weakens Fire. Prevents explosions."); + + +ALIGNED(4) const u8 gMail_WeatherHeadline1[] = + "#30 Dungeons and Weather 1"; + + +ALIGNED(4) const u8 gMail_AzurillText[] = _( + "With a simple act of courage{COMMA} Azurill\n" + "became a hero despite being small in size.\n" + "Azurill came across Slowpoke{COMMA} who had\n" + "fallen into a pond. Our hero{APOSTROPHE}s tail{COMMA} thrown\n" + "at the struggling Slowpoke{COMMA} saved a sure\n" + "drowning! Slowpoke claimed to have\n" + "entirely forgotten having the ability to\n" + "swim capably."); + + +ALIGNED(4) const u8 gMail_AzurillHeadline[] = + "#29 Azurill--the Little Hero!"; + + +ALIGNED(4) const u8 gMail_KeyText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Head Out to the Desert Region!{END_COLOR_TEXT_1}\n" + "If you{APOSTROPHE}ve been wondering what lies behind\n" + "the mysterious locked doors of the {COLOR_1 YELLOW_4}Solar\n" + "Cave{END_COLOR_TEXT_1}{COMMA} there{APOSTROPHE}s been a breakthrough!\n" + "Reports indicate the door keys are easily\n" + "found in the {COLOR_1 YELLOW_4}Desert Region{END_COLOR_TEXT_1}. Explorers are\n" + "advised to compose teams with Pokémon\n" + "adapted to the desert environment."); + + +ALIGNED(4) const u8 gMail_KeyHeadline[] = + "#28 The Key"; + + +ALIGNED(4) const u8 gMail_SweetText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Feel a Little Envious?{END_COLOR_TEXT_1}\n" + "Teddiursa is often seen licking its paws\n" + "that have soaked up sweet honey. While it\n" + "may be sticky shaking paws with\n" + "Teddiursa{COMMA} one can{APOSTROPHE}t help but feel a\n" + "twinge of envy."); + +ALIGNED(4) const u8 gMail_SweetHeadline[] = + "#27 Sweet Hands!"; + + +ALIGNED(4) const u8 gMail_RangeText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}All Moves Have Effective Ranges{END_COLOR_TEXT_1}\n" + "Moves that affect an entire room have a\n" + "range of two tiles in a corridor. The move\n" + "{COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{COMMA} which lowers the Attack stat of\n" + "foes in a room{COMMA} will reach two tiles away\n" + "in a corridor{COMMA} for example. If{COMMA} however{COMMA}\n" + "the visibility is limited to just one tile{COMMA}\n" + "the range of moves will also be limited."); + + +ALIGNED(4) const u8 gMail_RangeHeadline[] = + "#26 The Range of Moves"; + + +ALIGNED(4) const u8 gMail_IQText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Make Your Explorations Easier by{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}Boosting the IQ of Team Members!{END_COLOR_TEXT_1}\n" + "Eating Gummis boosts the IQ of Pokémon.\n" + "Upon reaching certain IQ levels{COMMA} a Pokémon\n" + "learns IQ Skills that can be very helpful\n" + "(for example{COMMA} learning to seek out foes\n" + "with type disadvantages). Check\n" + "the IQ Skills of your team members!"); + + +ALIGNED(4) const u8 gMail_IQHeadline[] = + "#25 IQ"; + + +ALIGNED(4) const u8 gMail_TrapTileText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}New Types of Floor Tiles?{END_COLOR_TEXT_1}\n" + "There have been numerous reports of new\n" + "floor tiles other than Wonder Tiles.\n" + "Believed to have been made by the recent\n" + "natural disasters{COMMA} these floor tiles remain\n" + "hidden until they are stepped on. They then\n" + "trigger a variety of traps. Rescue teams\n" + "are urged to use extreme caution."); + + +ALIGNED(4) const u8 gMail_TrapTileHeadline[] = + "#24 New Floor Tiles?"; + + +ALIGNED(4) const u8 gMail_MakuhitaText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Study Type Matchups{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}at the Makuhita Dojo!{END_COLOR_TEXT_1}\n" + "At the Makuhita Dojo{COMMA} one can learn how\n" + "Pokémon type matchups affect battles.\n" + "It{APOSTROPHE}s because the dojo{APOSTROPHE}s training rooms are\n" + "divided by type. For example{COMMA} in the {COLOR_1 YELLOW_4}Fire\n" + "Maze{END_COLOR_TEXT_1}{COMMA} there are only Fire-type Pokémon.\n" + "Try move types to see what works best!"); + + +ALIGNED(4) const u8 gMail_MakuhitaHeadline[] = + "#23 Train at the Makuhita Dojo!"; + + +ALIGNED(4) const u8 gMail_MachineText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}New Types of Machines Discovered?{END_COLOR_TEXT_1}\n" + "In a recently discovered cave{COMMA} explorers\n" + "found unique types of Technical Machines.\n" + "They apparently do not break after a single\n" + "use. Further studies are said to be under\n" + "consideration by the authorities.\n" + "In related news{COMMA} the cave is to be named\n" + "the {COLOR_1 YELLOW_4}Solar Cave{END_COLOR_TEXT_1}."); + + +ALIGNED(4) const u8 gMail_MachineHeadline[] = + "#22 New Types of Machines?"; + + +ALIGNED(4) const u8 gMail_UltimateText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}The Ultimate Dungeon{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}Challenges You to Do Your Best!{END_COLOR_TEXT_1}\n" + "Somewhere in the world{COMMA} there supposedly\n" + "is an incredibly tough dungeon. One must\n" + "enter alone at Level 1{COMMA} and without any\n" + "items. No one has ever completed the\n" + "challenge. It is considered a test not of\n" + "power{COMMA} but of intelligence and wits."); + + +ALIGNED(4) const u8 gMail_UltimateHeadline[] = + "#21 The Ultimate Dungeon"; + + +ALIGNED(4) const u8 gMail_GummiText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Gummis That Make You Smart{END_COLOR_TEXT_1}\n" + "Research has revealed that popular Gummi\n" + "treats not only enhance intelligence{COMMA} they\n" + "also have different effects depending on\n" + "type. Share Gummis with your friends and\n" + "get smarter for your adventures! In\n" + "dungeons{COMMA} throw them at your friends.\n" + "Use them in Friend Areas and...?"); + + +ALIGNED(4) const u8 gMail_GummiHeadline[] = + "#20 Secrets of the Gummi"; + + +ALIGNED(4) const u8 gMail_MoveTipsText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Moving Diagonally{END_COLOR_TEXT_1}\n" + "Move diagonally to avoid foes!\n" + "Keeping {R_BUTTON}" + " pressed{COMMA} use\n" + "{DPAD} to move diagonally.\n" + "{CENTER_ALIGN COLOR_1 YELLOW}Changing Direction{END_COLOR_TEXT_1}\n" + "It{APOSTROPHE}s also very important to change\n" + "directions without moving. Check Hints to\n" + "see how you can do this maneuver!"); + + +ALIGNED(4) const u8 gMail_MoveTipsHeadline[] = + "#19 Important Moving Tips"; + + +ALIGNED(4) const u8 gMail_AddMembersText[] = _( + "If you want to enlarge your rescue team{COMMA}\n" + "you must first get Friend Areas. When\n" + "a Pokémon that can live in an obtained\n" + "Friend Area is defeated{COMMA} it may ask to\n" + "join your rescue team. Add to your\n" + "Friend Areas so you can recruit more\n" + "members! Incidentally{COMMA} you may take no\n" + "more than three friends into a dungeon."); + + +ALIGNED(4) const u8 gMail_AddMembersHeadline[] = + "#18 Adding Team Members"; + + +ALIGNED(4) const u8 gMail_TeamMoveText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Use Team Members Effectively!{END_COLOR_TEXT_1}\n" + "When you{APOSTROPHE}re fighting in a dungeon{COMMA} it{APOSTROPHE}s\n" + "important to use your team members. If\n" + "attacked from the side{COMMA} move horizontally.\n" + "If attacked from above or below{COMMA} move\n" + "vertically. That way{COMMA} you can have several\n" + "Pokémon fighting a single foe. Change\n" + "Tactics if members don{APOSTROPHE}t move properly."); + + +ALIGNED(4) const u8 gMail_TeamMoveHeadline[] = + "#17 Moving as a Team"; + + +ALIGNED(4) const u8 gMail_WondersText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}The Seven Wonders of Pokémon?{END_COLOR_TEXT_1}\n" + "The mysterious feet of Diglett.\n" + "What is inside Forretress{APOSTROPHE}s shell.\n" + "The intelligence of Girafarig{APOSTROPHE}s tail.\n" + "Arbok{APOSTROPHE}s variety of patterns.\n" + "We await submissions from readers on\n" + "other Pokémon mysteries!\n" + " - Mystery Hunter Team -"); + + +ALIGNED(4) const u8 gMail_WondersHeadline[] = _( + "#16 Seven Wonders of Pokémon"); + + +ALIGNED(4) const u8 gMail_PollText[] = _( + "{COLOR_1 YELLOW}First#=2Gravelerock{END_COLOR_TEXT_1}\n" + "{COLOR_1 YELLOW}Second#=2Oran Berry{END_COLOR_TEXT_1}\n" + "In a nationwide survey involving rescue\n" + "teams{COMMA} the most popular item was found to\n" + "be {COLOR_1 GREEN}Gravelerocks{END_COLOR_TEXT_1}. According to Sudowoodo\n" + "of {COLOR_1 CYAN}Team Fakers{END_COLOR_TEXT_1}{COMMA} {QUOTE_START}It lets you attack\n" + "from far away. It{APOSTROPHE}s invaluable.{QUOTE_END} The next\n" + "most popular item was {COLOR_1 GREEN}Oran Berries{END_COLOR_TEXT_1}."); + + +ALIGNED(4) const u8 gMail_PollHeadline[] = + "#15 Poll: Top Two Items"; + + +ALIGNED(4) const u8 gMail_LinkedEntryText3[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}These Are the Final Linked Moves{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}We Recommend in the Entry Level!{END_COLOR_TEXT_1}\n" + "{COLOR_1 RED}Electric and Water Types{END_COLOR_TEXT_1}\n" + "Pikachu\n" + "{COLOR_1 GREEN}Thundershock{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" + "Squirtle\n" + "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}{EXTRA_MSG}Totodile\n" + "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Scratch{END_COLOR_TEXT_1}\n" + "Mudkip\n" + "{COLOR_1 GREEN}Water Gun{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Mud-Slap{END_COLOR_TEXT_1}\n" + "Psyduck\n" + "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Scratch{END_COLOR_TEXT_1}"); + + +ALIGNED(4) const u8 gMail_LinkedEntryHeadline3[] = + "#14 Linked Moves Entry Level 3"; + + +ALIGNED(4) const u8 gMail_LinkedEntryText2[] = _( + "{COLOR_1 RED}Fire and Normal Types{END_COLOR_TEXT_1}\n" + "Charmander\n" + "{COLOR_1 GREEN}Ember{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" + "Cyndaquil\n" + "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}\n" + "Torchic\n" + "{COLOR_1 GREEN}Ember{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{EXTRA_MSG}Eevee\n" + "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}\n" + "Meowth\n" + "{COLOR_1 GREEN}Scratch{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" + "Skitty\n" + "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Tackle{END_COLOR_TEXT_1}"); + + +ALIGNED(4) const u8 gMail_LinkedEntryHeadline2[] = + "#13 Linked Moves Entry Level 2"; + + +ALIGNED(4) const u8 gMail_LinkedEntryText1[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}These Are the Recommended{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}Linked Moves for Beginners!{END_COLOR_TEXT_1}\n" + "{COLOR_1 RED}Grass{COMMA} Fighting{COMMA} and Ground Types{END_COLOR_TEXT_1}\n" + "Bulbasaur\n" + "{COLOR_1 GREEN}Vine Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}\n" + "Chikorita\n" + "{COLOR_1 GREEN}Razor Leaf{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{EXTRA_MSG}Treecko\n" + "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Pound{END_COLOR_TEXT_1}\n" + "Machop\n" + "{COLOR_1 GREEN}Leer{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Low Kick{END_COLOR_TEXT_1}\n" + "Cubone\n" + "{COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1} + {COLOR_1 GREEN}Bone Club{END_COLOR_TEXT_1}"); + + +ALIGNED(4) const u8 gMail_LinkedEntryHeadline1[] = + "#12 Linked Moves Entry Level 1"; + + +ALIGNED(4) const u8 gMail_TypeText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Learn How Types Match Up!{END_COLOR_TEXT_1}\n" + "All Pokémon are of certain types{COMMA} such as\n" + "{COLOR_1 RED}Fire{END_COLOR_TEXT_1} and {COLOR_1 CYAN}Water{END_COLOR_TEXT_1}. In a battle{COMMA} the damage\n" + "inflicted depends on how the Pokémon{APOSTROPHE}s\n" + "type matches up with the move{APOSTROPHE}s type.\n" + "For example{COMMA} a {COLOR_1 RED}Fire{END_COLOR_TEXT_1}-type Pokémon is\n" + "weak against {COLOR_1 CYAN}Water{END_COLOR_TEXT_1}-type moves.\n" + "Exploit type matchups to win battles!"); + + +ALIGNED(4) const u8 gMail_TypeHeadline[] = + "#11 Types and Matchups"; + + +ALIGNED(4) const u8 gMail_DungeonText[] = _( + "If your rescue team is defeated in a\n" + "dungeon{COMMA} you lose several items and\n" + "all the money you are carrying.\n" + "Beware of what you{APOSTROPHE}re carrying before\n" + "you go off on a rescue or an outing.\n" + "Use {COLOR_1 CYAN}Kangaskhan Storage{END_COLOR_TEXT_1} to keep\n" + "invaluable items safely stored.\n" + " - Pokémon Rescue Organization -"); + + +ALIGNED(4) const u8 gMail_DungeonHeadline[] = + "#10 Mysterious Dungeons?"; + + +ALIGNED(4) const u8 gMail_WonderText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Wonder Tiles Reset Attack and Defense!{END_COLOR_TEXT_1}\n" + "If your Attack is lowered by a foe{APOSTROPHE}s\n" + "{COLOR_1 GREEN}Growl{END_COLOR_TEXT_1}{COMMA} or your Defense is lowered\n" + "by a foe{APOSTROPHE}s {COLOR_1 GREEN}Tail Whip{END_COLOR_TEXT_1}{COMMA} for example{COMMA} the\n" + "affected stat can be reset to normal by\n" + "stepping on a Wonder Tile or going to the\n" + "next floor. Beware{COMMA} enhanced stats are\n" + "also reset to normal!"); + + +ALIGNED(4) const u8 gMail_WonderHeadline[] = + "#9 Wonder Tiles"; + + +ALIGNED(4) const u8 gMail_MoveText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}The Benefits of Using Moves{END_COLOR_TEXT_1}\n" + "If a move is used on a foe{COMMA} when it is\n" + "defeated{COMMA} {COLOR_1 CYAN}you earn more Exp. Points{END_COLOR_TEXT_1}!\n" + "A move only has to be used once on the\n" + "foe: after that it can be defeated using a\n" + "regular attack to earn more Exp. Points.\n" + "Moves are also more likely to become\n" + "{COLOR_1 CYAN}critical hits{END_COLOR_TEXT_1}! Don{APOSTROPHE}t overuse them{COMMA} though!"); + + +ALIGNED(4) const u8 gMail_MoveHeadline[] = _( + "#8 Let{APOSTROPHE}s Use Moves!"); + + +ALIGNED(4) const u8 gMail_OptionsText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Change Your Option Settings{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}to Suit Your Play Style!{END_COLOR_TEXT_1}\n" + "Press {B_BUTTON} to open the menu{COMMA} then\n" + "choose {COLOR_1 YELLOW}Others{END_COLOR_TEXT_1} and {COLOR_1 YELLOW}Game Options{END_COLOR_TEXT_1}.\n" + "You can change settings to suit the way\n" + "you play."); + + +ALIGNED(4) const u8 gMail_OptionsHeadline[] = + "#7 Game Options"; + + +ALIGNED(4) const u8 gMail_DisasterText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Investigations Under Way into{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN COLOR_1 YELLOW}Recent Rash of Natural Disasters{END_COLOR_TEXT_1}\n" + "Pokémon in affected areas attack any\n" + "outsider without hesitation. Some believe\n" + "a mysterious force is behind their\n" + "behavior. One source blamed Diglett\n" + "for triggering earthquakes{COMMA} but the\n" + "investigative team is skeptical."); + + +ALIGNED(4) const u8 gMail_DisasterHeadline[] = + "#6 Recent Natural Disasters"; + + +ALIGNED(4) const u8 gMail_SeedText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Seeds Can Be Thrown{COMMA} Too!{END_COLOR_TEXT_1}\n" + "Seeds are usually meant to be eaten.\n" + "But did you know? They can also be thrown\n" + "at other Pokémon to unlock their effects.\n" + "Toss seeds you don{APOSTROPHE}t want to eat at foes!\n" + "Throw good seeds at friends!\n" + "Don{APOSTROPHE}t be afraid to throw your seeds!"); + + +ALIGNED(4) const u8 gMail_SeedHeadline[] = + "#5 Throw Seeds!"; + + +ALIGNED(4) const u8 gMail_HungerText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Eat Something When You Get Hungry!{END_COLOR_TEXT_1}\n" + "While you{APOSTROPHE}re exploring a dungeon{COMMA} you will\n" + "get progressively hungry (your Belly goes\n" + "down). If you become famished{COMMA} you will\n" + "eventually lose HP and even faint.\n" + "That{APOSTROPHE}s why you should eat something to fill\n" + "your Belly! You can always buy food at the\n" + "{COLOR_1 CYAN}Kecleon Shop{END_COLOR_TEXT_1}."); + + +ALIGNED(4) const u8 gMail_HungerHeadline[] = + "#4 Getting Hungry"; + + +ALIGNED(4) const u8 gMail_JobText[] = _( + "If you want to go on a rescue job listed\n" + "on the Bulletin Board at the Pelipper Post\n" + "Office{COMMA} or one that{APOSTROPHE}s delivered to your\n" + "Mailbox{COMMA} you first need to {COLOR_1 YELLOW}Accept{END_COLOR_TEXT_1} the job{COMMA}\n" + "then choose {COLOR_1 YELLOW}Take Job{END_COLOR_TEXT_1}. Only then will you\n" + "be able to handle that job.\n" + "Try to do accepted jobs quickly!\n" + " - Pokémon Rescue Organization -"); + + +ALIGNED(4) const u8 gMail_JobHeadline[] = + "#3 Accepting Rescue Jobs"; + + +ALIGNED(4) const u8 gMail_BasicsText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}Saving Your Adventure and Pokémon News{END_COLOR_TEXT_1}\n" + "You can save your adventure by going to\n" + "your bed. Get in the habit of saving often.\n" + "You should also store old Pokémon News.\n" + "If your Mailbox is full{COMMA} you won{APOSTROPHE}t get the\n" + "latest issue of the news or any job mail.\n" + "Check the Mailbox and store old news!\n" + " - Pokémon Rescue Organization -"); + + +ALIGNED(4) const u8 gMail_BasicsHeadline[] = + "#2 Rescue Team Basics"; + + +ALIGNED(4) const u8 gMail_WelcomeText[] = _( + "{CENTER_ALIGN COLOR_1 YELLOW}To All New Members!{END_COLOR_TEXT_1}\n" + "Your badge has the power to send back\n" + "to town any Pokémon you{APOSTROPHE}ve rescued. Just\n" + "hold the badge up{COMMA} and it does the rest.\n" + "By completing rescue jobs{COMMA} you will be\n" + "awarded points that raise your team{APOSTROPHE}s\n" + "ranking. Aim for the Bronze Rank for now!\n" + " - Pokémon Rescue Organization -"); + +ALIGNED(4) const u8 gMail_WelcomeHeadline[] = "#1 Welcome to a Rescue Team!"; + +static const u8 pokemon_mail_fill[] = "pksdir0"; diff --git a/src/dungeon_ai_items.c b/src/dungeon_ai_items.c index fc10e85..4afc928 100644 --- a/src/dungeon_ai_items.c +++ b/src/dungeon_ai_items.c @@ -33,7 +33,6 @@ enum ItemTargetFlag extern s32 CalculateFacingDir(struct Position*, struct Position*); extern u32 EvaluateItem(struct DungeonEntity*, struct ItemSlot*, u8); -extern bool8 ToolboxEnabled(struct DungeonEntityData*); extern void sub_8077274(struct DungeonEntity *, struct DungeonEntity *); extern void TargetThrownItem(struct DungeonEntity*, struct DungeonEntity*, struct ItemSlot*, u8, bool8); diff --git a/src/dungeon_pokemon_attributes_1.c b/src/dungeon_pokemon_attributes_1.c index 02e9af0..d3b8cab 100644 --- a/src/dungeon_pokemon_attributes_1.c +++ b/src/dungeon_pokemon_attributes_1.c @@ -1,12 +1,28 @@ #include "global.h" +#include "dungeon_global_data.h" #include "dungeon_pokemon_attributes_1.h" +#include "dungeon_util.h" +#include "pokemon.h" +#include "constants/dungeon.h" +#include "constants/iq_skill.h" +#include "constants/move_id.h" #include "constants/status.h" #include "constants/tactic.h" -extern bool8 IsIQSkillSet(u8 *, u32); +extern s16 gItemMasterMinWildLevel; + extern u8 HasItem(struct DungeonEntity *, u32); +extern bool8 IsIQSkillSet(u8 *, u32); +extern void SetIQSkill(u8 *param_1, u32 skillIndex); +extern bool8 HasIQForSkill(s32 pokeIQ, u8 IQSkillIndex); + +extern bool8 CanSee(struct DungeonEntity *, struct DungeonEntity *); + +extern u8 GetMoveType(struct PokemonMove *move); +extern s32 GetMovePower(struct PokemonMove *move); + bool8 CanSeeInvisible(struct DungeonEntity *pokemon) { struct DungeonEntityData *pokemonData = pokemon->entityData; @@ -32,12 +48,114 @@ bool8 HasTactic(struct DungeonEntity *pokemon, u8 tactic) return pokemonData->tactic == tactic; } -bool8 HasIQSkill(struct DungeonEntity* pokemon, u8 IQSkill) +bool8 HasIQSkill(struct DungeonEntity *pokemon, u8 IQSkill) { return IsIQSkillSet(pokemon->entityData->IQSkillsEnabled, 1 << IQSkill); } -bool8 HasIQSkillPair(struct DungeonEntity* pokemon, u8 IQSkill1, u8 IQSkill2) +bool8 HasIQSkillPair(struct DungeonEntity *pokemon, u8 IQSkill1, u8 IQSkill2) { return IsIQSkillSet(pokemon->entityData->IQSkillsEnabled, 1 << IQSkill1 | 1 << IQSkill2); } + +void LoadIQSkills(struct DungeonEntity *pokemon) +{ + u8 *iVar2; + s32 IQSkill; + struct DungeonEntityData *pokemonData; + + pokemonData = pokemon->entityData; + if (pokemonData->isEnemy) { + iVar2 = pokemonData->IQSkillsEnabled; + SetIQSkill(iVar2, IQ_SKILL_STATUS_CHECKER); + SetIQSkill(iVar2, IQ_SKILL_PP_CHECKER); + SetIQSkill(iVar2, IQ_SKILL_ITEM_CATCHER); + if (pokemonData->isBoss) + SetIQSkill(iVar2, IQ_SKILL_SELF_CURER); + if (pokemonData->level >= gItemMasterMinWildLevel) + SetIQSkill(iVar2, IQ_SKILL_ITEM_MASTER); + pokemonData->tactic = TACTIC_GO_AFTER_FOES; + } + else { + pokemonData->IQSkillsEnabled[0] = 0; + pokemonData->IQSkillsEnabled[1] = 0; + pokemonData->IQSkillsEnabled[2] = 0; + for(IQSkill = IQ_SKILL_TYPE_ADVANTAGE_MASTER; IQSkill < NUM_IQ_SKILLS; IQSkill++) + { + if (HasIQForSkill(pokemonData->IQ,IQSkill) && + IsIQSkillSet(pokemonData->IQSkillsSelected, 1 << IQSkill)) + { + SetIQSkill(pokemonData->IQSkillsEnabled,IQSkill); + } + } + } +} + +bool8 CanSeeTeammate(struct DungeonEntity * pokemon) +{ + struct DungeonEntity *teamMember; + s32 memberIdx; + + if (pokemon->entityData->isEnemy) { + return FALSE; + } + else + { + for(memberIdx = 0; memberIdx < MAX_TEAM_MEMBERS; memberIdx++) + { + teamMember = gDungeonGlobalData->teamPokemon[memberIdx]; + if (EntityExists(pokemon) && (pokemon != teamMember) && (CanSee(pokemon,teamMember))) + { + return TRUE; + } + } + return FALSE; + } +} + +u8 GetMoveType_2(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove) +{ + if(pokeMove->moveID == MOVE_HIDDEN_POWER) + return pokemon->entityData->hiddenPowerType; + else + return GetMoveType(pokeMove); +} + +s32 CalculateMovePower(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove) +{ + if(pokeMove->moveID == MOVE_HIDDEN_POWER) + return (pokemon->entityData->hiddenPowerPower + pokeMove->powerBoost); + else + return (GetMovePower(pokeMove) + pokeMove->powerBoost); +} + +bool8 ToolboxEnabled(struct DungeonEntityData *pokemon) +{ + if(!IsToolboxEnabled(pokemon->entityID)) + return FALSE; + return TRUE; +} + +static inline bool8 sub_8071A8C_sub(struct DungeonEntityData *pokemonData) +{ + if(pokemonData->joinLocation == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON || + pokemonData->joinLocation == DUNGEON_RESCUE_TEAM_BASE) + return TRUE; + else + return FALSE; +} + +bool8 sub_8071A8C(struct DungeonEntity *pokemon) +{ + struct DungeonEntityData *pokemonData; + if(EntityExists(pokemon)) + { + pokemonData = pokemon->entityData; + if(pokemonData->clientType != CLIENT_TYPE_CLIENT) + { + if(!sub_8071A8C_sub(pokemonData)) + return TRUE; + } + } + return FALSE; +} diff --git a/src/dungeon_random.c b/src/dungeon_random.c index 86b1c79..6f180d3 100644 --- a/src/dungeon_random.c +++ b/src/dungeon_random.c @@ -3,6 +3,11 @@ extern u32 gDungeonRngState; +void SetDungeonRNG(u32 value) +{ + gDungeonRngState = (value | 1); +} + s32 DungeonRandom(void) { gDungeonRngState = 1566083941 * gDungeonRngState + 1; diff --git a/src/dungeon_random_1.c b/src/dungeon_random_1.c index a6941f3..418a51c 100644 --- a/src/dungeon_random_1.c +++ b/src/dungeon_random_1.c @@ -11,3 +11,12 @@ bool8 RollPercentChance(s32 percentChance) } return FALSE; } + +bool8 RollPercentChance_2(s32 percentChance) +{ + if (DungeonRandomCapped(100) < percentChance) + { + return TRUE; + } + return FALSE; +} diff --git a/src/moves.c b/src/moves.c index 0f59f0b..e5998db 100644 --- a/src/moves.c +++ b/src/moves.c @@ -246,7 +246,7 @@ u8 GetMoveHitCount(struct PokemonMove *move) return gMovesData[move->moveID].hitCount; } -s16 GetMovePower(struct PokemonMove *move) +s32 GetMovePower(struct PokemonMove *move) { return gMovesData[move->moveID].power; } diff --git a/src/pokemon_mail.c b/src/pokemon_mail.c index 365bafd..a3d8fae 100644 --- a/src/pokemon_mail.c +++ b/src/pokemon_mail.c @@ -1,20 +1,13 @@ #include "global.h" +#include "pokemon_mail.h" +#include "data/pokemon_mail.h" -struct Pokemon_Mail -{ - char *headline; - char *text; -}; - -extern struct Pokemon_Mail gPokemonMail[]; - -char *GetPokemonMailHeadline(u8 index) +const char *GetPokemonMailHeadline(u8 index) { return gPokemonMail[index].headline; } - -char *GetPokemonMailText(u8 index) +const char *GetPokemonMailText(u8 index) { return gPokemonMail[index].text; } diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c index 3f47b0a..791749a 100644 --- a/src/pokemon_mid.c +++ b/src/pokemon_mid.c @@ -642,7 +642,7 @@ void GetPokemonLevelData(struct LevelData* a1, s16 _id, s32 a3) *a1 = gLevelCurrentData[a3]; } -u8* sub_808E07C(u8* a1, u16* a2) +u8* sub_808E07C(u8* a1, u16* moveID) { u32 r1 = *a1++; u32 r3; @@ -657,13 +657,13 @@ u8* sub_808E07C(u8* a1, u16* a2) // wrong order r1 &= 0x7f; r3 &= 0x7f; - *a2 = (r1 << 7) | r3; + *moveID = (r1 << 7) | r3; #else { register u32 mask asm("r0") = 0x7f; r3 &= mask; r1 &= mask; - *a2 = (r1 << 7) | r3; + *moveID = (r1 << 7) | r3; } #endif return a1; @@ -672,7 +672,7 @@ u8* sub_808E07C(u8* a1, u16* a2) s32 sub_808E0AC(u16* a1, s16 species, s32 a3, s32 IQPoints) { u8* stream; - u16 result; // struct? + u16 moveID; // moveID s32 count; register s32 _species asm("r2"); // weird regalloc @@ -690,7 +690,7 @@ s32 sub_808E0AC(u16* a1, s16 species, s32 a3, s32 IQPoints) u8 v12; // read from stream - stream = sub_808E07C(stream, &result); + stream = sub_808E07C(stream, &moveID); v12 = *stream++; if (v12 > a3) @@ -699,14 +699,14 @@ s32 sub_808E0AC(u16* a1, s16 species, s32 a3, s32 IQPoints) bool8 cond = 1; // NOTE: these moves require IQ to be > 333 - if ((result == MOVE_FRENZY_PLANT) && (IQPoints < gFrenzyPlantIQReq)) cond = 0; - if ((result == MOVE_HYDRO_CANNON) && (IQPoints < gHydroCannonIQReq)) cond = 0; - if ((result == MOVE_BLAST_BURN) && (IQPoints < gBlastBurnIQReq)) cond = 0; - if ((result == MOVE_VOLT_TACKLE) && (IQPoints < gVoltTackleIQReq)) cond = 0; + if ((moveID == MOVE_FRENZY_PLANT) && (IQPoints < gFrenzyPlantIQReq)) cond = 0; + if ((moveID == MOVE_HYDRO_CANNON) && (IQPoints < gHydroCannonIQReq)) cond = 0; + if ((moveID == MOVE_BLAST_BURN) && (IQPoints < gBlastBurnIQReq)) cond = 0; + if ((moveID == MOVE_VOLT_TACKLE) && (IQPoints < gVoltTackleIQReq)) cond = 0; if (cond) { if (count < 16) { - *a1++ = result; + *a1++ = moveID; ++count; } } @@ -732,7 +732,7 @@ bool8 CanMonLearnMove(u16 moveID, s16 _species) ptr = sub_808E07C(ptr, &result); ptr++; if (moveID == result) { - return 1; + return TRUE; } } @@ -740,10 +740,10 @@ bool8 CanMonLearnMove(u16 moveID, s16 _species) while (*ptr) { ptr = sub_808E07C(ptr, &result2); if (result2 == moveID) { - return 1; + return TRUE; } } - return 0; + return FALSE; } @@ -899,12 +899,12 @@ s32 sub_808E400(s32 _species, s16* _a2, s32 _a3, s32 _a4) void sub_808E490(struct PokemonMove* a1, s16 species) { - u16 buffer[0x10]; + u16 buffer[0x10]; // of moveIDs s32 i; s32 count = sub_808E0AC(buffer, species, 1, 999); if (count == 0) { count = 1; - buffer[0] = 408; + buffer[0] = MOVE_ITEM_TOSS; } i = 0; diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index fe4fdbc..3ce4aa2 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -2,6 +2,7 @@ #include "file_system.h" #include "input.h" #include "pokemon.h" +#include "pokemon_mail.h" #include "memory.h" #include "text.h" #include "menu.h" @@ -61,7 +62,7 @@ struct unkStruct_203B2D4 /* 0x4 */ u8 currMailIndex; s32 unk8; s32 unkC; - u8 *unk10[4]; + const u8 *unk10[4]; u32 unk20; u32 unk24; struct UnkTextStruct2 unk28[4]; @@ -161,21 +162,19 @@ extern u8 gUnknown_80DFC04[]; extern u8 gUnknown_80DFBE8[]; extern struct UnkTextStruct2 gUnknown_80DFC74; extern struct UnkTextStruct2 gUnknown_80DFC5C; -extern char *GetPokemonMailHeadline(u8 index); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_802BC7C(void); extern void sub_80073E0(u32); extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32); extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32); -extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32); +extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32); extern void sub_803B6B0(u32, u32, u32, u32); extern s32 sub_8013800(u32 *, s32); extern void sub_802BCC4(void); extern void sub_802BB14(u32); extern void sub_801317C(u32 *); -char *GetPokemonMailText(u8 index); extern u8 HasNoMailinMailbox(void); extern void sub_802BF30(void); extern void CreateMailMenu(void); @@ -756,7 +755,7 @@ void sub_802BC7C(void) void sub_802BCC4(void) { - char *mailTextPtr; + const char *mailTextPtr; mailTextPtr = GetPokemonMailText(gUnknown_203B2D4->currMailIndex); gUnknown_203B2D4->unkC = 0; |