diff options
| author | Garrett Cox <garrettjcox@gmail.com> | 2024-10-02 14:56:05 -0500 |
|---|---|---|
| committer | Garrett Cox <garrettjcox@gmail.com> | 2024-10-02 14:56:37 -0500 |
| commit | 7ef92eabead327f7ec865dbdb54841ac905123f2 (patch) | |
| tree | a299d04b2842b17135fe394e43dc3cd9aaab28a8 /mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp | |
| parent | 2f3ee205c8ace300237df76d3fe7ab28c0e9bd2b (diff) | |
Make skulltula tokens and pots opt-in
Diffstat (limited to 'mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp')
| -rw-r--r-- | mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp b/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp index 0f868e60a..1d7c7ddfd 100644 --- a/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp +++ b/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp @@ -33,29 +33,41 @@ void Rando::MiscBehavior::OnFileCreate(s16 fileNum) { RANDO_SAVE_OPTIONS[randoOptionId] = CVarGetInteger(randoStaticOption.cvar, 0); } - if (RANDO_SAVE_OPTIONS[RO_LOGIC] == RO_LOGIC_VANILLA) { - for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { - if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { - RANDO_SAVE_CHECKS[randoCheckId].randoItemId = randoStaticCheck.randoItemId; - } + // Begin by placing all vanilla items in their vanilla locations + for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { + if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { + RANDO_SAVE_CHECKS[randoCheckId].randoItemId = randoStaticCheck.randoItemId; } - } else { + } + + if (RANDO_SAVE_OPTIONS[RO_LOGIC] == RO_LOGIC_NO_LOGIC) { + std::vector<RandoCheckId> checkPool; std::vector<RandoItemId> itemPool; for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { - if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { - itemPool.push_back(randoStaticCheck.randoItemId); + if (randoStaticCheck.randoCheckId == RC_UNKNOWN) { + continue; } + + if (randoStaticCheck.randoCheckType == RCTYPE_SKULL_TOKEN && + RANDO_SAVE_OPTIONS[RO_SHUFFLE_GOLD_SKULLTULAS] == RO_GENERIC_NO) { + continue; + } + + if (randoStaticCheck.randoCheckType == RCTYPE_POT && + RANDO_SAVE_OPTIONS[RO_SHUFFLE_POTS] == RO_GENERIC_NO) { + continue; + } + + checkPool.push_back(randoCheckId); + itemPool.push_back(randoStaticCheck.randoItemId); } for (size_t i = 0; i < itemPool.size(); i++) { std::swap(itemPool[i], itemPool[Ship_Random(0, itemPool.size() - 1)]); } - for (auto& [randoCheckId, randoStaticCheck] : Rando::StaticData::Checks) { - if (randoStaticCheck.randoCheckId != RC_UNKNOWN) { - RANDO_SAVE_CHECKS[randoCheckId].randoItemId = itemPool.back(); - itemPool.pop_back(); - } + for (size_t i = 0; i < checkPool.size(); i++) { + RANDO_SAVE_CHECKS[checkPool[i]].randoItemId = itemPool[i]; } } |
