diff options
author | Diegoisawesome <diego@domoreaweso.me> | 2018-11-06 11:33:21 -0600 |
---|---|---|
committer | Diegoisawesome <diego@domoreaweso.me> | 2018-11-06 11:33:21 -0600 |
commit | 43a8534fced2c4327acdd8dc9690f5bc6751e2db (patch) | |
tree | 33797ee29121db198f87afe10e4f2d27bc5cc9ec /src | |
parent | f8d337e491f531285f6067e2e7f39a8d606036d6 (diff) | |
parent | 32d2640dc728055923b0e6120277093fcae5e9c3 (diff) |
Merge remote-tracking branch 'origin/master' into render_text
Diffstat (limited to 'src')
-rw-r--r-- | src/load_save.c | 2 | ||||
-rw-r--r-- | src/post_battle_event_funcs.c | 94 |
2 files changed, 95 insertions, 1 deletions
diff --git a/src/load_save.c b/src/load_save.c index 005af7c42..45b4d200b 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -144,7 +144,7 @@ void ClearSecretBase2Field_9(void) gSaveBlock2Ptr->specialSaveWarp &= ~1; } -void sub_8076D48(void) +void SetSecretBase2Field_9(void) { gSaveBlock2Ptr->specialSaveWarp |= 1; } diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c new file mode 100644 index 000000000..f15396102 --- /dev/null +++ b/src/post_battle_event_funcs.c @@ -0,0 +1,94 @@ +#include "global.h" +#include "main.h" +#include "credits.h" +#include "event_data.h" +#include "hall_of_fame.h" +#include "load_save.h" +#include "overworld.h" +#include "script_pokemon_util_80F87D8.h" +#include "tv.h" +#include "constants/heal_locations.h" +#include "constants/flags.h" + +int GameClear(void) +{ + int i; + bool32 ribbonGet; + struct RibbonCounter { + u8 partyIndex; + u8 count; + } ribbonCounts[6]; + s8 val; + + HealPlayerParty(); + + if (FlagGet(FLAG_SYS_GAME_CLEAR) == TRUE) + { + gHasHallOfFameRecords = TRUE; + } + else + { + gHasHallOfFameRecords = FALSE; + FlagSet(FLAG_SYS_GAME_CLEAR); + } + + if (GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME) == 0) + SetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME, (gSaveBlock2Ptr->playTimeHours << 16) | (gSaveBlock2Ptr->playTimeMinutes << 8) | gSaveBlock2Ptr->playTimeSeconds); + + SetSecretBase2Field_9(); + + if (gSaveBlock2Ptr->playerGender == MALE) + sub_8084F6C(HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F); + else + sub_8084F6C(HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F); + + ribbonGet = FALSE; + + for (i = 0; i < 6; i++) + { + struct Pokemon *mon = &gPlayerParty[i]; + + ribbonCounts[i].partyIndex = i; + ribbonCounts[i].count = 0; + + if (GetMonData(mon, MON_DATA_SANITY_BIT2) + && !GetMonData(mon, MON_DATA_SANITY_BIT3) + && !GetMonData(mon, MON_DATA_CHAMPION_RIBBON)) + { + u8 val[1] = {TRUE}; + SetMonData(mon, MON_DATA_CHAMPION_RIBBON, val); + ribbonCounts[i].count = GetRibbonCount(mon); + ribbonGet = TRUE; + } + } + + if (ribbonGet == TRUE) + { + IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); + FlagSet(FLAG_SYS_RIBBON_GET); + + for (i = 1; i < 6; i++) + { + if (ribbonCounts[i].count > ribbonCounts[0].count) + { + struct RibbonCounter prevBest = ribbonCounts[0]; + ribbonCounts[0] = ribbonCounts[i]; + ribbonCounts[i] = prevBest; + } + } + + if (ribbonCounts[0].count > 4) + { + sub_80EE4DC(&gPlayerParty[ribbonCounts[0].partyIndex], MON_DATA_CHAMPION_RIBBON); + } + } + + SetMainCallback2(CB2_DoHallOfFameScreen); + return 0; +} + +bool8 sp0C8_whiteout_maybe(void) +{ + SetMainCallback2(CB2_WhiteOut); + return FALSE; +} |