summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_play.c48
1 files changed, 42 insertions, 6 deletions
diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c
index ead1574f7..a3d275390 100644
--- a/soh/src/code/z_play.c
+++ b/soh/src/code/z_play.c
@@ -338,29 +338,65 @@ u8 CheckDungeonCount() {
return dungeonCount;
}
+u8 CheckBridgeRewardCount() {
+ u8 bridgeRewardCount = 0;
+
+ switch (Randomizer_GetSettingValue(RSK_BRIDGE_OPTIONS)) {
+ case RO_BRIDGE_WILDCARD_REWARD:
+ if (Flags_GetRandomizerInf(RAND_INF_GREG_FOUND)) {
+ bridgeRewardCount += 1;
+ }
+ break;
+ case RO_BRIDGE_GREG_REWARD:
+ if (Flags_GetRandomizerInf(RAND_INF_GREG_FOUND)) {
+ bridgeRewardCount += 1;
+ }
+ break;
+ }
+ 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 GivePlayerRandoRewardZeldaLightArrowsGift(PlayState* play, RandomizerCheck check) {
Player* player = GET_PLAYER(play);
u8 meetsRequirements = 0;
switch (Randomizer_GetSettingValue(RSK_GANONS_BOSS_KEY)) {
- case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
- if (CheckMedallionCount() >= Randomizer_GetSettingValue(RSK_LACS_MEDALLION_COUNT)) {
+ case RO_GANON_BOSS_KEY_LACS_STONES:
+ if ((CheckStoneCount() + CheckLACSRewardCount()) >= Randomizer_GetSettingValue(RSK_LACS_STONE_COUNT)) {
meetsRequirements = true;
}
break;
- case RO_GANON_BOSS_KEY_LACS_STONES:
- if (CheckStoneCount() >= Randomizer_GetSettingValue(RSK_LACS_STONE_COUNT)) {
+ case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
+ if ((CheckMedallionCount() + CheckLACSRewardCount()) >= Randomizer_GetSettingValue(RSK_LACS_MEDALLION_COUNT)) {
meetsRequirements = true;
}
break;
case RO_GANON_BOSS_KEY_LACS_REWARDS:
- if ((CheckMedallionCount() + CheckStoneCount()) >= Randomizer_GetSettingValue(RSK_LACS_REWARD_COUNT)) {
+ if ((CheckMedallionCount() + CheckStoneCount() + CheckLACSRewardCount()) >= Randomizer_GetSettingValue(RSK_LACS_REWARD_COUNT)) {
meetsRequirements = true;
}
break;
case RO_GANON_BOSS_KEY_LACS_DUNGEONS:
- if (CheckDungeonCount() >= Randomizer_GetSettingValue(RSK_LACS_DUNGEON_COUNT)) {
+ if ((CheckDungeonCount() + CheckLACSRewardCount()) >= Randomizer_GetSettingValue(RSK_LACS_DUNGEON_COUNT)) {
meetsRequirements = true;
}
break;