Skip to content

Commit 0821c2e

Browse files
authored
Fix boss souls on item tracker (#6142)
1 parent 3e02252 commit 0821c2e

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,14 @@ void DrawQuest(ItemTrackerItem item) {
755755
Tooltip(SohUtils::GetQuestItemName(item.id).c_str());
756756
};
757757

758+
bool HasBossSoul(RandomizerInf bossSoul) {
759+
uint8_t soulSetting = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BOSS_SOULS);
760+
bool isSoulRandomized = IS_RANDO && (soulSetting == RO_BOSS_SOULS_ON_PLUS_GANON ||
761+
(soulSetting == RO_BOSS_SOULS_ON && bossSoul != RAND_INF_GANON_SOUL));
762+
763+
return isSoulRandomized ? Flags_GetRandomizerInf(bossSoul) : true;
764+
}
765+
758766
void DrawItem(ItemTrackerItem item) {
759767

760768
uint32_t actualItemId = GameInteractor::IsSaveLoaded() ? INV_CONTENT(item.id) : ITEM_NONE;
@@ -811,50 +819,47 @@ void DrawItem(ItemTrackerItem item) {
811819
break;
812820
case RG_GOHMA_SOUL:
813821
actualItemId = item.id;
814-
hasItem = Flags_GetRandomizerInf(RAND_INF_GOHMA_SOUL);
822+
hasItem = HasBossSoul(RAND_INF_GOHMA_SOUL);
815823
itemName = "Gohma's Soul";
816824
break;
817825
case RG_KING_DODONGO_SOUL:
818826
actualItemId = item.id;
819-
hasItem = Flags_GetRandomizerInf(RAND_INF_KING_DODONGO_SOUL);
827+
hasItem = HasBossSoul(RAND_INF_KING_DODONGO_SOUL);
820828
itemName = "King Dodongo's Soul";
821829
break;
822830
case RG_BARINADE_SOUL:
823831
actualItemId = item.id;
824-
hasItem = Flags_GetRandomizerInf(RAND_INF_BARINADE_SOUL);
832+
hasItem = HasBossSoul(RAND_INF_BARINADE_SOUL);
825833
itemName = "Barinade's Soul";
826834
break;
827835
case RG_PHANTOM_GANON_SOUL:
828836
actualItemId = item.id;
829-
hasItem = Flags_GetRandomizerInf(RAND_INF_PHANTOM_GANON_SOUL);
837+
hasItem = HasBossSoul(RAND_INF_PHANTOM_GANON_SOUL);
830838
itemName = "Phantom Ganon's Soul";
831839
break;
832840
case RG_VOLVAGIA_SOUL:
833841
actualItemId = item.id;
834-
hasItem = Flags_GetRandomizerInf(RAND_INF_VOLVAGIA_SOUL);
842+
hasItem = HasBossSoul(RAND_INF_VOLVAGIA_SOUL);
835843
itemName = "Volvagia's Soul";
836844
break;
837845
case RG_MORPHA_SOUL:
838846
actualItemId = item.id;
839-
hasItem = Flags_GetRandomizerInf(RAND_INF_MORPHA_SOUL);
847+
hasItem = HasBossSoul(RAND_INF_MORPHA_SOUL);
840848
itemName = "Morpha's Soul";
841849
break;
842850
case RG_BONGO_BONGO_SOUL:
843851
actualItemId = item.id;
844-
hasItem = Flags_GetRandomizerInf(RAND_INF_BONGO_BONGO_SOUL);
852+
hasItem = HasBossSoul(RAND_INF_BONGO_BONGO_SOUL);
845853
itemName = "Bongo Bongo's Soul";
846854
break;
847855
case RG_TWINROVA_SOUL:
848856
actualItemId = item.id;
849-
hasItem = Flags_GetRandomizerInf(RAND_INF_TWINROVA_SOUL);
857+
hasItem = HasBossSoul(RAND_INF_TWINROVA_SOUL);
850858
itemName = "Twinrova's Soul";
851859
break;
852860
case RG_GANON_SOUL:
853861
actualItemId = item.id;
854-
hasItem = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BOSS_SOULS) ==
855-
RO_BOSS_SOULS_ON_PLUS_GANON
856-
? Flags_GetRandomizerInf(RAND_INF_GANON_SOUL)
857-
: true;
862+
hasItem = HasBossSoul(RAND_INF_GANON_SOUL);
858863
itemName = "Ganon's Soul";
859864
break;
860865

0 commit comments

Comments
 (0)