diff options
| author | Philip Dubé <159546+serprex@users.noreply.github.com> | 2026-07-04 20:04:09 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-04 20:04:09 +0000 |
| commit | 015440fdffd21578fb8791f9aa98b76d8bb6e4ff (patch) | |
| tree | 12647d6d2d18dd79fd4f6a87b7b17e3805e22483 /soh/src | |
| parent | 618b7694b17b61f54de4e8a15f5d3f9bd741ca41 (diff) | |
Decouple GBK from LACS (#5838)
Triforce Pieces can now be tokens for bridge or ganon's soul. & can be tokens for multiple rewards
Wincon can now be arbitrary conditions
Ganon's Soul (removed from existing boss soul options) can now be arbitrary conditions
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Diffstat (limited to 'soh/src')
| -rw-r--r-- | soh/src/code/z_play.c | 22 | ||||
| -rw-r--r-- | soh/src/code/z_player_lib.c | 3 | ||||
| -rw-r--r-- | soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c | 20 |
3 files changed, 18 insertions, 27 deletions
diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index 0816b5a6b..e4d707918 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -327,6 +327,10 @@ u8 CheckDungeonCount() { dungeonCount++; } + if (Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_GANONS_TOWER)) { + dungeonCount++; + } + return dungeonCount; } @@ -348,24 +352,6 @@ u8 CheckBridgeRewardCount() { return bridgeRewardCount; } -u8 CheckLACSRewardCount() { - u8 lacsRewardCount = 0; - - switch (Randomizer_GetSettingValue(RSK_LACS_OPTIONS)) { - case RO_LACS_WILDCARD_REWARD: - if (Flags_GetRandomizerInf(RAND_INF_GREG_FOUND)) { - lacsRewardCount += 1; - } - break; - case RO_LACS_GREG_REWARD: - if (Flags_GetRandomizerInf(RAND_INF_GREG_FOUND)) { - lacsRewardCount += 1; - } - break; - } - return lacsRewardCount; -} - void Play_Init(GameState* thisx) { PlayState* play = (PlayState*)thisx; GraphicsContext* gfxCtx = play->state.gfxCtx; diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index b7132bc59..b02a591c2 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -1656,7 +1656,8 @@ void Player_DrawGetItemImpl(PlayState* play, Player* this, Vec3f* refPos, s32 dr if (this->getItemEntry.modIndex == MOD_RANDOMIZER && this->getItemEntry.getItemId == RG_ICE_TRAP) { Player_DrawGetItemIceTrap(play, this, refPos, drawIdPlusOne, height); - } else if (this->getItemEntry.modIndex == MOD_RANDOMIZER && this->getItemEntry.getItemId == RG_TRIFORCE_PIECE) { + } else if (this->getItemEntry.modIndex == MOD_RANDOMIZER && + (this->getItemEntry.getItemId == RG_TRIFORCE_PIECE || this->getItemEntry.getItemId == RG_TRIFORCE)) { Randomizer_DrawTriforcePieceGI(play, this->getItemEntry); } else if (this->getItemEntry.drawFunc != NULL) { this->getItemEntry.drawFunc(play, &this->getItemEntry); diff --git a/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c b/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c index 21a849cfa..e0ac9826f 100644 --- a/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c +++ b/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c @@ -1692,14 +1692,18 @@ void func_8090120C(BossGanon2* this, PlayState* play) { (player->meleeWeaponState != 0) && (player->heldItemAction == PLAYER_IA_SWORD_MASTER)) { func_80064520(play, &play->csCtx); GameInteractor_ExecuteOnBossDefeat(&this->actor); - this->subCamId = Play_CreateSubCamera(play); - Play_ChangeCameraStatus(play, MAIN_CAM, CAM_STAT_WAIT); - Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE); - this->csState = 7; - this->csTimer = 0; - Animation_MorphToPlayOnce(&this->skelAnime, &gGanonFinalBlowAnim, 0.0f); - this->unk_194 = Animation_GetLastFrame(&gGanonFinalBlowAnim); - play->startPlayerCutscene(play, &this->actor, 0x61); + if (GameInteractor_Should(VB_SLAY_GANON, true)) { + this->subCamId = Play_CreateSubCamera(play); + Play_ChangeCameraStatus(play, MAIN_CAM, CAM_STAT_WAIT); + Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE); + this->csState = 7; + this->csTimer = 0; + Animation_MorphToPlayOnce(&this->skelAnime, &gGanonFinalBlowAnim, 0.0f); + this->unk_194 = Animation_GetLastFrame(&gGanonFinalBlowAnim); + play->startPlayerCutscene(play, &this->actor, 0x61); + } else { + break; + } } else { break; } |
