mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-28 20:32:18 -05:00
fix quest assignment (#3343)
This commit is contained in:
parent
25f05e68b3
commit
44ee6da0aa
@ -279,14 +279,13 @@ typedef struct {
|
|||||||
/* 0x1420 */ s16 worldMapArea;
|
/* 0x1420 */ s16 worldMapArea;
|
||||||
/* 0x1422 */ s16 sunsSongState; // controls the effects of suns song
|
/* 0x1422 */ s16 sunsSongState; // controls the effects of suns song
|
||||||
/* 0x1424 */ s16 healthAccumulator;
|
/* 0x1424 */ s16 healthAccumulator;
|
||||||
/* 0x1426 */ u16 pendingSale;
|
|
||||||
/* 0x1428 */ u16 pendingSaleMod;
|
|
||||||
// #region SOH [General]
|
// #region SOH [General]
|
||||||
// Upstream TODO: Move these to their own struct or name to more obviously specific to SoH
|
// Upstream TODO: Move these to their own struct or name to more obviously specific to SoH
|
||||||
|
/* */ u16 pendingSale;
|
||||||
|
/* */ u16 pendingSaleMod;
|
||||||
/* */ uint8_t questId;
|
/* */ uint8_t questId;
|
||||||
/* */ uint32_t isBossRushPaused;
|
/* */ uint32_t isBossRushPaused;
|
||||||
/* */ uint8_t bossRushOptions[BOSSRUSH_OPTIONS_AMOUNT];
|
/* */ uint8_t bossRushOptions[BOSSRUSH_OPTIONS_AMOUNT];
|
||||||
/* */ u8 mqDungeonCount;
|
|
||||||
/* */ u8 pendingIceTrapCount;
|
/* */ u8 pendingIceTrapCount;
|
||||||
/* */ SohStats sohStats;
|
/* */ SohStats sohStats;
|
||||||
/* */ FaroresWindData backupFW;
|
/* */ FaroresWindData backupFW;
|
||||||
@ -322,6 +321,7 @@ typedef struct {
|
|||||||
/* */ u32 finalSeed;
|
/* */ u32 finalSeed;
|
||||||
/* */ u8 seedIcons[5];
|
/* */ u8 seedIcons[5];
|
||||||
/* */ u16 randomizerInf[10];
|
/* */ u16 randomizerInf[10];
|
||||||
|
/* */ u8 mqDungeonCount;
|
||||||
/* */ u16 adultTradeItems;
|
/* */ u16 adultTradeItems;
|
||||||
/* */ u8 triforcePiecesCollected;
|
/* */ u8 triforcePiecesCollected;
|
||||||
// #endregion
|
// #endregion
|
||||||
|
@ -291,6 +291,7 @@ void BossRush_InitSave() {
|
|||||||
gSaveContext.playerName[i] = brPlayerName[i];
|
gSaveContext.playerName[i] = brPlayerName[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gSaveContext.questId = QUEST_BOSSRUSH;
|
||||||
gSaveContext.isBossRushPaused = 1;
|
gSaveContext.isBossRushPaused = 1;
|
||||||
gSaveContext.entranceIndex = 107;
|
gSaveContext.entranceIndex = 107;
|
||||||
gSaveContext.cutsceneIndex = 0x8000;
|
gSaveContext.cutsceneIndex = 0x8000;
|
||||||
|
@ -603,13 +603,11 @@ void SaveManager::InitFileNormal() {
|
|||||||
gSaveContext.backupFW = gSaveContext.fw;
|
gSaveContext.backupFW = gSaveContext.fw;
|
||||||
gSaveContext.pendingSale = ITEM_NONE;
|
gSaveContext.pendingSale = ITEM_NONE;
|
||||||
gSaveContext.pendingSaleMod = MOD_NONE;
|
gSaveContext.pendingSaleMod = MOD_NONE;
|
||||||
|
gSaveContext.isBossRushPaused = 0;
|
||||||
|
gSaveContext.pendingIceTrapCount = 0;
|
||||||
|
|
||||||
// Boss Rush is set ahead of time in z_file_choose, otherwise init the save with the normal quest
|
// Init with normal quest unless only an MQ rom is provided
|
||||||
if (IS_BOSS_RUSH) {
|
gSaveContext.questId = OTRGlobals::Instance->HasOriginal() ? QUEST_NORMAL : QUEST_MASTER;
|
||||||
BossRush_InitSave();
|
|
||||||
} else {
|
|
||||||
gSaveContext.questId = QUEST_NORMAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//RANDOTODO (ADD ITEMLOCATIONS TO GSAVECONTEXT)
|
//RANDOTODO (ADD ITEMLOCATIONS TO GSAVECONTEXT)
|
||||||
}
|
}
|
||||||
|
@ -1202,7 +1202,7 @@ void Play_Update(PlayState* play) {
|
|||||||
play->gameplayFrames++;
|
play->gameplayFrames++;
|
||||||
// Gameplay stat tracking
|
// Gameplay stat tracking
|
||||||
if (!gSaveContext.sohStats.gameComplete &&
|
if (!gSaveContext.sohStats.gameComplete &&
|
||||||
(!IS_BOSS_RUSH || (IS_BOSS_RUSH && !gSaveContext.isBossRushPaused))) {
|
(!IS_BOSS_RUSH || !gSaveContext.isBossRushPaused)) {
|
||||||
gSaveContext.sohStats.playTimer++;
|
gSaveContext.sohStats.playTimer++;
|
||||||
gSaveContext.sohStats.sceneTimer++;
|
gSaveContext.sohStats.sceneTimer++;
|
||||||
gSaveContext.sohStats.roomTimer++;
|
gSaveContext.sohStats.roomTimer++;
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
void Save_LoadFile(void);
|
void Save_LoadFile(void);
|
||||||
|
|
||||||
|
void BossRush_InitSave(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize new save.
|
* Initialize new save.
|
||||||
* This save has an empty inventory with 3 hearts and single magic.
|
* This save has an empty inventory with 3 hearts and single magic.
|
||||||
@ -33,6 +35,7 @@ void Sram_InitDebugSave(void) {
|
|||||||
|
|
||||||
void Sram_InitBossRushSave(void) {
|
void Sram_InitBossRushSave(void) {
|
||||||
Save_InitFile(false);
|
Save_InitFile(false);
|
||||||
|
BossRush_InitSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -221,11 +224,15 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
|||||||
|
|
||||||
gSaveContext.n64ddFlag = fileChooseCtx->n64ddFlag;
|
gSaveContext.n64ddFlag = fileChooseCtx->n64ddFlag;
|
||||||
|
|
||||||
if (fileChooseCtx->questType[fileChooseCtx->buttonIndex] == QUEST_RANDOMIZER &&
|
u8 currentQuest = fileChooseCtx->questType[fileChooseCtx->buttonIndex];
|
||||||
|
|
||||||
|
if (currentQuest == QUEST_RANDOMIZER &&
|
||||||
strnlen(CVarGetString("gSpoilerLog", ""), 1) != 0) {
|
strnlen(CVarGetString("gSpoilerLog", ""), 1) != 0) {
|
||||||
gSaveContext.questId = QUEST_RANDOMIZER;
|
gSaveContext.questId = QUEST_RANDOMIZER;
|
||||||
|
|
||||||
Randomizer_InitSaveFile();
|
Randomizer_InitSaveFile();
|
||||||
|
} else if (currentQuest == QUEST_MASTER) {
|
||||||
|
gSaveContext.questId = QUEST_MASTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
Save_SaveFile();
|
Save_SaveFile();
|
||||||
|
@ -1293,8 +1293,6 @@ void FileChoose_UpdateQuestMenu(GameState* thisx) {
|
|||||||
if (CHECK_BTN_ALL(input->press.button, BTN_A)) {
|
if (CHECK_BTN_ALL(input->press.button, BTN_A)) {
|
||||||
gSaveContext.questId = this->questType[this->buttonIndex];
|
gSaveContext.questId = this->questType[this->buttonIndex];
|
||||||
|
|
||||||
gSaveContext.isBossRushPaused = false;
|
|
||||||
|
|
||||||
if (this->questType[this->buttonIndex] == QUEST_BOSSRUSH) {
|
if (this->questType[this->buttonIndex] == QUEST_BOSSRUSH) {
|
||||||
Audio_PlaySoundGeneral(NA_SE_SY_FSEL_DECIDE_L, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
Audio_PlaySoundGeneral(NA_SE_SY_FSEL_DECIDE_L, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||||
this->prevConfigMode = this->configMode;
|
this->prevConfigMode = this->configMode;
|
||||||
@ -2819,10 +2817,6 @@ void FileChoose_ConfirmFile(GameState* thisx) {
|
|||||||
if (this->confirmButtonIndex == FS_BTN_CONFIRM_YES) {
|
if (this->confirmButtonIndex == FS_BTN_CONFIRM_YES) {
|
||||||
func_800AA000(300.0f, 180, 20, 100);
|
func_800AA000(300.0f, 180, 20, 100);
|
||||||
Audio_PlaySoundGeneral(NA_SE_SY_FSEL_DECIDE_L, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
Audio_PlaySoundGeneral(NA_SE_SY_FSEL_DECIDE_L, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||||
// Reset Boss Rush because it's only ever saved in memory.
|
|
||||||
if (IS_BOSS_RUSH) {
|
|
||||||
gSaveContext.questId = QUEST_NORMAL;
|
|
||||||
}
|
|
||||||
this->selectMode = SM_FADE_OUT;
|
this->selectMode = SM_FADE_OUT;
|
||||||
func_800F6964(0xF);
|
func_800F6964(0xF);
|
||||||
} else {
|
} else {
|
||||||
|
@ -4307,9 +4307,6 @@ void KaleidoScope_Update(PlayState* play)
|
|||||||
osSyncPrintf(VT_RST);
|
osSyncPrintf(VT_RST);
|
||||||
} else {
|
} else {
|
||||||
play->state.running = 0;
|
play->state.running = 0;
|
||||||
if (IS_BOSS_RUSH) {
|
|
||||||
gSaveContext.questId = QUEST_NORMAL;
|
|
||||||
}
|
|
||||||
SET_NEXT_GAMESTATE(&play->state, Opening_Init, OpeningContext);
|
SET_NEXT_GAMESTATE(&play->state, Opening_Init, OpeningContext);
|
||||||
GameInteractor_ExecuteOnExitGame(gSaveContext.fileNum);
|
GameInteractor_ExecuteOnExitGame(gSaveContext.fileNum);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user