]> git.localhorst.tv Git - alttp.git/commitdiff
add warps/spawns
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 7 May 2025 12:33:02 +0000 (14:33 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 7 May 2025 12:33:02 +0000 (14:33 +0200)
resources/js/components/zootr/MixedPoolsTracker.js

index b0a2fa9b8f946b093a0f8dffa47489f5e50b0b57..0f08ee6572748d79bf5899ad81c00a17a33308e9 100644 (file)
@@ -16,6 +16,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Brothers\' House',
                                short: 'Bros',
+                               type: 'Interior',
                        },
                        {
                                id: 'link',
@@ -23,6 +24,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Link\'s House',
                                short: 'Links',
+                               type: 'SpecialInterior',
                        },
                        {
                                id: 'sariah',
@@ -30,6 +32,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Sariah\'s House',
                                short: 'Sariahs',
+                               type: 'Interior',
                        },
                        {
                                id: 'twin',
@@ -37,6 +40,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Twins\' House',
                                short: 'Twins',
+                               type: 'Interior',
                        },
                        {
                                id: 'shop',
@@ -44,6 +48,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shop',
                                short: 'Shop',
+                               type: 'Interior',
                        },
                        {
                                id: 'mido',
@@ -51,6 +56,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Mido\'s House',
                                short: 'Mido',
+                               type: 'Interior',
                        },
                        {
                                id: 'deku',
@@ -59,6 +65,7 @@ const AREAS = [
                                name: 'Deku Tree',
                                short: 'Deku',
                                spacer: true,
+                               type: 'Dungeon',
                        },
                        {
                                id: 'storms',
@@ -66,6 +73,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hf',
@@ -73,6 +81,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Field',
                                short: 'HF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'lw',
@@ -80,6 +89,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lost Woods',
                                short: 'LW',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -96,6 +106,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'GC Grotto',
                                short: 'GC Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'tg',
@@ -103,6 +114,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Theater Grotto',
                                short: 'Theater Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'sfmg',
@@ -110,6 +122,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'SFM Grotto',
                                short: 'SFM Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'kf',
@@ -118,6 +131,7 @@ const AREAS = [
                                name: 'Kokiri Forest',
                                short: 'KF',
                                spacer: true,
+                               type: 'Overworld',
                        },
                        {
                                id: 'gc',
@@ -125,6 +139,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Goron City',
                                short: 'GC',
+                               type: 'Overworld',
                        },
                        {
                                id: 'zr',
@@ -132,6 +147,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Zora\'s River',
                                short: 'ZR',
+                               type: 'Overworld',
                        },
                        {
                                id: 'sfm',
@@ -139,6 +155,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Sacred Forest Maedows',
                                short: 'SFM',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -155,6 +172,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Forest Temple',
                                short: 'Forest Temple',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'wolf',
@@ -162,6 +180,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Wolf Grotto',
                                short: 'Wolf Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'fairy',
@@ -169,6 +188,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Fairy Grotto',
                                short: 'Fairy Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'storms',
@@ -176,6 +196,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'lw',
@@ -183,6 +204,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lost Woods',
                                short: 'LW',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -199,6 +221,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Dampe Hut',
                                short: 'Dampe Hut',
+                               type: 'Interior',
                        },
                        {
                                id: 'shadow',
@@ -206,6 +229,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shadow Temple',
                                short: 'Shadow',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'shield',
@@ -213,6 +237,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shield Grave',
                                short: 'Shield Grave',
+                               type: 'Grave',
                        },
                        {
                                id: 'race',
@@ -220,6 +245,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Dampe Race',
                                short: 'Dampe Race',
+                               type: 'Grave',
                        },
                        {
                                id: 'sun',
@@ -227,6 +253,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Sun Song Grave',
                                short: 'Sun Song Gr',
+                               type: 'Grave',
                        },
                        {
                                id: 'family',
@@ -234,6 +261,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Family Tomb',
                                short: 'Family Tomb',
+                               type: 'Grave',
                        },
                        {
                                id: 'kak',
@@ -241,6 +269,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Kakariko',
                                short: 'Kak',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -257,6 +286,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Talon\'s House',
                                short: 'Talons',
+                               type: 'Interior',
                        },
                        {
                                id: 'skull',
@@ -264,6 +294,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Skulltula House',
                                short: 'Skulltula',
+                               type: 'Interior',
                        },
                        {
                                id: 'impaf',
@@ -271,6 +302,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Impa Front',
                                short: 'Impa Front',
+                               type: 'Interior',
                        },
                        {
                                id: 'impab',
@@ -278,6 +310,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Impa Back',
                                short: 'Impa Back',
+                               type: 'Interior',
                        },
                        {
                                id: 'shield',
@@ -285,6 +318,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shield Shop',
                                short: 'Shield Shop',
+                               type: 'Interior',
                        },
                        {
                                id: 'potion',
@@ -292,6 +326,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Potion Shop',
                                short: 'Potion Shop',
+                               type: 'SpecialInterior',
                        },
                        {
                                id: 'back',
@@ -299,6 +334,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shop Back',
                                short: 'Shop Back',
+                               type: 'SpecialInterior',
                        },
                        {
                                id: 'witch',
@@ -306,6 +342,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Witch',
                                short: 'Witch',
+                               type: 'Interior',
                        },
                        {
                                id: 'arch',
@@ -313,6 +350,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Archery',
                                short: 'Archery',
+                               type: 'Interior',
                        },
                        {
                                id: 'mill',
@@ -320,6 +358,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Windmill',
                                short: 'Windmill',
+                               type: 'SpecialInterior',
                        },
                        {
                                id: 'botw',
@@ -328,6 +367,7 @@ const AREAS = [
                                name: 'Bottom of the Well',
                                short: 'Bottom Well',
                                spacer: true,
+                               type: 'Dungeon',
                        },
                        {
                                id: 'open',
@@ -335,6 +375,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Open Grotto',
                                short: 'Open Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'redead',
@@ -342,6 +383,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Redead Grotto',
                                short: 'Redead Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hf',
@@ -349,6 +391,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Field',
                                short: 'HF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'dmt',
@@ -356,6 +399,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Death Mountain Trail',
                                short: 'DMT',
+                               type: 'Overworld',
                        },
                        {
                                id: 'gy',
@@ -363,6 +407,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Graveyard',
                                short: 'Grave',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -379,6 +424,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shield Shop',
                                short: 'Shield Shop',
+                               type: 'Interior',
                        },
                        {
                                id: 'potion',
@@ -386,6 +432,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Potion Shop',
                                short: 'Potion Shop',
+                               type: 'Interior',
                        },
                        {
                                id: 'mask',
@@ -393,6 +440,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Mask Shop',
                                short: 'Mask Shop',
+                               type: 'Interior',
                        },
                        {
                                id: 'sling',
@@ -400,6 +448,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Slingshot/Arrow Game',
                                short: 'Sling Game',
+                               type: 'Interior',
                        },
                        {
                                id: 'chuu',
@@ -407,6 +456,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Bombchu Bowling',
                                short: 'Bombchu',
+                               type: 'Interior',
                        },
                        {
                                id: 'tcg',
@@ -414,6 +464,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Treasure Chest Game',
                                short: 'TCG',
+                               type: 'Interior',
                        },
                        {
                                id: 'alleyl',
@@ -421,6 +472,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Backalley Left',
                                short: 'Alley L',
+                               type: 'Overworld',
                        },
                        {
                                id: 'alleyr',
@@ -428,6 +480,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Backalley Right',
                                short: 'Alley R',
+                               type: 'Overworld',
                        },
                        {
                                id: 'tot',
@@ -435,6 +488,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Temple of Time',
                                short: 'ToT',
+                               type: 'Overworld',
                        },
                        {
                                id: 'hc',
@@ -442,6 +496,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Castle',
                                short: 'HC',
+                               type: 'Overworld',
                        },
                        {
                                id: 'm2',
@@ -449,6 +504,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Market 2',
                                short: 'M2',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -465,6 +521,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Big Poe',
                                short: 'Big Poe',
+                               type: 'Interior',
                        },
                        {
                                id: 'hf',
@@ -472,6 +529,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Field',
                                short: 'HF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'm1',
@@ -479,6 +537,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Market 1',
                                short: 'M1',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -495,6 +554,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Castle Fairy',
                                short: 'HC Fairy',
+                               type: 'Interior',
                        },
                        {
                                id: 'gfairy',
@@ -502,6 +562,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Ganon\'s Castle Fairy',
                                short: 'Ganon Fairy',
+                               type: 'Interior',
                        },
                        {
                                id: 'igc',
@@ -509,6 +570,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Inside Ganon\'s Castle',
                                short: 'IGC',
+                               type: 'DungeonSpecial',
                        },
                        {
                                id: 'storms',
@@ -516,6 +578,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'm1',
@@ -523,6 +586,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Market 1',
                                short: 'M1',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -539,6 +603,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Destiny Grotto',
                                short: 'Destiny Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'tektite',
@@ -546,6 +611,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Tektite Grotto',
                                short: 'Tektite',
+                               type: 'Grotto',
                        },
                        {
                                id: 'nw',
@@ -553,6 +619,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Northwest Grotto',
                                short: 'NW Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'nk',
@@ -560,6 +627,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Grotto near Kakariko',
                                short: 'near Kak Gro',
+                               type: 'Grotto',
                        },
                        {
                                id: 'se',
@@ -567,6 +635,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Southeast Grotto',
                                short: 'SE Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'open',
@@ -574,6 +643,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Open Grotto',
                                short: 'Open Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'sg',
@@ -581,6 +651,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'South Grotto',
                                short: 'South Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'cow',
@@ -588,6 +659,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Cow Grotto',
                                short: 'Cow Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'town',
@@ -596,6 +668,7 @@ const AREAS = [
                                name: 'Town',
                                short: 'Town',
                                spacer: true,
+                               type: 'Overworld',
                        },
                        {
                                id: 'llr',
@@ -603,6 +676,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lon Lon Ranch',
                                short: 'LLR',
+                               type: 'Overworld',
                        },
                        {
                                id: 'kak',
@@ -610,6 +684,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Kakariko',
                                short: 'Kak',
+                               type: 'Overworld',
                        },
                        {
                                id: 'zr',
@@ -617,6 +692,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Zora\'s River',
                                short: 'ZR',
+                               type: 'Overworld',
                        },
                        {
                                id: 'kf',
@@ -624,6 +700,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Kokiri Forest',
                                short: 'KF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'lh',
@@ -631,6 +708,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lake Hylia',
                                short: 'LH',
+                               type: 'Overworld',
                        },
                        {
                                id: 'gv',
@@ -638,6 +716,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Gerudo Valley',
                                short: 'GV',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -654,6 +733,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'open',
@@ -661,6 +741,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Open Grotto',
                                short: 'Open Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'boulder',
@@ -668,6 +749,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Boulder Grotto',
                                short: 'Boulder Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hf',
@@ -676,6 +758,7 @@ const AREAS = [
                                name: 'Hyrule Field',
                                short: 'HF',
                                spacer: true,
+                               type: 'Overworld',
                        },
                        {
                                id: 'lw',
@@ -683,6 +766,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lost Woods',
                                short: 'LW',
+                               type: 'Overworld',
                        },
                        {
                                id: 'zd',
@@ -690,6 +774,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Zora\'s Domain',
                                short: 'ZD',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -706,6 +791,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shop',
                                short: 'Shop',
+                               type: 'Interior',
                        },
                        {
                                id: 'storms',
@@ -713,6 +799,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'zr',
@@ -720,6 +807,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Zora\'s River',
                                short: 'ZR',
+                               type: 'Overworld',
                        },
                        {
                                id: 'lh',
@@ -727,6 +815,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lake Hylia',
                                short: 'LH',
+                               type: 'Overworld',
                        },
                        {
                                id: 'zf',
@@ -734,6 +823,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Zora\'s Fountain',
                                short: 'ZF',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -750,6 +840,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Fairy Wall',
                                short: 'Fairy Wall',
+                               type: 'Interior',
                        },
                        {
                                id: 'jabu',
@@ -757,6 +848,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Jabu Jabu\'s Belly',
                                short: 'Jabu',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'ice',
@@ -764,6 +856,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Ice Cavern',
                                short: 'Ice Cavern',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'zd',
@@ -771,6 +864,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Zora\'s Domain',
                                short: 'ZD',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -787,6 +881,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lab Diving',
                                short: 'Lab Dive',
+                               type: 'Interior',
                        },
                        {
                                id: 'fishing',
@@ -794,6 +889,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Fishing Game',
                                short: 'Fishing',
+                               type: 'Interior',
                        },
                        {
                                id: 'water',
@@ -801,6 +897,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Water Temple',
                                short: 'Water Temple',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'owl',
@@ -808,6 +905,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Owl Grotto',
                                short: 'Owl Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hf',
@@ -815,6 +913,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Field',
                                short: 'HF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'zd',
@@ -822,6 +921,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Zora\'s Domain',
                                short: 'ZD',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -838,6 +938,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Chicken Game',
                                short: 'Chicken',
+                               type: 'Interior',
                        },
                        {
                                id: 'stable',
@@ -845,6 +946,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Stable',
                                short: 'Stable',
+                               type: 'Interior',
                        },
                        {
                                id: 'tower',
@@ -852,6 +954,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Tower',
                                short: 'Tower',
+                               type: 'Interior',
                        },
                        {
                                id: 'grotto',
@@ -859,6 +962,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Grotto',
                                short: 'Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hf',
@@ -866,6 +970,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Field',
                                short: 'HF',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -882,6 +987,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Tent',
                                short: 'Tent',
+                               type: 'Interior',
                        },
                        {
                                id: 'str2',
@@ -889,6 +995,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Strength 2 Grotto',
                                short: 'Str2 Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'storms',
@@ -896,6 +1003,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hf',
@@ -903,6 +1011,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hyrule Field',
                                short: 'HF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'gf',
@@ -910,6 +1019,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Gerudo Fortress',
                                short: 'GF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'wf',
@@ -918,6 +1028,7 @@ const AREAS = [
                                name: 'Waterfall',
                                short: 'Waterfall',
                                oneway: true,
+                               type: 'OverworldOneWay',
                        },
                ],
        },
@@ -934,6 +1045,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Gerudo Training Grounds',
                                short: 'GTG',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'storms',
@@ -941,6 +1053,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'gv',
@@ -948,6 +1061,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Gerudo Valley',
                                short: 'GV',
+                               type: 'Overworld',
                        },
                        {
                                id: 'hw',
@@ -955,6 +1069,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Haunted Wasteland',
                                short: 'Waste',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -971,6 +1086,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Spirit Temple',
                                short: 'Spirit',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'fairy',
@@ -978,6 +1094,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Fairy',
                                short: 'Fairy',
+                               type: 'Interior',
                        },
                        {
                                id: 'str2',
@@ -985,6 +1102,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Strength 2 Grotto',
                                short: 'Str2 Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hw',
@@ -992,6 +1110,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Haunted Wasteland',
                                short: 'Waste',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -1008,6 +1127,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Gerudo Fortress',
                                short: 'GF',
+                               type: 'Overworld',
                        },
                        {
                                id: 'dcol',
@@ -1015,6 +1135,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Desert Colossus',
                                short: 'DCol',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -1031,6 +1152,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Fairy',
                                short: 'Fairy',
+                               type: 'Interior',
                        },
                        {
                                id: 'fire',
@@ -1038,6 +1160,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Fire Temple',
                                short: 'Fire',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'boulder',
@@ -1045,6 +1168,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Boulder Grotto',
                                short: 'Boulder Gro',
+                               type: 'Grotto',
                        },
                        {
                                id: 'hammer',
@@ -1052,6 +1176,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Hammer Grotto',
                                short: 'Hammer Gro',
+                               type: 'Grotto',
                        },
                        {
                                id: 'gc',
@@ -1059,6 +1184,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Goron City',
                                short: 'GC',
+                               type: 'Overworld',
                        },
                        {
                                id: 'dmt',
@@ -1066,6 +1192,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Death Mountain Trail',
                                short: 'DMT',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -1082,6 +1209,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Dodongo\'s Cavern',
                                short: 'DC',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'fairy',
@@ -1089,6 +1217,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Fairy',
                                short: 'Fairy',
+                               type: 'Interior',
                        },
                        {
                                id: 'storms',
@@ -1096,6 +1225,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Storms Grotto',
                                short: 'Storms Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'cow',
@@ -1103,6 +1233,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Cow Grotto',
                                short: 'Cow Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'kak',
@@ -1111,6 +1242,7 @@ const AREAS = [
                                name: 'Kakariko',
                                short: 'Kak',
                                spacer: true,
+                               type: 'Overworld',
                        },
                        {
                                id: 'gc',
@@ -1118,6 +1250,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Goron City',
                                short: 'GC',
+                               type: 'Overworld',
                        },
                        {
                                id: 'dmc',
@@ -1125,6 +1258,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Death Mountain Crater',
                                short: 'DMC',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -1141,6 +1275,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Shop',
                                short: 'Shop',
+                               type: 'Interior',
                        },
                        {
                                id: 'times',
@@ -1148,6 +1283,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Times Grotto',
                                short: 'Times Grotto',
+                               type: 'Grotto',
                        },
                        {
                                id: 'dmt',
@@ -1155,6 +1291,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Death Mountain Trail',
                                short: 'DMT',
+                               type: 'Overworld',
                        },
                        {
                                id: 'lw',
@@ -1162,6 +1299,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Lost Woods',
                                short: 'LW',
+                               type: 'Overworld',
                        },
                        {
                                id: 'dmc',
@@ -1169,6 +1307,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Death Mountain Crater',
                                short: 'DMC',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -1185,6 +1324,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Temple of Time',
                                short: 'Temple',
+                               type: 'SpecialInterior',
                        },
                        {
                                id: 'm1',
@@ -1192,6 +1332,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Market 1',
                                short: 'M1',
+                               type: 'Overworld',
                        },
                ],
        },
@@ -1208,6 +1349,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Main',
                                short: 'Main',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1215,6 +1357,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'End',
                                short: 'End',
+                               type: 'ChildBoss',
                        },
                ],
        },
@@ -1224,6 +1367,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Gohma',
                short: 'Gohma',
+               type: 'ChildBoss',
        },
        {
                id: 'dc',
@@ -1238,6 +1382,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Main',
                                short: 'Main',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1245,6 +1390,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'End',
                                short: 'End',
+                               type: 'ChildBoss',
                        },
                ],
        },
@@ -1254,6 +1400,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'King Dodongo',
                short: 'Dodongo',
+               type: 'ChildBoss',
        },
        {
                id: 'jabu',
@@ -1268,6 +1415,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Main',
                                short: 'Main',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1275,6 +1423,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'End',
                                short: 'End',
+                               type: 'ChildBoss',
                        },
                ],
        },
@@ -1284,6 +1433,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Barinade',
                short: 'Barinade',
+               type: 'ChildBoss',
        },
        {
                id: 'forest',
@@ -1299,6 +1449,7 @@ const AREAS = [
                                name: 'Main',
                                short: 'Main',
                                spacer: true,
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1307,6 +1458,7 @@ const AREAS = [
                                name: 'End',
                                short: 'End',
                                spacer: true,
+                               type: 'AdultBoss',
                        },
                ],
        },
@@ -1317,6 +1469,7 @@ const AREAS = [
                name: 'Phantom Ganon',
                short: 'PG',
                spacer: true,
+               type: 'AdultBoss',
        },
        {
                id: 'fire',
@@ -1331,6 +1484,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Main',
                                short: 'Main',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1338,6 +1492,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'End',
                                short: 'End',
+                               type: 'AdultBoss',
                        },
                ],
        },
@@ -1347,6 +1502,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Volvagia',
                short: 'Volvagia',
+               type: 'AdultBoss',
        },
        {
                id: 'water',
@@ -1361,6 +1517,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Main',
                                short: 'Main',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1368,6 +1525,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'End',
                                short: 'End',
+                               type: 'AdultBoss',
                        },
                ],
        },
@@ -1377,6 +1535,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Morpha',
                short: 'Morpha',
+               type: 'AdultBoss',
        },
        {
                id: 'shadow',
@@ -1391,6 +1550,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Main',
                                short: 'Main',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1398,6 +1558,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'End',
                                short: 'End',
+                               type: 'AdultBoss',
                        },
                ],
        },
@@ -1407,6 +1568,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Bongo Bongo',
                short: 'Bongo Bongo',
+               type: 'AdultBoss',
        },
        {
                id: 'spirit',
@@ -1421,6 +1583,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'Main',
                                short: 'Main',
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1428,6 +1591,7 @@ const AREAS = [
                                fgColor: '#000000',
                                name: 'End',
                                short: 'End',
+                               type: 'AdultBoss',
                        },
                ],
        },
@@ -1437,6 +1601,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Twinrova',
                short: 'Twinrova',
+               type: 'AdultBoss',
        },
        {
                id: 'igc',
@@ -1452,6 +1617,7 @@ const AREAS = [
                                name: 'Main',
                                short: 'Main',
                                spacer: true,
+                               type: 'Dungeon',
                        },
                        {
                                id: 'end',
@@ -1460,6 +1626,7 @@ const AREAS = [
                                name: 'End',
                                short: 'End',
                                spacer: true,
+                               type: 'SpecialBoss',
                        },
                ],
        },
@@ -1470,6 +1637,7 @@ const AREAS = [
                name: 'Ganon',
                short: 'Ganon',
                spacer: true,
+               type: 'SpecialBoss',
        },
        {
                id: 'botw',
@@ -1477,6 +1645,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Bottom of the Well',
                short: 'Bottom Well',
+               type: 'Dungeon',
        },
        {
                id: 'ice',
@@ -1484,6 +1653,7 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Ice Cavern',
                short: 'Ice Cavern',
+               type: 'Dungeon',
        },
        {
                id: 'gtg',
@@ -1491,6 +1661,124 @@ const AREAS = [
                fgColor: '#000000',
                name: 'Gerudo Training Grounds',
                short: 'GTG',
+               type: 'Dungeon',
+       },
+       {
+               id: 'songs',
+               bgColor: '#000000',
+               fgColor: '#ffffff',
+               name: 'Warp Songs',
+               short: 'Songs',
+               entrances: [
+                       {
+                               id: 'minuet',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Minuet of Forest',
+                               short: 'Minuet',
+                               oneway: true,
+                               type: 'WarpSong',
+                       },
+                       {
+                               id: 'bolero',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Bolero of Fire',
+                               short: 'Bolero',
+                               oneway: true,
+                               type: 'WarpSong',
+                       },
+                       {
+                               id: 'serenade',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Serenade of Water',
+                               short: 'Serenade',
+                               oneway: true,
+                               type: 'WarpSong',
+                       },
+                       {
+                               id: 'nocturne',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Nocturne of Shadow',
+                               short: 'Nocturne',
+                               oneway: true,
+                               type: 'WarpSong',
+                       },
+                       {
+                               id: 'requiem',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Requiem of Spirit',
+                               short: 'Requiem',
+                               oneway: true,
+                               type: 'WarpSong',
+                       },
+                       {
+                               id: 'prelude',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Prelude of Light',
+                               short: 'Prelude',
+                               oneway: true,
+                               type: 'WarpSong',
+                       },
+               ],
+       },
+       {
+               id: 'spawns',
+               bgColor: '#000000',
+               fgColor: '#ffffff',
+               name: 'Spawns',
+               short: 'Spawns',
+               entrances: [
+                       {
+                               id: 'child',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Child Spawn',
+                               short: 'Child',
+                               oneway: true,
+                               type: 'Spawn',
+                       },
+                       {
+                               id: 'adult',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Adult Spawn',
+                               short: 'Adult',
+                               oneway: true,
+                               type: 'Spawn',
+                       },
+               ],
+       },
+       {
+               id: 'owls',
+               bgColor: '#000000',
+               fgColor: '#ffffff',
+               name: 'Owl Drops',
+               short: 'Owls',
+               entrances: [
+                       {
+                               id: 'lhowl',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Lake Hylia Owl',
+                               short: 'LH Owl',
+                               oneway: true,
+                               type: 'OwlDrop',
+                       },
+                       {
+                               id: 'dmtowl',
+                               bgColor: '#38761d',
+                               fgColor: '#ffffff',
+                               name: 'Death Mountain Trail Owl',
+                               short: 'Trail Owl',
+                               oneway: true,
+                               type: 'OwlDrop',
+                       },
+               ],
        },
 ];
 
@@ -1694,6 +1982,47 @@ const ROOMS = [
        },
 ];
 
+const TYPE_RESTRICTIONS = {
+       OverworldOneWay: [
+               'WarpSong',
+               'BlueWarp',
+               'OwlDrop',
+               'OverworldOneWay',
+               'Overworld',
+               'Extra',
+       ],
+       OwlDrop: [
+               'WarpSong',
+               'BlueWarp',
+               'OwlDrop',
+               'OverworldOneWay',
+               'Overworld',
+               'Extra',
+       ],
+       Spawn: [
+               'Spawn',
+               'WarpSong',
+               'BlueWarp',
+               'OwlDrop',
+               'OverworldOneWay',
+               'Overworld',
+               'Interior',
+               'SpecialInterior',
+               'Extra',
+       ],
+       WarpSong: [
+               'Spawn',
+               'WarpSong',
+               'BlueWarp',
+               'OwlDrop',
+               'OverworldOneWay',
+               'Overworld',
+               'Interior',
+               'SpecialInterior',
+               'Extra',
+       ],
+};
+
 const CONTEXT = React.createContext({});
 
 const useTracker = () => React.useContext(CONTEXT);
@@ -1889,17 +2218,24 @@ EntranceGroup.propTypes = {
 const EntranceRow = ({ entranceId }) => {
        const entrance = React.useMemo(() => getEntrance(entranceId), [entranceId]);
 
-       if (!entrance) {
-               return <div className="entrance-row empty" />;
-       }
+       const { connections, entrances, setConnection } = useTracker();
 
-       const { connections, freeEntrances, setConnection } = useTracker();
+       const options = React.useMemo(() => {
+               if (entrance.type && TYPE_RESTRICTIONS[entrance.type]) {
+                       return entrances.filter((e) =>
+                               e.type && TYPE_RESTRICTIONS[entrance.type].includes(e.type));
+               }
+               return entrances;
+       }, [entrances]);
 
-       const classNames = ['entrance-row'];
-       if (entrance.spacer) classNames.push('mt-2');
-       if (connections[entrance.id] === 'trash') classNames.push('is-trash');
+       const className = React.useMemo(() => {
+               const classNames = ['entrance-row'];
+               if (entrance.spacer) classNames.push('mt-2');
+               if (connections[entrance.id] === 'trash') classNames.push('is-trash');
+               return classNames.join(' ');
+       }, [entrance, connections]);
 
-       return <div className={classNames.join(' ')}>
+       return <div className={className}>
                <label
                        className="entrance-label"
                        htmlFor={entranceId}
@@ -1912,7 +2248,7 @@ const EntranceRow = ({ entranceId }) => {
                        id={entranceId}
                        name={entranceId}
                        onChange={({ target: { name, value } }) => setConnection(name, value)}
-                       options={freeEntrances}
+                       options={options}
                        value={connections[entranceId]}
                />
        </div>;
@@ -1928,12 +2264,14 @@ const MixedPoolsTracker = () => {
        const setConnection = React.useCallback((src, dst) => {
                setConnections((c) => {
                        const newConn = { ...c };
-                       if (getEntrance(c[src])) {
+                       const srcEntrance = getEntrance(src);
+                       const oldTarget = getEntrance(c[src]);
+                       if (oldTarget && (!srcEntrance || !srcEntrance.oneway)) {
                                // unset old connection
                                newConn[c[src]] = null;
                        }
                        newConn[src] = dst;
-                       if (dst && getEntrance(src)) {
+                       if (dst && srcEntrance && !srcEntrance.oneway) {
                                newConn[dst] = src;
                        }
                        return newConn;
@@ -1958,16 +2296,14 @@ const MixedPoolsTracker = () => {
                return options;
        }, []);
 
-       const freeEntrances = React.useMemo(() => {
-               return entrances.filter((entrance) => {
-                       return entrance.multi ||
-                               !Object.entries(connections).find(([, b]) => b === entrance.id);
-               });
-       }, [connections, entrances]);
+       const warpTargets = React.useMemo(() => {
+               const targets = [];
+               return targets;
+       }, []);
 
        const context = React.useMemo(() => ({
-               connections, entrances, freeEntrances, setConnection,
-       }), [connections, entrances, freeEntrances, setConnection]);
+               connections, entrances, setConnection, warpTargets,
+       }), [connections, entrances, setConnection, warpTargets]);
 
        const superGroups = React.useMemo(() => {
                const sg = [
@@ -2043,6 +2379,30 @@ const MixedPoolsTracker = () => {
                                                </EntranceGroup>
                                        </div>
                                )}
+                               <div className="column">
+                                       {AREAS.slice(43, 44).map((area) =>
+                                               <EntranceGroup group={area} key={area.id}>
+                                                       {area.entrances.map((entrance) =>
+                                                               <EntranceRow
+                                                                       entranceId={`${area.id}.${entrance.id}`}
+                                                                       key={entrance.id}
+                                                               />
+                                                       )}
+                                               </EntranceGroup>
+                                       )}
+                               </div>
+                               <div className="column">
+                                       {AREAS.slice(44, 46).map((area) =>
+                                               <EntranceGroup group={area} key={area.id}>
+                                                       {area.entrances.map((entrance) =>
+                                                               <EntranceRow
+                                                                       entranceId={`${area.id}.${entrance.id}`}
+                                                                       key={entrance.id}
+                                                               />
+                                                       )}
+                                               </EntranceGroup>
+                                       )}
+                               </div>
                        </div>
                </div>
        </CONTEXT.Provider>;