mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-12-22 16:18:50 -05:00
[Rando] Adds Greg options to the Bridge and LACS reward options (#2663)
* Some reason not working * Fixes and formatting Moved the LACS Stones to be before the Medallions in all instances to line up with the Bridge requirements and because it just makes sense * Removed unnecessary space * Missed one
This commit is contained in:
parent
507387f618
commit
f544aba647
@ -1532,6 +1532,8 @@ void Play_Main(GameState* thisx);
|
|||||||
u8 CheckStoneCount();
|
u8 CheckStoneCount();
|
||||||
u8 CheckMedallionCount();
|
u8 CheckMedallionCount();
|
||||||
u8 CheckDungeonCount();
|
u8 CheckDungeonCount();
|
||||||
|
u8 CheckBridgeRewardCount();
|
||||||
|
u8 CheckLACSRewardCount();
|
||||||
s32 Play_InCsMode(PlayState* play);
|
s32 Play_InCsMode(PlayState* play);
|
||||||
f32 func_800BFCB8(PlayState* play, MtxF* mf, Vec3f* vec);
|
f32 func_800BFCB8(PlayState* play, MtxF* mf, Vec3f* vec);
|
||||||
void* Play_LoadFile(PlayState* play, RomFile* file);
|
void* Play_LoadFile(PlayState* play, RomFile* file);
|
||||||
|
@ -272,6 +272,7 @@ const std::vector<const char*> randomizerCvars = {
|
|||||||
"gRandomizeBlueFireArrows",
|
"gRandomizeBlueFireArrows",
|
||||||
"gRandomizeBombchusInLogic",
|
"gRandomizeBombchusInLogic",
|
||||||
"gRandomizeBossKeysanity",
|
"gRandomizeBossKeysanity",
|
||||||
|
"gRandomizeBridgeRewardOptions",
|
||||||
"gRandomizeCompleteMaskQuest",
|
"gRandomizeCompleteMaskQuest",
|
||||||
"gRandomizeCuccosToReturn",
|
"gRandomizeCuccosToReturn",
|
||||||
"gRandomizeDampeHint",
|
"gRandomizeDampeHint",
|
||||||
@ -298,6 +299,7 @@ const std::vector<const char*> randomizerCvars = {
|
|||||||
"gRandomizeLacsDungeonCount",
|
"gRandomizeLacsDungeonCount",
|
||||||
"gRandomizeLacsMedallionCount",
|
"gRandomizeLacsMedallionCount",
|
||||||
"gRandomizeLacsRewardCount",
|
"gRandomizeLacsRewardCount",
|
||||||
|
"gRandomizeLacsRewardOptions",
|
||||||
"gRandomizeLacsStoneCount",
|
"gRandomizeLacsStoneCount",
|
||||||
"gRandomizeLacsTokenCount",
|
"gRandomizeLacsTokenCount",
|
||||||
"gRandomizeLAHint",
|
"gRandomizeLAHint",
|
||||||
|
@ -1783,8 +1783,8 @@ typedef enum {
|
|||||||
GANON_BK_SKULLTULA_HINT,
|
GANON_BK_SKULLTULA_HINT,
|
||||||
|
|
||||||
LACS_VANILLA_HINT,
|
LACS_VANILLA_HINT,
|
||||||
LACS_MEDALLIONS_HINT,
|
|
||||||
LACS_STONES_HINT,
|
LACS_STONES_HINT,
|
||||||
|
LACS_MEDALLIONS_HINT,
|
||||||
LACS_REWARDS_HINT,
|
LACS_REWARDS_HINT,
|
||||||
LACS_DUNGEONS_HINT,
|
LACS_DUNGEONS_HINT,
|
||||||
LACS_TOKENS_HINT,
|
LACS_TOKENS_HINT,
|
||||||
|
@ -122,6 +122,7 @@ namespace Logic {
|
|||||||
|
|
||||||
//Greg
|
//Greg
|
||||||
bool Greg = false;
|
bool Greg = false;
|
||||||
|
bool GregInLogic = false;
|
||||||
|
|
||||||
//Progressive Items
|
//Progressive Items
|
||||||
uint8_t ProgressiveBulletBag = 0;
|
uint8_t ProgressiveBulletBag = 0;
|
||||||
@ -292,8 +293,8 @@ namespace Logic {
|
|||||||
bool CanUseMagicArrow = false;
|
bool CanUseMagicArrow = false;
|
||||||
|
|
||||||
//Bridge and LACS Requirements
|
//Bridge and LACS Requirements
|
||||||
uint8_t MedallionCount = 0;
|
|
||||||
uint8_t StoneCount = 0;
|
uint8_t StoneCount = 0;
|
||||||
|
uint8_t MedallionCount = 0;
|
||||||
uint8_t DungeonCount = 0;
|
uint8_t DungeonCount = 0;
|
||||||
bool HasAllStones = false;
|
bool HasAllStones = false;
|
||||||
bool HasAllMedallions = false;
|
bool HasAllMedallions = false;
|
||||||
@ -778,21 +779,22 @@ namespace Logic {
|
|||||||
DungeonCount = (DekuTreeClear ? 1:0) + (DodongosCavernClear ? 1:0) + (JabuJabusBellyClear ? 1:0) + (ForestTempleClear ? 1:0) + (FireTempleClear ? 1:0) + (WaterTempleClear ? 1:0) + (SpiritTempleClear ? 1:0) + (ShadowTempleClear ? 1:0);
|
DungeonCount = (DekuTreeClear ? 1:0) + (DodongosCavernClear ? 1:0) + (JabuJabusBellyClear ? 1:0) + (ForestTempleClear ? 1:0) + (FireTempleClear ? 1:0) + (WaterTempleClear ? 1:0) + (SpiritTempleClear ? 1:0) + (ShadowTempleClear ? 1:0);
|
||||||
HasAllStones = StoneCount == 3;
|
HasAllStones = StoneCount == 3;
|
||||||
HasAllMedallions = MedallionCount == 6;
|
HasAllMedallions = MedallionCount == 6;
|
||||||
|
GregInLogic = BridgeRewardOptions.Is(BRIDGE_OPTION_GREG) || LACSRewardOptions.Is(LACS_OPTION_GREG);
|
||||||
|
|
||||||
CanBuildRainbowBridge = Bridge.Is(RAINBOWBRIDGE_OPEN) ||
|
CanBuildRainbowBridge = Bridge.Is(RAINBOWBRIDGE_OPEN) ||
|
||||||
(Bridge.Is(RAINBOWBRIDGE_VANILLA) && ShadowMedallion && SpiritMedallion && LightArrows) ||
|
(Bridge.Is(RAINBOWBRIDGE_VANILLA) && ShadowMedallion && SpiritMedallion && LightArrows) ||
|
||||||
(Bridge.Is(RAINBOWBRIDGE_STONES) && StoneCount >= BridgeStoneCount.Value<uint8_t>()) ||
|
(Bridge.Is(RAINBOWBRIDGE_STONES) && StoneCount + (Greg && GregInLogic ? 1 : 0) >= BridgeStoneCount.Value<uint8_t>()) ||
|
||||||
(Bridge.Is(RAINBOWBRIDGE_MEDALLIONS) && MedallionCount >= BridgeMedallionCount.Value<uint8_t>()) ||
|
(Bridge.Is(RAINBOWBRIDGE_MEDALLIONS) && MedallionCount + (Greg && GregInLogic ? 1 : 0) >= BridgeMedallionCount.Value<uint8_t>()) ||
|
||||||
(Bridge.Is(RAINBOWBRIDGE_REWARDS) && StoneCount + MedallionCount >= BridgeRewardCount.Value<uint8_t>()) ||
|
(Bridge.Is(RAINBOWBRIDGE_REWARDS) && StoneCount + MedallionCount + (Greg && GregInLogic ? 1 : 0) >= BridgeRewardCount.Value<uint8_t>()) ||
|
||||||
(Bridge.Is(RAINBOWBRIDGE_DUNGEONS) && DungeonCount >= BridgeDungeonCount.Value<uint8_t>()) ||
|
(Bridge.Is(RAINBOWBRIDGE_DUNGEONS) && DungeonCount + (Greg && GregInLogic ? 1 : 0) >= BridgeDungeonCount.Value<uint8_t>()) ||
|
||||||
(Bridge.Is(RAINBOWBRIDGE_TOKENS) && GoldSkulltulaTokens >= BridgeTokenCount.Value<uint8_t>()) ||
|
(Bridge.Is(RAINBOWBRIDGE_TOKENS) && GoldSkulltulaTokens >= BridgeTokenCount.Value<uint8_t>()) ||
|
||||||
(Bridge.Is(RAINBOWBRIDGE_GREG) && Greg);
|
(Bridge.Is(RAINBOWBRIDGE_GREG) && Greg);
|
||||||
|
|
||||||
CanTriggerLACS = (LACSCondition == LACSCONDITION_VANILLA && ShadowMedallion && SpiritMedallion) ||
|
CanTriggerLACS = (LACSCondition == LACSCONDITION_VANILLA && ShadowMedallion && SpiritMedallion) ||
|
||||||
(LACSCondition == LACSCONDITION_STONES && StoneCount >= LACSStoneCount.Value<uint8_t>()) ||
|
(LACSCondition == LACSCONDITION_STONES && StoneCount + (Greg && GregInLogic ? 1 : 0) >= LACSStoneCount.Value<uint8_t>()) ||
|
||||||
(LACSCondition == LACSCONDITION_MEDALLIONS && MedallionCount >= LACSMedallionCount.Value<uint8_t>()) ||
|
(LACSCondition == LACSCONDITION_MEDALLIONS && MedallionCount + (Greg && GregInLogic ? 1 : 0) >= LACSMedallionCount.Value<uint8_t>()) ||
|
||||||
(LACSCondition == LACSCONDITION_REWARDS && StoneCount + MedallionCount >= LACSRewardCount.Value<uint8_t>()) ||
|
(LACSCondition == LACSCONDITION_REWARDS && StoneCount + MedallionCount + (Greg && GregInLogic ? 1 : 0) >= LACSRewardCount.Value<uint8_t>()) ||
|
||||||
(LACSCondition == LACSCONDITION_DUNGEONS && DungeonCount >= LACSDungeonCount.Value<uint8_t>()) ||
|
(LACSCondition == LACSCONDITION_DUNGEONS && DungeonCount + (Greg && GregInLogic ? 1 : 0) >= LACSDungeonCount.Value<uint8_t>()) ||
|
||||||
(LACSCondition == LACSCONDITION_TOKENS && GoldSkulltulaTokens >= LACSTokenCount.Value<uint8_t>());
|
(LACSCondition == LACSCONDITION_TOKENS && GoldSkulltulaTokens >= LACSTokenCount.Value<uint8_t>());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,10 @@ string_view bridgeDungeonCountDesc = "Set the number of completed dungeons re
|
|||||||
"spawn the Rainbow Bridge."; //
|
"spawn the Rainbow Bridge."; //
|
||||||
string_view bridgeTokenCountDesc = "Set the number of Gold Skulltula Tokens required\n"
|
string_view bridgeTokenCountDesc = "Set the number of Gold Skulltula Tokens required\n"
|
||||||
"to spawn the Rainbow Bridge."; //
|
"to spawn the Rainbow Bridge."; //
|
||||||
|
string_view bridgeRewardOptionsDesc = "Set whether the rewards are standard, if Greg\n"
|
||||||
|
"counts as a reward and considered for logic\n"
|
||||||
|
"or if Greg becomes a wildcard, counting as a reward but\n"
|
||||||
|
"not considered in logic."; //
|
||||||
/*------------------------------ //
|
/*------------------------------ //
|
||||||
| RANDOM GANONS TRIALS | //
|
| RANDOM GANONS TRIALS | //
|
||||||
------------------------------*/ //
|
------------------------------*/ //
|
||||||
@ -601,10 +605,10 @@ string_view ganonKey100GS = "Ganon's Castle Boss Key is given to you
|
|||||||
/*------------------------------ //
|
/*------------------------------ //
|
||||||
| LACS CONDITIONS | //
|
| LACS CONDITIONS | //
|
||||||
------------------------------*/ //
|
------------------------------*/ //
|
||||||
string_view lacsMedallionCountDesc = "Set the number of Medallions required to trigger\n"
|
|
||||||
"the Light Arrow Cutscene."; //
|
|
||||||
string_view lacsStoneCountDesc = "Set the number of Spiritual Stones required to\n" //
|
string_view lacsStoneCountDesc = "Set the number of Spiritual Stones required to\n" //
|
||||||
"trigger the Light Arrow Cutscene."; //
|
"trigger the Light Arrow Cutscene."; //
|
||||||
|
string_view lacsMedallionCountDesc = "Set the number of Medallions required to trigger\n"
|
||||||
|
"the Light Arrow Cutscene."; //
|
||||||
string_view lacsRewardCountDesc = "Set the number of Dungeon Rewards (Spiritual\n" //
|
string_view lacsRewardCountDesc = "Set the number of Dungeon Rewards (Spiritual\n" //
|
||||||
"Stones and Medallions) required to trigger the\n" //
|
"Stones and Medallions) required to trigger the\n" //
|
||||||
"Light Arrow Cutscene."; //
|
"Light Arrow Cutscene."; //
|
||||||
@ -615,6 +619,10 @@ string_view lacsDungeonCountDesc = "Set the number of completed dungeons re
|
|||||||
"into the blue warp at the end of them."; //
|
"into the blue warp at the end of them."; //
|
||||||
string_view lacsTokenCountDesc = "Set the number of Gold Skulltula Tokens required\n"
|
string_view lacsTokenCountDesc = "Set the number of Gold Skulltula Tokens required\n"
|
||||||
"to trigger the Light Arrow Cutscene."; //
|
"to trigger the Light Arrow Cutscene."; //
|
||||||
|
string_view lacsRewardOptionsDesc = "Set whether the rewards are standard, if Greg\n"
|
||||||
|
"counts as a reward and considered for logic\n"
|
||||||
|
"or if Greg becomes a wildcard, counting as a reward but\n"
|
||||||
|
"not considered in logic."; //
|
||||||
/*------------------------------ //
|
/*------------------------------ //
|
||||||
| SKIP CHILD STEALTH | //
|
| SKIP CHILD STEALTH | //
|
||||||
------------------------------*/ //
|
------------------------------*/ //
|
||||||
|
@ -48,6 +48,8 @@ extern string_view bridgeRewardCountDesc;
|
|||||||
extern string_view bridgeDungeonCountDesc;
|
extern string_view bridgeDungeonCountDesc;
|
||||||
extern string_view bridgeTokenCountDesc;
|
extern string_view bridgeTokenCountDesc;
|
||||||
|
|
||||||
|
extern string_view bridgeRewardOptionsDesc;
|
||||||
|
|
||||||
extern string_view randomGanonsTrialsDesc;
|
extern string_view randomGanonsTrialsDesc;
|
||||||
|
|
||||||
extern string_view ganonsTrialCountDesc;
|
extern string_view ganonsTrialCountDesc;
|
||||||
@ -195,12 +197,14 @@ extern string_view ganonKeyAnywhere;
|
|||||||
extern string_view ganonKeyLACS;
|
extern string_view ganonKeyLACS;
|
||||||
extern string_view ganonKey100GS;
|
extern string_view ganonKey100GS;
|
||||||
|
|
||||||
extern string_view lacsMedallionCountDesc;
|
|
||||||
extern string_view lacsStoneCountDesc;
|
extern string_view lacsStoneCountDesc;
|
||||||
|
extern string_view lacsMedallionCountDesc;
|
||||||
extern string_view lacsRewardCountDesc;
|
extern string_view lacsRewardCountDesc;
|
||||||
extern string_view lacsDungeonCountDesc;
|
extern string_view lacsDungeonCountDesc;
|
||||||
extern string_view lacsTokenCountDesc;
|
extern string_view lacsTokenCountDesc;
|
||||||
|
|
||||||
|
extern string_view lacsRewardOptionsDesc;
|
||||||
|
|
||||||
extern string_view childStealthDesc;
|
extern string_view childStealthDesc;
|
||||||
|
|
||||||
extern string_view skipTowerEscapeDesc;
|
extern string_view skipTowerEscapeDesc;
|
||||||
|
@ -60,11 +60,12 @@ namespace Settings {
|
|||||||
Option ZorasFountain = Option::U8 ("Zora's Fountain", {"Closed", "Closed as child", "Open"}, {fountainNormal, fountainAdult, fountainOpen});
|
Option ZorasFountain = Option::U8 ("Zora's Fountain", {"Closed", "Closed as child", "Open"}, {fountainNormal, fountainAdult, fountainOpen});
|
||||||
Option GerudoFortress = Option::U8 ("Gerudo Fortress", {"Normal", "Fast", "Open"}, {gerudoNormal, gerudoFast, gerudoOpen});
|
Option GerudoFortress = Option::U8 ("Gerudo Fortress", {"Normal", "Fast", "Open"}, {gerudoNormal, gerudoFast, gerudoOpen});
|
||||||
Option Bridge = Option::U8 ("Rainbow Bridge", {"Vanilla", "Always open", "Stones", "Medallions", "Dungeon rewards", "Dungeons", "Tokens", "Greg"}, {bridgeVanilla, bridgeOpen, bridgeStones, bridgeMedallions, bridgeRewards, bridgeDungeons, bridgeTokens, bridgeGreg}, OptionCategory::Setting, RAINBOWBRIDGE_VANILLA);
|
Option Bridge = Option::U8 ("Rainbow Bridge", {"Vanilla", "Always open", "Stones", "Medallions", "Dungeon rewards", "Dungeons", "Tokens", "Greg"}, {bridgeVanilla, bridgeOpen, bridgeStones, bridgeMedallions, bridgeRewards, bridgeDungeons, bridgeTokens, bridgeGreg}, OptionCategory::Setting, RAINBOWBRIDGE_VANILLA);
|
||||||
Option BridgeStoneCount = Option::U8 ("Stone Count", {NumOpts(0, 3)}, {bridgeStoneCountDesc}, OptionCategory::Setting, 1, true);
|
Option BridgeStoneCount = Option::U8 ("Stone Count", {NumOpts(0, 4)}, {bridgeStoneCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option BridgeMedallionCount= Option::U8 ("Medallion Count", {NumOpts(0, 6)}, {bridgeMedallionCountDesc}, OptionCategory::Setting, 1, true);
|
Option BridgeMedallionCount= Option::U8 ("Medallion Count", {NumOpts(0, 7)}, {bridgeMedallionCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option BridgeRewardCount = Option::U8 ("Reward Count", {NumOpts(0, 9)}, {bridgeRewardCountDesc}, OptionCategory::Setting, 1, true);
|
Option BridgeRewardCount = Option::U8 ("Reward Count", {NumOpts(0, 10)}, {bridgeRewardCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option BridgeDungeonCount = Option::U8 ("Dungeon Count", {NumOpts(0, 8)}, {bridgeDungeonCountDesc}, OptionCategory::Setting, 1, true);
|
Option BridgeDungeonCount = Option::U8 ("Dungeon Count", {NumOpts(0, 9)}, {bridgeDungeonCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option BridgeTokenCount = Option::U8 ("Token Count", {NumOpts(0, 100)}, {bridgeTokenCountDesc}, OptionCategory::Setting, 1, true);
|
Option BridgeTokenCount = Option::U8 ("Token Count", {NumOpts(0, 100)}, {bridgeTokenCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
|
Option BridgeRewardOptions = Option::U8 ("Bridge Reward Options", {"Standard Rewards", "Greg as Reward", "Greg as Wildcard"}, {bridgeRewardOptionsDesc});
|
||||||
Option RandomGanonsTrials = Option::Bool("Random Ganon's Trials", {"Off", "On"}, {randomGanonsTrialsDesc}, OptionCategory::Setting, ON);
|
Option RandomGanonsTrials = Option::Bool("Random Ganon's Trials", {"Off", "On"}, {randomGanonsTrialsDesc}, OptionCategory::Setting, ON);
|
||||||
Option GanonsTrialsCount = Option::U8 ("Trial Count", {NumOpts(0, 6)}, {ganonsTrialCountDesc}, OptionCategory::Setting, 1, true);
|
Option GanonsTrialsCount = Option::U8 ("Trial Count", {NumOpts(0, 6)}, {ganonsTrialCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
std::vector<Option *> openOptions = {
|
std::vector<Option *> openOptions = {
|
||||||
@ -80,6 +81,7 @@ namespace Settings {
|
|||||||
&BridgeRewardCount,
|
&BridgeRewardCount,
|
||||||
&BridgeDungeonCount,
|
&BridgeDungeonCount,
|
||||||
&BridgeTokenCount,
|
&BridgeTokenCount,
|
||||||
|
&BridgeRewardOptions,
|
||||||
&RandomGanonsTrials,
|
&RandomGanonsTrials,
|
||||||
&GanonsTrialsCount,
|
&GanonsTrialsCount,
|
||||||
};
|
};
|
||||||
@ -227,14 +229,15 @@ namespace Settings {
|
|||||||
{gerudoKeysVanilla, gerudoKeysAnyDungeon, gerudoKeysOverworld, gerudoKeysAnywhere});
|
{gerudoKeysVanilla, gerudoKeysAnyDungeon, gerudoKeysOverworld, gerudoKeysAnywhere});
|
||||||
Option BossKeysanity = Option::U8 ("Boss Keys", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"},
|
Option BossKeysanity = Option::U8 ("Boss Keys", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"},
|
||||||
{bossKeyStartWith, bossKeyVanilla, bossKeyOwnDungeon, bossKeyAnyDungeon, bossKeyOverworld, bossKeyAnywhere}, OptionCategory::Setting, BOSSKEYSANITY_OWN_DUNGEON);
|
{bossKeyStartWith, bossKeyVanilla, bossKeyOwnDungeon, bossKeyAnyDungeon, bossKeyOverworld, bossKeyAnywhere}, OptionCategory::Setting, BOSSKEYSANITY_OWN_DUNGEON);
|
||||||
Option GanonsBossKey = Option::U8 ("Ganon's Boss Key", {"Vanilla", "Own dungeon", "Start with", "Any Dungeon", "Overworld", "Anywhere", "LACS-Vanilla", "LACS-Medallions", "LACS-Stones", "LACS-Rewards", "LACS-Dungeons", "LACS-Tokens", "100 GS Reward"},
|
Option GanonsBossKey = Option::U8 ("Ganon's Boss Key", {"Vanilla", "Own dungeon", "Start with", "Any Dungeon", "Overworld", "Anywhere", "LACS-Vanilla", "LACS-Stones", "LACS-Medallions", "LACS-Rewards", "LACS-Dungeons", "LACS-Tokens", "100 GS Reward"},
|
||||||
{ganonKeyVanilla, ganonKeyOwnDungeon, ganonKeyStartWith, ganonKeyAnyDungeon, ganonKeyOverworld, ganonKeyAnywhere, ganonKeyLACS, ganonKey100GS}, OptionCategory::Setting, GANONSBOSSKEY_VANILLA);
|
{ganonKeyVanilla, ganonKeyOwnDungeon, ganonKeyStartWith, ganonKeyAnyDungeon, ganonKeyOverworld, ganonKeyAnywhere, ganonKeyLACS, ganonKey100GS}, OptionCategory::Setting, GANONSBOSSKEY_VANILLA);
|
||||||
uint8_t LACSCondition = 0;
|
uint8_t LACSCondition = 0;
|
||||||
Option LACSMedallionCount = Option::U8 ("Medallion Count", {NumOpts(0, 6)}, {lacsMedallionCountDesc}, OptionCategory::Setting, 1, true);
|
Option LACSStoneCount = Option::U8 ("Stone Count", {NumOpts(0, 4)}, {lacsStoneCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option LACSStoneCount = Option::U8 ("Stone Count", {NumOpts(0, 3)}, {lacsStoneCountDesc}, OptionCategory::Setting, 1, true);
|
Option LACSMedallionCount = Option::U8 ("Medallion Count", {NumOpts(0, 7)}, {lacsMedallionCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option LACSRewardCount = Option::U8 ("Reward Count", {NumOpts(0, 9)}, {lacsRewardCountDesc}, OptionCategory::Setting, 1, true);
|
Option LACSRewardCount = Option::U8 ("Reward Count", {NumOpts(0, 10)}, {lacsRewardCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option LACSDungeonCount = Option::U8 ("Dungeon Count", {NumOpts(0, 8)}, {lacsDungeonCountDesc}, OptionCategory::Setting, 1, true);
|
Option LACSDungeonCount = Option::U8 ("Dungeon Count", {NumOpts(0, 9)}, {lacsDungeonCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
Option LACSTokenCount = Option::U8 ("Token Count", {NumOpts(0, 100)}, {lacsTokenCountDesc}, OptionCategory::Setting, 1, true);
|
Option LACSTokenCount = Option::U8 ("Token Count", {NumOpts(0, 100)}, {lacsTokenCountDesc}, OptionCategory::Setting, 1, true);
|
||||||
|
Option LACSRewardOptions = Option::U8 ("LACS Reward Options", {"Standard Reward", "Greg as Reward", "Greg as Wildcard"}, {lacsRewardOptionsDesc});
|
||||||
Option KeyRings = Option::U8 ("Key Rings", {"Off", "Random", "Count", "Selection"}, {keyRingDesc});
|
Option KeyRings = Option::U8 ("Key Rings", {"Off", "Random", "Count", "Selection"}, {keyRingDesc});
|
||||||
Option KeyRingsRandomCount = Option::U8 ("Keyring Dungeon Count", {NumOpts(0, 9)}, {keyRingDesc}, OptionCategory::Setting, 1);
|
Option KeyRingsRandomCount = Option::U8 ("Keyring Dungeon Count", {NumOpts(0, 9)}, {keyRingDesc}, OptionCategory::Setting, 1);
|
||||||
Option RingFortress = Option::Bool("Gerudo Fortress", {"Off", "On"}, {keyRingDesc}, OptionCategory::Setting);
|
Option RingFortress = Option::Bool("Gerudo Fortress", {"Off", "On"}, {keyRingDesc}, OptionCategory::Setting);
|
||||||
@ -254,11 +257,12 @@ namespace Settings {
|
|||||||
&GerudoKeys,
|
&GerudoKeys,
|
||||||
&BossKeysanity,
|
&BossKeysanity,
|
||||||
&GanonsBossKey,
|
&GanonsBossKey,
|
||||||
&LACSMedallionCount,
|
|
||||||
&LACSStoneCount,
|
&LACSStoneCount,
|
||||||
|
&LACSMedallionCount,
|
||||||
&LACSRewardCount,
|
&LACSRewardCount,
|
||||||
&LACSDungeonCount,
|
&LACSDungeonCount,
|
||||||
&LACSTokenCount,
|
&LACSTokenCount,
|
||||||
|
&LACSRewardOptions,
|
||||||
&KeyRings,
|
&KeyRings,
|
||||||
&KeyRingsRandomCount,
|
&KeyRingsRandomCount,
|
||||||
&RingFortress,
|
&RingFortress,
|
||||||
@ -1297,6 +1301,7 @@ namespace Settings {
|
|||||||
ctx.bridgeRewardCount = BridgeRewardCount.Value<uint8_t>();
|
ctx.bridgeRewardCount = BridgeRewardCount.Value<uint8_t>();
|
||||||
ctx.bridgeDungeonCount = BridgeDungeonCount.Value<uint8_t>();
|
ctx.bridgeDungeonCount = BridgeDungeonCount.Value<uint8_t>();
|
||||||
ctx.bridgeTokenCount = BridgeTokenCount.Value<uint8_t>();
|
ctx.bridgeTokenCount = BridgeTokenCount.Value<uint8_t>();
|
||||||
|
ctx.bridgeRewardOptions = BridgeRewardOptions.Value<uint8_t>();
|
||||||
ctx.randomGanonsTrials = (RandomGanonsTrials) ? 1 : 0;
|
ctx.randomGanonsTrials = (RandomGanonsTrials) ? 1 : 0;
|
||||||
ctx.ganonsTrialsCount = GanonsTrialsCount.Value<uint8_t>();
|
ctx.ganonsTrialsCount = GanonsTrialsCount.Value<uint8_t>();
|
||||||
|
|
||||||
@ -1345,11 +1350,12 @@ namespace Settings {
|
|||||||
ctx.bossKeysanity = BossKeysanity.Value<uint8_t>();
|
ctx.bossKeysanity = BossKeysanity.Value<uint8_t>();
|
||||||
ctx.ganonsBossKey = GanonsBossKey.Value<uint8_t>();
|
ctx.ganonsBossKey = GanonsBossKey.Value<uint8_t>();
|
||||||
ctx.lacsCondition = LACSCondition;
|
ctx.lacsCondition = LACSCondition;
|
||||||
ctx.lacsMedallionCount = LACSMedallionCount.Value<uint8_t>();
|
|
||||||
ctx.lacsStoneCount = LACSStoneCount.Value<uint8_t>();
|
ctx.lacsStoneCount = LACSStoneCount.Value<uint8_t>();
|
||||||
|
ctx.lacsMedallionCount = LACSMedallionCount.Value<uint8_t>();
|
||||||
ctx.lacsRewardCount = LACSRewardCount.Value<uint8_t>();
|
ctx.lacsRewardCount = LACSRewardCount.Value<uint8_t>();
|
||||||
ctx.lacsDungeonCount = LACSDungeonCount.Value<uint8_t>();
|
ctx.lacsDungeonCount = LACSDungeonCount.Value<uint8_t>();
|
||||||
ctx.lacsTokenCount = LACSTokenCount.Value<uint8_t>();
|
ctx.lacsTokenCount = LACSTokenCount.Value<uint8_t>();
|
||||||
|
ctx.lacsRewardOptions = LACSRewardOptions.Value<uint8_t>();
|
||||||
|
|
||||||
ctx.ringFortress = (RingFortress) ? 1 : 0;
|
ctx.ringFortress = (RingFortress) ? 1 : 0;
|
||||||
ctx.ringForest = (RingForest) ? 1 : 0;
|
ctx.ringForest = (RingForest) ? 1 : 0;
|
||||||
@ -2114,14 +2120,6 @@ namespace Settings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!RandomizeDungeon) {
|
if (!RandomizeDungeon) {
|
||||||
//Only show Medallion Count if setting Ganons Boss Key to LACS Medallions
|
|
||||||
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_MEDALLIONS)) {
|
|
||||||
LACSMedallionCount.Unhide();
|
|
||||||
} else {
|
|
||||||
LACSMedallionCount.SetSelectedIndex(6);
|
|
||||||
LACSMedallionCount.Hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Only show Stone Count if setting Ganons Boss Key to LACS Stones
|
//Only show Stone Count if setting Ganons Boss Key to LACS Stones
|
||||||
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_STONES)) {
|
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_STONES)) {
|
||||||
LACSStoneCount.Unhide();
|
LACSStoneCount.Unhide();
|
||||||
@ -2129,6 +2127,14 @@ namespace Settings {
|
|||||||
LACSStoneCount.SetSelectedIndex(3);
|
LACSStoneCount.SetSelectedIndex(3);
|
||||||
LACSStoneCount.Hide();
|
LACSStoneCount.Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Only show Medallion Count if setting Ganons Boss Key to LACS Medallions
|
||||||
|
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_MEDALLIONS)) {
|
||||||
|
LACSMedallionCount.Unhide();
|
||||||
|
} else {
|
||||||
|
LACSMedallionCount.SetSelectedIndex(6);
|
||||||
|
LACSMedallionCount.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
//Only show Reward Count if setting Ganons Boss Key to LACS Rewards
|
//Only show Reward Count if setting Ganons Boss Key to LACS Rewards
|
||||||
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_REWARDS)) {
|
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_REWARDS)) {
|
||||||
@ -2695,6 +2701,7 @@ namespace Settings {
|
|||||||
BridgeRewardCount.SetSelectedIndex(cvarSettings[RSK_RAINBOW_BRIDGE_REWARD_COUNT]);
|
BridgeRewardCount.SetSelectedIndex(cvarSettings[RSK_RAINBOW_BRIDGE_REWARD_COUNT]);
|
||||||
BridgeDungeonCount.SetSelectedIndex(cvarSettings[RSK_RAINBOW_BRIDGE_DUNGEON_COUNT]);
|
BridgeDungeonCount.SetSelectedIndex(cvarSettings[RSK_RAINBOW_BRIDGE_DUNGEON_COUNT]);
|
||||||
BridgeTokenCount.SetSelectedIndex(cvarSettings[RSK_RAINBOW_BRIDGE_TOKEN_COUNT]);
|
BridgeTokenCount.SetSelectedIndex(cvarSettings[RSK_RAINBOW_BRIDGE_TOKEN_COUNT]);
|
||||||
|
BridgeRewardOptions.SetSelectedIndex(cvarSettings[RSK_BRIDGE_OPTIONS]);
|
||||||
if (cvarSettings[RSK_GANONS_TRIALS] == RO_GANONS_TRIALS_RANDOM_NUMBER) {
|
if (cvarSettings[RSK_GANONS_TRIALS] == RO_GANONS_TRIALS_RANDOM_NUMBER) {
|
||||||
RandomGanonsTrials.SetSelectedIndex(1);
|
RandomGanonsTrials.SetSelectedIndex(1);
|
||||||
} else {
|
} else {
|
||||||
@ -2826,6 +2833,7 @@ namespace Settings {
|
|||||||
LACSRewardCount.SetSelectedIndex(cvarSettings[RSK_LACS_REWARD_COUNT]);
|
LACSRewardCount.SetSelectedIndex(cvarSettings[RSK_LACS_REWARD_COUNT]);
|
||||||
LACSDungeonCount.SetSelectedIndex(cvarSettings[RSK_LACS_DUNGEON_COUNT]);
|
LACSDungeonCount.SetSelectedIndex(cvarSettings[RSK_LACS_DUNGEON_COUNT]);
|
||||||
LACSTokenCount.SetSelectedIndex(cvarSettings[RSK_LACS_TOKEN_COUNT]);
|
LACSTokenCount.SetSelectedIndex(cvarSettings[RSK_LACS_TOKEN_COUNT]);
|
||||||
|
LACSRewardOptions.SetSelectedIndex(cvarSettings[RSK_LACS_OPTIONS]);
|
||||||
|
|
||||||
KeyRings.SetSelectedIndex(cvarSettings[RSK_KEYRINGS]);
|
KeyRings.SetSelectedIndex(cvarSettings[RSK_KEYRINGS]);
|
||||||
KeyRingsRandomCount.SetSelectedIndex(cvarSettings[RSK_KEYRINGS_RANDOM_COUNT]);
|
KeyRingsRandomCount.SetSelectedIndex(cvarSettings[RSK_KEYRINGS_RANDOM_COUNT]);
|
||||||
@ -3008,10 +3016,10 @@ namespace Settings {
|
|||||||
|
|
||||||
HasNightStart = StartingTime.Is(STARTINGTIME_NIGHT);
|
HasNightStart = StartingTime.Is(STARTINGTIME_NIGHT);
|
||||||
|
|
||||||
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_MEDALLIONS)) {
|
if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_STONES)) {
|
||||||
LACSCondition = LACSCONDITION_MEDALLIONS;
|
|
||||||
} else if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_STONES)) {
|
|
||||||
LACSCondition = LACSCONDITION_STONES;
|
LACSCondition = LACSCONDITION_STONES;
|
||||||
|
} else if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_MEDALLIONS)) {
|
||||||
|
LACSCondition = LACSCONDITION_MEDALLIONS;
|
||||||
} else if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_REWARDS)) {
|
} else if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_REWARDS)) {
|
||||||
LACSCondition = LACSCONDITION_REWARDS;
|
LACSCondition = LACSCONDITION_REWARDS;
|
||||||
} else if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_DUNGEONS)) {
|
} else if (GanonsBossKey.Is(GANONSBOSSKEY_LACS_DUNGEONS)) {
|
||||||
|
@ -72,6 +72,12 @@ typedef enum {
|
|||||||
RAINBOWBRIDGE_GREG,
|
RAINBOWBRIDGE_GREG,
|
||||||
} RainbowBridgeSetting;
|
} RainbowBridgeSetting;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
BRIDGE_OPTION_STANDARD,
|
||||||
|
BRIDGE_OPTION_GREG,
|
||||||
|
BRIDGE_OPTION_WILDCARD,
|
||||||
|
} BridgeRewardOptionsSetting;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
LACSCONDITION_VANILLA,
|
LACSCONDITION_VANILLA,
|
||||||
LACSCONDITION_STONES,
|
LACSCONDITION_STONES,
|
||||||
@ -81,6 +87,12 @@ typedef enum {
|
|||||||
LACSCONDITION_TOKENS,
|
LACSCONDITION_TOKENS,
|
||||||
} LACSConditionSetting;
|
} LACSConditionSetting;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
LACS_OPTION_STANDARD,
|
||||||
|
LACS_OPTION_GREG,
|
||||||
|
LACS_OPTION_WILDCARD,
|
||||||
|
} LACSRewardOptionsSetting;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AGE_CHILD,
|
AGE_CHILD,
|
||||||
AGE_ADULT,
|
AGE_ADULT,
|
||||||
@ -233,8 +245,8 @@ typedef enum {
|
|||||||
GANONSBOSSKEY_OVERWORLD,
|
GANONSBOSSKEY_OVERWORLD,
|
||||||
GANONSBOSSKEY_ANYWHERE,
|
GANONSBOSSKEY_ANYWHERE,
|
||||||
GANONSBOSSKEY_LACS_VANILLA,
|
GANONSBOSSKEY_LACS_VANILLA,
|
||||||
GANONSBOSSKEY_LACS_MEDALLIONS,
|
|
||||||
GANONSBOSSKEY_LACS_STONES,
|
GANONSBOSSKEY_LACS_STONES,
|
||||||
|
GANONSBOSSKEY_LACS_MEDALLIONS,
|
||||||
GANONSBOSSKEY_LACS_REWARDS,
|
GANONSBOSSKEY_LACS_REWARDS,
|
||||||
GANONSBOSSKEY_LACS_DUNGEONS,
|
GANONSBOSSKEY_LACS_DUNGEONS,
|
||||||
GANONSBOSSKEY_LACS_TOKENS,
|
GANONSBOSSKEY_LACS_TOKENS,
|
||||||
@ -389,6 +401,7 @@ typedef struct {
|
|||||||
uint8_t bridgeRewardCount;
|
uint8_t bridgeRewardCount;
|
||||||
uint8_t bridgeDungeonCount;
|
uint8_t bridgeDungeonCount;
|
||||||
uint8_t bridgeTokenCount;
|
uint8_t bridgeTokenCount;
|
||||||
|
uint8_t bridgeRewardOptions;
|
||||||
uint8_t randomGanonsTrials;
|
uint8_t randomGanonsTrials;
|
||||||
uint8_t ganonsTrialsCount;
|
uint8_t ganonsTrialsCount;
|
||||||
|
|
||||||
@ -440,11 +453,12 @@ typedef struct {
|
|||||||
uint8_t bossKeysanity;
|
uint8_t bossKeysanity;
|
||||||
uint8_t ganonsBossKey;
|
uint8_t ganonsBossKey;
|
||||||
uint8_t lacsCondition;
|
uint8_t lacsCondition;
|
||||||
uint8_t lacsMedallionCount;
|
|
||||||
uint8_t lacsStoneCount;
|
uint8_t lacsStoneCount;
|
||||||
|
uint8_t lacsMedallionCount;
|
||||||
uint8_t lacsRewardCount;
|
uint8_t lacsRewardCount;
|
||||||
uint8_t lacsDungeonCount;
|
uint8_t lacsDungeonCount;
|
||||||
uint8_t lacsTokenCount;
|
uint8_t lacsTokenCount;
|
||||||
|
uint8_t lacsRewardOptions;
|
||||||
|
|
||||||
uint8_t ringFortress;
|
uint8_t ringFortress;
|
||||||
uint8_t ringForest;
|
uint8_t ringForest;
|
||||||
@ -908,6 +922,7 @@ void UpdateSettings(std::unordered_map<RandomizerSettingKey, uint8_t> cvarSettin
|
|||||||
extern Option BridgeRewardCount;
|
extern Option BridgeRewardCount;
|
||||||
extern Option BridgeDungeonCount;
|
extern Option BridgeDungeonCount;
|
||||||
extern Option BridgeTokenCount;
|
extern Option BridgeTokenCount;
|
||||||
|
extern Option BridgeRewardOptions;
|
||||||
extern Option RandomGanonsTrials;
|
extern Option RandomGanonsTrials;
|
||||||
extern Option GanonsTrialsCount;
|
extern Option GanonsTrialsCount;
|
||||||
|
|
||||||
@ -960,11 +975,12 @@ void UpdateSettings(std::unordered_map<RandomizerSettingKey, uint8_t> cvarSettin
|
|||||||
extern Option BossKeysanity;
|
extern Option BossKeysanity;
|
||||||
extern Option GanonsBossKey;
|
extern Option GanonsBossKey;
|
||||||
extern uint8_t LACSCondition;
|
extern uint8_t LACSCondition;
|
||||||
extern Option LACSMedallionCount;
|
|
||||||
extern Option LACSStoneCount;
|
extern Option LACSStoneCount;
|
||||||
|
extern Option LACSMedallionCount;
|
||||||
extern Option LACSRewardCount;
|
extern Option LACSRewardCount;
|
||||||
extern Option LACSDungeonCount;
|
extern Option LACSDungeonCount;
|
||||||
extern Option LACSTokenCount;
|
extern Option LACSTokenCount;
|
||||||
|
extern Option LACSRewardOptions;
|
||||||
extern Option KeyRings;
|
extern Option KeyRings;
|
||||||
extern Option KeyRingsRandomCount;
|
extern Option KeyRingsRandomCount;
|
||||||
extern Option RingFortress;
|
extern Option RingFortress;
|
||||||
|
@ -225,6 +225,7 @@ std::unordered_map<std::string, RandomizerSettingKey> SpoilerfileSettingNameToEn
|
|||||||
{ "Open Settings:Reward Count", RSK_RAINBOW_BRIDGE_REWARD_COUNT },
|
{ "Open Settings:Reward Count", RSK_RAINBOW_BRIDGE_REWARD_COUNT },
|
||||||
{ "Open Settings:Dungeon Count", RSK_RAINBOW_BRIDGE_DUNGEON_COUNT },
|
{ "Open Settings:Dungeon Count", RSK_RAINBOW_BRIDGE_DUNGEON_COUNT },
|
||||||
{ "Open Settings:Token Count", RSK_RAINBOW_BRIDGE_TOKEN_COUNT },
|
{ "Open Settings:Token Count", RSK_RAINBOW_BRIDGE_TOKEN_COUNT },
|
||||||
|
{ "Open Settings:Bridge Reward Options", RSK_BRIDGE_OPTIONS },
|
||||||
{ "Shuffle Settings:Shuffle Dungeon Rewards", RSK_SHUFFLE_DUNGEON_REWARDS },
|
{ "Shuffle Settings:Shuffle Dungeon Rewards", RSK_SHUFFLE_DUNGEON_REWARDS },
|
||||||
{ "Shuffle Settings:Link's Pocket", RSK_LINKS_POCKET},
|
{ "Shuffle Settings:Link's Pocket", RSK_LINKS_POCKET},
|
||||||
{ "Shuffle Settings:Shuffle Songs", RSK_SHUFFLE_SONGS },
|
{ "Shuffle Settings:Shuffle Songs", RSK_SHUFFLE_SONGS },
|
||||||
@ -263,11 +264,12 @@ std::unordered_map<std::string, RandomizerSettingKey> SpoilerfileSettingNameToEn
|
|||||||
{ "Shuffle Dungeon Items:Gerudo Fortress Keys", RSK_GERUDO_KEYS },
|
{ "Shuffle Dungeon Items:Gerudo Fortress Keys", RSK_GERUDO_KEYS },
|
||||||
{ "Shuffle Dungeon Items:Boss Keys", RSK_BOSS_KEYSANITY },
|
{ "Shuffle Dungeon Items:Boss Keys", RSK_BOSS_KEYSANITY },
|
||||||
{ "Shuffle Dungeon Items:Ganon's Boss Key", RSK_GANONS_BOSS_KEY },
|
{ "Shuffle Dungeon Items:Ganon's Boss Key", RSK_GANONS_BOSS_KEY },
|
||||||
{ "Shuffle Dungeon Items:Medallion Count", RSK_LACS_MEDALLION_COUNT },
|
|
||||||
{ "Shuffle Dungeon Items:Stone Count", RSK_LACS_STONE_COUNT },
|
{ "Shuffle Dungeon Items:Stone Count", RSK_LACS_STONE_COUNT },
|
||||||
|
{ "Shuffle Dungeon Items:Medallion Count", RSK_LACS_MEDALLION_COUNT },
|
||||||
{ "Shuffle Dungeon Items:Reward Count", RSK_LACS_REWARD_COUNT },
|
{ "Shuffle Dungeon Items:Reward Count", RSK_LACS_REWARD_COUNT },
|
||||||
{ "Shuffle Dungeon Items:Dungeon Count", RSK_LACS_DUNGEON_COUNT },
|
{ "Shuffle Dungeon Items:Dungeon Count", RSK_LACS_DUNGEON_COUNT },
|
||||||
{ "Shuffle Dungeon Items:Token Count", RSK_LACS_TOKEN_COUNT },
|
{ "Shuffle Dungeon Items:Token Count", RSK_LACS_TOKEN_COUNT },
|
||||||
|
{ "Shuffle Dungeon Items:LACS Reward Options", RSK_LACS_OPTIONS },
|
||||||
{ "Shuffle Dungeon Items:Key Rings", RSK_KEYRINGS },
|
{ "Shuffle Dungeon Items:Key Rings", RSK_KEYRINGS },
|
||||||
{ "Shuffle Dungeon Items:Keyring Dungeon Count", RSK_KEYRINGS_RANDOM_COUNT },
|
{ "Shuffle Dungeon Items:Keyring Dungeon Count", RSK_KEYRINGS_RANDOM_COUNT },
|
||||||
{ "Shuffle Dungeon Items:Gerudo Fortress", RSK_KEYRINGS_GERUDO_FORTRESS },
|
{ "Shuffle Dungeon Items:Gerudo Fortress", RSK_KEYRINGS_GERUDO_FORTRESS },
|
||||||
@ -705,6 +707,24 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
|||||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_GREG;
|
gSaveContext.randoSettings[index].value = RO_BRIDGE_GREG;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RSK_BRIDGE_OPTIONS:
|
||||||
|
if (it.value() == "Standard Rewards") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_BRIDGE_STANDARD_REWARD;
|
||||||
|
} else if (it.value() == "Greg as Reward") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_BRIDGE_GREG_REWARD;
|
||||||
|
} else if (it.value() == "Greg as Wildcard") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_BRIDGE_WILDCARD_REWARD;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RSK_LACS_OPTIONS:
|
||||||
|
if (it.value() == "Standard Reward") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_LACS_STANDARD_REWARD;
|
||||||
|
} else if (it.value() == "Greg as Reward") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_LACS_GREG_REWARD;
|
||||||
|
} else if (it.value() == "Greg as Wildcard") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_LACS_WILDCARD_REWARD;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case RSK_RAINBOW_BRIDGE_STONE_COUNT:
|
case RSK_RAINBOW_BRIDGE_STONE_COUNT:
|
||||||
case RSK_RAINBOW_BRIDGE_MEDALLION_COUNT:
|
case RSK_RAINBOW_BRIDGE_MEDALLION_COUNT:
|
||||||
case RSK_RAINBOW_BRIDGE_REWARD_COUNT:
|
case RSK_RAINBOW_BRIDGE_REWARD_COUNT:
|
||||||
@ -966,10 +986,10 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
|||||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_ANYWHERE;
|
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_ANYWHERE;
|
||||||
} else if(it.value() == "LACS-Vanilla") {
|
} else if(it.value() == "LACS-Vanilla") {
|
||||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_VANILLA;
|
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_VANILLA;
|
||||||
} else if(it.value() == "LACS-Medallions") {
|
|
||||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_MEDALLIONS;
|
|
||||||
} else if(it.value() == "LACS-Stones") {
|
} else if(it.value() == "LACS-Stones") {
|
||||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_STONES;
|
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_STONES;
|
||||||
|
} else if(it.value() == "LACS-Medallions") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_MEDALLIONS;
|
||||||
} else if(it.value() == "LACS-Rewards") {
|
} else if(it.value() == "LACS-Rewards") {
|
||||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_REWARDS;
|
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_REWARDS;
|
||||||
} else if(it.value() == "LACS-Dungeons") {
|
} else if(it.value() == "LACS-Dungeons") {
|
||||||
@ -2854,11 +2874,12 @@ void GenerateRandomizerImgui(std::string seed = "") {
|
|||||||
cvarSettings[RSK_STARTING_AGE] = CVarGetInteger("gRandomizeStartingAge", RO_AGE_CHILD);
|
cvarSettings[RSK_STARTING_AGE] = CVarGetInteger("gRandomizeStartingAge", RO_AGE_CHILD);
|
||||||
cvarSettings[RSK_GERUDO_FORTRESS] = CVarGetInteger("gRandomizeGerudoFortress", RO_GF_NORMAL);
|
cvarSettings[RSK_GERUDO_FORTRESS] = CVarGetInteger("gRandomizeGerudoFortress", RO_GF_NORMAL);
|
||||||
cvarSettings[RSK_RAINBOW_BRIDGE] = CVarGetInteger("gRandomizeRainbowBridge", RO_BRIDGE_VANILLA);
|
cvarSettings[RSK_RAINBOW_BRIDGE] = CVarGetInteger("gRandomizeRainbowBridge", RO_BRIDGE_VANILLA);
|
||||||
cvarSettings[RSK_RAINBOW_BRIDGE_STONE_COUNT] = CVarGetInteger("gRandomizeStoneCount", 3);
|
cvarSettings[RSK_RAINBOW_BRIDGE_STONE_COUNT] = CVarGetInteger("gRandomizeStoneCount", 4);
|
||||||
cvarSettings[RSK_RAINBOW_BRIDGE_MEDALLION_COUNT] = CVarGetInteger("gRandomizeMedallionCount", 6);
|
cvarSettings[RSK_RAINBOW_BRIDGE_MEDALLION_COUNT] = CVarGetInteger("gRandomizeMedallionCount", 7);
|
||||||
cvarSettings[RSK_RAINBOW_BRIDGE_REWARD_COUNT] = CVarGetInteger("gRandomizeRewardCount", 9);
|
cvarSettings[RSK_RAINBOW_BRIDGE_REWARD_COUNT] = CVarGetInteger("gRandomizeRewardCount", 10);
|
||||||
cvarSettings[RSK_RAINBOW_BRIDGE_DUNGEON_COUNT] = CVarGetInteger("gRandomizeDungeonCount", 8);
|
cvarSettings[RSK_RAINBOW_BRIDGE_DUNGEON_COUNT] = CVarGetInteger("gRandomizeDungeonCount", 9);
|
||||||
cvarSettings[RSK_RAINBOW_BRIDGE_TOKEN_COUNT] = CVarGetInteger("gRandomizeTokenCount", 100);
|
cvarSettings[RSK_RAINBOW_BRIDGE_TOKEN_COUNT] = CVarGetInteger("gRandomizeTokenCount", 100);
|
||||||
|
cvarSettings[RSK_BRIDGE_OPTIONS] = CVarGetInteger("gRandomizeBridgeRewardOptions", 0);
|
||||||
cvarSettings[RSK_GANONS_TRIALS] = CVarGetInteger("gRandomizeGanonTrial", RO_GANONS_TRIALS_SET_NUMBER);
|
cvarSettings[RSK_GANONS_TRIALS] = CVarGetInteger("gRandomizeGanonTrial", RO_GANONS_TRIALS_SET_NUMBER);
|
||||||
cvarSettings[RSK_TRIAL_COUNT] = CVarGetInteger("gRandomizeGanonTrialCount", 6);
|
cvarSettings[RSK_TRIAL_COUNT] = CVarGetInteger("gRandomizeGanonTrialCount", 6);
|
||||||
cvarSettings[RSK_STARTING_OCARINA] = CVarGetInteger("gRandomizeStartingOcarina", 0);
|
cvarSettings[RSK_STARTING_OCARINA] = CVarGetInteger("gRandomizeStartingOcarina", 0);
|
||||||
@ -2946,11 +2967,12 @@ void GenerateRandomizerImgui(std::string seed = "") {
|
|||||||
cvarSettings[RSK_KEYRINGS_GANONS_CASTLE] = CVarGetInteger("gRandomizeShuffleKeyRingsGanonsCastle", 0);
|
cvarSettings[RSK_KEYRINGS_GANONS_CASTLE] = CVarGetInteger("gRandomizeShuffleKeyRingsGanonsCastle", 0);
|
||||||
cvarSettings[RSK_BOSS_KEYSANITY] = CVarGetInteger("gRandomizeBossKeysanity", RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
|
cvarSettings[RSK_BOSS_KEYSANITY] = CVarGetInteger("gRandomizeBossKeysanity", RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
|
||||||
cvarSettings[RSK_GANONS_BOSS_KEY] = CVarGetInteger("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA);
|
cvarSettings[RSK_GANONS_BOSS_KEY] = CVarGetInteger("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA);
|
||||||
cvarSettings[RSK_LACS_STONE_COUNT] = CVarGetInteger("gRandomizeLacsStoneCount", 3);
|
cvarSettings[RSK_LACS_STONE_COUNT] = CVarGetInteger("gRandomizeLacsStoneCount", 4);
|
||||||
cvarSettings[RSK_LACS_MEDALLION_COUNT] = CVarGetInteger("gRandomizeLacsMedallionCount", 6);
|
cvarSettings[RSK_LACS_MEDALLION_COUNT] = CVarGetInteger("gRandomizeLacsMedallionCount", 7);
|
||||||
cvarSettings[RSK_LACS_REWARD_COUNT] = CVarGetInteger("gRandomizeLacsRewardCount", 9);
|
cvarSettings[RSK_LACS_REWARD_COUNT] = CVarGetInteger("gRandomizeLacsRewardCount", 10);
|
||||||
cvarSettings[RSK_LACS_DUNGEON_COUNT] = CVarGetInteger("gRandomizeLacsDungeonCount", 8);
|
cvarSettings[RSK_LACS_DUNGEON_COUNT] = CVarGetInteger("gRandomizeLacsDungeonCount", 9);
|
||||||
cvarSettings[RSK_LACS_TOKEN_COUNT] = CVarGetInteger("gRandomizeLacsTokenCount", 100);
|
cvarSettings[RSK_LACS_TOKEN_COUNT] = CVarGetInteger("gRandomizeLacsTokenCount", 100);
|
||||||
|
cvarSettings[RSK_LACS_OPTIONS] = CVarGetInteger("gRandomizeLacsRewardOptions", 0);
|
||||||
cvarSettings[RSK_STARTING_CONSUMABLES] = CVarGetInteger("gRandomizeStartingConsumables", 0);
|
cvarSettings[RSK_STARTING_CONSUMABLES] = CVarGetInteger("gRandomizeStartingConsumables", 0);
|
||||||
cvarSettings[RSK_FULL_WALLETS] = CVarGetInteger("gRandomizeFullWallets", 0);
|
cvarSettings[RSK_FULL_WALLETS] = CVarGetInteger("gRandomizeFullWallets", 0);
|
||||||
|
|
||||||
@ -3079,6 +3101,7 @@ void DrawRandoEditor(bool& open) {
|
|||||||
static const char* randoGerudoFortress[3] = { "Normal", "Fast", "Open" };
|
static const char* randoGerudoFortress[3] = { "Normal", "Fast", "Open" };
|
||||||
static const char* randoRainbowBridge[8] = { "Vanilla", "Always open", "Stones", "Medallions",
|
static const char* randoRainbowBridge[8] = { "Vanilla", "Always open", "Stones", "Medallions",
|
||||||
"Dungeon rewards", "Dungeons", "Tokens", "Greg" };
|
"Dungeon rewards", "Dungeons", "Tokens", "Greg" };
|
||||||
|
static const char* randoBridgeRewardOptions[3] = { "Standard Rewards", "Greg as Reward", "Greg as Wildcard" };
|
||||||
static const char* randoGanonsTrial[3] = { "Skip", "Set Number", "Random Number" };
|
static const char* randoGanonsTrial[3] = { "Skip", "Set Number", "Random Number" };
|
||||||
static const char* randoMqDungeons[3] = { "None", "Set Number", "Random Number" };
|
static const char* randoMqDungeons[3] = { "None", "Set Number", "Random Number" };
|
||||||
|
|
||||||
@ -3111,9 +3134,10 @@ void DrawRandoEditor(bool& open) {
|
|||||||
"Any Dungeon", "Overworld", "Anywhere" };
|
"Any Dungeon", "Overworld", "Anywhere" };
|
||||||
static const char* randoShuffleGanonsBossKey[13] = {"Vanilla", "Own dungeon", "Start with",
|
static const char* randoShuffleGanonsBossKey[13] = {"Vanilla", "Own dungeon", "Start with",
|
||||||
"Any Dungeon", "Overworld", "Anywhere",
|
"Any Dungeon", "Overworld", "Anywhere",
|
||||||
"LACS-Vanilla", "LACS-Medallions", "LACS-Stones",
|
"LACS-Vanilla", "LACS-Stones", "LACS-Medallions",
|
||||||
"LACS-Rewards", "LACS-Dungeons", "LACS-Tokens",
|
"LACS-Rewards", "LACS-Dungeons", "LACS-Tokens",
|
||||||
"100 GS Reward"};
|
"100 GS Reward"};
|
||||||
|
static const char* randoLACSRewardOptions[3] = { "Standard Reward", "Greg as Reward", "Greg as Wildcard" };
|
||||||
static const char* randoShuffleKeyRings[4] = { "Off", "Random", "Count", "Selection" };
|
static const char* randoShuffleKeyRings[4] = { "Off", "Random", "Count", "Selection" };
|
||||||
|
|
||||||
// Misc Settings
|
// Misc Settings
|
||||||
@ -3338,20 +3362,121 @@ void DrawRandoEditor(bool& open) {
|
|||||||
case RO_BRIDGE_VANILLA:
|
case RO_BRIDGE_VANILLA:
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_STONES:
|
case RO_BRIDGE_STONES:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoStoneCount",
|
ImGui::Text("Reward Options");
|
||||||
"gRandomizeStoneCount", 1, 3, "", 3, true, true, false);
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help open the bridge, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for opening "
|
||||||
|
"bridge), Greg helps open bridge, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps open the bridge, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeBridgeRewardOptions", randoBridgeRewardOptions, RO_BRIDGE_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeBridgeRewardOptions", RO_BRIDGE_STANDARD_REWARD)) {
|
||||||
|
case RO_BRIDGE_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoStoneCount",
|
||||||
|
"gRandomizeStoneCount", 1, 3, "", 3, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoStoneCount",
|
||||||
|
"gRandomizeStoneCount", 1, 4, "", 4, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoStoneCount",
|
||||||
|
"gRandomizeStoneCount", 1, 3, "", 3, true, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_MEDALLIONS:
|
case RO_BRIDGE_MEDALLIONS:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoMedallionCount",
|
ImGui::Text("Reward Options");
|
||||||
"gRandomizeMedallionCount", 1, 6, "", 6, true, true, false);
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help open the bridge, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for opening "
|
||||||
|
"bridge), Greg helps open bridge, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps open the bridge, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeBridgeRewardOptions", randoBridgeRewardOptions, RO_BRIDGE_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeBridgeRewardOptions", RO_BRIDGE_STANDARD_REWARD)) {
|
||||||
|
case RO_BRIDGE_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoMedallionCount",
|
||||||
|
"gRandomizeMedallionCount", 1, 6, "", 6, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoMedallionCount",
|
||||||
|
"gRandomizeMedallionCount", 1, 7, "", 7, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoMedallionCount",
|
||||||
|
"gRandomizeMedallionCount", 1, 6, "", 6, true, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_DUNGEON_REWARDS:
|
case RO_BRIDGE_DUNGEON_REWARDS:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoRewardCount",
|
ImGui::Text("Reward Options");
|
||||||
"gRandomizeRewardCount", 1, 9, "", 9, true, true, false);
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help open the bridge, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for opening "
|
||||||
|
"bridge), Greg helps open bridge, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps open the bridge, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeBridgeRewardOptions", randoBridgeRewardOptions, RO_BRIDGE_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeBridgeRewardOptions", RO_BRIDGE_STANDARD_REWARD)) {
|
||||||
|
case RO_BRIDGE_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoRewardCount",
|
||||||
|
"gRandomizeRewardCount", 1, 9, "", 9, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoRewardCount",
|
||||||
|
"gRandomizeRewardCount", 1, 10, "", 10, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoRewardCount",
|
||||||
|
"gRandomizeRewardCount", 1, 9, "", 9, true, true, false);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_DUNGEONS:
|
case RO_BRIDGE_DUNGEONS:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoDungeonCount",
|
ImGui::Text("Reward Options");
|
||||||
"gRandomizeDungeonCount", 1, 8, "", 8, true, true, false);
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help open the bridge, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for opening "
|
||||||
|
"bridge), Greg helps open bridge, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps open the bridge, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeBridgeRewardOptions", randoBridgeRewardOptions, RO_BRIDGE_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeBridgeRewardOptions", RO_BRIDGE_STANDARD_REWARD)) {
|
||||||
|
case RO_BRIDGE_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoDungeonCount",
|
||||||
|
"gRandomizeDungeonCount", 1, 8, "", 8, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoDungeonCount",
|
||||||
|
"gRandomizeDungeonCount", 1, 9, "", 9, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_BRIDGE_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoDungeonCount",
|
||||||
|
"gRandomizeDungeonCount", 1, 8, "", 8, true, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_TOKENS:
|
case RO_BRIDGE_TOKENS:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Token Count: %d", "##RandoTokenCount",
|
UIWidgets::PaddedEnhancementSliderInt("Token Count: %d", "##RandoTokenCount",
|
||||||
@ -3995,8 +4120,8 @@ void DrawRandoEditor(bool& open) {
|
|||||||
"\n"
|
"\n"
|
||||||
"LACS - These settings put the boss key on the Light Arrow Cutscene location, from Zelda in Temple of Time as adult, with differing requirements:\n"
|
"LACS - These settings put the boss key on the Light Arrow Cutscene location, from Zelda in Temple of Time as adult, with differing requirements:\n"
|
||||||
"- Vanilla: Obtain the Shadow Medallion and Spirit Medallion\n"
|
"- Vanilla: Obtain the Shadow Medallion and Spirit Medallion\n"
|
||||||
"- Medallions: Obtain the specified amount of medallions.\n"
|
|
||||||
"- Stones: Obtain the specified amount of spiritual stones.\n"
|
"- Stones: Obtain the specified amount of spiritual stones.\n"
|
||||||
|
"- Medallions: Obtain the specified amount of medallions.\n"
|
||||||
"- Dungeon rewards: Obtain the specified total sum of spiritual stones or medallions.\n"
|
"- Dungeon rewards: Obtain the specified total sum of spiritual stones or medallions.\n"
|
||||||
"- Dungeons: Complete the specified amount of dungeons. Dungeons are considered complete after stepping in to the blue warp after the boss.\n"
|
"- Dungeons: Complete the specified amount of dungeons. Dungeons are considered complete after stepping in to the blue warp after the boss.\n"
|
||||||
"- Tokens: Obtain the specified amount of Skulltula tokens.\n"
|
"- Tokens: Obtain the specified amount of Skulltula tokens.\n"
|
||||||
@ -4006,21 +4131,121 @@ void DrawRandoEditor(bool& open) {
|
|||||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleGanonBossKey", randoShuffleGanonsBossKey, RO_GANON_BOSS_KEY_VANILLA);
|
UIWidgets::EnhancementCombobox("gRandomizeShuffleGanonBossKey", randoShuffleGanonsBossKey, RO_GANON_BOSS_KEY_VANILLA);
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
switch (CVarGetInteger("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA)) {
|
switch (CVarGetInteger("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA)) {
|
||||||
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
|
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoLacsMedallionCount",
|
|
||||||
"gRandomizeLacsMedallionCount", 1, 6, "", 6, true, true, false);
|
|
||||||
break;
|
|
||||||
case RO_GANON_BOSS_KEY_LACS_STONES:
|
case RO_GANON_BOSS_KEY_LACS_STONES:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoLacsStoneCount",
|
ImGui::Text("Reward Options");
|
||||||
"gRandomizeLacsStoneCount", 1, 3, "", 3, true, true, false);
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help obtain GBK, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for obtaining "
|
||||||
|
"GBK), Greg helps obtain GBK, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps obtain GBK, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeLacsRewardOptions", randoLACSRewardOptions, RO_LACS_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeLacsRewardOptions", RO_LACS_STANDARD_REWARD)) {
|
||||||
|
case RO_LACS_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoLacsStoneCount",
|
||||||
|
"gRandomizeLacsStoneCount", 1, 3, "", 3, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoLacsStoneCount",
|
||||||
|
"gRandomizeLacsStoneCount", 1, 4, "", 4, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Stone Count: %d", "##RandoLacsStoneCount",
|
||||||
|
"gRandomizeLacsStoneCount", 1, 3, "", 3, true, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
|
||||||
|
ImGui::Text("Reward Options");
|
||||||
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help obtain GBK, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for obtaining "
|
||||||
|
"GBK), Greg helps obtain GBK, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps obtain GBK, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeLacsRewardOptions", randoLACSRewardOptions, RO_LACS_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeLacsRewardOptions", RO_LACS_STANDARD_REWARD)) {
|
||||||
|
case RO_LACS_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoLacsMedallionCount",
|
||||||
|
"gRandomizeLacsMedallionCount", 1, 6, "", 6, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoLacsMedallionCount",
|
||||||
|
"gRandomizeLacsMedallionCount", 1, 7, "", 7, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Medallion Count: %d", "##RandoLacsMedallionCount",
|
||||||
|
"gRandomizeLacsMedallionCount", 1, 6, "", 6, true, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RO_GANON_BOSS_KEY_LACS_REWARDS:
|
case RO_GANON_BOSS_KEY_LACS_REWARDS:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoLacsRewardCount",
|
ImGui::Text("Reward Options");
|
||||||
"gRandomizeLacsRewardCount", 1, 9, "", 9, true, true, false);
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help obtain GBK, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for obtaining "
|
||||||
|
"GBK), Greg helps obtain GBK, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps obtain GBK, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeLacsRewardOptions", randoLACSRewardOptions, RO_LACS_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeLacsRewardOptions", RO_LACS_STANDARD_REWARD)) {
|
||||||
|
case RO_LACS_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoLacsRewardCount",
|
||||||
|
"gRandomizeLacsRewardCount", 1, 9, "", 9, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoLacsRewardCount",
|
||||||
|
"gRandomizeLacsRewardCount", 1, 10, "", 10, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Reward Count: %d", "##RandoLacsRewardCount",
|
||||||
|
"gRandomizeLacsRewardCount", 1, 9, "", 9, true, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RO_GANON_BOSS_KEY_LACS_DUNGEONS:
|
case RO_GANON_BOSS_KEY_LACS_DUNGEONS:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoLacsDungeonCount",
|
ImGui::Text("Reward Options");
|
||||||
"gRandomizeLacsDungeonCount", 1, 8, "", 8, true, true, false);
|
UIWidgets::InsertHelpHoverText(
|
||||||
|
"Standard Rewards - Greg does not change logic, Greg does not help obtain GBK, max "
|
||||||
|
"number of rewards on slider does not change.\n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Reward - Greg does change logic (can be part of expected path for obtaining "
|
||||||
|
"GBK), Greg helps obtain GBK, max number of rewards on slider increases by 1 to "
|
||||||
|
"account for Greg. \n"
|
||||||
|
"\n"
|
||||||
|
"Greg as Wildcard - Greg does not change logic, Greg helps obtain GBK, max number of "
|
||||||
|
"rewards on slider does not change.");
|
||||||
|
|
||||||
|
UIWidgets::EnhancementCombobox("gRandomizeLacsRewardOptions", randoLACSRewardOptions, RO_LACS_STANDARD_REWARD);
|
||||||
|
switch (CVarGetInteger("gRandomizeLacsRewardOptions", RO_LACS_STANDARD_REWARD)) {
|
||||||
|
case RO_LACS_STANDARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoLacsDungeonCount",
|
||||||
|
"gRandomizeLacsDungeonCount", 1, 8, "", 8, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_GREG_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoLacsDungeonCount",
|
||||||
|
"gRandomizeLacsDungeonCount", 1, 9, "", 9, true, true, false);
|
||||||
|
break;
|
||||||
|
case RO_LACS_WILDCARD_REWARD:
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Dungeon Count: %d", "##RandoLacsDungeonCount",
|
||||||
|
"gRandomizeLacsDungeonCount", 1, 8, "", 8, true, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RO_GANON_BOSS_KEY_LACS_TOKENS:
|
case RO_GANON_BOSS_KEY_LACS_TOKENS:
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Token Count: %d", "##RandoLacsTokenCount",
|
UIWidgets::PaddedEnhancementSliderInt("Token Count: %d", "##RandoLacsTokenCount",
|
||||||
|
@ -990,6 +990,7 @@ typedef enum {
|
|||||||
RSK_RAINBOW_BRIDGE_REWARD_COUNT,
|
RSK_RAINBOW_BRIDGE_REWARD_COUNT,
|
||||||
RSK_RAINBOW_BRIDGE_DUNGEON_COUNT,
|
RSK_RAINBOW_BRIDGE_DUNGEON_COUNT,
|
||||||
RSK_RAINBOW_BRIDGE_TOKEN_COUNT,
|
RSK_RAINBOW_BRIDGE_TOKEN_COUNT,
|
||||||
|
RSK_BRIDGE_OPTIONS,
|
||||||
RSK_GANONS_TRIALS,
|
RSK_GANONS_TRIALS,
|
||||||
RSK_TRIAL_COUNT,
|
RSK_TRIAL_COUNT,
|
||||||
RSK_STARTING_OCARINA,
|
RSK_STARTING_OCARINA,
|
||||||
@ -1065,11 +1066,12 @@ typedef enum {
|
|||||||
RSK_LINKS_POCKET,
|
RSK_LINKS_POCKET,
|
||||||
RSK_RANDOM_MQ_DUNGEONS,
|
RSK_RANDOM_MQ_DUNGEONS,
|
||||||
RSK_MQ_DUNGEON_COUNT,
|
RSK_MQ_DUNGEON_COUNT,
|
||||||
RSK_LACS_MEDALLION_COUNT,
|
|
||||||
RSK_LACS_STONE_COUNT,
|
RSK_LACS_STONE_COUNT,
|
||||||
|
RSK_LACS_MEDALLION_COUNT,
|
||||||
RSK_LACS_REWARD_COUNT,
|
RSK_LACS_REWARD_COUNT,
|
||||||
RSK_LACS_DUNGEON_COUNT,
|
RSK_LACS_DUNGEON_COUNT,
|
||||||
RSK_LACS_TOKEN_COUNT,
|
RSK_LACS_TOKEN_COUNT,
|
||||||
|
RSK_LACS_OPTIONS,
|
||||||
RSK_KEYRINGS,
|
RSK_KEYRINGS,
|
||||||
RSK_KEYRINGS_RANDOM_COUNT,
|
RSK_KEYRINGS_RANDOM_COUNT,
|
||||||
RSK_KEYRINGS_GERUDO_FORTRESS,
|
RSK_KEYRINGS_GERUDO_FORTRESS,
|
||||||
@ -1174,6 +1176,13 @@ typedef enum {
|
|||||||
RO_BRIDGE_GREG,
|
RO_BRIDGE_GREG,
|
||||||
} RandoOptionRainbowBridge;
|
} RandoOptionRainbowBridge;
|
||||||
|
|
||||||
|
// Bridge Reward Options settings (Standard rewards, Greg as reward, Greg as wildcard)
|
||||||
|
typedef enum {
|
||||||
|
RO_BRIDGE_STANDARD_REWARD,
|
||||||
|
RO_BRIDGE_GREG_REWARD,
|
||||||
|
RO_BRIDGE_WILDCARD_REWARD,
|
||||||
|
} RandoOptionBridgeRewards;
|
||||||
|
|
||||||
//Shopsanity settings (off, 0-4 items, random)
|
//Shopsanity settings (off, 0-4 items, random)
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RO_SHOPSANITY_OFF,
|
RO_SHOPSANITY_OFF,
|
||||||
@ -1246,14 +1255,21 @@ typedef enum {
|
|||||||
RO_GANON_BOSS_KEY_OVERWORLD,
|
RO_GANON_BOSS_KEY_OVERWORLD,
|
||||||
RO_GANON_BOSS_KEY_ANYWHERE,
|
RO_GANON_BOSS_KEY_ANYWHERE,
|
||||||
RO_GANON_BOSS_KEY_LACS_VANILLA,
|
RO_GANON_BOSS_KEY_LACS_VANILLA,
|
||||||
RO_GANON_BOSS_KEY_LACS_MEDALLIONS,
|
|
||||||
RO_GANON_BOSS_KEY_LACS_STONES,
|
RO_GANON_BOSS_KEY_LACS_STONES,
|
||||||
|
RO_GANON_BOSS_KEY_LACS_MEDALLIONS,
|
||||||
RO_GANON_BOSS_KEY_LACS_REWARDS,
|
RO_GANON_BOSS_KEY_LACS_REWARDS,
|
||||||
RO_GANON_BOSS_KEY_LACS_DUNGEONS,
|
RO_GANON_BOSS_KEY_LACS_DUNGEONS,
|
||||||
RO_GANON_BOSS_KEY_LACS_TOKENS,
|
RO_GANON_BOSS_KEY_LACS_TOKENS,
|
||||||
RO_GANON_BOSS_KEY_KAK_TOKENS,
|
RO_GANON_BOSS_KEY_KAK_TOKENS,
|
||||||
} RandoOptionGanonsBossKey;
|
} RandoOptionGanonsBossKey;
|
||||||
|
|
||||||
|
// LACS Reward Options settings (Standard rewards, Greg as reward, Greg as wildcard)
|
||||||
|
typedef enum {
|
||||||
|
RO_LACS_STANDARD_REWARD,
|
||||||
|
RO_LACS_GREG_REWARD,
|
||||||
|
RO_LACS_WILDCARD_REWARD,
|
||||||
|
} RandoOptionLACSRewards;
|
||||||
|
|
||||||
//Ganon's Trials
|
//Ganon's Trials
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RO_GANONS_TRIALS_SKIP,
|
RO_GANONS_TRIALS_SKIP,
|
||||||
|
@ -338,29 +338,65 @@ u8 CheckDungeonCount() {
|
|||||||
return dungeonCount;
|
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) {
|
void GivePlayerRandoRewardZeldaLightArrowsGift(PlayState* play, RandomizerCheck check) {
|
||||||
Player* player = GET_PLAYER(play);
|
Player* player = GET_PLAYER(play);
|
||||||
|
|
||||||
u8 meetsRequirements = 0;
|
u8 meetsRequirements = 0;
|
||||||
|
|
||||||
switch (Randomizer_GetSettingValue(RSK_GANONS_BOSS_KEY)) {
|
switch (Randomizer_GetSettingValue(RSK_GANONS_BOSS_KEY)) {
|
||||||
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
|
case RO_GANON_BOSS_KEY_LACS_STONES:
|
||||||
if (CheckMedallionCount() >= Randomizer_GetSettingValue(RSK_LACS_MEDALLION_COUNT)) {
|
if ((CheckStoneCount() + CheckLACSRewardCount()) >= Randomizer_GetSettingValue(RSK_LACS_STONE_COUNT)) {
|
||||||
meetsRequirements = true;
|
meetsRequirements = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RO_GANON_BOSS_KEY_LACS_STONES:
|
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
|
||||||
if (CheckStoneCount() >= Randomizer_GetSettingValue(RSK_LACS_STONE_COUNT)) {
|
if ((CheckMedallionCount() + CheckLACSRewardCount()) >= Randomizer_GetSettingValue(RSK_LACS_MEDALLION_COUNT)) {
|
||||||
meetsRequirements = true;
|
meetsRequirements = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RO_GANON_BOSS_KEY_LACS_REWARDS:
|
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;
|
meetsRequirements = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RO_GANON_BOSS_KEY_LACS_DUNGEONS:
|
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;
|
meetsRequirements = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -106,25 +106,25 @@ void BgGjyoBridge_TriggerCutscene(BgGjyoBridge* this, PlayState* play) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_STONES:
|
case RO_BRIDGE_STONES:
|
||||||
if (CheckStoneCount() >= bridgeStoneCount) {
|
if ((CheckStoneCount() + CheckBridgeRewardCount()) >= bridgeStoneCount) {
|
||||||
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
||||||
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_MEDALLIONS:
|
case RO_BRIDGE_MEDALLIONS:
|
||||||
if (CheckMedallionCount() >= bridgeMedallionCount) {
|
if ((CheckMedallionCount() + CheckBridgeRewardCount()) >= bridgeMedallionCount) {
|
||||||
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
||||||
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_DUNGEON_REWARDS:
|
case RO_BRIDGE_DUNGEON_REWARDS:
|
||||||
if ((CheckMedallionCount() + CheckStoneCount()) >= bridgeRewardCount) {
|
if ((CheckMedallionCount() + CheckStoneCount() + CheckBridgeRewardCount()) >= bridgeRewardCount) {
|
||||||
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
||||||
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RO_BRIDGE_DUNGEONS:
|
case RO_BRIDGE_DUNGEONS:
|
||||||
if (CheckDungeonCount() >= bridgeDungeonCount) {
|
if ((CheckDungeonCount() + CheckBridgeRewardCount()) >= bridgeDungeonCount) {
|
||||||
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
||||||
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user