summaryrefslogtreecommitdiff
path: root/src/pokemon/pokemon_summary_screen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokemon/pokemon_summary_screen.c')
-rw-r--r--src/pokemon/pokemon_summary_screen.c180
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++);
+}