pmd-red/src/code_8097504.c
2024-11-22 10:16:40 +01:00

112 lines
2.4 KiB
C

#include "global.h"
#include "globaldata.h"
#include "constants/dungeon.h"
#include "dungeon.h"
#include "event_flag.h"
#include "code_80A26CC.h"
#include "code_80972F4.h"
ALIGNED(4) const char gMeetNinetalesText[] = "Meet Ninetales.";
ALIGNED(4) const char gAvoidCaptureText[] = "Avoid capture.";
ALIGNED(4) const char gFinalScenarioText[] = _("Defeat the final Pokémon.");
bool8 sub_8097504(s16 mazeIndex)
{
s32 uVar3;
s32 mazeIndex_ = Self_s16(mazeIndex); // Needed to match
if (mazeIndex < 17) {
switch (mazeIndex) {
case 2:
case 10:
case 11:
case 12:
uVar3 = 14;
break;
case 0:
case 1:
case 5:
case 7:
case 9:
case 14:
uVar3 = 15;
break;
case 3:
case 4:
case 6:
case 8:
return TRUE;
case 13:
uVar3 = 6;
break;
default:
return TRUE;
}
}
else {
if (mazeIndex_ > 22) return FALSE;
if (mazeIndex_ == 22) return FALSE;
if (mazeIndex_ == 21) return FALSE;
uVar3 = 6;
}
if (!sub_80023E4(uVar3)) {
return FALSE;
}
else {
return TRUE;
}
}
bool8 IsMazeCompleted(s16 mazeIndex)
{
return (GetScriptVarArrayValue(NULL, TRAINING_CONQUEST_LIST, mazeIndex) != 0);
}
void sub_80975A8(s16 param_1,u8 param_2)
{
u16 param_1_u16 = param_1;
SetScriptVarArrayValue(NULL,TRAINING_CONQUEST_LIST,param_1_u16,param_2);
}
const u8 *sub_80975C4(s16 index)
{
return GetDungeonName1(sub_80A2728(index));
}
const u8 *sub_80975DC(s16 r0)
{
if(r0 == 23 || r0 == 24) {
if(ScriptVarScenarioEqual(SCENARIO_MAIN, 0xE, -1))
return gMeetNinetalesText;
else
return gAvoidCaptureText;
}
else
return gFinalScenarioText;
}
bool8 HasCompletedAllMazes(void)
{
s32 index;
for(index = 0; index < NUM_BASIC_DUNGEON_MAZE; index++)
{
if(!(bool8)IsMazeCompleted(index))
return FALSE;
}
return TRUE;
}
bool8 sub_8097640(void)
{
if(GetScriptVarArrayValue(NULL, TRAINING_CONQUEST_LIST, 0x1F) == 0 && HasCompletedAllMazes())
{
SetScriptVarArrayValue(NULL, TRAINING_CONQUEST_LIST, 0x1F, 1);
return TRUE;
}
else
{
return FALSE;
}
}