diff options
Diffstat (limited to 'src')
-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 |
9 files changed, 1335 insertions, 36 deletions
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; |