GameClear nonsense
This commit is contained in:
@@ -144,7 +144,7 @@ void ClearSecretBase2Field_9(void)
|
||||
gSaveBlock2Ptr->specialSaveWarp &= ~1;
|
||||
}
|
||||
|
||||
void sub_8076D48(void)
|
||||
void SetSecretBase2Field_9(void)
|
||||
{
|
||||
gSaveBlock2Ptr->specialSaveWarp |= 1;
|
||||
}
|
||||
|
||||
88
src/post_battle_event_funcs.c
Normal file
88
src/post_battle_event_funcs.c
Normal file
@@ -0,0 +1,88 @@
|
||||
#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))
|
||||
{
|
||||
val = 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[0].count > ribbonCounts[i].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;
|
||||
}
|
||||
Reference in New Issue
Block a user