mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-22 22:33:43 -07:00
added link's pocket medallion/gem
This commit is contained in:
parent
c7772a12f2
commit
3a84be3a48
5 changed files with 78 additions and 10 deletions
|
@ -179,7 +179,7 @@ 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;
|
||||||
ItemLocation itemLocations[512];
|
ItemLocation itemLocations[266];
|
||||||
Sprite seedIcons[5];
|
Sprite seedIcons[5];
|
||||||
} SaveContext; // size = 0x1428
|
} SaveContext; // size = 0x1428
|
||||||
|
|
||||||
|
|
|
@ -713,12 +713,21 @@ s16 Randomizer::GetItemModelFromId(s16 itemId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Randomizer::LoadItemLocations(const char* spoilerFileName) {
|
void Randomizer::LoadItemLocations(const char* spoilerFileName) {
|
||||||
|
if (strcmp(spoilerFileName, "") != 0) {
|
||||||
// bandaid until new save stuff happens
|
// bandaid until new save stuff happens
|
||||||
ParseItemLocations(spoilerFileName);
|
ParseItemLocations(spoilerFileName);
|
||||||
|
|
||||||
for(auto itemLocation : gSaveContext.itemLocations) {
|
for (auto itemLocation : gSaveContext.itemLocations) {
|
||||||
this->itemLocations[itemLocation.check] = itemLocation.get;
|
this->itemLocations[itemLocation.check] = itemLocation.get;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
u16 index = 0;
|
||||||
|
for (auto itemLocation : this->itemLocations) {
|
||||||
|
gSaveContext.itemLocations[index].check = itemLocation.first;
|
||||||
|
gSaveContext.itemLocations[index].get = itemLocation.second;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Randomizer::ParseItemLocations(const char* spoilerFileName) {
|
void Randomizer::ParseItemLocations(const char* spoilerFileName) {
|
||||||
|
@ -1026,7 +1035,7 @@ RandomizerCheck Randomizer::GetCheckFromSceneAndParams(s16 sceneNum, s16 actorPa
|
||||||
}
|
}
|
||||||
case 84:
|
case 84:
|
||||||
switch (actorParams) {
|
switch (actorParams) {
|
||||||
case 0x0406:
|
case 1030:
|
||||||
return ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH;
|
return ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH;
|
||||||
case 2822:
|
case 2822:
|
||||||
return ZR_NEAR_DOMAIN_FREESTANDING_POH;
|
return ZR_NEAR_DOMAIN_FREESTANDING_POH;
|
||||||
|
|
|
@ -4,7 +4,7 @@ void TitleSetup_InitImpl(GameState* gameState) {
|
||||||
osSyncPrintf("ゼルダ共通データ初期化\n"); // "Zelda common data initalization"
|
osSyncPrintf("ゼルダ共通データ初期化\n"); // "Zelda common data initalization"
|
||||||
SaveContext_Init();
|
SaveContext_Init();
|
||||||
gameState->running = false;
|
gameState->running = false;
|
||||||
SET_NEXT_GAMESTATE(gameState, FileChoose_Init, TitleContext);
|
SET_NEXT_GAMESTATE(gameState, Title_Init, TitleContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TitleSetup_Destroy(GameState* gameState) {
|
void TitleSetup_Destroy(GameState* gameState) {
|
||||||
|
|
|
@ -193,11 +193,67 @@ void Gameplay_Destroy(GameState* thisx) {
|
||||||
gGlobalCtx = NULL;
|
gGlobalCtx = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GiveLinksPocketMedallion(GlobalContext* globalCtx) {
|
||||||
|
if (gSaveContext.n64ddFlag) {
|
||||||
|
RandomizerGet get = gSaveContext.itemLocations[LINKS_POCKET].get;
|
||||||
|
|
||||||
|
s16 item;
|
||||||
|
|
||||||
|
u8 medallion = 0;
|
||||||
|
|
||||||
|
switch (get) {
|
||||||
|
case FOREST_MEDALLION:
|
||||||
|
item = ITEM_MEDALLION_FOREST;
|
||||||
|
medallion = 1;
|
||||||
|
break;
|
||||||
|
case FIRE_MEDALLION:
|
||||||
|
item = ITEM_MEDALLION_FIRE;
|
||||||
|
medallion = 1;
|
||||||
|
break;
|
||||||
|
case WATER_MEDALLION:
|
||||||
|
item = ITEM_MEDALLION_WATER;
|
||||||
|
medallion = 1;
|
||||||
|
break;
|
||||||
|
case SHADOW_MEDALLION:
|
||||||
|
item = ITEM_MEDALLION_SHADOW;
|
||||||
|
medallion = 1;
|
||||||
|
break;
|
||||||
|
case SPIRIT_MEDALLION:
|
||||||
|
item = ITEM_MEDALLION_SPIRIT;
|
||||||
|
medallion = 1;
|
||||||
|
break;
|
||||||
|
case LIGHT_MEDALLION:
|
||||||
|
item = ITEM_MEDALLION_LIGHT;
|
||||||
|
medallion = 1;
|
||||||
|
break;
|
||||||
|
case KOKIRI_EMERALD:
|
||||||
|
item = ITEM_KOKIRI_EMERALD;
|
||||||
|
break;
|
||||||
|
case GORON_RUBY:
|
||||||
|
item = ITEM_GORON_RUBY;
|
||||||
|
break;
|
||||||
|
case ZORA_SAPPHIRE:
|
||||||
|
item = ITEM_ZORA_SAPPHIRE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (medallion == 1) {
|
||||||
|
gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST];
|
||||||
|
|
||||||
|
if (item == ITEM_MEDALLION_WATER) {
|
||||||
|
func_8006D0AC(globalCtx);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Gameplay_Init(GameState* thisx) {
|
void Gameplay_Init(GameState* thisx) {
|
||||||
GlobalContext* globalCtx = (GlobalContext*)thisx;
|
GlobalContext* globalCtx = (GlobalContext*)thisx;
|
||||||
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
|
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
|
||||||
gGlobalCtx = globalCtx;
|
gGlobalCtx = globalCtx;
|
||||||
//globalCtx->state.gfxCtx = NULL;
|
// globalCtx->state.gfxCtx = NULL;
|
||||||
u32 zAlloc;
|
u32 zAlloc;
|
||||||
u32 zAllocAligned;
|
u32 zAllocAligned;
|
||||||
size_t zAllocSize;
|
size_t zAllocSize;
|
||||||
|
@ -207,6 +263,8 @@ void Gameplay_Init(GameState* thisx) {
|
||||||
u8 tempSetupIndex;
|
u8 tempSetupIndex;
|
||||||
s32 pad[2];
|
s32 pad[2];
|
||||||
|
|
||||||
|
GiveLinksPocketMedallion(globalCtx);
|
||||||
|
|
||||||
if (gSaveContext.entranceIndex == -1) {
|
if (gSaveContext.entranceIndex == -1) {
|
||||||
gSaveContext.entranceIndex = 0;
|
gSaveContext.entranceIndex = 0;
|
||||||
globalCtx->state.running = false;
|
globalCtx->state.running = false;
|
||||||
|
|
|
@ -1519,7 +1519,6 @@ void FileChoose_LoadGame(GameState* thisx) {
|
||||||
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);
|
||||||
gSaveContext.fileNum = this->buttonIndex;
|
gSaveContext.fileNum = this->buttonIndex;
|
||||||
Sram_OpenSave(&this->sramCtx);
|
Sram_OpenSave(&this->sramCtx);
|
||||||
// LoadItemLocations();
|
|
||||||
gSaveContext.gameMode = 0;
|
gSaveContext.gameMode = 0;
|
||||||
SET_NEXT_GAMESTATE(&this->state, Select_Init, SelectContext);
|
SET_NEXT_GAMESTATE(&this->state, Select_Init, SelectContext);
|
||||||
this->state.running = false;
|
this->state.running = false;
|
||||||
|
@ -1527,12 +1526,14 @@ void FileChoose_LoadGame(GameState* thisx) {
|
||||||
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);
|
||||||
gSaveContext.fileNum = this->buttonIndex;
|
gSaveContext.fileNum = this->buttonIndex;
|
||||||
Sram_OpenSave(&this->sramCtx);
|
Sram_OpenSave(&this->sramCtx);
|
||||||
// LoadItemLocations();
|
|
||||||
gSaveContext.gameMode = 0;
|
gSaveContext.gameMode = 0;
|
||||||
SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext);
|
SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext);
|
||||||
this->state.running = false;
|
this->state.running = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoadItemLocations("");
|
||||||
|
|
||||||
gSaveContext.respawn[0].entranceIndex = -1;
|
gSaveContext.respawn[0].entranceIndex = -1;
|
||||||
gSaveContext.respawnFlag = 0;
|
gSaveContext.respawnFlag = 0;
|
||||||
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue