Inverts CheckContainsRandoItem to CheckContainsVanillaItem.

Addresses https://github.com/HarbourMasters/Shipwright/pull/1050#discussion_r940895135
This commit is contained in:
Christopher Leggett 2022-08-11 21:39:30 -04:00
parent e1084c0d6d
commit 2077636c92
No known key found for this signature in database
GPG Key ID: 7093AE5FF7037D79
3 changed files with 60 additions and 44 deletions

View File

@ -2137,7 +2137,7 @@ GetItemID Randomizer::GetItemFromGet(RandomizerGet randoGet, GetItemID ogItemId)
return GI_RUPEE_BLUE; //todo return GI_RUPEE_BLUE; //todo
default: { default: {
if (IsGetItemRandoExclusive(randoGet)) { if (!IsItemVanilla(randoGet)) {
return (GetItemID)randoGet; return (GetItemID)randoGet;
} }
return ogItemId; return ogItemId;
@ -2145,50 +2145,66 @@ GetItemID Randomizer::GetItemFromGet(RandomizerGet randoGet, GetItemID ogItemId)
} }
} }
bool Randomizer::IsGetItemRandoExclusive(RandomizerGet randoGet) { bool Randomizer::IsItemVanilla(RandomizerGet randoGet) {
switch (randoGet) { switch (randoGet) {
case RG_LIGHT_MEDALLION: case RG_KOKIRI_SWORD:
case RG_FOREST_MEDALLION: case RG_GIANTS_KNIFE:
case RG_FIRE_MEDALLION: case RG_BIGGORON_SWORD:
case RG_WATER_MEDALLION: case RG_DEKU_SHIELD:
case RG_SHADOW_MEDALLION: case RG_HYLIAN_SHIELD:
case RG_SPIRIT_MEDALLION: case RG_MIRROR_SHIELD:
case RG_KOKIRI_EMERALD: case RG_GORON_TUNIC:
case RG_GORON_RUBY: case RG_ZORA_TUNIC:
case RG_ZORA_SAPPHIRE: case RG_IRON_BOOTS:
case RG_ZELDAS_LULLABY: case RG_HOVER_BOOTS:
case RG_SUNS_SONG: case RG_BOOMERANG:
case RG_EPONAS_SONG: case RG_LENS_OF_TRUTH:
case RG_SONG_OF_STORMS: case RG_MEGATON_HAMMER:
case RG_SONG_OF_TIME: case RG_STONE_OF_AGONY:
case RG_SARIAS_SONG: case RG_DINS_FIRE:
case RG_MINUET_OF_FOREST: case RG_FARORES_WIND:
case RG_BOLERO_OF_FIRE: case RG_NAYRUS_LOVE:
case RG_SERENADE_OF_WATER: case RG_FIRE_ARROWS:
case RG_NOCTURNE_OF_SHADOW: case RG_ICE_ARROWS:
case RG_REQUIEM_OF_SPIRIT: case RG_LIGHT_ARROWS:
case RG_PRELUDE_OF_LIGHT: case RG_GERUDO_MEMBERSHIP_CARD:
case RG_PROGRESSIVE_MAGIC_METER: case RG_MAGIC_BEAN:
case RG_DOUBLE_DEFENSE: case RG_WEIRD_EGG:
case RG_BOTTLE_WITH_RED_POTION: case RG_ZELDAS_LETTER:
case RG_BOTTLE_WITH_GREEN_POTION: case RG_POCKET_EGG:
case RG_BOTTLE_WITH_BLUE_POTION: case RG_COJIRO:
case RG_BOTTLE_WITH_FAIRY: case RG_ODD_MUSHROOM:
case RG_BOTTLE_WITH_FISH: case RG_ODD_POTION:
case RG_BOTTLE_WITH_BLUE_FIRE: case RG_POACHERS_SAW:
case RG_BOTTLE_WITH_BUGS: case RG_BROKEN_SWORD:
case RG_BOTTLE_WITH_POE: case RG_PRESCRIPTION:
case RG_BOTTLE_WITH_BIG_POE: case RG_EYEBALL_FROG:
case RG_ICE_TRAP: case RG_EYEDROPS:
case RG_CLAIM_CHECK:
case RG_GOLD_SKULLTULA_TOKEN:
case RG_PROGRESSIVE_HOOKSHOT:
case RG_PROGRESSIVE_STRENGTH:
case RG_PROGRESSIVE_BOMB_BAG:
case RG_PROGRESSIVE_BOW:
case RG_PROGRESSIVE_SLINGSHOT:
case RG_PROGRESSIVE_WALLET:
case RG_PROGRESSIVE_SCALE:
case RG_PROGRESSIVE_NUT_UPGRADE:
case RG_PROGRESSIVE_STICK_UPGRADE:
case RG_PROGRESSIVE_BOMBCHUS:
case RG_PROGRESSIVE_OCARINA:
case RG_PROGRESSIVE_GORONSWORD:
case RG_EMPTY_BOTTLE:
case RG_BOTTLE_WITH_MILK:
return true; return true;
default: default:
return false; return false;
} }
} }
bool Randomizer::CheckContainsRandoItem(RandomizerCheck randoCheck) { bool Randomizer::CheckContainsVanillaItem(RandomizerCheck randoCheck) {
RandomizerGet randoGet = this->itemLocations[randoCheck]; RandomizerGet randoGet = this->itemLocations[randoCheck];
return IsGetItemRandoExclusive(randoGet); return IsItemVanilla(randoGet);
} }
std::string Randomizer::GetAdultAltarText() const { std::string Randomizer::GetAdultAltarText() const {

View File

@ -21,7 +21,7 @@ class Randomizer {
void ParseRandomizerSettingsFile(const char* spoilerFileName); void ParseRandomizerSettingsFile(const char* spoilerFileName);
void ParseHintLocationsFile(const char* spoilerFileName); void ParseHintLocationsFile(const char* spoilerFileName);
void ParseItemLocationsFile(const char* spoilerFileName, bool silent); void ParseItemLocationsFile(const char* spoilerFileName, bool silent);
bool IsGetItemRandoExclusive(RandomizerGet randoGet); bool IsItemVanilla(RandomizerGet randoGet);
public: public:
@ -48,7 +48,7 @@ class Randomizer {
GetItemID GetRandomizedItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId); GetItemID GetRandomizedItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId);
GetItemID GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum); GetItemID GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum);
static void CreateCustomMessages(); static void CreateCustomMessages();
bool CheckContainsRandoItem(RandomizerCheck randoCheck); bool CheckContainsVanillaItem(RandomizerCheck randoCheck);
}; };
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -286,7 +286,7 @@ extern "C" void VanillaItemTable_Init() {
GET_ITEM_NONE, GET_ITEM_NONE,
}; };
ItemTableManager::Instance->AddItemTable(MOD_NONE); ItemTableManager::Instance->AddItemTable(MOD_NONE);
for (uint8_t i = 0; i < ARRAY_SIZE(getItemTable); i++) { for (uint8_t i = 0; i < ARRAY_COUNT(getItemTable); i++) {
getItemTable[i].modIndex = MOD_NONE; getItemTable[i].modIndex = MOD_NONE;
ItemTableManager::Instance->AddItemEntry(MOD_NONE, i, getItemTable[i]); ItemTableManager::Instance->AddItemEntry(MOD_NONE, i, getItemTable[i]);
} }
@ -1621,7 +1621,7 @@ extern "C" GetItemEntry ItemTable_RetrieveEntry(s16 tableID, s16 getItemID) {
} }
extern "C" s32 Randomizer_GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum) { extern "C" s32 Randomizer_GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum) {
if (OTRGlobals::Instance->gRandomizer->CheckContainsRandoItem(OTRGlobals::Instance->gRandomizer->GetCheckFromActor(sceneNum, actorId, actorParams))) { if (OTRGlobals::Instance->gRandomizer->CheckContainsVanillaItem(OTRGlobals::Instance->gRandomizer->GetCheckFromActor(sceneNum, actorId, actorParams))) {
OTRGlobals::Instance->getItemModIndex = MOD_RANDOMIZER; OTRGlobals::Instance->getItemModIndex = MOD_RANDOMIZER;
} else { } else {
OTRGlobals::Instance->getItemModIndex = MOD_NONE; OTRGlobals::Instance->getItemModIndex = MOD_NONE;
@ -1631,7 +1631,7 @@ extern "C" s32 Randomizer_GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 a
extern "C" GetItemEntry Randomizer_GetRandomizedItem(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum) { extern "C" GetItemEntry Randomizer_GetRandomizedItem(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum) {
s16 getItemModIndex; s16 getItemModIndex;
if (OTRGlobals::Instance->gRandomizer->CheckContainsRandoItem( if (OTRGlobals::Instance->gRandomizer->CheckContainsVanillaItem(
OTRGlobals::Instance->gRandomizer->GetCheckFromActor(sceneNum, actorId, actorParams))) { OTRGlobals::Instance->gRandomizer->GetCheckFromActor(sceneNum, actorId, actorParams))) {
getItemModIndex = MOD_RANDOMIZER; getItemModIndex = MOD_RANDOMIZER;
} else { } else {
@ -1642,7 +1642,7 @@ extern "C" GetItemEntry Randomizer_GetRandomizedItem(GetItemID ogId, s16 actorId
} }
extern "C" s32 Randomizer_GetItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId) { extern "C" s32 Randomizer_GetItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId) {
if (OTRGlobals::Instance->gRandomizer->CheckContainsRandoItem(randomizerCheck)) { if (OTRGlobals::Instance->gRandomizer->CheckContainsVanillaItem(randomizerCheck)) {
OTRGlobals::Instance->getItemModIndex = MOD_RANDOMIZER; OTRGlobals::Instance->getItemModIndex = MOD_RANDOMIZER;
} else { } else {
OTRGlobals::Instance->getItemModIndex = MOD_NONE; OTRGlobals::Instance->getItemModIndex = MOD_NONE;
@ -1652,7 +1652,7 @@ extern "C" s32 Randomizer_GetItemIdFromKnownCheck(RandomizerCheck randomizerChec
extern "C" GetItemEntry Randomizer_GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId) { extern "C" GetItemEntry Randomizer_GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId) {
s16 getItemModIndex; s16 getItemModIndex;
if (OTRGlobals::Instance->gRandomizer->CheckContainsRandoItem(randomizerCheck)) { if (OTRGlobals::Instance->gRandomizer->CheckContainsVanillaItem(randomizerCheck)) {
getItemModIndex = MOD_RANDOMIZER; getItemModIndex = MOD_RANDOMIZER;
} else { } else {
getItemModIndex = MOD_NONE; getItemModIndex = MOD_NONE;