diff options
Diffstat (limited to 'src/pokemon/pokemon_summary_screen.c')
-rw-r--r-- | src/pokemon/pokemon_summary_screen.c | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c new file mode 100644 index 000000000..00a0bea29 --- /dev/null +++ b/src/pokemon/pokemon_summary_screen.c @@ -0,0 +1,180 @@ +#include "global.h" +#include "pokemon_summary_screen.h" +#include "link.h" +#include "menu.h" +#include "pokemon.h" +#include "region_map.h" +#include "string_util.h" +#include "strings2.h" +#include "tv.h" + +extern struct Pokemon *unk_2018000; + +bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon) +{ + u32 trainerId; + + if (unk_2018000 == gEnemyParty) + { + u8 enemyId = GetMultiplayerId() ^ 1; + trainerId = gLinkPlayers[enemyId].trainerId & 0xFFFF; + StringCopy(gStringVar1, gLinkPlayers[enemyId].name); + StripExtCtrlCodes(gStringVar1); + } + else + { + trainerId = GetPlayerTrainerId() & 0xFFFF; + StringCopy(gStringVar1, gSaveBlock2.playerName); + } + + if (trainerId != (GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF)) + return FALSE; + + GetMonData(mon, MON_DATA_OT_NAME, gStringVar2); + + if (!StringCompareWithoutExtCtrlCodes(gStringVar1, gStringVar2)) + return TRUE; + + return FALSE; +} + +void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 top) +{ + u8 locationMet; + u8 gameMet = GetMonData(mon, MON_DATA_MET_GAME); + + if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD)) + { + MenuPrint(gOtherText_EggObtainedInTrade, left, top); + return; + } + + locationMet = GetMonData(mon, MON_DATA_MET_LOCATION); + + if (locationMet == 255) + { + MenuPrint(gOtherText_EggNicePlace, left, top); + return; + } + + if (!PokemonSummaryScreen_CheckOT(mon)) + { + MenuPrint(gOtherText_EggObtainedInTrade, left, top); + return; + } + + asm(""); // needed to match for some reason + + if (locationMet == 253) + { + MenuPrint(gOtherText_EggHotSprings, left, top); + return; + } + + MenuPrint(gOtherText_EggDayCare, left, top); +} + +void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 top) +{ + u8 locationMet; + u8 gameMet; + u8 *ptr = gStringVar4; + u8 nature = GetNature(pokemon); + +#if ENGLISH + ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14); + + if (nature != NATURE_BOLD && nature != NATURE_GENTLE) + { + ptr = StringCopy(ptr, gOtherText_Terminator4); + } + + ptr = StringCopy(ptr, gOtherText_Nature); +#elif GERMAN + ptr = StringCopy(gStringVar4, gOtherText_Nature); + ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14); + ptr = StringCopy(ptr, gOtherText_Terminator4); +#endif + + if (PokemonSummaryScreen_CheckOT(pokemon) == TRUE) + { + locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION); + + if (GetMonData(pokemon, MON_DATA_MET_LEVEL) == 0) + { + ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, 5); + *ptr = CHAR_NEWLINE; + ptr++; + + CopyLocationName(gStringVar1, locationMet); + ptr = sub_80A1E9C(ptr, gStringVar1, 14); + StringCopy(ptr, gOtherText_Egg2); + } + else if (locationMet >= 88) + { + *ptr = CHAR_NEWLINE; + ptr++; + + StringCopy(ptr, gOtherText_ObtainedInTrade); + } + else + { + u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL); + + ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet); + *ptr = CHAR_NEWLINE; + ptr++; + + CopyLocationName(gStringVar1, locationMet); + ptr = sub_80A1E9C(ptr, gStringVar1, 14); + StringCopy(ptr, gOtherText_Met); + } + } + else + { + gameMet = GetMonData(pokemon, MON_DATA_MET_GAME); + + if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD)) + { + *ptr = CHAR_NEWLINE; + ptr++; + + StringCopy(ptr, gOtherText_ObtainedInTrade); + } + else + { + locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION); + if (locationMet == 0xFF) + { + u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL); + + ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet); + *ptr = CHAR_NEWLINE; + ptr++; + + StringCopy(ptr, gOtherText_FatefulEncounter); + } + else if (locationMet >= 88) + { + *ptr = CHAR_NEWLINE; + ptr++; + + StringCopy(ptr, gOtherText_ObtainedInTrade); + } + else + { + u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL); + + ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet); + *ptr = CHAR_NEWLINE; + ptr++; + + CopyLocationName(gStringVar1, locationMet); + ptr = sub_80A1E9C(ptr, gStringVar1, 14); + StringCopy(ptr, gOtherText_Met2); + } + } + } + + MenuPrint(gStringVar4, left++, top++); +} |