summaryrefslogtreecommitdiff
path: root/mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp
diff options
context:
space:
mode:
authorGarrett Cox <garrettjcox@gmail.com>2024-10-02 14:56:05 -0500
committerGarrett Cox <garrettjcox@gmail.com>2024-10-02 14:56:37 -0500
commit7ef92eabead327f7ec865dbdb54841ac905123f2 (patch)
treea299d04b2842b17135fe394e43dc3cd9aaab28a8 /mm/2s2h/Rando/MiscBehavior/OnFileCreate.cpp
parent2f3ee205c8ace300237df76d3fe7ab28c0e9bd2b (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.cpp38
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];
}
}