[RANDO] Shuffle Pots (#4592)

* Potsanity proof of concept

* Hide pot item cutscenes for very frequent items

* Add 1 new pot to the item pool

* V1 custom pot model

* V2 pot model

* Pushing for help. lol

* Format clean up on added hint_list entries.
Removal of WriteIngameSpoilerLog call that was unneeded.

* THREE_ACTOR_PARAMS -> TWO_ACTOR_PARAMS and hints in a loop

* Lost woods pots logic

* Realign Pot Checklist in Location_list.cpp

* Correcting some values and adding Master Quest pots.

* Remove vanilla placements

* Re-order enums + start hints per region

* Fix build

* Break up shuffle pot options to dungeon/overworld/all

* Fixes

* Prepare default pot contents, fix/add dungeons

* Fix dungeon/overworld only settings

* Updates to Parameters and RHT information

* Remove unused hints

* Add proper check tracker entry exclusion

* Tweak items to skip cutscenes for

* Vanilla Drop List

* Update magic to blue rupees

* After merge fixes

* Fix Ganondorf's Lair pots

* Fix check tracker + minor stuff

* Unlock early GBK door

* Minor fixes

* More minor stuff and start of logic entries

* Fix TWO_ACTOR_PARAMS overlap between pots

* De-dupe defines

* Add missing water trial pot

* Update to develop-rando

* VBify pots progress

* Cleanup and fixes

* Overworld logic done

* Cleanup and fix item00 queues

* Implement skipping cutscenes for common items

* Revert "Implement skipping cutscenes for common items"

This reverts commit fe44916588.

* Ganons tower pot not spawning item fix + cleanup

* Fix ganon's tower, barinade, water temple pots

* VBify ganons key door

* Lizalfos Pot addition (example)

* Separate MQ pots in randomizerTypes.h

* Fix build

* Fix linux build (?)

* DC/Jabu/Botw/ start of Forest Pots (NMQ)

* Remaining Dungeon Non MQ Pot Location Logic

* After merge fixes round 1

* Post merge fixes round 2

* Apply MQ pot logic

* Re-align some stuff

* Cleanup, more work on locationlist

* Start of handling dungeon pots in item pool

* Finish dungeon pots in item pool

* GTG MQ Pots

* Review comments round 1 & code cleanup

* Fix ganon's lair pots being behind GBK in logic

* Update soh/include/z64actor.h

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Address review comment

* Fix logic for pots in Fire Temple

* Fix GtG MQ pots, fix water temple pot logic

* Review Comments

* Logic review part 1

* Logic comments part 2

---------

Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
This commit is contained in:
aMannus 2024-12-13 21:15:40 +01:00 committed by GitHub
parent ab863653ce
commit 1a5632e3b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
74 changed files with 4939 additions and 178 deletions

View File

@ -0,0 +1,19 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potrim"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_0"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potface"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_1"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbase"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_2"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbottom"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_3"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potvoid"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_4"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,69 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="9" V02="7"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="3" V02="2"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="15" V02="13"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,31 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="3" V01="4" V02="1"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="15" V02="13"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="12" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="6"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,18 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_2" VertexBufferIndex="0" VertexOffset="16" Count="8"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,9 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_3" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,9 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_4" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,82 @@
<Vertex Version="0">
<Vtx X="-35" Y="133" Z="-20" S="546" T="573" R="159" G="61" B="200" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="305" T="573" R="159" G="61" B="56" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="305" T="654" R="196" G="149" B="34" A="255"/>
<Vtx X="-35" Y="146" Z="-20" S="546" T="654" R="196" G="149" B="222" A="255"/>
<Vtx X="-43" Y="146" Z="25" S="278" T="699" R="169" G="178" B="50" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="572" T="699" R="169" G="178" B="206" A="255"/>
<Vtx X="-43" Y="160" Z="25" S="278" T="778" R="169" G="78" B="50" A="255"/>
<Vtx X="-43" Y="160" Z="-25" S="572" T="778" R="169" G="78" B="206" A="255"/>
<Vtx X="-29" Y="160" Z="17" S="325" T="858" R="60" G="107" B="222" A="255"/>
<Vtx X="-29" Y="160" Z="-17" S="526" T="858" R="60" G="107" B="34" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="325" T="1008" R="87" G="78" B="206" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="526" T="1008" R="87" G="78" B="50" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="10" T="1008" R="159" G="61" B="56" A="255"/>
<Vtx X="0" Y="133" Z="41" S="252" T="1008" R="0" G="61" B="112" A="255"/>
<Vtx X="0" Y="146" Z="41" S="252" T="927" R="0" G="149" B="69" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="10" T="927" R="196" G="149" B="34" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="10" T="927" R="196" G="149" B="34" A="255"/>
<Vtx X="0" Y="146" Z="41" S="252" T="927" R="0" G="149" B="69" A="255"/>
<Vtx X="0" Y="146" Z="49" S="278" T="882" R="0" G="178" B="101" A="255"/>
<Vtx X="-43" Y="146" Z="25" S="-16" T="882" R="169" G="178" B="50" A="255"/>
<Vtx X="0" Y="160" Z="49" S="278" T="803" R="0" G="78" B="101" A="255"/>
<Vtx X="-43" Y="160" Z="25" S="-16" T="803" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="160" Z="34" S="232" T="723" R="0" G="107" B="187" A="255"/>
<Vtx X="-29" Y="160" Z="17" S="30" T="723" R="60" G="107" B="222" A="255"/>
<Vtx X="0" Y="134" Z="34" S="232" T="573" R="0" G="78" B="155" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="30" T="573" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="573" T="740" R="0" G="61" B="144" A="255"/>
<Vtx X="-35" Y="133" Z="-20" S="573" T="982" R="159" G="61" B="200" A="255"/>
<Vtx X="-35" Y="146" Z="-20" S="654" T="982" R="196" G="149" B="222" A="255"/>
<Vtx X="0" Y="146" Z="-41" S="654" T="740" R="0" G="149" B="187" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="699" T="1008" R="169" G="178" B="206" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="699" T="714" R="0" G="178" B="155" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="699" T="714" R="0" G="178" B="155" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="699" T="1008" R="169" G="178" B="206" A="255"/>
<Vtx X="-43" Y="160" Z="-25" S="778" T="1008" R="169" G="78" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-49" S="778" T="714" R="0" G="78" B="155" A="255"/>
<Vtx X="-29" Y="160" Z="-17" S="858" T="962" R="60" G="107" B="34" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="858" T="760" R="0" G="107" B="69" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="1008" T="962" R="87" G="78" B="50" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="1008" T="760" R="0" G="78" B="101" A="255"/>
<Vtx X="35" Y="133" Z="20" S="687" T="137" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="446" T="137" R="97" G="61" B="200" A="255"/>
<Vtx X="35" Y="146" Z="-20" S="446" T="218" R="60" G="149" B="222" A="255"/>
<Vtx X="35" Y="146" Z="20" S="687" T="218" R="60" G="149" B="34" A="255"/>
<Vtx X="43" Y="146" Z="-25" S="420" T="263" R="87" G="178" B="206" A="255"/>
<Vtx X="43" Y="146" Z="25" S="714" T="263" R="87" G="178" B="50" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="420" T="342" R="87" G="78" B="206" A="255"/>
<Vtx X="43" Y="160" Z="25" S="714" T="342" R="87" G="78" B="50" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="466" T="422" R="196" G="107" B="34" A="255"/>
<Vtx X="43" Y="160" Z="25" S="714" T="342" R="87" G="78" B="50" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="420" T="342" R="87" G="78" B="206" A="255"/>
<Vtx X="29" Y="160" Z="17" S="667" T="422" R="196" G="107" B="222" A="255"/>
<Vtx X="29" Y="134" Z="-17" S="466" T="572" R="169" G="78" B="50" A="255"/>
<Vtx X="29" Y="134" Z="17" S="667" T="572" R="169" G="78" B="206" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="-16" T="305" R="97" G="61" B="200" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="-16" T="546" R="0" G="61" B="144" A="255"/>
<Vtx X="0" Y="146" Z="-41" S="65" T="546" R="0" G="149" B="187" A="255"/>
<Vtx X="35" Y="146" Z="-20" S="65" T="305" R="60" G="149" B="222" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="110" T="572" R="0" G="178" B="155" A="255"/>
<Vtx X="43" Y="146" Z="-25" S="110" T="278" R="87" G="178" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-49" S="189" T="572" R="0" G="78" B="155" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="189" T="278" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="269" T="526" R="0" G="107" B="69" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="269" T="325" R="196" G="107" B="34" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="269" T="325" R="196" G="107" B="34" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="269" T="526" R="0" G="107" B="69" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="419" T="526" R="0" G="78" B="101" A="255"/>
<Vtx X="29" Y="134" Z="-17" S="419" T="325" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="133" Z="41" S="419" T="252" R="0" G="61" B="112" A="255"/>
<Vtx X="35" Y="133" Z="20" S="419" T="10" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="146" Z="20" S="338" T="10" R="60" G="149" B="34" A="255"/>
<Vtx X="0" Y="146" Z="41" S="338" T="252" R="0" G="149" B="69" A="255"/>
<Vtx X="43" Y="146" Z="25" S="293" T="-16" R="87" G="178" B="50" A="255"/>
<Vtx X="0" Y="146" Z="49" S="293" T="278" R="0" G="178" B="101" A="255"/>
<Vtx X="43" Y="160" Z="25" S="214" T="-16" R="87" G="78" B="50" A="255"/>
<Vtx X="0" Y="160" Z="49" S="214" T="278" R="0" G="78" B="101" A="255"/>
<Vtx X="29" Y="160" Z="17" S="134" T="30" R="196" G="107" B="222" A="255"/>
<Vtx X="0" Y="160" Z="34" S="134" T="232" R="0" G="107" B="187" A="255"/>
<Vtx X="29" Y="134" Z="17" S="-16" T="30" R="169" G="78" B="206" A="255"/>
<Vtx X="0" Y="134" Z="34" S="-16" T="232" R="0" G="78" B="155" A="255"/>
</Vertex>

View File

@ -0,0 +1,40 @@
<Vertex Version="0">
<Vtx X="0" Y="43" Z="-82" S="1008" T="1008" R="0" G="220" B="134" A="255"/>
<Vtx X="71" Y="97" Z="-41" S="-16" T="368" R="102" G="47" B="197" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="-16" T="1008" R="106" G="220" B="195" A="255"/>
<Vtx X="0" Y="97" Z="-82" S="1008" T="368" R="0" G="47" B="138" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="-16" T="-16" R="97" G="61" B="200" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="1008" T="-16" R="0" G="61" B="144" A="255"/>
<Vtx X="0" Y="133" Z="41" S="1008" T="-16" R="0" G="61" B="112" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="-16" T="-16" R="159" G="61" B="56" A="255"/>
<Vtx X="-71" Y="97" Z="41" S="-16" T="368" R="154" G="47" B="59" A="255"/>
<Vtx X="0" Y="97" Z="82" S="1008" T="368" R="0" G="47" B="118" A="255"/>
<Vtx X="0" Y="43" Z="82" S="1008" T="1008" R="0" G="220" B="122" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="-16" T="1008" R="150" G="220" B="61" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="1008" T="1008" R="106" G="220" B="195" A="255"/>
<Vtx X="71" Y="97" Z="41" S="-16" T="368" R="102" G="47" B="59" A="255"/>
<Vtx X="71" Y="43" Z="41" S="-16" T="1008" R="106" G="220" B="61" A="255"/>
<Vtx X="71" Y="97" Z="-41" S="1008" T="368" R="102" G="47" B="197" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="1008" T="-16" R="97" G="61" B="200" A="255"/>
<Vtx X="71" Y="97" Z="41" S="-16" T="368" R="102" G="47" B="59" A="255"/>
<Vtx X="71" Y="97" Z="-41" S="1008" T="368" R="102" G="47" B="197" A="255"/>
<Vtx X="35" Y="133" Z="20" S="-16" T="-16" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="133" Z="20" S="1008" T="-16" R="97" G="61" B="56" A="255"/>
<Vtx X="0" Y="133" Z="41" S="-16" T="-16" R="0" G="61" B="112" A="255"/>
<Vtx X="0" Y="97" Z="82" S="-16" T="368" R="0" G="47" B="118" A="255"/>
<Vtx X="71" Y="97" Z="41" S="1008" T="368" R="102" G="47" B="59" A="255"/>
<Vtx X="71" Y="43" Z="41" S="1008" T="1008" R="106" G="220" B="61" A="255"/>
<Vtx X="0" Y="43" Z="82" S="-16" T="1008" R="0" G="220" B="122" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="1008" T="-16" R="159" G="61" B="56" A="255"/>
<Vtx X="-35" Y="133" Z="-20" S="-16" T="-16" R="159" G="61" B="200" A="255"/>
<Vtx X="-71" Y="97" Z="-41" S="-16" T="368" R="154" G="47" B="197" A="255"/>
<Vtx X="-71" Y="97" Z="41" S="1008" T="368" R="154" G="47" B="59" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="1008" T="1008" R="150" G="220" B="61" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="-16" T="1008" R="150" G="220" B="195" A="255"/>
<Vtx X="-71" Y="97" Z="-41" S="1008" T="368" R="154" G="47" B="197" A="255"/>
<Vtx X="-35" Y="133" Z="-20" S="1008" T="-16" R="159" G="61" B="200" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="-16" T="-16" R="0" G="61" B="144" A="255"/>
<Vtx X="0" Y="97" Z="-82" S="-16" T="368" R="0" G="47" B="138" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="1008" T="1008" R="150" G="220" B="195" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="-16" T="1008" R="0" G="220" B="134" A="255"/>
</Vertex>

View File

@ -0,0 +1,26 @@
<Vertex Version="0">
<Vtx X="0" Y="0" Z="-51" S="240" T="240" R="0" G="150" B="185" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="240" T="-16" R="0" G="220" B="134" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="-16" T="-16" R="106" G="220" B="195" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="-16" T="240" R="61" G="150" B="221" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="240" T="240" R="61" G="150" B="221" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="240" T="-16" R="106" G="220" B="195" A="255"/>
<Vtx X="71" Y="43" Z="41" S="-16" T="-16" R="106" G="220" B="61" A="255"/>
<Vtx X="44" Y="0" Z="25" S="-16" T="240" R="61" G="150" B="35" A="255"/>
<Vtx X="44" Y="0" Z="25" S="240" T="240" R="61" G="150" B="35" A="255"/>
<Vtx X="71" Y="43" Z="41" S="240" T="-16" R="106" G="220" B="61" A="255"/>
<Vtx X="0" Y="43" Z="82" S="-16" T="-16" R="0" G="220" B="122" A="255"/>
<Vtx X="0" Y="0" Z="51" S="-16" T="240" R="0" G="150" B="71" A="255"/>
<Vtx X="0" Y="0" Z="51" S="240" T="240" R="0" G="150" B="71" A="255"/>
<Vtx X="0" Y="43" Z="82" S="240" T="-16" R="0" G="220" B="122" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="-16" T="-16" R="150" G="220" B="61" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="-16" T="240" R="195" G="150" B="35" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="240" T="240" R="195" G="150" B="35" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="240" T="-16" R="150" G="220" B="61" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="-16" T="-16" R="150" G="220" B="195" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="-16" T="240" R="195" G="150" B="221" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="240" T="240" R="195" G="150" B="221" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="240" T="-16" R="150" G="220" B="195" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="-16" T="-16" R="0" G="220" B="134" A="255"/>
<Vtx X="0" Y="0" Z="-51" S="-16" T="240" R="0" G="150" B="185" A="255"/>
</Vertex>

View File

@ -0,0 +1,10 @@
<Vertex Version="0">
<Vtx X="0" Y="0" Z="-51" S="357" T="900" R="0" G="150" B="185" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="357" T="685" R="61" G="150" B="221" A="255"/>
<Vtx X="44" Y="0" Z="25" S="171" T="577" R="61" G="150" B="35" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="171" T="1008" R="195" G="150" B="221" A="255"/>
<Vtx X="0" Y="0" Z="51" S="-16" T="685" R="0" G="150" B="71" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="-16" T="900" R="195" G="150" B="35" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="171" T="1008" R="195" G="150" B="221" A="255"/>
<Vtx X="44" Y="0" Z="25" S="171" T="577" R="61" G="150" B="35" A="255"/>
</Vertex>

View File

@ -0,0 +1,10 @@
<Vertex Version="0">
<Vtx X="29" Y="134" Z="-17" S="428" T="240" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="428" T="752" R="0" G="78" B="101" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="871" T="1008" R="87" G="78" B="50" A="255"/>
<Vtx X="29" Y="134" Z="17" S="871" T="-16" R="169" G="78" B="206" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="-16" T="240" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="134" Z="34" S="-16" T="752" R="0" G="78" B="155" A="255"/>
<Vtx X="29" Y="134" Z="17" S="427" T="1008" R="169" G="78" B="206" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="427" T="-16" R="87" G="78" B="50" A="255"/>
</Vertex>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/gameplay_dangeon_keep/PotBaseNoise_8" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="63" Dxt="1024"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="2" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="28" Lrt="28"/>
<SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,12 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="69" G="38" B="33" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/gameplay_dangeon_keep/PotFace_32" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,12 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="218" G="179" B="131" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,12 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="0" G="0" B="0" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -74,6 +74,9 @@ static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCo
#define dgBossSoulSkullDL "__OTR__objects/object_boss_soul/gGIBossSoulSkullDL" #define dgBossSoulSkullDL "__OTR__objects/object_boss_soul/gGIBossSoulSkullDL"
static const ALIGN_ASSET(2) char gBossSoulSkullDL[] = dgBossSoulSkullDL; static const ALIGN_ASSET(2) char gBossSoulSkullDL[] = dgBossSoulSkullDL;
#define dgRandoPotDL "__OTR__objects/gameplay_dangeon_keep/gRandoPotDL"
static const ALIGN_ASSET(2) char gRandoPotDL[] = dgRandoPotDL;
#define dgFishingPoleGiDL "__OTR__objects/object_gi_fishing_pole/gFishingPoleGiDL" #define dgFishingPoleGiDL "__OTR__objects/object_gi_fishing_pole/gFishingPoleGiDL"
static const ALIGN_ASSET(2) char gFishingPoleGiDL[] = dgFishingPoleGiDL; static const ALIGN_ASSET(2) char gFishingPoleGiDL[] = dgFishingPoleGiDL;

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -284,7 +284,7 @@ typedef struct {
// #endregion // #endregion
// #region SOH [Randomizer] // #region SOH [Randomizer]
// Upstream TODO: Move these to their own struct or name to more obviously specific to Randomizer // Upstream TODO: Move these to their own struct or name to more obviously specific to Randomizer
/* */ u16 randomizerInf[17]; /* */ u16 randomizerInf[(RAND_INF_MAX + 15) / 16];
/* */ u8 mqDungeonCount; /* */ u8 mqDungeonCount;
/* */ u16 adultTradeItems; /* */ u16 adultTradeItems;
/* */ u8 triforcePiecesCollected; /* */ u8 triforcePiecesCollected;

View File

@ -348,7 +348,7 @@ const std::vector<FlagTable> flagTables = {
{ 0x24, "Market Crowd Text Randomizer" }, { 0x24, "Market Crowd Text Randomizer" },
{ 0x30, "Entered the Market" }, { 0x30, "Entered the Market" },
} }, } },
{ "Randomizer Inf Flags", RANDOMIZER_INF, 16, { { "Randomizer Inf Flags", RANDOMIZER_INF, (RAND_INF_MAX + 15) / 16, {
{ RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE, "DUNGEONS_DONE_SPIRIT_TEMPLE" }, { RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE, "DUNGEONS_DONE_SPIRIT_TEMPLE" },
{ RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE, "DUNGEONS_DONE_SHADOW_TEMPLE" }, { RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE, "DUNGEONS_DONE_SHADOW_TEMPLE" },
@ -511,6 +511,548 @@ const std::vector<FlagTable> flagTables = {
{ RAND_INF_HAS_OCARINA_C_LEFT, "RAND_INF_HAS_OCARINA_C_LEFT"}, { RAND_INF_HAS_OCARINA_C_LEFT, "RAND_INF_HAS_OCARINA_C_LEFT"},
{ RAND_INF_HAS_OCARINA_C_RIGHT, "RAND_INF_HAS_OCARINA_C_RIGHT"}, { RAND_INF_HAS_OCARINA_C_RIGHT, "RAND_INF_HAS_OCARINA_C_RIGHT"},
{ RAND_INF_KF_LINKS_HOUSE_POT, "RAND_INF_KF_LINKS_HOUSE_POT" },
{ RAND_INF_KF_TWINS_HOUSE_POT_1, "RAND_INF_KF_TWINS_HOUSE_POT_1" },
{ RAND_INF_KF_TWINS_HOUSE_POT_2, "RAND_INF_KF_TWINS_HOUSE_POT_2" },
{ RAND_INF_KF_BROTHERS_HOUSE_POT_1, "RAND_INF_KF_BROTHERS_HOUSE_POT_1" },
{ RAND_INF_KF_BROTHERS_HOUSE_POT_2, "RAND_INF_KF_BROTHERS_HOUSE_POT_2" },
{ RAND_INF_GF_BREAK_ROOM_POT_1, "RAND_INF_GF_BREAK_ROOM_POT_1" },
{ RAND_INF_GF_BREAK_ROOM_POT_2, "RAND_INF_GF_BREAK_ROOM_POT_2" },
{ RAND_INF_GF_KITCHEN_POT_1, "RAND_INF_GF_KITCHEN_POT_1" },
{ RAND_INF_GF_KITCHEN_POT_2, "RAND_INF_GF_KITCHEN_POT_2" },
{ RAND_INF_GF_NORTH_F1_CARPENTER_POT_1, "RAND_INF_GF_NORTH_F1_CARPENTER_POT_1" },
{ RAND_INF_GF_NORTH_F1_CARPENTER_POT_2, "RAND_INF_GF_NORTH_F1_CARPENTER_POT_2" },
{ RAND_INF_GF_NORTH_F1_CARPENTER_POT_3, "RAND_INF_GF_NORTH_F1_CARPENTER_POT_3" },
{ RAND_INF_GF_NORTH_F2_CARPENTER_POT_1, "RAND_INF_GF_NORTH_F2_CARPENTER_POT_1" },
{ RAND_INF_GF_NORTH_F2_CARPENTER_POT_2, "RAND_INF_GF_NORTH_F2_CARPENTER_POT_2" },
{ RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1, "RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1" },
{ RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2, "RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2" },
{ RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3, "RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3" },
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1" },
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2" },
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3" },
{ RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4" },
{ RAND_INF_WASTELAND_NEAR_GS_POT_1, "RAND_INF_WASTELAND_NEAR_GS_POT_1" },
{ RAND_INF_WASTELAND_NEAR_GS_POT_2, "RAND_INF_WASTELAND_NEAR_GS_POT_2" },
{ RAND_INF_WASTELAND_NEAR_GS_POT_3, "RAND_INF_WASTELAND_NEAR_GS_POT_3" },
{ RAND_INF_WASTELAND_NEAR_GS_POT_4, "RAND_INF_WASTELAND_NEAR_GS_POT_4" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_4, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_4" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_5, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_5" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_6, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_6" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_7, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_7" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_8, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_8" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_9, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_9" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_10, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_10" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_11, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_11" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_12, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_12" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_13, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_13" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_14, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_14" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_15, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_15" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_16, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_16" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_17, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_17" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_18, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_18" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_19, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_19" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_20, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_20" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_21, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_21" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_22, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_22" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_23, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_23" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_24, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_24" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_25, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_25" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_26, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_26" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_27, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_27" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_28, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_28" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_29, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_29" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_30, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_30" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_31, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_31" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_32, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_32" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_33, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_33" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_34, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_34" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_35, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_35" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_36, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_36" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_37, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_37" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_38, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_38" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_39, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_39" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_40, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_40" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_41, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_41" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_42, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_42" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_43, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_43" },
{ RAND_INF_MK_GUARD_HOUSE_CHILD_POT_44, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_44" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_1, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_1" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_2, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_2" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_3, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_3" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_4, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_4" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_5, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_5" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_6, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_6" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_7, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_7" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_8, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_8" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_9, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_9" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_10, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_10" },
{ RAND_INF_MK_GUARD_HOUSE_ADULT_POT_11, "RAND_INF_MK_GUARD_HOUSE_ADULT_POT_11" },
{ RAND_INF_MK_BACK_ALLEY_HOUSE_POT_1, "RAND_INF_MK_BACK_ALLEY_HOUSE_POT_1" },
{ RAND_INF_MK_BACK_ALLEY_HOUSE_POT_2, "RAND_INF_MK_BACK_ALLEY_HOUSE_POT_2" },
{ RAND_INF_MK_BACK_ALLEY_HOUSE_POT_3, "RAND_INF_MK_BACK_ALLEY_HOUSE_POT_3" },
{ RAND_INF_KAK_NEAR_POTION_SHOP_POT_1, "RAND_INF_KAK_NEAR_POTION_SHOP_POT_1" },
{ RAND_INF_KAK_NEAR_POTION_SHOP_POT_2, "RAND_INF_KAK_NEAR_POTION_SHOP_POT_2" },
{ RAND_INF_KAK_NEAR_POTION_SHOP_POT_3, "RAND_INF_KAK_NEAR_POTION_SHOP_POT_3" },
{ RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_1, "RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_1" },
{ RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_2, "RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_2" },
{ RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_3, "RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_3" },
{ RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_1, "RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_1" },
{ RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_2, "RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_2" },
{ RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_3, "RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_3" },
{ RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_1, "RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_1" },
{ RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_2, "RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_2" },
{ RAND_INF_GY_DAMPES_GRAVE_POT_1, "RAND_INF_GY_DAMPES_GRAVE_POT_1" },
{ RAND_INF_GY_DAMPES_GRAVE_POT_2, "RAND_INF_GY_DAMPES_GRAVE_POT_2" },
{ RAND_INF_GY_DAMPES_GRAVE_POT_3, "RAND_INF_GY_DAMPES_GRAVE_POT_3" },
{ RAND_INF_GY_DAMPES_GRAVE_POT_4, "RAND_INF_GY_DAMPES_GRAVE_POT_4" },
{ RAND_INF_GY_DAMPES_GRAVE_POT_5, "RAND_INF_GY_DAMPES_GRAVE_POT_5" },
{ RAND_INF_GY_DAMPES_GRAVE_POT_6, "RAND_INF_GY_DAMPES_GRAVE_POT_6" },
{ RAND_INF_GC_LOWER_STAIRCASE_POT_1, "RAND_INF_GC_LOWER_STAIRCASE_POT_1" },
{ RAND_INF_GC_LOWER_STAIRCASE_POT_2, "RAND_INF_GC_LOWER_STAIRCASE_POT_2" },
{ RAND_INF_GC_UPPER_STAIRCASE_POT_1, "RAND_INF_GC_UPPER_STAIRCASE_POT_1" },
{ RAND_INF_GC_UPPER_STAIRCASE_POT_2, "RAND_INF_GC_UPPER_STAIRCASE_POT_2" },
{ RAND_INF_GC_UPPER_STAIRCASE_POT_3, "RAND_INF_GC_UPPER_STAIRCASE_POT_3" },
{ RAND_INF_GC_MEDIGORON_POT_1, "RAND_INF_GC_MEDIGORON_POT_1" },
{ RAND_INF_GC_DARUNIA_POT_1, "RAND_INF_GC_DARUNIA_POT_1" },
{ RAND_INF_GC_DARUNIA_POT_2, "RAND_INF_GC_DARUNIA_POT_2" },
{ RAND_INF_GC_DARUNIA_POT_3, "RAND_INF_GC_DARUNIA_POT_3" },
{ RAND_INF_DMC_NEAR_GC_POT_1, "RAND_INF_DMC_NEAR_GC_POT_1" },
{ RAND_INF_DMC_NEAR_GC_POT_2, "RAND_INF_DMC_NEAR_GC_POT_2" },
{ RAND_INF_DMC_NEAR_GC_POT_3, "RAND_INF_DMC_NEAR_GC_POT_3" },
{ RAND_INF_DMC_NEAR_GC_POT_4, "RAND_INF_DMC_NEAR_GC_POT_4" },
{ RAND_INF_ZD_NEAR_SHOP_POT_1, "RAND_INF_ZD_NEAR_SHOP_POT_1" },
{ RAND_INF_ZD_NEAR_SHOP_POT_2, "RAND_INF_ZD_NEAR_SHOP_POT_2" },
{ RAND_INF_ZD_NEAR_SHOP_POT_3, "RAND_INF_ZD_NEAR_SHOP_POT_3" },
{ RAND_INF_ZD_NEAR_SHOP_POT_4, "RAND_INF_ZD_NEAR_SHOP_POT_4" },
{ RAND_INF_ZD_NEAR_SHOP_POT_5, "RAND_INF_ZD_NEAR_SHOP_POT_5" },
{ RAND_INF_ZF_HIDDEN_CAVE_POT_1, "RAND_INF_ZF_HIDDEN_CAVE_POT_1" },
{ RAND_INF_ZF_HIDDEN_CAVE_POT_2, "RAND_INF_ZF_HIDDEN_CAVE_POT_2" },
{ RAND_INF_ZF_HIDDEN_CAVE_POT_3, "RAND_INF_ZF_HIDDEN_CAVE_POT_3" },
{ RAND_INF_ZF_NEAR_JABU_POT_1, "RAND_INF_ZF_NEAR_JABU_POT_1" },
{ RAND_INF_ZF_NEAR_JABU_POT_2, "RAND_INF_ZF_NEAR_JABU_POT_2" },
{ RAND_INF_ZF_NEAR_JABU_POT_3, "RAND_INF_ZF_NEAR_JABU_POT_3" },
{ RAND_INF_ZF_NEAR_JABU_POT_4, "RAND_INF_ZF_NEAR_JABU_POT_4" },
{ RAND_INF_LLR_FRONT_POT_1, "RAND_INF_LLR_FRONT_POT_1" },
{ RAND_INF_LLR_FRONT_POT_2, "RAND_INF_LLR_FRONT_POT_2" },
{ RAND_INF_LLR_FRONT_POT_3, "RAND_INF_LLR_FRONT_POT_3" },
{ RAND_INF_LLR_FRONT_POT_4, "RAND_INF_LLR_FRONT_POT_4" },
{ RAND_INF_LLR_RAIN_SHED_POT_1, "RAND_INF_LLR_RAIN_SHED_POT_1" },
{ RAND_INF_LLR_RAIN_SHED_POT_2, "RAND_INF_LLR_RAIN_SHED_POT_2" },
{ RAND_INF_LLR_RAIN_SHED_POT_3, "RAND_INF_LLR_RAIN_SHED_POT_3" },
{ RAND_INF_LLR_TALONS_HOUSE_POT_1, "RAND_INF_LLR_TALONS_HOUSE_POT_1" },
{ RAND_INF_LLR_TALONS_HOUSE_POT_2, "RAND_INF_LLR_TALONS_HOUSE_POT_2" },
{ RAND_INF_LLR_TALONS_HOUSE_POT_3, "RAND_INF_LLR_TALONS_HOUSE_POT_3" },
{ RAND_INF_HF_COW_GROTTO_POT_1, "RAND_INF_HF_COW_GROTTO_POT_1" },
{ RAND_INF_HF_COW_GROTTO_POT_2, "RAND_INF_HF_COW_GROTTO_POT_2" },
{ RAND_INF_HC_STORMS_GROTTO_POT_1, "RAND_INF_HC_STORMS_GROTTO_POT_1" },
{ RAND_INF_HC_STORMS_GROTTO_POT_2, "RAND_INF_HC_STORMS_GROTTO_POT_2" },
{ RAND_INF_HC_STORMS_GROTTO_POT_3, "RAND_INF_HC_STORMS_GROTTO_POT_3" },
{ RAND_INF_HC_STORMS_GROTTO_POT_4, "RAND_INF_HC_STORMS_GROTTO_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_1, "RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_2, "RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_3, "RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_4, "RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_1, "RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_2, "RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_3, "RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_4, "RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_5, "RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_5" },
{ RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_6, "RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_6" },
{ RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_1, "RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_2, "RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_3, "RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_4, "RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_1, "RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_2, "RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_3, "RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_4, "RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_1, "RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_2, "RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_BLADE_POT_1, "RAND_INF_DODONGOS_CAVERN_BLADE_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_BLADE_POT_2, "RAND_INF_DODONGOS_CAVERN_BLADE_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_1, "RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_2, "RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_1, "RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_2, "RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_3, "RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_4, "RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_4" },
{ RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1, "RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2, "RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3, "RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3" },
{ RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_1, "RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_2, "RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_3, "RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_3" },
{ RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_4, "RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_4" },
{ RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_5, "RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_5" },
{ RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_6, "RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_6" },
{ RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_1, "RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_2, "RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_3, "RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_3" },
{ RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1, "RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2, "RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, "RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3" },
{ RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, "RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4" },
{ RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, "RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5" },
{ RAND_INF_FOREST_TEMPLE_LOBBY_POT_1, "RAND_INF_FOREST_TEMPLE_LOBBY_POT_1" },
{ RAND_INF_FOREST_TEMPLE_LOBBY_POT_2, "RAND_INF_FOREST_TEMPLE_LOBBY_POT_2" },
{ RAND_INF_FOREST_TEMPLE_LOBBY_POT_3, "RAND_INF_FOREST_TEMPLE_LOBBY_POT_3" },
{ RAND_INF_FOREST_TEMPLE_LOBBY_POT_4, "RAND_INF_FOREST_TEMPLE_LOBBY_POT_4" },
{ RAND_INF_FOREST_TEMPLE_LOBBY_POT_5, "RAND_INF_FOREST_TEMPLE_LOBBY_POT_5" },
{ RAND_INF_FOREST_TEMPLE_LOBBY_POT_6, "RAND_INF_FOREST_TEMPLE_LOBBY_POT_6" },
{ RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_1, "RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_1" },
{ RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_2, "RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_2" },
{ RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_1, "RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_1" },
{ RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_2, "RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_2" },
{ RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_1, "RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_1" },
{ RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_2, "RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_2" },
{ RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_3, "RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_3" },
{ RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_4, "RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_4" },
{ RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_1, "RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_1" },
{ RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_2, "RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_2" },
{ RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_3, "RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_3" },
{ RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_1, "RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_1" },
{ RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_2, "RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_2" },
{ RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_1, "RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_1" },
{ RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_2, "RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_2" },
{ RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_3, "RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_3" },
{ RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_4, "RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_4" },
{ RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_1, "RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_1" },
{ RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_2, "RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_2" },
{ RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_3, "RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_3" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3" },
{ RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4, "RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4" },
{ RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, "RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_1" },
{ RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_2, "RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_2" },
{ RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_1, "RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_1" },
{ RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_2, "RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_2" },
{ RAND_INF_WATER_TEMPLE_TORCH_POT_1, "RAND_INF_WATER_TEMPLE_TORCH_POT_1" },
{ RAND_INF_WATER_TEMPLE_TORCH_POT_2, "RAND_INF_WATER_TEMPLE_TORCH_POT_2" },
{ RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_1, "RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_1" },
{ RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_2, "RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_2" },
{ RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_3, "RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_3" },
{ RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_1, "RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_1" },
{ RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_2, "RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_2" },
{ RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_1, "RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_1" },
{ RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_2, "RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_2" },
{ RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_3, "RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_3" },
{ RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_4, "RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_4" },
{ RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1, "RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1" },
{ RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2, "RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2" },
{ RAND_INF_WATER_TEMPLE_RIVER_POT_1, "RAND_INF_WATER_TEMPLE_RIVER_POT_1" },
{ RAND_INF_WATER_TEMPLE_RIVER_POT_2, "RAND_INF_WATER_TEMPLE_RIVER_POT_2" },
{ RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_1, "RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_1" },
{ RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_2, "RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_2" },
{ RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_1, "RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_1" },
{ RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_2, "RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1, "RAND_INF_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1, "RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2, "RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3, "RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3" },
{ RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4, "RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4" },
{ RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5, "RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5" },
{ RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_1, "RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_2, "RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_1, "RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_2, "RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_3, "RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_3" },
{ RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_4, "RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_4" },
{ RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_1, "RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_2, "RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_SPIKE_WALLS_POT_1, "RAND_INF_SHADOW_TEMPLE_SPIKE_WALLS_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_1, "RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_2, "RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_1, "RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_2, "RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_3, "RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_3" },
{ RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_4, "RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_4" },
{ RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_1, "RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_2, "RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_1, "RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_2, "RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_3, "RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_3" },
{ RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_4, "RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_4" },
{ RAND_INF_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, "RAND_INF_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1, "RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2, "RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1, "RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2, "RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3, "RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3" },
{ RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4, "RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4" },
{ RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5, "RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5" },
{ RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6, "RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6" },
{ RAND_INF_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1, "RAND_INF_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1" },
{ RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_3, "RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_3" },
{ RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_3, "RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_3" },
{ RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_4, "RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_4" },
{ RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, "RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1" },
{ RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_1, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_1" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_2, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_2" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_3, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_3" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_4, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_4" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_5, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_5" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_6, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_6" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_7, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_7" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_8, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_8" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_9, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_9" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_10, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_10" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_11, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_11" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_12, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_12" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_13, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_13" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_14, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_14" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_15, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_15" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17" },
{ RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11" },
{ RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12" },
{ RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1" },
{ RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2" },
{ RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3" },
{ RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1" },
{ RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2" },
{ RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1" },
{ RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT, "RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT" },
{ RAND_INF_ICE_CAVERN_HALL_POT_1, "RAND_INF_ICE_CAVERN_HALL_POT_1" },
{ RAND_INF_ICE_CAVERN_HALL_POT_2, "RAND_INF_ICE_CAVERN_HALL_POT_2" },
{ RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1, "RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1" },
{ RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_2, "RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_2" },
{ RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_3, "RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_3" },
{ RAND_INF_ICE_CAVERN_NEAR_END_POT_1, "RAND_INF_ICE_CAVERN_NEAR_END_POT_1" },
{ RAND_INF_ICE_CAVERN_NEAR_END_POT_2, "RAND_INF_ICE_CAVERN_NEAR_END_POT_2" },
{ RAND_INF_ICE_CAVERN_FROZEN_POT_1, "RAND_INF_ICE_CAVERN_FROZEN_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, "RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, "RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_1, "RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_2, "RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1, "RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2, "RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, "RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, "RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2" },
{ RAND_INF_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, "RAND_INF_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_1, "RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_1" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_2, "RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_2" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_3, "RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_3" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_4, "RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_4" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_5, "RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_5" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_6, "RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_6" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_1, "RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_1" },
{ RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_2, "RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_2" },
{ RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1, "RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1" },
{ RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2, "RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2" },
{ RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3, "RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3" },
{ RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4, "RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4" },
{ RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_1, "RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_1" },
{ RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_2, "RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_2" },
{ RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_3, "RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_3" },
{ RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_1, "RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_1" },
{ RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_2, "RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_2" },
{ RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_1, "RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_1" },
{ RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_2, "RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_2" },
{ RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_3, "RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_3" },
{ RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_4, "RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3, "RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4, "RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3, "RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4, "RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3, "RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4, "RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3, "RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, "RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_3, "RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_3" },
{ RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_4, "RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_4" },
{ RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_2" },
{ RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_1, "RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_1" },
{ RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_2, "RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_2" },
{ RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2" },
{ RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1, "RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1" },
{ RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2, "RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_3, "RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_3" },
{ RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_4, "RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_4" },
{ RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_2" },
{ RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_3, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_3" },
{ RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_4, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_4" },
{ RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, "RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT" },
{ RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1" },
{ RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2" },
{ RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1" },
{ RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2" },
{ RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3" },
{ RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT" },
{ RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1" },
{ RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2" },
{ RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3" },
{ RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_3, "RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_3" },
{ RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3, "RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3" },
{ RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_3, "RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_3" },
{ RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_4, "RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_4" },
{ RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_5, "RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_5" },
{ RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_6, "RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_6" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7" },
{ RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8, "RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8" },
{ RAND_INF_ICE_CAVERN_MQ_ENTRANCE_POT, "RAND_INF_ICE_CAVERN_MQ_ENTRANCE_POT" },
{ RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, "RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1" },
{ RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, "RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2" },
{ RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, "RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1" },
{ RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, "RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2" },
{ RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, "RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3" },
{ RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, "RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4" },
{ RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, "RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1" },
{ RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, "RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2" },
{ RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_1, "RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_1" },
{ RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_2, "RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, "RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, "RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4, "RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_3, "RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_3" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_4, "RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_4" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_5, "RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_5" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3, "RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4, "RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1, "RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1" },
{ RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2, "RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_1, "RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_2, "RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_3, "RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_3" },
{ RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_4, "RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_4" },
{ RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_5, "RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_5" },
{ RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1, "RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2, "RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3, "RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3" },
{ RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1, "RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2, "RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_3, "RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_3" },
{ RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_4, "RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_4" },
{ RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_5, "RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_5" },
{ RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, "RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, "RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_1, "RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_2, "RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1, "RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2, "RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, "RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, "RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1, "RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2, "RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3, "RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3" },
{ RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1, "RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2, "RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_1, "RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_1" },
{ RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_2, "RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_2" },
{ RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_3, "RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_3" },
{ RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_4, "RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_4" },
{ RAND_INF_WATER_TEMPLE_MQ_BOSS_KEY_POT, "RAND_INF_WATER_TEMPLE_MQ_BOSS_KEY_POT" },
{ RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1, "RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1" },
{ RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2, "RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2" },
{ RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1, "RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1" },
{ RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2, "RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2" },
{ RAND_INF_CAUGHT_LOACH, "RAND_INF_CAUGHT_LOACH" }, { RAND_INF_CAUGHT_LOACH, "RAND_INF_CAUGHT_LOACH" },
{ RAND_INF_CAN_SWIM, "RAND_INF_CAN_SWIM" }, { RAND_INF_CAN_SWIM, "RAND_INF_CAN_SWIM" },

View File

@ -245,6 +245,11 @@ typedef enum {
``` ```
*/ */
VB_DRAW_AMMO_COUNT, VB_DRAW_AMMO_COUNT,
// Opt: *ObjTsubo
VB_POT_SETUP_DRAW,
VB_POT_DROP_ITEM,
// Opt: *ActorDoorShutter
VB_LOCK_BOSS_DOOR,
// Vanilla condition: true // Vanilla condition: true
VB_HAVE_OCARINA_NOTE_D4, VB_HAVE_OCARINA_NOTE_D4,
// Vanilla condition: true // Vanilla condition: true

View File

@ -275,6 +275,10 @@ hintTextTable[RHT_DODONGOS_CAVERN_BOSS_ROOM_CHEST] = HintText(CustomMessage("The
/*french*/ "Selon moi, la #peste Mojo au coeur de la Caverne Dodongo# vend #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, la #peste Mojo au coeur de la Caverne Dodongo# vend #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, un #deku custodiado por Lizalfos# vende #[[1]]#. // /*spanish*/ Según dicen, un #deku custodiado por Lizalfos# vende #[[1]]#.
hintTextTable[RHT_POT_DODONGOS_CAVERN] = HintText(CustomMessage("They say that a #pot in Dodongo's Cavern# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| JABU JABUS BELLY | | JABU JABUS BELLY |
---------------------------*/ ---------------------------*/
@ -421,6 +425,11 @@ hintTextTable[RHT_DODONGOS_CAVERN_BOSS_ROOM_CHEST] = HintText(CustomMessage("The
/*german*/ "Man erzählt sich, daß ein #Deku in einer Gottheit #[[1]]# verkaufe.", /*german*/ "Man erzählt sich, daß ein #Deku in einer Gottheit #[[1]]# verkaufe.",
/*french*/ "Selon moi, la #peste Mojo dans le ventre du gardien# vend #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, la #peste Mojo dans le ventre du gardien# vend #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, un #deku dentro de cierta deidad# vende #[[1]]#. // /*spanish*/ Según dicen, un #deku dentro de cierta deidad# vende #[[1]]#.
hintTextTable[RHT_POT_JABU_JABUS_BELLY] = HintText(CustomMessage("They say that a #pot in Jabu Jabu's Belly# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| FOREST TEMPLE | | FOREST TEMPLE |
---------------------------*/ ---------------------------*/
@ -638,10 +647,15 @@ hintTextTable[RHT_DODONGOS_CAVERN_BOSS_ROOM_CHEST] = HintText(CustomMessage("The
/*german*/ "Man erzählt sich, daß eine #Spinne auf einem Vorsprung# im Waldtempel #[[1]]# besäße.", /*german*/ "Man erzählt sich, daß eine #Spinne auf einem Vorsprung# im Waldtempel #[[1]]# besäße.",
/*french*/ "Selon moi, une #Skulltula dans le jardin du Temple de la Forêt# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula dans le jardin du Temple de la Forêt# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, una #Skulltula en un borde# del Templo del Bosque otorga #[[1]]#. // /*spanish*/ Según dicen, una #Skulltula en un borde# del Templo del Bosque otorga #[[1]]#.
hintTextTable[RHT_FOREST_TEMPLE_MQ_GS_WELL] = HintText(CustomMessage("They say that #draining a well# in Forest Temple uncovers a spider with #[[1]]#.", hintTextTable[RHT_FOREST_TEMPLE_MQ_GS_WELL] = HintText(CustomMessage("They say that #draining a well# in Forest Temple uncovers a spider with #[[1]]#.",
/*german*/ "Man erzählt sich, daß das #Entleeren eines Brunnens# im Waldtempel eine Spinne mit #[[1]]# enthülle.", /*german*/ "Man erzählt sich, daß das #Entleeren eines Brunnens# im Waldtempel eine Spinne mit #[[1]]# enthülle.",
/*french*/ "Selon moi, une #Skulltula au fond du Puits du Temple de la Forêt# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula au fond du Puits du Temple de la Forêt# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, #vaciar el pozo# del Templo del Bosque desvela una Skulltula que otorga #[[1]]#. // /*spanish*/ Según dicen, #vaciar el pozo# del Templo del Bosque desvela una Skulltula que otorga #[[1]]#.
hintTextTable[RHT_POT_FOREST_TEMPLE] = HintText(CustomMessage("They say that a #pot in Forest Temple# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| FIRE TEMPLE | | FIRE TEMPLE |
@ -831,6 +845,10 @@ hintTextTable[RHT_FIRE_TEMPLE_NEAR_BOSS_CHEST] = HintText(CustomMessage("They sa
/*french*/ "Selon moi, une #Skulltula près du labyrinthe enflammé du Temple du Feu# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula près du labyrinthe enflammé du Temple du Feu# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, una #Skulltula junto a un ardiente laberinto# otorga #[[1]]#. // /*spanish*/ Según dicen, una #Skulltula junto a un ardiente laberinto# otorga #[[1]]#.
hintTextTable[RHT_POT_FIRE_TEMPLE] = HintText(CustomMessage("They say that a #pot in Fire Temple# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| WATER TEMPLE | | WATER TEMPLE |
---------------------------*/ ---------------------------*/
@ -958,6 +976,10 @@ hintTextTable[RHT_FIRE_TEMPLE_NEAR_BOSS_CHEST] = HintText(CustomMessage("They sa
/*french*/ "Selon moi, une #Skulltula au dessus de la rivière du Temple de l'Eau# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula au dessus de la rivière du Temple de l'Eau# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, una #Skulltula sobre un río# del Templo del Agua otorga #[[1]]#. // /*spanish*/ Según dicen, una #Skulltula sobre un río# del Templo del Agua otorga #[[1]]#.
hintTextTable[RHT_POT_WATER_TEMPLE] = HintText(CustomMessage("They say that a #pot in Water Temple# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| SPIRIT TEMPLE | | SPIRIT TEMPLE |
---------------------------*/ ---------------------------*/
@ -1191,6 +1213,10 @@ hintTextTable[RHT_FIRE_TEMPLE_NEAR_BOSS_CHEST] = HintText(CustomMessage("They sa
/*french*/ "Selon moi, une #Skulltula sur une paroi de verre du Temple de l'Esprit# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula sur une paroi de verre du Temple de l'Esprit# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, #sobre una plataforma de cristal# yace una Skulltula que otorga #[[1]]#. // /*spanish*/ Según dicen, #sobre una plataforma de cristal# yace una Skulltula que otorga #[[1]]#.
hintTextTable[RHT_POT_SPIRIT_TEMPLE] = HintText(CustomMessage("They say that a #pot in Spirit Temple# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| SHADOW TEMPLE | | SHADOW TEMPLE |
---------------------------*/ ---------------------------*/
@ -1434,6 +1460,10 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th
/*french*/ "Selon moi, une #Skulltula près du repère du Temple de l'Ombre# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula près du repère du Temple de l'Ombre# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, una #Skulltula flotante# del Templo de las Sombras otorga #[[1]]#. // /*spanish*/ Según dicen, una #Skulltula flotante# del Templo de las Sombras otorga #[[1]]#.
hintTextTable[RHT_POT_SHADOW_TEMPLE] = HintText(CustomMessage("They say that a #pot in Shadow Temple# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| BOTTOM OF THE WELL | | BOTTOM OF THE WELL |
---------------------------*/ ---------------------------*/
@ -1552,6 +1582,10 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th
/*french*/ "Selon moi, une #Skulltula embarrée dans la crypte au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula embarrée dans la crypte au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, una #Skulltula encerrada en una cripta# del pozo otorga #[[1]]#. // /*spanish*/ Según dicen, una #Skulltula encerrada en una cripta# del pozo otorga #[[1]]#.
hintTextTable[RHT_POT_BOTTOM_OF_THE_WELL] = HintText(CustomMessage("They say that a #pot in Bottom of the Well# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
/*-------------------------- /*--------------------------
| ICE CAVERN | | ICE CAVERN |
---------------------------*/ ---------------------------*/
@ -1625,6 +1659,10 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th
/*french*/ "Selon moi, une #Skulltula figée dans la glace rouge# a #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, une #Skulltula figée dans la glace rouge# a #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, una #Skulltula tras un ardiente hielo# otorga #[[1]]#. // /*spanish*/ Según dicen, una #Skulltula tras un ardiente hielo# otorga #[[1]]#.
hintTextTable[RHT_POT_ICE_CAVERN] = HintText(CustomMessage("They say that a #pot in Ice Cavern# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", { QM_RED, QM_GREEN }));
/*-------------------------- /*--------------------------
| GERUDO TRAINING GROUNDS | | GERUDO TRAINING GROUNDS |
---------------------------*/ ---------------------------*/
@ -1995,5 +2033,9 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th
/*german*/ "Man erzählt sich, daß #Dekus in Ganons Schloß# #[[1]]# verkaufen würden.", /*german*/ "Man erzählt sich, daß #Dekus in Ganons Schloß# #[[1]]# verkaufen würden.",
/*french*/ "Selon moi, les #pestes Mojo dans le Château de Ganon# vendent #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, les #pestes Mojo dans le Château de Ganon# vendent #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, los #dekus del Castillo de Ganon# venden #[[1]]#. // /*spanish*/ Según dicen, los #dekus del Castillo de Ganon# venden #[[1]]#.
hintTextTable[RHT_POT_GANONS_CASTLE] = HintText(CustomMessage("They say that a #pot in Ganon's Castle# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
} }
} }

View File

@ -1490,5 +1490,57 @@ void StaticData::HintTable_Init_Exclude_Overworld() {
/*german*/ "Man erzählt sich, daß ein #Bienenstock hinter dem Zora-König# #[[1]]# verberge.", /*german*/ "Man erzählt sich, daß ein #Bienenstock hinter dem Zora-König# #[[1]]# verberge.",
/*french*/ "Selon moi, #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, una #colmena detrás del rey de los zoras# esconde #[[1]]#. // /*spanish*/ Según dicen, una #colmena detrás del rey de los zoras# esconde #[[1]]#.
hintTextTable[RHT_POT_KOKIRI_FOREST] = HintText(CustomMessage("They say that a #pot in Kokiri Forest# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_GERUDO_FORTRESS] = HintText(CustomMessage("They say that a #pot in Gerudo Fortress# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_WASTELAND] = HintText(CustomMessage("They say that a #pot in Haunted Wasteland# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_MARKET] = HintText(CustomMessage("They say that a #pot in Market# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_KAKARIKO] = HintText(CustomMessage("They say that a #pot in Kakariko Village# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_GRAVEYARD] = HintText(CustomMessage("They say that a #pot in Graveyard# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_GORON_CITY] = HintText(CustomMessage("They say that a #pot in Goron City# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_DEATH_MOUNTAIN_CRATER] = HintText(CustomMessage("They say that a #pot in Death Mountain Crater# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_ZORAS_DOMAIN] = HintText(CustomMessage("They say that a #pot in Zora's Domain# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_ZORAS_FOUNTAIN] = HintText(CustomMessage("They say that a #pot in Zora's Fountain# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_LON_LON_RANCH] = HintText(CustomMessage("They say that a #pot in Lon Lon Ranch# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_HYRULE_FIELD] = HintText(CustomMessage("They say that a #pot in Hyrule Field# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
hintTextTable[RHT_POT_HYRULE_CASTLE] = HintText(CustomMessage("They say that a #pot in Hyrule Castle# contains #[[1]]#.",
/*german*/ "",
/*french*/ "", {QM_RED, QM_GREEN}));
} }
} }

View File

@ -817,6 +817,43 @@ void GenerateItemPool() {
PlaceVanillaCowMilk(); PlaceVanillaCowMilk();
} }
// Shuffle Pots
if (ctx->GetOption(RSK_SHUFFLE_POTS).IsNot(RO_SHUFFLE_POTS_OFF)) {
bool overworldPotsActive = ctx->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_OVERWORLD) ||
ctx->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_ALL);
bool dungeonPotsActive = ctx->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_DUNGEONS) ||
ctx->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_ALL);
for (RandomizerCheck loc : ctx->GetLocations(ctx->allLocations, RCTYPE_POT)) {
bool overworldPot = Rando::StaticData::GetLocation(loc)->IsOverworld();
bool dungeonPot = !overworldPot;
// If pot is in the overworld and shuffled, add its item to the pool
if (overworldPotsActive && overworldPot) {
AddItemToMainPool(Rando::StaticData::GetLocation(loc)->GetVanillaItem());
} else if (dungeonPotsActive && dungeonPot) {
// If pot is the same in MQ and vanilla, add.
RandomizerCheckQuest currentQuest = Rando::StaticData::GetLocation(loc)->GetQuest();
if (currentQuest == RCQUEST_BOTH) {
AddItemToMainPool(Rando::StaticData::GetLocation(loc)->GetVanillaItem());
} else {
// Check if current pot's dungeon is vanilla or MQ, and only add if quest corresponds to it.
SceneID potScene = Rando::StaticData::GetLocation(loc)->GetScene();
for (uint8_t i = SCENE_DEKU_TREE; i <= SCENE_GERUDO_TRAINING_GROUND; i++) {
if (i == potScene) {
bool isMQ = ctx->GetDungeon(SCENE_DEKU_TREE)->IsMQ();
if ((isMQ && currentQuest == RCQUEST_MQ) || (!isMQ && currentQuest == RCQUEST_VANILLA)) {
AddItemToMainPool(Rando::StaticData::GetLocation(loc)->GetVanillaItem());
}
}
}
}
}
}
}
auto fsMode = ctx->GetOption(RSK_FISHSANITY); auto fsMode = ctx->GetOption(RSK_FISHSANITY);
if (fsMode.IsNot(RO_FISHSANITY_OFF)) { if (fsMode.IsNot(RO_FISHSANITY_OFF)) {
if (fsMode.Is(RO_FISHSANITY_POND) || fsMode.Is(RO_FISHSANITY_BOTH)) { if (fsMode.Is(RO_FISHSANITY_POND) || fsMode.Is(RO_FISHSANITY_BOTH)) {

View File

@ -31,6 +31,9 @@ void RegionTable_Init_BottomOfTheWell() {
LOCATION(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, (logic->HasItem(RG_BRONZE_SCALE) || logic->LoweredWaterInsideBotw) && logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE)), LOCATION(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, (logic->HasItem(RG_BRONZE_SCALE) || logic->LoweredWaterInsideBotw) && logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE)),
LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, logic->LoweredWaterInsideBotw), LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, logic->LoweredWaterInsideBotw),
LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, logic->LoweredWaterInsideBotw), LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, logic->LoweredWaterInsideBotw),
LOCATION(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, (logic->CanBreakPots() && logic->LoweredWaterInsideBotw) || logic->CanUse(RG_BOOMERANG)),
}, { }, {
//Exits //Exits
Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, {[]{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}}), Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, {[]{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}}),
@ -63,7 +66,12 @@ void RegionTable_Init_BottomOfTheWell() {
}); });
//this area has pots and can be reached without lens in logic from basement, but that could require silver rupees if they are shuffled. //this area has pots and can be reached without lens in logic from basement, but that could require silver rupees if they are shuffled.
areaTable[RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM] = Region("Bottom of the Well Southwest Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM] = Region("Bottom of the Well Southwest Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, {[]{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}}), Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, {[]{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}}),
}); });
@ -72,6 +80,7 @@ void RegionTable_Init_BottomOfTheWell() {
areaTable[RR_BOTTOM_OF_THE_WELL_KEESE_BEAMOS_ROOM] = Region("Bottom of the Well Keese-Beamos Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_BOTTOM_OF_THE_WELL_KEESE_BEAMOS_ROOM] = Region("Bottom of the Well Keese-Beamos Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH)), LOCATION(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH)),
LOCATION(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, logic->CanBreakPots() && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH))),
}, { }, {
//Exits //Exits
Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, {[]{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3) && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH));}}), Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, {[]{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3) && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH));}}),
@ -123,7 +132,19 @@ void RegionTable_Init_BottomOfTheWell() {
areaTable[RR_BOTTOM_OF_THE_WELL_BASEMENT] = Region("Bottom of the Well Basement", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_BOTTOM_OF_THE_WELL_BASEMENT] = Region("Bottom of the Well Basement", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, logic->BlastOrSmash()), LOCATION(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, logic->BlastOrSmash()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, {[]{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}}), Entrance(RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, {[]{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}}),
@ -160,7 +181,11 @@ void RegionTable_Init_BottomOfTheWell() {
//You have to throw the pot from further back to hit the switch from the front instead of the top, trying to hit the "fingers" directly //You have to throw the pot from further back to hit the switch from the front instead of the top, trying to hit the "fingers" directly
//This unintuitiveness means it should be a trick. ZL is needed to get a clear path to carry the pot //This unintuitiveness means it should be a trick. ZL is needed to get a clear path to carry the pot
EventAccess(&logic->LoweredWaterInsideBotw, {[]{return logic->CanJumpslash() || logic->CanUseProjectile();}}), EventAccess(&logic->LoweredWaterInsideBotw, {[]{return logic->CanJumpslash() || logic->CanUseProjectile();}}),
}, {}, { }, {
//Locations
//Implies CanBreakPots()
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, Here(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()),
}, {
//Exits //Exits
Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, {[]{return logic->IsChild;}}), Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, {[]{return logic->IsChild;}}),
Entrance(RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, {[]{return Here(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, {[]{return Here(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}}),
@ -209,7 +234,7 @@ void RegionTable_Init_BottomOfTheWell() {
areaTable[RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE] = Region("Bottom of the Well MQ Middle", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE] = Region("Bottom of the Well MQ Middle", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, true), LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, true),
//This location technically involves an invisible platform, but it's intended to do lensless in vanilla and is clearly signposted by pots. //This location technically involves an invisible platform, but it's intended to do lensless in vanilla and is clearly signposted by pots.
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, true), LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, true),
//The enemies in this room are invisible and crowd around the player, being awkward to deal with blind unless you already know how. //The enemies in this room are invisible and crowd around the player, being awkward to deal with blind unless you already know how.
@ -220,16 +245,22 @@ void RegionTable_Init_BottomOfTheWell() {
//An MQ lens trick is recommended here, and a review of this room for OHKO logic what that is added is advised. //An MQ lens trick is recommended here, and a review of this room for OHKO logic what that is added is advised.
//In the meantime I assume damage taken or the easy answer (nuts) //In the meantime I assume damage taken or the easy answer (nuts)
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)),
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, logic->CanBreakPots()),
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
//If a relevant trick causes you to be able to warp into here without going through PERIMETER, a new eventAccess will be needed for lowering the gates with ZL //If a relevant trick causes you to be able to warp into here without going through PERIMETER, a new eventAccess will be needed for lowering the gates with ZL
Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SWITCH_PLATFORM, {[]{return logic->OpenedMiddleHoleMQBotw;}}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SWITCH_PLATFORM, {[]{return logic->OpenedMiddleHoleMQBotw;}}),
Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, {[]{return true;}}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, {[]{return true;}}),
}); });
areaTable[RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT] = Region("Bottom of the Well MQ Basement", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT] = Region("Bottom of the Well MQ Basement", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
//behind invisible big skulltulas, but with navi spotting it's easy to avoid them, or at worst, take your way through as they do not block the path //behind invisible big skulltulas, but with navi spotting it's easy to avoid them, or at worst, tank your way through as they do not block the path
LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)),
}, { }, {
//Exits //Exits

View File

@ -129,6 +129,10 @@ void RegionTable_Init_CastleTown() {
//Locations //Locations
LOCATION(RC_HC_GS_STORMS_GROTTO, (logic->BlastOrSmash() && logic->HookshotOrBoomerang()) || (logic->CanUse(RG_BOOMERANG) && ctx->GetTrickOption(RT_HC_STORMS_GS))), LOCATION(RC_HC_GS_STORMS_GROTTO, (logic->BlastOrSmash() && logic->HookshotOrBoomerang()) || (logic->CanUse(RG_BOOMERANG) && ctx->GetTrickOption(RT_HC_STORMS_GS))),
LOCATION(RC_HC_STORMS_GROTTO_GOSSIP_STONE, logic->BlastOrSmash()), LOCATION(RC_HC_STORMS_GROTTO_GOSSIP_STONE, logic->BlastOrSmash()),
LOCATION(RC_HC_STORMS_GROTTO_POT_1, logic->BlastOrSmash() && logic->CanBreakPots()),
LOCATION(RC_HC_STORMS_GROTTO_POT_2, logic->BlastOrSmash() && logic->CanBreakPots()),
LOCATION(RC_HC_STORMS_GROTTO_POT_3, logic->BlastOrSmash() && logic->CanBreakPots()),
LOCATION(RC_HC_STORMS_GROTTO_POT_4, logic->BlastOrSmash() && logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_CASTLE_GROUNDS, {[]{return true;}}), Entrance(RR_CASTLE_GROUNDS, {[]{return true;}}),
@ -172,8 +176,63 @@ void RegionTable_Init_CastleTown() {
EventAccess(&logic->CanEmptyBigPoes, {[]{return logic->IsAdult;}}), EventAccess(&logic->CanEmptyBigPoes, {[]{return logic->IsAdult;}}),
}, { }, {
//Locations //Locations
LOCATION(RC_MARKET_10_BIG_POES, logic->IsAdult && logic->BigPoeKill), LOCATION(RC_MARKET_10_BIG_POES, logic->IsAdult && logic->BigPoeKill),
LOCATION(RC_MARKET_GS_GUARD_HOUSE, logic->IsChild), LOCATION(RC_MARKET_GS_GUARD_HOUSE, logic->IsChild),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_2, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_3, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_4, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_5, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_6, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_7, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_8, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_9, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_10, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_11, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_12, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_13, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_14, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_15, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_16, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_17, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_18, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_19, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_20, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_21, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_22, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_23, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_24, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_25, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_26, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_27, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_28, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_29, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_30, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_31, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_32, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_33, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_34, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_35, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_36, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_37, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_38, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_39, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_40, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_41, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_42, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_43, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_CHILD_POT_44, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_1, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_2, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_3, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_4, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_5, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_6, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_7, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_8, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_9, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_10, logic->IsAdult && logic->CanBreakPots()),
LOCATION(RC_MK_GUARD_HOUSE_ADULT_POT_11, logic->IsAdult && logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_MARKET_ENTRANCE, {[]{return true;}}), Entrance(RR_MARKET_ENTRANCE, {[]{return true;}}),
@ -282,7 +341,12 @@ void RegionTable_Init_CastleTown() {
Entrance(RR_MARKET_BACK_ALLEY, {[]{return true;}}), Entrance(RR_MARKET_BACK_ALLEY, {[]{return true;}}),
}); });
areaTable[RR_MARKET_MAN_IN_GREEN_HOUSE] = Region("Market Man in Green House", "Market Man in Green House", {}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_MARKET_MAN_IN_GREEN_HOUSE] = Region("Market Man in Green House", "Market Man in Green House", {}, NO_DAY_NIGHT_CYCLE, {}, {
// Locations
LOCATION(RC_MK_BACK_ALLEY_HOUSE_POT_1, logic->CanBreakPots()),
LOCATION(RC_MK_BACK_ALLEY_HOUSE_POT_2, logic->CanBreakPots()),
LOCATION(RC_MK_BACK_ALLEY_HOUSE_POT_3, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_MARKET_BACK_ALLEY, {[]{return true;}}), Entrance(RR_MARKET_BACK_ALLEY, {[]{return true;}}),
}); });

View File

@ -100,6 +100,13 @@ void RegionTable_Init_DeathMountain() {
LOCATION(RC_GC_MEDIGORON, logic->IsAdult && (logic->BlastOrSmash() || logic->HasItem(RG_GORONS_BRACELET))), LOCATION(RC_GC_MEDIGORON, logic->IsAdult && (logic->BlastOrSmash() || logic->HasItem(RG_GORONS_BRACELET))),
LOCATION(RC_GC_MAZE_GOSSIP_STONE, logic->BlastOrSmash() || logic->CanUse(RG_SILVER_GAUNTLETS)), LOCATION(RC_GC_MAZE_GOSSIP_STONE, logic->BlastOrSmash() || logic->CanUse(RG_SILVER_GAUNTLETS)),
LOCATION(RC_GC_MEDIGORON_GOSSIP_STONE, logic->BlastOrSmash() || logic->HasItem(RG_GORONS_BRACELET)), LOCATION(RC_GC_MEDIGORON_GOSSIP_STONE, logic->BlastOrSmash() || logic->HasItem(RG_GORONS_BRACELET)),
LOCATION(RC_GC_LOWER_STAIRCASE_POT_1, logic->CanBreakPots()),
LOCATION(RC_GC_LOWER_STAIRCASE_POT_2, logic->CanBreakPots()),
LOCATION(RC_GC_UPPER_STAIRCASE_POT_1, logic->CanBreakPots()),
LOCATION(RC_GC_UPPER_STAIRCASE_POT_2, logic->CanBreakPots()),
LOCATION(RC_GC_UPPER_STAIRCASE_POT_3, logic->CanBreakPots()),
// Implied CanBreakPots as when we shuffle strength 0 in the future, the GORONS_BRACELET check will have to check for specifically strength 1 anyway.
LOCATION(RC_GC_MEDIGORON_POT_1, logic->BlastOrSmash() || logic->HasItem(RG_GORONS_BRACELET)),
}, { }, {
//Exits //Exits
Entrance(RR_DEATH_MOUNTAIN_TRAIL, {[]{return true;}}), Entrance(RR_DEATH_MOUNTAIN_TRAIL, {[]{return true;}}),
@ -123,7 +130,10 @@ void RegionTable_Init_DeathMountain() {
EventAccess(&logic->GoronCityChildFire, {[]{return logic->GoronCityChildFire || (logic->IsChild && logic->CanUse(RG_STICKS));}}), EventAccess(&logic->GoronCityChildFire, {[]{return logic->GoronCityChildFire || (logic->IsChild && logic->CanUse(RG_STICKS));}}),
}, { }, {
//Locations //Locations
LOCATION(RC_GC_DARUNIAS_JOY, logic->IsChild && logic->CanUse(RG_SARIAS_SONG)), LOCATION(RC_GC_DARUNIAS_JOY, logic->IsChild && logic->CanUse(RG_SARIAS_SONG)),
LOCATION(RC_GC_DARUNIA_POT_1, logic->CanBreakPots()),
LOCATION(RC_GC_DARUNIA_POT_2, logic->CanBreakPots()),
LOCATION(RC_GC_DARUNIA_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_GORON_CITY, {[]{return true;}}), Entrance(RR_GORON_CITY, {[]{return true;}}),
@ -194,7 +204,13 @@ void RegionTable_Init_DeathMountain() {
Entrance(RR_DMC_LOWER_NEARBY, {[]{return logic->Hearts() >= 3 && (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_DMC_BOULDER_JS) && logic->IsAdult && logic->CanUse(RG_MEGATON_HAMMER)) || (ctx->GetTrickOption(RT_DMC_BOULDER_SKIP) && logic->IsAdult));}}), Entrance(RR_DMC_LOWER_NEARBY, {[]{return logic->Hearts() >= 3 && (logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_DMC_BOULDER_JS) && logic->IsAdult && logic->CanUse(RG_MEGATON_HAMMER)) || (ctx->GetTrickOption(RT_DMC_BOULDER_SKIP) && logic->IsAdult));}}),
}); });
areaTable[RR_DMC_LOWER_NEARBY] = Region("DMC Lower Nearby", "Death Mountain Crater", {RA_DEATH_MOUNTAIN_CRATER}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DMC_LOWER_NEARBY] = Region("DMC Lower Nearby", "Death Mountain Crater", {RA_DEATH_MOUNTAIN_CRATER}, NO_DAY_NIGHT_CYCLE, {}, {
// Locations
LOCATION(RC_DMC_NEAR_GC_POT_1, logic->CanBreakPots()),
LOCATION(RC_DMC_NEAR_GC_POT_2, logic->CanBreakPots()),
LOCATION(RC_DMC_NEAR_GC_POT_3, logic->CanBreakPots()),
LOCATION(RC_DMC_NEAR_GC_POT_4, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DMC_LOWER_LOCAL, {[]{return logic->FireTimer() >= 48;}}), Entrance(RR_DMC_LOWER_LOCAL, {[]{return logic->FireTimer() >= 48;}}),
Entrance(RR_GC_DARUNIAS_CHAMBER, {[]{return true;}}), Entrance(RR_GC_DARUNIAS_CHAMBER, {[]{return true;}}),

View File

@ -53,6 +53,12 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_SE_CORRIDOR] = Region("Dodongos Cavern SE Corridor", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_DODONGOS_CAVERN_SE_CORRIDOR] = Region("Dodongos Cavern SE Corridor", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_GS_SCARECROW, logic->CanUse(RG_SCARECROW) || (logic->IsAdult && logic->CanUse(RG_LONGSHOT)) || (ctx->GetTrickOption(RT_DC_SCARECROW_GS) && (logic->CanAttack()))), LOCATION(RC_DODONGOS_CAVERN_GS_SCARECROW, logic->CanUse(RG_SCARECROW) || (logic->IsAdult && logic->CanUse(RG_LONGSHOT)) || (ctx->GetTrickOption(RT_DC_SCARECROW_GS) && (logic->CanAttack()))),
LOCATION(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_LOBBY, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_LOBBY, {[]{return true;}}),
@ -75,7 +81,13 @@ void RegionTable_Init_DodongosCavern() {
Entrance(RR_DODONGOS_CAVERN_LOWER_LIZALFOS, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_LOWER_LIZALFOS, {[]{return true;}}),
}); });
areaTable[RR_DODONGOS_CAVERN_LOWER_LIZALFOS] = Region("Dodongos Cavern Lower Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_LOWER_LIZALFOS] = Region("Dodongos Cavern Lower Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_LIZALFOS_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_LIZALFOS_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_LIZALFOS_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_LIZALFOS_POT_4, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_NEAR_LOWER_LIZALFOS, {[]{return Here(RR_DODONGOS_CAVERN_LOWER_LIZALFOS, []{return logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || Entrance(RR_DODONGOS_CAVERN_NEAR_LOWER_LIZALFOS, {[]{return Here(RR_DODONGOS_CAVERN_LOWER_LIZALFOS, []{return logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) ||
logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->HasExplosives();});}}), logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->HasExplosives();});}}),
@ -83,7 +95,13 @@ void RegionTable_Init_DodongosCavern() {
logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->HasExplosives();});}}), logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->HasExplosives();});}}),
}); });
areaTable[RR_DODONGOS_CAVERN_DODONGO_ROOM] = Region("Dodongos Cavern Dodongo Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_DODONGO_ROOM] = Region("Dodongos Cavern Dodongo Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_LOBBY_SWITCH, {[]{return logic->HasFireSourceWithTorch();}}), Entrance(RR_DODONGOS_CAVERN_LOBBY_SWITCH, {[]{return logic->HasFireSourceWithTorch();}}),
Entrance(RR_DODONGOS_CAVERN_LOWER_LIZALFOS, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_LOWER_LIZALFOS, {[]{return true;}}),
@ -109,6 +127,10 @@ void RegionTable_Init_DodongosCavern() {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS, Here(RR_DODONGOS_CAVERN_FAR_BRIDGE, []{return logic->HookshotOrBoomerang();}) || logic->CanUse(RG_LONGSHOT)), LOCATION(RC_DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS, Here(RR_DODONGOS_CAVERN_FAR_BRIDGE, []{return logic->HookshotOrBoomerang();}) || logic->CanUse(RG_LONGSHOT)),
LOCATION(RC_DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS, logic->IsAdult || logic->CanAttack() || (HasAccessTo(RR_DODONGOS_CAVERN_STAIRS_LOWER) && logic->CanUse(RG_LONGSHOT) && ctx->GetTrickOption(RT_DC_VINES_GS))), LOCATION(RC_DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS, logic->IsAdult || logic->CanAttack() || (HasAccessTo(RR_DODONGOS_CAVERN_STAIRS_LOWER) && logic->CanUse(RG_LONGSHOT) && ctx->GetTrickOption(RT_DC_VINES_GS))),
LOCATION(RC_DODONGOS_CAVERN_STAIRCASE_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_STAIRCASE_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_STAIRCASE_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_STAIRCASE_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_STAIRS_LOWER, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_STAIRS_LOWER, {[]{return true;}}),
@ -148,7 +170,11 @@ void RegionTable_Init_DodongosCavern() {
Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, {[]{return true;}}),
}); });
areaTable[RR_DODONGOS_CAVERN_FIRST_SLINGSHOT_ROOM] = Region("Dodongos Cavern First Slingshot Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_FIRST_SLINGSHOT_ROOM] = Region("Dodongos Cavern First Slingshot Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, {[]{return true;}}),
Entrance(RR_DODONGOS_CAVERN_UPPER_LIZALFOS, {[]{return logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW) || ctx->GetTrickOption(RT_DC_SLINGSHOT_SKIP);}}), Entrance(RR_DODONGOS_CAVERN_UPPER_LIZALFOS, {[]{return logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW) || ctx->GetTrickOption(RT_DC_SLINGSHOT_SKIP);}}),
@ -163,7 +189,11 @@ void RegionTable_Init_DodongosCavern() {
logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->HasExplosives();});}}), logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER) || logic->HasExplosives();});}}),
}); });
areaTable[RR_DODONGOS_CAVERN_SECOND_SLINGSHOT_ROOM] = Region("Dodongos Cavern Second Slingshot Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_SECOND_SLINGSHOT_ROOM] = Region("Dodongos Cavern Second Slingshot Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Location
LOCATION(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_UPPER_LIZALFOS, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_UPPER_LIZALFOS, {[]{return true;}}),
Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_UPPER, {[]{return logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW) || ctx->GetTrickOption(RT_DC_SLINGSHOT_SKIP);}}), Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_UPPER, {[]{return logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW) || ctx->GetTrickOption(RT_DC_SLINGSHOT_SKIP);}}),
@ -172,6 +202,8 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_BOMB_ROOM_UPPER] = Region("Dodongos Cavern Bomb Room Upper", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_DODONGOS_CAVERN_BOMB_ROOM_UPPER] = Region("Dodongos Cavern Bomb Room Upper", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_BOMB_BAG_CHEST, true), LOCATION(RC_DODONGOS_CAVERN_BOMB_BAG_CHEST, true),
LOCATION(RC_DODONGOS_CAVERN_BLADE_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_BLADE_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_BOMB_ROOM_LOWER, {[]{return true;}}),
@ -201,6 +233,10 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_BACK_ROOM] = Region("Dodongos Cavern Back Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_DODONGOS_CAVERN_BACK_ROOM] = Region("Dodongos Cavern Back Room", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_GS_BACK_ROOM, logic->CanAttack()), LOCATION(RC_DODONGOS_CAVERN_GS_BACK_ROOM, logic->CanAttack()),
LOCATION(RC_DODONGOS_CAVERN_BACK_ROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_BACK_ROOM_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_BACK_ROOM_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_BACK_ROOM_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_BOSS_AREA, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_BOSS_AREA, {[]{return true;}}),
@ -253,7 +289,13 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_MQ_STAIRS_LOWER] = Region("Dodongos Cavern MQ Stairs Lower", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_DODONGOS_CAVERN_MQ_STAIRS_LOWER] = Region("Dodongos Cavern MQ Stairs Lower", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
//EventAccess(&logic->CanClimbDCStairs, {[]{return logic->HasExplosives || logic->CanUse(RG_DINS_FIRE) || (ctx->GetTrickOption(RT_DC_STAIRCASE) && logic->CanUse(RG_FAIRY_BOW));}}), //EventAccess(&logic->CanClimbDCStairs, {[]{return logic->HasExplosives || logic->CanUse(RG_DINS_FIRE) || (ctx->GetTrickOption(RT_DC_STAIRCASE) && logic->CanUse(RG_FAIRY_BOW));}}),
}, {}, { }, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, logic->CanBreakPots()),
}, {
//Exits //Exits
//This is possible with sticks and shield, igniting a first flower by "touch" then very quickly crouch stabbing in a way that cuts the corner to light the 3rd bomb on the other side, but that's a trick //This is possible with sticks and shield, igniting a first flower by "touch" then very quickly crouch stabbing in a way that cuts the corner to light the 3rd bomb on the other side, but that's a trick
Entrance(RR_DODONGOS_CAVERN_MQ_STAIRS_UPPER, {[]{return Here(RR_DODONGOS_CAVERN_MQ_STAIRS_LOWER, []{return logic->HasExplosives() || logic->CanUse(RG_DINS_FIRE) || Entrance(RR_DODONGOS_CAVERN_MQ_STAIRS_UPPER, {[]{return Here(RR_DODONGOS_CAVERN_MQ_STAIRS_LOWER, []{return logic->HasExplosives() || logic->CanUse(RG_DINS_FIRE) ||
@ -305,7 +347,10 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER] = Region("Dodongos Cavern MQ Torch Puzzle Lower", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER] = Region("Dodongos Cavern MQ Torch Puzzle Lower", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->ClearMQDCUpperLobbyRocks, {[]{return (((logic->IsAdult /*or bunny hood jump*/) && ctx->GetTrickOption(RT_DC_JUMP)) || logic->CanUse(RG_HOVER_BOOTS)) && logic->CanUse(RG_STICKS);}}), EventAccess(&logic->ClearMQDCUpperLobbyRocks, {[]{return (((logic->IsAdult /*or bunny hood jump*/) && ctx->GetTrickOption(RT_DC_JUMP)) || logic->CanUse(RG_HOVER_BOOTS)) && logic->CanUse(RG_STICKS);}}),
}, {}, { }, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT, logic->CanUse(RG_BOOMERANG)),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_LOBBY, {[]{return logic->TakeDamage();}}), Entrance(RR_DODONGOS_CAVERN_MQ_LOBBY, {[]{return logic->TakeDamage();}}),
Entrance(RR_DODONGOS_CAVERN_MQ_DODONGO_ROOM, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_MQ_DODONGO_ROOM, {[]{return true;}}),
@ -315,7 +360,11 @@ void RegionTable_Init_DodongosCavern() {
Entrance(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, {[]{return logic->CanUse(RG_STICKS) && logic->HasItem(RG_GORONS_BRACELET);}}), //Implies access to RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM from here Entrance(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, {[]{return logic->CanUse(RG_STICKS) && logic->HasItem(RG_GORONS_BRACELET);}}), //Implies access to RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM from here
}); });
areaTable[RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM] = Region("Dodongos Cavern MQ Torch Puzzle Lower", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM] = Region("Dodongos Cavern MQ Torch Puzzle Lower", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER, {[]{return logic->CanPassEnemy(RE_BIG_SKULLTULA);}}), Entrance(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER, {[]{return logic->CanPassEnemy(RE_BIG_SKULLTULA);}}),
Entrance(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, {[]{return (logic->HasFireSource() && logic->HasItem(RG_GORONS_BRACELET)) || logic->CanBreakMudWalls();}}), //Requires stregnth 0, If you can somehow warp into this room, add logic->CanPassEnemy(RE_BIG_SKULLTULA) Entrance(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, {[]{return (logic->HasFireSource() && logic->HasItem(RG_GORONS_BRACELET)) || logic->CanBreakMudWalls();}}), //Requires stregnth 0, If you can somehow warp into this room, add logic->CanPassEnemy(RE_BIG_SKULLTULA)
@ -332,7 +381,11 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS] = Region("Dodongos Cavern MQ Before Upper Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS] = Region("Dodongos Cavern MQ Before Upper Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM, logic->BlastOrSmash()), //Implied CanGetEnemyDrop(RE_GOLD_SKULLTULA) LOCATION(RC_DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM, logic->BlastOrSmash()), //Implied CanGetEnemyDrop(RE_GOLD_SKULLTULA)
LOCATION(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
//Falling down gets you stuck with nothing there, not a useful exit for logic //Falling down gets you stuck with nothing there, not a useful exit for logic
@ -340,7 +393,11 @@ void RegionTable_Init_DodongosCavern() {
Entrance(RR_DODONGOS_CAVERN_MQ_TWO_FIRES_ROOM, {[]{return Here(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, []{return logic->CanKillEnemy(RE_LIZALFOS);});}}), Entrance(RR_DODONGOS_CAVERN_MQ_TWO_FIRES_ROOM, {[]{return Here(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, []{return logic->CanKillEnemy(RE_LIZALFOS);});}}),
}); });
areaTable[RR_DODONGOS_CAVERN_MQ_TWO_FIRES_ROOM] = Region("Dodongos Cavern MQ Before Upper Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_MQ_TWO_FIRES_ROOM] = Region("Dodongos Cavern MQ Before Upper Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, {[]{return true;}}),
Entrance(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_UPPER, {[]{return logic->IsAdult || (Here(RR_DODONGOS_CAVERN_MQ_TWO_FIRES_ROOM, []{return logic->BlastOrSmash() || (logic->CanAttack() && logic->HasItem(RG_GORONS_BRACELET));}));}}), Entrance(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_UPPER, {[]{return logic->IsAdult || (Here(RR_DODONGOS_CAVERN_MQ_TWO_FIRES_ROOM, []{return logic->BlastOrSmash() || (logic->CanAttack() && logic->HasItem(RG_GORONS_BRACELET));}));}}),
@ -352,6 +409,8 @@ void RegionTable_Init_DodongosCavern() {
}, { }, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST, true), LOCATION(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST, true),
LOCATION(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_MOUTH_SIDE_BRIDGE, {[]{return logic->ClearMQDCUpperLobbyRocks;}}), Entrance(RR_DODONGOS_CAVERN_MQ_MOUTH_SIDE_BRIDGE, {[]{return logic->ClearMQDCUpperLobbyRocks;}}),
@ -362,13 +421,18 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE] = Region("Dodongos Cavern MQ Lower Right Side", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE] = Region("Dodongos Cavern MQ Lower Right Side", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, (logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET)) && logic->CanStunDeku()), LOCATION(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, (logic->CanBreakMudWalls() || logic->HasItem(RG_GORONS_BRACELET)) && logic->CanStunDeku()),
LOCATION(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_LOBBY, {[]{return true;}}),
Entrance(RR_DODONGOS_CAVERN_MQ_LOWER_LIZALFOS, {[]{return Here(RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE, []{return logic->CanDetonateBombFlowers() || logic->HasItem(RG_GORONS_BRACELET);}) && logic->CanHitEyeTargets();}}), Entrance(RR_DODONGOS_CAVERN_MQ_LOWER_LIZALFOS, {[]{return Here(RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE, []{return logic->CanDetonateBombFlowers() || logic->HasItem(RG_GORONS_BRACELET);}) && logic->CanHitEyeTargets();}}),
}); });
areaTable[RR_DODONGOS_CAVERN_MQ_LOWER_LIZALFOS] = Region("Dodongos Cavern MQ Lower Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_DODONGOS_CAVERN_MQ_LOWER_LIZALFOS] = Region("Dodongos Cavern MQ Lower Lizalfos", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {
//When you add wonder item logic for behind the lavafall, use Here(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS) to account for jumping down instead of an exit //When you add wonder item logic for behind the lavafall, place the item both here and in RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS
//because the doors are sealed when entering from the top and you can't spawn the lower lizalfos //because the doors are sealed when entering from the top and you can't spawn the lower lizalfos
}, {}, { }, {}, {
//Exits //Exits
@ -382,6 +446,10 @@ void RegionTable_Init_DodongosCavern() {
LOCATION(RC_DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM, (Here(RR_DODONGOS_CAVERN_MQ_POES_ROOM, []{return logic->CanDetonateBombFlowers() || logic->HasItem(RG_GORONS_BRACELET);}) && //could be a seperate room if it gets busy LOCATION(RC_DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM, (Here(RR_DODONGOS_CAVERN_MQ_POES_ROOM, []{return logic->CanDetonateBombFlowers() || logic->HasItem(RG_GORONS_BRACELET);}) && //could be a seperate room if it gets busy
logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG, true))), //Implies you can avoid/kill the enemies with what you use on the skull, if this assumption is broken, add logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG, true))), //Implies you can avoid/kill the enemies with what you use on the skull, if this assumption is broken, add
//&& (Here(RR_DODONGOS_CAVERN_MQ_POES_ROOM, []{return logic->CanKillEnemy(RE_FIRE_KEESE) && logic->CanKillEnemy(RE_MAD_SCRUB);}) || (logic->CanAvoidEnemy(RE_FIRE_KEESE) && logic->CanAvoidEnemy(RE_MAD_SCRUB))) //&& (Here(RR_DODONGOS_CAVERN_MQ_POES_ROOM, []{return logic->CanKillEnemy(RE_FIRE_KEESE) && logic->CanKillEnemy(RE_MAD_SCRUB);}) || (logic->CanAvoidEnemy(RE_FIRE_KEESE) && logic->CanAvoidEnemy(RE_MAD_SCRUB)))
LOCATION(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE, {[]{return Here(RR_DODONGOS_CAVERN_MQ_POES_ROOM, []{return logic->CanDetonateBombFlowers() || logic->HasItem(RG_GORONS_BRACELET);});}}), Entrance(RR_DODONGOS_CAVERN_MQ_LOWER_RIGHT_SIDE, {[]{return Here(RR_DODONGOS_CAVERN_MQ_POES_ROOM, []{return logic->CanDetonateBombFlowers() || logic->HasItem(RG_GORONS_BRACELET);});}}),
@ -398,7 +466,13 @@ void RegionTable_Init_DodongosCavern() {
Entrance(RR_DODONGOS_CAVERN_MQ_POES_ROOM, {[]{return Here(RR_DODONGOS_CAVERN_MQ_MAD_SCRUB_ROOM, []{return logic->CanKillEnemy(RE_FIRE_KEESE) && logic->CanKillEnemy(RE_MAD_SCRUB);});}}), Entrance(RR_DODONGOS_CAVERN_MQ_POES_ROOM, {[]{return Here(RR_DODONGOS_CAVERN_MQ_MAD_SCRUB_ROOM, []{return logic->CanKillEnemy(RE_FIRE_KEESE) && logic->CanKillEnemy(RE_MAD_SCRUB);});}}),
}); });
areaTable[RR_DODONGOS_CAVERN_MQ_BEHIND_MOUTH] = Region("Dodongos Cavern MQ Behind Mouth", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_MQ_BEHIND_MOUTH] = Region("Dodongos Cavern MQ Behind Mouth", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_LOBBY, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_MQ_LOBBY, {[]{return true;}}),
//using pots to get past the fire is in default logic. if stregnth 0 gets added, this will need to be: //using pots to get past the fire is in default logic. if stregnth 0 gets added, this will need to be:
@ -410,6 +484,8 @@ void RegionTable_Init_DodongosCavern() {
areaTable[RR_DODONGOS_CAVERN_MQ_BACK_BEHIND_FIRE] = Region("Dodongos Cavern MQ Back Behind Fire", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_DODONGOS_CAVERN_MQ_BACK_BEHIND_FIRE] = Region("Dodongos Cavern MQ Back Behind Fire", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST, true), //pulling the grave isn't required, as you can open the chest through it LOCATION(RC_DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST, true), //pulling the grave isn't required, as you can open the chest through it
LOCATION(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_BEHIND_MOUTH, {[]{return logic->CanAttack();}}), Entrance(RR_DODONGOS_CAVERN_MQ_BEHIND_MOUTH, {[]{return logic->CanAttack();}}),
@ -423,9 +499,11 @@ void RegionTable_Init_DodongosCavern() {
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, { }, {
//Locations //Locations
LOCATION(RC_DODONGOS_CAVERN_MQ_GS_BACK_AREA, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA) || logic->HasItem(RG_GORONS_BRACELET) || //even if you somehow warp to BACK_BEHIND_FIRE, if you can kill the skull at range, you can get to BEHIND_MOUTH LOCATION(RC_DODONGOS_CAVERN_MQ_GS_BACK_AREA, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA) || logic->HasItem(RG_GORONS_BRACELET) || //even if you somehow warp to BACK_BEHIND_FIRE, if you can kill the skull at range, you can get to BEHIND_MOUTH
Here(RR_DODONGOS_CAVERN_MQ_BEHIND_MOUTH, []{return (logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)) || Here(RR_DODONGOS_CAVERN_MQ_BEHIND_MOUTH, []{return (logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)) ||
(logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) /* || bunny jumps*/);})), (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) /* || bunny jumps*/);})),
LOCATION(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT, logic->CanBreakPots()),
LOCATION(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_DODONGOS_CAVERN_MQ_BACK_BEHIND_FIRE, {[]{return true;}}), Entrance(RR_DODONGOS_CAVERN_MQ_BACK_BEHIND_FIRE, {[]{return true;}}),

View File

@ -35,6 +35,10 @@ void RegionTable_Init_FireTemple() {
}, { }, {
//Locations //Locations
LOCATION(RC_FIRE_TEMPLE_NEAR_BOSS_CHEST, true), LOCATION(RC_FIRE_TEMPLE_NEAR_BOSS_CHEST, true),
LOCATION(RC_FIRE_TEMPLE_NEAR_BOSS_POT_1, (logic->CanBreakPots() && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)))),
LOCATION(RC_FIRE_TEMPLE_NEAR_BOSS_POT_2, (logic->CanBreakPots() && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)))),
LOCATION(RC_FIRE_TEMPLE_NEAR_BOSS_POT_3, (logic->CanBreakPots() && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)))),
LOCATION(RC_FIRE_TEMPLE_NEAR_BOSS_POT_4, (logic->CanBreakPots() && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)))),
}, { }, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_FIRST_ROOM, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_FIRST_ROOM, {[]{return true;}}),
@ -90,7 +94,12 @@ void RegionTable_Init_FireTemple() {
Entrance(RR_FIRE_TEMPLE_LOOP_GORON_ROOM, {[]{return logic->FireLoopSwitch;}}), Entrance(RR_FIRE_TEMPLE_LOOP_GORON_ROOM, {[]{return logic->FireLoopSwitch;}}),
}); });
areaTable[RR_FIRE_TEMPLE_BIG_LAVA_ROOM] = Region("Fire Temple Big Lava Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FIRE_TEMPLE_BIG_LAVA_ROOM] = Region("Fire Temple Big Lava Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_FIRE_TEMPLE_BIG_LAVA_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_BIG_LAVA_POT_2, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_BIG_LAVA_POT_3, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_FIRST_ROOM, {[]{return logic->SmallKeys(RR_FIRE_TEMPLE, 2);}}), Entrance(RR_FIRE_TEMPLE_FIRST_ROOM, {[]{return logic->SmallKeys(RR_FIRE_TEMPLE, 2);}}),
Entrance(RR_FIRE_TEMPLE_BIG_LAVA_ROOM_NORTH_GORON, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_BIG_LAVA_ROOM_NORTH_GORON, {[]{return true;}}),
@ -267,7 +276,17 @@ void RegionTable_Init_FireTemple() {
Entrance(RR_FIRE_TEMPLE_WEST_CENTRAL_LOWER, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_WEST_CENTRAL_LOWER, {[]{return true;}}),
}); });
areaTable[RR_FIRE_TEMPLE_LATE_FIRE_MAZE] = Region("Fire Temple Late Fire Maze", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FIRE_TEMPLE_LATE_FIRE_MAZE] = Region("Fire Temple Late Fire Maze", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
// Locations
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_FIRE_MAZE_ROOM, {[]{return false;}}), Entrance(RR_FIRE_TEMPLE_FIRE_MAZE_ROOM, {[]{return false;}}),
Entrance(RR_FIRE_TEMPLE_WEST_CENTRAL_LOWER, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_WEST_CENTRAL_LOWER, {[]{return true;}}),
@ -314,8 +333,12 @@ void RegionTable_Init_FireTemple() {
| MASTER QUEST DUNGEON | | MASTER QUEST DUNGEON |
---------------------------*/ ---------------------------*/
if (ctx->GetDungeon(FIRE_TEMPLE)->IsMQ()) { if (ctx->GetDungeon(FIRE_TEMPLE)->IsMQ()) {
//potentially dangerous temp flag on the first room's torches, should be made parament if possible //potentially dangerous temp flag on the first room's torches, should be made permanent if possible
areaTable[RR_FIRE_TEMPLE_MQ_FIRST_ROOM_LOWER] = Region("Fire Temple MQ First Room Lower", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FIRE_TEMPLE_MQ_FIRST_ROOM_LOWER] = Region("Fire Temple MQ First Room Lower", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_ENTRYWAY, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_ENTRYWAY, {[]{return true;}}),
Entrance(RR_FIRE_TEMPLE_MQ_MAP_ROOM_SOUTH, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_MAP_ROOM_SOUTH, {[]{return true;}}),
@ -348,7 +371,17 @@ void RegionTable_Init_FireTemple() {
areaTable[RR_FIRE_TEMPLE_MQ_IRON_KNUCKLE_ROOM] = Region("Fire Temple MQ Iron Knuckle Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_FIRE_TEMPLE_MQ_IRON_KNUCKLE_ROOM] = Region("Fire Temple MQ Iron Knuckle Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, {}, { }, {
//Locations
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_MQ_STALFOS_ROOM, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_STALFOS_ROOM, {[]{return true;}}),
Entrance(RR_FIRE_TEMPLE_MQ_LOWER_FLARE_DANCER, {[]{return Here(RR_FIRE_TEMPLE_MQ_FIRST_ROOM_LOWER, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE);});}}), Entrance(RR_FIRE_TEMPLE_MQ_LOWER_FLARE_DANCER, {[]{return Here(RR_FIRE_TEMPLE_MQ_FIRST_ROOM_LOWER, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE);});}}),
@ -383,39 +416,54 @@ void RegionTable_Init_FireTemple() {
areaTable[RR_FIRE_TEMPLE_NEAR_BOSS_ROOM] = Region("Fire Temple MQ Near Boss Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_FIRE_TEMPLE_NEAR_BOSS_ROOM] = Region("Fire Temple MQ Near Boss Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
//Child cannot make it to the north side torches without a hook without specifically bunny hood speed + hover boots //If we're using the south torch as the initial torch, or using FAs, we either have to cross to the north to remove the crate, or use a trick to ignore it
//The Damage logic here is for crossing to the north torches with hookshot, then using dins there before jumping down and running across the lava to get in dins range of the south torch LOCATION(RC_FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, logic->FireTimer() > 25 && ctx->GetTrickOption(RT_FIRE_MQ_NEAR_BOSS) &&
//Fairies cannot be used for this as it is time sensetive, and NL is only useful with sticks as it disables other magic while in use, so it's tunic or raw damage taking ability. (logic->CanUse(RG_FIRE_ARROWS) || (logic->IsAdult && logic->CanUse(RG_DINS_FIRE) && logic->CanUse(RG_FAIRY_BOW))))
//testing tells me you take 3 ticks of lava damage, which is 12 internal damage or 3/4 of a heart at x1 damage multiplier, performing this run
//logic->EffectiveHealth() works in half hearts for whatever reason, meaning this needs a deeper refactor to be perfect, but it should be good enough for now
LOCATION(RC_FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, //Using the south torch as the initial torch, or using FAs, we first have to sort the crate...
//If we don't go out of the way to break the box it's reasonable to do things in ~25 seconds, otherwise it takes about 40
(logic->FireTimer() > (ctx->GetTrickOption(RT_FIRE_MQ_NEAR_BOSS) ? 25 : 40) &&
(ctx->GetTrickOption(RT_FIRE_MQ_NEAR_BOSS) || logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS))) &&
//then use FA's, or dins + bow as adult. Child can only do a torch shot from the north side upper torch so will be handled in the lower case to avoid RT_FIRE_MQ_NEAR_BOSS issues
(logic->CanUse(RG_FIRE_ARROWS) || (logic->IsAdult && logic->CanUse(RG_DINS_FIRE) && logic->CanUse(RG_FAIRY_BOW)))) ||
//If we're starting with the north torches, we need to get across first, and light them
//Pretty much all these methods take ~20-30 seconds
(logic->FireTimer() > 30 &&
(logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS))) && logic->CanUse(RG_DINS_FIRE) &&
//then we need to either use a bow to shoot back across, or somehow get back to use dins again. Alternatively we can use Sticks as adult and NL
(logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_LONGSHOT) || (logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_GORON_TUNIC) || logic->EffectiveHealth() >= 2 || (logic->CanUse(RG_NAYRUS_LOVE) && logic->CanUse(RG_STICKS)))))))
}, { }, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_MQ_FIRST_ROOM_UPPER, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_FIRST_ROOM_UPPER, {[]{return true;}}),
//Child cannot make it to the north side torches without a hook without specifically bunny hood speed + hover boots
Entrance(RR_FIRE_TEMPLE_NEAR_BOSS_ROOM_NORTH, {[]{return logic->FireTimer() > 32 && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)));}}),
Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, {[]{return logic->HasItem(RG_FIRE_TEMPLE_BOSS_KEY) && logic->FireTimer() >= 15 && Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, {[]{return logic->HasItem(RG_FIRE_TEMPLE_BOSS_KEY) && logic->FireTimer() >= 15 &&
((logic->IsAdult && (ctx->GetTrickOption(RT_FIRE_BOSS_DOOR_JUMP) || logic->CanUse(RG_HOVER_BOOTS))) || ((logic->IsAdult && (ctx->GetTrickOption(RT_FIRE_BOSS_DOOR_JUMP) || logic->CanUse(RG_HOVER_BOOTS))) ||
(logic->IsAdult && logic->HitFireTemplePlatform) || (logic->IsAdult && logic->HitFireTemplePlatform) ||
(logic->HitFireTemplePlatform && logic->CanUse(RG_HOVER_BOOTS))) (logic->HitFireTemplePlatform && logic->CanUse(RG_HOVER_BOOTS)))
;}}), ;}}),
}); });
//This room assumes tunic logic is handled on entry.
//Covers the upper section too, as all methods to reach this can climb up somehow
areaTable[RR_FIRE_TEMPLE_NEAR_BOSS_ROOM_NORTH] = Region("Fire Temple MQ Near Boss Room North", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
//If we have FAs, we can just remove the crate and use those to light the torches.
//otherwise, with Dins, we first light them with dins and then either use a bow shot or to cross back over to light the other torch
//Valid ways across are adult+hovers, bunny+hovers, longshot or running through the lava and then climbing back up as adult (child can't reach the ledge).
//The Damage logic here is for jumping down and running across the lava to get in dins range of the south torch
//Fairies cannot be used for this as it is time sensetive, and NL is only useful with sticks as it disables other magic while in use, so it's tunic or raw damage taking ability.
//testing tells me you take 3 ticks of lava damage, which is 12 internal damage or 3/4 of a heart at x1 damage multiplier, performing this run
//logic->EffectiveHealth() works in half hearts for whatever reason, meaning this needs a deeper refactor to be perfect, but it should be good enough for now
LOCATION(RC_FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, logic->CanUse(RG_FIRE_ARROWS) ||
(logic->CanUse(RG_DINS_FIRE) &&
(logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_LONGSHOT) ||
(logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_GORON_TUNIC) || logic->EffectiveHealth() >= 2 || (logic->CanUse(RG_NAYRUS_LOVE) && logic->CanUse(RG_STICKS))))))),
LOCATION(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2, logic->CanBreakPots()),
}, {
//Exits
Entrance(RR_FIRE_TEMPLE_NEAR_BOSS_ROOM, {[]{return true;}}),
});
areaTable[RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM] = Region("Fire Temple MQ Big Lava Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM] = Region("Fire Temple MQ Big Lava Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
//I'm currently assuming the oversight version of RT_FIRE_MQ_BK_CHEST for the fire timer logic //I'm currently assuming the oversight version of RT_FIRE_MQ_BK_CHEST for the fire timer logic
LOCATION(RC_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, logic->FireTimer() >= 40 && logic->HasFireSource() && logic->HasExplosives() && (logic->CanUse(RG_HOOKSHOT) || ctx->GetTrickOption(RT_FIRE_MQ_BLOCKED_CHEST))), LOCATION(RC_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, logic->FireTimer() >= 40 && logic->HasFireSource() && logic->HasExplosives() &&
(logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && ctx->GetTrickOption(RT_FIRE_MQ_BLOCKED_CHEST)))),
//implies CanGetEnemyDrop(RE_GOLD_SKULLTULA) //implies CanGetEnemyDrop(RE_GOLD_SKULLTULA)
LOCATION(RC_FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR, logic->FireTimer() >= 20 && logic->CanUse(RG_MEGATON_HAMMER)), LOCATION(RC_FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR, logic->FireTimer() >= 20 && logic->CanUse(RG_MEGATON_HAMMER)),
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT, logic->FireTimer() >= 40 &&
(logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_FIRE_MQ_BLOCKED_CHEST) && ((logic->IsAdult && logic->CanBreakPots()) || logic->CanUse(RG_BOOMERANG))))),
}, { }, {
//Exits //Exits
// Fewer tunic requirements ends here // Fewer tunic requirements ends here
@ -429,7 +477,9 @@ void RegionTable_Init_FireTemple() {
EventAccess(&logic->FairyPot, {[]{return logic->CanUse(RG_HOOKSHOT);}}), EventAccess(&logic->FairyPot, {[]{return logic->CanUse(RG_HOOKSHOT);}}),
}, { }, {
//Locations //Locations
LOCATION(RC_FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, logic->CanUse(RG_HOOKSHOT)), LOCATION(RC_FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, logic->CanUse(RG_HOOKSHOT)),
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, logic->HookshotOrBoomerang()),
LOCATION(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, logic->HookshotOrBoomerang()),
}, { }, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM, {[]{return true;}}),
@ -529,13 +579,22 @@ void RegionTable_Init_FireTemple() {
areaTable[RR_FIRE_TEMPLE_MQ_NARROW_PATH_ROOM] = Region("Fire Temple MQ Narrow Path Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_FIRE_TEMPLE_MQ_NARROW_PATH_ROOM] = Region("Fire Temple MQ Narrow Path Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, {}, { }, {
//Locations
LOCATION(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_MQ_LOWER_MAZE, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_LOWER_MAZE, {[]{return true;}}),
Entrance(RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM, {[]{return logic->TakeDamage();}}), Entrance(RR_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM, {[]{return logic->TakeDamage();}}),
}); });
areaTable[RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM] = Region("Fire Temple MQ High Torch Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM] = Region("Fire Temple MQ High Torch Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_MQ_UPPER_MAZE, {[]{return logic->SmallKeys(RR_FIRE_TEMPLE, 3);}}), Entrance(RR_FIRE_TEMPLE_MQ_UPPER_MAZE, {[]{return logic->SmallKeys(RR_FIRE_TEMPLE, 3);}}),
Entrance(RR_FIRE_TEMPLE_MQ_NARROW_PATH_ROOM, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_NARROW_PATH_ROOM, {[]{return true;}}),
@ -546,15 +605,17 @@ void RegionTable_Init_FireTemple() {
areaTable[RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE] = Region("Fire Temple MQ South Fire Maze", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE] = Region("Fire Temple MQ South Fire Maze", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER, logic->HasExplosives()), LOCATION(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER, logic->HasExplosives()),
LOCATION(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_MQ_NEAR_BOSS_DOOR, {[]{return logic->HitFireTemplePlatform;}}), Entrance(RR_FIRE_TEMPLE_MQ_NEAR_BOSS_DOOR, {[]{return logic->HitFireTemplePlatform;}}),
Entrance(RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM, {[]{return true;}}),
Entrance(RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PLATFORMS, {[]{return logic->IsAdult || logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_HOVER_BOOTS);}}), Entrance(RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PLATFORMS, {[]{return logic->IsAdult || logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_HOVER_BOOTS);}}),
//Hover boots get there via the platforms //Hover boots get there via the platforms
Entrance(RR_FIRE_TEMPLE_MQ_FIRE_MAZE_SIDE_ROOM, {[]{return (bool)ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}), Entrance(RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE, {[]{return (bool)ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}),
Entrance(RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE, {[]{return logic->OpenedFireMQFireMazeDoor;}}), Entrance(RR_FIRE_TEMPLE_MQ_WEST_FIRE_MAZE, {[]{return logic->OpenedFireMQFireMazeDoor;}}),
}); });
areaTable[RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PLATFORMS] = Region("Fire Temple MQ Fire Maze Platforms", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PLATFORMS] = Region("Fire Temple MQ Fire Maze Platforms", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
@ -562,27 +623,35 @@ void RegionTable_Init_FireTemple() {
EventAccess(&logic->HitFireTemplePlatform, {[]{return logic->CanUse(RG_MEGATON_HAMMER);}}), EventAccess(&logic->HitFireTemplePlatform, {[]{return logic->CanUse(RG_MEGATON_HAMMER);}}),
EventAccess(&logic->OpenedFireMQFireMazeDoor, {[]{return logic->CanUse(RG_MEGATON_HAMMER) && logic->CanUse(RG_HOOKSHOT);}}), EventAccess(&logic->OpenedFireMQFireMazeDoor, {[]{return logic->CanUse(RG_MEGATON_HAMMER) && logic->CanUse(RG_HOOKSHOT);}}),
}, {}, { }, {}, {
Entrance(RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE, {[]{return true;}}),
Entrance(RR_FIRE_TEMPLE_MQ_FIRE_MAZE_SIDE_ROOM, {[]{return logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_HOVER_BOOTS);}}), Entrance(RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE, {[]{return logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_HOVER_BOOTS);}}),
//trick to get to RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE with hovers + taking damage is plausible //trick to get to RR_FIRE_TEMPLE_MQ_WEST_FIRE_MAZE with hovers + taking damage is plausible
}); });
areaTable[RR_FIRE_TEMPLE_MQ_FIRE_MAZE_SIDE_ROOM] = Region("Fire Temple MQ Side Room", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE] = Region("Fire Temple MQ North Fire Maze", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), LOCATION(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)),
LOCATION(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, logic->CanUse(RG_BOOMERANG)),
LOCATION(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE, {[]{return logic->IsAdult || ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}), Entrance(RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE, {[]{return logic->IsAdult || ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}),
Entrance(RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE, {[]{return (bool)ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}), Entrance(RR_FIRE_TEMPLE_MQ_WEST_FIRE_MAZE, {[]{return (bool)ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}),
}); });
areaTable[RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE] = Region("Fire Temple MQ North Fire Maze", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FIRE_TEMPLE_MQ_WEST_FIRE_MAZE] = Region("Fire Temple MQ West Fire Maze", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
Entrance(RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PAST_WALL, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PAST_WALL, {[]{return true;}}),
Entrance(RR_FIRE_TEMPLE_MQ_FIRE_MAZE_SIDE_ROOM, {[]{return (bool)ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}), Entrance(RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE, {[]{return (bool)ctx->GetTrickOption(RT_FIRE_MQ_FLAME_MAZE);}}),
}); });
//this area exists for the pots in case we void warp to the top of fire somehow, because there's no way to get back the way we came //this area exists for the pots in case we void warp to the top of fire somehow, because there's no way to get back the way we came
areaTable[RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PAST_WALL] = Region("Fire Temple MQ Fire Maze Past Wall", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PAST_WALL] = Region("Fire Temple MQ Fire Maze Past Wall", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT, logic->CanBreakPots()),
LOCATION(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, logic->CanUse(RG_BOOMERANG)),
}, {
Entrance(RR_FIRE_TEMPLE_MQ_UPPER_FLARE_DANCER, {[]{return true;}}), Entrance(RR_FIRE_TEMPLE_MQ_UPPER_FLARE_DANCER, {[]{return true;}}),
}); });

View File

@ -41,6 +41,12 @@ void RegionTable_Init_ForestTemple() {
}, { }, {
//Locations //Locations
LOCATION(RC_FOREST_TEMPLE_GS_LOBBY, logic->HookshotOrBoomerang()), LOCATION(RC_FOREST_TEMPLE_GS_LOBBY, logic->HookshotOrBoomerang()),
LOCATION(RC_FOREST_TEMPLE_LOBBY_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_LOBBY_POT_2, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_LOBBY_POT_3, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_LOBBY_POT_4, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_LOBBY_POT_5, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_LOBBY_POT_6, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_SOUTH_CORRIDOR, {[]{return true;}}), Entrance(RR_FOREST_TEMPLE_SOUTH_CORRIDOR, {[]{return true;}}),
@ -65,6 +71,8 @@ void RegionTable_Init_ForestTemple() {
}, { }, {
//Locations //Locations
LOCATION(RC_FOREST_TEMPLE_FIRST_STALFOS_CHEST, logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER)), LOCATION(RC_FOREST_TEMPLE_FIRST_STALFOS_CHEST, logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER)),
LOCATION(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_NORTH_CORRIDOR, {[]{return true;}}), Entrance(RR_FOREST_TEMPLE_NORTH_CORRIDOR, {[]{return true;}}),
@ -203,6 +211,10 @@ void RegionTable_Init_ForestTemple() {
areaTable[RR_FOREST_TEMPLE_UPPER_STALFOS] = Region("Forest Temple Upper Stalfos", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_FOREST_TEMPLE_UPPER_STALFOS] = Region("Forest Temple Upper Stalfos", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_FOREST_TEMPLE_BOW_CHEST, logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER)), LOCATION(RC_FOREST_TEMPLE_BOW_CHEST, logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER)),
LOCATION(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_RED_POE_ROOM, {[]{return logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER);}}), Entrance(RR_FOREST_TEMPLE_RED_POE_ROOM, {[]{return logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER);}}),
@ -215,6 +227,9 @@ void RegionTable_Init_ForestTemple() {
}, { }, {
//Locations //Locations
LOCATION(RC_FOREST_TEMPLE_BLUE_POE_CHEST, logic->ForestTempleBeth), LOCATION(RC_FOREST_TEMPLE_BLUE_POE_CHEST, logic->ForestTempleBeth),
LOCATION(RC_FOREST_TEMPLE_BLUE_POE_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_BLUE_POE_POT_2, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_BLUE_POE_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_UPPER_STALFOS, {[]{return true;}}), Entrance(RR_FOREST_TEMPLE_UPPER_STALFOS, {[]{return true;}}),
@ -233,7 +248,11 @@ void RegionTable_Init_ForestTemple() {
Entrance(RR_FOREST_TEMPLE_FALLING_ROOM, {[]{return true;}}), Entrance(RR_FOREST_TEMPLE_FALLING_ROOM, {[]{return true;}}),
}); });
areaTable[RR_FOREST_TEMPLE_FROZEN_EYE_ROOM] = Region("Forest Temple Frozen Eye Room", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FOREST_TEMPLE_FROZEN_EYE_ROOM] = Region("Forest Temple Frozen Eye Room", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_FOREST_TEMPLE_FROZEN_EYE_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_FROZEN_EYE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_NE_CORRIDOR_STRAIGHTENED, {[]{return logic->SmallKeys(RR_FOREST_TEMPLE, 5);}}), Entrance(RR_FOREST_TEMPLE_NE_CORRIDOR_STRAIGHTENED, {[]{return logic->SmallKeys(RR_FOREST_TEMPLE, 5);}}),
Entrance(RR_FOREST_TEMPLE_NE_CORRIDOR_TWISTED, {[]{return logic->SmallKeys(RR_FOREST_TEMPLE, 5) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DINS_FIRE));}}), Entrance(RR_FOREST_TEMPLE_NE_CORRIDOR_TWISTED, {[]{return logic->SmallKeys(RR_FOREST_TEMPLE, 5) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DINS_FIRE));}}),
@ -251,7 +270,11 @@ void RegionTable_Init_ForestTemple() {
areaTable[RR_FOREST_TEMPLE_GREEN_POE_ROOM] = Region("Forest Temple Green Poe Room", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_FOREST_TEMPLE_GREEN_POE_ROOM] = Region("Forest Temple Green Poe Room", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->ForestTempleAmy, {[]{return logic->ForestTempleAmy || logic->CanUse(RG_FAIRY_BOW);}}), EventAccess(&logic->ForestTempleAmy, {[]{return logic->ForestTempleAmy || logic->CanUse(RG_FAIRY_BOW);}}),
}, {}, { }, {
//Locations
LOCATION(RC_FOREST_TEMPLE_GREEN_POE_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_GREEN_POE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_FALLING_ROOM, {[]{return true;}}), Entrance(RR_FOREST_TEMPLE_FALLING_ROOM, {[]{return true;}}),
Entrance(RR_FOREST_TEMPLE_EAST_CORRIDOR, {[]{return logic->ForestTempleAmy;}}), Entrance(RR_FOREST_TEMPLE_EAST_CORRIDOR, {[]{return logic->ForestTempleAmy;}}),
@ -292,7 +315,15 @@ void RegionTable_Init_ForestTemple() {
areaTable[RR_FOREST_TEMPLE_MQ_CENTRAL_AREA] = Region("Forest Temple MQ Central Region", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_FOREST_TEMPLE_MQ_CENTRAL_AREA] = Region("Forest Temple MQ Central Region", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->ForestTempleMeg, {[]{return logic->ForestTempleJoelle && logic->ForestTempleBeth && logic->ForestTempleAmy && logic->CanKillEnemy(RE_MEG);}}), EventAccess(&logic->ForestTempleMeg, {[]{return logic->ForestTempleJoelle && logic->ForestTempleBeth && logic->ForestTempleAmy && logic->CanKillEnemy(RE_MEG);}}),
}, {}, { }, {
//Locations
LOCATION(RC_FOREST_TEMPLE_MQ_LOBBY_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_LOBBY_POT_2, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_LOBBY_POT_3, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_LOBBY_POT_4, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_LOBBY_POT_5, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_LOBBY_POT_6, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_MQ_WOLFOS_ROOM, {[]{return logic->IsChild || logic->CanUse(RG_SONG_OF_TIME);}}), Entrance(RR_FOREST_TEMPLE_MQ_WOLFOS_ROOM, {[]{return logic->IsChild || logic->CanUse(RG_SONG_OF_TIME);}}),
Entrance(RR_FOREST_TEMPLE_MQ_NW_OUTDOORS, {[]{return logic->CanHitEyeTargets();}}), Entrance(RR_FOREST_TEMPLE_MQ_NW_OUTDOORS, {[]{return logic->CanHitEyeTargets();}}),
@ -309,6 +340,8 @@ void RegionTable_Init_ForestTemple() {
}, { }, {
//Locations //Locations
LOCATION(RC_FOREST_TEMPLE_MQ_WOLFOS_CHEST, logic->ForestClearBelowBowChest), LOCATION(RC_FOREST_TEMPLE_MQ_WOLFOS_CHEST, logic->ForestClearBelowBowChest),
LOCATION(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_MQ_CENTRAL_AREA, {[]{return logic->ForestClearBelowBowChest && (logic->IsChild || logic->CanUse(RG_SONG_OF_TIME));}}), Entrance(RR_FOREST_TEMPLE_MQ_CENTRAL_AREA, {[]{return logic->ForestClearBelowBowChest && (logic->IsChild || logic->CanUse(RG_SONG_OF_TIME));}}),
@ -457,7 +490,11 @@ void RegionTable_Init_ForestTemple() {
EventAccess(&logic->ForestClearBelowBowChest, {[]{return logic->CanKillEnemy(RE_WOLFOS);}}), EventAccess(&logic->ForestClearBelowBowChest, {[]{return logic->CanKillEnemy(RE_WOLFOS);}}),
}, { }, {
//Locations //Locations
LOCATION(RC_FOREST_TEMPLE_MQ_BOW_CHEST, logic->ForestClearBelowBowChest && logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 3)), LOCATION(RC_FOREST_TEMPLE_MQ_BOW_CHEST, logic->ForestClearBelowBowChest && logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 3)),
LOCATION(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_MQ_JOELLE_ROOM, {[]{return logic->ForestClearBelowBowChest && logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 3);}}), Entrance(RR_FOREST_TEMPLE_MQ_JOELLE_ROOM, {[]{return logic->ForestClearBelowBowChest && logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 3);}}),
@ -469,7 +506,10 @@ void RegionTable_Init_ForestTemple() {
EventAccess(&logic->ForestTempleBeth, {[]{return logic->CanUse(RG_FAIRY_BOW);}}), EventAccess(&logic->ForestTempleBeth, {[]{return logic->CanUse(RG_FAIRY_BOW);}}),
}, { }, {
//Locations //Locations
LOCATION(RC_FOREST_TEMPLE_MQ_COMPASS_CHEST, logic->ForestTempleBeth), LOCATION(RC_FOREST_TEMPLE_MQ_COMPASS_CHEST, logic->ForestTempleBeth),
LOCATION(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
//!QUANTUM LOGIC! //!QUANTUM LOGIC!
@ -500,7 +540,11 @@ void RegionTable_Init_ForestTemple() {
areaTable[RR_FOREST_TEMPLE_MQ_AMY_ROOM] = Region("Forest Temple MQ Amy Room", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_FOREST_TEMPLE_MQ_AMY_ROOM] = Region("Forest Temple MQ Amy Room", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->ForestTempleAmy, {[]{return logic->CanUse(RG_FAIRY_BOW);}}), EventAccess(&logic->ForestTempleAmy, {[]{return logic->CanUse(RG_FAIRY_BOW);}}),
}, {}, { }, {
//Locations
LOCATION(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_MQ_CENTRAL_AREA, {[]{return logic->ForestTempleAmy;}}), Entrance(RR_FOREST_TEMPLE_MQ_CENTRAL_AREA, {[]{return logic->ForestTempleAmy;}}),
Entrance(RR_FOREST_TEMPLE_MQ_FALLING_ROOM, {[]{return true;}}), Entrance(RR_FOREST_TEMPLE_MQ_FALLING_ROOM, {[]{return true;}}),
@ -515,8 +559,20 @@ void RegionTable_Init_ForestTemple() {
LOCATION(RC_FOREST_TEMPLE_MQ_BASEMENT_CHEST, true), LOCATION(RC_FOREST_TEMPLE_MQ_BASEMENT_CHEST, true),
}, { }, {
//Exits //Exits
Entrance(RR_FOREST_TEMPLE_MQ_CENTRAL_AREA, {[]{return logic->ForestTempleMeg;}}), Entrance(RR_FOREST_TEMPLE_MQ_CENTRAL_AREA, {[]{return logic->ForestTempleMeg;}}),
Entrance(RR_FOREST_TEMPLE_MQ_BOSS_REGION, {[]{return logic->ForestOpenBossCorridor;}}), Entrance(RR_FOREST_TEMPLE_MQ_BASEMENT_POT_ROOM, {[]{return logic->CanPassEnemy(RE_BIG_SKULLTULA) || logic->TakeDamage();}}),
Entrance(RR_FOREST_TEMPLE_MQ_BOSS_REGION, {[]{return logic->ForestOpenBossCorridor;}}),
});
areaTable[RR_FOREST_TEMPLE_MQ_BASEMENT_POT_ROOM] = Region("Forest Temple MQ Basement Pot Room", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3, logic->CanBreakPots()),
LOCATION(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4, logic->CanBreakPots()),
}, {
//Exits
Entrance(RR_FOREST_TEMPLE_MQ_BASEMENT, {[]{return logic->CanPassEnemy(RE_BIG_SKULLTULA);}}),
}); });
areaTable[RR_FOREST_TEMPLE_MQ_BOSS_REGION] = Region("Forest Temple MQ Boss Region", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FOREST_TEMPLE_MQ_BOSS_REGION] = Region("Forest Temple MQ Boss Region", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {

View File

@ -22,7 +22,7 @@ void RegionTable_Init_GanonsCastle() {
if (ctx->GetDungeon(GANONS_CASTLE)->IsVanilla()) { if (ctx->GetDungeon(GANONS_CASTLE)->IsVanilla()) {
areaTable[RR_GANONS_CASTLE_LOBBY] = Region("Ganon's Castle Lobby", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_GANONS_CASTLE_LOBBY] = Region("Ganon's Castle Lobby", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_SHEIK_HINT_GC, true), LOCATION(RC_SHEIK_HINT_GC, true),
}, { }, {
//Exits //Exits
Entrance(RR_GANONS_CASTLE_ENTRYWAY, {[]{return true;}}), Entrance(RR_GANONS_CASTLE_ENTRYWAY, {[]{return true;}}),
@ -58,22 +58,31 @@ void RegionTable_Init_GanonsCastle() {
}, { }, {
//Locations //Locations
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_CHEST, logic->CanDamage()), LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_CHEST, logic->CanDamage()),
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_DINS_FIRE))),
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_DINS_FIRE))),
}, {}); }, {});
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL] = Region("Ganon's Castle Fire Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_FIRE_TRIAL] = Region("Ganon's Castle Fire Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FireTrialClear, {[]{return logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LIGHT_ARROWS) && logic->CanUse(RG_LONGSHOT);}}), EventAccess(&logic->FireTrialClear, {[]{return logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LIGHT_ARROWS) && logic->CanUse(RG_LONGSHOT);}}),
}, {}, {}); }, {
//Locations
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_POT_1, logic->CanBreakPots() && logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LONGSHOT)),
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, logic->CanBreakPots() && logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LONGSHOT)),
}, {});
areaTable[RR_GANONS_CASTLE_WATER_TRIAL] = Region("Ganon's Castle Water Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_WATER_TRIAL] = Region("Ganon's Castle Water Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->BlueFireAccess, {[]{return logic->BlueFireAccess || logic->HasBottle();}}), EventAccess(&logic->BlueFireAccess, {[]{return logic->BlueFireAccess || logic->HasBottle();}}),
EventAccess(&logic->FairyPot, {[]{return logic->FairyPot || logic->BlueFire();}}), EventAccess(&logic->FairyPot, {[]{return logic->FairyPot || (logic->BlueFire() && logic->CanKillEnemy(RE_FREEZARD));}}),
EventAccess(&logic->WaterTrialClear, {[]{return logic->BlueFire() && logic->IsAdult && logic->CanUse(RG_MEGATON_HAMMER) && logic->CanUse(RG_LIGHT_ARROWS);}}), EventAccess(&logic->WaterTrialClear, {[]{return logic->BlueFire() && logic->IsAdult && logic->CanUse(RG_MEGATON_HAMMER) && logic->CanUse(RG_LIGHT_ARROWS);}}),
}, { }, {
//Locations //Locations
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, true), LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, true),
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, true), LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, true),
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_POT_1, logic->CanBreakPots() && logic->BlueFire() && logic->IsAdult && logic->CanUse(RG_MEGATON_HAMMER)),
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_POT_2, logic->CanBreakPots() && logic->BlueFire() && logic->IsAdult && logic->CanUse(RG_MEGATON_HAMMER)),
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_POT_3, logic->CanBreakPots() && logic->BlueFire() && logic->CanKillEnemy(RE_FREEZARD)),
}, {}); }, {});
areaTable[RR_GANONS_CASTLE_SHADOW_TRIAL] = Region("Ganon's Castle Shadow Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_SHADOW_TRIAL] = Region("Ganon's Castle Shadow Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
@ -83,6 +92,10 @@ void RegionTable_Init_GanonsCastle() {
//Locations //Locations
LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST, logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_SONG_OF_TIME) || logic->IsChild), LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST, logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_SONG_OF_TIME) || logic->IsChild),
LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST, logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_LONGSHOT) && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_DINS_FIRE)))), LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST, logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_LONGSHOT) && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_DINS_FIRE)))),
LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1, logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_LONGSHOT)),
LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2, logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_LONGSHOT)),
LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3, logic->CanBreakPots() && logic->CanUse(RG_MEGATON_HAMMER) && ((logic->CanUse(RG_FIRE_ARROWS) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))) || (logic->CanUse(RG_LONGSHOT) && (logic->CanUse(RG_HOVER_BOOTS) || (logic->CanUse(RG_DINS_FIRE) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))))))),
LOCATION(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4, logic->CanBreakPots() && logic->CanUse(RG_MEGATON_HAMMER) && ((logic->CanUse(RG_FIRE_ARROWS) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))) || (logic->CanUse(RG_LONGSHOT) && (logic->CanUse(RG_HOVER_BOOTS) || (logic->CanUse(RG_DINS_FIRE) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))))))),
}, {}); }, {});
areaTable[RR_GANONS_CASTLE_SPIRIT_TRIAL] = Region("Ganon's Castle Spirit Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_SPIRIT_TRIAL] = Region("Ganon's Castle Spirit Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
@ -93,6 +106,8 @@ void RegionTable_Init_GanonsCastle() {
//Locations //Locations
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && logic->CanJumpslashExceptHammer()), LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && logic->CanJumpslashExceptHammer()),
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))), LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
}, {}); }, {});
areaTable[RR_GANONS_CASTLE_LIGHT_TRIAL] = Region("Ganon's Castle Light Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_LIGHT_TRIAL] = Region("Ganon's Castle Light Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
@ -108,7 +123,11 @@ void RegionTable_Init_GanonsCastle() {
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST, true), LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST, true),
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST, ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH)), LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST, ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH)),
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST, logic->CanUse(RG_ZELDAS_LULLABY) && logic->SmallKeys(RR_GANONS_CASTLE, 1)), LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST, logic->CanUse(RG_ZELDAS_LULLABY) && logic->SmallKeys(RR_GANONS_CASTLE, 1)),
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, logic->CanBreakPots() && logic->SmallKeys(RR_GANONS_CASTLE, 2)),
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1, logic->CanBreakPots() && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_GANONS_CASTLE, 2) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2, logic->CanBreakPots() && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_GANONS_CASTLE, 2) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
}, {}); }, {});
} }
/*--------------------------- /*---------------------------
@ -183,7 +202,11 @@ void RegionTable_Init_GanonsCastle() {
areaTable[RR_GANONS_CASTLE_MQ_FOREST_TRIAL_FINAL_ROOM] = Region("Ganon's Castle MQ Forest Trial Final Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_MQ_FOREST_TRIAL_FINAL_ROOM] = Region("Ganon's Castle MQ Forest Trial Final Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->ForestTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}), EventAccess(&logic->ForestTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}),
}, {}, { }, {
//Locations
LOCATION(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM, {[]{return true;}}), Entrance(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM, {[]{return true;}}),
}); });
@ -200,7 +223,11 @@ void RegionTable_Init_GanonsCastle() {
//Events //Events
EventAccess(&logic->FireTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}), EventAccess(&logic->FireTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}),
//There's no way back across the lava without glitches //There's no way back across the lava without glitches
}, {}, {}); }, {
//Locations
LOCATION(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2, logic->CanBreakPots()),
}, {});
areaTable[RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM] = Region("Ganon's Castle MQ Water Trial Geyser Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM] = Region("Ganon's Castle MQ Water Trial Geyser Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
@ -226,7 +253,8 @@ void RegionTable_Init_GanonsCastle() {
EventAccess(&logic->WaterTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}), EventAccess(&logic->WaterTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}),
}, { }, {
//Locations //Locations
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_CHEST, logic->BlueFire()), LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM, {[]{return Here(RR_GANONS_CASTLE_MQ_WATER_TRIAL_FINAL_ROOM, []{return logic->BlueFire();});}}), Entrance(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM, {[]{return Here(RR_GANONS_CASTLE_MQ_WATER_TRIAL_FINAL_ROOM, []{return logic->BlueFire();});}}),
@ -291,7 +319,11 @@ void RegionTable_Init_GanonsCastle() {
areaTable[RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FINAL_ROOM] = Region("Ganon's Castle MQ Shadow Trial Final Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FINAL_ROOM] = Region("Ganon's Castle MQ Shadow Trial Final Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->ShadowTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}), EventAccess(&logic->ShadowTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}),
}, {}, { }, {
//Locations
LOCATION(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FAR_SIDE, {[]{return (ctx->GetTrickOption(RT_LENS_GANON_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}}), Entrance(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FAR_SIDE, {[]{return (ctx->GetTrickOption(RT_LENS_GANON_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}}),
}); });
@ -330,7 +362,11 @@ void RegionTable_Init_GanonsCastle() {
//Events //Events
EventAccess(&logic->SpiritTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}), EventAccess(&logic->SpiritTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}),
EventAccess(&logic->NutPot, {[]{return true;}}), EventAccess(&logic->NutPot, {[]{return true;}}),
}, {}, { }, {
//Locations
LOCATION(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_AFTER_SWITCH, {[]{return true;}}), Entrance(RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_AFTER_SWITCH, {[]{return true;}}),
}); });
@ -367,7 +403,11 @@ void RegionTable_Init_GanonsCastle() {
areaTable[RR_GANONS_CASTLE_MQ_LIGHT_TRIAL_FINAL_ROOM] = Region("Ganon's Castle MQ Light Trial Final Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GANONS_CASTLE_MQ_LIGHT_TRIAL_FINAL_ROOM] = Region("Ganon's Castle MQ Light Trial Final Room", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->LightTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}), EventAccess(&logic->LightTrialClear, {[]{return logic->CanUse(RG_LIGHT_ARROWS);}}),
}, {}, {}); }, {
//Locations
LOCATION(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2, logic->CanBreakPots()),
}, {});
} }
/*-------------------------- /*--------------------------
@ -391,13 +431,38 @@ void RegionTable_Init_GanonsCastle() {
areaTable[RR_GANONS_TOWER_FLOOR_3] = Region("Ganon's Tower Floor 3", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_GANONS_TOWER_FLOOR_3] = Region("Ganon's Tower Floor 3", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
Entrance(RR_GANONS_TOWER_FLOOR_2, {[]{return Here(RR_GANONS_TOWER_FLOOR_3, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE, ED_CLOSE, true, 2);});}}), Entrance(RR_GANONS_TOWER_FLOOR_2, {[]{return Here(RR_GANONS_TOWER_FLOOR_3, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE, ED_CLOSE, true, 2);});}}),
Entrance(RR_GANONS_TOWER_GANONDORF_LAIR, {[]{return Here(RR_GANONS_TOWER_FLOOR_3, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE, ED_CLOSE, true, 2);}) && logic->HasItem(RG_GANONS_CASTLE_BOSS_KEY);}}), Entrance(RR_GANONS_TOWER_BEFORE_GANONDORF_LAIR, {[]{return Here(RR_GANONS_TOWER_FLOOR_3, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE, ED_CLOSE, true, 2);});}}),
});
areaTable[RR_GANONS_TOWER_BEFORE_GANONDORF_LAIR] = Region("Ganon's Tower Before Ganondorf's Lair", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {
// Locations
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_1, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_2, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_3, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_4, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_5, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_6, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_7, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_8, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_9, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_10, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_11, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_12, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_13, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_14, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_15, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_16, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_17, logic->CanBreakPots()),
LOCATION(RC_GANONS_CASTLE_GANONS_TOWER_POT_18, logic->CanBreakPots()),
}, {
//Exits
Entrance(RR_GANONS_TOWER_FLOOR_3, {[]{return Here(RR_GANONS_TOWER_BEFORE_GANONDORF_LAIR, []{return true;});}}),
Entrance(RR_GANONS_TOWER_GANONDORF_LAIR, {[]{return Here(RR_GANONS_TOWER_BEFORE_GANONDORF_LAIR, []{return logic->HasItem(RG_GANONS_CASTLE_BOSS_KEY);});}}),
}); });
areaTable[RR_GANONS_TOWER_GANONDORF_LAIR] = Region("Ganondorf's Lair", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_GANONS_TOWER_GANONDORF_LAIR] = Region("Ganondorf's Lair", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_GANONDORF_HINT, logic->HasBossSoul(RG_GANON_SOUL)), LOCATION(RC_GANONDORF_HINT, logic->HasBossSoul(RG_GANON_SOUL)),
//18 pots
}, { }, {
//Exits //Exits
Entrance(RR_GANONS_CASTLE_ESCAPE, {[]{return logic->CanKillEnemy(RE_GANONDORF);}}), Entrance(RR_GANONS_CASTLE_ESCAPE, {[]{return logic->CanKillEnemy(RE_GANONDORF);}}),
@ -406,6 +471,7 @@ void RegionTable_Init_GanonsCastle() {
areaTable[RR_GANONS_CASTLE_ESCAPE] = Region("Ganon's Castle Escape", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_GANONS_CASTLE_ESCAPE] = Region("Ganon's Castle Escape", "Ganons Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
//10 pots //10 pots
//RANDOTODO hook potsanity pots up to escape.
}, { }, {
//Exits //Exits
//temporary //temporary

View File

@ -119,6 +119,10 @@ void RegionTable_Init_GerudoTrainingGrounds() {
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, true), LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, true),
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, true), LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, true),
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, true), LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, true),
LOCATION(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1, logic->CanBreakPots()),
LOCATION(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2, logic->CanBreakPots()),
LOCATION(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1, logic->CanBreakPots()),
LOCATION(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_GERUDO_TRAINING_GROUNDS_ENTRYWAY, {[]{return true;}}), Entrance(RR_GERUDO_TRAINING_GROUNDS_ENTRYWAY, {[]{return true;}}),

View File

@ -107,6 +107,22 @@ void RegionTable_Init_GerudoValley() {
LOCATION(RC_GF_GERUDO_MEMBERSHIP_CARD, logic->CanFinishGerudoFortress()), LOCATION(RC_GF_GERUDO_MEMBERSHIP_CARD, logic->CanFinishGerudoFortress()),
LOCATION(RC_GF_GS_ARCHERY_RANGE, logic->IsAdult && logic->HookshotOrBoomerang() && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_GF_GS_ARCHERY_RANGE, logic->IsAdult && logic->HookshotOrBoomerang() && logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && logic->AtNight && (logic->CanJumpslashExceptHammer() || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOOMERANG) || logic->HasExplosives() || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_DINS_FIRE)) && (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_KITCHEN) || ctx->GetTrickOption(RT_GF_JUMP)) && logic->CanGetNightTimeGS()), LOCATION(RC_GF_GS_TOP_FLOOR, logic->IsAdult && logic->AtNight && (logic->CanJumpslashExceptHammer() || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOOMERANG) || logic->HasExplosives() || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_DINS_FIRE)) && (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_GF_KITCHEN) || ctx->GetTrickOption(RT_GF_JUMP)) && logic->CanGetNightTimeGS()),
LOCATION(RC_GF_BREAK_ROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_GF_BREAK_ROOM_POT_2, logic->CanBreakPots()),
LOCATION(RC_GF_KITCHEN_POT_1, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakPots()),
LOCATION(RC_GF_KITCHEN_POT_2, (logic->HasItem(RG_GERUDO_MEMBERSHIP_CARD) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT)) && logic->CanBreakPots()),
LOCATION(RC_GF_NORTH_F1_CARPENTER_POT_1, logic->CanBreakPots()),
LOCATION(RC_GF_NORTH_F1_CARPENTER_POT_2, logic->CanBreakPots()),
LOCATION(RC_GF_NORTH_F1_CARPENTER_POT_3, logic->CanBreakPots()),
LOCATION(RC_GF_NORTH_F2_CARPENTER_POT_1, logic->CanBreakPots()),
LOCATION(RC_GF_NORTH_F2_CARPENTER_POT_2, logic->CanBreakPots()),
LOCATION(RC_GF_SOUTH_F1_CARPENTER_POT_1, logic->CanBreakPots()),
LOCATION(RC_GF_SOUTH_F1_CARPENTER_POT_2, logic->CanBreakPots()),
LOCATION(RC_GF_SOUTH_F1_CARPENTER_POT_3, logic->CanBreakPots()),
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, logic->CanBreakPots()),
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, logic->CanBreakPots()),
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, logic->CanBreakPots()),
LOCATION(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_GV_FORTRESS_SIDE, {[]{return true;}}), Entrance(RR_GV_FORTRESS_SIDE, {[]{return true;}}),
@ -148,6 +164,10 @@ void RegionTable_Init_GerudoValley() {
LOCATION(RC_WASTELAND_CHEST, logic->HasFireSource()), LOCATION(RC_WASTELAND_CHEST, logic->HasFireSource()),
LOCATION(RC_WASTELAND_BOMBCHU_SALESMAN, logic->CanJumpslashExceptHammer() || logic->CanUse(RG_HOVER_BOOTS)), LOCATION(RC_WASTELAND_BOMBCHU_SALESMAN, logic->CanJumpslashExceptHammer() || logic->CanUse(RG_HOVER_BOOTS)),
LOCATION(RC_WASTELAND_GS, logic->HookshotOrBoomerang()), LOCATION(RC_WASTELAND_GS, logic->HookshotOrBoomerang()),
LOCATION(RC_WASTELAND_NEAR_GS_POT_1, logic->CanBreakPots()),
LOCATION(RC_WASTELAND_NEAR_GS_POT_2, logic->CanBreakPots()),
LOCATION(RC_WASTELAND_NEAR_GS_POT_3, logic->CanBreakPots()),
LOCATION(RC_WASTELAND_NEAR_GS_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_WASTELAND_NEAR_COLOSSUS, {[]{return ctx->GetTrickOption(RT_LENS_HW) || logic->CanUse(RG_LENS_OF_TRUTH);}}), Entrance(RR_WASTELAND_NEAR_COLOSSUS, {[]{return ctx->GetTrickOption(RT_LENS_HW) || logic->CanUse(RG_LENS_OF_TRUTH);}}),

View File

@ -68,6 +68,8 @@ void RegionTable_Init_HyruleField() {
LOCATION(RC_HF_GS_COW_GROTTO, logic->HasFireSource() && logic->HookshotOrBoomerang()), LOCATION(RC_HF_GS_COW_GROTTO, logic->HasFireSource() && logic->HookshotOrBoomerang()),
LOCATION(RC_HF_COW_GROTTO_COW, logic->HasFireSource() && logic->CanUse(RG_EPONAS_SONG)), LOCATION(RC_HF_COW_GROTTO_COW, logic->HasFireSource() && logic->CanUse(RG_EPONAS_SONG)),
LOCATION(RC_HF_COW_GROTTO_GOSSIP_STONE, logic->HasFireSource()), LOCATION(RC_HF_COW_GROTTO_GOSSIP_STONE, logic->HasFireSource()),
LOCATION(RC_HF_COW_GROTTO_POT_1, logic->HasFireSource() && logic->CanBreakPots()),
LOCATION(RC_HF_COW_GROTTO_POT_2, logic->HasFireSource() && logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_HYRULE_FIELD, {[]{return true;}}), Entrance(RR_HYRULE_FIELD, {[]{return true;}}),
@ -228,6 +230,13 @@ void RegionTable_Init_HyruleField() {
LOCATION(RC_LLR_GS_RAIN_SHED, logic->IsChild && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_LLR_GS_RAIN_SHED, logic->IsChild && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_LLR_GS_HOUSE_WINDOW, logic->IsChild && logic->HookshotOrBoomerang() && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_LLR_GS_HOUSE_WINDOW, logic->IsChild && logic->HookshotOrBoomerang() && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_LLR_GS_BACK_WALL, logic->IsChild && logic->HookshotOrBoomerang() && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_LLR_GS_BACK_WALL, logic->IsChild && logic->HookshotOrBoomerang() && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_LLR_FRONT_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_LLR_FRONT_POT_2, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_LLR_FRONT_POT_3, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_LLR_FRONT_POT_4, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_LLR_RAIN_SHED_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_LLR_RAIN_SHED_POT_2, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_LLR_RAIN_SHED_POT_3, logic->IsChild && logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_HYRULE_FIELD, {[]{return true;}}), Entrance(RR_HYRULE_FIELD, {[]{return true;}}),
@ -240,6 +249,9 @@ void RegionTable_Init_HyruleField() {
areaTable[RR_LLR_TALONS_HOUSE] = Region("LLR Talons House", "LLR Talons House", {}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_LLR_TALONS_HOUSE] = Region("LLR Talons House", "LLR Talons House", {}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_LLR_TALONS_CHICKENS, logic->HasItem(RG_CHILD_WALLET) && logic->IsChild && logic->AtDay && logic->HasItem(RG_ZELDAS_LETTER)), LOCATION(RC_LLR_TALONS_CHICKENS, logic->HasItem(RG_CHILD_WALLET) && logic->IsChild && logic->AtDay && logic->HasItem(RG_ZELDAS_LETTER)),
LOCATION(RC_LLR_TALONS_HOUSE_POT_1, logic->CanBreakPots()),
LOCATION(RC_LLR_TALONS_HOUSE_POT_2, logic->CanBreakPots()),
LOCATION(RC_LLR_TALONS_HOUSE_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_LON_LON_RANCH, {[]{return true;}}), Entrance(RR_LON_LON_RANCH, {[]{return true;}}),

View File

@ -38,6 +38,14 @@ void RegionTable_Init_IceCavern() {
LOCATION(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, logic->HookshotOrBoomerang()), LOCATION(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, logic->HookshotOrBoomerang()),
LOCATION(RC_ICE_CAVERN_GS_HEART_PIECE_ROOM, logic->BlueFire() && logic->HookshotOrBoomerang()), LOCATION(RC_ICE_CAVERN_GS_HEART_PIECE_ROOM, logic->BlueFire() && logic->HookshotOrBoomerang()),
LOCATION(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, logic->BlueFire() && (logic->HookshotOrBoomerang() || (ctx->GetTrickOption(RT_ICE_BLOCK_GS) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))), LOCATION(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, logic->BlueFire() && (logic->HookshotOrBoomerang() || (ctx->GetTrickOption(RT_ICE_BLOCK_GS) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
LOCATION(RC_ICE_CAVERN_HALL_POT_1, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_HALL_POT_2, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_2, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_3, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_NEAR_END_POT_1, logic->CanBreakPots() && logic->BlueFire()),
LOCATION(RC_ICE_CAVERN_NEAR_END_POT_2, logic->CanBreakPots() && logic->BlueFire()),
LOCATION(RC_ICE_CAVERN_FROZEN_POT_1, logic->CanBreakPots() && logic->BlueFire() && logic->IsAdult),
}, {}); }, {});
} }
@ -45,7 +53,10 @@ void RegionTable_Init_IceCavern() {
| MASTER QUEST DUNGEON | | MASTER QUEST DUNGEON |
---------------------------*/ ---------------------------*/
if (ctx->GetDungeon(ICE_CAVERN)->IsMQ()) { if (ctx->GetDungeon(ICE_CAVERN)->IsMQ()) {
areaTable[RR_ICE_CAVERN_MQ_BEGINNING] = Region("Ice Cavern MQ Beginning", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_ICE_CAVERN_MQ_BEGINNING] = Region("Ice Cavern MQ Beginning", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_ICE_CAVERN_MQ_ENTRANCE_POT, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_ICE_CAVERN_ENTRYWAY, {[]{return true;}}), Entrance(RR_ICE_CAVERN_ENTRYWAY, {[]{return true;}}),
//It is in logic to use a pot to hit the toggle switch here. //It is in logic to use a pot to hit the toggle switch here.
@ -55,14 +66,22 @@ void RegionTable_Init_IceCavern() {
areaTable[RR_ICE_CAVERN_MQ_HUB] = Region("Ice Cavern MQ Hub", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_ICE_CAVERN_MQ_HUB] = Region("Ice Cavern MQ Hub", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, {}, { }, {
//Locations
LOCATION(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, logic->CanBreakPots()),
}, {
//Exits //Exits
//the switch for the glass blocking the entrance is linked to the switch that controls the glass around the skulltulla in RR_ICE_CAVERN_MQ_SCARECROW_ROOM //the switch for the glass blocking the entrance is linked to the switch that controls the glass around the skulltulla in RR_ICE_CAVERN_MQ_SCARECROW_ROOM
//if you clear the ice, you can hit it with a pot from here. //if you clear the ice, you can hit it with a pot from here.
Entrance(RR_ICE_CAVERN_BEGINNING, {[]{return logic->BlueFire();}}), Entrance(RR_ICE_CAVERN_BEGINNING, {[]{return logic->BlueFire();}}),
Entrance(RR_ICE_CAVERN_MQ_MAP_ROOM, {[]{return Here(RR_ICE_CAVERN_MQ_BEGINNING, []{return logic->CanKillEnemy(RE_WHITE_WOLFOS) && logic->CanKillEnemy(RE_FREEZARD);});}}), Entrance(RR_ICE_CAVERN_MQ_MAP_ROOM, {[]{return Here(RR_ICE_CAVERN_MQ_BEGINNING, []{return logic->CanKillEnemy(RE_WHITE_WOLFOS) && logic->CanKillEnemy(RE_FREEZARD);});}}),
Entrance(RR_ICE_CAVERN_MQ_COMPASS_ROOM, {[]{return logic->IsAdult && logic->BlueFire();}}), Entrance(RR_ICE_CAVERN_MQ_COMPASS_ROOM, {[]{return logic->IsAdult && logic->BlueFire();}}),
Entrance(RR_ICE_CAVERN_MQ_STALFOS_ROOM, {[]{return logic->BlueFire();}}), Entrance(RR_ICE_CAVERN_MQ_SCARECROW_ROOM, {[]{return logic->BlueFire();}}),
}); });
areaTable[RR_ICE_CAVERN_MQ_MAP_ROOM] = Region("Ice Cavern MQ Map Room", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_ICE_CAVERN_MQ_MAP_ROOM] = Region("Ice Cavern MQ Map Room", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {
@ -80,9 +99,19 @@ void RegionTable_Init_IceCavern() {
LOCATION(RC_ICE_CAVERN_MQ_GS_SCARECROW, logic->CanUse(RG_SCARECROW) || (logic->IsAdult && (logic->CanUse(RG_LONGSHOT) || ctx->GetTrickOption(RT_ICE_MQ_SCARECROW)))), LOCATION(RC_ICE_CAVERN_MQ_GS_SCARECROW, logic->CanUse(RG_SCARECROW) || (logic->IsAdult && (logic->CanUse(RG_LONGSHOT) || ctx->GetTrickOption(RT_ICE_MQ_SCARECROW)))),
}, { }, {
//Exits //Exits
Entrance(RR_ICE_CAVERN_MQ_HUB, {[]{return logic->BlueFire();}}), Entrance(RR_ICE_CAVERN_MQ_HUB, {[]{return logic->BlueFire();}}),
//Assumes RR_ICE_CAVERN_MQ_HUB access for a pot if using blue fire //Assumes RR_ICE_CAVERN_MQ_HUB access for a pot if using blue fire
Entrance(RR_ICE_CAVERN_MQ_STALFOS_ROOM, {[]{return logic->IsAdult && logic->BlueFire();}}), Entrance(RR_ICE_CAVERN_MQ_WEST_CORRIDOR, {[]{return logic->IsAdult && logic->BlueFire();}}),
});
areaTable[RR_ICE_CAVERN_MQ_WEST_CORRIDOR] = Region("Ice Cavern MQ West Corridor", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, logic->CanBreakPots()),
}, {
//Exits
Entrance(RR_ICE_CAVERN_MQ_SCARECROW_ROOM, {[]{return logic->BlueFire();}}),
Entrance(RR_ICE_CAVERN_MQ_STALFOS_ROOM, {[]{return true;}}),
}); });
areaTable[RR_ICE_CAVERN_MQ_STALFOS_ROOM] = Region("Ice Cavern MQ Stalfos Room", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_ICE_CAVERN_MQ_STALFOS_ROOM] = Region("Ice Cavern MQ Stalfos Room", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {
@ -106,6 +135,8 @@ void RegionTable_Init_IceCavern() {
//doing RT_ICE_MQ_RED_ICE_GS as child is untested, as I could not perform the trick reliably even as adult //doing RT_ICE_MQ_RED_ICE_GS as child is untested, as I could not perform the trick reliably even as adult
LOCATION(RC_ICE_CAVERN_MQ_GS_RED_ICE, (ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS)) || LOCATION(RC_ICE_CAVERN_MQ_GS_RED_ICE, (ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS)) ||
(logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE) && (logic->CanUse(RG_SONG_OF_TIME) || (logic->IsAdult && ctx->GetTrickOption(RT_ICE_MQ_RED_ICE_GS))) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA))), (logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE) && (logic->CanUse(RG_SONG_OF_TIME) || (logic->IsAdult && ctx->GetTrickOption(RT_ICE_MQ_RED_ICE_GS))) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA))),
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_POT_1, logic->CanBreakPots()),
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_POT_2, logic->CanBreakPots()),
}, {}); }, {});
} }
} }

View File

@ -51,13 +51,17 @@ void RegionTable_Init_JabuJabusBelly() {
areaTable[RR_JABU_JABUS_BELLY_B1_NORTH] = Region("Jabu Jabus Belly B1 North", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_JABU_JABUS_BELLY_B1_NORTH] = Region("Jabu Jabus Belly B1 North", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->JabuRutoIn1F, {[]{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE);}}), EventAccess(&logic->JabuRutoIn1F, {[]{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE);}}),
EventAccess(&logic->FairyPot, {[]{return logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_HOVER_BOOTS);}}), EventAccess(&logic->FairyPot, {[]{return logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK));}}),
}, { }, {
//Locations //Locations
LOCATION(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER, logic->HookshotOrBoomerang()), LOCATION(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER, logic->HookshotOrBoomerang()),
LOCATION(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER, logic->HookshotOrBoomerang()), LOCATION(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER, logic->HookshotOrBoomerang()),
LOCATION(RC_JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM, logic->HookshotOrBoomerang()), LOCATION(RC_JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM, logic->HookshotOrBoomerang()),
//PUT 2 OCTO ROOM POTS HERE LOCATION(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1, (logic->CanBreakPots() && (logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK, ED_BOOMERANG, false))))),
LOCATION(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2, (logic->CanBreakPots() && (logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK, ED_BOOMERANG, false))))),
LOCATION(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, (logic->CanBreakPots() && (logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK, ED_BOOMERANG, false))))),
LOCATION(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, (logic->CanBreakPots() && (logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK, ED_BOOMERANG, false))))),
LOCATION(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, (logic->CanBreakPots() && (logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK, ED_BOOMERANG, false))))),
}, { }, {
//Exits //Exits
Entrance(RR_JABU_JABUS_BELLY_MAIN, {[]{return true;}}), Entrance(RR_JABU_JABUS_BELLY_MAIN, {[]{return true;}}),
@ -76,7 +80,9 @@ void RegionTable_Init_JabuJabusBelly() {
(logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)) ||
//or killing the skull before climbing to grab the token //or killing the skull before climbing to grab the token
logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_BOMB_THROW)), logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_BOMB_THROW)),
//PUT WATER SWITCH POTS HERE LOCATION(RC_JABU_JABUS_BELLY_BASEMENT_POT_1, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_BASEMENT_POT_2, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_BASEMENT_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_JABU_JABUS_BELLY_B1_NORTH, {[]{return true;}}), Entrance(RR_JABU_JABUS_BELLY_B1_NORTH, {[]{return true;}}),
@ -134,7 +140,9 @@ void RegionTable_Init_JabuJabusBelly() {
EventAccess(&logic->NutPot, {[]{return true;}}), EventAccess(&logic->NutPot, {[]{return true;}}),
}, { }, {
//Locations //Locations
//PUT AFTER OCTO POTS HERE LOCATION(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_JABU_JABUS_BELLY_LIFT_UPPER, {[]{return logic->CanUse(RG_BOOMERANG);}}), Entrance(RR_JABU_JABUS_BELLY_LIFT_UPPER, {[]{return logic->CanUse(RG_BOOMERANG);}}),
@ -169,6 +177,8 @@ void RegionTable_Init_JabuJabusBelly() {
//Locations //Locations
LOCATION(RC_JABU_JABUS_BELLY_MQ_MAP_CHEST, logic->BlastOrSmash()), LOCATION(RC_JABU_JABUS_BELLY_MQ_MAP_CHEST, logic->BlastOrSmash()),
LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)), LOCATION(RC_JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)),
LOCATION(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_JABU_JABUS_BELLY_ENTRYWAY, {[]{return true;}}), Entrance(RR_JABU_JABUS_BELLY_ENTRYWAY, {[]{return true;}}),
@ -196,6 +206,8 @@ void RegionTable_Init_JabuJabusBelly() {
}, { }, {
//Locations //Locations
LOCATION(RC_JABU_JABUS_BELLY_MQ_COMPASS_CHEST, logic->CanHitSwitch(ED_HOOKSHOT, true) || (ctx->GetTrickOption(RT_JABU_MQ_RANG_JUMP) && logic->CanUse(RG_BOOMERANG) && logic->HasItem(RG_BRONZE_SCALE))), LOCATION(RC_JABU_JABUS_BELLY_MQ_COMPASS_CHEST, logic->CanHitSwitch(ED_HOOKSHOT, true) || (ctx->GetTrickOption(RT_JABU_MQ_RANG_JUMP) && logic->CanUse(RG_BOOMERANG) && logic->HasItem(RG_BRONZE_SCALE))),
LOCATION(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, {[]{return logic->HasItem(RG_BRONZE_SCALE);}}), Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, {[]{return logic->HasItem(RG_BRONZE_SCALE);}}),
@ -216,10 +228,12 @@ void RegionTable_Init_JabuJabusBelly() {
areaTable[RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM] = Region("Jabu Jabus Belly MQ Water Switch Room", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM] = Region("Jabu Jabus Belly MQ Water Switch Room", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST, true), LOCATION(RC_JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST, true),
//Implies logic->CanKillEnemy(RE_LIKE_LIKE) && logic->CanKillEnemy(RE_STINGER). Without swim, jump from the song of time block to the vines. //Implies logic->CanKillEnemy(RE_LIKE_LIKE) && logic->CanKillEnemy(RE_STINGER). Without swim, jump from the song of time block to the vines.
LOCATION(RC_JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST, logic->CanKillEnemy(RE_LIZALFOS)), LOCATION(RC_JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST, logic->CanKillEnemy(RE_LIZALFOS)),
LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM, (logic->CanUse(RG_SONG_OF_TIME) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)) || (ctx->GetTrickOption(RT_JABU_MQ_SOT_GS) && logic->CanUse(RG_BOOMERANG))), LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM, (logic->CanUse(RG_SONG_OF_TIME) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)) || (ctx->GetTrickOption(RT_JABU_MQ_SOT_GS) && logic->CanUse(RG_BOOMERANG))),
LOCATION(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
//without swim, jump from rang chest to the other side //without swim, jump from rang chest to the other side
@ -235,6 +249,8 @@ void RegionTable_Init_JabuJabusBelly() {
//Locations //Locations
//Implies CanKillEnemy(RE_LIKE_LIKE) //Implies CanKillEnemy(RE_LIKE_LIKE)
LOCATION(RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)), LOCATION(RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)),
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, {[]{return logic->CanUse(RG_BOOMERANG);}}), Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, {[]{return logic->CanUse(RG_BOOMERANG);}}),
@ -255,7 +271,7 @@ void RegionTable_Init_JabuJabusBelly() {
Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, {[]{return true;}}), Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, {[]{return true;}}),
}); });
areaTable[RR_JABU_JABUS_BELLY_MQ_INVISIBLE_KEESE_ROOM] = Region("Jabu Jabus Belly MQ Depths", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_JABU_JABUS_BELLY_MQ_INVISIBLE_KEESE_ROOM] = Region("Jabu Jabus Belly MQ Invisible Keese Room", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, //firstly, we can just use FAs to clear the web and then longshot the skull LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, //firstly, we can just use FAs to clear the web and then longshot the skull
logic->CanUse(RG_FIRE_ARROWS) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_LONGSHOT) || logic->CanUse(RG_FIRE_ARROWS) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_LONGSHOT) ||
@ -303,8 +319,9 @@ void RegionTable_Init_JabuJabusBelly() {
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, { }, {
//Locations //Locations
LOCATION(RC_JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)), LOCATION(RC_JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, logic->CanUse(RG_FAIRY_SLINGSHOT)),
LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, logic->CanUse(RG_BOOMERANG) || (ctx->GetTrickOption(RT_JABU_NEAR_BOSS_RANGED) && logic->CanUse(RG_HOOKSHOT))), LOCATION(RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, logic->CanUse(RG_BOOMERANG) || (ctx->GetTrickOption(RT_JABU_NEAR_BOSS_RANGED) && logic->CanUse(RG_HOOKSHOT))),
LOCATION(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM_EAST_LEDGE, {[]{return true;}}), Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM_EAST_LEDGE, {[]{return true;}}),
@ -316,7 +333,16 @@ void RegionTable_Init_JabuJabusBelly() {
| BOSS ROOM | | BOSS ROOM |
---------------------------*/ ---------------------------*/
areaTable[RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY] = areaTable[RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY] =
Region("Jabu Jabus Belly Boss Entryway", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {}, {}, Region("Jabu Jabus Belly Boss Entryway", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {},
{
//Locations
LOCATION(RC_JABU_JABUS_BELLY_BARINADE_POT_1, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_BARINADE_POT_2, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_BARINADE_POT_3, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_BARINADE_POT_4, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_BARINADE_POT_5, logic->CanBreakPots()),
LOCATION(RC_JABU_JABUS_BELLY_BARINADE_POT_6, logic->CanBreakPots()),
},
{ {
// Exits // Exits
Entrance(RR_JABU_JABUS_BELLY_NEAR_BOSS_ROOM, { [] { return ctx->GetDungeon(JABU_JABUS_BELLY)->IsVanilla(); } }), Entrance(RR_JABU_JABUS_BELLY_NEAR_BOSS_ROOM, { [] { return ctx->GetDungeon(JABU_JABUS_BELLY)->IsVanilla(); } }),
@ -341,4 +367,5 @@ void RegionTable_Init_JabuJabusBelly() {
Entrance(RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY, { [] { return false; } }), Entrance(RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY, { [] { return false; } }),
Entrance(RR_ZORAS_FOUNTAIN, { [] { return logic->JabuJabusBellyClear; } }, false), Entrance(RR_ZORAS_FOUNTAIN, { [] { return logic->JabuJabusBellyClear; } }, false),
}); });
} }

View File

@ -19,6 +19,17 @@ void RegionTable_Init_Kakariko() {
LOCATION(RC_KAK_GS_GUARDS_HOUSE, logic->IsChild && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_KAK_GS_GUARDS_HOUSE, logic->IsChild && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_KAK_GS_TREE, logic->IsChild && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_KAK_GS_TREE, logic->IsChild && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_KAK_GS_WATCHTOWER, logic->IsChild && (logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOMBCHU_5) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_LONGSHOT) || (ctx->GetTrickOption(RT_KAK_TOWER_GS) && logic->CanJumpslashExceptHammer())) && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_KAK_GS_WATCHTOWER, logic->IsChild && (logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOMBCHU_5) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_LONGSHOT) || (ctx->GetTrickOption(RT_KAK_TOWER_GS) && logic->CanJumpslashExceptHammer())) && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_KAK_NEAR_POTION_SHOP_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_POTION_SHOP_POT_2, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_POTION_SHOP_POT_3, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_IMPAS_HOUSE_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_IMPAS_HOUSE_POT_2, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_IMPAS_HOUSE_POT_3, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_GUARDS_HOUSE_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_GUARDS_HOUSE_POT_2, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_GUARDS_HOUSE_POT_3, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_MEDICINE_SHOP_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_KAK_NEAR_MEDICINE_SHOP_POT_2, logic->IsChild && logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_HYRULE_FIELD, {[]{return true;}}), Entrance(RR_HYRULE_FIELD, {[]{return true;}}),
@ -253,6 +264,12 @@ void RegionTable_Init_Kakariko() {
//Locations //Locations
LOCATION(RC_GRAVEYARD_HOOKSHOT_CHEST, true), LOCATION(RC_GRAVEYARD_HOOKSHOT_CHEST, true),
LOCATION(RC_GRAVEYARD_DAMPE_RACE_FREESTANDING_POH, logic->IsAdult || ctx->GetTrickOption(RT_GY_CHILD_DAMPE_RACE_POH)), LOCATION(RC_GRAVEYARD_DAMPE_RACE_FREESTANDING_POH, logic->IsAdult || ctx->GetTrickOption(RT_GY_CHILD_DAMPE_RACE_POH)),
LOCATION(RC_GY_DAMPES_GRAVE_POT_1, logic->CanBreakPots()),
LOCATION(RC_GY_DAMPES_GRAVE_POT_2, logic->CanBreakPots()),
LOCATION(RC_GY_DAMPES_GRAVE_POT_3, logic->CanBreakPots()),
LOCATION(RC_GY_DAMPES_GRAVE_POT_4, logic->CanBreakPots()),
LOCATION(RC_GY_DAMPES_GRAVE_POT_5, logic->CanBreakPots()),
LOCATION(RC_GY_DAMPES_GRAVE_POT_6, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_THE_GRAVEYARD, {[]{return true;}}), Entrance(RR_THE_GRAVEYARD, {[]{return true;}}),

View File

@ -48,6 +48,7 @@ void RegionTable_Init_LostWoods() {
areaTable[RR_KF_LINKS_HOUSE] = Region("KF Link's House", "KF Link's House", {}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_KF_LINKS_HOUSE] = Region("KF Link's House", "KF Link's House", {}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_KF_LINKS_HOUSE_COW, logic->IsAdult && logic->CanUse(RG_EPONAS_SONG) && logic->LinksCow), LOCATION(RC_KF_LINKS_HOUSE_COW, logic->IsAdult && logic->CanUse(RG_EPONAS_SONG) && logic->LinksCow),
LOCATION(RC_KF_LINKS_HOUSE_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_KOKIRI_FOREST, {[]{return true;}}) Entrance(RR_KOKIRI_FOREST, {[]{return true;}})
@ -69,12 +70,20 @@ void RegionTable_Init_LostWoods() {
Entrance(RR_KOKIRI_FOREST, {[]{return true;}}), Entrance(RR_KOKIRI_FOREST, {[]{return true;}}),
}); });
areaTable[RR_KF_HOUSE_OF_TWINS] = Region("KF House of Twins", "KF House of Twins", {}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_KF_HOUSE_OF_TWINS] = Region("KF House of Twins", "KF House of Twins", {}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_KF_TWINS_HOUSE_POT_1, logic->CanBreakPots()),
LOCATION(RC_KF_TWINS_HOUSE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_KOKIRI_FOREST, {[]{return true;}}), Entrance(RR_KOKIRI_FOREST, {[]{return true;}}),
}); });
areaTable[RR_KF_KNOW_IT_ALL_HOUSE] = Region("KF Know It All House", "KF Know It All House", {}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_KF_KNOW_IT_ALL_HOUSE] = Region("KF Know It All House", "KF Know It All House", {}, NO_DAY_NIGHT_CYCLE, {}, {
// Locations
LOCATION(RC_KF_BROTHERS_HOUSE_POT_1, logic->CanBreakPots()),
LOCATION(RC_KF_BROTHERS_HOUSE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_KOKIRI_FOREST, {[]{return true;}}), Entrance(RR_KOKIRI_FOREST, {[]{return true;}}),
}); });

View File

@ -26,6 +26,14 @@ void RegionTable_Init_ShadowTemple() {
//Locations //Locations
LOCATION(RC_SHADOW_TEMPLE_MAP_CHEST, logic->CanJumpslashExceptHammer()), LOCATION(RC_SHADOW_TEMPLE_MAP_CHEST, logic->CanJumpslashExceptHammer()),
LOCATION(RC_SHADOW_TEMPLE_HOVER_BOOTS_CHEST, (logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD))), LOCATION(RC_SHADOW_TEMPLE_HOVER_BOOTS_CHEST, (logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD))),
LOCATION(RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MAP_CHEST_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MAP_CHEST_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, {[]{return true;}}), Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, {[]{return true;}}),
@ -58,6 +66,10 @@ void RegionTable_Init_ShadowTemple() {
LOCATION(RC_SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM, logic->CanJumpslashExceptHammer()), LOCATION(RC_SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM, logic->CanJumpslashExceptHammer()),
LOCATION(RC_SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM, logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_SHADOW_UMBRELLA_GS) && logic->CanUse(RG_HOVER_BOOTS))), LOCATION(RC_SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM, logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_SHADOW_UMBRELLA_GS) && logic->CanUse(RG_HOVER_BOOTS))),
LOCATION(RC_SHADOW_TEMPLE_GS_SINGLE_GIANT_POT, logic->SmallKeys(RR_SHADOW_TEMPLE, 2, 3) && ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT)), LOCATION(RC_SHADOW_TEMPLE_GS_SINGLE_GIANT_POT, logic->SmallKeys(RR_SHADOW_TEMPLE, 2, 3) && ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT)),
LOCATION(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3, logic->CanBreakPots() && (ctx->GetTrickOption(RT_SHADOW_UMBRELLA) && logic->CanUse(RG_HOVER_BOOTS)) || logic->HasItem(RG_GORONS_BRACELET)),
LOCATION(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4, logic->CanBreakPots() && (ctx->GetTrickOption(RT_SHADOW_UMBRELLA) && logic->CanUse(RG_HOVER_BOOTS)) || logic->HasItem(RG_GORONS_BRACELET)),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_WIND_TUNNEL, {[]{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_SHADOW_TEMPLE, 3, 4);}}), Entrance(RR_SHADOW_TEMPLE_WIND_TUNNEL, {[]{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_SHADOW_TEMPLE, 3, 4);}}),
@ -69,6 +81,8 @@ void RegionTable_Init_ShadowTemple() {
LOCATION(RC_SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST, logic->CanJumpslashExceptHammer()), LOCATION(RC_SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST, logic->CanJumpslashExceptHammer()),
LOCATION(RC_SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST, true), LOCATION(RC_SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST, true),
LOCATION(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, logic->CanUse(RG_LONGSHOT) && logic->SmallKeys(RR_SHADOW_TEMPLE, 4, 5)), LOCATION(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, logic->CanUse(RG_LONGSHOT) && logic->SmallKeys(RR_SHADOW_TEMPLE, 4, 5)),
LOCATION(RC_SHADOW_TEMPLE_AFTER_WIND_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_AFTER_WIND_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_BEYOND_BOAT, {[]{return logic->CanJumpslashExceptHammer() && logic->CanUse(RG_ZELDAS_LULLABY) && logic->SmallKeys(RR_SHADOW_TEMPLE, 4, 5);}}), Entrance(RR_SHADOW_TEMPLE_BEYOND_BOAT, {[]{return logic->CanJumpslashExceptHammer() && logic->CanUse(RG_ZELDAS_LULLABY) && logic->SmallKeys(RR_SHADOW_TEMPLE, 4, 5);}}),
@ -81,7 +95,14 @@ void RegionTable_Init_ShadowTemple() {
LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST, logic->CanJumpslashExceptHammer()), LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST, logic->CanJumpslashExceptHammer()),
//RANDOTODO check if child can reach the token //RANDOTODO check if child can reach the token
LOCATION(RC_SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT, logic->IsAdult && logic->CanAttack()), LOCATION(RC_SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT, logic->IsAdult && logic->CanAttack()),
}, { LOCATION(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3, logic->CanBreakPots() && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DISTANT_SCARECROW) || (ctx->GetTrickOption(RT_SHADOW_STATUE) && logic->CanUse(RG_BOMBCHU_5)))),
LOCATION(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4, logic->CanBreakPots() && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DISTANT_SCARECROW) || (ctx->GetTrickOption(RT_SHADOW_STATUE) && logic->CanUse(RG_BOMBCHU_5)))),
LOCATION(RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_FLOORMASTER_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_FLOORMASTER_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, {[]{return (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DISTANT_SCARECROW) || (ctx->GetTrickOption(RT_SHADOW_STATUE) && logic->CanUse(RG_BOMBCHU_5))) && logic->SmallKeys(RR_SHADOW_TEMPLE, 5) && logic->CanUse(RG_HOVER_BOOTS) && logic->HasItem(RG_SHADOW_TEMPLE_BOSS_KEY);}}) Entrance(RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, {[]{return (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DISTANT_SCARECROW) || (ctx->GetTrickOption(RT_SHADOW_STATUE) && logic->CanUse(RG_BOMBCHU_5))) && logic->SmallKeys(RR_SHADOW_TEMPLE, 5) && logic->CanUse(RG_HOVER_BOOTS) && logic->HasItem(RG_SHADOW_TEMPLE_BOSS_KEY);}})
}); });
@ -109,9 +130,13 @@ void RegionTable_Init_ShadowTemple() {
//Assumes we're in the "main" area and needed lens to enter. logic will need changes if a void warp puts us somewhere weird //Assumes we're in the "main" area and needed lens to enter. logic will need changes if a void warp puts us somewhere weird
areaTable[RR_SHADOW_TEMPLE_MQ_DEAD_HAND_AREA] = Region("Shadow Temple MQ Dead Hand Region", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_SHADOW_TEMPLE_MQ_DEAD_HAND_AREA] = Region("Shadow Temple MQ Dead Hand Region", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_SHADOW_TEMPLE_MQ_COMPASS_CHEST, logic->CanKillEnemy(RE_REDEAD)), LOCATION(RC_SHADOW_TEMPLE_MQ_COMPASS_CHEST, logic->CanKillEnemy(RE_REDEAD)),
//There's a shared flag tied to some glass here. eye target here and killing an enemy group later in the dungeon toggles. I'm building the logic as "intended", assuming the switch needs flipping //There's a shared flag tied to some glass here. eye target here and killing an enemy group later in the dungeon toggles. I'm building the logic as "intended", assuming the switch needs flipping
LOCATION(RC_SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST, logic->CanKillEnemy(RE_DEAD_HAND) && (logic->IsChild || logic->CanUse(RG_SONG_OF_TIME)) && logic->CanHitEyeTargets()), LOCATION(RC_SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST, logic->CanKillEnemy(RE_DEAD_HAND) && (logic->IsChild || logic->CanUse(RG_SONG_OF_TIME)) && logic->CanHitEyeTargets()),
LOCATION(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_SPINNER_ROOM, {[]{return true;}}), Entrance(RR_SHADOW_TEMPLE_MQ_SPINNER_ROOM, {[]{return true;}}),
@ -180,31 +205,36 @@ void RegionTable_Init_ShadowTemple() {
LOCATION(RC_SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, logic->CanUse(RG_LONGSHOT)), LOCATION(RC_SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, logic->CanUse(RG_LONGSHOT)),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_FALLING_SPIKES_ROOM, {[]{return Here(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, []{return logic->CanJumpslash() || logic->HasExplosives();});}}), Entrance(RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM, {[]{return Here(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, []{return logic->CanJumpslash() || logic->HasExplosives();});}}),
Entrance(RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM, {[]{return logic->CanUse(RG_HOVER_BOOTS) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ_PLATFORM) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}}), Entrance(RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM, {[]{return logic->CanUse(RG_HOVER_BOOTS) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ_PLATFORM) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->SmallKeys(RR_SHADOW_TEMPLE, 3);}}),
}); });
areaTable[RR_SHADOW_TEMPLE_MQ_FALLING_SPIKES_ROOM] = Region("Shadow Temple MQ Falling Spikes Room", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM] = Region("Shadow Temple MQ Stone Umbrella Room", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST, true), LOCATION(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST, true),
//Assuming the known setup for RT_SHADOW_UMBRELLA and RT_SHADOW_UMBRELLA_GS, probably possible without sword + shield. //Assuming the known setup for RT_SHADOW_UMBRELLA and RT_SHADOW_UMBRELLA_GS, probably possible without sword + shield.
//Handling the trick here instead of upper as using the block to climb is not a valid method for getting this skull without other tricks to use the block before it is intended //Handling the trick here instead of upper as using the block to climb is not a valid method for getting this skull without other tricks to use the block before it is intended
LOCATION(RC_SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG) || LOCATION(RC_SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG) ||
(ctx->GetTrickOption(RT_SHADOW_UMBRELLA_GS) && ctx->GetTrickOption(RT_SHADOW_UMBRELLA) && logic->CanUse(RG_HOVER_BOOTS) && logic->CanStandingShield() && logic->CanUse(RG_MASTER_SWORD))), (ctx->GetTrickOption(RT_SHADOW_UMBRELLA_GS) && ctx->GetTrickOption(RT_SHADOW_UMBRELLA) && logic->CanUse(RG_HOVER_BOOTS) && logic->CanStandingShield() && logic->CanUse(RG_MASTER_SWORD))),
LOCATION(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT, logic->CanUse(RG_BOOMERANG)),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, {[]{return Here(RR_SHADOW_TEMPLE_MQ_FALLING_SPIKES_ROOM, []{return ctx->GetTrickOption(RT_VISIBLE_COLLISION) || logic->CanHitSwitch();});}}), Entrance(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, {[]{return Here(RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM, []{return ctx->GetTrickOption(RT_VISIBLE_COLLISION) || logic->CanHitSwitch();});}}),
//Assuming the known setup for RT_SHADOW_UMBRELLA, probably possible without sword + shield //Assuming the known setup for RT_SHADOW_UMBRELLA, probably possible without sword + shield
Entrance(RR_SHADOW_TEMPLE_MQ_UPPER_FALLING_SPIKES_ROOM, {[]{return logic->IsAdult && (logic->HasItem(RG_GORONS_BRACELET) || (ctx->GetTrickOption(RT_SHADOW_UMBRELLA) && logic->CanUse(RG_HOVER_BOOTS) && logic->CanStandingShield() && logic->CanUse(RG_MASTER_SWORD)));}}), Entrance(RR_SHADOW_TEMPLE_MQ_UPPER_STONE_UMBRELLA, {[]{return logic->IsAdult && (logic->HasItem(RG_GORONS_BRACELET) || (ctx->GetTrickOption(RT_SHADOW_UMBRELLA) && logic->CanUse(RG_HOVER_BOOTS) && logic->CanStandingShield() && logic->CanUse(RG_MASTER_SWORD)));}}),
}); });
areaTable[RR_SHADOW_TEMPLE_MQ_UPPER_FALLING_SPIKES_ROOM] = Region("Shadow Temple MQ Upper Falling Spikes Room", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_SHADOW_TEMPLE_MQ_UPPER_STONE_UMBRELLA] = Region("Shadow Temple MQ Upper Stone Umbrella", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST, true), LOCATION(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST, true),
LOCATION(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST, true), LOCATION(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST, true),
LOCATION(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_FALLING_SPIKES_ROOM, {[]{return true;}}), Entrance(RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM, {[]{return true;}}),
}); });
//while the spikes here are annoying, they don't really stop you doing anything, so I'll assume either lens trick, lens to see them, or taking damage from them. Not hovers though as a new player won't see the threat without lens to react properly //while the spikes here are annoying, they don't really stop you doing anything, so I'll assume either lens trick, lens to see them, or taking damage from them. Not hovers though as a new player won't see the threat without lens to react properly
@ -261,6 +291,8 @@ void RegionTable_Init_ShadowTemple() {
LOCATION(RC_SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST, logic->CanKillEnemy(RE_GIBDO)), LOCATION(RC_SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST, logic->CanKillEnemy(RE_GIBDO)),
LOCATION(RC_SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST, logic->HasExplosives() && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH))), LOCATION(RC_SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST, logic->HasExplosives() && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH))),
LOCATION(RC_SHADOW_TEMPLE_MQ_GS_AFTER_WIND, logic->HasExplosives()), LOCATION(RC_SHADOW_TEMPLE_MQ_GS_AFTER_WIND, logic->HasExplosives()),
LOCATION(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
//child can make it using the wind strat //child can make it using the wind strat
@ -281,15 +313,21 @@ void RegionTable_Init_ShadowTemple() {
areaTable[RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT] = Region("Shadow Temple MQ Beyond Boat", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT] = Region("Shadow Temple MQ Beyond Boat", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
//It's a trick on N64 to kill this and drop down to collect this with normal weapons, as doing so without the statue dropped doing voids you to before the boat //It's a trick on N64 to kill this and drop down to collect this with normal weapons, as doing so without the statue being dropped voids you to before the boat
//hilariously, you can also hit this with a pot before you bring down the statue, but there's no great way to reset it without crossing. the statues collision is very inconvenient afterwards //hilariously, you can also hit this with a pot before you bring down the statue, but there's no great way to reset it without crossing. the statues collision is very inconvenient afterwards
LOCATION(RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), LOCATION(RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)),
LOCATION(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_ACROSS_CHASM, {[]{return Here(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, []{return logic->CanUse(RG_FAIRY_BOW) || (ctx->GetTrickOption(RT_SHADOW_STATUE) && logic->CanUse(RG_BOMBCHU_5));});}}), Entrance(RR_SHADOW_TEMPLE_MQ_ACROSS_CHASM, {[]{return Here(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, []{return logic->CanUse(RG_FAIRY_BOW) || (ctx->GetTrickOption(RT_SHADOW_STATUE) && logic->CanUse(RG_BOMBCHU_5));});}}),
}); });
areaTable[RR_SHADOW_TEMPLE_MQ_ACROSS_CHASM] = Region("Shadow Temple MQ Across Chasm", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SHADOW_TEMPLE_MQ_ACROSS_CHASM] = Region("Shadow Temple MQ Across Chasm", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, {[]{return Here(RR_SHADOW_TEMPLE_MQ_ACROSS_CHASM, []{return logic->CanDetonateUprightBombFlower();}) && logic->IsAdult;}}), Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, {[]{return Here(RR_SHADOW_TEMPLE_MQ_ACROSS_CHASM, []{return logic->CanDetonateUprightBombFlower();}) && logic->IsAdult;}}),
//assumes RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT by previous access. If backwards shadow ever exists remember that child cannot jump onto the statue from this side and make an event for the switch //assumes RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT by previous access. If backwards shadow ever exists remember that child cannot jump onto the statue from this side and make an event for the switch
@ -313,6 +351,8 @@ void RegionTable_Init_ShadowTemple() {
//Locations //Locations
LOCATION(RC_SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST, (logic->CanUse(RG_LENS_OF_TRUTH) || ctx->GetTrickOption(RT_LENS_SHADOW_MQ_DEADHAND)) && logic->CanKillEnemy(RE_DEAD_HAND) && logic->CanDetonateUprightBombFlower()), LOCATION(RC_SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST, (logic->CanUse(RG_LENS_OF_TRUTH) || ctx->GetTrickOption(RT_LENS_SHADOW_MQ_DEADHAND)) && logic->CanKillEnemy(RE_DEAD_HAND) && logic->CanDetonateUprightBombFlower()),
LOCATION(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, true), LOCATION(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, true),
LOCATION(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, logic->CanBreakPots()),
LOCATION(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, {[]{return true;}}), Entrance(RR_SHADOW_TEMPLE_MQ_BEYOND_BOAT, {[]{return true;}}),
@ -323,6 +363,7 @@ void RegionTable_Init_ShadowTemple() {
//Locations //Locations
LOCATION(RC_SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST, logic->CanUse(RG_DINS_FIRE)), LOCATION(RC_SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST, logic->CanUse(RG_DINS_FIRE)),
LOCATION(RC_SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST, logic->CanUse(RG_DINS_FIRE)), LOCATION(RC_SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST, logic->CanUse(RG_DINS_FIRE)),
LOCATION(RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SHADOW_TEMPLE_MQ_INVISIBLE_MAZE, {[]{return logic->SmallKeys(RR_SHADOW_TEMPLE, 6) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}}),}); Entrance(RR_SHADOW_TEMPLE_MQ_INVISIBLE_MAZE, {[]{return logic->SmallKeys(RR_SHADOW_TEMPLE, 6) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH));}}),});

View File

@ -19,7 +19,11 @@ void RegionTable_Init_SpiritTemple() {
| VANILLA DUNGEON | | VANILLA DUNGEON |
---------------------------*/ ---------------------------*/
if (ctx->GetDungeon(SPIRIT_TEMPLE)->IsVanilla()) { if (ctx->GetDungeon(SPIRIT_TEMPLE)->IsVanilla()) {
areaTable[RR_SPIRIT_TEMPLE_LOBBY] = Region("Spirit Temple Lobby", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SPIRIT_TEMPLE_LOBBY] = Region("Spirit Temple Lobby", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_SPIRIT_TEMPLE_LOBBY_POT_1, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_LOBBY_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_ENTRYWAY, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_ENTRYWAY, {[]{return true;}}),
Entrance(RR_SPIRIT_TEMPLE_CHILD, {[]{return logic->IsChild;}}), Entrance(RR_SPIRIT_TEMPLE_CHILD, {[]{return logic->IsChild;}}),
@ -34,6 +38,10 @@ void RegionTable_Init_SpiritTemple() {
LOCATION(RC_SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))), LOCATION(RC_SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
LOCATION(RC_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE))), LOCATION(RC_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE))),
LOCATION(RC_SPIRIT_TEMPLE_GS_METAL_FENCE, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))), LOCATION(RC_SPIRIT_TEMPLE_GS_METAL_FENCE, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
LOCATION(RC_SPIRIT_TEMPLE_ANUBIS_POT_1, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
LOCATION(RC_SPIRIT_TEMPLE_ANUBIS_POT_2, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
LOCATION(RC_SPIRIT_TEMPLE_ANUBIS_POT_3, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
LOCATION(RC_SPIRIT_TEMPLE_ANUBIS_POT_4, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
}, { }, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_CHILD_CLIMB, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}}), Entrance(RR_SPIRIT_TEMPLE_CHILD_CLIMB, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}}),
@ -47,6 +55,7 @@ void RegionTable_Init_SpiritTemple() {
(logic->TakeDamage() && (logic->CanJumpslashExceptHammer() || logic->HasProjectile(HasProjectileAge::Child))) || (logic->TakeDamage() && (logic->CanJumpslashExceptHammer() || logic->HasProjectile(HasProjectileAge::Child))) ||
(logic->IsChild && logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && logic->HasProjectile(HasProjectileAge::Child)) || (logic->IsChild && logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && logic->HasProjectile(HasProjectileAge::Child)) ||
((logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF))) && logic->CanUse(RG_SILVER_GAUNTLETS) && (logic->HasProjectile(HasProjectileAge::Adult) || (logic->TakeDamage() && logic->CanJumpslashExceptHammer())))), ((logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF))) && logic->CanUse(RG_SILVER_GAUNTLETS) && (logic->HasProjectile(HasProjectileAge::Adult) || (logic->TakeDamage() && logic->CanJumpslashExceptHammer())))),
LOCATION(RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_CENTRAL_CHAMBER, {[]{return logic->HasExplosives() || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS));}}), Entrance(RR_SPIRIT_TEMPLE_CENTRAL_CHAMBER, {[]{return logic->HasExplosives() || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS));}}),
@ -87,6 +96,14 @@ void RegionTable_Init_SpiritTemple() {
ctx->GetTrickOption(RT_SPIRIT_LOBBY_GS) && logic->CanUse(RG_BOOMERANG) && (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_SPIRIT_LOBBY_JUMP))) || ctx->GetTrickOption(RT_SPIRIT_LOBBY_GS) && logic->CanUse(RG_BOOMERANG) && (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_SPIRIT_LOBBY_JUMP))) ||
(ctx->GetTrickOption(RT_SPIRIT_LOBBY_GS) && logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && logic->HasExplosives() && logic->CanUse(RG_BOOMERANG)) || (ctx->GetTrickOption(RT_SPIRIT_LOBBY_GS) && logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && logic->HasExplosives() && logic->CanUse(RG_BOOMERANG)) ||
(logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) && logic->CanUse(RG_SILVER_GAUNTLETS) && (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_SPIRIT_LOBBY_JUMP)))), (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) && logic->CanUse(RG_SILVER_GAUNTLETS) && (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_SPIRIT_LOBBY_JUMP)))),
LOCATION(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
LOCATION(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
LOCATION(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
LOCATION(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
LOCATION(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
LOCATION(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
LOCATION(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
LOCATION(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6, logic->CanBreakPots() && (logic->SmallKeys(RR_SPIRIT_TEMPLE, 3) || (logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && logic->BombchuRefill() && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF)))),
}, { }, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_OUTDOOR_HANDS, {[]{return logic->CanJumpslashExceptHammer() || logic->HasExplosives();}}), Entrance(RR_SPIRIT_TEMPLE_OUTDOOR_HANDS, {[]{return logic->CanJumpslashExceptHammer() || logic->HasExplosives();}}),
@ -108,6 +125,7 @@ void RegionTable_Init_SpiritTemple() {
LOCATION(RC_SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST, (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS))) && logic->HasExplosives()), LOCATION(RC_SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST, (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS))) && logic->HasExplosives()),
LOCATION(RC_SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_LENS_SPIRIT) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->HasExplosives()), LOCATION(RC_SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_LENS_SPIRIT) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->HasExplosives()),
LOCATION(RC_SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_LENS_SPIRIT) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->HasExplosives()), LOCATION(RC_SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_LENS_SPIRIT) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->HasExplosives()),
LOCATION(RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_BEYOND_FINAL_LOCKED_DOOR, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && (ctx->GetTrickOption(RT_SPIRIT_WALL) || logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_BOMBCHU_5) || ((logic->CanUse(RG_BOMB_BAG) || logic->CanUse(RG_NUTS) || logic->CanUse(RG_DINS_FIRE)) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_MEGATON_HAMMER))));}}), Entrance(RR_SPIRIT_TEMPLE_BEYOND_FINAL_LOCKED_DOOR, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && (ctx->GetTrickOption(RT_SPIRIT_WALL) || logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_BOMBCHU_5) || ((logic->CanUse(RG_BOMB_BAG) || logic->CanUse(RG_NUTS) || logic->CanUse(RG_DINS_FIRE)) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_MEGATON_HAMMER))));}}),
@ -141,6 +159,10 @@ void RegionTable_Init_SpiritTemple() {
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST, Here(RR_SPIRIT_TEMPLE_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()), LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST, Here(RR_SPIRIT_TEMPLE_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST, logic->CanHitSwitch(ED_BOOMERANG)), LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST, logic->CanHitSwitch(ED_BOOMERANG)),
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST, logic->Spirit1FSilverRupees), LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST, logic->Spirit1FSilverRupees),
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_ENTRYWAY, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_ENTRYWAY, {[]{return true;}}),
@ -155,6 +177,7 @@ void RegionTable_Init_SpiritTemple() {
}, { }, {
//Locations //Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST, logic->MQSpiritTimeTravelChest), LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST, logic->MQSpiritTimeTravelChest),
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_SOUTH, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_1F_WEST, []{return logic->CanKillEnemy(RE_TORCH_SLUG);});}}), Entrance(RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_SOUTH, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_1F_WEST, []{return logic->CanKillEnemy(RE_TORCH_SLUG);});}}),
@ -170,13 +193,24 @@ void RegionTable_Init_SpiritTemple() {
}); });
// Room to store the 2 pots in to handle glitch logic going backwards around the loop later // Room to store the 2 pots in to handle glitch logic going backwards around the loop later
areaTable[RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_NORTH] = Region("Spirit Temple MQ Gibdo Room North", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {}); areaTable[RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_NORTH] = Region("Spirit Temple MQ Gibdo Room North", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2, logic->CanBreakPots()),
}, {});
areaTable[RR_SPIRIT_TEMPLE_MQ_TURNTABLE_ROOM] = Region("Spirit Temple Turntable Room", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_SPIRIT_TEMPLE_MQ_TURNTABLE_ROOM] = Region("Spirit Temple Turntable Room", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
//For non-fairy pot items, you can also get them with rang without killing the stalfos //For non-fairy pot items, you can also get them with rang without killing the stalfos
EventAccess(&logic->FairyPot, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_TURNTABLE_ROOM, []{return logic->CanKillEnemy(RE_STALFOS);});}}), EventAccess(&logic->FairyPot, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_TURNTABLE_ROOM, []{return logic->CanKillEnemy(RE_STALFOS);});}}),
}, {}, { }, {
//Locations
//implies logic->CanBreakPots()
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1, logic->CanUse(RG_BOOMERANG) || logic->CanKillEnemy(RE_STALFOS)),
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2, logic->CanUse(RG_BOOMERANG) || logic->CanKillEnemy(RE_STALFOS)),
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3, logic->CanUse(RG_BOOMERANG) || logic->CanKillEnemy(RE_STALFOS)),
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4, logic->CanUse(RG_BOOMERANG) || logic->CanKillEnemy(RE_STALFOS)),
}, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_NORTH, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_1F_GIBDO_ROOM_NORTH, {[]{return true;}}),
Entrance(RR_SPIRIT_TEMPLE_MQ_MAP_ROOM_NORTH, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_TURNTABLE_ROOM, []{return logic->CanKillEnemy(RE_STALFOS);});}}), Entrance(RR_SPIRIT_TEMPLE_MQ_MAP_ROOM_NORTH, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_TURNTABLE_ROOM, []{return logic->CanKillEnemy(RE_STALFOS);});}}),
@ -219,8 +253,10 @@ void RegionTable_Init_SpiritTemple() {
Entrance(RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}}), Entrance(RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}}),
}); });
//THIS REGION NEEDS MQSpiritSharedBrokenWallRoom WHEN ADDING THE POT areaTable[RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE] = Region("Spirit Temple MQ Under Like Like", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
areaTable[RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE] = Region("Spirit Temple MQ Under Like Like", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { //Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT, MQSpiritSharedBrokenWallRoom(RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE, []{return logic->CanBreakPots();})),
}, {
//Exits //Exits
//This covers adult access only, as child arrives here from the other side of this door //This covers adult access only, as child arrives here from the other side of this door
Entrance(RR_SPIRIT_TEMPLE_MQ_WEST_1F_RUSTED_SWITCH, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 7);}}), Entrance(RR_SPIRIT_TEMPLE_MQ_WEST_1F_RUSTED_SWITCH, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 7);}}),
@ -243,7 +279,13 @@ void RegionTable_Init_SpiritTemple() {
areaTable[RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM] = Region("Spirit Temple MQ Statue Room", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM] = Region("Spirit Temple MQ Statue Room", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_COMPASS_CHEST, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, []{return logic->CanHitEyeTargets();})), LOCATION(RC_SPIRIT_TEMPLE_MQ_COMPASS_CHEST, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, []{return logic->CanHitEyeTargets();})),
LOCATION(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, []{return ((logic->IsAdult || logic->CanJumpslash()) && logic->CanUse(RG_BOOMERANG)) ||
((logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_SONG_OF_TIME) || (logic->IsAdult && ctx->GetTrickOption(RT_SPIRIT_LOBBY_JUMP))) && logic->CanBreakPots());})),
LOCATION(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, []{return (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_SONG_OF_TIME) || (logic->IsAdult && ctx->GetTrickOption(RT_SPIRIT_LOBBY_JUMP)) && logic->CanBreakPots());})),
LOCATION(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, []{return logic->CanBreakPots();})),
LOCATION(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, []{return logic->CanBreakPots();})),
LOCATION(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, []{return logic->CanBreakPots();})),
}, { }, {
//Exits //Exits
//we check possible adult access directly in MQSpiritSharedBrokenWallRoom, so this exit only covers Certain Access //we check possible adult access directly in MQSpiritSharedBrokenWallRoom, so this exit only covers Certain Access
@ -260,6 +302,8 @@ void RegionTable_Init_SpiritTemple() {
//We don't need Shared here because If we are checking as child, universe 2 adult access needs nothing so it always passes, and if we are checking as adult, it is Certain Access //We don't need Shared here because If we are checking as child, universe 2 adult access needs nothing so it always passes, and if we are checking as adult, it is Certain Access
LOCATION(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST, true), LOCATION(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST, true),
LOCATION(RC_SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM, []{return logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_SPIRIT_MQ_SUN_BLOCK_GS) && logic->CanUse(RG_BOOMERANG));})), LOCATION(RC_SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM, []{return logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_SPIRIT_MQ_SUN_BLOCK_GS) && logic->CanUse(RG_BOOMERANG));})),
LOCATION(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM, []{return logic->CanBreakPots();})),
LOCATION(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2, MQSpiritSharedStatueRoom(RR_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM, []{return logic->CanBreakPots();})),
}, { }, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, {[]{return true;}}),
@ -341,7 +385,11 @@ void RegionTable_Init_SpiritTemple() {
//Events //Events
//Assumes RR_SPIRIT_TEMPLE_MQ_LOBBY access //Assumes RR_SPIRIT_TEMPLE_MQ_LOBBY access
EventAccess(&logic->Spirit1FSilverRupees, {[]{return logic->CanUse(RG_MEGATON_HAMMER);}}), EventAccess(&logic->Spirit1FSilverRupees, {[]{return logic->CanUse(RG_MEGATON_HAMMER);}}),
}, {}, { }, {
//Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_MQ_LOBBY, {[]{return logic->CanUse(RG_MEGATON_HAMMER);}}), Entrance(RR_SPIRIT_TEMPLE_MQ_LOBBY, {[]{return logic->CanUse(RG_MEGATON_HAMMER);}}),
Entrance(RR_SPIRIT_TEMPLE_MQ_THREE_SUNS_ROOM_1F, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_THREE_SUNS_ROOM_1F, {[]{return true;}}),
@ -425,7 +473,11 @@ void RegionTable_Init_SpiritTemple() {
Entrance(RR_SPIRIT_TEMPLE_MQ_SOT_SUN_ROOM, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_SOT_SUN_ROOM, {[]{return true;}}),
}); });
areaTable[RR_SPIRIT_TEMPLE_MQ_BIG_WALL] = Region("Spirit Temple MQ Big Wall", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SPIRIT_TEMPLE_MQ_BIG_WALL] = Region("Spirit Temple MQ Big Wall", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_MQ_FOUR_BEAMOS_ROOM, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_FOUR_BEAMOS_ROOM, {[]{return true;}}),
//technically we only need to avoid them, but the sheer height and the moving walls makes getting to the top after only stunning them very difficult/impossible //technically we only need to avoid them, but the sheer height and the moving walls makes getting to the top after only stunning them very difficult/impossible
@ -433,7 +485,11 @@ void RegionTable_Init_SpiritTemple() {
Entrance(RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL, {[]{return logic->CanKillEnemy(RE_KEESE);}}), Entrance(RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL, {[]{return logic->CanKillEnemy(RE_KEESE);}}),
}); });
areaTable[RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL] = Region("Spirit Temple MQ 4F Central", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL] = Region("Spirit Temple MQ 4F Central", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_MQ_BIG_WALL, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_BIG_WALL, {[]{return true;}}),
Entrance(RR_SPIRIT_TEMPLE_MQ_NINE_CHAIRS_ROOM, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 7);}}), Entrance(RR_SPIRIT_TEMPLE_MQ_NINE_CHAIRS_ROOM, {[]{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 7);}}),
@ -450,7 +506,13 @@ void RegionTable_Init_SpiritTemple() {
Entrance(RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL, {[]{return true;}}),
}); });
areaTable[RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_ROOM] = Region("Spirit Temple MQ Big Mirror Room", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_ROOM] = Region("Spirit Temple MQ Big Mirror Room", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL, {[]{return true;}}), Entrance(RR_SPIRIT_TEMPLE_MQ_4F_CENTRAL, {[]{return true;}}),
Entrance(RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CAVE, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_ROOM, []{return logic->CanUse(RG_MEGATON_HAMMER);});}}), Entrance(RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CAVE, {[]{return Here(RR_SPIRIT_TEMPLE_MQ_BIG_MIRROR_ROOM, []{return logic->CanUse(RG_MEGATON_HAMMER);});}}),

View File

@ -20,7 +20,11 @@ void RegionTable_Init_WaterTemple() {
---------------------------*/ ---------------------------*/
if (ctx->GetDungeon(WATER_TEMPLE)->IsVanilla()) { if (ctx->GetDungeon(WATER_TEMPLE)->IsVanilla()) {
//Water Temple logic currently assumes that the locked door leading to the upper water raising location is unlocked from the start //Water Temple logic currently assumes that the locked door leading to the upper water raising location is unlocked from the start
areaTable[RR_WATER_TEMPLE_LOBBY] = Region("Water Temple Lobby", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_LOBBY] = Region("Water Temple Lobby", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, logic->CanBreakPots() && (logic->CanWaterTempleLowFromHigh || logic->CanWaterTempleMiddle || (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)))),
LOCATION(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2, logic->CanBreakPots() && (logic->CanWaterTempleLowFromHigh || logic->CanWaterTempleMiddle || (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)))),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_ENTRYWAY, {[]{return true;}}), Entrance(RR_WATER_TEMPLE_ENTRYWAY, {[]{return true;}}),
Entrance(RR_WATER_TEMPLE_EAST_LOWER, {[]{return logic->CanWaterTempleLowFromHigh || ((ctx->GetTrickOption(RT_FEWER_TUNIC_REQUIREMENTS) || logic->CanUse(RG_ZORA_TUNIC)) && (logic->CanUse(RG_IRON_BOOTS) || (logic->CanUse(RG_LONGSHOT) && ctx->GetTrickOption(RT_WATER_LONGSHOT_TORCH))));}}), Entrance(RR_WATER_TEMPLE_EAST_LOWER, {[]{return logic->CanWaterTempleLowFromHigh || ((ctx->GetTrickOption(RT_FEWER_TUNIC_REQUIREMENTS) || logic->CanUse(RG_ZORA_TUNIC)) && (logic->CanUse(RG_IRON_BOOTS) || (logic->CanUse(RG_LONGSHOT) && ctx->GetTrickOption(RT_WATER_LONGSHOT_TORCH))));}}),
@ -40,7 +44,11 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_EAST_LOWER] = Region("Water Temple East Lower", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_WATER_TEMPLE_EAST_LOWER] = Region("Water Temple East Lower", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->CanWaterTempleLowFromHigh, {[]{return logic->CanWaterTempleLowFromHigh || logic->CanUse(RG_ZELDAS_LULLABY);}}), EventAccess(&logic->CanWaterTempleLowFromHigh, {[]{return logic->CanWaterTempleLowFromHigh || logic->CanUse(RG_ZELDAS_LULLABY);}}),
}, {}, { }, {
//Locations
LOCATION(RC_WATER_TEMPLE_TORCH_POT_1, logic->CanBreakPots() && (logic->CanWaterTempleLowFromHigh || (logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_IRON_BOOTS)))),
LOCATION(RC_WATER_TEMPLE_TORCH_POT_2, logic->CanBreakPots() && (logic->CanWaterTempleLowFromHigh || (logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_IRON_BOOTS)))),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanWaterTempleLowFromHigh || ((ctx->GetTrickOption(RT_FEWER_TUNIC_REQUIREMENTS) || logic->CanUse(RG_ZORA_TUNIC)) && logic->CanUse(RG_IRON_BOOTS));}}), Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanWaterTempleLowFromHigh || ((ctx->GetTrickOption(RT_FEWER_TUNIC_REQUIREMENTS) || logic->CanUse(RG_ZORA_TUNIC)) && logic->CanUse(RG_IRON_BOOTS));}}),
Entrance(RR_WATER_TEMPLE_MAP_ROOM, {[]{return logic->CanWaterTempleHigh;}}), Entrance(RR_WATER_TEMPLE_MAP_ROOM, {[]{return logic->CanWaterTempleHigh;}}),
@ -88,7 +96,11 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_BOULDERS_UPPER, {[]{return (logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_WATER_NORTH_BASEMENT_LEDGE_JUMP))) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanUse(RG_IRON_BOOTS));}}), Entrance(RR_WATER_TEMPLE_BOULDERS_UPPER, {[]{return (logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || ctx->GetTrickOption(RT_WATER_NORTH_BASEMENT_LEDGE_JUMP))) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanUse(RG_IRON_BOOTS));}}),
}); });
areaTable[RR_WATER_TEMPLE_BLOCK_ROOM] = Region("Water Temple Block Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_BLOCK_ROOM] = Region("Water Temple Block Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_BOULDERS_LOWER, {[]{return (logic->HasItem(RG_GORONS_BRACELET) && logic->HasExplosives()) || logic->CanUse(RG_HOOKSHOT);}}), Entrance(RR_WATER_TEMPLE_BOULDERS_LOWER, {[]{return (logic->HasItem(RG_GORONS_BRACELET) && logic->HasExplosives()) || logic->CanUse(RG_HOOKSHOT);}}),
Entrance(RR_WATER_TEMPLE_JETS_ROOM, {[]{return (logic->HasItem(RG_GORONS_BRACELET) && logic->HasExplosives()) || (logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_HOVER_BOOTS));}}), Entrance(RR_WATER_TEMPLE_JETS_ROOM, {[]{return (logic->HasItem(RG_GORONS_BRACELET) && logic->HasExplosives()) || (logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_HOVER_BOOTS));}}),
@ -113,6 +125,8 @@ void RegionTable_Init_WaterTemple() {
}, { }, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_BOSS_KEY_CHEST, true), LOCATION(RC_WATER_TEMPLE_BOSS_KEY_CHEST, true),
LOCATION(RC_WATER_TEMPLE_BOSS_KEY_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_BOSS_KEY_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_BOULDERS_UPPER, {[]{return (logic->CanUse(RG_IRON_BOOTS) || (logic->IsAdult && ctx->GetTrickOption(RT_WATER_BK_JUMP_DIVE)) || logic->IsChild || logic->HasItem(RG_SILVER_SCALE)) && logic->SmallKeys(RR_WATER_TEMPLE, 5);}}), Entrance(RR_WATER_TEMPLE_BOULDERS_UPPER, {[]{return (logic->CanUse(RG_IRON_BOOTS) || (logic->IsAdult && ctx->GetTrickOption(RT_WATER_BK_JUMP_DIVE)) || logic->IsChild || logic->HasItem(RG_SILVER_SCALE)) && logic->SmallKeys(RR_WATER_TEMPLE, 5);}}),
@ -120,7 +134,11 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_SOUTH_LOWER] = Region("Water Temple South Lower", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_WATER_TEMPLE_SOUTH_LOWER] = Region("Water Temple South Lower", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_GS_BEHIND_GATE, logic->CanJumpslash() && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))), LOCATION(RC_WATER_TEMPLE_GS_BEHIND_GATE, logic->CanJumpslash() && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
LOCATION(RC_WATER_TEMPLE_BEHIND_GATE_POT_1, logic->CanJumpslash() && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
LOCATION(RC_WATER_TEMPLE_BEHIND_GATE_POT_2, logic->CanJumpslash() && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
LOCATION(RC_WATER_TEMPLE_BEHIND_GATE_POT_3, logic->CanJumpslash() && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
LOCATION(RC_WATER_TEMPLE_BEHIND_GATE_POT_4, logic->CanJumpslash() && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
}, { }, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanUse(RG_IRON_BOOTS);}}), Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanUse(RG_IRON_BOOTS);}}),
@ -171,6 +189,9 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_EAST_MIDDLE] = Region("Water Temple East Middle", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_WATER_TEMPLE_EAST_MIDDLE] = Region("Water Temple East Middle", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_COMPASS_CHEST, logic->CanUseProjectile()), LOCATION(RC_WATER_TEMPLE_COMPASS_CHEST, logic->CanUseProjectile()),
LOCATION(RC_WATER_TEMPLE_NEAR_COMPASS_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_NEAR_COMPASS_POT_2, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_NEAR_COMPASS_POT_3, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanUse(RG_IRON_BOOTS);}}), Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanUse(RG_IRON_BOOTS);}}),
@ -193,6 +214,8 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_BLOCK_CORRIDOR] = Region("Water Temple Block Corridor", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_WATER_TEMPLE_BLOCK_CORRIDOR] = Region("Water Temple Block Corridor", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST, logic->HasItem(RG_GORONS_BRACELET) && (logic->CanWaterTempleLowFromHigh || logic->CanWaterTempleMiddle)), LOCATION(RC_WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST, logic->HasItem(RG_GORONS_BRACELET) && (logic->CanWaterTempleLowFromHigh || logic->CanWaterTempleMiddle)),
LOCATION(RC_WATER_TEMPLE_CENTRAL_BOW_POT_1, logic->CanBreakPots() && logic->HasItem(RG_GORONS_BRACELET) && (logic->CanWaterTempleLowFromHigh || logic->CanWaterTempleMiddle)),
LOCATION(RC_WATER_TEMPLE_CENTRAL_BOW_POT_2, logic->CanBreakPots() && logic->HasItem(RG_GORONS_BRACELET) && (logic->CanWaterTempleLowFromHigh || logic->CanWaterTempleMiddle)),
}, { }, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanUse(RG_HOOKSHOT);}}), Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return logic->CanUse(RG_HOOKSHOT);}}),
@ -207,7 +230,11 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_DRAGON_PILLARS_ROOM, {[]{return logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_WATER_TEMPLE, 5);}}), Entrance(RR_WATER_TEMPLE_DRAGON_PILLARS_ROOM, {[]{return logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_WATER_TEMPLE, 5);}}),
}); });
areaTable[RR_WATER_TEMPLE_DRAGON_PILLARS_ROOM] = Region("Water Temple Dragon Pillars Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_DRAGON_PILLARS_ROOM] = Region("Water Temple Dragon Pillars Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_LIKE_LIKE_POT_1, logic->CanUse(RG_HOOKSHOT)),
LOCATION(RC_WATER_TEMPLE_LIKE_LIKE_POT_2, logic->CanUse(RG_HOOKSHOT)),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_FALLING_PLATFORM_ROOM, {[]{return logic->CanUseProjectile();}}), Entrance(RR_WATER_TEMPLE_FALLING_PLATFORM_ROOM, {[]{return logic->CanUseProjectile();}}),
Entrance(RR_WATER_TEMPLE_DARK_LINK_ROOM, {[]{return logic->CanUse(RG_HOOKSHOT);}}), Entrance(RR_WATER_TEMPLE_DARK_LINK_ROOM, {[]{return logic->CanUse(RG_HOOKSHOT);}}),
@ -232,6 +259,8 @@ void RegionTable_Init_WaterTemple() {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_RIVER_CHEST, (logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW)) && (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT))), LOCATION(RC_WATER_TEMPLE_RIVER_CHEST, (logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW)) && (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT))),
LOCATION(RC_WATER_TEMPLE_GS_RIVER, (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)) || (ctx->GetTrickOption(RT_WATER_RIVER_GS) && logic->CanUse(RG_LONGSHOT))), LOCATION(RC_WATER_TEMPLE_GS_RIVER, (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)) || (ctx->GetTrickOption(RT_WATER_RIVER_GS) && logic->CanUse(RG_LONGSHOT))),
LOCATION(RC_WATER_TEMPLE_RIVER_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_RIVER_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_DRAGON_ROOM, {[]{return (logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW)) && (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT));}}), Entrance(RR_WATER_TEMPLE_DRAGON_ROOM, {[]{return (logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_FAIRY_BOW)) && (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT));}}),
@ -240,7 +269,11 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_PRE_BOSS_ROOM] = Region("Water Temple Pre Boss Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_WATER_TEMPLE_PRE_BOSS_ROOM] = Region("Water Temple Pre Boss Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, {}, { }, {
// Locations
LOCATION(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return true;}}), Entrance(RR_WATER_TEMPLE_LOBBY, {[]{return true;}}),
Entrance(RR_WATER_TEMPLE_BOSS_ENTRYWAY, {[]{return logic->HasItem(RG_WATER_TEMPLE_BOSS_KEY);}}), Entrance(RR_WATER_TEMPLE_BOSS_ENTRYWAY, {[]{return logic->HasItem(RG_WATER_TEMPLE_BOSS_KEY);}}),
@ -279,7 +312,7 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_1F, {[]{return logic->MQWaterLevel(WL_LOW);}}), Entrance(RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_1F, {[]{return logic->MQWaterLevel(WL_LOW);}}),
//A special entry as we can't set it to high after entering at a lower height //A special entry as we can't set it to high after entering at a lower height
Entrance(RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_HIGH, {[]{return logic->MQWaterLevel(WL_HIGH) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16 && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_LONGSHOT));}}), Entrance(RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_HIGH, {[]{return logic->MQWaterLevel(WL_HIGH) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16 && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_LONGSHOT));}}),
Entrance(RR_WATER_TEMPLE_MQ_2F_SOUTH, {[]{return (logic->MQWaterLevel(WL_MID) || (logic->MQWaterLevel(WL_HIGH_OR_MID) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16)) && logic->HasItem(RG_BRONZE_SCALE);}}), Entrance(RR_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY, {[]{return (logic->MQWaterLevel(WL_MID) || (logic->MQWaterLevel(WL_HIGH_OR_MID) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16)) && logic->HasItem(RG_BRONZE_SCALE);}}),
Entrance(RR_WATER_TEMPLE_MQ_B1_GATE_SWITCH, {[]{return logic->MQWaterB1Switch && (logic->MQWaterLevel(WL_LOW) || ((logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24) && logic->HasItem(RG_BRONZE_SCALE)));}}), Entrance(RR_WATER_TEMPLE_MQ_B1_GATE_SWITCH, {[]{return logic->MQWaterB1Switch && (logic->MQWaterLevel(WL_LOW) || ((logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24) && logic->HasItem(RG_BRONZE_SCALE)));}}),
Entrance(RR_WATER_TEMPLE_MQ_TRIANGLE_TORCH_ROOM, {[]{return logic->MQWaterB1Switch && Entrance(RR_WATER_TEMPLE_MQ_TRIANGLE_TORCH_ROOM, {[]{return logic->MQWaterB1Switch &&
((logic->MQWaterLevel(WL_LOW) && logic->HasItem(RG_SILVER_SCALE)) || ((logic->MQWaterLevel(WL_LOW) && logic->HasItem(RG_SILVER_SCALE)) ||
@ -303,7 +336,7 @@ void RegionTable_Init_WaterTemple() {
//room access is (logic->IsAdult || (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT))) //room access is (logic->IsAdult || (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)))
Entrance(RR_WATER_TEMPLE_MQ_WATERFALL, {[]{return logic->SmallKeys(RR_WATER_TEMPLE, 1) && logic->MQWaterLevel(WL_HIGH) && logic->CanUse(RG_LONGSHOT);}}), Entrance(RR_WATER_TEMPLE_MQ_WATERFALL, {[]{return logic->SmallKeys(RR_WATER_TEMPLE, 1) && logic->MQWaterLevel(WL_HIGH) && logic->CanUse(RG_LONGSHOT);}}),
//this swimless jump with irons may be a trick as you have to put irons on quite late. //this swimless jump with irons may be a trick as you have to put irons on quite late.
Entrance(RR_WATER_TEMPLE_MQ_2F_SOUTH, {[]{return (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16) || logic->MQWaterLevel(WL_LOW_OR_MID);}}), Entrance(RR_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY, {[]{return (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16) || logic->MQWaterLevel(WL_LOW_OR_MID);}}),
}); });
//This region specifically covers walking on the lower platform around central pillar. This is underwater when WL_HIGH //This region specifically covers walking on the lower platform around central pillar. This is underwater when WL_HIGH
@ -315,7 +348,7 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_2F, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID);}}), Entrance(RR_WATER_TEMPLE_MQ_CENTRAL_PILLAR_2F, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID);}}),
Entrance(RR_WATER_TEMPLE_MQ_STORAGE_ROOM, {[]{return logic->CanUse(RG_HOOKSHOT);}}), Entrance(RR_WATER_TEMPLE_MQ_STORAGE_ROOM, {[]{return logic->CanUse(RG_HOOKSHOT);}}),
Entrance(RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_2F, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) && (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS)) && logic->CanUse(RG_HOOKSHOT);}}), Entrance(RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_2F, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) && (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS)) && logic->CanUse(RG_HOOKSHOT);}}),
Entrance(RR_WATER_TEMPLE_MQ_2F_SOUTH, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) && logic->CanUse(RG_HOVER_BOOTS);}}), Entrance(RR_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) && logic->CanUse(RG_HOVER_BOOTS);}}),
}); });
areaTable[RR_WATER_TEMPLE_MQ_HIGH_EMBLEM] = Region("Water Temple MQ High Emblem", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_WATER_TEMPLE_MQ_HIGH_EMBLEM] = Region("Water Temple MQ High Emblem", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
@ -352,9 +385,13 @@ void RegionTable_Init_WaterTemple() {
//EventAccess(&logic->CanWaterTempleLowFromMid, {[]{return false;}}), //EventAccess(&logic->CanWaterTempleLowFromMid, {[]{return false;}}),
}, { }, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_MQ_MAP_CHEST, logic->MQWaterLevel(WL_HIGH) && logic->HasFireSource() && logic->CanUse(RG_HOOKSHOT)), LOCATION(RC_WATER_TEMPLE_MQ_MAP_CHEST, logic->MQWaterLevel(WL_HIGH) && logic->HasFireSource() && logic->CanUse(RG_HOOKSHOT)),
//easy to get at WL_HIGH with the hook-the-underwater-chest glitch //easy to get at WL_HIGH with the hook-the-underwater-chest glitch
LOCATION(RC_WATER_TEMPLE_MQ_LONGSHOT_CHEST, logic->MQWaterLevel(WL_MID) && logic->CanUse(RG_HOOKSHOT)), LOCATION(RC_WATER_TEMPLE_MQ_LONGSHOT_CHEST, logic->MQWaterLevel(WL_MID) && logic->CanUse(RG_HOOKSHOT)),
LOCATION(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1, (logic->MQWaterLevel(WL_LOW) && logic->CanBreakPots()) ||
(logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT) && logic->WaterTimer() >= 16)),
LOCATION(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2, (logic->MQWaterLevel(WL_LOW) && logic->CanBreakPots()) ||
(logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT) && logic->WaterTimer() >= 16)),
}, { }, {
Entrance(RR_WATER_TEMPLE_MQ_EAST_TOWER_1F_ROOM, {[]{return logic->MQWaterLevel(WL_LOW) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DINS_FIRE) || logic->CanUse(RG_STICKS));}}), Entrance(RR_WATER_TEMPLE_MQ_EAST_TOWER_1F_ROOM, {[]{return logic->MQWaterLevel(WL_LOW) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_DINS_FIRE) || logic->CanUse(RG_STICKS));}}),
}); });
@ -423,12 +460,22 @@ void RegionTable_Init_WaterTemple() {
}, {}); }, {});
//Region exists to add crate/pot/box locations //Region exists to add crate/pot/box locations
areaTable[RR_WATER_TEMPLE_MQ_STORAGE_ROOM] = Region("Water Temple MQ Storage Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_MQ_STORAGE_ROOM] = Region("Water Temple MQ Storage Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_MAIN, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8);}}), Entrance(RR_WATER_TEMPLE_MQ_MAIN, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8);}}),
}); });
areaTable[RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_2F] = Region("Water Temple MQ Behind Blue Switch 2F", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_2F] = Region("Water Temple MQ Behind Blue Switch 2F", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_MAIN, {[]{return true;}}), Entrance(RR_WATER_TEMPLE_MQ_MAIN, {[]{return true;}}),
Entrance(RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_3F, {[]{return logic->CanUse(RG_LONGSHOT);}}), Entrance(RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_3F, {[]{return logic->CanUse(RG_LONGSHOT);}}),
@ -443,10 +490,15 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_MQ_HIGH_EMBLEM, {[]{return true;}}), Entrance(RR_WATER_TEMPLE_MQ_HIGH_EMBLEM, {[]{return true;}}),
}); });
areaTable[RR_WATER_TEMPLE_MQ_2F_SOUTH] = Region("Water Temple MQ Lowered Water Levels", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY] = Region("Water Temple MQ Lizalfos Hallway", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_2F_SOUTH_CAGE, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) && logic->CanUse(RG_DINS_FIRE);}}), Entrance(RR_WATER_TEMPLE_MQ_LIZALFOS_CAGE, {[]{return logic->MQWaterLevel(WL_LOW_OR_MID) && logic->CanUse(RG_DINS_FIRE);}}),
//this technically exists, but only complicates things, uncomment if some edge case/glitch can use RR_WATER_TEMPLE_MQ_2F_SOUTH to reach RR_WATER_TEMPLE_MQ_3F_CENTRAL, or if a void warp goes here //this technically exists, but only complicates things, uncomment if some edge case/glitch can use RR_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY to reach RR_WATER_TEMPLE_MQ_3F_CENTRAL, or if a void warp goes here
/*Entrance(RR_WATER_TEMPLE_MQ_3F_EAST_LEDGE, {[]{return (logic->CanUse(RG_HOOKSHOT) && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))) || /*Entrance(RR_WATER_TEMPLE_MQ_3F_EAST_LEDGE, {[]{return (logic->CanUse(RG_HOOKSHOT) && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS))) ||
(logic->MQWaterLevel(WL_LOW_OR_MID) && logic->CanUse(RG_HOOKSHOT)) || (logic->MQWaterLevel(WL_LOW_OR_MID) && logic->CanUse(RG_HOOKSHOT)) ||
logic->MQWaterLevel(WL_HIGH) && (logic->HasItem(RG_BRONZE_SCALE));}}), logic->MQWaterLevel(WL_HIGH) && (logic->HasItem(RG_BRONZE_SCALE));}}),
@ -458,9 +510,11 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_MQ_3F_CENTRAL, {[]{return logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS);}}),*/ Entrance(RR_WATER_TEMPLE_MQ_3F_CENTRAL, {[]{return logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS);}}),*/
}); });
areaTable[RR_WATER_TEMPLE_MQ_2F_SOUTH_CAGE] = Region("Water Temple MQ Lowered Water Levels", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_WATER_TEMPLE_MQ_LIZALFOS_CAGE] = Region("Water Temple MQ Lizalfos Cage", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY, logic->CanKillEnemy(RE_GOLD_SKULLTULA)), LOCATION(RC_WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY, logic->CanKillEnemy(RE_GOLD_SKULLTULA)),
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT, logic->CanBreakPots()),
}, {}); }, {});
//This room exists to hold the wonderitems that drop from the emblems here. Specifically this assumes you are standing on the final ledge //This room exists to hold the wonderitems that drop from the emblems here. Specifically this assumes you are standing on the final ledge
@ -489,7 +543,12 @@ void RegionTable_Init_WaterTemple() {
//Events //Events
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
EventAccess(&logic->NutPot, {[]{return true;}}), EventAccess(&logic->NutPot, {[]{return true;}}),
}, {}, { }, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_WATERFALL, {[]{return logic->MQWaterStalfosPit && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_LONGSHOT));}}), Entrance(RR_WATER_TEMPLE_MQ_WATERFALL, {[]{return logic->MQWaterStalfosPit && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_LONGSHOT));}}),
Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT, {[]{return true;}}), Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT, {[]{return true;}}),
@ -497,7 +556,11 @@ void RegionTable_Init_WaterTemple() {
}); });
//specifically the area past the spikes //specifically the area past the spikes
areaTable[RR_WATER_TEMPLE_MQ_STALFOS_PIT_UPPER] = Region("Water Temple MQ Stalfos Pit Upper", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_MQ_STALFOS_PIT_UPPER] = Region("Water Temple MQ Stalfos Pit Upper", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT, {[]{return logic->IsAdult || logic->TakeDamage();}}), Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT, {[]{return logic->IsAdult || logic->TakeDamage();}}),
Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT_POTS, {[]{return logic->IsAdult || logic->TakeDamage();}}), Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT_POTS, {[]{return logic->IsAdult || logic->TakeDamage();}}),
@ -507,7 +570,11 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_MQ_AFTER_DARK_LINK] = Region("Water Temple MQ After Dark Link", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_WATER_TEMPLE_MQ_AFTER_DARK_LINK] = Region("Water Temple MQ After Dark Link", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, {}, { }, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT_UPPER, {[]{return logic->CanKillEnemy(RE_DARK_LINK);}}), Entrance(RR_WATER_TEMPLE_MQ_STALFOS_PIT_UPPER, {[]{return logic->CanKillEnemy(RE_DARK_LINK);}}),
Entrance(RR_WATER_TEMPLE_MQ_RIVER_SKULL, {[]{return logic->CanUse(RG_HOOKSHOT) && (logic->HasItem(RG_BRONZE_SCALE) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8) || logic->CanUse(RG_LONGSHOT));}}), Entrance(RR_WATER_TEMPLE_MQ_RIVER_SKULL, {[]{return logic->CanUse(RG_HOOKSHOT) && (logic->HasItem(RG_BRONZE_SCALE) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8) || logic->CanUse(RG_LONGSHOT));}}),
@ -525,7 +592,11 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_MQ_RIVER_POTS] = Region("Water Temple MQ River Pots", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_WATER_TEMPLE_MQ_RIVER_POTS] = Region("Water Temple MQ River Pots", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FairyPot, {[]{return true;}}), EventAccess(&logic->FairyPot, {[]{return true;}}),
}, {}, { }, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_RIVER_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_RIVER_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_RIVER_SKULL, {[]{return logic->CanUse(RG_LONGSHOT) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8 && logic->CanUse(RG_HOOKSHOT));}}), Entrance(RR_WATER_TEMPLE_MQ_RIVER_SKULL, {[]{return logic->CanUse(RG_LONGSHOT) || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8 && logic->CanUse(RG_HOOKSHOT));}}),
//You don't need to swim for this if you put irons on in midair and hold forward while aiming for the tunnel with a tight angle, but if you miss you have to void unless you have a hook. It's only relevant with glitches anyway //You don't need to swim for this if you put irons on in midair and hold forward while aiming for the tunnel with a tight angle, but if you miss you have to void unless you have a hook. It's only relevant with glitches anyway
@ -559,7 +630,10 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_SWITCH, {[]{return logic->MQWaterDragonTorches;}}), Entrance(RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_SWITCH, {[]{return logic->MQWaterDragonTorches;}}),
}); });
areaTable[RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_SWITCH] = Region("Water Temple MQ Boss Key Room Switch", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_SWITCH] = Region("Water Temple MQ Boss Key Room Switch", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_BOSS_KEY_POT, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR, {[]{return true;}}), Entrance(RR_WATER_TEMPLE_MQ_DRAGON_ROOM_DOOR, {[]{return true;}}),
Entrance(RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_PIT, {[]{return true;}}), Entrance(RR_WATER_TEMPLE_MQ_BOSS_KEY_ROOM_PIT, {[]{return true;}}),
@ -605,6 +679,10 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_MQ_TRIANGLE_TORCH_CAGE] = Region("Water Temple MQ Triangle Torch Cage", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_WATER_TEMPLE_MQ_TRIANGLE_TORCH_CAGE] = Region("Water Temple MQ Triangle Torch Cage", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), LOCATION(RC_WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)),
LOCATION(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4, logic->CanBreakPots()),
}, {}); }, {});
areaTable[RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM] = Region("Water Temple MQ Crates Whirlpools Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM] = Region("Water Temple MQ Crates Whirlpools Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
@ -624,7 +702,9 @@ void RegionTable_Init_WaterTemple() {
areaTable[RR_WATER_TEMPLE_MQ_SINGLE_STALFOS_ROOM] = Region("Water Temple MQ Single Stalfos Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, { areaTable[RR_WATER_TEMPLE_MQ_SINGLE_STALFOS_ROOM] = Region("Water Temple MQ Single Stalfos Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_WATER_TEMPLE_MQ_FREESTANDING_KEY, true), LOCATION(RC_WATER_TEMPLE_MQ_FREESTANDING_KEY, true),
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM, {[]{return logic->HasItem(RG_SILVER_SCALE) || (logic->IsChild && logic->HasItem(RG_BRONZE_SCALE)) || Entrance(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM, {[]{return logic->HasItem(RG_SILVER_SCALE) || (logic->IsChild && logic->HasItem(RG_BRONZE_SCALE)) ||
@ -638,7 +718,11 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_MQ_DODONGO_ROOM, {[]{return logic->CanHitSwitch() && logic->HasFireSource();}}) Entrance(RR_WATER_TEMPLE_MQ_DODONGO_ROOM, {[]{return logic->CanHitSwitch() && logic->HasFireSource();}})
}); });
areaTable[RR_WATER_TEMPLE_MQ_DODONGO_ROOM] = Region("Water Temple MQ Dodongo Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_MQ_DODONGO_ROOM] = Region("Water Temple MQ Dodongo Room", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {
//Locations
LOCATION(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1, logic->CanBreakPots()),
LOCATION(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2, logic->CanBreakPots()),
}, {
//Exits //Exits
Entrance(RR_WATER_TEMPLE_MQ_4_TORCH_ROOM, {[]{return (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)) && Entrance(RR_WATER_TEMPLE_MQ_4_TORCH_ROOM, {[]{return (logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_HOVER_BOOTS)) &&
Here(RR_WATER_TEMPLE_MQ_DODONGO_ROOM, []{return logic->CanKillEnemy(RE_DODONGO, ED_CLOSE, true, 5);});}}), Here(RR_WATER_TEMPLE_MQ_DODONGO_ROOM, []{return logic->CanKillEnemy(RE_DODONGO, ED_CLOSE, true, 5);});}}),

View File

@ -110,6 +110,11 @@ void RegionTable_Init_ZorasDomain() {
LOCATION(RC_ZD_GOSSIP_STONE, true), LOCATION(RC_ZD_GOSSIP_STONE, true),
LOCATION(RC_ZD_IN_FRONT_OF_KING_ZORA_BEEHIVE_LEFT, logic->CanBreakUpperBeehives()), LOCATION(RC_ZD_IN_FRONT_OF_KING_ZORA_BEEHIVE_LEFT, logic->CanBreakUpperBeehives()),
LOCATION(RC_ZD_IN_FRONT_OF_KING_ZORA_BEEHIVE_RIGHT, logic->CanBreakUpperBeehives()), LOCATION(RC_ZD_IN_FRONT_OF_KING_ZORA_BEEHIVE_RIGHT, logic->CanBreakUpperBeehives()),
LOCATION(RC_ZD_NEAR_SHOP_POT_1, logic->CanBreakPots()),
LOCATION(RC_ZD_NEAR_SHOP_POT_2, logic->CanBreakPots()),
LOCATION(RC_ZD_NEAR_SHOP_POT_3, logic->CanBreakPots()),
LOCATION(RC_ZD_NEAR_SHOP_POT_4, logic->CanBreakPots()),
LOCATION(RC_ZD_NEAR_SHOP_POT_5, logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_ZR_BEHIND_WATERFALL, {[]{return true;}}), Entrance(RR_ZR_BEHIND_WATERFALL, {[]{return true;}}),
@ -162,8 +167,15 @@ void RegionTable_Init_ZorasDomain() {
LOCATION(RC_ZF_GS_TREE, logic->IsChild), LOCATION(RC_ZF_GS_TREE, logic->IsChild),
LOCATION(RC_ZF_GS_ABOVE_THE_LOG, logic->IsChild && logic->HookshotOrBoomerang() && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_ZF_GS_ABOVE_THE_LOG, logic->IsChild && logic->HookshotOrBoomerang() && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_ZF_GS_HIDDEN_CAVE, logic->CanUse(RG_SILVER_GAUNTLETS) && logic->BlastOrSmash() && logic->HookshotOrBoomerang() && logic->IsAdult && logic->AtNight && logic->CanGetNightTimeGS()), LOCATION(RC_ZF_GS_HIDDEN_CAVE, logic->CanUse(RG_SILVER_GAUNTLETS) && logic->BlastOrSmash() && logic->HookshotOrBoomerang() && logic->IsAdult && logic->AtNight && logic->CanGetNightTimeGS()),
LOCATION(RC_ZF_HIDDEN_CAVE_POT_1, logic->CanUse(RG_SILVER_GAUNTLETS) && logic->IsAdult && logic->BlastOrSmash() && logic->CanBreakPots()),
LOCATION(RC_ZF_HIDDEN_CAVE_POT_2, logic->CanUse(RG_SILVER_GAUNTLETS) && logic->IsAdult && logic->BlastOrSmash() && logic->CanBreakPots()),
LOCATION(RC_ZF_HIDDEN_CAVE_POT_3, logic->CanUse(RG_SILVER_GAUNTLETS) && logic->IsAdult && logic->BlastOrSmash() && logic->CanBreakPots()),
LOCATION(RC_ZF_FAIRY_GOSSIP_STONE, true), LOCATION(RC_ZF_FAIRY_GOSSIP_STONE, true),
LOCATION(RC_ZF_JABU_GOSSIP_STONE, true), LOCATION(RC_ZF_JABU_GOSSIP_STONE, true),
LOCATION(RC_ZF_NEAR_JABU_POT_1, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_ZF_NEAR_JABU_POT_2, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_ZF_NEAR_JABU_POT_3, logic->IsChild && logic->CanBreakPots()),
LOCATION(RC_ZF_NEAR_JABU_POT_4, logic->IsChild && logic->CanBreakPots()),
}, { }, {
//Exits //Exits
Entrance(RR_ZD_BEHIND_KING_ZORA, {[]{return true;}}), Entrance(RR_ZD_BEHIND_KING_ZORA, {[]{return true;}}),

View File

@ -0,0 +1,97 @@
#include "ShufflePots.h"
#include "soh_assets.h"
extern "C" {
#include "variables.h"
#include "overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.h"
#include "overlays/actors/ovl_Door_Shutter/z_door_shutter.h"
extern PlayState* gPlayState;
}
extern void EnItem00_DrawRandomizedItem(EnItem00* enItem00, PlayState* play);
extern "C" void ObjTsubo_RandomizerDraw(Actor* thisx, PlayState* play) {
float potSize = 1.0f;
OPEN_DISPS(play->state.gfxCtx);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
Matrix_Scale(potSize, potSize, potSize, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
G_MTX_MODELVIEW | G_MTX_LOAD);
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gRandoPotDL);
CLOSE_DISPS(play->state.gfxCtx);
}
uint8_t ObjTsubo_RandomizerHoldsItem(ObjTsubo* potActor, PlayState* play) {
uint8_t isDungeon =
play->sceneNum < SCENE_GANONS_TOWER_COLLAPSE_INTERIOR ||
(play->sceneNum > SCENE_TREASURE_BOX_SHOP && play->sceneNum < SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR);
uint8_t potSetting = Rando::Context::GetInstance()->GetOption(RSK_SHUFFLE_POTS).GetContextOptionIndex();
// Don't pull randomized item if pot isn't randomized or is already checked
if (!IS_RANDO || (potSetting == RO_SHUFFLE_POTS_OVERWORLD && isDungeon) ||
(potSetting == RO_SHUFFLE_POTS_DUNGEONS && !isDungeon) ||
Flags_GetRandomizerInf(potActor->potIdentity.randomizerInf) ||
potActor->potIdentity.randomizerCheck == RC_UNKNOWN_CHECK) {
return false;
} else {
return true;
}
}
void ObjTsubo_RandomizerSpawnCollectible(ObjTsubo* potActor, PlayState* play) {
EnItem00* item00 = (EnItem00*)Item_DropCollectible2(play, &potActor->actor.world.pos, ITEM00_SOH_DUMMY);
item00->randoInf = potActor->potIdentity.randomizerInf;
item00->itemEntry = Rando::Context::GetInstance()->GetFinalGIEntry(potActor->potIdentity.randomizerCheck, true, GI_NONE);
item00->actor.draw = (ActorFunc)EnItem00_DrawRandomizedItem;
item00->actor.velocity.y = 8.0f;
item00->actor.speedXZ = 2.0f;
item00->actor.world.rot.y = Rand_CenteredFloat(65536.0f);
}
void ObjTsubo_RandomizerInit(void* actorRef) {
Actor* actor = static_cast<Actor*>(actorRef);
if (actor->id != ACTOR_OBJ_TSUBO) return;
ObjTsubo* potActor = static_cast<ObjTsubo*>(actorRef);
potActor->potIdentity = OTRGlobals::Instance->gRandomizer->IdentifyPot(gPlayState->sceneNum, (s16)actor->world.pos.x, (s16)actor->world.pos.z);
}
void ShufflePots_OnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_list originalArgs) {
va_list args;
va_copy(args, originalArgs);
// Draw custom model for pot to indicate it holding a randomized item.
if (id == VB_POT_SETUP_DRAW) {
ObjTsubo* potActor = va_arg(args, ObjTsubo*);
if (ObjTsubo_RandomizerHoldsItem(potActor, gPlayState)) {
potActor->actor.draw = (ActorFunc)ObjTsubo_RandomizerDraw;
*should = false;
}
}
// Do not spawn vanilla item from pot, instead spawn the ranomized item.
if (id == VB_POT_DROP_ITEM) {
ObjTsubo* potActor = va_arg(args, ObjTsubo*);
if (ObjTsubo_RandomizerHoldsItem(potActor, gPlayState)) {
ObjTsubo_RandomizerSpawnCollectible(potActor, gPlayState);
*should = false;
}
}
// Unlock early Ganon's Boss Key doors to allow access to the pots there when pots are shuffled in dungeon
if (id == VB_LOCK_BOSS_DOOR) {
DoorShutter* doorActor = va_arg(args, DoorShutter*);
uint8_t shufflePotSetting = Rando::Context::GetInstance()->GetOption(RSK_SHUFFLE_POTS).GetContextOptionIndex();
if (gPlayState->sceneNum == SCENE_GANONS_TOWER && doorActor->dyna.actor.world.pos.y == 800 &&
(shufflePotSetting == RO_SHUFFLE_POTS_DUNGEONS || shufflePotSetting == RO_SHUFFLE_POTS_ALL)) {
*should = false;
}
}
va_end(args);
}

View File

@ -0,0 +1,17 @@
#ifndef SHUFFLEPOTS_H
#define SHUFFLEPOTS_H
#include <z64.h>
#include <soh/OTRGlobals.h>
#ifdef __cplusplus
extern "C" {
#endif
void ObjTsubo_RandomizerInit(void* actorRef);
#ifdef __cplusplus
};
#endif
void ShufflePots_OnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_list originalArgs);
#endif //SHUFFLEPOTS_H

View File

@ -132,6 +132,11 @@ void Context::GenerateLocationPool() {
AddLocations(mFishsanity->GetFishsanityLocations().first); AddLocations(mFishsanity->GetFishsanityLocations().first);
} }
if (mSettings->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_OVERWORLD) ||
mSettings->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_ALL)) {
AddLocations(StaticData::GetOverworldPotLocations());
}
AddLocations(StaticData::GetAllDungeonLocations()); AddLocations(StaticData::GetAllDungeonLocations());
} }

View File

@ -10,11 +10,13 @@ DungeonInfo::DungeonInfo(std::string name_, const RandomizerHintTextKey hintKey_
const RandomizerGet bossKey_, RandomizerArea area_, const uint8_t vanillaKeyCount_, const uint8_t mqKeyCount_, const RandomizerGet bossKey_, RandomizerArea area_, const uint8_t vanillaKeyCount_, const uint8_t mqKeyCount_,
const RandomizerSettingKey mqSetting_, const RandomizerSettingKey mqSetting_,
std::vector<RandomizerCheck> vanillaLocations_, std::vector<RandomizerCheck> mqLocations_, std::vector<RandomizerCheck> vanillaLocations_, std::vector<RandomizerCheck> mqLocations_,
std::vector<RandomizerCheck> vanillaPots_, std::vector<RandomizerCheck> mqPots_,
std::vector<RandomizerCheck> sharedLocations_, std::vector<RandomizerCheck> bossRoomLocations_) std::vector<RandomizerCheck> sharedLocations_, std::vector<RandomizerCheck> bossRoomLocations_)
: name(std::move(name_)), hintKey(hintKey_), map(map_), compass(compass_), smallKey(smallKey_), keyRing(keyRing_), : name(std::move(name_)), hintKey(hintKey_), map(map_), compass(compass_), smallKey(smallKey_), keyRing(keyRing_),
bossKey(bossKey_), area(area_), vanillaKeyCount(vanillaKeyCount_), mqKeyCount(mqKeyCount_), bossKey(bossKey_), area(area_), vanillaKeyCount(vanillaKeyCount_), mqKeyCount(mqKeyCount_),
mqSetting(mqSetting_), mqSetting(mqSetting_),
vanillaLocations(std::move(vanillaLocations_)), mqLocations(std::move(mqLocations_)), vanillaLocations(std::move(vanillaLocations_)), mqLocations(std::move(mqLocations_)),
vanillaPots(std::move(vanillaPots_)), mqPots(std::move(mqPots_)),
sharedLocations(std::move(sharedLocations_)), bossRoomLocations(std::move(bossRoomLocations_)) { sharedLocations(std::move(sharedLocations_)), bossRoomLocations(std::move(bossRoomLocations_)) {
} }
DungeonInfo::DungeonInfo() : hintKey(RHT_NONE), map(RG_NONE), compass(RG_NONE), smallKey(RG_NONE), keyRing(RG_NONE), DungeonInfo::DungeonInfo() : hintKey(RHT_NONE), map(RG_NONE), compass(RG_NONE), smallKey(RG_NONE), keyRing(RG_NONE),
@ -146,6 +148,11 @@ void DungeonInfo::PlaceVanillaSmallKeys() const {
// Gets the chosen dungeon locations for a playthrough (so either MQ or Vanilla) // Gets the chosen dungeon locations for a playthrough (so either MQ or Vanilla)
std::vector<RandomizerCheck> DungeonInfo::GetDungeonLocations() const { std::vector<RandomizerCheck> DungeonInfo::GetDungeonLocations() const {
auto locations = masterQuest ? mqLocations : vanillaLocations; auto locations = masterQuest ? mqLocations : vanillaLocations;
if (Context::GetInstance()->GetSettings()->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_DUNGEONS) ||
Context::GetInstance()->GetSettings()->GetOption(RSK_SHUFFLE_POTS).Is(RO_SHUFFLE_POTS_ALL)) {
auto potLocations = masterQuest ? mqPots : vanillaPots;
AddElementsToPool(locations, potLocations);
}
AddElementsToPool(locations, sharedLocations); AddElementsToPool(locations, sharedLocations);
AddElementsToPool(locations, bossRoomLocations); AddElementsToPool(locations, bossRoomLocations);
return locations; return locations;
@ -155,6 +162,8 @@ std::vector<RandomizerCheck> DungeonInfo::GetDungeonLocations() const {
std::vector<RandomizerCheck> DungeonInfo::GetEveryLocation() const { std::vector<RandomizerCheck> DungeonInfo::GetEveryLocation() const {
auto locations = vanillaLocations; auto locations = vanillaLocations;
AddElementsToPool(locations, mqLocations); AddElementsToPool(locations, mqLocations);
AddElementsToPool(locations, vanillaPots);
AddElementsToPool(locations, mqPots);
AddElementsToPool(locations, sharedLocations); AddElementsToPool(locations, sharedLocations);
AddElementsToPool(locations, bossRoomLocations); AddElementsToPool(locations, bossRoomLocations);
return locations; return locations;
@ -191,7 +200,7 @@ Dungeons::Dungeons() {
RC_DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM, RC_DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM,
RC_DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM, RC_DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM,
}, },
{}, {}, {}, {},
{ {
// Boss Room Locations // Boss Room Locations
RC_DEKU_TREE_QUEEN_GOHMA_HEART, RC_DEKU_TREE_QUEEN_GOHMA_HEART,
@ -234,6 +243,70 @@ Dungeons::Dungeons() {
RC_DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM, RC_DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM,
RC_DODONGOS_CAVERN_MQ_GS_BACK_AREA, RC_DODONGOS_CAVERN_MQ_GS_BACK_AREA,
}, },
{
// Vanilla Pots
RC_DODONGOS_CAVERN_LIZALFOS_POT_1,
RC_DODONGOS_CAVERN_LIZALFOS_POT_2,
RC_DODONGOS_CAVERN_LIZALFOS_POT_3,
RC_DODONGOS_CAVERN_LIZALFOS_POT_4,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4,
RC_DODONGOS_CAVERN_STAIRCASE_POT_1,
RC_DODONGOS_CAVERN_STAIRCASE_POT_2,
RC_DODONGOS_CAVERN_STAIRCASE_POT_3,
RC_DODONGOS_CAVERN_STAIRCASE_POT_4,
RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1,
RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2,
RC_DODONGOS_CAVERN_BLADE_POT_1,
RC_DODONGOS_CAVERN_BLADE_POT_2,
RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1,
RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_1,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_2,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_3,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_4,
},
{
// MQ Pots
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1,
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2,
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3,
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4,
RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT,
RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT,
RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1,
RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2,
RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1,
RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2,
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1,
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2,
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3,
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT,
RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT,
RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT,
RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1,
RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2,
},
{}, {},
{ {
// Boss Room Locations // Boss Room Locations
@ -273,6 +346,48 @@ Dungeons::Dungeons() {
RC_JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM, RC_JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM,
RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS,
}, },
{
// Vanilla Pots
RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1,
RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2,
RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3,
RC_JABU_JABUS_BELLY_BASEMENT_POT_1,
RC_JABU_JABUS_BELLY_BASEMENT_POT_2,
RC_JABU_JABUS_BELLY_BASEMENT_POT_3,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5,
// Shared Pots so in both vanilla and MQ
RC_JABU_JABUS_BELLY_BARINADE_POT_1,
RC_JABU_JABUS_BELLY_BARINADE_POT_2,
RC_JABU_JABUS_BELLY_BARINADE_POT_3,
RC_JABU_JABUS_BELLY_BARINADE_POT_4,
RC_JABU_JABUS_BELLY_BARINADE_POT_5,
RC_JABU_JABUS_BELLY_BARINADE_POT_6,
},
{
// MQ Pots
RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1,
RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2,
RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1,
RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2,
RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1,
RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2,
RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1,
RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2,
RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1,
// Shared Pots so in both vanilla and MQ
RC_JABU_JABUS_BELLY_BARINADE_POT_1,
RC_JABU_JABUS_BELLY_BARINADE_POT_2,
RC_JABU_JABUS_BELLY_BARINADE_POT_3,
RC_JABU_JABUS_BELLY_BARINADE_POT_4,
RC_JABU_JABUS_BELLY_BARINADE_POT_5,
RC_JABU_JABUS_BELLY_BARINADE_POT_6,
},
{}, {},
{ {
// Boss Room Locations // Boss Room Locations
@ -323,6 +438,52 @@ Dungeons::Dungeons() {
RC_FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD, RC_FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD,
RC_FOREST_TEMPLE_MQ_GS_WELL, RC_FOREST_TEMPLE_MQ_GS_WELL,
}, },
{
// Vanilla Pots
RC_FOREST_TEMPLE_LOBBY_POT_1,
RC_FOREST_TEMPLE_LOBBY_POT_2,
RC_FOREST_TEMPLE_LOBBY_POT_3,
RC_FOREST_TEMPLE_LOBBY_POT_4,
RC_FOREST_TEMPLE_LOBBY_POT_5,
RC_FOREST_TEMPLE_LOBBY_POT_6,
RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1,
RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2,
RC_FOREST_TEMPLE_GREEN_POE_POT_1,
RC_FOREST_TEMPLE_GREEN_POE_POT_2,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4,
RC_FOREST_TEMPLE_BLUE_POE_POT_1,
RC_FOREST_TEMPLE_BLUE_POE_POT_2,
RC_FOREST_TEMPLE_BLUE_POE_POT_3,
RC_FOREST_TEMPLE_FROZEN_EYE_POT_1,
RC_FOREST_TEMPLE_FROZEN_EYE_POT_2,
},
{
// MQ Pots
RC_FOREST_TEMPLE_MQ_LOBBY_POT_1,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_2,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_3,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_4,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_5,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_6,
RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1,
RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4,
RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1,
RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2,
RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3,
RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1,
RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4,
},
{}, {},
{ {
// Boss Room Locations // Boss Room Locations
@ -374,6 +535,55 @@ Dungeons::Dungeons() {
RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM, RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM,
RC_FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE, RC_FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE,
}, },
{
// Vanilla Pots
RC_FIRE_TEMPLE_NEAR_BOSS_POT_1,
RC_FIRE_TEMPLE_NEAR_BOSS_POT_2,
RC_FIRE_TEMPLE_NEAR_BOSS_POT_3,
RC_FIRE_TEMPLE_NEAR_BOSS_POT_4,
RC_FIRE_TEMPLE_BIG_LAVA_POT_1,
RC_FIRE_TEMPLE_BIG_LAVA_POT_2,
RC_FIRE_TEMPLE_BIG_LAVA_POT_3,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4,
},
{
// MQ Pots
RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1,
RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2,
RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1,
RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2,
RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT,
RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT,
RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT,
RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1,
RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2,
RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1,
RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2,
RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3,
RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1,
RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2,
RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT,
RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT,
RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT,
RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT,
RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT,
RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8,
},
{}, {},
{ {
// Boos Room Locations // Boos Room Locations
@ -415,6 +625,66 @@ Dungeons::Dungeons() {
RC_WATER_TEMPLE_MQ_GS_RIVER, RC_WATER_TEMPLE_MQ_GS_RIVER,
RC_WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH, RC_WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH,
}, },
{
// Vanilla Pots
RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1,
RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2,
RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1,
RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2,
RC_WATER_TEMPLE_TORCH_POT_1,
RC_WATER_TEMPLE_TORCH_POT_2,
RC_WATER_TEMPLE_NEAR_COMPASS_POT_1,
RC_WATER_TEMPLE_NEAR_COMPASS_POT_2,
RC_WATER_TEMPLE_NEAR_COMPASS_POT_3,
RC_WATER_TEMPLE_CENTRAL_BOW_POT_1,
RC_WATER_TEMPLE_CENTRAL_BOW_POT_2,
RC_WATER_TEMPLE_BEHIND_GATE_POT_1,
RC_WATER_TEMPLE_BEHIND_GATE_POT_2,
RC_WATER_TEMPLE_BEHIND_GATE_POT_3,
RC_WATER_TEMPLE_BEHIND_GATE_POT_4,
RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1,
RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2,
RC_WATER_TEMPLE_RIVER_POT_1,
RC_WATER_TEMPLE_RIVER_POT_2,
RC_WATER_TEMPLE_LIKE_LIKE_POT_1,
RC_WATER_TEMPLE_LIKE_LIKE_POT_2,
RC_WATER_TEMPLE_BOSS_KEY_POT_1,
RC_WATER_TEMPLE_BOSS_KEY_POT_2,
},
{
// MQ Pots
RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3,
RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1,
RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2,
RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT,
RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT,
RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT,
RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1,
RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2,
RC_WATER_TEMPLE_MQ_RIVER_POT_1,
RC_WATER_TEMPLE_MQ_RIVER_POT_2,
RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1,
RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2,
RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1,
RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2,
RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3,
RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1,
RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4,
RC_WATER_TEMPLE_MQ_BOSS_KEY_POT,
},
{}, {},
{ {
// Boss Room Locations // Boss Room Locations
@ -477,6 +747,57 @@ Dungeons::Dungeons() {
RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH, RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH,
RC_SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM, RC_SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM,
}, },
{
// Vanilla Pots
RC_SPIRIT_TEMPLE_LOBBY_POT_1,
RC_SPIRIT_TEMPLE_LOBBY_POT_2,
RC_SPIRIT_TEMPLE_ANUBIS_POT_1,
RC_SPIRIT_TEMPLE_ANUBIS_POT_2,
RC_SPIRIT_TEMPLE_ANUBIS_POT_3,
RC_SPIRIT_TEMPLE_ANUBIS_POT_4,
RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1,
RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1,
RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6,
RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1,
},
{
// MQ Pots
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1,
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2,
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3,
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4,
RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT,
RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1,
RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2,
RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4,
RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT,
RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1,
RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2,
RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1,
RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4,
RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1,
RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2,
RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1,
RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2,
},
{ {
// Shared Locations // Shared Locations
RC_SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST, RC_SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST,
@ -543,6 +864,50 @@ Dungeons::Dungeons() {
RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP,
RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS,
}, },
{
// Vanilla Pots
RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5,
RC_SHADOW_TEMPLE_MAP_CHEST_POT_1,
RC_SHADOW_TEMPLE_MAP_CHEST_POT_2,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4,
RC_SHADOW_TEMPLE_AFTER_WIND_POT_1,
RC_SHADOW_TEMPLE_AFTER_WIND_POT_2,
RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1,
RC_SHADOW_TEMPLE_FLOORMASTER_POT_1,
RC_SHADOW_TEMPLE_FLOORMASTER_POT_2,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4,
},
{
// MQ Pots
RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1,
RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2,
RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1,
RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2,
RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT,
RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT,
RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT,
RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT,
RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1,
RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2,
RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT,
RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT,
RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT,
RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT,
RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT,
RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1,
RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2,
},
{}, {},
{ {
// Boss Room Locations // Boss Room Locations
@ -583,6 +948,38 @@ Dungeons::Dungeons() {
RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM,
RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM,
}, },
{
// Vanilla Pots
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12,
RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1,
RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2,
RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3,
RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1,
RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2,
RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1,
RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT,
},
{
// MQ Pots
RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1,
RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2,
RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3,
RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT,
RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1,
RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2,
RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3,
},
{}, {}); {}, {});
dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS, dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS,
RG_NONE, RG_NONE, RG_NONE, RA_ICE_CAVERN, 0, 0, RSK_MQ_ICE_CAVERN, RG_NONE, RG_NONE, RG_NONE, RA_ICE_CAVERN, 0, 0, RSK_MQ_ICE_CAVERN,
@ -606,6 +1003,31 @@ Dungeons::Dungeons() {
RC_ICE_CAVERN_MQ_GS_ICE_BLOCK, RC_ICE_CAVERN_MQ_GS_ICE_BLOCK,
RC_ICE_CAVERN_MQ_GS_RED_ICE, RC_ICE_CAVERN_MQ_GS_RED_ICE,
}, },
{
// Vanilla Pots
RC_ICE_CAVERN_HALL_POT_1,
RC_ICE_CAVERN_HALL_POT_2,
RC_ICE_CAVERN_SPINNING_BLADE_POT_1,
RC_ICE_CAVERN_SPINNING_BLADE_POT_2,
RC_ICE_CAVERN_SPINNING_BLADE_POT_3,
RC_ICE_CAVERN_NEAR_END_POT_1,
RC_ICE_CAVERN_NEAR_END_POT_2,
RC_ICE_CAVERN_FROZEN_POT_1,
},
{
// MQ Pots
RC_ICE_CAVERN_MQ_ENTRANCE_POT,
RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1,
RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4,
RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1,
RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2,
RC_ICE_CAVERN_MQ_COMPASS_POT_1,
RC_ICE_CAVERN_MQ_COMPASS_POT_2,
},
{ {
// Shared Locations // Shared Locations
RC_SHEIK_IN_ICE_CAVERN, RC_SHEIK_IN_ICE_CAVERN,
@ -659,7 +1081,14 @@ Dungeons::Dungeons() {
RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST,
RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST,
}, },
{}, {}); {},
{
// MQ Pots
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1,
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2,
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1,
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2,
}, {}, {});
dungeonList[GANONS_CASTLE] = dungeonList[GANONS_CASTLE] =
DungeonInfo("Ganon's Castle", RHT_GANONS_CASTLE, RG_NONE, RG_NONE, RG_GANONS_CASTLE_SMALL_KEY, DungeonInfo("Ganon's Castle", RHT_GANONS_CASTLE, RG_NONE, RG_NONE, RG_GANONS_CASTLE_SMALL_KEY,
RG_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_BOSS_KEY, RA_GANONS_CASTLE, 2, 3, RSK_MQ_GANONS_CASTLE, RG_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_BOSS_KEY, RA_GANONS_CASTLE, 2, 3, RSK_MQ_GANONS_CASTLE,
@ -706,6 +1135,80 @@ Dungeons::Dungeons() {
RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT,
RC_GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT, RC_GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT,
}, },
{
// Vanilla Pots
RC_GANONS_CASTLE_FOREST_TRIAL_POT_1,
RC_GANONS_CASTLE_FOREST_TRIAL_POT_2,
RC_GANONS_CASTLE_FIRE_TRIAL_POT_1,
RC_GANONS_CASTLE_FIRE_TRIAL_POT_2,
RC_GANONS_CASTLE_WATER_TRIAL_POT_1,
RC_GANONS_CASTLE_WATER_TRIAL_POT_2,
RC_GANONS_CASTLE_WATER_TRIAL_POT_3,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4,
RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1,
RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2,
RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1,
RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1,
RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2,
// Shared Pots so in both vanilla and MQ
RC_GANONS_CASTLE_GANONS_TOWER_POT_1,
RC_GANONS_CASTLE_GANONS_TOWER_POT_2,
RC_GANONS_CASTLE_GANONS_TOWER_POT_3,
RC_GANONS_CASTLE_GANONS_TOWER_POT_4,
RC_GANONS_CASTLE_GANONS_TOWER_POT_5,
RC_GANONS_CASTLE_GANONS_TOWER_POT_6,
RC_GANONS_CASTLE_GANONS_TOWER_POT_7,
RC_GANONS_CASTLE_GANONS_TOWER_POT_8,
RC_GANONS_CASTLE_GANONS_TOWER_POT_9,
RC_GANONS_CASTLE_GANONS_TOWER_POT_10,
RC_GANONS_CASTLE_GANONS_TOWER_POT_11,
RC_GANONS_CASTLE_GANONS_TOWER_POT_12,
RC_GANONS_CASTLE_GANONS_TOWER_POT_13,
RC_GANONS_CASTLE_GANONS_TOWER_POT_14,
RC_GANONS_CASTLE_GANONS_TOWER_POT_15,
RC_GANONS_CASTLE_GANONS_TOWER_POT_16,
RC_GANONS_CASTLE_GANONS_TOWER_POT_17,
RC_GANONS_CASTLE_GANONS_TOWER_POT_18,
},
{
// MQ Pots
RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2,
// Shared Pots so in both vanilla and MQ
RC_GANONS_CASTLE_GANONS_TOWER_POT_1,
RC_GANONS_CASTLE_GANONS_TOWER_POT_2,
RC_GANONS_CASTLE_GANONS_TOWER_POT_3,
RC_GANONS_CASTLE_GANONS_TOWER_POT_4,
RC_GANONS_CASTLE_GANONS_TOWER_POT_5,
RC_GANONS_CASTLE_GANONS_TOWER_POT_6,
RC_GANONS_CASTLE_GANONS_TOWER_POT_7,
RC_GANONS_CASTLE_GANONS_TOWER_POT_8,
RC_GANONS_CASTLE_GANONS_TOWER_POT_9,
RC_GANONS_CASTLE_GANONS_TOWER_POT_10,
RC_GANONS_CASTLE_GANONS_TOWER_POT_11,
RC_GANONS_CASTLE_GANONS_TOWER_POT_12,
RC_GANONS_CASTLE_GANONS_TOWER_POT_13,
RC_GANONS_CASTLE_GANONS_TOWER_POT_14,
RC_GANONS_CASTLE_GANONS_TOWER_POT_15,
RC_GANONS_CASTLE_GANONS_TOWER_POT_16,
RC_GANONS_CASTLE_GANONS_TOWER_POT_17,
RC_GANONS_CASTLE_GANONS_TOWER_POT_18,
},
{ {
// Shared Locations // Shared Locations
RC_GANONS_TOWER_BOSS_KEY_CHEST, RC_GANONS_TOWER_BOSS_KEY_CHEST,

View File

@ -13,8 +13,9 @@ class DungeonInfo {
DungeonInfo(std::string name_, RandomizerHintTextKey hintKey_, RandomizerGet map_, RandomizerGet compass_, DungeonInfo(std::string name_, RandomizerHintTextKey hintKey_, RandomizerGet map_, RandomizerGet compass_,
RandomizerGet smallKey_, RandomizerGet keyRing_, RandomizerGet bossKey_, RandomizerArea area_, RandomizerGet smallKey_, RandomizerGet keyRing_, RandomizerGet bossKey_, RandomizerArea area_,
uint8_t vanillaKeyCount_, uint8_t mqKeyCount_, RandomizerSettingKey mqSetting_, uint8_t vanillaKeyCount_, uint8_t mqKeyCount_, RandomizerSettingKey mqSetting_,
std::vector<RandomizerCheck> vanillaLocations_, std::vector<RandomizerCheck> vanillaLocations_, std::vector<RandomizerCheck> mqLocations_,
std::vector<RandomizerCheck> mqLocations_, std::vector<RandomizerCheck> sharedLocations_, std::vector<RandomizerCheck> vanillaPots_, std::vector<RandomizerCheck> mqPots_,
std::vector<RandomizerCheck> sharedLocations_,
std::vector<RandomizerCheck> bossRoomLocations_); std::vector<RandomizerCheck> bossRoomLocations_);
DungeonInfo(); DungeonInfo();
~DungeonInfo(); ~DungeonInfo();
@ -61,6 +62,8 @@ class DungeonInfo {
bool hasKeyRing = false; bool hasKeyRing = false;
std::vector<RandomizerCheck> vanillaLocations; std::vector<RandomizerCheck> vanillaLocations;
std::vector<RandomizerCheck> mqLocations; std::vector<RandomizerCheck> mqLocations;
std::vector<RandomizerCheck> vanillaPots;
std::vector<RandomizerCheck> mqPots;
std::vector<RandomizerCheck> sharedLocations; std::vector<RandomizerCheck> sharedLocations;
std::vector<RandomizerCheck> bossRoomLocations; std::vector<RandomizerCheck> bossRoomLocations;
}; };
@ -76,8 +79,8 @@ typedef enum {
SHADOW_TEMPLE, SHADOW_TEMPLE,
BOTTOM_OF_THE_WELL, BOTTOM_OF_THE_WELL,
ICE_CAVERN, ICE_CAVERN,
GERUDO_TRAINING_GROUNDS, GANONS_CASTLE,
GANONS_CASTLE GERUDO_TRAINING_GROUNDS
} DungeonKey; } DungeonKey;
class Dungeons { class Dungeons {

View File

@ -7,6 +7,7 @@
#include "soh/Enhancements/randomizer/randomizerTypes.h" #include "soh/Enhancements/randomizer/randomizerTypes.h"
#include "soh/Enhancements/randomizer/dungeon.h" #include "soh/Enhancements/randomizer/dungeon.h"
#include "soh/Enhancements/randomizer/fishsanity.h" #include "soh/Enhancements/randomizer/fishsanity.h"
#include "soh/Enhancements/randomizer/ShufflePots.h"
#include "soh/Enhancements/game-interactor/GameInteractor.h" #include "soh/Enhancements/game-interactor/GameInteractor.h"
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ImGuiUtils.h" #include "soh/ImGuiUtils.h"
@ -2318,6 +2319,9 @@ void RandomizerRegisterHooks() {
static uint32_t fishsanityOnVanillaBehaviorHook = 0; static uint32_t fishsanityOnVanillaBehaviorHook = 0;
static uint32_t fishsanityOnItemReceiveHook = 0; static uint32_t fishsanityOnItemReceiveHook = 0;
static uint32_t shufflePotsOnActorInitHook = 0;
static uint32_t shufflePotsOnVanillaBehaviorHook = 0;
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnLoadGame>([](int32_t fileNum) { GameInteractor::Instance->RegisterGameHook<GameInteractor::OnLoadGame>([](int32_t fileNum) {
randomizerQueuedChecks = std::queue<RandomizerCheck>(); randomizerQueuedChecks = std::queue<RandomizerCheck>();
randomizerQueuedCheck = RC_UNKNOWN_CHECK; randomizerQueuedCheck = RC_UNKNOWN_CHECK;
@ -2346,6 +2350,9 @@ void RandomizerRegisterHooks() {
GameInteractor::Instance->UnregisterGameHook<GameInteractor::OnVanillaBehavior>(fishsanityOnVanillaBehaviorHook); GameInteractor::Instance->UnregisterGameHook<GameInteractor::OnVanillaBehavior>(fishsanityOnVanillaBehaviorHook);
GameInteractor::Instance->UnregisterGameHook<GameInteractor::OnItemReceive>(fishsanityOnItemReceiveHook); GameInteractor::Instance->UnregisterGameHook<GameInteractor::OnItemReceive>(fishsanityOnItemReceiveHook);
GameInteractor::Instance->UnregisterGameHook<GameInteractor::OnActorInit>(shufflePotsOnActorInitHook);
GameInteractor::Instance->UnregisterGameHook<GameInteractor::OnVanillaBehavior>(shufflePotsOnVanillaBehaviorHook);
onFlagSetHook = 0; onFlagSetHook = 0;
onSceneFlagSetHook = 0; onSceneFlagSetHook = 0;
onPlayerUpdateForRCQueueHook = 0; onPlayerUpdateForRCQueueHook = 0;
@ -2369,6 +2376,9 @@ void RandomizerRegisterHooks() {
fishsanityOnVanillaBehaviorHook = 0; fishsanityOnVanillaBehaviorHook = 0;
fishsanityOnItemReceiveHook = 0; fishsanityOnItemReceiveHook = 0;
shufflePotsOnActorInitHook = 0;
shufflePotsOnVanillaBehaviorHook = 0;
if (!IS_RANDO) return; if (!IS_RANDO) return;
// ENTRTODO: Move all entrance rando handling to a dedicated file // ENTRTODO: Move all entrance rando handling to a dedicated file
@ -2406,5 +2416,10 @@ void RandomizerRegisterHooks() {
fishsanityOnVanillaBehaviorHook = GameInteractor::Instance->RegisterGameHook<GameInteractor::OnVanillaBehavior>(Rando::Fishsanity::OnVanillaBehaviorHandler); fishsanityOnVanillaBehaviorHook = GameInteractor::Instance->RegisterGameHook<GameInteractor::OnVanillaBehavior>(Rando::Fishsanity::OnVanillaBehaviorHandler);
fishsanityOnItemReceiveHook = GameInteractor::Instance->RegisterGameHook<GameInteractor::OnItemReceive>(Rando::Fishsanity::OnItemReceiveHandler); fishsanityOnItemReceiveHook = GameInteractor::Instance->RegisterGameHook<GameInteractor::OnItemReceive>(Rando::Fishsanity::OnItemReceiveHandler);
} }
if (RAND_GET_OPTION(RSK_SHUFFLE_POTS) != RO_SHUFFLE_POTS_OFF) {
shufflePotsOnActorInitHook = GameInteractor::Instance->RegisterGameHook<GameInteractor::OnActorInit>(ObjTsubo_RandomizerInit);
shufflePotsOnVanillaBehaviorHook = GameInteractor::Instance->RegisterGameHook<GameInteractor::OnVanillaBehavior>(ShufflePots_OnVanillaBehaviorHandler);
}
}); });
} }

View File

@ -370,6 +370,14 @@ Rando::Location Rando::Location::GrottoFish(RandomizerCheck rc, RandomizerCheckQ
SpoilerCollectionCheck(SPOILER_CHK_RANDOMIZER_INF, SCENE_GROTTOS, flag_)}; SpoilerCollectionCheck(SPOILER_CHK_RANDOMIZER_INF, SCENE_GROTTOS, flag_)};
} }
Rando::Location Rando::Location::Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
SceneID scene_, int32_t actorParams_, std::string&& shortName_,
std::string&& spoilerName_, RandomizerHintTextKey hintKey,
RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck) {
return {rc, quest_, RCTYPE_POT, area_, ACTOR_OBJ_TSUBO, scene_, actorParams_, std::move(shortName_), std::move(spoilerName_), hintKey, vanillaItem, false,
collectionCheck };
}
Rando::Location Rando::Location::HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_) { Rando::Location Rando::Location::HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_) {
return { rc, quest_, RCTYPE_GOSSIP_STONE, area_, ACTOR_EN_GS, scene_, actorParams_, std::move(shortName_), RHT_NONE, RG_NONE, false }; return { rc, quest_, RCTYPE_GOSSIP_STONE, area_, ACTOR_EN_GS, scene_, actorParams_, std::move(shortName_), RHT_NONE, RG_NONE, false };
} }

View File

@ -170,6 +170,11 @@ class Location {
static Location GrottoFish(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, int32_t actorParams_, static Location GrottoFish(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, int32_t actorParams_,
RandomizerInf flag_, std::string&& shortName_, RandomizerHintTextKey hintKey); RandomizerInf flag_, std::string&& shortName_, RandomizerHintTextKey hintKey);
static Location Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_,
int32_t actorParams_, std::string&& shortName_, std::string&& spoilerName_,
RandomizerHintTextKey hintKey, RandomizerGet vanillaItem,
SpoilerCollectionCheck collectionCheck);
static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, ActorID actorId_, SceneID scene_, std::string&& shortName_, static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, ActorID actorId_, SceneID scene_, std::string&& shortName_,
std::string&& spoilerName_); std::string&& spoilerName_);

View File

@ -3,8 +3,6 @@
#include "context.h" #include "context.h"
#include "dungeon.h" #include "dungeon.h"
#define TWO_ACTOR_PARAMS(a, b) (abs(a) << 16) | abs(b)
std::array<Rando::Location, RC_MAX> Rando::StaticData::locationTable; std::array<Rando::Location, RC_MAX> Rando::StaticData::locationTable;
std::multimap<std::tuple<s16, s16, s32>, RandomizerCheck> Rando::StaticData::CheckFromActorMultimap; std::multimap<std::tuple<s16, s16, s32>, RandomizerCheck> Rando::StaticData::CheckFromActorMultimap;
@ -36,6 +34,16 @@ std::vector<RandomizerCheck> Rando::StaticData::GetOverworldFishLocations() {
return overworldFishLocations; return overworldFishLocations;
} }
std::vector<RandomizerCheck> Rando::StaticData::GetOverworldPotLocations() {
std::vector<RandomizerCheck> overworldPotLocations = {};
for (Location& location : locationTable) {
if (location.GetRCType() == RCTYPE_POT && location.IsOverworld() && location.GetRandomizerCheck() != RC_UNKNOWN_CHECK) {
overworldPotLocations.push_back(location.GetRandomizerCheck());
}
}
return overworldPotLocations;
}
std::vector<RandomizerCheck> Rando::StaticData::GetStaticHintLocations() { std::vector<RandomizerCheck> Rando::StaticData::GetStaticHintLocations() {
std::vector<RandomizerCheck> staticHintLocations = {}; std::vector<RandomizerCheck> staticHintLocations = {};
for (Location& location : locationTable) { for (Location& location : locationTable) {
@ -106,7 +114,8 @@ std::vector<RandomizerCheck> Rando::StaticData::GetOverworldLocations() {
location.IsOverworld() && location.IsOverworld() &&
location.GetRandomizerCheck() != RC_UNKNOWN_CHECK && location.GetRandomizerCheck() != RC_UNKNOWN_CHECK &&
location.GetRandomizerCheck() != RC_TRIFORCE_COMPLETED && //not really an overworld check location.GetRandomizerCheck() != RC_TRIFORCE_COMPLETED && //not really an overworld check
location.GetRCType() != RCTYPE_FISH && //temp fix while locations are properly sorted out location.GetRCType() != RCTYPE_FISH && // temp fix while locations are properly sorted out
location.GetRCType() != RCTYPE_POT && // Same as fish
location.GetRCType() != RCTYPE_CHEST_GAME && //this is supposed to be excluded location.GetRCType() != RCTYPE_CHEST_GAME && //this is supposed to be excluded
(ctx->GetOption(RSK_SHUFFLE_ADULT_TRADE) || location.GetRCType() != RCTYPE_ADULT_TRADE) && //trade is handled elsewhere in location pool (ctx->GetOption(RSK_SHUFFLE_ADULT_TRADE) || location.GetRCType() != RCTYPE_ADULT_TRADE) && //trade is handled elsewhere in location pool
location.GetRCType() != RCTYPE_STATIC_HINT && location.GetRCType() != RCTYPE_STATIC_HINT &&
@ -1036,6 +1045,561 @@ void Rando::StaticData::InitLocationTable() { //
locationTable[RC_ZD_FISH_4] = Location::Fish(RC_ZD_FISH_4, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 3, RAND_INF_ZD_FISH_4, "Fish 4", RHT_ZD_FISH, RG_FISH); locationTable[RC_ZD_FISH_4] = Location::Fish(RC_ZD_FISH_4, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 3, RAND_INF_ZD_FISH_4, "Fish 4", RHT_ZD_FISH, RG_FISH);
locationTable[RC_ZD_FISH_5] = Location::Fish(RC_ZD_FISH_5, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 4, RAND_INF_ZD_FISH_5, "Fish 5", RHT_ZD_FISH, RG_FISH); locationTable[RC_ZD_FISH_5] = Location::Fish(RC_ZD_FISH_5, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 4, RAND_INF_ZD_FISH_5, "Fish 5", RHT_ZD_FISH, RG_FISH);
/* +----------------+
| SHUFFLE POTS |
+----------------+ */
// Overworld Pots
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Spoiler Name Hint Text Key Vanilla Spoiler Collection Check
locationTable[RC_KF_LINKS_HOUSE_POT] = Location::Pot(RC_KF_LINKS_HOUSE_POT, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_LINKS_HOUSE, TWO_ACTOR_PARAMS(-118, 51), "Links House Pot", "KF Links House Pot", RHT_POT_KOKIRI_FOREST, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_LINKS_HOUSE_POT));
locationTable[RC_KF_TWINS_HOUSE_POT_2] = Location::Pot(RC_KF_TWINS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_TWINS_HOUSE, TWO_ACTOR_PARAMS(35, 57), "Twins House Pot 2", "KF Twins House Pot 2", RHT_POT_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_TWINS_HOUSE_POT_2));
locationTable[RC_KF_TWINS_HOUSE_POT_1] = Location::Pot(RC_KF_TWINS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_TWINS_HOUSE, TWO_ACTOR_PARAMS(33, -55), "Twins House Pot 1", "KF Twins House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_TWINS_HOUSE_POT_1));
locationTable[RC_KF_BROTHERS_HOUSE_POT_1] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-134, -29), "Brothers House Pot 1", "KF Brothers House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_1));
locationTable[RC_KF_BROTHERS_HOUSE_POT_2] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-68, 114), "Brothers House Pot 2", "KF Brothers House Pot 2", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_2));
locationTable[RC_GF_BREAK_ROOM_POT_1] = Location::Pot(RC_GF_BREAK_ROOM_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1438, -3629), "Break Room Pot 1", "GF Break Room Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_1));
locationTable[RC_GF_BREAK_ROOM_POT_2] = Location::Pot(RC_GF_BREAK_ROOM_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1403, -3679), "Break Room Pot 2", "GF Break Room Pot 2", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_2));
locationTable[RC_GF_KITCHEN_POT_1] = Location::Pot(RC_GF_KITCHEN_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1908, -789), "Kitchen Pot 1", "GF Kitchen Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_1));
locationTable[RC_GF_KITCHEN_POT_2] = Location::Pot(RC_GF_KITCHEN_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1951, -850), "Kitchen Pot 2", "GF Kitchen Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_2));
locationTable[RC_GF_NORTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-475, -2622), "North F1 Carpenter Pot 1", "GF North F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_1));
locationTable[RC_GF_NORTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-512, -2621), "North F1 Carpenter Pot 2", "GF North F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_2));
locationTable[RC_GF_NORTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-511, -2582), "North F1 Carpenter Pot 3", "GF North F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_3));
locationTable[RC_GF_NORTH_F2_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(67, -1975), "North F2 Carpenter Pot 1", "GF North F2 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_1));
locationTable[RC_GF_NORTH_F2_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(39, -1943), "North F2 Carpenter Pot 2", "GF North F2 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_2));
locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 48), "South F1 Carpenter Pot 1", "GF South F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1));
locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 16), "South F1 Carpenter Pot 2", "GF South F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2));
locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(661, 16), "South F1 Carpenter Pot 3", "GF South F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3));
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(26, 524), "South F1 Carpenter Cell Pot 1", "GF South F1 Carpenter Cell Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1));
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(61, 549), "South F1 Carpenter Cell Pot 2", "GF South F1 Carpenter Cell Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2));
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(215, 549), "South F1 Carpenter Cell Pot 3", "GF South F1 Carpenter Cell Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3));
locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(254, 529), "South F1 Carpenter Cell Pot 4", "GF South F1 Carpenter Cell Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4));
locationTable[RC_WASTELAND_NEAR_GS_POT_1] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_1, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(488, -2424), "Near GS Pot 1", "Wasteland Near GS Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_1));
locationTable[RC_WASTELAND_NEAR_GS_POT_2] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_2, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(485, -2463), "Near GS Pot 2", "Wasteland Near GS Pot 2", RHT_POT_GERUDO_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_2));
locationTable[RC_WASTELAND_NEAR_GS_POT_3] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_3, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(806, -2426), "Near GS Pot 3", "Wasteland Near GS Pot 3", RHT_POT_GERUDO_FORTRESS, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_3));
locationTable[RC_WASTELAND_NEAR_GS_POT_4] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_4, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(801, -2460), "Near GS Pot 4", "Wasteland Near GS Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_4));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_1] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-60, 27), "Guard House Child Pot 1", "MK Guard House Child Pot 1", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_2] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-89, 28), "Guard House Child Pot 2", "MK Guard House Child Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_3] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-110, 6), "Guard House Child Pot 3", "MK Guard House Child Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_4] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_4, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-58, -7), "Guard House Child Pot 4", "MK Guard House Child Pot 4", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_4));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_5] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_5, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-80, -7), "Guard House Child Pot 5", "MK Guard House Child Pot 5", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_5));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_6] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_6, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-65, -45), "Guard House Child Pot 6", "MK Guard House Child Pot 6", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_6));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_7] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_7, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-85, -41), "Guard House Child Pot 7", "MK Guard House Child Pot 7", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_7));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_8] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_8, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-107, -45), "Guard House Child Pot 8", "MK Guard House Child Pot 8", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_8));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_9] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_9, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-66, -79), "Guard House Child Pot 9", "MK Guard House Child Pot 9", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_9));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_10] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_10, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-88, -84), "Guard House Child Pot 10", "MK Guard House Child Pot 10", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_10));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_11] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_11, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, 215), "Guard House Child Pot 11", "MK Guard House Child Pot 11", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_11));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_12] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_12, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, 148), "Guard House Child Pot 12", "MK Guard House Child Pot 12", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_12));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_13] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_13, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(73, 117), "Guard House Child Pot 13", "MK Guard House Child Pot 13", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_13));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_14] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_14, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(40, 123), "Guard House Child Pot 14", "MK Guard House Child Pot 14", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_14));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_15] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_15, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(43, 89), "Guard House Child Pot 15", "MK Guard House Child Pot 15", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_15));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_16] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_16, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, 81), "Guard House Child Pot 16", "MK Guard House Child Pot 16", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_16));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_17] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_17, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(21, 73), "Guard House Child Pot 17", "MK Guard House Child Pot 17", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_17));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_18] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_18, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(64, 45), "Guard House Child Pot 18", "MK Guard House Child Pot 18", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_18));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_19] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_19, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(84, 31), "Guard House Child Pot 19", "MK Guard House Child Pot 19", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_19));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_20] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_20, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(42, 26), "Guard House Child Pot 20", "MK Guard House Child Pot 20", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_20));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_21] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_21, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(20, 34), "Guard House Child Pot 21", "MK Guard House Child Pot 21", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_21));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_22] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_22, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(89, -2), "Guard House Child Pot 22", "MK Guard House Child Pot 22", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_22));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_23] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_23, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, -12), "Guard House Child Pot 23", "MK Guard House Child Pot 23", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_23));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_24] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_24, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(42, -5), "Guard House Child Pot 24", "MK Guard House Child Pot 24", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_24));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_25] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_25, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(16, -6), "Guard House Child Pot 25", "MK Guard House Child Pot 25", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_25));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_26] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_26, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, -44), "Guard House Child Pot 26", "MK Guard House Child Pot 26", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_26));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_27] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_27, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(37, -40), "Guard House Child Pot 27", "MK Guard House Child Pot 27", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_27));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_28] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_28, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, -80), "Guard House Child Pot 28", "MK Guard House Child Pot 28", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_28));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_29] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_29, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(50, -74), "Guard House Child Pot 29", "MK Guard House Child Pot 29", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_29));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_30] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_30, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(28, -79), "Guard House Child Pot 30", "MK Guard House Child Pot 30", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_30));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_31] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_31, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(39, -111), "Guard House Child Pot 31", "MK Guard House Child Pot 31", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_31));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_32] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_32, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(169, 216), "Guard House Child Pot 32", "MK Guard House Child Pot 32", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_32));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_33] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_33, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(168, 166), "Guard House Child Pot 33", "MK Guard House Child Pot 33", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_33));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_34] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_34, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, 120), "Guard House Child Pot 34", "MK Guard House Child Pot 34", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_34));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_35] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_35, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(177, 85), "Guard House Child Pot 35", "MK Guard House Child Pot 35", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_35));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_36] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_36, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(155, 39), "Guard House Child Pot 36", "MK Guard House Child Pot 36", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_36));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_37] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_37, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(184, 13), "Guard House Child Pot 37", "MK Guard House Child Pot 37", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_37));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_38] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_38, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(156, -1), "Guard House Child Pot 38", "MK Guard House Child Pot 38", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_38));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_39] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_39, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(181, -33), "Guard House Child Pot 39", "MK Guard House Child Pot 39", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_39));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_40] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_40, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(156, -45), "Guard House Child Pot 40", "MK Guard House Child Pot 40", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_40));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_41] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_41, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(172, -82), "Guard House Child Pot 41", "MK Guard House Child Pot 41", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_41));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_42] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_42, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -120), "Guard House Child Pot 42", "MK Guard House Child Pot 42", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_42));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_43] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_43, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -166), "Guard House Child Pot 43", "MK Guard House Child Pot 43", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_43));
locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_44] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_44, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -216), "Guard House Child Pot 44", "MK Guard House Child Pot 44", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_44));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_1] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(61, 204), "Guard House Adult Pot 1", "MK Guard House Adult Pot 1", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_1));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_2] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(71, 132), "Guard House Adult Pot 2", "MK Guard House Adult Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_2));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_3] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(74, 23), "Guard House Adult Pot 3", "MK Guard House Adult Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_3));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_4] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_4, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(40, 4), "Guard House Adult Pot 4", "MK Guard House Adult Pot 4", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_4));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_5] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_5, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(71, -22), "Guard House Adult Pot 5", "MK Guard House Adult Pot 5", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_5));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_6] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_6, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(44, -151), "Guard House Adult Pot 6", "MK Guard House Adult Pot 6", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_6));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_7] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_7, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(79, -182), "Guard House Adult Pot 7", "MK Guard House Adult Pot 7", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_7));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_8] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_8, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(44, -198), "Guard House Adult Pot 8", "MK Guard House Adult Pot 8", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_8));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_9] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_9, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(168, 210), "Guard House Adult Pot 9", "MK Guard House Adult Pot 9", RHT_POT_MARKET, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_9));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_10] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_10, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(167, -122), "Guard House Adult Pot 10", "MK Guard House Adult Pot 10", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_10));
locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_11] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_11, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(167, -210), "Guard House Adult Pot 11", "MK Guard House Adult Pot 11", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_11));
locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_1] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(100, 45), "Back Alley House Pot 1", "MK Back Alley House Pot 1", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_1));
locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_2] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(12, -180), "Back Alley House Pot 2", "MK Back Alley House Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_2));
locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_3] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(-54, -180), "Back Alley House Pot 3", "MK Back Alley House Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_3));
locationTable[RC_KAK_NEAR_POTION_SHOP_POT_1] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(222, -377), "Near Potion Shop Pot 1", "Kak Near Potion Shop Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_1));
locationTable[RC_KAK_NEAR_POTION_SHOP_POT_2] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(255, -366), "Near Potion Shop Pot 2", "Kak Near Potion Shop Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_2));
locationTable[RC_KAK_NEAR_POTION_SHOP_POT_3] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(284, -356), "Near Potion Shop Pot 3", "Kak Near Potion Shop Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_3));
locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_1] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1568), "Near Impas House Pot 1", "Kak Near Impas House Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_1));
locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_2] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1539), "Near Impas House Pot 2", "Kak Near Impas House Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_2));
locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_3] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1510), "Near Impas House Pot 3", "Kak Near Impas House Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_3));
locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_1] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-392, -870), "Near Guards House Pot 1", "Kak Near Guards House Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_1));
locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_2] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-422, -883), "Near Guards House Pot 2", "Kak Near Guards House Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_2));
locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_3] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-450, -895), "Near Guards House Pot 3", "Kak Near Guards House Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_3));
locationTable[RC_KAK_NEAR_MEDICINE_SHOP_POT_1] = Location::Pot(RC_KAK_NEAR_MEDICINE_SHOP_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(781, 89), "Near Medicine Shop Pot 1", "Kak Near Medicine Shop Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_1));
locationTable[RC_KAK_NEAR_MEDICINE_SHOP_POT_2] = Location::Pot(RC_KAK_NEAR_MEDICINE_SHOP_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(815, 89), "Near Medicine Shop Pot 2", "Kak Near Medicine Shop Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_2));
locationTable[RC_GY_DAMPES_GRAVE_POT_1] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_1, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-319, -1542), "Dampes Grave Pot 1", "GY Dampes Grave Pot 1", RHT_POT_GRAVEYARD, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_1));
locationTable[RC_GY_DAMPES_GRAVE_POT_2] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_2, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-319, -1600), "Dampes Grave Pot 2", "GY Dampes Grave Pot 2", RHT_POT_GRAVEYARD, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_2));
locationTable[RC_GY_DAMPES_GRAVE_POT_3] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_3, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-364, -1571), "Dampes Grave Pot 3", "GY Dampes Grave Pot 3", RHT_POT_GRAVEYARD, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_3));
locationTable[RC_GY_DAMPES_GRAVE_POT_4] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_4, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(198, -1540), "Dampes Grave Pot 4", "GY Dampes Grave Pot 4", RHT_POT_GRAVEYARD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_4));
locationTable[RC_GY_DAMPES_GRAVE_POT_5] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_5, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(198, -1608), "Dampes Grave Pot 5", "GY Dampes Grave Pot 5", RHT_POT_GRAVEYARD, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_5));
locationTable[RC_GY_DAMPES_GRAVE_POT_6] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_6, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(239, -1577), "Dampes Grave Pot 6", "GY Dampes Grave Pot 6", RHT_POT_GRAVEYARD, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_6));
locationTable[RC_GC_LOWER_STAIRCASE_POT_1] = Location::Pot(RC_GC_LOWER_STAIRCASE_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-189, 866), "Lower Staircase Pot 1", "GC Lower Staircase Pot 1", RHT_POT_GORON_CITY, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_LOWER_STAIRCASE_POT_1));
locationTable[RC_GC_LOWER_STAIRCASE_POT_2] = Location::Pot(RC_GC_LOWER_STAIRCASE_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-271, 825), "Lower Staircase Pot 2", "GC Lower Staircase Pot 2", RHT_POT_GORON_CITY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_LOWER_STAIRCASE_POT_2));
locationTable[RC_GC_UPPER_STAIRCASE_POT_1] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1170, 60), "Upper Staircase Pot 1", "GC Upper Staircase Pot 1", RHT_POT_GORON_CITY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_1));
locationTable[RC_GC_UPPER_STAIRCASE_POT_2] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1185, 95), "Upper Staircase Pot 2", "GC Upper Staircase Pot 2", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_2));
locationTable[RC_GC_UPPER_STAIRCASE_POT_3] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_3, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1200, 63), "Upper Staircase Pot 3", "GC Upper Staircase Pot 3", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_3));
locationTable[RC_GC_MEDIGORON_POT_1] = Location::Pot(RC_GC_MEDIGORON_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-694, 1196), "Medigoron Pot 1", "GC Medigoron Pot 1", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_MEDIGORON_POT_1));
locationTable[RC_GC_DARUNIA_POT_1] = Location::Pot(RC_GC_DARUNIA_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(262, -1210), "Darunia Pot 1", "GC Darunia Pot 1", RHT_POT_GORON_CITY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_1));
locationTable[RC_GC_DARUNIA_POT_2] = Location::Pot(RC_GC_DARUNIA_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(261, -1254), "Darunia Pot 2", "GC Darunia Pot 2", RHT_POT_GORON_CITY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_2));
locationTable[RC_GC_DARUNIA_POT_3] = Location::Pot(RC_GC_DARUNIA_POT_3, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(262, -1386), "Darunia Pot 3", "GC Darunia Pot 3", RHT_POT_GORON_CITY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_3));
locationTable[RC_DMC_NEAR_GC_POT_2] = Location::Pot(RC_DMC_NEAR_GC_POT_2, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1546, 141), "Near GC Pot 2", "DMC Near GC Pot 2", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_2));
locationTable[RC_DMC_NEAR_GC_POT_3] = Location::Pot(RC_DMC_NEAR_GC_POT_3, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1641, -127), "Near GC Pot 3", "DMC Near GC Pot 3", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_3));
locationTable[RC_DMC_NEAR_GC_POT_1] = Location::Pot(RC_DMC_NEAR_GC_POT_1, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1590, 132), "Near GC Pot 1", "DMC Near GC Pot 1", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_1));
locationTable[RC_DMC_NEAR_GC_POT_4] = Location::Pot(RC_DMC_NEAR_GC_POT_4, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1606, -166), "Near GC Pot 4", "DMC Near GC Pot 4", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_4));
locationTable[RC_ZD_NEAR_SHOP_POT_1] = Location::Pot(RC_ZD_NEAR_SHOP_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(676, 377), "Near Shop Pot 1", "ZD Near Shop Pot 1", RHT_POT_ZORAS_DOMAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_1));
locationTable[RC_ZD_NEAR_SHOP_POT_2] = Location::Pot(RC_ZD_NEAR_SHOP_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(614, 419), "Near Shop Pot 2", "ZD Near Shop Pot 2", RHT_POT_ZORAS_DOMAIN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_2));
locationTable[RC_ZD_NEAR_SHOP_POT_3] = Location::Pot(RC_ZD_NEAR_SHOP_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(289, 415), "Near Shop Pot 3", "ZD Near Shop Pot 3", RHT_POT_ZORAS_DOMAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_3));
locationTable[RC_ZD_NEAR_SHOP_POT_4] = Location::Pot(RC_ZD_NEAR_SHOP_POT_4, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(289, 289), "Near Shop Pot 4", "ZD Near Shop Pot 4", RHT_POT_ZORAS_DOMAIN, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_4));
locationTable[RC_ZD_NEAR_SHOP_POT_5] = Location::Pot(RC_ZD_NEAR_SHOP_POT_5, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(220, 384), "Near Shop Pot 5", "ZD Near Shop Pot 5", RHT_POT_ZORAS_DOMAIN, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_5));
locationTable[RC_ZF_HIDDEN_CAVE_POT_1] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(385, 2587), "Hidden Cave Pot 1", "ZF Hidden Cave Pot 1", RHT_POT_ZORAS_FOUNTAIN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_1));
locationTable[RC_ZF_HIDDEN_CAVE_POT_2] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(418, 2609), "Hidden Cave Pot 2", "ZF Hidden Cave Pot 2", RHT_POT_ZORAS_FOUNTAIN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_2));
locationTable[RC_ZF_HIDDEN_CAVE_POT_3] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(430, 2568), "Hidden Cave Pot 3", "ZF Hidden Cave Pot 3", RHT_POT_ZORAS_FOUNTAIN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_3));
locationTable[RC_ZF_NEAR_JABU_POT_1] = Location::Pot(RC_ZF_NEAR_JABU_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1630, 170), "Near Jabu Pot 1", "ZF Near Jabu Pot 1", RHT_POT_ZORAS_FOUNTAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_1));
locationTable[RC_ZF_NEAR_JABU_POT_2] = Location::Pot(RC_ZF_NEAR_JABU_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1550, 170), "Near Jabu Pot 2", "ZF Near Jabu Pot 2", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_2));
locationTable[RC_ZF_NEAR_JABU_POT_3] = Location::Pot(RC_ZF_NEAR_JABU_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1630, -260), "Near Jabu Pot 3", "ZF Near Jabu Pot 3", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_3));
locationTable[RC_ZF_NEAR_JABU_POT_4] = Location::Pot(RC_ZF_NEAR_JABU_POT_4, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1550, -260), "Near Jabu Pot 4", "ZF Near Jabu Pot 4", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_4));
locationTable[RC_LLR_FRONT_POT_1] = Location::Pot(RC_LLR_FRONT_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3218), "Front Pot 1", "LLR Front Pot 1", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_1));
locationTable[RC_LLR_FRONT_POT_2] = Location::Pot(RC_LLR_FRONT_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3186), "Front Pot 2", "LLR Front Pot 2", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_2));
locationTable[RC_LLR_FRONT_POT_3] = Location::Pot(RC_LLR_FRONT_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3154), "Front Pot 3", "LLR Front Pot 3", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_3));
locationTable[RC_LLR_FRONT_POT_4] = Location::Pot(RC_LLR_FRONT_POT_4, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3122), "Front Pot 4", "LLR Front Pot 4", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_4));
locationTable[RC_LLR_RAIN_SHED_POT_1] = Location::Pot(RC_LLR_RAIN_SHED_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(852, 172), "Rain Shed Pot 1", "LLR Rain Shed Pot 1", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_1));
locationTable[RC_LLR_RAIN_SHED_POT_2] = Location::Pot(RC_LLR_RAIN_SHED_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(840, 212), "Rain Shed Pot 2", "LLR Rain Shed Pot 2", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_2));
locationTable[RC_LLR_RAIN_SHED_POT_3] = Location::Pot(RC_LLR_RAIN_SHED_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(872, 219), "Rain Shed Pot 3", "LLR Rain Shed Pot 3", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_3));
locationTable[RC_LLR_TALONS_HOUSE_POT_1] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1255, 47), "Talons House Pot 1", "LLR Talons House Pot 1", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_1));
locationTable[RC_LLR_TALONS_HOUSE_POT_2] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1256, -51), "Talons House Pot 2", "LLR Talons House Pot 2", RHT_POT_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_2));
locationTable[RC_LLR_TALONS_HOUSE_POT_3] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1256, -78), "Talons House Pot 3", "LLR Talons House Pot 3", RHT_POT_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_3));
locationTable[RC_HF_COW_GROTTO_POT_1] = Location::Pot(RC_HF_COW_GROTTO_POT_1, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3410, -223), "Cow Grotto Pot 1", "HF Cow Grotto Pot 1", RHT_POT_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_POT_1));
locationTable[RC_HF_COW_GROTTO_POT_2] = Location::Pot(RC_HF_COW_GROTTO_POT_2, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3390, -258), "Cow Grotto Pot 2", "HF Cow Grotto Pot 2", RHT_POT_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_POT_2));
locationTable[RC_HC_STORMS_GROTTO_POT_1] = Location::Pot(RC_HC_STORMS_GROTTO_POT_1, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1843, 1014), "Storms Grotto Pot 1", "HC Storms Grotto Pot 1", RHT_POT_HYRULE_CASTLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_1));
locationTable[RC_HC_STORMS_GROTTO_POT_2] = Location::Pot(RC_HC_STORMS_GROTTO_POT_2, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1769, 954), "Storms Grotto Pot 2", "HC Storms Grotto Pot 2", RHT_POT_HYRULE_CASTLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_2));
locationTable[RC_HC_STORMS_GROTTO_POT_3] = Location::Pot(RC_HC_STORMS_GROTTO_POT_3, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1857, 897), "Storms Grotto Pot 3", "HC Storms Grotto Pot 3", RHT_POT_HYRULE_CASTLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_3));
locationTable[RC_HC_STORMS_GROTTO_POT_4] = Location::Pot(RC_HC_STORMS_GROTTO_POT_4, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1764, 847), "Storms Grotto Pot 4", "HC Storms Grotto Pot 4", RHT_POT_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_4));
// Dungeon Pots
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Spoiler Name Hint Text Key Vanilla Spoiler Collection Check
locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2673, -2060), "Lizalfos Pot 3", "Dodongos Cavern Lizalfos Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_3));
locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3526, -2574), "Lizalfos Pot 2", "Dodongos Cavern Lizalfos Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_2));
locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3579, -2574), "Lizalfos Pot 1", "Dodongos Cavern Lizalfos Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_1));
locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2653, -2031), "Lizalfos Pot 4", "Dodongos Cavern Lizalfos Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_4));
locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1708, -471), "Side Room Pot 1", "Dodongos Cavern Side Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_1));
locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1746, -424), "Side Room Pot 2", "Dodongos Cavern Side Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_2));
locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2573, -489), "Side Room Pot 3", "Dodongos Cavern Side Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_3));
locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2622, -489), "Side Room Pot 4", "Dodongos Cavern Side Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_4));
locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3507, -964), "Side Room Pot 5", "Dodongos Cavern Side Room Pot 5", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_5));
locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3617, -911), "Side Room Pot 6", "Dodongos Cavern Side Room Pot 6", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_6));
locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1846, -1879), "Torch Room Pot 1", "Dodongos Cavern Torch Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_1));
locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2050, -1964), "Torch Room Pot 2", "Dodongos Cavern Torch Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_2));
locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2281, -1799), "Torch Room Pot 3", "Dodongos Cavern Torch Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_3));
locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1836, -1239), "Torch Room Pot 4", "Dodongos Cavern Torch Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_4));
locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2414, -1823), "Staircase Pot 1", "Dodongos Cavern Staircase Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_1));
locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2368, -1827), "Staircase Pot 2", "Dodongos Cavern Staircase Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_2));
locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1574, -1831), "Staircase Pot 3", "Dodongos Cavern Staircase Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_3));
locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1528, -1827), "Staircase Pot 4", "Dodongos Cavern Staircase Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_4));
locationTable[RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2704, -483), "Single Eye Pot 1", "Dodongos Cavern Single Eye Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_1));
locationTable[RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3195, -155), "Single Eye Pot 2", "Dodongos Cavern Single Eye Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_2));
locationTable[RC_DODONGOS_CAVERN_BLADE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1656, -531), "Blade Pot 1", "Dodongos Cavern Blade Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BLADE_POT_1));
locationTable[RC_DODONGOS_CAVERN_BLADE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_BLADE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1831, -593), "Blade Pot 2", "Dodongos Cavern Blade Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BLADE_POT_2));
locationTable[RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3329, -753), "Double Eye Pot 1", "Dodongos Cavern Double Eye Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_1));
locationTable[RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2705, -1086), "Double Eye Pot 2", "Dodongos Cavern Double Eye Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_2));
locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1027, -3704), "Back Room Pot 1", "Dodongos Cavern Back Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_1));
locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(966, -3704), "Back Room Pot 2", "Dodongos Cavern Back Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_2));
locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(125, -3854), "Back Room Pot 3", "Dodongos Cavern Back Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_3));
locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(78, -3835), "Back Room Pot 4", "Dodongos Cavern Back Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_4));
locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1295, -3612), "Above Big Octo Pot 1", "Jabu Jabus Belly Above Big Octo Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1));
locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1355, -3612), "Above Big Octo Pot 2", "Jabu Jabus Belly Above Big Octo Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2));
locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1422, -3612), "Above Big Octo Pot 3", "Jabu Jabus Belly Above Big Octo Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3));
locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_1, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-551, 33), "Barinade Pot 1", "Jabu Jabus Belly Barinade Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_1));
locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_2, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(551, 36), "Barinade Pot 2", "Jabu Jabus Belly Barinade Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_2));
locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_3, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(554, -493), "Barinade Pot 3", "Jabu Jabus Belly Barinade Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_3));
locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_4] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_4, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-543, -496), "Barinade Pot 4", "Jabu Jabus Belly Barinade Pot 4", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_4));
locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_5] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_5, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-268, -786), "Barinade Pot 5", "Jabu Jabus Belly Barinade Pot 5", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_5));
locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_6] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_6, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(279, -761), "Barinade Pot 6", "Jabu Jabus Belly Barinade Pot 6", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_6));
locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(703, -2371), "Basement Pot 1", "Jabu Jabus Belly Basement Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_1));
locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(645, -2408), "Basement Pot 2", "Jabu Jabus Belly Basement Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_2));
locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(650, -2344), "Basement Pot 3", "Jabu Jabus Belly Basement Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_3));
locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1127, -2271), "Two Octorok Pot 1", "Jabu Jabus Belly Two Octorok Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1));
locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1178, -2272), "Two Octorok Pot 2", "Jabu Jabus Belly Two Octorok Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2));
locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1150, -2248), "Two Octorok Pot 3", "Jabu Jabus Belly Two Octorok Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3));
locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1131, -2221), "Two Octorok Pot 4", "Jabu Jabus Belly Two Octorok Pot 4", RHT_POT_JABU_JABUS_BELLY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4));
locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1173, -2227), "Two Octorok Pot 5", "Jabu Jabus Belly Two Octorok Pot 5", RHT_POT_JABU_JABUS_BELLY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5));
locationTable[RC_FOREST_TEMPLE_LOBBY_POT_1] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(720, -1037), "Lobby Pot 1", "Forest Temple Lobby Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_1));
locationTable[RC_FOREST_TEMPLE_LOBBY_POT_2] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(675, -989), "Lobby Pot 2", "Forest Temple Lobby Pot 2", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_2));
locationTable[RC_FOREST_TEMPLE_LOBBY_POT_3] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(630, -943), "Lobby Pot 3", "Forest Temple Lobby Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_3));
locationTable[RC_FOREST_TEMPLE_LOBBY_POT_4] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_4, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-384, -937), "Lobby Pot 4", "Forest Temple Lobby Pot 4", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_4));
locationTable[RC_FOREST_TEMPLE_LOBBY_POT_5] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_5, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-429, -981), "Lobby Pot 5", "Forest Temple Lobby Pot 5", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_5));
locationTable[RC_FOREST_TEMPLE_LOBBY_POT_6] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_6, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-477, -1034), "Lobby Pot 6", "Forest Temple Lobby Pot 6", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_6));
locationTable[RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(90, -3583), "Lower Stalfos Pot 1", "Forest Temple Lower Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_1));
locationTable[RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(142, -3583), "Lower Stalfos Pot 2", "Forest Temple Lower Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_2));
locationTable[RC_FOREST_TEMPLE_GREEN_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_GREEN_POE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1647, -1529), "Green Poe Pot 1", "Forest Temple Green Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_1));
locationTable[RC_FOREST_TEMPLE_GREEN_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_GREEN_POE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1645, -1588), "Green Poe Pot 2", "Forest Temple Green Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_2));
locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(32, -3012), "Upper Stalfos Pot 1", "Forest Temple Upper Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_1));
locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(202, -3012), "Upper Stalfos Pot 2", "Forest Temple Upper Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_2));
locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(30, -3631), "Upper Stalfos Pot 3", "Forest Temple Upper Stalfos Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_3));
locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(206, -3631), "Upper Stalfos Pot 4", "Forest Temple Upper Stalfos Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_4));
locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(830, -3639), "Blue Poe Pot 1", "Forest Temple Blue Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_1));
locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(883, -3640), "Blue Poe Pot 2", "Forest Temple Blue Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_2));
locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_3] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(941, -3640), "Blue Poe Pot 3", "Forest Temple Blue Poe Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_3));
locationTable[RC_FOREST_TEMPLE_FROZEN_EYE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_FROZEN_EYE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(2312, -874), "Frozen Eye Pot 1", "Forest Temple Frozen Eye Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_1));
locationTable[RC_FOREST_TEMPLE_FROZEN_EYE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_FROZEN_EYE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(2364, -873), "Frozen Eye Pot 2", "Forest Temple Frozen Eye Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_2));
locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1086, -714), "Near Boss Pot 1", "Fire Temple Near Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_1));
locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1138, -713), "Near Boss Pot 2", "Fire Temple Near Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_2));
locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_3] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1087, -765), "Near Boss Pot 3", "Fire Temple Near Boss Pot 3", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_3));
locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_4] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1139, -766), "Near Boss Pot 4", "Fire Temple Near Boss Pot 4", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_4));
locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_1] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -754), "Big Lava Pot 1", "Fire Temple Big Lava Pot 1", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_1));
locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_2] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -809), "Big Lava Pot 2", "Fire Temple Big Lava Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_2));
locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_3] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2227, -862), "Big Lava Pot 3", "Fire Temple Big Lava Pot 3", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_3));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2388, 953), "Flame Maze Left Pot 1", "Fire Temple Flame Maze Left Pot 1", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2423, 920), "Flame Maze Left Pot 2", "Fire Temple Flame Maze Left Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2442, 715), "Flame Maze Left Pot 3", "Fire Temple Flame Maze Left Pot 3", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2408, 680), "Flame Maze Left Pot 4", "Fire Temple Flame Maze Left Pot 4", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2208, -168), "Flame Maze Right Pot 1", "Fire Temple Flame Maze Right Pot 1", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2253, -167), "Flame Maze Right Pot 2", "Fire Temple Flame Maze Right Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -591), "Flame Maze Right Pot 3", "Fire Temple Flame Maze Right Pot 3", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3));
locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -635), "Flame Maze Right Pot 4", "Fire Temple Flame Maze Right Pot 4", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4));
locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(330, -198), "Main Level 2 Pot 1", "Water Temple Main Level 2 Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_1));
locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(331, -168), "Main Level 2 Pot 2", "Water Temple Main Level 2 Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_2));
locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-241, -1193), "Main Level 1 Pot 1", "Water Temple Main Level 1 Pot 1", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_1));
locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-117, -1192), "Main Level 1 Pot 2", "Water Temple Main Level 1 Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_2));
locationTable[RC_WATER_TEMPLE_TORCH_POT_1] = Location::Pot(RC_WATER_TEMPLE_TORCH_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 62), "Torch Pot 1", "Water Temple Torch Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_TORCH_POT_1));
locationTable[RC_WATER_TEMPLE_TORCH_POT_2] = Location::Pot(RC_WATER_TEMPLE_TORCH_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 293), "Torch Pot 2", "Water Temple Torch Pot 2", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_TORCH_POT_2));
locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_1] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1222, -617), "Near Compass Pot 1", "Water Temple Near Compass Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_1));
locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_2] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1172, -617), "Near Compass Pot 2", "Water Temple Near Compass Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_2));
locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_3] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_3, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1122, -617), "Near Compass Pot 3", "Water Temple Near Compass Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_3));
locationTable[RC_WATER_TEMPLE_CENTRAL_BOW_POT_1] = Location::Pot(RC_WATER_TEMPLE_CENTRAL_BOW_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(688, 1008), "Central Bow Pot 1", "Water Temple Central Bow Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_1));
locationTable[RC_WATER_TEMPLE_CENTRAL_BOW_POT_2] = Location::Pot(RC_WATER_TEMPLE_CENTRAL_BOW_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(631, 1008), "Central Bow Pot 2", "Water Temple Central Bow Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_2));
locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_1] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 944), "Behind Gate Pot 1", "Water Temple Behind Gate Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_1));
locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_2] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 905), "Behind Gate Pot 2", "Water Temple Behind Gate Pot 2", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_2));
locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_3] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_3, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 808), "Behind Gate Pot 3", "Water Temple Behind Gate Pot 3", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_3));
locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_4] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_4, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 770), "Behind Gate Pot 4", "Water Temple Behind Gate Pot 4", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_4));
locationTable[RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1] = Location::Pot(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-28, -3817), "Basement Block Puzzle Pot 1", "Water Temple Basement Block Puzzle Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1));
locationTable[RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2] = Location::Pot(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(28, -3817), "Basement Block Puzzle Pot 2", "Water Temple Basement Block Puzzle Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2));
locationTable[RC_WATER_TEMPLE_RIVER_POT_1] = Location::Pot(RC_WATER_TEMPLE_RIVER_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2226, -2487), "River Pot 1", "Water Temple River Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_RIVER_POT_1));
locationTable[RC_WATER_TEMPLE_RIVER_POT_2] = Location::Pot(RC_WATER_TEMPLE_RIVER_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2184, -2456), "River Pot 2", "Water Temple River Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_RIVER_POT_2));
locationTable[RC_WATER_TEMPLE_LIKE_LIKE_POT_1] = Location::Pot(RC_WATER_TEMPLE_LIKE_LIKE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3188, -1628), "Like Like Pot 1", "Water Temple Like Like Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_1));
locationTable[RC_WATER_TEMPLE_LIKE_LIKE_POT_2] = Location::Pot(RC_WATER_TEMPLE_LIKE_LIKE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3056, -1626), "Like Like Pot 2", "Water Temple Like Like Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_2));
locationTable[RC_WATER_TEMPLE_BOSS_KEY_POT_1] = Location::Pot(RC_WATER_TEMPLE_BOSS_KEY_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1150, -3031), "Boss Key Pot 1", "Water Temple Boss Key Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_1));
locationTable[RC_WATER_TEMPLE_BOSS_KEY_POT_2] = Location::Pot(RC_WATER_TEMPLE_BOSS_KEY_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1417, -3025), "Boss Key Pot 2", "Water Temple Boss Key Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_2));
locationTable[RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1806, -344), "Near Dead Hand Pot 1", "Shadow Temple Near Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1));
locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1721, 61), "Whispering Walls Pot 1", "Shadow Temple Whispering Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1));
locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1407, 61), "Whispering Walls Pot 2", "Shadow Temple Whispering Walls Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2));
locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1614, 61), "Whispering Walls Pot 3", "Shadow Temple Whispering Walls Pot 3", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3));
locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1055, -257), "Whispering Walls Pot 4", "Shadow Temple Whispering Walls Pot 4", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4));
locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1050, -130), "Whispering Walls Pot 5", "Shadow Temple Whispering Walls Pot 5", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5));
locationTable[RC_SHADOW_TEMPLE_MAP_CHEST_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MAP_CHEST_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-665, -760), "Map Chest Pot 1", "Shadow Temple Map Chest Pot 1", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_1));
locationTable[RC_SHADOW_TEMPLE_MAP_CHEST_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MAP_CHEST_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-929, -748), "Map Chest Pot 2", "Shadow Temple Map Chest Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_2));
locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(614, 3579), "Falling Spikes Pot 1", "Shadow Temple Falling Spikes Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_1));
locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(798, 3574), "Falling Spikes Pot 2", "Shadow Temple Falling Spikes Pot 2", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_2));
locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3707), "Falling Spikes Pot 3", "Shadow Temple Falling Spikes Pot 3", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_3));
locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3605), "Falling Spikes Pot 4", "Shadow Temple Falling Spikes Pot 4", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_4));
locationTable[RC_SHADOW_TEMPLE_AFTER_WIND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_WIND_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4222, -916), "After Wind Pot 1", "Shadow Temple After Wind Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_1));
locationTable[RC_SHADOW_TEMPLE_AFTER_WIND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_WIND_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4549, -922), "After Wind Pot 2", "Shadow Temple After Wind Pot 2", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_2));
locationTable[RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "Spike Walls Pot 1", "Shadow Temple Spike Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_SPIKE_WALLS_POT_1));
locationTable[RC_SHADOW_TEMPLE_FLOORMASTER_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_FLOORMASTER_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "Floormaster Pot 1", "Shadow Temple Floormaster Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_1));
locationTable[RC_SHADOW_TEMPLE_FLOORMASTER_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_FLOORMASTER_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "Floormaster Pot 2", "Shadow Temple Floormaster Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_2));
locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2400, -1470), "After Boat Pot 1", "Shadow Temple After Boat Pot 1", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_1));
locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2230, -1470), "After Boat Pot 2", "Shadow Temple After Boat Pot 2", RHT_POT_SHADOW_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_2));
locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2859, -497), "After Boat Pot 3", "Shadow Temple After Boat Pot 3", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_3));
locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2624, -492), "After Boat Pot 4", "Shadow Temple After Boat Pot 4", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_4));
locationTable[RC_SPIRIT_TEMPLE_LOBBY_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_LOBBY_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-181, 233), "Lobby Pot 1", "Spirit Temple Lobby Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_1));
locationTable[RC_SPIRIT_TEMPLE_LOBBY_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_LOBBY_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(184, 231), "Lobby Pot 2", "Spirit Temple Lobby Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_2));
locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-975, -1751), "Anubis Pot 1", "Spirit Temple Anubis Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_1));
locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-928, -1827), "Anubis Pot 2", "Spirit Temple Anubis Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_2));
locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_3, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1211, -1530), "Anubis Pot 3", "Spirit Temple Anubis Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_3));
locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_4, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1055, -1680), "Anubis Pot 4", "Spirit Temple Anubis Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SHIELD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_4));
locationTable[RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1101, -1305), "Child Climb Pot 1", "Spirit Temple Child Climb Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1));
locationTable[RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1781, 830), "After Sun Block Pot 1", "Spirit Temple After Sun Block Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1));
locationTable[RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1617, 830), "After Sun Block Pot 2", "Spirit Temple After Sun Block Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2));
locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-600, -1213), "Central Chamber Pot 1", "Spirit Temple Central Chamber Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1));
locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-564, -1180), "Central Chamber Pot 2", "Spirit Temple Central Chamber Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2));
locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-526, -1213), "Central Chamber Pot 3", "Spirit Temple Central Chamber Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3));
locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(639, -1224), "Central Chamber Pot 4", "Spirit Temple Central Chamber Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4));
locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(671, -1179), "Central Chamber Pot 5", "Spirit Temple Central Chamber Pot 5", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5));
locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(704, -1224), "Central Chamber Pot 6", "Spirit Temple Central Chamber Pot 6", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6));
locationTable[RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(819, -333), "Beamos Hall Pot 1", "Spirit Temple Beamos Hall Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1));
locationTable[RC_GANONS_CASTLE_FOREST_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1725, 2336), "Forest Trial Pot 1", "Ganons Castle Forest Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_FOREST_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1892, 2241), "Forest Trial Pot 2", "Ganons Castle Forest Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_FIRE_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1898, -3942), "Fire Trial Pot 2", "Ganons Castle Fire Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_FIRE_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_FIRE_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2051, -3855), "Fire Trial Pot 1", "Ganons Castle Fire Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3558, -920), "Water Trial Pot 1", "Ganons Castle Water Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3558, -761), "Water Trial Pot 2", "Ganons Castle Water Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_3] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2822, -507), "Water Trial Pot 3", "Ganons Castle Water Trial Pot 3", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_3));
locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1234, -3418), "Shadow Trial Pot 1", "Ganons Castle Shadow Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1621, -3203), "Shadow Trial Pot 2", "Ganons Castle Shadow Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2067, -4592), "Shadow Trial Pot 3", "Ganons Castle Shadow Trial Pot 3", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_3));
locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2224, -4506), "Shadow Trial Pot 4", "Ganons Castle Shadow Trial Pot 4", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_4));
locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1398, 1402), "Spirit Trial Pot 1", "Ganons Castle Spirit Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1237, 1494), "Spirit Trial Pot 2", "Ganons Castle Spirit Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2581, -839), "Light Trial Boulder Pot 1", "Ganons Castle Light Trial Boulder Pot 1", RHT_POT_GANONS_CASTLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1));
locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3840, -923), "Light Trial Pot 1", "Ganons Castle Light Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3840, -755), "Light Trial Pot 2", "Ganons Castle Light Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_1] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_1, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-422, -258), "Ganons Tower Pot 1", "Ganons Castle Ganons Tower Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_1));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_2] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_2, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-382, -300), "Ganons Tower Pot 2", "Ganons Castle Ganons Tower Pot 2", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_2));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_3] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_3, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-342, -341), "Ganons Tower Pot 3", "Ganons Castle Ganons Tower Pot 3", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_3));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_4] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_4, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-298, -383), "Ganons Tower Pot 4", "Ganons Castle Ganons Tower Pot 4", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_4));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_5] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_5, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-257, -424), "Ganons Tower Pot 5", "Ganons Castle Ganons Tower Pot 5", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_5));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_6] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_6, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-382, -259), "Ganons Tower Pot 6", "Ganons Castle Ganons Tower Pot 6", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_6));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_7] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_7, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-342, -300), "Ganons Tower Pot 7", "Ganons Castle Ganons Tower Pot 7", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_7));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_8] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_8, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-301, -341), "Ganons Tower Pot 8", "Ganons Castle Ganons Tower Pot 8", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_8));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_9] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_9, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-258, -383), "Ganons Tower Pot 9", "Ganons Castle Ganons Tower Pot 9", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_9));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_10] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_10, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(418, -261), "Ganons Tower Pot 10", "Ganons Castle Ganons Tower Pot 10", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_10));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_11] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_11, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(377, -301), "Ganons Tower Pot 11", "Ganons Castle Ganons Tower Pot 11", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_11));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_12] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_12, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(338, -340), "Ganons Tower Pot 12", "Ganons Castle Ganons Tower Pot 12", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_12));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_13] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_13, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(300, -380), "Ganons Tower Pot 13", "Ganons Castle Ganons Tower Pot 13", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_13));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_14] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_14, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -420), "Ganons Tower Pot 14", "Ganons Castle Ganons Tower Pot 14", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_14));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_15] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_15, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(378, -261), "Ganons Tower Pot 15", "Ganons Castle Ganons Tower Pot 15", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_15));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_16] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(337, -300), "Ganons Tower Pot 16", "Ganons Castle Ganons Tower Pot 16", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_17] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(299, -340), "Ganons Tower Pot 17", "Ganons Castle Ganons Tower Pot 17", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17));
locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_18] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -380), "Ganons Tower Pot 18", "Ganons Castle Ganons Tower Pot 18", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "Basement Pot 1", "Bottom Of The Well Basement Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "Basement Pot 2", "Bottom Of The Well Basement Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "Basement Pot 3", "Bottom Of The Well Basement Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "Basement Pot 4", "Bottom Of The Well Basement Pot 4", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "Basement Pot 5", "Bottom Of The Well Basement Pot 5", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "Basement Pot 6", "Bottom Of The Well Basement Pot 6", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "Basement Pot 7", "Bottom Of The Well Basement Pot 7", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "Basement Pot 8", "Bottom Of The Well Basement Pot 8", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "Basement Pot 9", "Bottom Of The Well Basement Pot 9", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "Basement Pot 10", "Bottom Of The Well Basement Pot 10", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "Basement Pot 11", "Bottom Of The Well Basement Pot 11", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11));
locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "Basement Pot 12", "Bottom Of The Well Basement Pot 12", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12));
locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55), "Left Side Pot 1", "Bottom Of The Well Left Side Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1));
locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9), "Left Side Pot 2", "Bottom Of The Well Left Side Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2));
locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32), "Left Side Pot 3", "Bottom Of The Well Left Side Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3));
locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389), "Near Entrance Pot 1", "Bottom Of The Well Near Entrance Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1));
locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389), "Near Entrance Pot 2", "Bottom Of The Well Near Entrance Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2));
locationTable[RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "Fire Keese Pot 1", "Bottom Of The Well Fire Keese Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1));
locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641), "Underwater Pot", "Bottom Of The Well Underwater Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT));
locationTable[RC_ICE_CAVERN_HALL_POT_1] = Location::Pot(RC_ICE_CAVERN_HALL_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-206, 449), "Hall Pot 1", "Ice Cavern Hall Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_1));
locationTable[RC_ICE_CAVERN_HALL_POT_2] = Location::Pot(RC_ICE_CAVERN_HALL_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-203, 492), "Hall Pot 2", "Ice Cavern Hall Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_2));
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_1] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "Spinning Blade Pot 1", "Ice Cavern Spinning Blade Pot 1", RHT_POT_ICE_CAVERN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1));
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_2] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(569, -175), "Spinning Blade Pot 2", "Ice Cavern Spinning Blade Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_2));
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_3] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(521, -131), "Spinning Blade Pot 3", "Ice Cavern Spinning Blade Pot 3", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_3));
locationTable[RC_ICE_CAVERN_NEAR_END_POT_1] = Location::Pot(RC_ICE_CAVERN_NEAR_END_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1422, 586), "Near End Pot 1", "Ice Cavern Near End Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_POT_1));
locationTable[RC_ICE_CAVERN_NEAR_END_POT_2] = Location::Pot(RC_ICE_CAVERN_NEAR_END_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1488, 676), "Near End Pot 2", "Ice Cavern Near End Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_POT_2));
locationTable[RC_ICE_CAVERN_FROZEN_POT_1] = Location::Pot(RC_ICE_CAVERN_FROZEN_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(366, -2036), "Frozen Pot 1", "Ice Cavern Frozen Pot 1", RHT_POT_ICE_CAVERN, RG_PURPLE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_FROZEN_POT_1));
// MQ Dungeon Pots
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Spoiler Name Hint Text Key Vanilla Spoiler Collection Check
locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2391, -1804), "MQ Staircase Pot 1", "Dodongos Cavern MQ Staircase Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2361, -1161), "MQ Staircase Pot 2", "Dodongos Cavern MQ Staircase Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1525, -1800), "MQ Staircase Pot 3", "Dodongos Cavern MQ Staircase Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3));
locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1558, -1169), "MQ Staircase Pot 4", "Dodongos Cavern MQ Staircase Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4));
locationTable[RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1532, -1225), "MQ Torch Puzzle Middle Pot", "Dodongos Cavern MQ Torch Puzzle Middle Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3195, -155), "MQ Big Block Pot 1", "Dodongos Cavern MQ Big Block Pot 1", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2704, -483), "MQ Big Block Pot 2", "Dodongos Cavern MQ Big Block Pot 2", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3869, -811), "MQ Upper Lizalfos Pot 1", "Dodongos Cavern MQ Upper Lizalfos Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3867, -969), "MQ Upper Lizalfos Pot 2", "Dodongos Cavern MQ Upper Lizalfos Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(4687, -1071), "MQ Upper Lizalfos Pot 3", "Dodongos Cavern MQ Upper Lizalfos Pot 3", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3));
locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(4693, -1194), "MQ Upper Lizalfos Pot 4", "Dodongos Cavern MQ Upper Lizalfos Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4));
locationTable[RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3327, -805), "MQ Two Flames Pot 1", "Dodongos Cavern MQ Two Flames Pot 1", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3326, -753), "MQ Two Flames Pot 2", "Dodongos Cavern MQ Two Flames Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1827, -587), "MQ Torch Puzzle Corner Pot", "Dodongos Cavern MQ Torch Puzzle Corner Pot", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1727, -151), "MQ Right Side Pot 1", "Dodongos Cavern MQ Right Side Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1815, -154), "MQ Right Side Pot 2", "Dodongos Cavern MQ Right Side Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3442, -469), "MQ Right Side Pot 3", "Dodongos Cavern MQ Right Side Pot 3", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3));
locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3682, -466), "MQ Right Side Pot 4", "Dodongos Cavern MQ Right Side Pot 4", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4));
locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1844, -1867), "MQ Poe Room Pot 1", "Dodongos Cavern MQ Poe Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2272, -2213), "MQ Poe Room Pot 2", "Dodongos Cavern MQ Poe Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2240, -1369), "MQ Poe Room Pot 3", "Dodongos Cavern MQ Poe Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3));
locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1535, -1299), "MQ Poe Room Pot 4", "Dodongos Cavern MQ Poe Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4));
locationTable[RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(258, -3055), "MQ Before Boss SW Pot", "Dodongos Cavern MQ Before Boss SW Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-265, -2499), "MQ Before Boss NE Pot", "Dodongos Cavern MQ Before Boss NE Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1758, -3194), "MQ Armos Room SE Pot", "Dodongos Cavern MQ Armos SE Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_3));
locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1223, -3197), "MQ Armos Room SW Pot", "Dodongos Cavern MQ Armos SW Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_4));
locationTable[RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1663, -4311), "MQ Backroom Pot 1", "Dodongos Cavern MQ Backroom Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1648, -4694), "MQ Backroom Pot 2", "Dodongos Cavern MQ Backroom Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_2));
locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1005, -3711), "MQ Armos Room NW Pot", "Dodongos Cavern MQ Armos NW Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_1));
locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1066, -3711), "MQ Armos Room NE Pot", "Dodongos Cavern MQ Armos NE Pot", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_2));
locationTable[RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-183, -449), "MQ Entrance Pot 1", "Jabu Jabus Belly MQ Entrance Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1));
locationTable[RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(202, -62), "MQ Entrance Pot 2", "Jabu Jabus Belly MQ Entrance Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2));
locationTable[RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-689, -1800), "MQ Geyser Pot 1", "Jabu Jabus Belly MQ Geyser Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_1));
locationTable[RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-693, -1614), "MQ Geyser Pot 2", "Jabu Jabus Belly MQ Geyser Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_2));
locationTable[RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(697, -2318), "MQ Time Block Pot 1", "Jabu Jabus Belly MQ Time Block Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1));
locationTable[RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(699, -2445), "MQ Time Block Pot 2", "Jabu Jabus Belly MQ Time Block Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2));
locationTable[RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(612, -5932), "MQ Like Likes Pot 1", "Jabu Jabus Belly MQ Like Likes Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1));
locationTable[RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(718, -5929), "MQ Like Likes Pot 2", "Jabu Jabus Belly MQ Like Likes Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2));
locationTable[RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(1305, -2005), "MQ Before Boss Pot 1", "Jabu Jabus Belly MQ Before Boss Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1));
locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(675, -989), "MQ Lobby Pot 1", "Forest Temple MQ Lobby Pot 1", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_1));
locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-429, -981), "MQ Lobby Pot 2", "Forest Temple MQ Lobby Pot 2", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_2));
locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(720, -1037), "MQ Lobby Pot 3", "Forest Temple MQ Lobby Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_3));
locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-477, -1034), "MQ Lobby Pot 4", "Forest Temple MQ Lobby Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_4));
locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_5] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_5, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(630, -943), "MQ Lobby Pot 5", "Forest Temple MQ Lobby Pot 5", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_5));
locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_6] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_6, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-384, -937), "MQ Lobby Pot 6", "Forest Temple MQ Lobby Pot 6", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_6));
locationTable[RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(90, -3583), "MQ Wolfos Pot 1", "Forest Temple MQ Wolfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_1));
locationTable[RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(142, -3583), "MQ Wolfos Pot 2", "Forest Temple MQ Wolfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_2));
locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(206, -3631), "MQ Upper Stalfos Pot 1", "Forest Temple MQ Upper Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1));
locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(32, -3012), "MQ Upper Stalfos Pot 2", "Forest Temple MQ Upper Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2));
locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(30, -3631), "MQ Upper Stalfos Pot 3", "Forest Temple MQ Upper Stalfos Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3));
locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(202, -3012), "MQ Upper Stalfos Pot 4", "Forest Temple MQ Upper Stalfos Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4));
locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(830, -3639), "MQ Blue Poe Pot 1", "Forest Temple MQ Blue Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_1));
locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(941, -3640), "MQ Blue Poe Pot 2", "Forest Temple MQ Blue Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_2));
locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(883, -3640), "MQ Blue Poe Pot 3", "Forest Temple MQ Blue Poe Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_3));
locationTable[RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1647, -1529), "MQ Green Poe Pot 1", "Forest Temple MQ Green Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_1));
locationTable[RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1645, -1588), "MQ Green Poe Pot 2", "Forest Temple MQ Green Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_2));
locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-461, -1095), "MQ Basement Pot 1", "Forest Temple MQ Basement Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_1));
locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-351, -979), "MQ Basement Pot 2", "Forest Temple MQ Basement Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_2));
locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-387, -1018), "MQ Basement Pot 3", "Forest Temple MQ Basement Pot 3", RHT_POT_FOREST_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_3));
locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-424, -1057), "MQ Basement Pot 4", "Forest Temple MQ Basement Pot 4", RHT_POT_FOREST_TEMPLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_4));
locationTable[RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1873, 2252), "MQ Forest Trial Pot 1", "Ganons Castle MQ Forest Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1726, 2326), "MQ Forest Trial Pot 2", "Ganons Castle MQ Forest Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3544, -931), "MQ Water Trial Pot 1", "Ganons Castle MQ Water Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3541, -755), "MQ Water Trial Pot 2", "Ganons Castle MQ Water Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2073, -4592), "MQ Shadow Trial Pot 1", "Ganons Castle MQ Shadow Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2217, -4516), "MQ Shadow Trial Pot 2", "Ganons Castle MQ Shadow Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1918, -3957), "MQ Fire Trial Pot 1", "Ganons Castle MQ Fire Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2052, -3888), "MQ Fire Trial Pot 2", "Ganons Castle MQ Fire Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3842, -759), "MQ Light Trial Pot 1", "Ganons Castle MQ Light Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3845, -933), "MQ Light Trial Pot 2", "Ganons Castle MQ Light Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2));
locationTable[RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1402, 1414), "MQ Spirit Trial Pot 1", "Ganons Castle MQ Spirit Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1));
locationTable[RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1256, 1500), "MQ Spirit Trial Pot 2", "Ganons Castle MQ Spirit Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2));
locationTable[RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1045, -130), "MQ Whispering Walls Pot 1", "Shadow Temple MQ Whispering Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1));
locationTable[RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1045, -240), "MQ Whispering Walls Pot 2", "Shadow Temple MQ Whispering Walls Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2));
locationTable[RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-657, -949), "MQ Entrance Redead Pot 1", "Shadow Temple MQ Entrance Redead Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1));
locationTable[RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-713, -1016), "MQ Entrance Redead Pot 2", "Shadow Temple MQ Entrance Redead Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2));
locationTable[RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(614, 3579), "MQ Lower Umbrella W Pot", "Shadow Temple MQ Stone Umbrella Lower West Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_1));
locationTable[RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(798, 3574), "MQ Lower Umbrella E Pot", "Shadow Temple MQ Stone Umbrella Lower East Pot", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_2));
locationTable[RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3707), "MQ Upper Umbrella S Pot", "Shadow Temple MQ Stone Umbrella Upper South Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_3));
locationTable[RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3605), "MQ Upper Umbrella N Pot", "Shadow Temple MQ Stone Umbrella Upper North Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_4));
locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4222, -916), "MQ Before Boat Pot 1", "Shadow Temple MQ Before Boat Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1));
locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4549, -922), "MQ Before Boat Pot 2", "Shadow Temple MQ Before Boat Pot 2", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2));
locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2400, -1470), "MQ Before Chasm W Pot", "Shadow Temple MQ Before Chasm West Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_1));
locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2230, -1470), "MQ Before Chasm E Pot", "Shadow Temple MQ Before Chasm East Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_2));
locationTable[RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2859, -497), "MQ After Chasm W Pot", "Shadow Temple MQ After Chasm West Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_3));
locationTable[RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2624, -492), "MQ After Chasm E Pot", "Shadow Temple MQ After Chasm East Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_4));
locationTable[RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "MQ Spike Baricade Pot", "Shadow Temple MQ Spike Baricade Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT));
locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "MQ Dead Hand Pot 1", "Shadow Temple MQ Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1));
locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "MQ Dead Hand Pot 2", "Shadow Temple MQ Dead Hand Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377), "MQ Inner Lobby Pot 1", "Bottom Of The Well MQ Inner Lobby Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377), "MQ Inner Lobby Pot 2", "Bottom Of The Well MQ Inner Lobby Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376), "MQ Inner Lobby Pot 3", "Bottom Of The Well MQ Inner Lobby Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174), "MQ Outer Lobby Pot", "Bottom Of The Well MQ Outer Lobby Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Pot 1", "Bottom Of The Well MQ East Inner Room Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Pot 2", "Bottom Of The Well MQ East Inner Room Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114), "MQ East Inner Pot 3", "Bottom Of The Well MQ East Inner Room Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3));
locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-357, 957), "MQ Entrance Pot 1", "Fire Temple MQ Entrance Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(356, 959), "MQ Entrance Pot 2", "Fire Temple MQ Entrance Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(187, -1449), "MQ Before Mini Boss Pot 1", "Fire Temple MQ Before Mini Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(188, -1514), "MQ Before Mini Boss Pot 2", "Fire Temple MQ Before Mini Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(487, -1450), "MQ Before Mini Boss Pot 3", "Fire Temple MQ Before Mini Boss Pot 3", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(486, -1515), "MQ Before Mini Boss Pot 4", "Fire Temple MQ Before Mini Boss Pot 4", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(38, -1179), "MQ Before Mini Boss Pot 5", "Fire Temple MQ Before Mini Boss Pot 5", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(42, -1298), "MQ Before Mini Boss Pot 6", "Fire Temple MQ Before Mini Boss Pot 6", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(520, -943), "MQ Before Mini Boss Pot 7", "Fire Temple MQ Before Mini Boss Pot 7", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7));
locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(35, -946), "MQ Before Mini Boss Pot 8", "Fire Temple MQ Before Mini Boss Pot 8", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8));
locationTable[RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1426, -711), "MQ Outside Boss Pot 1", "Fire Temple MQ Outside Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1425, -660), "MQ Outside Boss Pot 2", "Fire Temple MQ Outside Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1646, -1260), "MQ Lava Room North Pot", "Fire Temple MQ Lava Room North Pot", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -809), "MQ Lava Room High Pot", "Fire Temple MQ Lava Room High Pot", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1634, 1475), "MQ Lava Room South Pot", "Fire Temple MQ Lava Room South Pot", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_3));
locationTable[RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(845, -1591), "MQ Lava Torch Pot 1", "Fire Temple MQ Lava Torch Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(901, -1593), "MQ Lava Torch Pot 2", "Fire Temple MQ Lava Torch Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1756, -155), "MQ Above Lava Pot 1", "Fire Temple MQ Above Lava Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1819, -82), "MQ Above Lava Pot 2", "Fire Temple MQ Above Lava Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1789, -122), "MQ Above Lava Pot 3", "Fire Temple MQ Above Lava Pot 3", RHT_POT_FIRE_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3));
locationTable[RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1493, 386), "MQ Flame Wall Pot 1", "Fire Temple MQ Flame Wall Pot 1", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1445, 445), "MQ Flame Wall Pot 2", "Fire Temple MQ Flame Wall Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2217, -163), "MQ Past Fire Maze North Pot", "Fire Temple MQ Past Fire Maze North Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_1));
locationTable[RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -591), "MQ Past Fire Maze South Pot", "Fire Temple MQ Past Fire Maze South Pot", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_2));
locationTable[RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1849, -1114), "MQ Fire Maze Northmost Pot", "Fire Temple MQ Fire Maze Northmost Pot", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_3));
locationTable[RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2110, -646), "MQ Fire Maze North West Pot", "Fire Temple MQ Fire Maze North West Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_4));
locationTable[RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2319, 838), "MQ South Fire Maze W Pot", "Fire Temple MQ South Fire Maze West Pot", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_5));
locationTable[RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2285, 803), "MQ South Fire Maze E Pot", "Fire Temple MQ South Fire Maze East Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_6));
locationTable[RC_ICE_CAVERN_MQ_ENTRANCE_POT] = Location::Pot(RC_ICE_CAVERN_MQ_ENTRANCE_POT, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(248, 2287), "MQ Entrance Pot", "Ice Cavern MQ Entrance Pot", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_ENTRANCE_POT));
locationTable[RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(51, 718), "MQ First Crystal Pot 1", "Ice Cavern MQ First Crystal Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1));
locationTable[RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(52, 768), "MQ First Crystal Pot 2", "Ice Cavern MQ First Crystal Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2));
locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "MQ Early Wolfos Pot 1", "Ice Cavern MQ Early Wolfos Pot 1", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1));
locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(569, -175), "MQ Early Wolfos Pot 2", "Ice Cavern MQ Early Wolfos Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2));
locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(521, -131), "MQ Early Wolfos Pot 3", "Ice Cavern MQ Early Wolfos Pot 3", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3));
locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(138, -672), "MQ Early Wolfos Pot 4", "Ice Cavern MQ Early Wolfos Pot 4", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4));
locationTable[RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1352, 639), "MQ Push Block Pot 1", "Ice Cavern MQ Push Block Pot 1", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1));
locationTable[RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1396, 596), "MQ Push Block Pot 2", "Ice Cavern MQ Push Block Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2));
locationTable[RC_ICE_CAVERN_MQ_COMPASS_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_COMPASS_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(902, -2720), "MQ Compass Pot 1", "Ice Cavern MQ Compass Pot 1", RHT_POT_ICE_CAVERN, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_1));
locationTable[RC_ICE_CAVERN_MQ_COMPASS_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_COMPASS_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(451, -2726), "MQ Compass Pot 2", "Ice Cavern MQ Compass Pot 2", RHT_POT_ICE_CAVERN, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-255, 742), "MQ Entrance Pot 1", "Spirit Temple MQ Entrance Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(306, 682), "MQ Entrance Pot 2", "Spirit Temple MQ Entrance Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-297, 687), "MQ Entrance Pot 3", "Spirit Temple MQ Entrance Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3));
locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(260, 735), "MQ Entrance Pot 4", "Spirit Temple MQ Entrance Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-894, -50), "MQ Child Slugma Pot", "Spirit Temple MQ Child Slugma Pot", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-382, -1256), "MQ Child Gibdo Pot 1", "Spirit Temple MQ Child Gibdo Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-381, -1207), "MQ Child Gibdo Pot 2", "Spirit Temple MQ Child Gibdo Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1035, -1240), "MQ Child Like Like Pot", "Spirit Temple MQ Child Like Like Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1166, -1931), "MQ Child Stalfos Pot 1", "Spirit Temple MQ Child Stalfos Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-959, -1930), "MQ Child Stalfos Pot 2", "Spirit Temple MQ Child Stalfos Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-853, -1837), "MQ Child Stalfos Pot 3", "Spirit Temple MQ Child Stalfos Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3));
locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1250, -1852), "MQ Child Stalfos Pot 4", "Spirit Temple MQ Child Stalfos Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4));
locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(639, -1224), "MQ Statue Room 2F CE Pot", "Spirit Temple MQ Statue 2F Center East Pot", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-521, -1576), "MQ Statue Room 3F E Pot", "Spirit Temple MQ Statue Room 3F East Pot", RHT_POT_SPIRIT_TEMPLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-595, -1576), "MQ Statue Room 3F W Pot", "Spirit Temple MQ Statue Room 3F West Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_3));
locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-559, -1209), "MQ Statue Room 2F W Pot", "Spirit Temple MQ Statue 2F West Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_4));
locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(704, -1224), "MQ Statue Room 2F E Pot", "Spirit Temple MQ Statue 2F Eastmost Pot", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_5));
locationTable[RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1276, 432), "MQ Sun Blocks Pot 1", "Spirit Temple MQ Sun Blocks Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1635, -446), "MQ Sun Blocks Pot 2", "Spirit Temple MQ Sun Blocks Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(829, 250), "MQ Long Climb Pot 1", "Spirit Temple MQ Long Climb Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(531, 249), "MQ Long Climb Pot 2", "Spirit Temple MQ Long Climb Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(244, -893), "MQ Big Mirror Pot 1", "Spirit Temple MQ Big Mirror Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-122, -741), "MQ Big Mirror Pot 2", "Spirit Temple MQ Big Mirror Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(250, -741), "MQ Big Mirror Pot 3", "Spirit Temple MQ Big Mirror Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3));
locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-123, -892), "MQ Big Mirror Pot 4", "Spirit Temple MQ Big Mirror Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4));
locationTable[RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(781, -841), "MQ Before Mirror Pot 1", "Spirit Temple MQ Before Mirror Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(587, -844), "MQ Before Mirror Pot 2", "Spirit Temple MQ Before Mirror Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2));
locationTable[RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1204, -910), "MQ Early Adult Pot 1", "Spirit Temple MQ Early Adult Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1));
locationTable[RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1204, -1028), "MQ Early Adult Pot 2", "Spirit Temple MQ Early Adult Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 62), "MQ Lower Torches Pot 1", "Water Temple MQ Lower Torches Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 293), "MQ Lower Torches Pot 2", "Water Temple MQ Lower Torches Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1222, -617), "MQ Storage Room A Pot 1", "Water Temple MQ Storage Room A Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1122, -617), "MQ Storage Room A Pot 2", "Water Temple MQ Storage Room A Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1172, -617), "MQ Storage Room A Pot 3", "Water Temple MQ Storage Room A Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3));
locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-989, 255), "MQ GS Storage Room Pot 1", "Water Temple MQ GS Storage Room Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1026, 257), "MQ GS Storage Room Pot 2", "Water Temple MQ GS Storage Room Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1062, 256), "MQ GS Storage Room Pot 3", "Water Temple MQ GS Storage Room Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3));
locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(512, 579), "MQ Lizalfos Hall W Pot", "Water Temple MQ Lizalfos Hallway West Pot", RHT_POT_WATER_TEMPLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(602, 1022), "MQ Lizalfos Hall S Pot", "Water Temple MQ Lizalfos Hallway South Pot", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(789, 947), "MQ Lizalfos Hall SE Pot", "Water Temple MQ Lizalfos Hallway SE Pot", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_3));
locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(768, 565), "MQ Lizalfos Cage N Pot", "Water Temple MQ Lizalfos Cage North Pot", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_4));
locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(767, 517), "MQ Lizalfos Cage S Pot", "Water Temple MQ Lizalfos Cage South Pot", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_5));
locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -751), "MQ Stalfos Pit Middle Pot", "Water Temple MQ Stalfos Pit Middle Pot", RHT_POT_WATER_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_3));
locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -686), "MQ Stalfos Pit South Pot", "Water Temple MQ Stalfos Pit South Pot", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_4));
locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -810), "MQ Stalfos Pit North Pot", "Water Temple MQ Stalfos Pit North Pot", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_5));
locationTable[RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3188, -1628), "MQ Before Dark Link Pot 1", "Water Temple MQ Before Dark Link Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3056, -1626), "MQ Before Dark Link Pot 2", "Water Temple MQ Before Dark Link Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3072, -4024), "MQ After Dark Link Pot 1", "Water Temple MQ After Dark Link Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3169, -4023), "MQ After Dark Link Pot 2", "Water Temple MQ After Dark Link Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_RIVER_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_RIVER_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2226, -2487), "MQ River Pot 1", "Water Temple MQ River Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_RIVER_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_RIVER_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2184, -2456), "MQ River Pot 2", "Water Temple MQ River Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_BOSS_KEY_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_BOSS_KEY_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1033, -1569), "MQ Boss Key Pot", "Water Temple MQ Boss Key Pot", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BOSS_KEY_POT));
locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 770), "MQ Lowest GS Pot 1", "Water Temple MQ Lowest GS Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 808), "MQ Lowest GS Pot 2", "Water Temple MQ Lowest GS Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 944), "MQ Lowest GS Pot 3", "Water Temple MQ Lowest GS Pot 3", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_3));
locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 905), "MQ Lowest GS Pot 4", "Water Temple MQ Lowest GS Pot 4", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_4));
locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1417, -3025), "MQ Storage Room B Pot 1", "Water Temple MQ Storage Room B Pot 1", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1150, -3031), "MQ Storage Room B Pot 2", "Water Temple MQ Storage Room B Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2));
locationTable[RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(28, -3817), "MQ Mini Dodongo Pot 1", "Water Temple MQ Mini Dodongo Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1));
locationTable[RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-28, -3817), "MQ Mini Dodongo Pot 2", "Water Temple MQ Mini Dodongo Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2));
locationTable[RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -72), "MQ Lobby Left Pot 1", "Gerudo Training Grounds MQ Lobby Left Pot 1", RHT_POT_GERUDO_TRAINING_GROUNDS, RG_MAGIC_SINGLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1));
locationTable[RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -177), "MQ Lobby Left Pot 2", "Gerudo Training Grounds MQ Lobby Left Pot 2", RHT_POT_GERUDO_TRAINING_GROUNDS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2));
locationTable[RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(199, -79), "MQ Lobby Right Pot 1", "Gerudo Training Grounds MQ Lobby Right Pot 1", RHT_POT_GERUDO_TRAINING_GROUNDS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1));
locationTable[RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(197, -179), "MQ Lobby Right Pot 2", "Gerudo Training Grounds MQ Lobby Right Pot 2", RHT_POT_GERUDO_TRAINING_GROUNDS, RG_MAGIC_DOUBLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2));
// Gossip Stones // Gossip Stones
locationTable[RC_DMC_GOSSIP_STONE] = Location::HintStone(RC_DMC_GOSSIP_STONE, RCQUEST_BOTH, SCENE_DEATH_MOUNTAIN_CRATER, 14341, "Gossip Stone"); locationTable[RC_DMC_GOSSIP_STONE] = Location::HintStone(RC_DMC_GOSSIP_STONE, RCQUEST_BOTH, SCENE_DEATH_MOUNTAIN_CRATER, 14341, "Gossip Stone");
locationTable[RC_DMT_GOSSIP_STONE] = Location::HintStone(RC_DMT_GOSSIP_STONE, RCQUEST_BOTH, SCENE_DEATH_MOUNTAIN_TRAIL, 14340, "Gossip Stone"); locationTable[RC_DMT_GOSSIP_STONE] = Location::HintStone(RC_DMT_GOSSIP_STONE, RCQUEST_BOTH, SCENE_DEATH_MOUNTAIN_TRAIL, 14340, "Gossip Stone");

View File

@ -659,6 +659,8 @@ namespace Rando {
case RE_SHABOM: case RE_SHABOM:
//RANDOTODO when you add better damage logic, you can kill this by taking hits //RANDOTODO when you add better damage logic, you can kill this by taking hits
return CanUse(RG_BOOMERANG) || CanUse(RG_NUTS) || CanJumpslash() || CanUse(RG_DINS_FIRE) || CanUse(RG_ICE_ARROWS); return CanUse(RG_BOOMERANG) || CanUse(RG_NUTS) || CanJumpslash() || CanUse(RG_DINS_FIRE) || CanUse(RG_ICE_ARROWS);
case RE_OCTOROK:
return CanReflectNuts() || HookshotOrBoomerang() || CanUse(RG_FAIRY_BOW) || CanUse(RG_FAIRY_SLINGSHOT) || CanUse(RG_BOMB_BAG) || (wallOrFloor && CanUse(RG_BOMBCHU_5));
default: default:
SPDLOG_ERROR("CanKillEnemy reached `default`."); SPDLOG_ERROR("CanKillEnemy reached `default`.");
assert(false); assert(false);
@ -698,6 +700,7 @@ namespace Rando {
case RE_ANUBIS: case RE_ANUBIS:
case RE_WALLMASTER: case RE_WALLMASTER:
case RE_PURPLE_LEEVER: case RE_PURPLE_LEEVER:
case RE_OCTOROK:
return true; return true;
case RE_BIG_SKULLTULA: case RE_BIG_SKULLTULA:
//hammer jumpslash can pass, but only on flat land where you can kill with hammer swing //hammer jumpslash can pass, but only on flat land where you can kill with hammer swing
@ -964,6 +967,10 @@ namespace Rando {
return CanUse(RG_BOTTLE_WITH_BLUE_FIRE) || (ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && CanUse(RG_ICE_ARROWS)); return CanUse(RG_BOTTLE_WITH_BLUE_FIRE) || (ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && CanUse(RG_ICE_ARROWS));
} }
bool Logic::CanBreakPots(){
return true;
}
bool Logic::HasExplosives(){ bool Logic::HasExplosives(){
return CanUse(RG_BOMB_BAG) || CanUse(RG_BOMBCHU_5); return CanUse(RG_BOMB_BAG) || CanUse(RG_BOMBCHU_5);
} }

View File

@ -233,6 +233,7 @@ class Logic {
bool CanGetNightTimeGS(); bool CanGetNightTimeGS();
bool CanBreakUpperBeehives(); bool CanBreakUpperBeehives();
bool CanBreakLowerBeehives(); bool CanBreakLowerBeehives();
bool CanBreakPots();
bool HasFireSource(); bool HasFireSource();
bool HasFireSourceWithTorch(); bool HasFireSourceWithTorch();
bool TradeQuestStep(RandomizerGet rg); bool TradeQuestStep(RandomizerGet rg);

View File

@ -499,7 +499,7 @@ bool OptionGroup::RenderImGui() const { // NOLINT(*-no-recursion)
ImGui::Unindent(); ImGui::Unindent();
} }
if (option->HasFlag(IMFLAG_SEPARATOR_BOTTOM)) { if (option->HasFlag(IMFLAG_SEPARATOR_BOTTOM)) {
UIWidgets::PaddedSeparator(); UIWidgets::PaddedSeparator(false, true);
} }
} }
} }

View File

@ -256,6 +256,18 @@ void Settings::CreateOptionDescriptions() {
"\n" "\n"
"The Gerudo Card is required to enter the Gerudo Training Ground, opening " "The Gerudo Card is required to enter the Gerudo Training Ground, opening "
"the gate to Haunted Wasteland and the Horseback Archery minigame."; "the gate to Haunted Wasteland and the Horseback Archery minigame.";
mOptionDescriptions[RSK_SHUFFLE_POTS] = "Pots will drop a randomized item the first time they're broken and collected. This does not include the flying pots."
" Pots will have a different appearance when they hold a randomized item.\n"
"With this option enabled, Ganon's boss key door is moved further up the stairs to\n"
"allow access to the pots before obtaining Ganon's Boss Key.\n"
"\n"
"Off - Pots will not be shuffled.\n"
"\n"
"Dungeons - Only shuffle pots that are within dungeons.\n"
"\n"
"Overworld - Only shuffle pots that are outside of dungeons.\n"
"\n"
"All pots - Shuffle all pots.";
mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE] = "Shuffles the fishing pole into the item pool.\n" mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE] = "Shuffles the fishing pole into the item pool.\n"
"\n" "\n"
"The fishing pole is required to play the fishing pond minigame."; "The fishing pole is required to play the fishing pond minigame.";

View File

@ -1009,6 +1009,548 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
{ RC_ZD_FISH_3, RAND_INF_ZD_FISH_3 }, { RC_ZD_FISH_3, RAND_INF_ZD_FISH_3 },
{ RC_ZD_FISH_4, RAND_INF_ZD_FISH_4 }, { RC_ZD_FISH_4, RAND_INF_ZD_FISH_4 },
{ RC_ZD_FISH_5, RAND_INF_ZD_FISH_5 }, { RC_ZD_FISH_5, RAND_INF_ZD_FISH_5 },
{ RC_KF_LINKS_HOUSE_POT, RAND_INF_KF_LINKS_HOUSE_POT },
{ RC_KF_TWINS_HOUSE_POT_1, RAND_INF_KF_TWINS_HOUSE_POT_1 },
{ RC_KF_TWINS_HOUSE_POT_2, RAND_INF_KF_TWINS_HOUSE_POT_2 },
{ RC_KF_BROTHERS_HOUSE_POT_1, RAND_INF_KF_BROTHERS_HOUSE_POT_1 },
{ RC_KF_BROTHERS_HOUSE_POT_2, RAND_INF_KF_BROTHERS_HOUSE_POT_2 },
{ RC_GF_BREAK_ROOM_POT_1, RAND_INF_GF_BREAK_ROOM_POT_1 },
{ RC_GF_BREAK_ROOM_POT_2, RAND_INF_GF_BREAK_ROOM_POT_2 },
{ RC_GF_KITCHEN_POT_1, RAND_INF_GF_KITCHEN_POT_1 },
{ RC_GF_KITCHEN_POT_2, RAND_INF_GF_KITCHEN_POT_2 },
{ RC_GF_NORTH_F1_CARPENTER_POT_1, RAND_INF_GF_NORTH_F1_CARPENTER_POT_1 },
{ RC_GF_NORTH_F1_CARPENTER_POT_2, RAND_INF_GF_NORTH_F1_CARPENTER_POT_2 },
{ RC_GF_NORTH_F1_CARPENTER_POT_3, RAND_INF_GF_NORTH_F1_CARPENTER_POT_3 },
{ RC_GF_NORTH_F2_CARPENTER_POT_1, RAND_INF_GF_NORTH_F2_CARPENTER_POT_1 },
{ RC_GF_NORTH_F2_CARPENTER_POT_2, RAND_INF_GF_NORTH_F2_CARPENTER_POT_2 },
{ RC_GF_SOUTH_F1_CARPENTER_POT_1, RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1 },
{ RC_GF_SOUTH_F1_CARPENTER_POT_2, RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2 },
{ RC_GF_SOUTH_F1_CARPENTER_POT_3, RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3 },
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1 },
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2 },
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3 },
{ RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4 },
{ RC_WASTELAND_NEAR_GS_POT_1, RAND_INF_WASTELAND_NEAR_GS_POT_1 },
{ RC_WASTELAND_NEAR_GS_POT_2, RAND_INF_WASTELAND_NEAR_GS_POT_2 },
{ RC_WASTELAND_NEAR_GS_POT_3, RAND_INF_WASTELAND_NEAR_GS_POT_3 },
{ RC_WASTELAND_NEAR_GS_POT_4, RAND_INF_WASTELAND_NEAR_GS_POT_4 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_1, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_2, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_3, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_4, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_4 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_5, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_5 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_6, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_6 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_7, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_7 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_8, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_8 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_9, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_9 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_10, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_10 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_11, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_11 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_12, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_12 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_13, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_13 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_14, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_14 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_15, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_15 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_16, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_16 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_17, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_17 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_18, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_18 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_19, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_19 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_20, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_20 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_21, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_21 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_22, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_22 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_23, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_23 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_24, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_24 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_25, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_25 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_26, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_26 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_27, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_27 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_28, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_28 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_29, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_29 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_30, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_30 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_31, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_31 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_32, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_32 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_33, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_33 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_34, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_34 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_35, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_35 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_36, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_36 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_37, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_37 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_38, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_38 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_39, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_39 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_40, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_40 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_41, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_41 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_42, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_42 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_43, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_43 },
{ RC_MK_GUARD_HOUSE_CHILD_POT_44, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_44 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_1, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_1 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_2, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_2 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_3, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_3 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_4, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_4 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_5, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_5 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_6, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_6 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_7, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_7 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_8, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_8 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_9, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_9 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_10, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_10 },
{ RC_MK_GUARD_HOUSE_ADULT_POT_11, RAND_INF_MK_GUARD_HOUSE_ADULT_POT_11 },
{ RC_MK_BACK_ALLEY_HOUSE_POT_1, RAND_INF_MK_BACK_ALLEY_HOUSE_POT_1 },
{ RC_MK_BACK_ALLEY_HOUSE_POT_2, RAND_INF_MK_BACK_ALLEY_HOUSE_POT_2 },
{ RC_MK_BACK_ALLEY_HOUSE_POT_3, RAND_INF_MK_BACK_ALLEY_HOUSE_POT_3 },
{ RC_KAK_NEAR_POTION_SHOP_POT_1, RAND_INF_KAK_NEAR_POTION_SHOP_POT_1 },
{ RC_KAK_NEAR_POTION_SHOP_POT_2, RAND_INF_KAK_NEAR_POTION_SHOP_POT_2 },
{ RC_KAK_NEAR_POTION_SHOP_POT_3, RAND_INF_KAK_NEAR_POTION_SHOP_POT_3 },
{ RC_KAK_NEAR_IMPAS_HOUSE_POT_1, RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_1 },
{ RC_KAK_NEAR_IMPAS_HOUSE_POT_2, RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_2 },
{ RC_KAK_NEAR_IMPAS_HOUSE_POT_3, RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_3 },
{ RC_KAK_NEAR_GUARDS_HOUSE_POT_1, RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_1 },
{ RC_KAK_NEAR_GUARDS_HOUSE_POT_2, RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_2 },
{ RC_KAK_NEAR_GUARDS_HOUSE_POT_3, RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_3 },
{ RC_KAK_NEAR_MEDICINE_SHOP_POT_1, RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_1 },
{ RC_KAK_NEAR_MEDICINE_SHOP_POT_2, RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_2 },
{ RC_GY_DAMPES_GRAVE_POT_1, RAND_INF_GY_DAMPES_GRAVE_POT_1 },
{ RC_GY_DAMPES_GRAVE_POT_2, RAND_INF_GY_DAMPES_GRAVE_POT_2 },
{ RC_GY_DAMPES_GRAVE_POT_3, RAND_INF_GY_DAMPES_GRAVE_POT_3 },
{ RC_GY_DAMPES_GRAVE_POT_4, RAND_INF_GY_DAMPES_GRAVE_POT_4 },
{ RC_GY_DAMPES_GRAVE_POT_5, RAND_INF_GY_DAMPES_GRAVE_POT_5 },
{ RC_GY_DAMPES_GRAVE_POT_6, RAND_INF_GY_DAMPES_GRAVE_POT_6 },
{ RC_GC_LOWER_STAIRCASE_POT_1, RAND_INF_GC_LOWER_STAIRCASE_POT_1 },
{ RC_GC_LOWER_STAIRCASE_POT_2, RAND_INF_GC_LOWER_STAIRCASE_POT_2 },
{ RC_GC_UPPER_STAIRCASE_POT_1, RAND_INF_GC_UPPER_STAIRCASE_POT_1 },
{ RC_GC_UPPER_STAIRCASE_POT_2, RAND_INF_GC_UPPER_STAIRCASE_POT_2 },
{ RC_GC_UPPER_STAIRCASE_POT_3, RAND_INF_GC_UPPER_STAIRCASE_POT_3 },
{ RC_GC_MEDIGORON_POT_1, RAND_INF_GC_MEDIGORON_POT_1 },
{ RC_GC_DARUNIA_POT_1, RAND_INF_GC_DARUNIA_POT_1 },
{ RC_GC_DARUNIA_POT_2, RAND_INF_GC_DARUNIA_POT_2 },
{ RC_GC_DARUNIA_POT_3, RAND_INF_GC_DARUNIA_POT_3 },
{ RC_DMC_NEAR_GC_POT_1, RAND_INF_DMC_NEAR_GC_POT_1 },
{ RC_DMC_NEAR_GC_POT_2, RAND_INF_DMC_NEAR_GC_POT_2 },
{ RC_DMC_NEAR_GC_POT_3, RAND_INF_DMC_NEAR_GC_POT_3 },
{ RC_DMC_NEAR_GC_POT_4, RAND_INF_DMC_NEAR_GC_POT_4 },
{ RC_ZD_NEAR_SHOP_POT_1, RAND_INF_ZD_NEAR_SHOP_POT_1 },
{ RC_ZD_NEAR_SHOP_POT_2, RAND_INF_ZD_NEAR_SHOP_POT_2 },
{ RC_ZD_NEAR_SHOP_POT_3, RAND_INF_ZD_NEAR_SHOP_POT_3 },
{ RC_ZD_NEAR_SHOP_POT_4, RAND_INF_ZD_NEAR_SHOP_POT_4 },
{ RC_ZD_NEAR_SHOP_POT_5, RAND_INF_ZD_NEAR_SHOP_POT_5 },
{ RC_ZF_HIDDEN_CAVE_POT_1, RAND_INF_ZF_HIDDEN_CAVE_POT_1 },
{ RC_ZF_HIDDEN_CAVE_POT_2, RAND_INF_ZF_HIDDEN_CAVE_POT_2 },
{ RC_ZF_HIDDEN_CAVE_POT_3, RAND_INF_ZF_HIDDEN_CAVE_POT_3 },
{ RC_ZF_NEAR_JABU_POT_1, RAND_INF_ZF_NEAR_JABU_POT_1 },
{ RC_ZF_NEAR_JABU_POT_2, RAND_INF_ZF_NEAR_JABU_POT_2 },
{ RC_ZF_NEAR_JABU_POT_3, RAND_INF_ZF_NEAR_JABU_POT_3 },
{ RC_ZF_NEAR_JABU_POT_4, RAND_INF_ZF_NEAR_JABU_POT_4 },
{ RC_LLR_FRONT_POT_1, RAND_INF_LLR_FRONT_POT_1 },
{ RC_LLR_FRONT_POT_2, RAND_INF_LLR_FRONT_POT_2 },
{ RC_LLR_FRONT_POT_3, RAND_INF_LLR_FRONT_POT_3 },
{ RC_LLR_FRONT_POT_4, RAND_INF_LLR_FRONT_POT_4 },
{ RC_LLR_RAIN_SHED_POT_1, RAND_INF_LLR_RAIN_SHED_POT_1 },
{ RC_LLR_RAIN_SHED_POT_2, RAND_INF_LLR_RAIN_SHED_POT_2 },
{ RC_LLR_RAIN_SHED_POT_3, RAND_INF_LLR_RAIN_SHED_POT_3 },
{ RC_LLR_TALONS_HOUSE_POT_1, RAND_INF_LLR_TALONS_HOUSE_POT_1 },
{ RC_LLR_TALONS_HOUSE_POT_2, RAND_INF_LLR_TALONS_HOUSE_POT_2 },
{ RC_LLR_TALONS_HOUSE_POT_3, RAND_INF_LLR_TALONS_HOUSE_POT_3 },
{ RC_HF_COW_GROTTO_POT_1, RAND_INF_HF_COW_GROTTO_POT_1 },
{ RC_HF_COW_GROTTO_POT_2, RAND_INF_HF_COW_GROTTO_POT_2 },
{ RC_HC_STORMS_GROTTO_POT_1, RAND_INF_HC_STORMS_GROTTO_POT_1 },
{ RC_HC_STORMS_GROTTO_POT_2, RAND_INF_HC_STORMS_GROTTO_POT_2 },
{ RC_HC_STORMS_GROTTO_POT_3, RAND_INF_HC_STORMS_GROTTO_POT_3 },
{ RC_HC_STORMS_GROTTO_POT_4, RAND_INF_HC_STORMS_GROTTO_POT_4 },
{ RC_DODONGOS_CAVERN_LIZALFOS_POT_1, RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_1 },
{ RC_DODONGOS_CAVERN_LIZALFOS_POT_2, RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_2 },
{ RC_DODONGOS_CAVERN_LIZALFOS_POT_3, RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_3 },
{ RC_DODONGOS_CAVERN_LIZALFOS_POT_4, RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_4 },
{ RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1, RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_1 },
{ RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2, RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_2 },
{ RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3, RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_3 },
{ RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4, RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_4 },
{ RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5, RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_5 },
{ RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6, RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_6 },
{ RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1, RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_1 },
{ RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2, RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_2 },
{ RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3, RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_3 },
{ RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4, RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_4 },
{ RC_DODONGOS_CAVERN_STAIRCASE_POT_1, RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_1 },
{ RC_DODONGOS_CAVERN_STAIRCASE_POT_2, RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_2 },
{ RC_DODONGOS_CAVERN_STAIRCASE_POT_3, RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_3 },
{ RC_DODONGOS_CAVERN_STAIRCASE_POT_4, RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_4 },
{ RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1, RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_1 },
{ RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2, RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_2 },
{ RC_DODONGOS_CAVERN_BLADE_POT_1, RAND_INF_DODONGOS_CAVERN_BLADE_POT_1 },
{ RC_DODONGOS_CAVERN_BLADE_POT_2, RAND_INF_DODONGOS_CAVERN_BLADE_POT_2 },
{ RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1, RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_1 },
{ RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2, RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_2 },
{ RC_DODONGOS_CAVERN_BACK_ROOM_POT_1, RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_1 },
{ RC_DODONGOS_CAVERN_BACK_ROOM_POT_2, RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_2 },
{ RC_DODONGOS_CAVERN_BACK_ROOM_POT_3, RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_3 },
{ RC_DODONGOS_CAVERN_BACK_ROOM_POT_4, RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_4 },
{ RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1, RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1 },
{ RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2, RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2 },
{ RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3, RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3 },
{ RC_JABU_JABUS_BELLY_BARINADE_POT_1, RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_1 },
{ RC_JABU_JABUS_BELLY_BARINADE_POT_2, RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_2 },
{ RC_JABU_JABUS_BELLY_BARINADE_POT_3, RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_3 },
{ RC_JABU_JABUS_BELLY_BARINADE_POT_4, RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_4 },
{ RC_JABU_JABUS_BELLY_BARINADE_POT_5, RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_5 },
{ RC_JABU_JABUS_BELLY_BARINADE_POT_6, RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_6 },
{ RC_JABU_JABUS_BELLY_BASEMENT_POT_1, RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_1 },
{ RC_JABU_JABUS_BELLY_BASEMENT_POT_2, RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_2 },
{ RC_JABU_JABUS_BELLY_BASEMENT_POT_3, RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_3 },
{ RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1, RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1 },
{ RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2, RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2 },
{ RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3 },
{ RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4 },
{ RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5 },
{ RC_FOREST_TEMPLE_LOBBY_POT_1, RAND_INF_FOREST_TEMPLE_LOBBY_POT_1 },
{ RC_FOREST_TEMPLE_LOBBY_POT_2, RAND_INF_FOREST_TEMPLE_LOBBY_POT_2 },
{ RC_FOREST_TEMPLE_LOBBY_POT_3, RAND_INF_FOREST_TEMPLE_LOBBY_POT_3 },
{ RC_FOREST_TEMPLE_LOBBY_POT_4, RAND_INF_FOREST_TEMPLE_LOBBY_POT_4 },
{ RC_FOREST_TEMPLE_LOBBY_POT_5, RAND_INF_FOREST_TEMPLE_LOBBY_POT_5 },
{ RC_FOREST_TEMPLE_LOBBY_POT_6, RAND_INF_FOREST_TEMPLE_LOBBY_POT_6 },
{ RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1, RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_1 },
{ RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2, RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_2 },
{ RC_FOREST_TEMPLE_GREEN_POE_POT_1, RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_1 },
{ RC_FOREST_TEMPLE_GREEN_POE_POT_2, RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_2 },
{ RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1, RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_1 },
{ RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2, RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_2 },
{ RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3, RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_3 },
{ RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4, RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_4 },
{ RC_FOREST_TEMPLE_BLUE_POE_POT_1, RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_1 },
{ RC_FOREST_TEMPLE_BLUE_POE_POT_2, RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_2 },
{ RC_FOREST_TEMPLE_BLUE_POE_POT_3, RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_3 },
{ RC_FOREST_TEMPLE_FROZEN_EYE_POT_1, RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_1 },
{ RC_FOREST_TEMPLE_FROZEN_EYE_POT_2, RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_2 },
{ RC_FIRE_TEMPLE_NEAR_BOSS_POT_1, RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_1 },
{ RC_FIRE_TEMPLE_NEAR_BOSS_POT_2, RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_2 },
{ RC_FIRE_TEMPLE_NEAR_BOSS_POT_3, RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_3 },
{ RC_FIRE_TEMPLE_NEAR_BOSS_POT_4, RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_4 },
{ RC_FIRE_TEMPLE_BIG_LAVA_POT_1, RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_1 },
{ RC_FIRE_TEMPLE_BIG_LAVA_POT_2, RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_2 },
{ RC_FIRE_TEMPLE_BIG_LAVA_POT_3, RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_3 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3 },
{ RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4, RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4 },
{ RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_1 },
{ RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2, RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_2 },
{ RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1, RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_1 },
{ RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2, RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_2 },
{ RC_WATER_TEMPLE_TORCH_POT_1, RAND_INF_WATER_TEMPLE_TORCH_POT_1 },
{ RC_WATER_TEMPLE_TORCH_POT_2, RAND_INF_WATER_TEMPLE_TORCH_POT_2 },
{ RC_WATER_TEMPLE_NEAR_COMPASS_POT_1, RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_1 },
{ RC_WATER_TEMPLE_NEAR_COMPASS_POT_2, RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_2 },
{ RC_WATER_TEMPLE_NEAR_COMPASS_POT_3, RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_3 },
{ RC_WATER_TEMPLE_CENTRAL_BOW_POT_1, RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_1 },
{ RC_WATER_TEMPLE_CENTRAL_BOW_POT_2, RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_2 },
{ RC_WATER_TEMPLE_BEHIND_GATE_POT_1, RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_1 },
{ RC_WATER_TEMPLE_BEHIND_GATE_POT_2, RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_2 },
{ RC_WATER_TEMPLE_BEHIND_GATE_POT_3, RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_3 },
{ RC_WATER_TEMPLE_BEHIND_GATE_POT_4, RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_4 },
{ RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1, RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1 },
{ RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2, RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2 },
{ RC_WATER_TEMPLE_RIVER_POT_1, RAND_INF_WATER_TEMPLE_RIVER_POT_1 },
{ RC_WATER_TEMPLE_RIVER_POT_2, RAND_INF_WATER_TEMPLE_RIVER_POT_2 },
{ RC_WATER_TEMPLE_LIKE_LIKE_POT_1, RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_1 },
{ RC_WATER_TEMPLE_LIKE_LIKE_POT_2, RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_2 },
{ RC_WATER_TEMPLE_BOSS_KEY_POT_1, RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_1 },
{ RC_WATER_TEMPLE_BOSS_KEY_POT_2, RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_2 },
{ RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1 },
{ RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1, RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1 },
{ RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2, RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2 },
{ RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3, RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3 },
{ RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4, RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4 },
{ RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5, RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5 },
{ RC_SHADOW_TEMPLE_MAP_CHEST_POT_1, RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_1 },
{ RC_SHADOW_TEMPLE_MAP_CHEST_POT_2, RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_2 },
{ RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1, RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_1 },
{ RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2, RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_2 },
{ RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3, RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_3 },
{ RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4, RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_4 },
{ RC_SHADOW_TEMPLE_AFTER_WIND_POT_1, RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_1 },
{ RC_SHADOW_TEMPLE_AFTER_WIND_POT_2, RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_2 },
{ RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1, RAND_INF_SHADOW_TEMPLE_SPIKE_WALLS_POT_1 },
{ RC_SHADOW_TEMPLE_FLOORMASTER_POT_1, RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_1 },
{ RC_SHADOW_TEMPLE_FLOORMASTER_POT_2, RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_2 },
{ RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1, RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_1 },
{ RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2, RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_2 },
{ RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3, RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_3 },
{ RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4, RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_4 },
{ RC_SPIRIT_TEMPLE_LOBBY_POT_1, RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_1 },
{ RC_SPIRIT_TEMPLE_LOBBY_POT_2, RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_2 },
{ RC_SPIRIT_TEMPLE_ANUBIS_POT_1, RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_1 },
{ RC_SPIRIT_TEMPLE_ANUBIS_POT_2, RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_2 },
{ RC_SPIRIT_TEMPLE_ANUBIS_POT_3, RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_3 },
{ RC_SPIRIT_TEMPLE_ANUBIS_POT_4, RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_4 },
{ RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, RAND_INF_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1 },
{ RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1, RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1 },
{ RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2, RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2 },
{ RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1, RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1 },
{ RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2, RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2 },
{ RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3, RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3 },
{ RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4, RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4 },
{ RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5, RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5 },
{ RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6, RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6 },
{ RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1, RAND_INF_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1 },
{ RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_FIRE_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_WATER_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_WATER_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_WATER_TRIAL_POT_3, RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_3 },
{ RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3, RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_3 },
{ RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4, RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_4 },
{ RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1 },
{ RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_1, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_1 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_2, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_2 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_3, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_3 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_4, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_4 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_5, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_5 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_6, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_6 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_7, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_7 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_8, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_8 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_9, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_9 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_10, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_10 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_11, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_11 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_12, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_12 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_13, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_13 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_14, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_14 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_15, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_15 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17 },
{ RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11 },
{ RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12 },
{ RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1 },
{ RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2 },
{ RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3 },
{ RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1 },
{ RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2 },
{ RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1 },
{ RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT },
{ RC_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_1 },
{ RC_ICE_CAVERN_HALL_POT_2, RAND_INF_ICE_CAVERN_HALL_POT_2 },
{ RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1 },
{ RC_ICE_CAVERN_SPINNING_BLADE_POT_2, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_2 },
{ RC_ICE_CAVERN_SPINNING_BLADE_POT_3, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_3 },
{ RC_ICE_CAVERN_NEAR_END_POT_1, RAND_INF_ICE_CAVERN_NEAR_END_POT_1 },
{ RC_ICE_CAVERN_NEAR_END_POT_2, RAND_INF_ICE_CAVERN_NEAR_END_POT_2 },
{ RC_ICE_CAVERN_FROZEN_POT_1, RAND_INF_ICE_CAVERN_FROZEN_POT_1 },
{ RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1 },
{ RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2 },
{ RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1, RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_1 },
{ RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2, RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_2 },
{ RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1, RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1 },
{ RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2, RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2 },
{ RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1 },
{ RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2 },
{ RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, RAND_INF_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1 },
{ RC_FOREST_TEMPLE_MQ_LOBBY_POT_1, RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_1 },
{ RC_FOREST_TEMPLE_MQ_LOBBY_POT_2, RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_2 },
{ RC_FOREST_TEMPLE_MQ_LOBBY_POT_3, RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_3 },
{ RC_FOREST_TEMPLE_MQ_LOBBY_POT_4, RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_4 },
{ RC_FOREST_TEMPLE_MQ_LOBBY_POT_5, RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_5 },
{ RC_FOREST_TEMPLE_MQ_LOBBY_POT_6, RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_6 },
{ RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1, RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_1 },
{ RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2, RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_2 },
{ RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1, RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1 },
{ RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2, RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2 },
{ RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3, RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3 },
{ RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4, RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4 },
{ RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1, RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_1 },
{ RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2, RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_2 },
{ RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3, RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_3 },
{ RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1, RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_1 },
{ RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2, RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_2 },
{ RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1, RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_1 },
{ RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2, RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_2 },
{ RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3, RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_3 },
{ RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4, RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_4 },
{ RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1, RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2, RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3, RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3 },
{ RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4, RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4 },
{ RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1, RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2, RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3, RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3 },
{ RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4, RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4 },
{ RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1, RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2, RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3, RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3 },
{ RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4, RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4 },
{ RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT, RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT, RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1, RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2, RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1, RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2, RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1, RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2, RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3, RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3 },
{ RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4 },
{ RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT, RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT, RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT, RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_3 },
{ RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT, RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_4 },
{ RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT, RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT, RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_2 },
{ RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1, RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_1 },
{ RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2, RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_2 },
{ RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2 },
{ RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1, RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1 },
{ RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2, RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2 },
{ RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1 },
{ RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2, RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2 },
{ RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1 },
{ RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2, RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2 },
{ RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT, RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_1 },
{ RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT, RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_2 },
{ RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT, RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_3 },
{ RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT, RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_4 },
{ RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1 },
{ RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2, RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2 },
{ RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT, RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_1 },
{ RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT, RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_2 },
{ RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT, RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_3 },
{ RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT, RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_4 },
{ RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT },
{ RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1 },
{ RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2 },
{ RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1 },
{ RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2 },
{ RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3 },
{ RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT },
{ RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1 },
{ RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2 },
{ RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3 },
{ RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1 },
{ RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2 },
{ RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1 },
{ RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2 },
{ RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT, RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_1 },
{ RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT, RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_2 },
{ RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT, RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_3 },
{ RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1 },
{ RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2 },
{ RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1 },
{ RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2, RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2 },
{ RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3, RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3 },
{ RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1, RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1 },
{ RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2, RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2 },
{ RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_1 },
{ RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT, RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_2 },
{ RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT, RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_3 },
{ RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_4 },
{ RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT, RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_5 },
{ RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT, RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_6 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7 },
{ RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8, RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8 },
{ RC_ICE_CAVERN_MQ_ENTRANCE_POT, RAND_INF_ICE_CAVERN_MQ_ENTRANCE_POT },
{ RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1 },
{ RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2 },
{ RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1 },
{ RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2 },
{ RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3 },
{ RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4 },
{ RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1 },
{ RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2 },
{ RC_ICE_CAVERN_MQ_COMPASS_POT_1, RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_1 },
{ RC_ICE_CAVERN_MQ_COMPASS_POT_2, RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3 },
{ RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4 },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3 },
{ RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4 },
{ RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT, RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT, RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT, RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_3 },
{ RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT, RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_4 },
{ RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT, RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_5 },
{ RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3, RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3 },
{ RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4, RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4 },
{ RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2 },
{ RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1, RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1 },
{ RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2, RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2 },
{ RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT, RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_1 },
{ RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT, RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_2 },
{ RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT, RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_3 },
{ RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT, RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_4 },
{ RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT, RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_5 },
{ RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1, RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1 },
{ RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2, RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2 },
{ RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3, RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3 },
{ RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1, RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1 },
{ RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2, RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2 },
{ RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT, RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_3 },
{ RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT, RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_4 },
{ RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT, RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_5 },
{ RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1 },
{ RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2 },
{ RC_WATER_TEMPLE_MQ_RIVER_POT_1, RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_1 },
{ RC_WATER_TEMPLE_MQ_RIVER_POT_2, RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_2 },
{ RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1, RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1 },
{ RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2, RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2 },
{ RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1 },
{ RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2 },
{ RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1, RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1 },
{ RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2, RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2 },
{ RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3, RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3 },
{ RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1, RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1 },
{ RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2, RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2 },
{ RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1, RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_1 },
{ RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2, RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_2 },
{ RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3, RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_3 },
{ RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4, RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_4 },
{ RC_WATER_TEMPLE_MQ_BOSS_KEY_POT, RAND_INF_WATER_TEMPLE_MQ_BOSS_KEY_POT },
{ RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1, RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1 },
{ RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2, RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2 },
{ RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1, RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1 },
{ RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2, RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2 },
}; };
BeehiveIdentity Randomizer::IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData) { BeehiveIdentity Randomizer::IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData) {
@ -1250,6 +1792,32 @@ CowIdentity Randomizer::IdentifyCow(s32 sceneNum, s32 posX, s32 posZ) {
return cowIdentity; return cowIdentity;
} }
PotIdentity Randomizer::IdentifyPot(s32 sceneNum, s32 posX, s32 posZ) {
struct PotIdentity potIdentity;
uint32_t potSceneNum = sceneNum;
if (sceneNum == SCENE_GANONDORF_BOSS) {
potSceneNum = SCENE_GANONS_TOWER;
}
potIdentity.randomizerInf = RAND_INF_MAX;
potIdentity.randomizerCheck = RC_UNKNOWN_CHECK;
s32 actorParams = TWO_ACTOR_PARAMS(posX, posZ);
Rando::Location* location = GetCheckObjectFromActor(ACTOR_OBJ_TSUBO, potSceneNum, actorParams);
if (location->GetRandomizerCheck() == RC_UNKNOWN_CHECK) {
LUSLOG_WARN("IdentifyPot did not receive a valid RC value (%d).", location->GetRandomizerCheck());
assert(false);
} else {
potIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
potIdentity.randomizerCheck = location->GetRandomizerCheck();
}
return potIdentity;
}
FishIdentity Randomizer::IdentifyFish(s32 sceneNum, s32 actorParams) { FishIdentity Randomizer::IdentifyFish(s32 sceneNum, s32 actorParams) {
struct FishIdentity fishIdentity; struct FishIdentity fishIdentity;

View File

@ -52,6 +52,7 @@ class Randomizer {
BeehiveIdentity IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData); BeehiveIdentity IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData);
ShopItemIdentity IdentifyShopItem(s32 sceneNum, u8 slotIndex); ShopItemIdentity IdentifyShopItem(s32 sceneNum, u8 slotIndex);
CowIdentity IdentifyCow(s32 sceneNum, s32 posX, s32 posZ); CowIdentity IdentifyCow(s32 sceneNum, s32 posX, s32 posZ);
PotIdentity IdentifyPot(s32 sceneNum, s32 posX, s32 posZ);
FishIdentity IdentifyFish(s32 sceneNum, s32 actorParams); FishIdentity IdentifyFish(s32 sceneNum, s32 actorParams);
GetItemEntry GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogItemId, bool checkObtainability = true); GetItemEntry GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogItemId, bool checkObtainability = true);
GetItemEntry GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogItemId, bool checkObtainability = true); GetItemEntry GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogItemId, bool checkObtainability = true);

View File

@ -6,6 +6,8 @@
#define MAX_TRICK_NAME_SIZE 50 #define MAX_TRICK_NAME_SIZE 50
#define TWO_ACTOR_PARAMS(a, b) ((((a)&0xFFFF) << 16) | ((b)&0xFFFF))
// This should probably go in a less rando-specific location // This should probably go in a less rando-specific location
// but the best location will probably be in the modding engine // but the best location will probably be in the modding engine
// which doesn't exist yet. // which doesn't exist yet.
@ -261,6 +263,7 @@ typedef enum {
RCTYPE_STATIC_HINT, // RANDOTODO make these into event access RCTYPE_STATIC_HINT, // RANDOTODO make these into event access
RCTYPE_SONG_LOCATION, // Song locations RCTYPE_SONG_LOCATION, // Song locations
RCTYPE_BOSS_HEART_OR_OTHER_REWARD, // Boss heart container or lesser dungeon rewards (lens, ice arrow) RCTYPE_BOSS_HEART_OR_OTHER_REWARD, // Boss heart container or lesser dungeon rewards (lens, ice arrow)
RCTYPE_POT, // Pots
RCTYPE_DUNGEON_REWARD, // Dungeon rewards (blue warps) RCTYPE_DUNGEON_REWARD, // Dungeon rewards (blue warps)
RCTYPE_OCARINA, // Ocarina locations RCTYPE_OCARINA, // Ocarina locations
RCTYPE_BEEHIVE, // Beehives RCTYPE_BEEHIVE, // Beehives
@ -643,6 +646,7 @@ typedef enum {
RR_FOREST_TEMPLE_MQ_FALLING_ROOM, RR_FOREST_TEMPLE_MQ_FALLING_ROOM,
RR_FOREST_TEMPLE_MQ_AMY_ROOM, RR_FOREST_TEMPLE_MQ_AMY_ROOM,
RR_FOREST_TEMPLE_MQ_BASEMENT, RR_FOREST_TEMPLE_MQ_BASEMENT,
RR_FOREST_TEMPLE_MQ_BASEMENT_POT_ROOM,
RR_FOREST_TEMPLE_MQ_BOSS_REGION, RR_FOREST_TEMPLE_MQ_BOSS_REGION,
RR_FOREST_TEMPLE_BOSS_ENTRYWAY, RR_FOREST_TEMPLE_BOSS_ENTRYWAY,
@ -650,6 +654,7 @@ typedef enum {
RR_FIRE_TEMPLE_FIRST_ROOM, RR_FIRE_TEMPLE_FIRST_ROOM,
RR_FIRE_TEMPLE_NEAR_BOSS_ROOM, RR_FIRE_TEMPLE_NEAR_BOSS_ROOM,
RR_FIRE_TEMPLE_NEAR_BOSS_ROOM_NORTH,
RR_FIRE_TEMPLE_LOOP_ENEMIES, RR_FIRE_TEMPLE_LOOP_ENEMIES,
RR_FIRE_TEMPLE_LOOP_TILES, RR_FIRE_TEMPLE_LOOP_TILES,
RR_FIRE_TEMPLE_LOOP_FLARE_DANCER, RR_FIRE_TEMPLE_LOOP_FLARE_DANCER,
@ -708,8 +713,8 @@ typedef enum {
RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM, RR_FIRE_TEMPLE_MQ_HIGH_TORCH_ROOM,
RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE, RR_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE,
RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PLATFORMS, RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PLATFORMS,
RR_FIRE_TEMPLE_MQ_FIRE_MAZE_SIDE_ROOM,
RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE, RR_FIRE_TEMPLE_MQ_NORTH_FIRE_MAZE,
RR_FIRE_TEMPLE_MQ_WEST_FIRE_MAZE,
RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PAST_WALL, RR_FIRE_TEMPLE_MQ_FIRE_MAZE_PAST_WALL,
RR_FIRE_TEMPLE_MQ_UPPER_FLARE_DANCER, RR_FIRE_TEMPLE_MQ_UPPER_FLARE_DANCER,
RR_FIRE_TEMPLE_MQ_SCARECROW_ROOM, RR_FIRE_TEMPLE_MQ_SCARECROW_ROOM,
@ -764,8 +769,8 @@ typedef enum {
RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_2F, RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_2F,
RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_3F, RR_WATER_TEMPLE_MQ_BEHIND_BLUE_SWITCH_3F,
RR_WATER_TEMPLE_MQ_STORAGE_ROOM, RR_WATER_TEMPLE_MQ_STORAGE_ROOM,
RR_WATER_TEMPLE_MQ_2F_SOUTH, RR_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY,
RR_WATER_TEMPLE_MQ_2F_SOUTH_CAGE, RR_WATER_TEMPLE_MQ_LIZALFOS_CAGE,
RR_WATER_TEMPLE_MQ_3F_EAST_LEDGE, RR_WATER_TEMPLE_MQ_3F_EAST_LEDGE,
RR_WATER_TEMPLE_MQ_WATERFALL, RR_WATER_TEMPLE_MQ_WATERFALL,
RR_WATER_TEMPLE_MQ_STALFOS_PIT, RR_WATER_TEMPLE_MQ_STALFOS_PIT,
@ -858,8 +863,8 @@ typedef enum {
RR_SHADOW_TEMPLE_MQ_UPPER_HUGE_PIT, RR_SHADOW_TEMPLE_MQ_UPPER_HUGE_PIT,
RR_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_ROOM, RR_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_ROOM,
RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT,
RR_SHADOW_TEMPLE_MQ_FALLING_SPIKES_ROOM, RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM,
RR_SHADOW_TEMPLE_MQ_UPPER_FALLING_SPIKES_ROOM, RR_SHADOW_TEMPLE_MQ_UPPER_STONE_UMBRELLA,
RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM, RR_SHADOW_TEMPLE_MQ_FLOOR_SPIKES_ROOM,
RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM, RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM,
RR_SHADOW_TEMPLE_MQ_WIND_TUNNEL, RR_SHADOW_TEMPLE_MQ_WIND_TUNNEL,
@ -904,6 +909,7 @@ typedef enum {
RR_ICE_CAVERN_MQ_MAP_ROOM, RR_ICE_CAVERN_MQ_MAP_ROOM,
RR_ICE_CAVERN_MQ_SCARECROW_ROOM, RR_ICE_CAVERN_MQ_SCARECROW_ROOM,
RR_ICE_CAVERN_MQ_STALFOS_ROOM, RR_ICE_CAVERN_MQ_STALFOS_ROOM,
RR_ICE_CAVERN_MQ_WEST_CORRIDOR,
RR_ICE_CAVERN_MQ_COMPASS_ROOM, RR_ICE_CAVERN_MQ_COMPASS_ROOM,
RR_GERUDO_TRAINING_GROUNDS_LOBBY, RR_GERUDO_TRAINING_GROUNDS_LOBBY,
@ -946,6 +952,7 @@ typedef enum {
RR_GANONS_CASTLE_SHADOW_TRIAL, RR_GANONS_CASTLE_SHADOW_TRIAL,
RR_GANONS_CASTLE_SPIRIT_TRIAL, RR_GANONS_CASTLE_SPIRIT_TRIAL,
RR_GANONS_CASTLE_LIGHT_TRIAL, RR_GANONS_CASTLE_LIGHT_TRIAL,
RR_GANONS_CASTLE_TOWER,
RR_GANONS_CASTLE_MQ_LOBBY, RR_GANONS_CASTLE_MQ_LOBBY,
RR_GANONS_CASTLE_MQ_MAIN, RR_GANONS_CASTLE_MQ_MAIN,
@ -977,6 +984,7 @@ typedef enum {
RR_GANONS_TOWER_FLOOR_1, RR_GANONS_TOWER_FLOOR_1,
RR_GANONS_TOWER_FLOOR_2, RR_GANONS_TOWER_FLOOR_2,
RR_GANONS_TOWER_FLOOR_3, RR_GANONS_TOWER_FLOOR_3,
RR_GANONS_TOWER_BEFORE_GANONDORF_LAIR,
RR_GANONS_TOWER_GANONDORF_LAIR, RR_GANONS_TOWER_GANONDORF_LAIR,
RR_GANONS_CASTLE_ESCAPE, RR_GANONS_CASTLE_ESCAPE,
RR_GANONS_CASTLE_GANON_ARENA, RR_GANONS_CASTLE_GANON_ARENA,
@ -1741,6 +1749,554 @@ typedef enum {
RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT,
RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT,
RC_GANONS_TOWER_BOSS_KEY_CHEST, RC_GANONS_TOWER_BOSS_KEY_CHEST,
// Overworld Pots
RC_KF_LINKS_HOUSE_POT,
RC_KF_TWINS_HOUSE_POT_1,
RC_KF_TWINS_HOUSE_POT_2,
RC_KF_BROTHERS_HOUSE_POT_1,
RC_KF_BROTHERS_HOUSE_POT_2,
RC_GF_BREAK_ROOM_POT_1,
RC_GF_BREAK_ROOM_POT_2,
RC_GF_KITCHEN_POT_1,
RC_GF_KITCHEN_POT_2,
RC_GF_NORTH_F1_CARPENTER_POT_1,
RC_GF_NORTH_F1_CARPENTER_POT_2,
RC_GF_NORTH_F1_CARPENTER_POT_3,
RC_GF_NORTH_F2_CARPENTER_POT_1,
RC_GF_NORTH_F2_CARPENTER_POT_2,
RC_GF_SOUTH_F1_CARPENTER_POT_1,
RC_GF_SOUTH_F1_CARPENTER_POT_2,
RC_GF_SOUTH_F1_CARPENTER_POT_3,
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1,
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2,
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3,
RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4,
RC_WASTELAND_NEAR_GS_POT_1,
RC_WASTELAND_NEAR_GS_POT_2,
RC_WASTELAND_NEAR_GS_POT_3,
RC_WASTELAND_NEAR_GS_POT_4,
RC_HF_COW_GROTTO_POT_1,
RC_HF_COW_GROTTO_POT_2,
RC_MK_GUARD_HOUSE_CHILD_POT_1,
RC_MK_GUARD_HOUSE_CHILD_POT_2,
RC_MK_GUARD_HOUSE_CHILD_POT_3,
RC_MK_GUARD_HOUSE_CHILD_POT_4,
RC_MK_GUARD_HOUSE_CHILD_POT_5,
RC_MK_GUARD_HOUSE_CHILD_POT_6,
RC_MK_GUARD_HOUSE_CHILD_POT_7,
RC_MK_GUARD_HOUSE_CHILD_POT_8,
RC_MK_GUARD_HOUSE_CHILD_POT_9,
RC_MK_GUARD_HOUSE_CHILD_POT_10,
RC_MK_GUARD_HOUSE_CHILD_POT_11,
RC_MK_GUARD_HOUSE_CHILD_POT_12,
RC_MK_GUARD_HOUSE_CHILD_POT_13,
RC_MK_GUARD_HOUSE_CHILD_POT_14,
RC_MK_GUARD_HOUSE_CHILD_POT_15,
RC_MK_GUARD_HOUSE_CHILD_POT_16,
RC_MK_GUARD_HOUSE_CHILD_POT_17,
RC_MK_GUARD_HOUSE_CHILD_POT_18,
RC_MK_GUARD_HOUSE_CHILD_POT_19,
RC_MK_GUARD_HOUSE_CHILD_POT_20,
RC_MK_GUARD_HOUSE_CHILD_POT_21,
RC_MK_GUARD_HOUSE_CHILD_POT_22,
RC_MK_GUARD_HOUSE_CHILD_POT_23,
RC_MK_GUARD_HOUSE_CHILD_POT_24,
RC_MK_GUARD_HOUSE_CHILD_POT_25,
RC_MK_GUARD_HOUSE_CHILD_POT_26,
RC_MK_GUARD_HOUSE_CHILD_POT_27,
RC_MK_GUARD_HOUSE_CHILD_POT_28,
RC_MK_GUARD_HOUSE_CHILD_POT_29,
RC_MK_GUARD_HOUSE_CHILD_POT_30,
RC_MK_GUARD_HOUSE_CHILD_POT_31,
RC_MK_GUARD_HOUSE_CHILD_POT_32,
RC_MK_GUARD_HOUSE_CHILD_POT_33,
RC_MK_GUARD_HOUSE_CHILD_POT_34,
RC_MK_GUARD_HOUSE_CHILD_POT_35,
RC_MK_GUARD_HOUSE_CHILD_POT_36,
RC_MK_GUARD_HOUSE_CHILD_POT_37,
RC_MK_GUARD_HOUSE_CHILD_POT_38,
RC_MK_GUARD_HOUSE_CHILD_POT_39,
RC_MK_GUARD_HOUSE_CHILD_POT_40,
RC_MK_GUARD_HOUSE_CHILD_POT_41,
RC_MK_GUARD_HOUSE_CHILD_POT_42,
RC_MK_GUARD_HOUSE_CHILD_POT_43,
RC_MK_GUARD_HOUSE_CHILD_POT_44,
RC_MK_GUARD_HOUSE_ADULT_POT_1,
RC_MK_GUARD_HOUSE_ADULT_POT_2,
RC_MK_GUARD_HOUSE_ADULT_POT_3,
RC_MK_GUARD_HOUSE_ADULT_POT_4,
RC_MK_GUARD_HOUSE_ADULT_POT_5,
RC_MK_GUARD_HOUSE_ADULT_POT_6,
RC_MK_GUARD_HOUSE_ADULT_POT_7,
RC_MK_GUARD_HOUSE_ADULT_POT_8,
RC_MK_GUARD_HOUSE_ADULT_POT_9,
RC_MK_GUARD_HOUSE_ADULT_POT_10,
RC_MK_GUARD_HOUSE_ADULT_POT_11,
RC_MK_BACK_ALLEY_HOUSE_POT_1,
RC_MK_BACK_ALLEY_HOUSE_POT_2,
RC_MK_BACK_ALLEY_HOUSE_POT_3,
RC_HC_STORMS_GROTTO_POT_1,
RC_HC_STORMS_GROTTO_POT_2,
RC_HC_STORMS_GROTTO_POT_3,
RC_HC_STORMS_GROTTO_POT_4,
RC_LLR_FRONT_POT_1,
RC_LLR_FRONT_POT_2,
RC_LLR_FRONT_POT_3,
RC_LLR_FRONT_POT_4,
RC_LLR_RAIN_SHED_POT_1,
RC_LLR_RAIN_SHED_POT_2,
RC_LLR_RAIN_SHED_POT_3,
RC_LLR_TALONS_HOUSE_POT_1,
RC_LLR_TALONS_HOUSE_POT_2,
RC_LLR_TALONS_HOUSE_POT_3,
RC_KAK_NEAR_POTION_SHOP_POT_1,
RC_KAK_NEAR_POTION_SHOP_POT_2,
RC_KAK_NEAR_POTION_SHOP_POT_3,
RC_KAK_NEAR_IMPAS_HOUSE_POT_1,
RC_KAK_NEAR_IMPAS_HOUSE_POT_2,
RC_KAK_NEAR_IMPAS_HOUSE_POT_3,
RC_KAK_NEAR_GUARDS_HOUSE_POT_1,
RC_KAK_NEAR_GUARDS_HOUSE_POT_2,
RC_KAK_NEAR_GUARDS_HOUSE_POT_3,
RC_KAK_NEAR_MEDICINE_SHOP_POT_1,
RC_KAK_NEAR_MEDICINE_SHOP_POT_2,
RC_GY_DAMPES_GRAVE_POT_1,
RC_GY_DAMPES_GRAVE_POT_2,
RC_GY_DAMPES_GRAVE_POT_3,
RC_GY_DAMPES_GRAVE_POT_4,
RC_GY_DAMPES_GRAVE_POT_5,
RC_GY_DAMPES_GRAVE_POT_6,
RC_GC_LOWER_STAIRCASE_POT_1,
RC_GC_LOWER_STAIRCASE_POT_2,
RC_GC_UPPER_STAIRCASE_POT_1,
RC_GC_UPPER_STAIRCASE_POT_2,
RC_GC_UPPER_STAIRCASE_POT_3,
RC_GC_MEDIGORON_POT_1,
RC_GC_DARUNIA_POT_1,
RC_GC_DARUNIA_POT_2,
RC_GC_DARUNIA_POT_3,
RC_DMC_NEAR_GC_POT_1,
RC_DMC_NEAR_GC_POT_2,
RC_DMC_NEAR_GC_POT_3,
RC_DMC_NEAR_GC_POT_4,
RC_ZD_NEAR_SHOP_POT_1,
RC_ZD_NEAR_SHOP_POT_2,
RC_ZD_NEAR_SHOP_POT_3,
RC_ZD_NEAR_SHOP_POT_4,
RC_ZD_NEAR_SHOP_POT_5,
RC_ZF_HIDDEN_CAVE_POT_1,
RC_ZF_HIDDEN_CAVE_POT_2,
RC_ZF_HIDDEN_CAVE_POT_3,
RC_ZF_NEAR_JABU_POT_1,
RC_ZF_NEAR_JABU_POT_2,
RC_ZF_NEAR_JABU_POT_3,
RC_ZF_NEAR_JABU_POT_4,
// Dungeon Pots
RC_DODONGOS_CAVERN_LIZALFOS_POT_1,
RC_DODONGOS_CAVERN_LIZALFOS_POT_2,
RC_DODONGOS_CAVERN_LIZALFOS_POT_3,
RC_DODONGOS_CAVERN_LIZALFOS_POT_4,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5,
RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3,
RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4,
RC_DODONGOS_CAVERN_STAIRCASE_POT_1,
RC_DODONGOS_CAVERN_STAIRCASE_POT_2,
RC_DODONGOS_CAVERN_STAIRCASE_POT_3,
RC_DODONGOS_CAVERN_STAIRCASE_POT_4,
RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1,
RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2,
RC_DODONGOS_CAVERN_BLADE_POT_1,
RC_DODONGOS_CAVERN_BLADE_POT_2,
RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1,
RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_1,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_2,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_3,
RC_DODONGOS_CAVERN_BACK_ROOM_POT_4,
RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1,
RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2,
RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3,
RC_JABU_JABUS_BELLY_BARINADE_POT_1,
RC_JABU_JABUS_BELLY_BARINADE_POT_2,
RC_JABU_JABUS_BELLY_BARINADE_POT_3,
RC_JABU_JABUS_BELLY_BARINADE_POT_4,
RC_JABU_JABUS_BELLY_BARINADE_POT_5,
RC_JABU_JABUS_BELLY_BARINADE_POT_6,
RC_JABU_JABUS_BELLY_BASEMENT_POT_1,
RC_JABU_JABUS_BELLY_BASEMENT_POT_2,
RC_JABU_JABUS_BELLY_BASEMENT_POT_3,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4,
RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11,
RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12,
RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1,
RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2,
RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3,
RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1,
RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2,
RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1,
RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT,
RC_FOREST_TEMPLE_LOBBY_POT_1,
RC_FOREST_TEMPLE_LOBBY_POT_2,
RC_FOREST_TEMPLE_LOBBY_POT_3,
RC_FOREST_TEMPLE_LOBBY_POT_4,
RC_FOREST_TEMPLE_LOBBY_POT_5,
RC_FOREST_TEMPLE_LOBBY_POT_6,
RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1,
RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2,
RC_FOREST_TEMPLE_GREEN_POE_POT_1,
RC_FOREST_TEMPLE_GREEN_POE_POT_2,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3,
RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4,
RC_FOREST_TEMPLE_BLUE_POE_POT_1,
RC_FOREST_TEMPLE_BLUE_POE_POT_2,
RC_FOREST_TEMPLE_BLUE_POE_POT_3,
RC_FOREST_TEMPLE_FROZEN_EYE_POT_1,
RC_FOREST_TEMPLE_FROZEN_EYE_POT_2,
RC_FIRE_TEMPLE_NEAR_BOSS_POT_1,
RC_FIRE_TEMPLE_NEAR_BOSS_POT_2,
RC_FIRE_TEMPLE_NEAR_BOSS_POT_3,
RC_FIRE_TEMPLE_NEAR_BOSS_POT_4,
RC_FIRE_TEMPLE_BIG_LAVA_POT_1,
RC_FIRE_TEMPLE_BIG_LAVA_POT_2,
RC_FIRE_TEMPLE_BIG_LAVA_POT_3,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3,
RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3,
RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4,
RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1,
RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2,
RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1,
RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2,
RC_WATER_TEMPLE_TORCH_POT_1,
RC_WATER_TEMPLE_TORCH_POT_2,
RC_WATER_TEMPLE_NEAR_COMPASS_POT_1,
RC_WATER_TEMPLE_NEAR_COMPASS_POT_2,
RC_WATER_TEMPLE_NEAR_COMPASS_POT_3,
RC_WATER_TEMPLE_CENTRAL_BOW_POT_1,
RC_WATER_TEMPLE_CENTRAL_BOW_POT_2,
RC_WATER_TEMPLE_BEHIND_GATE_POT_1,
RC_WATER_TEMPLE_BEHIND_GATE_POT_2,
RC_WATER_TEMPLE_BEHIND_GATE_POT_3,
RC_WATER_TEMPLE_BEHIND_GATE_POT_4,
RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1,
RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2,
RC_WATER_TEMPLE_RIVER_POT_1,
RC_WATER_TEMPLE_RIVER_POT_2,
RC_WATER_TEMPLE_LIKE_LIKE_POT_1,
RC_WATER_TEMPLE_LIKE_LIKE_POT_2,
RC_WATER_TEMPLE_BOSS_KEY_POT_1,
RC_WATER_TEMPLE_BOSS_KEY_POT_2,
RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4,
RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5,
RC_SHADOW_TEMPLE_MAP_CHEST_POT_1,
RC_SHADOW_TEMPLE_MAP_CHEST_POT_2,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3,
RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4,
RC_SHADOW_TEMPLE_AFTER_WIND_POT_1,
RC_SHADOW_TEMPLE_AFTER_WIND_POT_2,
RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1,
RC_SHADOW_TEMPLE_FLOORMASTER_POT_1,
RC_SHADOW_TEMPLE_FLOORMASTER_POT_2,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3,
RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4,
RC_SPIRIT_TEMPLE_LOBBY_POT_1,
RC_SPIRIT_TEMPLE_LOBBY_POT_2,
RC_SPIRIT_TEMPLE_ANUBIS_POT_1,
RC_SPIRIT_TEMPLE_ANUBIS_POT_2,
RC_SPIRIT_TEMPLE_ANUBIS_POT_3,
RC_SPIRIT_TEMPLE_ANUBIS_POT_4,
RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1,
RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1,
RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5,
RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6,
RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1,
RC_ICE_CAVERN_HALL_POT_1,
RC_ICE_CAVERN_HALL_POT_2,
RC_ICE_CAVERN_SPINNING_BLADE_POT_1,
RC_ICE_CAVERN_SPINNING_BLADE_POT_2,
RC_ICE_CAVERN_SPINNING_BLADE_POT_3,
RC_ICE_CAVERN_NEAR_END_POT_1,
RC_ICE_CAVERN_NEAR_END_POT_2,
RC_ICE_CAVERN_FROZEN_POT_1,
RC_GANONS_CASTLE_FOREST_TRIAL_POT_1,
RC_GANONS_CASTLE_FOREST_TRIAL_POT_2,
RC_GANONS_CASTLE_FIRE_TRIAL_POT_1,
RC_GANONS_CASTLE_FIRE_TRIAL_POT_2,
RC_GANONS_CASTLE_WATER_TRIAL_POT_1,
RC_GANONS_CASTLE_WATER_TRIAL_POT_2,
RC_GANONS_CASTLE_WATER_TRIAL_POT_3,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3,
RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4,
RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1,
RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2,
RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1,
RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1,
RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2,
RC_GANONS_CASTLE_GANONS_TOWER_POT_1,
RC_GANONS_CASTLE_GANONS_TOWER_POT_2,
RC_GANONS_CASTLE_GANONS_TOWER_POT_3,
RC_GANONS_CASTLE_GANONS_TOWER_POT_4,
RC_GANONS_CASTLE_GANONS_TOWER_POT_5,
RC_GANONS_CASTLE_GANONS_TOWER_POT_6,
RC_GANONS_CASTLE_GANONS_TOWER_POT_7,
RC_GANONS_CASTLE_GANONS_TOWER_POT_8,
RC_GANONS_CASTLE_GANONS_TOWER_POT_9,
RC_GANONS_CASTLE_GANONS_TOWER_POT_10,
RC_GANONS_CASTLE_GANONS_TOWER_POT_11,
RC_GANONS_CASTLE_GANONS_TOWER_POT_12,
RC_GANONS_CASTLE_GANONS_TOWER_POT_13,
RC_GANONS_CASTLE_GANONS_TOWER_POT_14,
RC_GANONS_CASTLE_GANONS_TOWER_POT_15,
RC_GANONS_CASTLE_GANONS_TOWER_POT_16,
RC_GANONS_CASTLE_GANONS_TOWER_POT_17,
RC_GANONS_CASTLE_GANONS_TOWER_POT_18,
// MQ Dungeon Pots
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1,
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2,
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3,
RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4,
RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT,
RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1,
RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3,
RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4,
RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1,
RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2,
RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT,
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1,
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2,
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3,
RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3,
RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4,
RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT,
RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT,
RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1,
RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT,
RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT,
RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1,
RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2,
RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1,
RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2,
RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1,
RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2,
RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1,
RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2,
RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1,
RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1,
RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2,
RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3,
RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT,
RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1,
RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2,
RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_1,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_2,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_3,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_4,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_5,
RC_FOREST_TEMPLE_MQ_LOBBY_POT_6,
RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1,
RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3,
RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4,
RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1,
RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2,
RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3,
RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1,
RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3,
RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4,
RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1,
RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7,
RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8,
RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1,
RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2,
RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT,
RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT,
RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT,
RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1,
RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2,
RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1,
RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2,
RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3,
RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1,
RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2,
RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT,
RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT,
RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT,
RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT,
RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT,
RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT,
RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1,
RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3,
RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1,
RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2,
RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3,
RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT,
RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT,
RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT,
RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT,
RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT,
RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1,
RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2,
RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1,
RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2,
RC_WATER_TEMPLE_MQ_RIVER_POT_1,
RC_WATER_TEMPLE_MQ_RIVER_POT_2,
RC_WATER_TEMPLE_MQ_BOSS_KEY_POT,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3,
RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4,
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1,
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2,
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1,
RC_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1,
RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2,
RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1,
RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2,
RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1,
RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2,
RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1,
RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2,
RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT,
RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT,
RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT,
RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT,
RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1,
RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2,
RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT,
RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT,
RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT,
RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT,
RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT,
RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1,
RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2,
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1,
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2,
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3,
RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4,
RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT,
RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1,
RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3,
RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4,
RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT,
RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT,
RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1,
RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2,
RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1,
RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3,
RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4,
RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1,
RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2,
RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1,
RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2,
RC_ICE_CAVERN_MQ_ENTRANCE_POT,
RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1,
RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3,
RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4,
RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1,
RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2,
RC_ICE_CAVERN_MQ_COMPASS_POT_1,
RC_ICE_CAVERN_MQ_COMPASS_POT_2,
RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2,
RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1,
RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2,
// End Pots
RC_PIERRE, RC_PIERRE,
RC_DELIVER_RUTOS_LETTER, RC_DELIVER_RUTOS_LETTER,
RC_MASTER_SWORD_PEDESTAL, RC_MASTER_SWORD_PEDESTAL,
@ -3835,6 +4391,31 @@ typedef enum {
RHT_OOT_HINT, RHT_OOT_HINT,
RHT_SKULLS_HINT, RHT_SKULLS_HINT,
RHT_MASK_SHOP_HINT, RHT_MASK_SHOP_HINT,
// Shuffle Pots
RHT_POT_KOKIRI_FOREST,
RHT_POT_GERUDO_FORTRESS,
RHT_POT_WASTELAND,
RHT_POT_MARKET,
RHT_POT_KAKARIKO,
RHT_POT_GRAVEYARD,
RHT_POT_GORON_CITY,
RHT_POT_DEATH_MOUNTAIN_CRATER,
RHT_POT_ZORAS_DOMAIN,
RHT_POT_ZORAS_FOUNTAIN,
RHT_POT_LON_LON_RANCH,
RHT_POT_HYRULE_FIELD,
RHT_POT_HYRULE_CASTLE,
RHT_POT_DODONGOS_CAVERN,
RHT_POT_JABU_JABUS_BELLY,
RHT_POT_FOREST_TEMPLE,
RHT_POT_FIRE_TEMPLE,
RHT_POT_WATER_TEMPLE,
RHT_POT_GERUDO_TRAINING_GROUNDS,
RHT_POT_SHADOW_TEMPLE,
RHT_POT_SPIRIT_TEMPLE,
RHT_POT_GANONS_CASTLE,
RHT_POT_BOTTOM_OF_THE_WELL,
RHT_POT_ICE_CAVERN,
// Ganon Line // Ganon Line
RHT_GANON_JOKE01, RHT_GANON_JOKE01,
RHT_GANON_JOKE02, RHT_GANON_JOKE02,
@ -3852,6 +4433,7 @@ typedef enum {
RHT_ISOLATED_PLACE, RHT_ISOLATED_PLACE,
RHT_DUNGEON_ORDINARY, RHT_DUNGEON_ORDINARY,
RHT_DUNGEON_MASTERFUL, RHT_DUNGEON_MASTERFUL,
// MAX
RHT_MAX RHT_MAX
} RandomizerHintTextKey; } RandomizerHintTextKey;
@ -4008,6 +4590,7 @@ typedef enum {
RSK_SHUFFLE_COWS, RSK_SHUFFLE_COWS,
RSK_SHUFFLE_WEIRD_EGG, RSK_SHUFFLE_WEIRD_EGG,
RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD, RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD,
RSK_SHUFFLE_POTS,
RSK_SHUFFLE_FROG_SONG_RUPEES, RSK_SHUFFLE_FROG_SONG_RUPEES,
RSK_ITEM_POOL, RSK_ITEM_POOL,
RSK_ICE_TRAPS, RSK_ICE_TRAPS,
@ -4469,6 +5052,14 @@ typedef enum {
RO_TOKENSANITY_ALL, RO_TOKENSANITY_ALL,
} RandoOptionTokensanity; } RandoOptionTokensanity;
// Shuffle Pots settings (off, dungeons, overworld, all)
typedef enum {
RO_SHUFFLE_POTS_OFF,
RO_SHUFFLE_POTS_DUNGEONS,
RO_SHUFFLE_POTS_OVERWORLD,
RO_SHUFFLE_POTS_ALL,
} RandoOptionShufflePots;
//Link's Pocket Settings (dungeon reward, advancement, anything, nothing) //Link's Pocket Settings (dungeon reward, advancement, anything, nothing)
typedef enum { typedef enum {
RO_LINKS_POCKET_DUNGEON_REWARD, RO_LINKS_POCKET_DUNGEON_REWARD,
@ -4555,6 +5146,11 @@ typedef struct CowIdentity {
RandomizerCheck randomizerCheck; RandomizerCheck randomizerCheck;
} CowIdentity; } CowIdentity;
typedef struct PotIdentity {
RandomizerInf randomizerInf;
RandomizerCheck randomizerCheck;
} PotIdentity;
typedef struct FishIdentity { typedef struct FishIdentity {
RandomizerInf randomizerInf; RandomizerInf randomizerInf;
RandomizerCheck randomizerCheck; RandomizerCheck randomizerCheck;
@ -4637,6 +5233,7 @@ typedef enum {
RE_TENTACLE, RE_TENTACLE,
RE_BARI, RE_BARI,
RE_SHABOM, RE_SHABOM,
RE_OCTOROK,
} RandomizerEnemy; } RandomizerEnemy;
//RANDOTODO compare child long jumpslash range with adult short //RANDOTODO compare child long jumpslash range with adult short

View File

@ -165,6 +165,7 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
RandomizerCheckObjects::AreaIsDungeon(location.GetArea()))) && RandomizerCheckObjects::AreaIsDungeon(location.GetArea()))) &&
(location.GetRCType() != RCTYPE_BEEHIVE || CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleBeehives"), RO_GENERIC_NO)) && (location.GetRCType() != RCTYPE_BEEHIVE || CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleBeehives"), RO_GENERIC_NO)) &&
(location.GetRCType() != RCTYPE_COW || CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleCows"), RO_GENERIC_NO)) && (location.GetRCType() != RCTYPE_COW || CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleCows"), RO_GENERIC_NO)) &&
(location.GetRCType() != RCTYPE_POT || CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShufflePots"), RO_GENERIC_NO)) &&
(location.GetRCType() != RCTYPE_FISH || ctx->GetFishsanity()->GetFishLocationIncluded(&location, FSO_SOURCE_CVARS)) && (location.GetRCType() != RCTYPE_FISH || ctx->GetFishsanity()->GetFishLocationIncluded(&location, FSO_SOURCE_CVARS)) &&
(location.GetRCType() != RCTYPE_ADULT_TRADE || (location.GetRCType() != RCTYPE_ADULT_TRADE ||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleAdultTrade"), RO_GENERIC_NO)) && CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleAdultTrade"), RO_GENERIC_NO)) &&

View File

@ -6,10 +6,6 @@
#include <vector> #include <vector>
#include <map> #include <map>
// ABS macro to use since `std::abs` is not constexpr yet
#define ABS(x) ((x) < 0 ? -(x) : (x))
#define TWO_ACTOR_PARAMS(a, b) (ABS(a) << 16) | ABS(b)
namespace RandomizerCheckObjects { namespace RandomizerCheckObjects {
bool AreaIsDungeon(RandomizerCheckArea area); bool AreaIsDungeon(RandomizerCheckArea area);
bool AreaIsOverworld(RandomizerCheckArea area); bool AreaIsOverworld(RandomizerCheckArea area);

View File

@ -54,6 +54,8 @@ bool showMasterSword;
bool showHyruleLoach; bool showHyruleLoach;
bool showWeirdEgg; bool showWeirdEgg;
bool showGerudoCard; bool showGerudoCard;
bool showOverworldPots;
bool showDungeonPots;
bool showFrogSongRupees; bool showFrogSongRupees;
bool showStartingMapsCompasses; bool showStartingMapsCompasses;
bool showKeysanity; bool showKeysanity;
@ -1177,9 +1179,30 @@ void LoadSettings() {
showDungeonTokens = false; showDungeonTokens = false;
break; break;
} }
switch (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_POTS)) {
case RO_SHUFFLE_POTS_ALL:
showOverworldPots = true;
showDungeonPots = true;
break;
case RO_SHUFFLE_POTS_OVERWORLD:
showOverworldPots = true;
showDungeonPots = false;
break;
case RO_SHUFFLE_POTS_DUNGEONS:
showOverworldPots = false;
showDungeonPots = true;
break;
default:
showOverworldPots = false;
showDungeonPots = false;
break;
}
} else { // Vanilla } else { // Vanilla
showOverworldTokens = true; showOverworldTokens = true;
showDungeonTokens = true; showDungeonTokens = true;
showOverworldPots = false;
showDungeonPots = false;
} }
fortressFast = false; fortressFast = false;
@ -1236,6 +1259,9 @@ bool IsCheckShuffled(RandomizerCheck rc) {
(showOverworldTokens && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) || (showOverworldTokens && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
(showDungeonTokens && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea())) (showDungeonTokens && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))
) && ) &&
(loc->GetRCType() != RCTYPE_POT ||
(showOverworldPots && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
(showDungeonPots && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
(loc->GetRCType() != RCTYPE_COW || showCows) && (loc->GetRCType() != RCTYPE_COW || showCows) &&
(loc->GetRCType() != RCTYPE_FISH || OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) && (loc->GetRCType() != RCTYPE_FISH || OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) &&
(loc->GetRCType() != RCTYPE_ADULT_TRADE || (loc->GetRCType() != RCTYPE_ADULT_TRADE ||

View File

@ -202,6 +202,550 @@ typedef enum {
RAND_INF_HAS_OCARINA_C_LEFT, RAND_INF_HAS_OCARINA_C_LEFT,
RAND_INF_HAS_OCARINA_C_RIGHT, RAND_INF_HAS_OCARINA_C_RIGHT,
RAND_INF_KF_LINKS_HOUSE_POT,
RAND_INF_KF_TWINS_HOUSE_POT_1,
RAND_INF_KF_TWINS_HOUSE_POT_2,
RAND_INF_KF_BROTHERS_HOUSE_POT_1,
RAND_INF_KF_BROTHERS_HOUSE_POT_2,
RAND_INF_GF_BREAK_ROOM_POT_1,
RAND_INF_GF_BREAK_ROOM_POT_2,
RAND_INF_GF_KITCHEN_POT_1,
RAND_INF_GF_KITCHEN_POT_2,
RAND_INF_GF_NORTH_F1_CARPENTER_POT_1,
RAND_INF_GF_NORTH_F1_CARPENTER_POT_2,
RAND_INF_GF_NORTH_F1_CARPENTER_POT_3,
RAND_INF_GF_NORTH_F2_CARPENTER_POT_1,
RAND_INF_GF_NORTH_F2_CARPENTER_POT_2,
RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1,
RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2,
RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3,
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1,
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2,
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3,
RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4,
RAND_INF_WASTELAND_NEAR_GS_POT_1,
RAND_INF_WASTELAND_NEAR_GS_POT_2,
RAND_INF_WASTELAND_NEAR_GS_POT_3,
RAND_INF_WASTELAND_NEAR_GS_POT_4,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_4,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_5,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_6,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_7,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_8,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_9,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_10,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_11,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_12,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_13,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_14,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_15,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_16,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_17,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_18,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_19,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_20,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_21,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_22,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_23,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_24,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_25,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_26,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_27,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_28,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_29,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_30,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_31,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_32,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_33,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_34,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_35,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_36,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_37,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_38,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_39,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_40,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_41,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_42,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_43,
RAND_INF_MK_GUARD_HOUSE_CHILD_POT_44,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_1,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_2,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_3,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_4,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_5,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_6,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_7,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_8,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_9,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_10,
RAND_INF_MK_GUARD_HOUSE_ADULT_POT_11,
RAND_INF_MK_BACK_ALLEY_HOUSE_POT_1,
RAND_INF_MK_BACK_ALLEY_HOUSE_POT_2,
RAND_INF_MK_BACK_ALLEY_HOUSE_POT_3,
RAND_INF_KAK_NEAR_POTION_SHOP_POT_1,
RAND_INF_KAK_NEAR_POTION_SHOP_POT_2,
RAND_INF_KAK_NEAR_POTION_SHOP_POT_3,
RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_1,
RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_2,
RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_3,
RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_1,
RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_2,
RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_3,
RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_1,
RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_2,
RAND_INF_GY_DAMPES_GRAVE_POT_1,
RAND_INF_GY_DAMPES_GRAVE_POT_2,
RAND_INF_GY_DAMPES_GRAVE_POT_3,
RAND_INF_GY_DAMPES_GRAVE_POT_4,
RAND_INF_GY_DAMPES_GRAVE_POT_5,
RAND_INF_GY_DAMPES_GRAVE_POT_6,
RAND_INF_GC_LOWER_STAIRCASE_POT_1,
RAND_INF_GC_LOWER_STAIRCASE_POT_2,
RAND_INF_GC_UPPER_STAIRCASE_POT_1,
RAND_INF_GC_UPPER_STAIRCASE_POT_2,
RAND_INF_GC_UPPER_STAIRCASE_POT_3,
RAND_INF_GC_MEDIGORON_POT_1,
RAND_INF_GC_DARUNIA_POT_1,
RAND_INF_GC_DARUNIA_POT_2,
RAND_INF_GC_DARUNIA_POT_3,
RAND_INF_DMC_NEAR_GC_POT_1,
RAND_INF_DMC_NEAR_GC_POT_2,
RAND_INF_DMC_NEAR_GC_POT_3,
RAND_INF_DMC_NEAR_GC_POT_4,
RAND_INF_ZD_NEAR_SHOP_POT_1,
RAND_INF_ZD_NEAR_SHOP_POT_2,
RAND_INF_ZD_NEAR_SHOP_POT_3,
RAND_INF_ZD_NEAR_SHOP_POT_4,
RAND_INF_ZD_NEAR_SHOP_POT_5,
RAND_INF_ZF_HIDDEN_CAVE_POT_1,
RAND_INF_ZF_HIDDEN_CAVE_POT_2,
RAND_INF_ZF_HIDDEN_CAVE_POT_3,
RAND_INF_ZF_NEAR_JABU_POT_1,
RAND_INF_ZF_NEAR_JABU_POT_2,
RAND_INF_ZF_NEAR_JABU_POT_3,
RAND_INF_ZF_NEAR_JABU_POT_4,
RAND_INF_LLR_FRONT_POT_1,
RAND_INF_LLR_FRONT_POT_2,
RAND_INF_LLR_FRONT_POT_3,
RAND_INF_LLR_FRONT_POT_4,
RAND_INF_LLR_RAIN_SHED_POT_1,
RAND_INF_LLR_RAIN_SHED_POT_2,
RAND_INF_LLR_RAIN_SHED_POT_3,
RAND_INF_LLR_TALONS_HOUSE_POT_1,
RAND_INF_LLR_TALONS_HOUSE_POT_2,
RAND_INF_LLR_TALONS_HOUSE_POT_3,
RAND_INF_HF_COW_GROTTO_POT_1,
RAND_INF_HF_COW_GROTTO_POT_2,
RAND_INF_HC_STORMS_GROTTO_POT_1,
RAND_INF_HC_STORMS_GROTTO_POT_2,
RAND_INF_HC_STORMS_GROTTO_POT_3,
RAND_INF_HC_STORMS_GROTTO_POT_4,
RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_1,
RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_2,
RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_3,
RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_4,
RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_1,
RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_2,
RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_3,
RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_4,
RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_5,
RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_6,
RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_1,
RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_2,
RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_3,
RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_4,
RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_1,
RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_2,
RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_3,
RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_4,
RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_1,
RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_2,
RAND_INF_DODONGOS_CAVERN_BLADE_POT_1,
RAND_INF_DODONGOS_CAVERN_BLADE_POT_2,
RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_1,
RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_2,
RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_1,
RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_2,
RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_3,
RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_4,
RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1,
RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2,
RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3,
RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_1,
RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_2,
RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_3,
RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_4,
RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_5,
RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_6,
RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_1,
RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_2,
RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_3,
RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1,
RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2,
RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3,
RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4,
RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5,
RAND_INF_FOREST_TEMPLE_LOBBY_POT_1,
RAND_INF_FOREST_TEMPLE_LOBBY_POT_2,
RAND_INF_FOREST_TEMPLE_LOBBY_POT_3,
RAND_INF_FOREST_TEMPLE_LOBBY_POT_4,
RAND_INF_FOREST_TEMPLE_LOBBY_POT_5,
RAND_INF_FOREST_TEMPLE_LOBBY_POT_6,
RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_1,
RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_2,
RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_1,
RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_2,
RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_1,
RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_2,
RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_3,
RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_4,
RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_1,
RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_2,
RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_3,
RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_1,
RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_2,
RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_1,
RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_2,
RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_3,
RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_4,
RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_1,
RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_2,
RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_3,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3,
RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4,
RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_1,
RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_2,
RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_1,
RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_2,
RAND_INF_WATER_TEMPLE_TORCH_POT_1,
RAND_INF_WATER_TEMPLE_TORCH_POT_2,
RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_1,
RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_2,
RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_3,
RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_1,
RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_2,
RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_1,
RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_2,
RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_3,
RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_4,
RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1,
RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2,
RAND_INF_WATER_TEMPLE_RIVER_POT_1,
RAND_INF_WATER_TEMPLE_RIVER_POT_2,
RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_1,
RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_2,
RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_1,
RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_2,
RAND_INF_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1,
RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1,
RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2,
RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3,
RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4,
RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5,
RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_1,
RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_2,
RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_1,
RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_2,
RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_3,
RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_4,
RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_1,
RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_2,
RAND_INF_SHADOW_TEMPLE_SPIKE_WALLS_POT_1,
RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_1,
RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_2,
RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_1,
RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_2,
RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_3,
RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_4,
RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_1,
RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_2,
RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_1,
RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_2,
RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_3,
RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_4,
RAND_INF_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1,
RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1,
RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2,
RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1,
RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2,
RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3,
RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4,
RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5,
RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6,
RAND_INF_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1,
RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_3,
RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_3,
RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_4,
RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1,
RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_1,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_2,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_3,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_4,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_5,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_6,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_7,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_8,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_9,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_10,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_11,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_12,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_13,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_14,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_15,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17,
RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11,
RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12,
RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1,
RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2,
RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3,
RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1,
RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2,
RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1,
RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT,
RAND_INF_ICE_CAVERN_HALL_POT_1,
RAND_INF_ICE_CAVERN_HALL_POT_2,
RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1,
RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_2,
RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_3,
RAND_INF_ICE_CAVERN_NEAR_END_POT_1,
RAND_INF_ICE_CAVERN_NEAR_END_POT_2,
RAND_INF_ICE_CAVERN_FROZEN_POT_1,
RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1,
RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2,
RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_1,
RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_2,
RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1,
RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2,
RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1,
RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2,
RAND_INF_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1,
RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_1,
RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_2,
RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_3,
RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_4,
RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_5,
RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_6,
RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_1,
RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_2,
RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1,
RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2,
RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3,
RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4,
RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_1,
RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_2,
RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_3,
RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_1,
RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_2,
RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_1,
RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_2,
RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_3,
RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_4,
RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3,
RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4,
RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3,
RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4,
RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3,
RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4,
RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3,
RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4,
RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_3,
RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_4,
RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_2,
RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_1,
RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_2,
RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2,
RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1,
RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2,
RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1,
RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2,
RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1,
RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2,
RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_1,
RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_2,
RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_3,
RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_4,
RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1,
RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2,
RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_1,
RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_2,
RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_3,
RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_4,
RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT,
RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1,
RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2,
RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1,
RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2,
RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3,
RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT,
RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1,
RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2,
RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3,
RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_3,
RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3,
RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_3,
RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_4,
RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_5,
RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_6,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7,
RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8,
RAND_INF_ICE_CAVERN_MQ_ENTRANCE_POT,
RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1,
RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2,
RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1,
RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2,
RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3,
RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4,
RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1,
RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2,
RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_1,
RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3,
RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3,
RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4,
RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_3,
RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_4,
RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_5,
RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3,
RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4,
RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2,
RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1,
RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2,
RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_1,
RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_2,
RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_3,
RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_4,
RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_5,
RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1,
RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2,
RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3,
RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1,
RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2,
RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_3,
RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_4,
RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_5,
RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1,
RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2,
RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_1,
RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_2,
RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1,
RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2,
RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1,
RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2,
RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1,
RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2,
RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3,
RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1,
RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2,
RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_1,
RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_2,
RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_3,
RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_4,
RAND_INF_WATER_TEMPLE_MQ_BOSS_KEY_POT,
RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_1,
RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_POT_2,
RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_1,
RAND_INF_GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_POT_2,
RAND_INF_CAUGHT_LOACH, RAND_INF_CAUGHT_LOACH,
RAND_INF_CAN_SWIM, RAND_INF_CAN_SWIM,

View File

@ -201,6 +201,7 @@ void Settings::CreateOptions() {
mOptions[RSK_SHUFFLE_SWIM] = Option::Bool("Shuffle Swim", CVAR_RANDOMIZER_SETTING("ShuffleSwim"), mOptionDescriptions[RSK_SHUFFLE_SWIM]); mOptions[RSK_SHUFFLE_SWIM] = Option::Bool("Shuffle Swim", CVAR_RANDOMIZER_SETTING("ShuffleSwim"), mOptionDescriptions[RSK_SHUFFLE_SWIM]);
mOptions[RSK_SHUFFLE_WEIRD_EGG] = Option::Bool("Shuffle Weird Egg", CVAR_RANDOMIZER_SETTING("ShuffleWeirdEgg"), mOptionDescriptions[RSK_SHUFFLE_WEIRD_EGG]); mOptions[RSK_SHUFFLE_WEIRD_EGG] = Option::Bool("Shuffle Weird Egg", CVAR_RANDOMIZER_SETTING("ShuffleWeirdEgg"), mOptionDescriptions[RSK_SHUFFLE_WEIRD_EGG]);
mOptions[RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD] = Option::Bool("Shuffle Gerudo Membership Card", CVAR_RANDOMIZER_SETTING("ShuffleGerudoToken"), mOptionDescriptions[RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD]); mOptions[RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD] = Option::Bool("Shuffle Gerudo Membership Card", CVAR_RANDOMIZER_SETTING("ShuffleGerudoToken"), mOptionDescriptions[RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD]);
mOptions[RSK_SHUFFLE_POTS] = Option::U8("Shuffle Pots", {"Off", "Dungeons", "Overworld", "All Pots"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShufflePots"), mOptionDescriptions[RSK_SHUFFLE_POTS], WidgetType::Combobox, RO_SHUFFLE_POTS_OFF);
mOptions[RSK_SHUFFLE_FISHING_POLE] = Option::Bool("Shuffle Fishing Pole", CVAR_RANDOMIZER_SETTING("ShuffleFishingPole"), mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE]); mOptions[RSK_SHUFFLE_FISHING_POLE] = Option::Bool("Shuffle Fishing Pole", CVAR_RANDOMIZER_SETTING("ShuffleFishingPole"), mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE]);
mOptions[RSK_SHUFFLE_MERCHANTS] = Option::U8("Shuffle Merchants", {"Off", "Bean Merchant Only", "All But Beans", "All"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleMerchants"), mOptionDescriptions[RSK_SHUFFLE_MERCHANTS], WidgetType::Combobox, RO_SHUFFLE_MERCHANTS_OFF, IMFLAG_NONE); mOptions[RSK_SHUFFLE_MERCHANTS] = Option::U8("Shuffle Merchants", {"Off", "Bean Merchant Only", "All But Beans", "All"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleMerchants"), mOptionDescriptions[RSK_SHUFFLE_MERCHANTS], WidgetType::Combobox, RO_SHUFFLE_MERCHANTS_OFF, IMFLAG_NONE);
mOptions[RSK_MERCHANT_PRICES] = Option::U8("Merchant Prices", {"Vanilla", "Cheap Balanced", "Balanced", "Fixed", "Range", "Set By Wallet"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("MerchantPrices"), mOptionDescriptions[RSK_MERCHANT_PRICES], WidgetType::Combobox, RO_PRICE_VANILLA, false, IMFLAG_NONE); mOptions[RSK_MERCHANT_PRICES] = Option::U8("Merchant Prices", {"Vanilla", "Cheap Balanced", "Balanced", "Fixed", "Range", "Set By Wallet"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("MerchantPrices"), mOptionDescriptions[RSK_MERCHANT_PRICES], WidgetType::Combobox, RO_PRICE_VANILLA, false, IMFLAG_NONE);
@ -806,6 +807,7 @@ void Settings::CreateOptions() {
&mOptions[RSK_SCRUBS_PRICES_AFFORDABLE], &mOptions[RSK_SCRUBS_PRICES_AFFORDABLE],
&mOptions[RSK_SHUFFLE_BEEHIVES], &mOptions[RSK_SHUFFLE_BEEHIVES],
&mOptions[RSK_SHUFFLE_COWS], &mOptions[RSK_SHUFFLE_COWS],
&mOptions[RSK_SHUFFLE_POTS],
&mOptions[RSK_SHUFFLE_MERCHANTS], &mOptions[RSK_SHUFFLE_MERCHANTS],
&mOptions[RSK_MERCHANT_PRICES], &mOptions[RSK_MERCHANT_PRICES],
&mOptions[RSK_MERCHANT_PRICES_FIXED_PRICE], &mOptions[RSK_MERCHANT_PRICES_FIXED_PRICE],
@ -1043,6 +1045,7 @@ void Settings::CreateOptions() {
&mOptions[RSK_SCRUBS_PRICES_AFFORDABLE], &mOptions[RSK_SCRUBS_PRICES_AFFORDABLE],
&mOptions[RSK_SHUFFLE_BEEHIVES], &mOptions[RSK_SHUFFLE_BEEHIVES],
&mOptions[RSK_SHUFFLE_COWS], &mOptions[RSK_SHUFFLE_COWS],
&mOptions[RSK_SHUFFLE_POTS],
&mOptions[RSK_SHUFFLE_KOKIRI_SWORD], &mOptions[RSK_SHUFFLE_KOKIRI_SWORD],
&mOptions[RSK_SHUFFLE_OCARINA], &mOptions[RSK_SHUFFLE_OCARINA],
&mOptions[RSK_SHUFFLE_OCARINA_BUTTONS], &mOptions[RSK_SHUFFLE_OCARINA_BUTTONS],
@ -1261,6 +1264,7 @@ void Settings::CreateOptions() {
&mOptions[RSK_SHUFFLE_SCRUBS], &mOptions[RSK_SHUFFLE_SCRUBS],
&mOptions[RSK_SHUFFLE_BEEHIVES], &mOptions[RSK_SHUFFLE_BEEHIVES],
&mOptions[RSK_SHUFFLE_COWS], &mOptions[RSK_SHUFFLE_COWS],
&mOptions[RSK_SHUFFLE_POTS],
&mOptions[RSK_SHUFFLE_MERCHANTS], &mOptions[RSK_SHUFFLE_MERCHANTS],
&mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES], &mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES],
&mOptions[RSK_SHUFFLE_ADULT_TRADE], &mOptions[RSK_SHUFFLE_ADULT_TRADE],

View File

@ -46,6 +46,7 @@ class StaticData {
static std::vector<RandomizerCheck> GetStaticHintLocations(); static std::vector<RandomizerCheck> GetStaticHintLocations();
static std::vector<RandomizerCheck> GetPondFishLocations(); static std::vector<RandomizerCheck> GetPondFishLocations();
static std::vector<RandomizerCheck> GetOverworldFishLocations(); static std::vector<RandomizerCheck> GetOverworldFishLocations();
static std::vector<RandomizerCheck> GetOverworldPotLocations();
static std::array<std::pair<RandomizerCheck, RandomizerCheck>, 17> randomizerFishingPondFish; static std::array<std::pair<RandomizerCheck, RandomizerCheck>, 17> randomizerFishingPondFish;
static std::unordered_map<int8_t, RandomizerCheck> randomizerGrottoFishMap; static std::unordered_map<int8_t, RandomizerCheck> randomizerGrottoFishMap;
static std::vector<RandomizerHint> oldVerHintOrder; static std::vector<RandomizerHint> oldVerHintOrder;

View File

@ -1946,6 +1946,7 @@ extern "C" CowIdentity Randomizer_IdentifyCow(s32 sceneNum, s32 posX, s32 posZ)
extern "C" FishIdentity Randomizer_IdentifyFish(s32 sceneNum, s32 actorParams) { extern "C" FishIdentity Randomizer_IdentifyFish(s32 sceneNum, s32 actorParams) {
return OTRGlobals::Instance->gRandomizer->IdentifyFish(sceneNum, actorParams); return OTRGlobals::Instance->gRandomizer->IdentifyFish(sceneNum, actorParams);
} }
extern "C" GetItemEntry ItemTable_Retrieve(int16_t getItemID) { extern "C" GetItemEntry ItemTable_Retrieve(int16_t getItemID) {
GetItemEntry giEntry = ItemTableManager::Instance->RetrieveItemEntry(MOD_NONE, getItemID); GetItemEntry giEntry = ItemTableManager::Instance->RetrieveItemEntry(MOD_NONE, getItemID);
return giEntry; return giEntry;

View File

@ -261,7 +261,7 @@ void DoorShutter_Init(Actor* thisx, PlayState* play2) {
DoorShutter_SetupAction(this, DoorShutter_SetupType); DoorShutter_SetupAction(this, DoorShutter_SetupType);
this->unk_16B = phi_a3; this->unk_16B = phi_a3;
if (this->doorType == SHUTTER_KEY_LOCKED || this->doorType == SHUTTER_BOSS) { if (this->doorType == SHUTTER_KEY_LOCKED || this->doorType == SHUTTER_BOSS) {
if (!Flags_GetSwitch(play, this->dyna.actor.params & 0x3F)) { if (GameInteractor_Should(VB_LOCK_BOSS_DOOR, !Flags_GetSwitch(play, this->dyna.actor.params & 0x3F), this)) {
this->unk_16E = 10; this->unk_16E = 10;
} }
Actor_SetFocus(&this->dyna.actor, 60.0f); Actor_SetFocus(&this->dyna.actor, 60.0f);

View File

@ -8,6 +8,7 @@
#include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h"
#include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#include "objects/object_tsubo/object_tsubo.h" #include "objects/object_tsubo/object_tsubo.h"
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#define FLAGS (ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_ALWAYS_THROWN) #define FLAGS (ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_ALWAYS_THROWN)
@ -86,7 +87,7 @@ static InitChainEntry sInitChain[] = {
void ObjTsubo_SpawnCollectible(ObjTsubo* this, PlayState* play) { void ObjTsubo_SpawnCollectible(ObjTsubo* this, PlayState* play) {
s16 dropParams = this->actor.params & 0x1F; s16 dropParams = this->actor.params & 0x1F;
if ((dropParams >= ITEM00_RUPEE_GREEN) && (dropParams <= ITEM00_BOMBS_SPECIAL)) { if (GameInteractor_Should(VB_POT_DROP_ITEM, (dropParams >= ITEM00_RUPEE_GREEN) && (dropParams <= ITEM00_BOMBS_SPECIAL), this)) {
Item_DropCollectible(play, &this->actor.world.pos, Item_DropCollectible(play, &this->actor.world.pos,
(dropParams | (((this->actor.params >> 9) & 0x3F) << 8))); (dropParams | (((this->actor.params >> 9) & 0x3F) << 8)));
} }
@ -226,7 +227,9 @@ void ObjTsubo_SetupWaitForObject(ObjTsubo* this) {
void ObjTsubo_WaitForObject(ObjTsubo* this, PlayState* play) { void ObjTsubo_WaitForObject(ObjTsubo* this, PlayState* play) {
if (Object_IsLoaded(&play->objectCtx, this->objTsuboBankIndex)) { if (Object_IsLoaded(&play->objectCtx, this->objTsuboBankIndex)) {
this->actor.draw = ObjTsubo_Draw; if (GameInteractor_Should(VB_POT_SETUP_DRAW, true, this)) {
this->actor.draw = ObjTsubo_Draw;
}
this->actor.objBankIndex = this->objTsuboBankIndex; this->actor.objBankIndex = this->objTsuboBankIndex;
ObjTsubo_SetupIdle(this); ObjTsubo_SetupIdle(this);
this->actor.flags &= ~ACTOR_FLAG_UPDATE_WHILE_CULLED; this->actor.flags &= ~ACTOR_FLAG_UPDATE_WHILE_CULLED;

View File

@ -13,6 +13,7 @@ typedef struct ObjTsubo {
/* 0x014C */ ObjTsuboActionFunc actionFunc; /* 0x014C */ ObjTsuboActionFunc actionFunc;
/* 0x0150 */ ColliderCylinder collider; /* 0x0150 */ ColliderCylinder collider;
/* 0x019C */ s8 objTsuboBankIndex; /* 0x019C */ s8 objTsuboBankIndex;
/* */ PotIdentity potIdentity;
} ObjTsubo; // size = 0x01A0 } ObjTsubo; // size = 0x01A0
#endif #endif