Implement rewards gcbk settings & fix shopsanity

This commit is contained in:
aMannus
2025-05-27 23:12:01 +02:00
parent 44be44b513
commit 9d3ea502bb
3 changed files with 33 additions and 15 deletions

View File

@@ -526,7 +526,11 @@ void Context::ParseArchipelagoOptions(const std::map<std::string, int>& slot_dat
mOptions[RSK_SHUFFLE_MASTER_SWORD].Set(RO_GENERIC_NO);
mOptions[RSK_SHUFFLE_CHILD_WALLET].Set(RO_GENERIC_NO);
mOptions[RSK_INCLUDE_TYCOON_WALLET].Set(RO_GENERIC_YES);
mOptions[RSK_SHUFFLE_DUNGEON_REWARDS].Set(RO_DUNGEON_REWARDS_ANYWHERE);
if (slotData["shuffle_dungeon_rewards"] == 0) {
mOptions[RSK_SHUFFLE_DUNGEON_REWARDS].Set(RO_DUNGEON_REWARDS_VANILLA);
} else if (slotData["shuffle_dungeon_rewards"] == 1) {
mOptions[RSK_SHUFFLE_DUNGEON_REWARDS].Set(RO_DUNGEON_REWARDS_ANYWHERE);
}
mOptions[RSK_SHUFFLE_SONGS].Set(RO_SONG_SHUFFLE_ANYWHERE);
mOptions[RSK_SHUFFLE_TOKENS].Set(slotData["shuffle_tokens"]);
mOptions[RSK_SHOPSANITY].Set(slotData["shuffle_shops"]);
@@ -597,7 +601,11 @@ void Context::ParseArchipelagoOptions(const std::map<std::string, int>& slot_dat
mOptions[RSK_KEYSANITY].Set(RO_DUNGEON_ITEM_LOC_ANYWHERE);
mOptions[RSK_GERUDO_KEYS].Set(RO_GERUDO_KEYS_ANYWHERE);
mOptions[RSK_BOSS_KEYSANITY].Set(RO_DUNGEON_ITEM_LOC_ANYWHERE);
mOptions[RSK_GANONS_BOSS_KEY].Set(RO_GANON_BOSS_KEY_ANYWHERE);
if (slotData["gcbk_setting"] == 1) {
mOptions[RSK_GANONS_BOSS_KEY].Set(RO_GANON_BOSS_KEY_ANYWHERE);
} else if (slotData["gcbk_setting"] == 0) {
mOptions[RSK_GANONS_BOSS_KEY].Set(RO_GANON_BOSS_KEY_LACS_REWARDS);
}
mOptions[RSK_SKIP_CHILD_STEALTH].Set(RO_GENERIC_YES);
mOptions[RSK_SKIP_CHILD_ZELDA].Set(RO_GENERIC_NO);
mOptions[RSK_STARTING_STICKS].Set(RO_GENERIC_NO);
@@ -630,7 +638,7 @@ void Context::ParseArchipelagoOptions(const std::map<std::string, int>& slot_dat
mOptions[RSK_SUNLIGHT_ARROWS].Set(RO_GENERIC_YES);
mOptions[RSK_ENABLE_BOMBCHU_DROPS].Set(RO_GENERIC_YES);
mOptions[RSK_BOMBCHU_BAG].Set(RO_GENERIC_YES);
mOptions[RSK_LINKS_POCKET].Set(RO_LINKS_POCKET_NOTHING);
mOptions[RSK_LINKS_POCKET].Set(RO_LINKS_POCKET_ANYTHING);
mOptions[RSK_MQ_DUNGEON_RANDOM].Set(0);
mOptions[RSK_MQ_DUNGEON_COUNT].Set(0);
mOptions[RSK_MQ_DUNGEON_SET].Set(0);
@@ -648,7 +656,7 @@ void Context::ParseArchipelagoOptions(const std::map<std::string, int>& slot_dat
mOptions[RSK_MQ_GANONS_CASTLE].Set(0);
mOptions[RSK_LACS_STONE_COUNT].Set(0);
mOptions[RSK_LACS_MEDALLION_COUNT].Set(0);
mOptions[RSK_LACS_REWARD_COUNT].Set(0);
mOptions[RSK_LACS_REWARD_COUNT].Set(slotData["gcbk_rewards_required"]);
mOptions[RSK_LACS_DUNGEON_COUNT].Set(0);
mOptions[RSK_LACS_TOKEN_COUNT].Set(0);
mOptions[RSK_LACS_OPTIONS].Set(0);

View File

@@ -3349,19 +3349,24 @@ ShopItemIdentity Randomizer::IdentifyShopItem(s32 sceneNum, u8 slotIndex) {
(sceneNum == SCENE_BAZAAR && gSaveContext.entranceIndex == ENTR_BAZAAR_0) ? SCENE_TEST01 : sceneNum,
slotIndex - 1);
if (location->GetRandomizerCheck() != RC_UNKNOWN_CHECK) {
shopItemIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
shopItemIdentity.randomizerCheck = location->GetRandomizerCheck();
shopItemIdentity.ogItemId = (GetItemID)Rando::StaticData::RetrieveItem(location->GetVanillaItem()).GetItemID();
RandomizerCheck randoCheck = location->GetRandomizerCheck();
RandomizerGet randoGet =
Rando::Context::GetInstance()->GetItemLocation(shopItemIdentity.randomizerCheck)->GetPlacedRandomizerGet();
if (randomizerGetToEnGirlShopItem.find(randoGet) != randomizerGetToEnGirlShopItem.end()) {
shopItemIdentity.enGirlAShopItem = randomizerGetToEnGirlShopItem[randoGet];
if (randoCheck != RC_UNKNOWN_CHECK) {
RandomizerGet randoGet = Rando::Context::GetInstance()->GetItemLocation(randoCheck)->GetPlacedRandomizerGet();
if (randoGet != RG_NONE) {
shopItemIdentity.randomizerInf = rcToRandomizerInf[randoCheck];
shopItemIdentity.randomizerCheck = randoCheck;
shopItemIdentity.ogItemId =
(GetItemID)Rando::StaticData::RetrieveItem(location->GetVanillaItem()).GetItemID();
if (randomizerGetToEnGirlShopItem.find(randoGet) != randomizerGetToEnGirlShopItem.end()) {
shopItemIdentity.enGirlAShopItem = randomizerGetToEnGirlShopItem[randoGet];
}
shopItemIdentity.itemPrice =
OTRGlobals::Instance->gRandoContext->GetItemLocation(shopItemIdentity.randomizerCheck)->GetPrice();
}
shopItemIdentity.itemPrice =
OTRGlobals::Instance->gRandoContext->GetItemLocation(shopItemIdentity.randomizerCheck)->GetPrice();
}
return shopItemIdentity;

View File

@@ -71,6 +71,11 @@ void ArchipelagoSettingsWindow::DrawElement() {
apItem.index = 999999;
ArchipelagoClient::GetInstance().OnItemReceived(apItem);
}
ImGui::SameLine();
if (UIWidgets::Button("Send Game Won",
UIWidgets::ButtonOptions().Color(THEME_COLOR).Size(ImVec2(0.0, 0.0)))) {
ArchipelagoClient::GetInstance().SendGameWon();
}
}
static bool sArchipelagoTexturesLoaded = false;