#include "ShuffleFairies.h"
#include "randomizer_grotto.h"
#include "draw.h"
#include "src/overlays/actors/ovl_En_Elf/z_en_elf.h"
#include "src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h"
#include "src/overlays/actors/ovl_En_Gs/z_en_gs.h"
#include "src/overlays/actors/ovl_Shot_Sun/z_shot_sun.h"
#include "../../OTRGlobals.h"
#include "../../cvar_prefixes.h"
#include "static_data.h"

#define FAIRY_FLAG_TIMED (1 << 8)

void ShuffleFairies_DrawRandomizedItem(EnElf* enElf, PlayState* play) {
    GetItemEntry randoGetItem = enElf->sohFairyIdentity.itemEntry;
    if (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0)) {
        randoGetItem = GET_ITEM_MYSTERY;
    }
    Matrix_Push();
    Matrix_Scale(37.5, 37.5, 37.5, MTXMODE_APPLY);
    func_8002EBCC(&enElf->actor, play, 0);
    func_8002ED80(&enElf->actor, play, 0);
    EnItem00_CustomItemsParticles(&enElf->actor, play, randoGetItem);
    GetItemEntry_Draw(play, randoGetItem);
    Matrix_Pop();
}

bool ShuffleFairies_FairyExists(FairyIdentity fairyIdentity) {
    Actor* actor = gPlayState->actorCtx.actorLists[ACTORCAT_ITEMACTION].head;

    while (actor != NULL) {
        if (actor->id != ACTOR_EN_ELF) {
            actor = actor->next;
        } else {
            EnElf* enElf = (EnElf*)(actor);
            if (fairyIdentity.randomizerInf == enElf->sohFairyIdentity.randomizerInf) {
                return true;
            }
            actor = actor->next;
        }
    }

    return false;
}

FairyIdentity ShuffleFairies_GetFairyIdentity(int32_t params) {
    FairyIdentity fairyIdentity;
    s16 sceneNum = gPlayState->sceneNum;
    fairyIdentity.randomizerInf = RAND_INF_MAX;

    if (sceneNum == SCENE_TEMPLE_OF_TIME_EXTERIOR_NIGHT || sceneNum == SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS) {
        sceneNum = SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY;
    }

    Rando::Location* location = OTRGlobals::Instance->gRandomizer->GetCheckObjectFromActor(ACTOR_EN_ELF, sceneNum, params);

    if (location->GetRandomizerCheck() == RC_UNKNOWN_CHECK) {
        LUSLOG_WARN("FairyGetIdentity did not receive a valid RC value (%d).", location->GetRandomizerCheck());
        assert(false);
    } else {
        fairyIdentity.randomizerInf = static_cast<RandomizerInf>(location->GetCollectionCheck().flag);
        fairyIdentity.itemEntry = Rando::Context::GetInstance()->GetFinalGIEntry(location->GetRandomizerCheck(), true, GI_FAIRY);
    }

    return fairyIdentity;
}

bool ShuffleFairies_SpawnFairy(f32 posX, f32 posY, f32 posZ, int32_t params) {
    FairyIdentity fairyIdentity = ShuffleFairies_GetFairyIdentity(params);
    if (!Flags_GetRandomizerInf(fairyIdentity.randomizerInf)) {
        EnElf* fairy = (EnElf*)Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_EN_ELF, posX, posY - 30.0f, posZ, 0,
                                           0, 0, FAIRY_HEAL, true);
        fairy->sohFairyIdentity = fairyIdentity;
        fairy->actor.draw = (ActorFunc)ShuffleFairies_DrawRandomizedItem;
        return true;
    }
    return false;
}

void ShuffleFairies_OnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_list originalArgs) {
    va_list args;
    va_copy(args, originalArgs);

    Actor* actor = va_arg(args, Actor*);

    va_end(args);

    // Grant item when picking up fairy.
    if (id == VB_FAIRY_HEAL) {
        EnElf* enElf = (EnElf*)(actor);
        if (enElf->sohFairyIdentity.randomizerInf && enElf->sohFairyIdentity.randomizerInf != RAND_INF_MAX) {
            Flags_SetRandomizerInf(enElf->sohFairyIdentity.randomizerInf);
        }
    // Spawn fairies in fairy fountains
    } else if (id == VB_SPAWN_FOUNTAIN_FAIRIES) {
        bool fairySpawned = false;
        s16 grottoId = (gPlayState->sceneNum == SCENE_FAIRYS_FOUNTAIN) ? Grotto_CurrentGrotto() : 0;
        for (s16 index = 0; index < 8; index++) {
            int32_t params = (grottoId << 8) | index;
            if (ShuffleFairies_SpawnFairy(actor->world.pos.x, actor->world.pos.y, actor->world.pos.z,
                params)) {
                fairySpawned = true;
            }
        }
        if (fairySpawned) {
            *should = false;
        }
    // Spawn 3 fairies when playing Song of Storms next to a planted bean
    } else if (id == VB_SPAWN_BEAN_STALK_FAIRIES) {
        ObjBean* objBean = (ObjBean*)(actor);
        bool fairySpawned = false;
        for (s16 index = 0; index < 3; index++) {
            int32_t params = ((objBean->dyna.actor.params & 0x3F) << 8) | index;
            if (ShuffleFairies_SpawnFairy(objBean->dyna.actor.world.pos.x, objBean->dyna.actor.world.pos.y,
                objBean->dyna.actor.world.pos.z,
                params)) {
                fairySpawned = true;
            }
        }
        if (fairySpawned) {
            *should = false;
        }
    // Spawn a fairy from a ShotSun when playing the right song near it
    } else if (id == VB_SPAWN_SONG_FAIRY) {
        ShotSun* shotSun = (ShotSun*)(actor);
        if (ShuffleFairies_SpawnFairy(shotSun->actor.world.pos.x, shotSun->actor.world.pos.y,
            shotSun->actor.world.pos.z,
            TWO_ACTOR_PARAMS(0x1000, (int32_t)shotSun->actor.world.pos.z))) {
            *should = false;
        }
    // Handle playing both misc songs and song of storms in front of a gossip stone.
    } else if (id == VB_SPAWN_GOSSIP_STONE_FAIRY) {
        EnGs* gossipStone = (EnGs*)(actor);

        // Mimic vanilla behaviour, only go into this path if song played is one of the ones normally spawning a fairy.
        // Otherwise fall back to vanilla behaviour.
        if (gPlayState->msgCtx.ocarinaMode == OCARINA_MODE_04 &&
            (gPlayState->msgCtx.unk_E3F2 == OCARINA_SONG_LULLABY ||
                gPlayState->msgCtx.unk_E3F2 == OCARINA_SONG_SARIAS ||
                gPlayState->msgCtx.unk_E3F2 == OCARINA_SONG_EPONAS ||
                gPlayState->msgCtx.unk_E3F2 == OCARINA_SONG_SUNS || 
                gPlayState->msgCtx.unk_E3F2 == OCARINA_SONG_TIME ||
                gPlayState->msgCtx.unk_E3F2 == OCARINA_SONG_STORMS)) {

            int32_t params = (gPlayState->sceneNum == SCENE_GROTTOS) ? Grotto_CurrentGrotto() : 0;
            // Distinguish storms fairies from the normal song fairies
            if (gPlayState->msgCtx.unk_E3F2 == OCARINA_SONG_STORMS) {
                params |= 0x1000;
            }

            // Combine actor + song params with position to get the right randomizer check
            params = TWO_ACTOR_PARAMS(params, (int32_t)gossipStone->actor.world.pos.z);

            // Check if a fairy already exists with the same identity as the stone is trying to spawn.
            // Because the gossip stone code runs several times after playing the song, we need to
            // stop spawning the vanilla fairy as well when these fairies exist, otherwise both
            // the randomized and the vanilla fairy will spawn. When the randomized fairy is already
            // collected, the vanilla code will handle that part automatically.
            FairyIdentity fairyIdentity = ShuffleFairies_GetFairyIdentity(params);
            if (!ShuffleFairies_FairyExists(fairyIdentity)) {
                if (ShuffleFairies_SpawnFairy(gossipStone->actor.world.pos.x, gossipStone->actor.world.pos.y,
                                                gossipStone->actor.world.pos.z, params)) {
                    Audio_PlayActorSound2(&gossipStone->actor, NA_SE_EV_BUTTERFRY_TO_FAIRY);
                    // Set vanilla check for fairy spawned so it doesn't spawn the vanilla fairy afterwards as well.
                    gossipStone->unk_19D = 0;
                    *should = false;
                }
            } else {
                *should = false;
            }
        }
    }
}

uint32_t onVanillaBehaviorHook = 0;

void ShuffleFairies_RegisterHooks() {
    onVanillaBehaviorHook = GameInteractor::Instance->RegisterGameHook<GameInteractor::OnVanillaBehavior>(ShuffleFairies_OnVanillaBehaviorHandler);
}

void ShuffleFairies_UnregisterHooks() {
    GameInteractor::Instance->UnregisterGameHook<GameInteractor::OnVanillaBehavior>(onVanillaBehaviorHook);

    onVanillaBehaviorHook = 0;
}

void Rando::StaticData::RegisterFairyLocations() {
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_1] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_1,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1800,                          "Grotto Fairy 1",                                     "SFM Grotto Fairy 1",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_1));
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_2] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_2,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1801,                          "Grotto Fairy 2",                                     "SFM Grotto Fairy 2",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_2));
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_3] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_3,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1802,                          "Grotto Fairy 3",                                     "SFM Grotto Fairy 3",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_3));
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_4] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_4,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1803,                          "Grotto Fairy 4",                                     "SFM Grotto Fairy 4",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_4));
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_5] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_5,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1804,                          "Grotto Fairy 5",                                     "SFM Grotto Fairy 5",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_5));
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_6] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_6,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1805,                          "Grotto Fairy 6",                                     "SFM Grotto Fairy 6",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_6));
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_7] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_7,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1806,                          "Grotto Fairy 7",                                     "SFM Grotto Fairy 7",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_7));
    locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_8] =                        Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_8,                        RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_FAIRYS_FOUNTAIN,              0x1807,                          "Grotto Fairy 8",                                     "SFM Grotto Fairy 8",                                 RHT_SFM_FAIRY_GROTTO_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_8));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_1] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_1,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0300,                          "Grotto Fairy 1",                                     "ZR Grotto Fairy 1",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_1));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_2] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_2,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0301,                          "Grotto Fairy 2",                                     "ZR Grotto Fairy 2",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_2));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_3] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_3,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0302,                          "Grotto Fairy 3",                                     "ZR Grotto Fairy 3",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_3));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_4] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_4,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0303,                          "Grotto Fairy 4",                                     "ZR Grotto Fairy 4",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_4));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_5] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_5,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0304,                          "Grotto Fairy 5",                                     "ZR Grotto Fairy 5",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_5));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_6] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_6,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0305,                          "Grotto Fairy 6",                                     "ZR Grotto Fairy 6",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_6));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_7] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_7,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0306,                          "Grotto Fairy 7",                                     "ZR Grotto Fairy 7",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_7));
    locationTable[RC_ZR_FAIRY_GROTTO_FAIRY_8] =                         Location::Fairy(RC_ZR_FAIRY_GROTTO_FAIRY_8,                         RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_FAIRYS_FOUNTAIN,              0x0307,                          "Grotto Fairy 8",                                     "ZR Grotto Fairy 8",                                  RHT_ZR_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_FAIRY_GROTTO_FAIRY_8));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_1] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_1,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F00,                          "Grotto Fairy 1",                                     "HF Grotto Fairy 1",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_1));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_2] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_2,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F01,                          "Grotto Fairy 2",                                     "HF Grotto Fairy 2",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_2));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_3] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_3,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F02,                          "Grotto Fairy 3",                                     "HF Grotto Fairy 3",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_3));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_4] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_4,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F03,                          "Grotto Fairy 4",                                     "HF Grotto Fairy 4",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_4));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_5] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_5,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F04,                          "Grotto Fairy 5",                                     "HF Grotto Fairy 5",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_5));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_6] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_6,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F05,                          "Grotto Fairy 6",                                     "HF Grotto Fairy 6",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_6));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_7] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_7,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F06,                          "Grotto Fairy 7",                                     "HF Grotto Fairy 7",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_7));
    locationTable[RC_HF_FAIRY_GROTTO_FAIRY_8] =                         Location::Fairy(RC_HF_FAIRY_GROTTO_FAIRY_8,                         RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_FAIRYS_FOUNTAIN,              0x0F07,                          "Grotto Fairy 8",                                     "HF Grotto Fairy 8",                                  RHT_HF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FAIRY_GROTTO_FAIRY_8));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_1] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_1,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C00,                          "Grotto Fairy 1",                                     "ZD Grotto Fairy 1",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_1));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_2] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_2,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C01,                          "Grotto Fairy 2",                                     "ZD Grotto Fairy 2",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_2));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_3] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_3,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C02,                          "Grotto Fairy 3",                                     "ZD Grotto Fairy 3",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_3));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_4] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_4,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C03,                          "Grotto Fairy 4",                                     "ZD Grotto Fairy 4",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_4));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_5] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_5,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C04,                          "Grotto Fairy 5",                                     "ZD Grotto Fairy 5",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_5));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_6] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_6,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C05,                          "Grotto Fairy 6",                                     "ZD Grotto Fairy 6",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_6));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_7] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_7,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C06,                          "Grotto Fairy 7",                                     "ZD Grotto Fairy 7",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_7));
    locationTable[RC_ZD_FAIRY_GROTTO_FAIRY_8] =                         Location::Fairy(RC_ZD_FAIRY_GROTTO_FAIRY_8,                         RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_FAIRYS_FOUNTAIN,              0x1C07,                          "Grotto Fairy 8",                                     "ZD Grotto Fairy 8",                                  RHT_ZD_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_FAIRY_GROTTO_FAIRY_8));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_1] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_1,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D00,                          "Grotto Fairy 1",                                     "GF Grotto Fairy 1",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_1));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_2] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_2,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D01,                          "Grotto Fairy 2",                                     "GF Grotto Fairy 2",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_2));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_3] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_3,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D02,                          "Grotto Fairy 3",                                     "GF Grotto Fairy 3",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_3));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_4] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_4,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D03,                          "Grotto Fairy 4",                                     "GF Grotto Fairy 4",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_4));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_5] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_5,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D04,                          "Grotto Fairy 5",                                     "GF Grotto Fairy 5",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_5));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_6] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_6,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D05,                          "Grotto Fairy 6",                                     "GF Grotto Fairy 6",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_6));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_7] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_7,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D06,                          "Grotto Fairy 7",                                     "GF Grotto Fairy 7",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_7));
    locationTable[RC_GF_FAIRY_GROTTO_FAIRY_8] =                         Location::Fairy(RC_GF_FAIRY_GROTTO_FAIRY_8,                         RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_FAIRYS_FOUNTAIN,              0x1D07,                          "Grotto Fairy 8",                                     "GF Grotto Fairy 8",                                  RHT_GF_FAIRY_GROTTO_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_FAIRY_GROTTO_FAIRY_8));

    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_1] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_1,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x00,                          "Shield Grave Fairy 1",                               "Shield Grave Fairy 1",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_1));
    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_2] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_2,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x01,                          "Shield Grave Fairy 2",                               "Shield Grave Fairy 2",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_2));
    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_3] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_3,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x02,                          "Shield Grave Fairy 3",                               "Shield Grave Fairy 3",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_3));
    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_4] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_4,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x03,                          "Shield Grave Fairy 4",                               "Shield Grave Fairy 4",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_4));
    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_5] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_5,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x04,                          "Shield Grave Fairy 5",                               "Shield Grave Fairy 5",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_5));
    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_6] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_6,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x05,                          "Shield Grave Fairy 6",                               "Shield Grave Fairy 6",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_6));
    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_7] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_7,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x06,                          "Shield Grave Fairy 7",                               "Shield Grave Fairy 7",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_7));
    locationTable[RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_8] =                  Location::Fairy(RC_GRAVEYARD_SHIELD_GRAVE_FAIRY_8,                  RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN,     0x07,                          "Shield Grave Fairy 8",                               "Shield Grave Fairy 8",                               RHT_GRAVEYARD_SHIELD_GRAVE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_SHIELD_GRAVE_FAIRY_8));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_1] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_1,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x00,                          "Scrubs Fairy 1",                                     "Scrubs Fairy 1",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_1));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_2] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_2,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x01,                          "Scrubs Fairy 2",                                     "Scrubs Fairy 2",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_2));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_3] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_3,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x02,                          "Scrubs Fairy 3",                                     "Scrubs Fairy 3",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_3));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_4] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_4,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x03,                          "Scrubs Fairy 4",                                     "Scrubs Fairy 4",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_4));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_5] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_5,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x04,                          "Scrubs Fairy 5",                                     "Scrubs Fairy 5",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_5));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_6] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_6,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x05,                          "Scrubs Fairy 6",                                     "Scrubs Fairy 6",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_6));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_7] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_7,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x06,                          "Scrubs Fairy 7",                                     "Scrubs Fairy 7",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_7));
    locationTable[RC_GANONS_CASTLE_SCRUBS_FAIRY_8] =                    Location::Fairy(RC_GANONS_CASTLE_SCRUBS_FAIRY_8,                    RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x07,                          "Scrubs Fairy 8",                                     "Scrubs Fairy 8",                                     RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SCRUBS_FAIRY_8));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_1] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_1,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x00,                          "MQ Scrubs Fairy 1",                                  "MQ Scrubs Fairy 1",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_1));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_2] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_2,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x01,                          "MQ Scrubs Fairy 2",                                  "MQ Scrubs Fairy 2",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_2));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_3] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_3,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x02,                          "MQ Scrubs Fairy 3",                                  "MQ Scrubs Fairy 3",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_3));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_4] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_4,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x03,                          "MQ Scrubs Fairy 4",                                  "MQ Scrubs Fairy 4",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_4));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_5] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_5,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x04,                          "MQ Scrubs Fairy 5",                                  "MQ Scrubs Fairy 5",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_5));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_6] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_6,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x05,                          "MQ Scrubs Fairy 6",                                  "MQ Scrubs Fairy 6",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_6));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_7] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_7,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x06,                          "MQ Scrubs Fairy 7",                                  "MQ Scrubs Fairy 7",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_7));
    locationTable[RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_8] =                 Location::Fairy(RC_GANONS_CASTLE_MQ_SCRUBS_FAIRY_8,                 RCQUEST_MQ,     RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,           0x07,                          "MQ Scrubs Fairy 8",                                  "MQ Scrubs Fairy 8",                                  RHT_GANONS_CASTLE_SCRUBS_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SCRUBS_FAIRY_8));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_1] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_1,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x00,                          "Oasis Fairy 1",                                      "Oasis Fairy 1",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_1));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_2] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_2,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x01,                          "Oasis Fairy 2",                                      "Oasis Fairy 2",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_2));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_3] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_3,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x02,                          "Oasis Fairy 3",                                      "Oasis Fairy 3",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_3));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_4] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_4,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x03,                          "Oasis Fairy 4",                                      "Oasis Fairy 4",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_4));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_5] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_5,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x04,                          "Oasis Fairy 5",                                      "Oasis Fairy 5",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_5));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_6] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_6,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x05,                          "Oasis Fairy 6",                                      "Oasis Fairy 6",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_6));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_7] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_7,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x06,                          "Oasis Fairy 7",                                      "Oasis Fairy 7",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_7));
    locationTable[RC_COLOSSUS_OASIS_FAIRY_8] =                          Location::Fairy(RC_COLOSSUS_OASIS_FAIRY_8,                          RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,                0x07,                          "Oasis Fairy 8",                                      "Oasis Fairy 8",                                      RHT_COLOSSUS_OASIS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_OASIS_FAIRY_8));

    locationTable[RC_ZR_BEAN_SPROUT_FAIRY_1] =                          Location::Fairy(RC_ZR_BEAN_SPROUT_FAIRY_1,                          RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_ZORAS_RIVER,                  0x0300,                          "Bean Sprout Fairy 1",                                "ZR Bean Sprout Fairy 1",                             RHT_ZR_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_ZR_BEAN_SPROUT_FAIRY_2] =                          Location::Fairy(RC_ZR_BEAN_SPROUT_FAIRY_2,                          RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_ZORAS_RIVER,                  0x0301,                          "Bean Sprout Fairy 2",                                "ZR Bean Sprout Fairy 2",                             RHT_ZR_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_ZR_BEAN_SPROUT_FAIRY_3] =                          Location::Fairy(RC_ZR_BEAN_SPROUT_FAIRY_3,                          RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_ZORAS_RIVER,                  0x0302,                          "Bean Sprout Fairy 3",                                "ZR Bean Sprout Fairy 3",                             RHT_ZR_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_BEAN_SPROUT_FAIRY_3));
    locationTable[RC_KF_BEAN_SPROUT_FAIRY_1] =                          Location::Fairy(RC_KF_BEAN_SPROUT_FAIRY_1,                          RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                0x0900,                          "Bean Sprout Fairy 1",                                "KF Bean Sprout Fairy 1",                             RHT_KF_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_KF_BEAN_SPROUT_FAIRY_2] =                          Location::Fairy(RC_KF_BEAN_SPROUT_FAIRY_2,                          RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                0x0901,                          "Bean Sprout Fairy 2",                                "KF Bean Sprout Fairy 2",                             RHT_KF_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_KF_BEAN_SPROUT_FAIRY_3] =                          Location::Fairy(RC_KF_BEAN_SPROUT_FAIRY_3,                          RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                0x0902,                          "Bean Sprout Fairy 3",                                "KF Bean Sprout Fairy 3",                             RHT_KF_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BEAN_SPROUT_FAIRY_3));
    locationTable[RC_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_1] =              Location::Fairy(RC_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_1,              RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   0x0400,                          "Bean Sprout Near Bridge Fairy 1",                    "LW Bean Sprout Near Bridge Fairy 1",                 RHT_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_1));
    locationTable[RC_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_2] =              Location::Fairy(RC_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_2,              RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   0x0401,                          "Bean Sprout Near Bridge Fairy 2",                    "LW Bean Sprout Near Bridge Fairy 2",                 RHT_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_2));
    locationTable[RC_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_3] =              Location::Fairy(RC_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_3,              RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   0x0402,                          "Bean Sprout Near Bridge Fairy 3",                    "LW Bean Sprout Near Bridge Fairy 3",                 RHT_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_BEAN_SPROUT_NEAR_BRIDGE_FAIRY_3));
    locationTable[RC_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_1] =             Location::Fairy(RC_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_1,             RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   0x1200,                          "Bean Sprout Near Theatre Fairy 1",                   "LW Bean Sprout Near Theatre Fairy 1",                RHT_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_1));
    locationTable[RC_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_2] =             Location::Fairy(RC_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_2,             RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   0x1201,                          "Bean Sprout Near Theatre Fairy 2",                   "LW Bean Sprout Near Theatre Fairy 2",                RHT_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_2));
    locationTable[RC_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_3] =             Location::Fairy(RC_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_3,             RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   0x1202,                          "Bean Sprout Near Theatre Fairy 3",                   "LW Bean Sprout Near Theatre Fairy 3",                RHT_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_BEAN_SPROUT_NEAR_THEATER_FAIRY_3));
    locationTable[RC_LH_BEAN_SPROUT_FAIRY_1] =                          Location::Fairy(RC_LH_BEAN_SPROUT_FAIRY_1,                          RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   0x0100,                          "Bean Sprout Fairy 1",                                "LH Bean Sprout Fairy 1",                             RHT_LH_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_LH_BEAN_SPROUT_FAIRY_2] =                          Location::Fairy(RC_LH_BEAN_SPROUT_FAIRY_2,                          RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   0x0101,                          "Bean Sprout Fairy 2",                                "LH Bean Sprout Fairy 2",                             RHT_LH_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_LH_BEAN_SPROUT_FAIRY_3] =                          Location::Fairy(RC_LH_BEAN_SPROUT_FAIRY_3,                          RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   0x0102,                          "Bean Sprout Fairy 3",                                "LH Bean Sprout Fairy 3",                             RHT_LH_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_BEAN_SPROUT_FAIRY_3));
    locationTable[RC_GV_BEAN_SPROUT_FAIRY_1] =                          Location::Fairy(RC_GV_BEAN_SPROUT_FAIRY_1,                          RCQUEST_BOTH,   RCAREA_GERUDO_VALLEY,         SCENE_GERUDO_VALLEY,                0x0300,                          "Bean Sprout Fairy 1",                                "GV Bean Sprout Fairy 1",                             RHT_GV_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_GV_BEAN_SPROUT_FAIRY_2] =                          Location::Fairy(RC_GV_BEAN_SPROUT_FAIRY_2,                          RCQUEST_BOTH,   RCAREA_GERUDO_VALLEY,         SCENE_GERUDO_VALLEY,                0x0301,                          "Bean Sprout Fairy 2",                                "GV Bean Sprout Fairy 2",                             RHT_GV_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_GV_BEAN_SPROUT_FAIRY_3] =                          Location::Fairy(RC_GV_BEAN_SPROUT_FAIRY_3,                          RCQUEST_BOTH,   RCAREA_GERUDO_VALLEY,         SCENE_GERUDO_VALLEY,                0x0302,                          "Bean Sprout Fairy 3",                                "GV Bean Sprout Fairy 3",                             RHT_GV_BEAN_SPROUT_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_BEAN_SPROUT_FAIRY_3));
    locationTable[RC_COLOSSUS_BEAN_SPROUT_FAIRY_1] =                    Location::Fairy(RC_COLOSSUS_BEAN_SPROUT_FAIRY_1,                    RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,              0x1800,                          "Bean Sprout Fairy 1",                                "Col Bean Sprout Fairy 1",                            RHT_COLOSSUS_BEAN_SPROUT_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_COLOSSUS_BEAN_SPROUT_FAIRY_2] =                    Location::Fairy(RC_COLOSSUS_BEAN_SPROUT_FAIRY_2,                    RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,              0x1801,                          "Bean Sprout Fairy 2",                                "Col Bean Sprout Fairy 2",                            RHT_COLOSSUS_BEAN_SPROUT_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_COLOSSUS_BEAN_SPROUT_FAIRY_3] =                    Location::Fairy(RC_COLOSSUS_BEAN_SPROUT_FAIRY_3,                    RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,              0x1802,                          "Bean Sprout Fairy 3",                                "Col Bean Sprout Fairy 3",                            RHT_COLOSSUS_BEAN_SPROUT_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_BEAN_SPROUT_FAIRY_3));
    locationTable[RC_GRAVEYARD_BEAN_SPROUT_FAIRY_1] =                   Location::Fairy(RC_GRAVEYARD_BEAN_SPROUT_FAIRY_1,                   RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVEYARD,                    0x0300,                          "Bean Sprout Fairy 1",                                "GY Bean Sprout Fairy 1",                             RHT_GRAVEYARD_BEAN_SPROUT_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_GRAVEYARD_BEAN_SPROUT_FAIRY_2] =                   Location::Fairy(RC_GRAVEYARD_BEAN_SPROUT_FAIRY_2,                   RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVEYARD,                    0x0301,                          "Bean Sprout Fairy 2",                                "GY Bean Sprout Fairy 2",                             RHT_GRAVEYARD_BEAN_SPROUT_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_GRAVEYARD_BEAN_SPROUT_FAIRY_3] =                   Location::Fairy(RC_GRAVEYARD_BEAN_SPROUT_FAIRY_3,                   RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVEYARD,                    0x0302,                          "Bean Sprout Fairy 3",                                "GY Bean Sprout Fairy 3",                             RHT_GRAVEYARD_BEAN_SPROUT_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_BEAN_SPROUT_FAIRY_3));
    locationTable[RC_DMC_BEAN_SPROUT_FAIRY_1] =                         Location::Fairy(RC_DMC_BEAN_SPROUT_FAIRY_1,                         RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER,        0x0300,                          "Bean Sprout Fairy 1",                                "DMC Bean Sprout Fairy 1",                            RHT_DMC_BEAN_SPROUT_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_DMC_BEAN_SPROUT_FAIRY_2] =                         Location::Fairy(RC_DMC_BEAN_SPROUT_FAIRY_2,                         RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER,        0x0301,                          "Bean Sprout Fairy 2",                                "DMC Bean Sprout Fairy 2",                            RHT_DMC_BEAN_SPROUT_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_DMC_BEAN_SPROUT_FAIRY_3] =                         Location::Fairy(RC_DMC_BEAN_SPROUT_FAIRY_3,                         RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER,        0x0302,                          "Bean Sprout Fairy 3",                                "DMC Bean Sprout Fairy 3",                            RHT_DMC_BEAN_SPROUT_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_BEAN_SPROUT_FAIRY_3));
    locationTable[RC_DMT_BEAN_SPROUT_FAIRY_1] =                         Location::Fairy(RC_DMT_BEAN_SPROUT_FAIRY_1,                         RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_DEATH_MOUNTAIN_TRAIL,         0x0600,                          "Bean Sprout Fairy 1",                                "DMT Bean Sprout Fairy 1",                            RHT_DMT_BEAN_SPROUT_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_BEAN_SPROUT_FAIRY_1));
    locationTable[RC_DMT_BEAN_SPROUT_FAIRY_2] =                         Location::Fairy(RC_DMT_BEAN_SPROUT_FAIRY_2,                         RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_DEATH_MOUNTAIN_TRAIL,         0x0601,                          "Bean Sprout Fairy 2",                                "DMT Bean Sprout Fairy 2",                            RHT_DMT_BEAN_SPROUT_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_BEAN_SPROUT_FAIRY_2));
    locationTable[RC_DMT_BEAN_SPROUT_FAIRY_3] =                         Location::Fairy(RC_DMT_BEAN_SPROUT_FAIRY_3,                         RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_DEATH_MOUNTAIN_TRAIL,         0x0602,                          "Bean Sprout Fairy 3",                                "DMT Bean Sprout Fairy 3",                            RHT_DMT_BEAN_SPROUT_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_BEAN_SPROUT_FAIRY_3));

    locationTable[RC_TOT_LEFTMOST_GOSSIP_STONE_FAIRY] =                 Location::Fairy(RC_TOT_LEFTMOST_GOSSIP_STONE_FAIRY,                 RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(     0, -680),  "ToT Left Gossip Stone Fairy",                        "ToT Left Gossip Stone Fairy",                        RHT_TOT_GOSSIP_STONE_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_LEFTMOST_GOSSIP_STONE_FAIRY));
    locationTable[RC_TOT_LEFTMOST_GOSSIP_STONE_FAIRY_BIG] =             Location::Fairy(RC_TOT_LEFTMOST_GOSSIP_STONE_FAIRY_BIG,             RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(0x1000, -680),  "ToT Left Gossip Stone Big Fairy",                    "ToT Left Gossip Stone Big Fairy",                    RHT_TOT_GOSSIP_STONE_FAIRY_BIG,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_LEFTMOST_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_TOT_LEFT_CENTER_GOSSIP_STONE_FAIRY] =              Location::Fairy(RC_TOT_LEFT_CENTER_GOSSIP_STONE_FAIRY,              RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(     0, -615),  "ToT Left Center Gossip Stone Fairy",                 "ToT Left Center Gossip Stone Fairy",                 RHT_TOT_GOSSIP_STONE_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_LEFT_CENTER_GOSSIP_STONE_FAIRY));
    locationTable[RC_TOT_LEFT_CENTER_GOSSIP_STONE_FAIRY_BIG] =          Location::Fairy(RC_TOT_LEFT_CENTER_GOSSIP_STONE_FAIRY_BIG,          RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(0x1000, -615),  "ToT Left Center Gossip Stone Big Fairy",             "ToT Left Center Gossip Stone Big Fairy",             RHT_TOT_GOSSIP_STONE_FAIRY_BIG,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_LEFT_CENTER_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_TOT_RIGHT_CENTER_GOSSIP_STONE_FAIRY] =             Location::Fairy(RC_TOT_RIGHT_CENTER_GOSSIP_STONE_FAIRY,             RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(     0, -550),  "ToT Right Center Gossip Stone Fairy",                "ToT Right Center Gossip Stone Fairy",                RHT_TOT_GOSSIP_STONE_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_RIGHT_CENTER_GOSSIP_STONE_FAIRY));
    locationTable[RC_TOT_RIGHT_CENTER_GOSSIP_STONE_FAIRY_BIG] =         Location::Fairy(RC_TOT_RIGHT_CENTER_GOSSIP_STONE_FAIRY_BIG,         RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(0x1000, -550),  "ToT Right Center Gossip Stone Big Fairy",            "ToT Right Center Gossip Stone Big Fairy",            RHT_TOT_GOSSIP_STONE_FAIRY_BIG,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_RIGHT_CENTER_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_TOT_RIGHTMOST_GOSSIP_STONE_FAIRY] =                Location::Fairy(RC_TOT_RIGHTMOST_GOSSIP_STONE_FAIRY,                RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(     0, -485),  "ToT Right Gossip Stone Fairy",                       "ToT Right Gossip Stone Fairy",                       RHT_TOT_GOSSIP_STONE_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_RIGHTMOST_GOSSIP_STONE_FAIRY));
    locationTable[RC_TOT_RIGHTMOST_GOSSIP_STONE_FAIRY_BIG] =            Location::Fairy(RC_TOT_RIGHTMOST_GOSSIP_STONE_FAIRY_BIG,            RCQUEST_BOTH,   RCAREA_MARKET,                SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY,  TWO_ACTOR_PARAMS(0x1000, -485),  "ToT Right Gossip Stone Big Fairy",                   "ToT Right Gossip Stone Big Fairy",                   RHT_TOT_GOSSIP_STONE_FAIRY_BIG,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_TOT_RIGHTMOST_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_DMC_GOSSIP_STONE_FAIRY] =                          Location::Fairy(RC_DMC_GOSSIP_STONE_FAIRY,                          RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER,        TWO_ACTOR_PARAMS(     0, 1656),  "Gossip Stone Fairy",                                 "DMC Gossip Stone Fairy",                             RHT_DMC_GOSSIP_STONE_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_GOSSIP_STONE_FAIRY));
    locationTable[RC_DMC_GOSSIP_STONE_FAIRY_BIG] =                      Location::Fairy(RC_DMC_GOSSIP_STONE_FAIRY_BIG,                      RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER,        TWO_ACTOR_PARAMS(0x1000, 1656),  "Gossip Stone Big Fairy",                             "DMC Gossip Stone Big Fairy",                         RHT_DMC_GOSSIP_STONE_FAIRY_BIG,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_DMT_GOSSIP_STONE_FAIRY] =                          Location::Fairy(RC_DMT_GOSSIP_STONE_FAIRY,                          RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_DEATH_MOUNTAIN_TRAIL,         TWO_ACTOR_PARAMS(     0, -3935), "Gossip Stone Fairy",                                 "DMT Gossip Stone Fairy",                             RHT_DMT_GOSSIP_STONE_FAIRY,                          SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_GOSSIP_STONE_FAIRY));
    locationTable[RC_DMT_GOSSIP_STONE_FAIRY_BIG] =                      Location::Fairy(RC_DMT_GOSSIP_STONE_FAIRY_BIG,                      RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_DEATH_MOUNTAIN_TRAIL,         TWO_ACTOR_PARAMS(0x1000, -3935), "Gossip Stone Big Fairy",                             "DMT Gossip Stone Big Fairy",                         RHT_DMT_GOSSIP_STONE_FAIRY_BIG,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_COLOSSUS_GOSSIP_STONE_FAIRY] =                     Location::Fairy(RC_COLOSSUS_GOSSIP_STONE_FAIRY,                     RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,              TWO_ACTOR_PARAMS(     0, 1320),  "Gossip Stone Fairy",                                 "Col Gossip Stone Fairy",                             RHT_COLOSSUS_GOSSIP_STONE_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_GOSSIP_STONE_FAIRY));
    locationTable[RC_COLOSSUS_GOSSIP_STONE_FAIRY_BIG] =                 Location::Fairy(RC_COLOSSUS_GOSSIP_STONE_FAIRY_BIG,                 RCQUEST_BOTH,   RCAREA_DESERT_COLOSSUS,       SCENE_DESERT_COLOSSUS,              TWO_ACTOR_PARAMS(0x1000, 1320),  "Gossip Stone Big Fairy",                             "Col Gossip Stone Big Fairy",                         RHT_COLOSSUS_GOSSIP_STONE_FAIRY_BIG,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_COLOSSUS_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY] =              Location::Fairy(RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY,              RCQUEST_VANILLA,RCAREA_DODONGOS_CAVERN,       SCENE_DODONGOS_CAVERN,              TWO_ACTOR_PARAMS(     0, -1520), "Gossip Stone Fairy",                                 "DC Gossip Stone Fairy",                              RHT_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY,              SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY));
    locationTable[RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY_BIG] =          Location::Fairy(RC_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY_BIG,          RCQUEST_VANILLA,RCAREA_DODONGOS_CAVERN,       SCENE_DODONGOS_CAVERN,              TWO_ACTOR_PARAMS(0x1000, -1520), "Gossip Stone Big Fairy",                             "DC Gossip Stone Big Fairy",                          RHT_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY_BIG,          SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_DODONGOS_CAVERN_MQ_GOSSIP_STONE_FAIRY] =           Location::Fairy(RC_DODONGOS_CAVERN_MQ_GOSSIP_STONE_FAIRY,           RCQUEST_MQ,     RCAREA_DODONGOS_CAVERN,       SCENE_DODONGOS_CAVERN,              TWO_ACTOR_PARAMS(     0, -916),  "MQ Gossip Stone Fairy",                              "DC MQ Gossip Stone Fairy",                           RHT_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY,              SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_GOSSIP_STONE_FAIRY));
    locationTable[RC_DODONGOS_CAVERN_MQ_GOSSIP_STONE_FAIRY_BIG] =       Location::Fairy(RC_DODONGOS_CAVERN_MQ_GOSSIP_STONE_FAIRY_BIG,       RCQUEST_MQ,     RCAREA_DODONGOS_CAVERN,       SCENE_DODONGOS_CAVERN,              TWO_ACTOR_PARAMS(0x1000, -916),  "MQ Gossip Stone Big Fairy",                          "DC MQ Gossip Stone Big Fairy",                       RHT_DODONGOS_CAVERN_GOSSIP_STONE_FAIRY_BIG,          SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_GV_GOSSIP_STONE_FAIRY] =                           Location::Fairy(RC_GV_GOSSIP_STONE_FAIRY,                           RCQUEST_BOTH,   RCAREA_GERUDO_VALLEY,         SCENE_GERUDO_VALLEY,                TWO_ACTOR_PARAMS(     0, -2340), "Gossip Stone Fairy",                                 "GV Gossip Stone Fairy",                              RHT_GV_GOSSIP_STONE_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_GOSSIP_STONE_FAIRY));
    locationTable[RC_GV_GOSSIP_STONE_FAIRY_BIG] =                       Location::Fairy(RC_GV_GOSSIP_STONE_FAIRY_BIG,                       RCQUEST_BOTH,   RCAREA_GERUDO_VALLEY,         SCENE_GERUDO_VALLEY,                TWO_ACTOR_PARAMS(0x1000, -2340), "Gossip Stone Big Fairy",                             "GV Gossip Stone Big Fairy",                          RHT_GV_GOSSIP_STONE_FAIRY_BIG,                       SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_GC_MAZE_GOSSIP_STONE_FAIRY] =                      Location::Fairy(RC_GC_MAZE_GOSSIP_STONE_FAIRY,                      RCQUEST_BOTH,   RCAREA_GORON_CITY,            SCENE_GORON_CITY,                   TWO_ACTOR_PARAMS(     0, -1265), "Maze Gossip Stone Fairy",                            "GC Maze Gossip Stone Fairy",                         RHT_GC_MAZE_GOSSIP_STONE_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_MAZE_GOSSIP_STONE_FAIRY));
    locationTable[RC_GC_MAZE_GOSSIP_STONE_FAIRY_BIG] =                  Location::Fairy(RC_GC_MAZE_GOSSIP_STONE_FAIRY_BIG,                  RCQUEST_BOTH,   RCAREA_GORON_CITY,            SCENE_GORON_CITY,                   TWO_ACTOR_PARAMS(0x1000, -1265), "Maze Gossip Stone Big Fairy",                        "GC Maze Gossip Stone Big Fairy",                     RHT_GC_MAZE_GOSSIP_STONE_FAIRY_BIG,                  SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_MAZE_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_GC_MEDIGORON_GOSSIP_STONE_FAIRY] =                 Location::Fairy(RC_GC_MEDIGORON_GOSSIP_STONE_FAIRY,                 RCQUEST_BOTH,   RCAREA_GORON_CITY,            SCENE_GORON_CITY,                   TWO_ACTOR_PARAMS(     0, 1496),  "Medigoron Gossip Stone Fairy",                       "GC Medigoron Gossip Stone Fairy",                    RHT_GC_MEDIGORON_GOSSIP_STONE_FAIRY,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_MEDIGORON_GOSSIP_STONE_FAIRY));
    locationTable[RC_GC_MEDIGORON_GOSSIP_STONE_FAIRY_BIG] =             Location::Fairy(RC_GC_MEDIGORON_GOSSIP_STONE_FAIRY_BIG,             RCQUEST_BOTH,   RCAREA_GORON_CITY,            SCENE_GORON_CITY,                   TWO_ACTOR_PARAMS(0x1000, 1496),  "Medigoron Gossip Stone Big Fairy",                   "GC Medigoron Gossip Stone Big Fairy",                RHT_GC_MEDIGORON_GOSSIP_STONE_FAIRY_BIG,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_MEDIGORON_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_GRAVEYARD_GOSSIP_STONE_FAIRY] =                    Location::Fairy(RC_GRAVEYARD_GOSSIP_STONE_FAIRY,                    RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVEYARD,                    TWO_ACTOR_PARAMS(     0, -75),   "Gossip Stone Fairy",                                 "GY Gossip Stone Fairy",                              RHT_GRAVEYARD_GOSSIP_STONE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_GOSSIP_STONE_FAIRY));
    locationTable[RC_GRAVEYARD_GOSSIP_STONE_FAIRY_BIG] =                Location::Fairy(RC_GRAVEYARD_GOSSIP_STONE_FAIRY_BIG,                RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_GRAVEYARD,                    TWO_ACTOR_PARAMS(0x1000, -75),   "Gossip Stone Big Fairy",                             "GY Gossip Stone Big Fairy",                          RHT_GRAVEYARD_GOSSIP_STONE_FAIRY_BIG,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_HC_MALON_GOSSIP_STONE_FAIRY] =                     Location::Fairy(RC_HC_MALON_GOSSIP_STONE_FAIRY,                     RCQUEST_BOTH,   RCAREA_HYRULE_CASTLE,         SCENE_HYRULE_CASTLE,                TWO_ACTOR_PARAMS(     0, 3445),  "Malon Gossip Stone Fairy",                           "HC Malon Gossip Stone Fairy",                        RHT_HC_MALON_GOSSIP_STONE_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_MALON_GOSSIP_STONE_FAIRY));
    locationTable[RC_HC_MALON_GOSSIP_STONE_FAIRY_BIG] =                 Location::Fairy(RC_HC_MALON_GOSSIP_STONE_FAIRY_BIG,                 RCQUEST_BOTH,   RCAREA_HYRULE_CASTLE,         SCENE_HYRULE_CASTLE,                TWO_ACTOR_PARAMS(0x1000, 3445),  "Malon Gossip Stone Big Fairy",                       "HC Malon Gossip Stone Big Fairy",                    RHT_HC_MALON_GOSSIP_STONE_FAIRY_BIG,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_MALON_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_HC_ROCK_WALL_GOSSIP_STONE_FAIRY] =                 Location::Fairy(RC_HC_ROCK_WALL_GOSSIP_STONE_FAIRY,                 RCQUEST_BOTH,   RCAREA_HYRULE_CASTLE,         SCENE_HYRULE_CASTLE,                TWO_ACTOR_PARAMS(     0, 1041),  "Rock Wall Gossip Stone Fairy",                       "HC Rock Wall Gossip Stone Fairy",                    RHT_HC_ROCK_WALL_GOSSIP_STONE_FAIRY,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_ROCK_WALL_GOSSIP_STONE_FAIRY));
    locationTable[RC_HC_ROCK_WALL_GOSSIP_STONE_FAIRY_BIG] =             Location::Fairy(RC_HC_ROCK_WALL_GOSSIP_STONE_FAIRY_BIG,             RCQUEST_BOTH,   RCAREA_HYRULE_CASTLE,         SCENE_HYRULE_CASTLE,                TWO_ACTOR_PARAMS(0x1000, 1041),  "Rock Wall Gossip Stone Big Fairy",                   "HC Rock Wall Gossip Stone Big Fairy",                RHT_HC_ROCK_WALL_GOSSIP_STONE_FAIRY_BIG,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_ROCK_WALL_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY] =             Location::Fairy(RC_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY,             RCQUEST_BOTH,   RCAREA_HYRULE_CASTLE,         SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(   0xC, 735),   "Storms Grotto Gossip Stone Fairy",                   "HC Storms Grotto Gossip Stone Fairy",                RHT_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG] =         Location::Fairy(RC_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG,         RCQUEST_BOTH,   RCAREA_HYRULE_CASTLE,         SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x100C, 735),   "Storms Grotto Gossip Stone Big Fairy",               "HC Storms Grotto Gossip Stone Big Fairy",            RHT_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG,         SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_KF_DEKU_TREE_LEFT_GOSSIP_STONE_FAIRY] =            Location::Fairy(RC_KF_DEKU_TREE_LEFT_GOSSIP_STONE_FAIRY,            RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                TWO_ACTOR_PARAMS(     0, -2230), "Deku Tree Left Gossip Stone Fairy",                  "KF Deku Tree Left Gossip Stone Fairy",               RHT_KF_DEKU_TREE_GOSSIP_STONE_FAIRY,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_DEKU_TREE_LEFT_GOSSIP_STONE_FAIRY));
    locationTable[RC_KF_DEKU_TREE_LEFT_GOSSIP_STONE_FAIRY_BIG] =        Location::Fairy(RC_KF_DEKU_TREE_LEFT_GOSSIP_STONE_FAIRY_BIG,        RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                TWO_ACTOR_PARAMS(0x1000, -2230), "Deku Tree Left Gossip Stone Big Fairy",              "KF Deku Tree Left Gossip Stone Big Fairy",           RHT_KF_DEKU_TREE_GOSSIP_STONE_FAIRY_BIG,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_DEKU_TREE_LEFT_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_KF_DEKU_TREE_RIGHT_GOSSIP_STONE_FAIRY] =           Location::Fairy(RC_KF_DEKU_TREE_RIGHT_GOSSIP_STONE_FAIRY,           RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                TWO_ACTOR_PARAMS(     0, -700),  "Deku Tree Right Gossip Stone Fairy",                 "KF Deku Tree Right Gossip Stone Fairy",              RHT_KF_DEKU_TREE_GOSSIP_STONE_FAIRY,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_DEKU_TREE_RIGHT_GOSSIP_STONE_FAIRY));
    locationTable[RC_KF_DEKU_TREE_RIGHT_GOSSIP_STONE_FAIRY_BIG] =       Location::Fairy(RC_KF_DEKU_TREE_RIGHT_GOSSIP_STONE_FAIRY_BIG,       RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                TWO_ACTOR_PARAMS(0x1000, -700),  "Deku Tree Right Gossip Stone Big Fairy",             "KF Deku Tree Right Gossip Stone Big Fairy",          RHT_KF_DEKU_TREE_GOSSIP_STONE_FAIRY_BIG,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_DEKU_TREE_RIGHT_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_KF_GOSSIP_STONE_FAIRY] =                           Location::Fairy(RC_KF_GOSSIP_STONE_FAIRY,                           RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                TWO_ACTOR_PARAMS(     0, -1223), "Gossip Stone Fairy",                                 "KF Gossip Stone Fairy",                              RHT_KF_GOSSIP_STONE_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_GOSSIP_STONE_FAIRY));
    locationTable[RC_KF_GOSSIP_STONE_FAIRY_BIG] =                       Location::Fairy(RC_KF_GOSSIP_STONE_FAIRY_BIG,                       RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_KOKIRI_FOREST,                TWO_ACTOR_PARAMS(0x1000, -1223), "Gossip Stone Big Fairy",                             "KF Gossip Stone Big Fairy",                          RHT_KF_GOSSIP_STONE_FAIRY_BIG,                       SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY] =             Location::Fairy(RC_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY,             RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(  0x1B, -236),  "Storms Gossip Stone Fairy",                          "KF Storms Gossip Stone Fairy",                       RHT_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG] =         Location::Fairy(RC_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG,         RCQUEST_BOTH,   RCAREA_KOKIRI_FOREST,         SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x101B, -236),  "Storms Gossip Stone Big Fairy",                      "KF Storms Gossip Stone Big Fairy",                   RHT_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG,         SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_LH_LAB_GOSSIP_STONE_FAIRY] =                       Location::Fairy(RC_LH_LAB_GOSSIP_STONE_FAIRY,                       RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   TWO_ACTOR_PARAMS(     0, 3212),  "Lab Gossip Stone Fairy",                             "LH Lab Gossip Stone Fairy",                          RHT_LH_LAB_GOSSIP_STONE_FAIRY,                       SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_LAB_GOSSIP_STONE_FAIRY));
    locationTable[RC_LH_LAB_GOSSIP_STONE_FAIRY_BIG] =                   Location::Fairy(RC_LH_LAB_GOSSIP_STONE_FAIRY_BIG,                   RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   TWO_ACTOR_PARAMS(0x1000, 3212),  "Lab Gossip Stone Big Fairy",                         "LH Lab Gossip Stone Big Fairy",                      RHT_LH_LAB_GOSSIP_STONE_FAIRY_BIG,                   SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_LAB_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_LH_SOUTHEAST_GOSSIP_STONE_FAIRY] =                 Location::Fairy(RC_LH_SOUTHEAST_GOSSIP_STONE_FAIRY,                 RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   TWO_ACTOR_PARAMS(     0, 8395),  "Southeast Gossip Stone Fairy",                       "LH Southeast Gossip Stone Fairy",                    RHT_LH_SOUTHEAST_GOSSIP_STONE_FAIRY,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_SOUTHEAST_GOSSIP_STONE_FAIRY));
    locationTable[RC_LH_SOUTHEAST_GOSSIP_STONE_FAIRY_BIG] =             Location::Fairy(RC_LH_SOUTHEAST_GOSSIP_STONE_FAIRY_BIG,             RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   TWO_ACTOR_PARAMS(0x1000, 8395),  "Southeast Gossip Stone Big Fairy",                   "LH Southeast Gossip Stone Big Fairy",                RHT_LH_SOUTHEAST_GOSSIP_STONE_FAIRY_BIG,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_SOUTHEAST_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_LH_SOUTHWEST_GOSSIP_STONE_FAIRY] =                 Location::Fairy(RC_LH_SOUTHWEST_GOSSIP_STONE_FAIRY,                 RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   TWO_ACTOR_PARAMS(     0, 7984),  "Southwest Gossip Stone Fairy",                       "LH Southwest Gossip Stone Fairy",                    RHT_LH_SOUTHWEST_GOSSIP_STONE_FAIRY,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_SOUTHWEST_GOSSIP_STONE_FAIRY));
    locationTable[RC_LH_SOUTHWEST_GOSSIP_STONE_FAIRY_BIG] =             Location::Fairy(RC_LH_SOUTHWEST_GOSSIP_STONE_FAIRY_BIG,             RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   TWO_ACTOR_PARAMS(0x1000, 7984),  "Southwest Gossip Stone Big Fairy",                   "LH Southwest Gossip Stone Big Fairy",                RHT_LH_SOUTHWEST_GOSSIP_STONE_FAIRY_BIG,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_SOUTHWEST_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_LW_GOSSIP_STONE_FAIRY] =                           Location::Fairy(RC_LW_GOSSIP_STONE_FAIRY,                           RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   TWO_ACTOR_PARAMS(     0, 2300),  "Gossip Stone Fairy",                                 "LW Gossip Stone Fairy",                              RHT_LW_GOSSIP_STONE_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_GOSSIP_STONE_FAIRY));
    locationTable[RC_LW_GOSSIP_STONE_FAIRY_BIG] =                       Location::Fairy(RC_LW_GOSSIP_STONE_FAIRY_BIG,                       RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   TWO_ACTOR_PARAMS(0x1000, 2300),  "Gossip Stone Big Fairy",                             "LW Gossip Stone Big Fairy",                          RHT_LW_GOSSIP_STONE_FAIRY_BIG,                       SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_SFM_MAZE_LOWER_GOSSIP_STONE_FAIRY] =               Location::Fairy(RC_SFM_MAZE_LOWER_GOSSIP_STONE_FAIRY,               RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_SACRED_FOREST_MEADOW,         TWO_ACTOR_PARAMS(     0, 1370),  "Maze Lower Gossip Stone Fairy",                      "SFM Maze Lower Gossip Stone Fairy",                  RHT_SFM_MAZE_GOSSIP_STONE_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_MAZE_LOWER_GOSSIP_STONE_FAIRY));
    locationTable[RC_SFM_MAZE_LOWER_GOSSIP_STONE_FAIRY_BIG] =           Location::Fairy(RC_SFM_MAZE_LOWER_GOSSIP_STONE_FAIRY_BIG,           RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_SACRED_FOREST_MEADOW,         TWO_ACTOR_PARAMS(0x1000, 1370),  "Maze Lower Gossip Stone Big Fairy",                  "SFM Maze Lower Gossip Stone Big Fairy",              RHT_SFM_MAZE_GOSSIP_STONE_FAIRY_BIG,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_MAZE_LOWER_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_SFM_MAZE_UPPER_GOSSIP_STONE_FAIRY] =               Location::Fairy(RC_SFM_MAZE_UPPER_GOSSIP_STONE_FAIRY,               RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_SACRED_FOREST_MEADOW,         TWO_ACTOR_PARAMS(     0, 740),   "Maze Upper Gossip Stone Fairy",                      "SFM Maze Upper Gossip Stone Fairy",                  RHT_SFM_MAZE_GOSSIP_STONE_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_MAZE_UPPER_GOSSIP_STONE_FAIRY));
    locationTable[RC_SFM_MAZE_UPPER_GOSSIP_STONE_FAIRY_BIG] =           Location::Fairy(RC_SFM_MAZE_UPPER_GOSSIP_STONE_FAIRY_BIG,           RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_SACRED_FOREST_MEADOW,         TWO_ACTOR_PARAMS(0x1000, 740),   "Maze Upper Gossip Stone Big Fairy",                  "SFM Maze Upper Gossip Stone Big Fairy",              RHT_SFM_MAZE_GOSSIP_STONE_FAIRY_BIG,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_MAZE_UPPER_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_SFM_SARIA_GOSSIP_STONE_FAIRY] =                    Location::Fairy(RC_SFM_SARIA_GOSSIP_STONE_FAIRY,                    RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_SACRED_FOREST_MEADOW,         TWO_ACTOR_PARAMS(     0, -2300), "Saria Gossip Stone Fairy",                           "SFM Saria Gossip Stone Fairy",                       RHT_SFM_SARIA_GOSSIP_STONE_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_SARIA_GOSSIP_STONE_FAIRY));
    locationTable[RC_SFM_SARIA_GOSSIP_STONE_FAIRY_BIG] =                Location::Fairy(RC_SFM_SARIA_GOSSIP_STONE_FAIRY_BIG,                RCQUEST_BOTH,   RCAREA_SACRED_FOREST_MEADOW,  SCENE_SACRED_FOREST_MEADOW,         TWO_ACTOR_PARAMS(0x1000, -2300), "Saria Gossip Stone Big Fairy",                       "SFM Saria Gossip Stone Big Fairy",                   RHT_SFM_SARIA_GOSSIP_STONE_FAIRY_BIG,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_SARIA_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_ZD_GOSSIP_STONE_FAIRY] =                           Location::Fairy(RC_ZD_GOSSIP_STONE_FAIRY,                           RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_ZORAS_DOMAIN,                 TWO_ACTOR_PARAMS(     0, -1600), "Gossip Stone Fairy",                                 "ZD Gossip Stone Fairy",                              RHT_ZD_GOSSIP_STONE_FAIRY,                           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_GOSSIP_STONE_FAIRY));
    locationTable[RC_ZD_GOSSIP_STONE_FAIRY_BIG] =                       Location::Fairy(RC_ZD_GOSSIP_STONE_FAIRY_BIG,                       RCQUEST_BOTH,   RCAREA_ZORAS_DOMAIN,          SCENE_ZORAS_DOMAIN,                 TWO_ACTOR_PARAMS(0x1000, -1600), "Gossip Stone Big Fairy",                             "ZD Gossip Stone Big Fairy",                          RHT_ZD_GOSSIP_STONE_FAIRY_BIG,                       SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_ZF_FAIRY_GOSSIP_STONE_FAIRY] =                     Location::Fairy(RC_ZF_FAIRY_GOSSIP_STONE_FAIRY,                     RCQUEST_BOTH,   RCAREA_ZORAS_FOUNTAIN,        SCENE_ZORAS_FOUNTAIN,               TWO_ACTOR_PARAMS(     0, 2205),  "Fairy Gossip Stone Fairy",                           "ZF Fairy Gossip Stone Fairy",                        RHT_ZF_FAIRY_GOSSIP_STONE_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_FAIRY_GOSSIP_STONE_FAIRY));
    locationTable[RC_ZF_FAIRY_GOSSIP_STONE_FAIRY_BIG] =                 Location::Fairy(RC_ZF_FAIRY_GOSSIP_STONE_FAIRY_BIG,                 RCQUEST_BOTH,   RCAREA_ZORAS_FOUNTAIN,        SCENE_ZORAS_FOUNTAIN,               TWO_ACTOR_PARAMS(0x1000, 2205),  "Fairy Gossip Stone Big Fairy",                       "ZF Fairy Gossip Stone Big Fairy",                    RHT_ZF_FAIRY_GOSSIP_STONE_FAIRY_BIG,                 SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_FAIRY_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_ZF_JABU_GOSSIP_STONE_FAIRY] =                      Location::Fairy(RC_ZF_JABU_GOSSIP_STONE_FAIRY,                      RCQUEST_BOTH,   RCAREA_ZORAS_FOUNTAIN,        SCENE_ZORAS_FOUNTAIN,               TWO_ACTOR_PARAMS(     0, -985),  "Jabu Gossip Stone Fairy",                            "ZF Jabu Gossip Stone Fairy",                         RHT_ZF_JABU_GOSSIP_STONE_FAIRY,                      SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_JABU_GOSSIP_STONE_FAIRY));
    locationTable[RC_ZF_JABU_GOSSIP_STONE_FAIRY_BIG] =                  Location::Fairy(RC_ZF_JABU_GOSSIP_STONE_FAIRY_BIG,                  RCQUEST_BOTH,   RCAREA_ZORAS_FOUNTAIN,        SCENE_ZORAS_FOUNTAIN,               TWO_ACTOR_PARAMS(0x1000, -985),  "Jabu Gossip Stone Big Fairy",                        "ZF Jabu Gossip Stone Big Fairy",                     RHT_ZF_JABU_GOSSIP_STONE_FAIRY_BIG,                  SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_JABU_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY] =              Location::Fairy(RC_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY,              RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_ZORAS_RIVER,                  TWO_ACTOR_PARAMS(     0, -1070), "Near Grottos Gossip Stone Fairy",                    "ZR Near Grottos Gossip Stone Fairy",                 RHT_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY,              SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY));
    locationTable[RC_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY_BIG] =          Location::Fairy(RC_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY_BIG,          RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_ZORAS_RIVER,                  TWO_ACTOR_PARAMS(0x1000, -1070), "Near Grottos Gossip Stone Big Fairy",                "ZR Near Grottos Gossip Stone Big Fairy",             RHT_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY_BIG,          SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_NEAR_GROTTOS_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY] =               Location::Fairy(RC_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY,               RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_ZORAS_RIVER,                  TWO_ACTOR_PARAMS(     0, -1650), "Near Domain Gossip Stone Fairy",                     "ZR Near Domain Gossip Stone Fairy",                  RHT_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY));
    locationTable[RC_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY_BIG] =           Location::Fairy(RC_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY_BIG,           RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_ZORAS_RIVER,                  TWO_ACTOR_PARAMS(0x1000, -1650), "Near Domain Gossip Stone Big Fairy",                 "ZR Near Domain Gossip Stone Big Fairy",              RHT_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY_BIG,           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_NEAR_DOMAIN_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_HF_COW_GROTTO_GOSSIP_STONE_FAIRY] =                Location::Fairy(RC_HF_COW_GROTTO_GOSSIP_STONE_FAIRY,                RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(  0x11, -357),  "Cow Grotto Gossip Stone Fairy",                      "HF Cow Grotto Gossip Stone Fairy",                   RHT_HF_COW_GROTTO_GOSSIP_STONE_FAIRY,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_HF_COW_GROTTO_GOSSIP_STONE_FAIRY_BIG] =            Location::Fairy(RC_HF_COW_GROTTO_GOSSIP_STONE_FAIRY_BIG,            RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1011, -357),  "Cow Grotto Gossip Stone Big Fairy",                  "HF Cow Grotto Gossip Stone Big Fairy",               RHT_HF_COW_GROTTO_GOSSIP_STONE_FAIRY_BIG,            SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY] =        Location::Fairy(RC_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY,        RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(  0x10, -236),  "Near Market Gossip Stone Fairy",                     "HF Near Market Gossip Stone Fairy",                  RHT_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY,        SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY_BIG] =    Location::Fairy(RC_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY_BIG,    RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1010, -236),  "Near Market Gossip Stone Big Fairy",                 "HF Near Market Gossip Stone Big Fairy",              RHT_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY_BIG,    SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_NEAR_MARKET_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY] =          Location::Fairy(RC_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY,          RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(  0x14, -236),  "Southeast Gossip Stone Fairy",                       "HF Southeast Gossip Stone Fairy",                    RHT_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY,          SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY_BIG] =      Location::Fairy(RC_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY_BIG,      RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1014, -236),  "Southeast Gossip Stone Big Fairy",                   "HF Southeast Gossip Stone Big Fairy",                RHT_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY_BIG,      SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_SOUTHEAST_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY] =               Location::Fairy(RC_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY,               RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(  0x13, -236),  "Open Grotto Gossip Stone Fairy",                     "HF Open Grotto Gossip Stone Fairy",                  RHT_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG] =           Location::Fairy(RC_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG,           RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1013, -236),  "Open Grotto Gossip Stone Big Fairy",                 "HF Open Grotto Gossip Stone Big Fairy",              RHT_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG,           SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY] =              Location::Fairy(RC_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY,              RCQUEST_BOTH,   RCAREA_KAKARIKO_VILLAGE,      SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(   0xA, -236),  "Open Grotto Gossip Stone Fairy",                     "Kak Open Grotto Gossip Stone Fairy",                 RHT_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY,              SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG] =          Location::Fairy(RC_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG,          RCQUEST_BOTH,   RCAREA_KAKARIKO_VILLAGE,      SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x100A, -236),  "Open Grotto Gossip Stone Big Fairy",                 "Kak Open Grotto Gossip Stone Big Fairy",             RHT_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG,          SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY] =               Location::Fairy(RC_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY,               RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(   0x4, -236),  "Open Grotto Gossip Stone Fairy",                     "ZR Open Grotto Gossip Stone Fairy",                  RHT_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG] =           Location::Fairy(RC_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG,           RCQUEST_BOTH,   RCAREA_ZORAS_RIVER,           SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1004, -236),  "Open Grotto Gossip Stone Big Fairy",                 "ZR Open Grotto Gossip Stone Big Fairy",              RHT_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG,           SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZR_OPEN_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY] =     Location::Fairy(RC_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY,     RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(  0x1A, -236),  "Near Shortcuts Gossip Stone Fairy",                  "LW Near Shortcuts Gossip Stone Fairy",               RHT_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY,     SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY_BIG] = Location::Fairy(RC_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY_BIG, RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x101A, -236),  "Near Shortcuts Gossip Stone Big Fairy",              "LW Near Shortcuts Gossip Stone Big Fairy",           RHT_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY_BIG, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY] =            Location::Fairy(RC_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY,            RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(   0x8, -236),  "Storms Grotto Gossip Stone Fairy",                   "DMT Storms Grotto Gossip Stone Fairy",               RHT_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY,            SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG] =        Location::Fairy(RC_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG,        RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1008, -236),  "Storms Grotto Gossip Stone Big Fairy",               "DMT Storms Grotto Gossip Stone Big Fairy",           RHT_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG,        SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_STORMS_GROTTO_GOSSIP_STONE_FAIRY_BIG));
    locationTable[RC_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY] =             Location::Fairy(RC_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY,             RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(   0x6, -236),  "Upper Grotto Gossip Stone Fairy",                    "DMC Upper Grotto Gossip Stone Fairy",                RHT_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY,             SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY));
    locationTable[RC_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY_BIG] =         Location::Fairy(RC_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY_BIG,         RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1006, -236),  "Upper Grotto Gossip Stone Big Fairy",                "DMC Upper Grotto Gossip Stone Big Fairy",            RHT_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY_BIG,         SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY_BIG));

    locationTable[RC_LH_ISLAND_SUN_FAIRY] =                             Location::Fairy(RC_LH_ISLAND_SUN_FAIRY,                             RCQUEST_BOTH,   RCAREA_LAKE_HYLIA,            SCENE_LAKE_HYLIA,                   TWO_ACTOR_PARAMS(0x1000, 7319),  "Island Sun's Song Fairy",                            "Island Sun's Song Fairy",                            RHT_LH_ISLAND_SUN_FAIRY,                             SpoilerCollectionCheck::RandomizerInf(RAND_INF_LH_ISLAND_SUN_FAIRY));
    locationTable[RC_HF_POND_STORMS_FAIRY] =                            Location::Fairy(RC_HF_POND_STORMS_FAIRY,                            RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_HYRULE_FIELD,                 TWO_ACTOR_PARAMS(0x1000, 5012),  "Pond Song of Storms Fairy",                          "Pond Song of Storms Fairy",                          RHT_HF_POND_STORMS_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_POND_STORMS_FAIRY));
    locationTable[RC_HF_FENCE_GROTTO_STORMS_FAIRY] =                    Location::Fairy(RC_HF_FENCE_GROTTO_STORMS_FAIRY,                    RCQUEST_BOTH,   RCAREA_HYRULE_FIELD,          SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1000, -308),  "Inside Fence Storms Fairy",                          "Inside Fence Storms Fairy",                          RHT_HF_FENCE_GROTTO_STORMS_FAIRY,                    SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_FENCE_GROTTO_STORMS_FAIRY));
    locationTable[RC_DMT_FLAG_SUN_FAIRY] =                              Location::Fairy(RC_DMT_FLAG_SUN_FAIRY,                              RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_DEATH_MOUNTAIN_TRAIL,         TWO_ACTOR_PARAMS(0x1000, 464),   "Flag Sun's Song Fairy",                              "Flag Sun's Song Fairy",                              RHT_DMT_FLAG_SUN_FAIRY,                              SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_FLAG_SUN_FAIRY));
    locationTable[RC_DMT_COW_GROTTO_STORMS_FAIRY] =                     Location::Fairy(RC_DMT_COW_GROTTO_STORMS_FAIRY,                     RCQUEST_BOTH,   RCAREA_DEATH_MOUNTAIN_TRAIL,  SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1000, -311),  "Cow Grotto Song of Storms Fairy",                    "Cow Grotto Song of Storms Fairy",                    RHT_DMT_COW_GROTTO_STORMS_FAIRY,                     SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMT_COW_GROTTO_STORMS_FAIRY));
    locationTable[RC_LW_SHORTCUT_STORMS_FAIRY] =                        Location::Fairy(RC_LW_SHORTCUT_STORMS_FAIRY,                        RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_LOST_WOODS,                   TWO_ACTOR_PARAMS(0x1000, -795),  "Shortcuts Song of Storms Fairy",                     "Shortcuts Song of Storms Fairy",                     RHT_LW_SHORTCUT_STORMS_FAIRY,                        SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_SHORTCUT_STORMS_FAIRY));
    locationTable[RC_GF_KITCHEN_SUN_FAIRY] =                            Location::Fairy(RC_GF_KITCHEN_SUN_FAIRY,                            RCQUEST_BOTH,   RCAREA_GERUDO_FORTRESS,       SCENE_THIEVES_HIDEOUT,              TWO_ACTOR_PARAMS(0x1000, -621),  "Kitchen Sun's Song Fairy",                           "Kitchen Sun's Song Fairy",                           RHT_GF_KITCHEN_SUN_FAIRY,                            SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_SUN_FAIRY));
    locationTable[RC_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY] =                  Location::Fairy(RC_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY,                  RCQUEST_BOTH,   RCAREA_LOST_WOODS,            SCENE_GROTTOS,                      TWO_ACTOR_PARAMS(0x1000, 741),   "Scrub Grotto Sun's Song Fairy",                      "Scrub Grotto Sun's Song Fairy",                      RHT_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY,                  SpoilerCollectionCheck::RandomizerInf(RAND_INF_LW_DEKU_SCRUB_GROTTO_SUN_FAIRY));
    locationTable[RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY] =          Location::Fairy(RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY,          RCQUEST_BOTH,   RCAREA_GRAVEYARD,             SCENE_ROYAL_FAMILYS_TOMB,           TWO_ACTOR_PARAMS(0x1000, 1476),  "Composer's Grave Sun's Song Fairy",                  "Composer's Grave Sun's Song Fairy",                  RHT_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY,          SpoilerCollectionCheck::RandomizerInf(RAND_INF_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY));

    locationTable[RC_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY] =            Location::Fairy(RC_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY,            RCQUEST_VANILLA,RCAREA_SPIRIT_TEMPLE,         SCENE_SPIRIT_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, -1896), "After Boulder Room Sun's Song Fairy",                "After Boulder Room Sun's Song Fairy",                RHT_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY,            SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY));
    locationTable[RC_SPIRIT_TEMPLE_ARMOS_ROOM_SUN_FAIRY] =              Location::Fairy(RC_SPIRIT_TEMPLE_ARMOS_ROOM_SUN_FAIRY,              RCQUEST_VANILLA,RCAREA_SPIRIT_TEMPLE,         SCENE_SPIRIT_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, -220),  "Four Armos Room Sun's Song Fairy",                   "Four Armos Room Sun's Song Fairy",                   RHT_SPIRIT_TEMPLE_ARMOS_ROOM_SUN_FAIRY,              SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ARMOS_ROOM_SUN_FAIRY));
    locationTable[RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY] =                Location::Fairy(RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY,                RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE,         SCENE_SHADOW_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, 54),    "Beamos Song of Storms Fairy",                        "Beamos Song of Storms Fairy",                        RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY));
    locationTable[RC_SHADOW_TEMPLE_PIT_STORM_FAIRY] =                   Location::Fairy(RC_SHADOW_TEMPLE_PIT_STORM_FAIRY,                   RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE,         SCENE_SHADOW_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, 3339),  "Pit Room Song of Storms Fairy",                      "Pit Room Song of Storms Fairy",                      RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY,                   SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY));
    locationTable[RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY] =               Location::Fairy(RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY,               RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE,         SCENE_SHADOW_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, -127),  "Wind Hint Sun's Song Fairy",                         "Wind Hint Sun's Song Fairy",                         RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY));
    locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY] =           Location::Fairy(RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY,           RCQUEST_VANILLA,RCAREA_BOTTOM_OF_THE_WELL,    SCENE_BOTTOM_OF_THE_WELL,           TWO_ACTOR_PARAMS(0x1000, -1531), "Basement Sun's Song Fairy",                          "Basement Sun's Song Fairy",                          RHT_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY,           SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY));
    locationTable[RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY] =                Location::Fairy(RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY,                RCQUEST_VANILLA,RCAREA_ICE_CAVERN,            SCENE_ICE_CAVERN,                   TWO_ACTOR_PARAMS(0x1000, 1186),  "Entrance Song of Storms Fairy",                      "Ice Cavern Entrance Song of Storms Fairy",           RHT_ICE_CAVERN_ENTRANCE_STORMS_FAIRY,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY));
    locationTable[RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY] =    Location::Fairy(RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY,    RCQUEST_VANILLA,RCAREA_GERUDO_TRAINING_GROUND,SCENE_GERUDO_TRAINING_GROUND,       TWO_ACTOR_PARAMS(0x1000, -445),  "Entrance Song of Storms Fairy",                      "GTG Entrance Song of Storms Fairy",                  RHT_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY,    SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY));
    locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY] =            Location::Fairy(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY,            RCQUEST_VANILLA,RCAREA_GANONS_CASTLE,         SCENE_INSIDE_GANONS_CASTLE,         TWO_ACTOR_PARAMS(0x1000, 587),   "Spirit Trial Beamos Sun's Song Fairy",               "Spirit Trial Beamos Sun's Song Fairy",               RHT_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY,            SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY));

    locationTable[RC_FIRE_TEMPLE_MQ_LOOP_STALFOS_SUN_FAIRY] =           Location::Fairy(RC_FIRE_TEMPLE_MQ_LOOP_STALFOS_SUN_FAIRY,           RCQUEST_MQ,     RCAREA_FIRE_TEMPLE,           SCENE_FIRE_TEMPLE,                  TWO_ACTOR_PARAMS(0x1000, -551),  "MQ Lower Loop Stalfos Room Sun's Song Fairy",        "MQ Lower Loop Stalfos Room Sun's Song Fairy",        RHT_FIRE_TEMPLE_MQ_LOOP_STALFOS_SUN_FAIRY,           SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LOOP_STALFOS_SUN_FAIRY));
    locationTable[RC_FIRE_TEMPLE_MQ_LOOP_KNUCKLE_SUN_FAIRY] =           Location::Fairy(RC_FIRE_TEMPLE_MQ_LOOP_KNUCKLE_SUN_FAIRY,           RCQUEST_MQ,     RCAREA_FIRE_TEMPLE,           SCENE_FIRE_TEMPLE,                  TWO_ACTOR_PARAMS(0x1000, -1563), "MQ Lower Loop Behind Iron Knuckle Sun's Song Fairy", "MQ Lower Loop Behind Iron Knuckle Sun's Song Fairy", RHT_FIRE_TEMPLE_MQ_LOOP_KNUCKLE_SUN_FAIRY,           SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LOOP_KNUCKLE_SUN_FAIRY));
    locationTable[RC_WATER_TEMPLE_MQ_DARK_LINK_PILAR_SUN_FAIRY] =       Location::Fairy(RC_WATER_TEMPLE_MQ_DARK_LINK_PILAR_SUN_FAIRY,       RCQUEST_MQ,     RCAREA_WATER_TEMPLE,          SCENE_WATER_TEMPLE,                 TWO_ACTOR_PARAMS(0x1000, -540),  "MQ Before Dark Link Pilar Sun's Song Fairy",         "MQ Before Dark Link Pilar Sun's Song Fairy",         RHT_WATER_TEMPLE_MQ_DARK_LINK_PILAR_SUN_FAIRY,       SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_DARK_LINK_PILAR_SUN_FAIRY));
    locationTable[RC_WATER_TEMPLE_MQ_DARK_LINK_LEFT_STORM_FAIRY] =      Location::Fairy(RC_WATER_TEMPLE_MQ_DARK_LINK_LEFT_STORM_FAIRY,      RCQUEST_MQ,     RCAREA_WATER_TEMPLE,          SCENE_WATER_TEMPLE,                 TWO_ACTOR_PARAMS(0x1000, -1501), "MQ Before Dark Link Left Song of Storms Fairy",      "MQ Before Dark Link Left Song of Storms Fairy",      RHT_WATER_TEMPLE_MQ_DARK_LINK_LEFT_STORM_FAIRY,      SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_DARK_LINK_LEFT_STORM_FAIRY));
    locationTable[RC_WATER_TEMPLE_MQ_DARK_LINK_RIGHT_SUN_FAIRY] =       Location::Fairy(RC_WATER_TEMPLE_MQ_DARK_LINK_RIGHT_SUN_FAIRY,       RCQUEST_MQ,     RCAREA_WATER_TEMPLE,          SCENE_WATER_TEMPLE,                 TWO_ACTOR_PARAMS(0x1000, -1504), "MQ Before Dark Link Right Sun's Song Fairy",         "MQ Before Dark Link Right Sun's Song Fairy",         RHT_WATER_TEMPLE_MQ_DARK_LINK_RIGHT_SUN_FAIRY,       SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_DARK_LINK_RIGHT_SUN_FAIRY));
    locationTable[RC_SPIRIT_TEMPLE_MQ_DINALFOS_ROOM_SUN_FAIRY] =        Location::Fairy(RC_SPIRIT_TEMPLE_MQ_DINALFOS_ROOM_SUN_FAIRY,        RCQUEST_MQ,     RCAREA_SPIRIT_TEMPLE,         SCENE_SPIRIT_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, -220),  "MQ Dinalfos Room Sun's Song Fairy",                  "MQ Dinalfos Room Sun's Song Fairy",                  RHT_SPIRIT_TEMPLE_MQ_DINALFOS_ROOM_SUN_FAIRY,        SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_DINALFOS_ROOM_SUN_FAIRY));
    locationTable[RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY] =             Location::Fairy(RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY,             RCQUEST_MQ,     RCAREA_SHADOW_TEMPLE,         SCENE_SHADOW_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, 55),    "MQ Beamos Song of Storms Fairy",                     "MQ Beamos Song of Storms Fairy",                     RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY,                SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY));
    locationTable[RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY] =                Location::Fairy(RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY,                RCQUEST_MQ,     RCAREA_SHADOW_TEMPLE,         SCENE_SHADOW_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, 3342),  "MQ Pit Room Song of Storms Fairy",                   "MQ Pit Room Song of Storms Fairy",                   RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY,                   SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY));
    locationTable[RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY] =            Location::Fairy(RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY,            RCQUEST_MQ,     RCAREA_SHADOW_TEMPLE,         SCENE_SHADOW_TEMPLE,                TWO_ACTOR_PARAMS(0x1000, -127),  "MQ Wind Hint Sun's Song Fairy",                      "MQ Wind Hint Sun's Song Fairy",                      RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY,               SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY));
    locationTable[RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY] =            Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY,            RCQUEST_MQ,     RCAREA_BOTTOM_OF_THE_WELL,    SCENE_BOTTOM_OF_THE_WELL,           TWO_ACTOR_PARAMS(0x1000, -437),  "MQ East Cell Sun's Song Fairy",                      "MQ East Cell Sun's Song Fairy",                      RHT_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY,            SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY));
    locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY] =        Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY,        RCQUEST_MQ,     RCAREA_BOTTOM_OF_THE_WELL,    SCENE_BOTTOM_OF_THE_WELL,           TWO_ACTOR_PARAMS(0x1000, -1458), "MQ Basement Sun's Song Fairy",                       "MQ Basement Sun's Song Fairy",                       RHT_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY,        SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY));
}

static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterFairyLocations);
