mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-10-31 15:45:06 -04:00
Lock overworld doors Randomizer option
This commit is contained in:
parent
e5f4c091f8
commit
c4b903fd5f
BIN
soh/assets/custom/objects/object_housekey/Hilite_new
Normal file
BIN
soh/assets/custom/objects/object_housekey/Hilite_new
Normal file
Binary file not shown.
BIN
soh/assets/custom/objects/object_housekey/HouseKey_Tag
Normal file
BIN
soh/assets/custom/objects/object_housekey/HouseKey_Tag
Normal file
Binary file not shown.
15
soh/assets/custom/objects/object_housekey/gHouseKeyDL
Normal file
15
soh/assets/custom/objects/object_housekey/gHouseKeyDL
Normal file
@ -0,0 +1,15 @@
|
||||
<DisplayList Version="0">
|
||||
<CallDisplayList Path="objects/object_housekey/mat_gHouseKeyDL_f3dlite_housekeyringmetal"/>
|
||||
<CallDisplayList Path="objects/object_housekey/gHouseKeyDL_tri_0"/>
|
||||
<CallDisplayList Path="objects/object_housekey/mat_gHouseKeyDL_f3dlite_housekeytag"/>
|
||||
<CallDisplayList Path="objects/object_housekey/gHouseKeyDL_tri_1"/>
|
||||
<CallDisplayList Path="objects/object_housekey/mat_gHouseKeyDL_f3dlite_housekeymetal"/>
|
||||
<CallDisplayList Path="objects/object_housekey/gHouseKeyDL_tri_2"/>
|
||||
<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>
|
||||
|
54
soh/assets/custom/objects/object_housekey/gHouseKeyDL_tri_0
Normal file
54
soh/assets/custom/objects/object_housekey/gHouseKeyDL_tri_0
Normal file
@ -0,0 +1,54 @@
|
||||
<DisplayList Version="0">
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_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="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="13" V02="14"/>
|
||||
<Triangle1 V00="14" V01="15" V02="12"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="3" V01="4" V02="5"/>
|
||||
<Triangle1 V00="5" V01="6" V02="3"/>
|
||||
<Triangle1 V00="5" V01="7" V02="6"/>
|
||||
<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/object_housekey/gHouseKeyDL_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="0" V02="3"/>
|
||||
<Triangle1 V00="4" V01="3" V02="5"/>
|
||||
<Triangle1 V00="6" V01="4" V02="5"/>
|
||||
<Triangle1 V00="6" V01="5" V02="7"/>
|
||||
<Triangle1 V00="8" V01="6" V02="7"/>
|
||||
<Triangle1 V00="8" V01="7" V02="9"/>
|
||||
<Triangle1 V00="10" V01="6" V02="8"/>
|
||||
<Triangle1 V00="10" V01="11" V02="6"/>
|
||||
<Triangle1 V00="12" V01="11" V02="10"/>
|
||||
<Triangle1 V00="12" V01="13" V02="11"/>
|
||||
<Triangle1 V00="13" V01="14" V02="11"/>
|
||||
<Triangle1 V00="13" V01="15" V02="14"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="11"/>
|
||||
<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="1" V01="4" V02="6"/>
|
||||
<Triangle1 V00="1" V01="6" V02="7"/>
|
||||
<Triangle1 V00="2" V01="1" V02="7"/>
|
||||
<Triangle1 V00="2" V01="7" V02="8"/>
|
||||
<Triangle1 V00="9" V01="2" V02="8"/>
|
||||
<Triangle1 V00="9" V01="8" V02="10"/>
|
||||
<EndDisplayList/>
|
||||
</DisplayList>
|
||||
|
43
soh/assets/custom/objects/object_housekey/gHouseKeyDL_tri_1
Normal file
43
soh/assets/custom/objects/object_housekey/gHouseKeyDL_tri_1
Normal file
@ -0,0 +1,43 @@
|
||||
<DisplayList Version="0">
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="0" V01="3" V02="1"/>
|
||||
<Triangle1 V00="4" V01="3" V02="0"/>
|
||||
<Triangle1 V00="5" V01="4" V02="0"/>
|
||||
<Triangle1 V00="5" V01="0" V02="6"/>
|
||||
<Triangle1 V00="7" V01="5" V02="6"/>
|
||||
<Triangle1 V00="7" V01="6" V02="8"/>
|
||||
<Triangle1 V00="9" V01="7" V02="8"/>
|
||||
<Triangle1 V00="9" V01="8" V02="3"/>
|
||||
<Triangle1 V00="4" V01="9" V02="3"/>
|
||||
<Triangle1 V00="9" V01="4" V02="10"/>
|
||||
<Triangle1 V00="4" V01="11" V02="10"/>
|
||||
<Triangle1 V00="4" V01="12" V02="11"/>
|
||||
<Triangle1 V00="5" V01="12" V02="4"/>
|
||||
<Triangle1 V00="5" V01="13" V02="12"/>
|
||||
<Triangle1 V00="14" V01="13" V02="5"/>
|
||||
<Triangle1 V00="14" V01="5" V02="7"/>
|
||||
<Triangle1 V00="14" V01="7" V02="9"/>
|
||||
<Triangle1 V00="14" V01="9" V02="15"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="1" V01="3" V02="2"/>
|
||||
<Triangle1 V00="2" V01="3" V02="4"/>
|
||||
<Triangle1 V00="2" V01="4" V02="5"/>
|
||||
<Triangle1 V00="5" V01="4" V02="6"/>
|
||||
<Triangle1 V00="5" V01="6" V02="0"/>
|
||||
<Triangle1 V00="0" V01="6" V02="7"/>
|
||||
<Triangle1 V00="0" V01="7" V02="8"/>
|
||||
<Triangle1 V00="0" V01="2" V02="5"/>
|
||||
<Triangle1 V00="9" V01="10" V02="11"/>
|
||||
<Triangle1 V00="9" V01="11" V02="12"/>
|
||||
<Triangle1 V00="13" V01="12" V02="11"/>
|
||||
<Triangle1 V00="13" V01="11" V02="14"/>
|
||||
<Triangle1 V00="15" V01="13" V02="14"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="5"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="1" V01="3" V02="2"/>
|
||||
<Triangle1 V00="1" V01="4" V02="3"/>
|
||||
<EndDisplayList/>
|
||||
</DisplayList>
|
||||
|
82
soh/assets/custom/objects/object_housekey/gHouseKeyDL_tri_2
Normal file
82
soh/assets/custom/objects/object_housekey/gHouseKeyDL_tri_2
Normal file
@ -0,0 +1,82 @@
|
||||
<DisplayList Version="0">
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_2" 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="5" V02="7"/>
|
||||
<Triangle1 V00="8" V01="7" V02="9"/>
|
||||
<Triangle1 V00="10" V01="8" V02="9"/>
|
||||
<Triangle1 V00="10" V01="9" V02="11"/>
|
||||
<Triangle1 V00="12" V01="10" V02="11"/>
|
||||
<Triangle1 V00="12" V01="11" V02="13"/>
|
||||
<Triangle1 V00="14" V01="10" V02="12"/>
|
||||
<Triangle1 V00="14" V01="15" V02="10"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="16" 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="5" V01="6" V02="4"/>
|
||||
<Triangle1 V00="5" V01="7" V02="6"/>
|
||||
<Triangle1 V00="4" V01="6" V02="8"/>
|
||||
<Triangle1 V00="4" V01="8" V02="9"/>
|
||||
<Triangle1 V00="1" V01="4" V02="9"/>
|
||||
<Triangle1 V00="1" V01="9" V02="10"/>
|
||||
<Triangle1 V00="11" V01="12" V02="13"/>
|
||||
<Triangle1 V00="11" V01="13" V02="14"/>
|
||||
<Triangle1 V00="14" V01="13" V02="15"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="2" V01="1" V02="3"/>
|
||||
<Triangle1 V00="1" V01="4" V02="3"/>
|
||||
<Triangle1 V00="1" V01="5" V02="4"/>
|
||||
<Triangle1 V00="2" V01="3" V02="6"/>
|
||||
<Triangle1 V00="6" V01="3" V02="7"/>
|
||||
<Triangle1 V00="6" V01="7" V02="8"/>
|
||||
<Triangle1 V00="9" V01="2" V02="6"/>
|
||||
<Triangle1 V00="9" V01="6" V02="10"/>
|
||||
<Triangle1 V00="11" V01="12" V02="13"/>
|
||||
<Triangle1 V00="11" V01="13" V02="14"/>
|
||||
<Triangle1 V00="14" V01="13" V02="15"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="48" Count="16"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="2" V01="1" V02="3"/>
|
||||
<Triangle1 V00="1" V01="4" V02="3"/>
|
||||
<Triangle1 V00="1" V01="5" V02="4"/>
|
||||
<Triangle1 V00="2" V01="3" V02="6"/>
|
||||
<Triangle1 V00="6" V01="3" V02="7"/>
|
||||
<Triangle1 V00="6" V01="7" V02="8"/>
|
||||
<Triangle1 V00="9" V01="2" V02="6"/>
|
||||
<Triangle1 V00="9" V01="6" V02="10"/>
|
||||
<Triangle1 V00="11" V01="12" V02="13"/>
|
||||
<Triangle1 V00="11" V01="13" V02="14"/>
|
||||
<Triangle1 V00="14" V01="13" V02="15"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="64" Count="16"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="2" V01="1" V02="3"/>
|
||||
<Triangle1 V00="1" V01="4" V02="3"/>
|
||||
<Triangle1 V00="1" V01="5" V02="4"/>
|
||||
<Triangle1 V00="2" V01="3" V02="6"/>
|
||||
<Triangle1 V00="6" V01="3" V02="7"/>
|
||||
<Triangle1 V00="6" V01="7" V02="8"/>
|
||||
<Triangle1 V00="9" V01="2" V02="6"/>
|
||||
<Triangle1 V00="9" V01="6" V02="10"/>
|
||||
<Triangle1 V00="11" V01="12" V02="13"/>
|
||||
<Triangle1 V00="11" V01="13" V02="14"/>
|
||||
<Triangle1 V00="14" V01="13" V02="15"/>
|
||||
<LoadVertices Path="objects/object_housekey/gHouseKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="80" Count="11"/>
|
||||
<Triangle1 V00="0" V01="1" V02="2"/>
|
||||
<Triangle1 V00="2" V01="1" V02="3"/>
|
||||
<Triangle1 V00="1" V01="4" V02="3"/>
|
||||
<Triangle1 V00="1" V01="5" V02="4"/>
|
||||
<Triangle1 V00="2" V01="3" V02="6"/>
|
||||
<Triangle1 V00="6" V01="3" V02="7"/>
|
||||
<Triangle1 V00="6" V01="7" V02="8"/>
|
||||
<Triangle1 V00="9" V01="2" V02="6"/>
|
||||
<Triangle1 V00="9" V01="6" V02="10"/>
|
||||
<EndDisplayList/>
|
||||
</DisplayList>
|
||||
|
61
soh/assets/custom/objects/object_housekey/gHouseKeyDL_vtx_0
Normal file
61
soh/assets/custom/objects/object_housekey/gHouseKeyDL_vtx_0
Normal file
@ -0,0 +1,61 @@
|
||||
<Vertex Version="0">
|
||||
<Vtx X="5" Y="3" Z="3" S="-580" T="-836" R="45" G="180" B="91" A="255"/>
|
||||
<Vtx X="8" Y="4" Z="-5" S="-580" T="-1092" R="96" G="190" B="205" A="255"/>
|
||||
<Vtx X="9" Y="9" Z="-5" S="-683" T="-1092" R="110" G="52" B="218" A="255"/>
|
||||
<Vtx X="6" Y="8" Z="3" S="-683" T="-836" R="59" G="42" B="105" A="255"/>
|
||||
<Vtx X="4" Y="11" Z="-6" S="-785" T="-1092" R="6" G="105" B="185" A="255"/>
|
||||
<Vtx X="2" Y="11" Z="2" S="-785" T="-836" R="212" G="95" B="72" A="255"/>
|
||||
<Vtx X="1" Y="8" Z="-7" S="-887" T="-1092" R="186" G="19" B="152" A="255"/>
|
||||
<Vtx X="-2" Y="7" Z="1" S="-887" T="-836" R="135" G="9" B="38" A="255"/>
|
||||
<Vtx X="3" Y="3" Z="-7" S="-990" T="-1092" R="241" G="170" B="164" A="255"/>
|
||||
<Vtx X="1" Y="3" Z="1" S="-990" T="-836" R="190" G="159" B="50" A="255"/>
|
||||
<Vtx X="8" Y="4" Z="-5" S="-1092" T="-1092" R="96" G="190" B="205" A="255"/>
|
||||
<Vtx X="5" Y="3" Z="3" S="-1092" T="-836" R="45" G="180" B="91" A="255"/>
|
||||
<Vtx X="4" Y="11" Z="-6" S="-892" T="-609" R="6" G="105" B="185" A="255"/>
|
||||
<Vtx X="9" Y="9" Z="-5" S="-847" T="-746" R="110" G="52" B="218" A="255"/>
|
||||
<Vtx X="8" Y="4" Z="-5" S="-964" T="-831" R="96" G="190" B="205" A="255"/>
|
||||
<Vtx X="1" Y="8" Z="-7" S="-1036" T="-609" R="186" G="19" B="152" A="255"/>
|
||||
<Vtx X="8" Y="4" Z="-5" S="-964" T="-831" R="96" G="190" B="205" A="255"/>
|
||||
<Vtx X="3" Y="3" Z="-7" S="-1081" T="-746" R="241" G="170" B="164" A="255"/>
|
||||
<Vtx X="1" Y="8" Z="-7" S="-1036" T="-609" R="186" G="19" B="152" A="255"/>
|
||||
<Vtx X="1" Y="3" Z="1" S="-825" T="-746" R="190" G="159" B="50" A="255"/>
|
||||
<Vtx X="5" Y="3" Z="3" S="-708" T="-831" R="45" G="180" B="91" A="255"/>
|
||||
<Vtx X="6" Y="8" Z="3" S="-591" T="-746" R="59" G="42" B="105" A="255"/>
|
||||
<Vtx X="-2" Y="7" Z="1" S="-780" T="-609" R="135" G="9" B="38" A="255"/>
|
||||
<Vtx X="2" Y="11" Z="2" S="-636" T="-609" R="212" G="95" B="72" A="255"/>
|
||||
<Vtx X="-3" Y="30" Z="-4" S="-683" T="-580" R="33" G="246" B="134" A="255"/>
|
||||
<Vtx X="4" Y="17" Z="-3" S="-580" T="-580" R="22" G="11" B="131" A="255"/>
|
||||
<Vtx X="3" Y="17" Z="0" S="-580" T="-751" R="195" G="251" B="111" A="255"/>
|
||||
<Vtx X="-4" Y="30" Z="-1" S="-683" T="-751" R="206" G="230" B="114" A="255"/>
|
||||
<Vtx X="6" Y="17" Z="0" S="-580" T="-922" R="119" G="238" B="41" A="255"/>
|
||||
<Vtx X="-2" Y="33" Z="-2" S="-683" T="-922" R="50" G="114" B="26" A="255"/>
|
||||
<Vtx X="4" Y="17" Z="-3" S="-580" T="-1092" R="22" G="11" B="131" A="255"/>
|
||||
<Vtx X="-3" Y="30" Z="-4" S="-683" T="-1092" R="33" G="246" B="134" A="255"/>
|
||||
<Vtx X="-19" Y="30" Z="-9" S="-785" T="-922" R="168" G="89" B="231" A="255"/>
|
||||
<Vtx X="-2" Y="33" Z="-2" S="-683" T="-922" R="50" G="114" B="26" A="255"/>
|
||||
<Vtx X="-3" Y="30" Z="-4" S="-683" T="-1092" R="33" G="246" B="134" A="255"/>
|
||||
<Vtx X="-17" Y="28" Z="-10" S="-785" T="-1092" R="56" G="250" B="142" A="255"/>
|
||||
<Vtx X="-21" Y="12" Z="-11" S="-887" T="-922" R="151" G="197" B="215" A="255"/>
|
||||
<Vtx X="-18" Y="13" Z="-11" S="-887" T="-1092" R="59" G="18" B="145" A="255"/>
|
||||
<Vtx X="-6" Y="4" Z="-6" S="-990" T="-922" R="23" G="131" B="0" A="255"/>
|
||||
<Vtx X="-6" Y="7" Z="-7" S="-990" T="-1092" R="38" G="28" B="138" A="255"/>
|
||||
<Vtx X="6" Y="17" Z="0" S="-1092" T="-922" R="119" G="238" B="41" A="255"/>
|
||||
<Vtx X="4" Y="17" Z="-3" S="-1092" T="-1092" R="22" G="11" B="131" A="255"/>
|
||||
<Vtx X="3" Y="17" Z="0" S="-1092" T="-751" R="195" G="251" B="111" A="255"/>
|
||||
<Vtx X="-7" Y="6" Z="-4" S="-990" T="-751" R="211" G="12" B="118" A="255"/>
|
||||
<Vtx X="4" Y="17" Z="-3" S="-1092" T="-580" R="22" G="11" B="131" A="255"/>
|
||||
<Vtx X="-6" Y="7" Z="-7" S="-990" T="-580" R="38" G="28" B="138" A="255"/>
|
||||
<Vtx X="-19" Y="13" Z="-8" S="-887" T="-751" R="231" G="1" B="125" A="255"/>
|
||||
<Vtx X="-18" Y="13" Z="-11" S="-887" T="-580" R="59" G="18" B="145" A="255"/>
|
||||
<Vtx X="-18" Y="13" Z="-11" S="-887" T="-580" R="59" G="18" B="145" A="255"/>
|
||||
<Vtx X="-18" Y="28" Z="-6" S="-785" T="-751" R="229" G="234" B="122" A="255"/>
|
||||
<Vtx X="-19" Y="13" Z="-8" S="-887" T="-751" R="231" G="1" B="125" A="255"/>
|
||||
<Vtx X="-17" Y="28" Z="-10" S="-785" T="-580" R="56" G="250" B="142" A="255"/>
|
||||
<Vtx X="-4" Y="30" Z="-1" S="-683" T="-751" R="206" G="230" B="114" A="255"/>
|
||||
<Vtx X="-3" Y="30" Z="-4" S="-683" T="-580" R="33" G="246" B="134" A="255"/>
|
||||
<Vtx X="-2" Y="33" Z="-2" S="-683" T="-922" R="50" G="114" B="26" A="255"/>
|
||||
<Vtx X="-19" Y="30" Z="-9" S="-785" T="-922" R="168" G="89" B="231" A="255"/>
|
||||
<Vtx X="-21" Y="12" Z="-11" S="-887" T="-922" R="151" G="197" B="215" A="255"/>
|
||||
<Vtx X="-7" Y="6" Z="-4" S="-990" T="-751" R="211" G="12" B="118" A="255"/>
|
||||
<Vtx X="-6" Y="4" Z="-6" S="-990" T="-922" R="23" G="131" B="0" A="255"/>
|
||||
</Vertex>
|
39
soh/assets/custom/objects/object_housekey/gHouseKeyDL_vtx_1
Normal file
39
soh/assets/custom/objects/object_housekey/gHouseKeyDL_vtx_1
Normal file
@ -0,0 +1,39 @@
|
||||
<Vertex Version="0">
|
||||
<Vtx X="3" Y="-11" Z="-3" S="1" T="1998" R="197" G="224" B="148" A="255"/>
|
||||
<Vtx X="47" Y="-19" Z="11" S="2015" T="1042" R="122" G="6" B="222" A="255"/>
|
||||
<Vtx X="30" Y="-38" Z="4" S="2015" T="1998" R="28" G="157" B="181" A="255"/>
|
||||
<Vtx X="20" Y="8" Z="4" S="1" T="1042" R="57" G="98" B="199" A="255"/>
|
||||
<Vtx X="3" Y="-2" Z="-3" S="211" T="1772" R="214" G="174" B="169" A="255"/>
|
||||
<Vtx X="2" Y="-2" Z="0" S="211" T="1772" R="157" G="221" B="72" A="255"/>
|
||||
<Vtx X="2" Y="-11" Z="-1" S="1" T="1998" R="144" G="214" B="42" A="255"/>
|
||||
<Vtx X="11" Y="7" Z="4" S="211" T="1268" R="245" G="63" B="110" A="255"/>
|
||||
<Vtx X="19" Y="8" Z="6" S="1" T="1042" R="4" G="87" B="93" A="255"/>
|
||||
<Vtx X="12" Y="8" Z="1" S="211" T="1268" R="99" G="75" B="230" A="255"/>
|
||||
<Vtx X="4" Y="-2" Z="-5" S="211" T="1772" R="28" G="157" B="181" A="255"/>
|
||||
<Vtx X="-6" Y="9" Z="-8" S="778" T="1772" R="198" G="245" B="143" A="255"/>
|
||||
<Vtx X="-8" Y="9" Z="-6" S="853" T="1772" R="136" G="12" B="215" A="255"/>
|
||||
<Vtx X="-8" Y="8" Z="-3" S="778" T="1772" R="140" G="234" B="48" A="255"/>
|
||||
<Vtx X="1" Y="18" Z="0" S="778" T="1268" R="239" G="87" B="91" A="255"/>
|
||||
<Vtx X="1" Y="19" Z="-2" S="853" T="1268" R="239" G="126" B="2" A="255"/>
|
||||
<Vtx X="1" Y="19" Z="-2" S="853" T="1268" R="239" G="126" B="2" A="255"/>
|
||||
<Vtx X="12" Y="8" Z="1" S="211" T="1268" R="99" G="75" B="230" A="255"/>
|
||||
<Vtx X="13" Y="8" Z="-2" S="211" T="1268" R="122" G="6" B="222" A="255"/>
|
||||
<Vtx X="4" Y="-2" Z="-5" S="211" T="1772" R="28" G="157" B="181" A="255"/>
|
||||
<Vtx X="-6" Y="9" Z="-8" S="778" T="1772" R="198" G="245" B="143" A="255"/>
|
||||
<Vtx X="2" Y="19" Z="-5" S="778" T="1268" R="40" G="98" B="186" A="255"/>
|
||||
<Vtx X="-8" Y="9" Z="-6" S="853" T="1772" R="136" G="12" B="215" A="255"/>
|
||||
<Vtx X="-8" Y="8" Z="-3" S="778" T="1772" R="140" G="234" B="48" A="255"/>
|
||||
<Vtx X="1" Y="18" Z="0" S="778" T="1268" R="239" G="87" B="91" A="255"/>
|
||||
<Vtx X="2" Y="-11" Z="-1" S="-16" T="1008" R="144" G="214" B="42" A="255"/>
|
||||
<Vtx X="3" Y="-11" Z="-3" S="-16" T="1008" R="197" G="224" B="148" A="255"/>
|
||||
<Vtx X="30" Y="-38" Z="4" S="2032" T="1008" R="28" G="157" B="181" A="255"/>
|
||||
<Vtx X="29" Y="-38" Z="7" S="2032" T="1008" R="235" G="148" B="63" A="255"/>
|
||||
<Vtx X="46" Y="-19" Z="14" S="2032" T="-16" R="73" G="253" B="104" A="255"/>
|
||||
<Vtx X="47" Y="-19" Z="11" S="2032" T="-16" R="122" G="6" B="222" A="255"/>
|
||||
<Vtx X="20" Y="8" Z="4" S="-16" T="-16" R="57" G="98" B="199" A="255"/>
|
||||
<Vtx X="20" Y="8" Z="4" S="-16" T="-16" R="57" G="98" B="199" A="255"/>
|
||||
<Vtx X="19" Y="8" Z="6" S="-16" T="-16" R="4" G="87" B="93" A="255"/>
|
||||
<Vtx X="46" Y="-19" Z="14" S="2032" T="-16" R="73" G="253" B="104" A="255"/>
|
||||
<Vtx X="29" Y="-38" Z="7" S="2032" T="1008" R="235" G="148" B="63" A="255"/>
|
||||
<Vtx X="2" Y="-11" Z="-1" S="-16" T="1008" R="144" G="214" B="42" A="255"/>
|
||||
</Vertex>
|
93
soh/assets/custom/objects/object_housekey/gHouseKeyDL_vtx_2
Normal file
93
soh/assets/custom/objects/object_housekey/gHouseKeyDL_vtx_2
Normal file
@ -0,0 +1,93 @@
|
||||
<Vertex Version="0">
|
||||
<Vtx X="-11" Y="19" Z="-12" S="-708" T="-580" R="193" G="214" B="154" A="255"/>
|
||||
<Vtx X="-20" Y="19" Z="-7" S="-580" T="-580" R="204" G="214" B="148" A="255"/>
|
||||
<Vtx X="-17" Y="21" Z="-2" S="-580" T="-751" R="60" G="53" B="99" A="255"/>
|
||||
<Vtx X="-8" Y="21" Z="-7" S="-708" T="-751" R="50" G="53" B="104" A="255"/>
|
||||
<Vtx X="-21" Y="16" Z="-1" S="-580" T="-922" R="197" G="170" B="72" A="255"/>
|
||||
<Vtx X="-5" Y="16" Z="-10" S="-708" T="-922" R="97" G="176" B="240" A="255"/>
|
||||
<Vtx X="-20" Y="19" Z="-7" S="-580" T="-1092" R="204" G="214" B="148" A="255"/>
|
||||
<Vtx X="-11" Y="19" Z="-12" S="-708" T="-1092" R="193" G="214" B="154" A="255"/>
|
||||
<Vtx X="-9" Y="33" Z="-16" S="-836" T="-922" R="59" G="86" B="184" A="255"/>
|
||||
<Vtx X="-13" Y="28" Z="-15" S="-836" T="-1092" R="196" G="203" B="157" A="255"/>
|
||||
<Vtx X="-25" Y="33" Z="-7" S="-964" T="-922" R="159" G="80" B="16" A="255"/>
|
||||
<Vtx X="-22" Y="28" Z="-10" S="-964" T="-1092" R="206" G="203" B="152" A="255"/>
|
||||
<Vtx X="-21" Y="16" Z="-1" S="-1092" T="-922" R="197" G="170" B="72" A="255"/>
|
||||
<Vtx X="-20" Y="19" Z="-7" S="-1092" T="-1092" R="204" G="214" B="148" A="255"/>
|
||||
<Vtx X="-17" Y="21" Z="-2" S="-1092" T="-751" R="60" G="53" B="99" A="255"/>
|
||||
<Vtx X="-19" Y="30" Z="-5" S="-964" T="-751" R="63" G="42" B="102" A="255"/>
|
||||
<Vtx X="-20" Y="19" Z="-7" S="-1092" T="-580" R="204" G="214" B="148" A="255"/>
|
||||
<Vtx X="-19" Y="30" Z="-5" S="-964" T="-751" R="63" G="42" B="102" A="255"/>
|
||||
<Vtx X="-17" Y="21" Z="-2" S="-1092" T="-751" R="60" G="53" B="99" A="255"/>
|
||||
<Vtx X="-22" Y="28" Z="-10" S="-964" T="-580" R="206" G="203" B="152" A="255"/>
|
||||
<Vtx X="-10" Y="31" Z="-10" S="-836" T="-751" R="52" G="42" B="108" A="255"/>
|
||||
<Vtx X="-13" Y="28" Z="-15" S="-836" T="-580" R="196" G="203" B="157" A="255"/>
|
||||
<Vtx X="-8" Y="21" Z="-7" S="-708" T="-751" R="50" G="53" B="104" A="255"/>
|
||||
<Vtx X="-11" Y="19" Z="-12" S="-708" T="-580" R="193" G="214" B="154" A="255"/>
|
||||
<Vtx X="-5" Y="16" Z="-10" S="-708" T="-922" R="97" G="176" B="240" A="255"/>
|
||||
<Vtx X="-9" Y="33" Z="-16" S="-836" T="-922" R="59" G="86" B="184" A="255"/>
|
||||
<Vtx X="-25" Y="33" Z="-7" S="-964" T="-922" R="159" G="80" B="16" A="255"/>
|
||||
<Vtx X="-21" Y="22" Z="-4" S="-900" T="-580" R="211" G="116" B="228" A="255"/>
|
||||
<Vtx X="-20" Y="19" Z="-7" S="-772" T="-580" R="245" G="10" B="130" A="255"/>
|
||||
<Vtx X="-35" Y="-3" Z="11" S="-772" T="-708" R="176" G="167" B="213" A="255"/>
|
||||
<Vtx X="-36" Y="0" Z="14" S="-900" T="-708" R="142" G="15" B="55" A="255"/>
|
||||
<Vtx X="-31" Y="-4" Z="13" S="-772" T="-836" R="45" G="140" B="28" A="255"/>
|
||||
<Vtx X="-36" Y="0" Z="14" S="-900" T="-708" R="142" G="15" B="55" A="255"/>
|
||||
<Vtx X="-31" Y="-4" Z="13" S="-772" T="-836" R="45" G="140" B="28" A="255"/>
|
||||
<Vtx X="-32" Y="0" Z="17" S="-900" T="-836" R="11" G="246" B="126" A="255"/>
|
||||
<Vtx X="-16" Y="18" Z="-5" S="-772" T="-964" R="114" G="241" B="201" A="255"/>
|
||||
<Vtx X="-20" Y="19" Z="-7" S="-644" T="-964" R="245" G="10" B="130" A="255"/>
|
||||
<Vtx X="-35" Y="-3" Z="11" S="-644" T="-836" R="176" G="167" B="213" A="255"/>
|
||||
<Vtx X="-17" Y="21" Z="-2" S="-900" T="-964" R="80" G="89" B="43" A="255"/>
|
||||
<Vtx X="-20" Y="19" Z="-7" S="-772" T="-1092" R="245" G="10" B="130" A="255"/>
|
||||
<Vtx X="-21" Y="22" Z="-4" S="-900" T="-1092" R="211" G="116" B="228" A="255"/>
|
||||
<Vtx X="-36" Y="0" Z="14" S="-1028" T="-836" R="142" G="15" B="55" A="255"/>
|
||||
<Vtx X="-21" Y="22" Z="-4" S="-1028" T="-964" R="211" G="116" B="228" A="255"/>
|
||||
<Vtx X="-30" Y="3" Z="10" S="-900" T="-580" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-33" Y="0" Z="9" S="-772" T="-580" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-40" Y="5" Z="10" S="-772" T="-708" R="154" G="7" B="181" A="255"/>
|
||||
<Vtx X="-37" Y="9" Z="11" S="-900" T="-708" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-40" Y="5" Z="14" S="-772" T="-836" R="151" G="232" B="68" A="255"/>
|
||||
<Vtx X="-37" Y="9" Z="11" S="-900" T="-708" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-40" Y="5" Z="14" S="-772" T="-836" R="151" G="232" B="68" A="255"/>
|
||||
<Vtx X="-37" Y="8" Z="15" S="-900" T="-836" R="246" G="85" B="94" A="255"/>
|
||||
<Vtx X="-33" Y="-1" Z="13" S="-772" T="-964" R="7" G="139" B="50" A="255"/>
|
||||
<Vtx X="-33" Y="0" Z="9" S="-644" T="-964" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-40" Y="5" Z="10" S="-644" T="-836" R="154" G="7" B="181" A="255"/>
|
||||
<Vtx X="-30" Y="2" Z="14" S="-900" T="-964" R="102" G="249" B="75" A="255"/>
|
||||
<Vtx X="-33" Y="0" Z="9" S="-772" T="-1092" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-30" Y="3" Z="10" S="-900" T="-1092" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-37" Y="9" Z="11" S="-1028" T="-836" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-30" Y="3" Z="10" S="-1028" T="-964" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-28" Y="7" Z="7" S="-900" T="-580" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-30" Y="4" Z="6" S="-772" T="-580" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-35" Y="9" Z="7" S="-772" T="-708" R="154" G="7" B="181" A="255"/>
|
||||
<Vtx X="-33" Y="11" Z="8" S="-900" T="-708" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-35" Y="8" Z="10" S="-772" T="-836" R="151" G="232" B="68" A="255"/>
|
||||
<Vtx X="-33" Y="11" Z="8" S="-900" T="-708" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-35" Y="8" Z="10" S="-772" T="-836" R="151" G="232" B="68" A="255"/>
|
||||
<Vtx X="-33" Y="11" Z="11" S="-900" T="-836" R="246" G="85" B="94" A="255"/>
|
||||
<Vtx X="-30" Y="4" Z="9" S="-772" T="-964" R="7" G="139" B="50" A="255"/>
|
||||
<Vtx X="-30" Y="4" Z="6" S="-644" T="-964" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-35" Y="9" Z="7" S="-644" T="-836" R="154" G="7" B="181" A="255"/>
|
||||
<Vtx X="-28" Y="6" Z="10" S="-900" T="-964" R="102" G="249" B="75" A="255"/>
|
||||
<Vtx X="-30" Y="4" Z="6" S="-772" T="-1092" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-28" Y="7" Z="7" S="-900" T="-1092" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-33" Y="11" Z="8" S="-1028" T="-836" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-28" Y="7" Z="7" S="-1028" T="-964" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-24" Y="12" Z="2" S="-900" T="-580" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-27" Y="9" Z="1" S="-772" T="-580" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-35" Y="15" Z="2" S="-772" T="-708" R="154" G="7" B="181" A="255"/>
|
||||
<Vtx X="-32" Y="19" Z="3" S="-900" T="-708" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-35" Y="14" Z="7" S="-772" T="-836" R="151" G="232" B="68" A="255"/>
|
||||
<Vtx X="-32" Y="19" Z="3" S="-900" T="-708" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-35" Y="14" Z="7" S="-772" T="-836" R="151" G="232" B="68" A="255"/>
|
||||
<Vtx X="-32" Y="18" Z="8" S="-900" T="-836" R="246" G="85" B="94" A="255"/>
|
||||
<Vtx X="-27" Y="8" Z="6" S="-772" T="-964" R="7" G="139" B="50" A="255"/>
|
||||
<Vtx X="-27" Y="9" Z="1" S="-644" T="-964" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-35" Y="15" Z="2" S="-644" T="-836" R="154" G="7" B="181" A="255"/>
|
||||
<Vtx X="-24" Y="11" Z="7" S="-900" T="-964" R="102" G="249" B="75" A="255"/>
|
||||
<Vtx X="-27" Y="9" Z="1" S="-772" T="-1092" R="10" G="171" B="162" A="255"/>
|
||||
<Vtx X="-24" Y="12" Z="2" S="-900" T="-1092" R="105" G="24" B="188" A="255"/>
|
||||
<Vtx X="-32" Y="19" Z="3" S="-1028" T="-836" R="249" G="117" B="206" A="255"/>
|
||||
<Vtx X="-24" Y="12" Z="2" S="-1028" T="-964" R="105" G="24" B="188" A="255"/>
|
||||
</Vertex>
|
@ -0,0 +1,20 @@
|
||||
<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_ENVIRONMENT" 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_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
|
||||
<ClearGeometryMode G_CULL_FRONT="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="960" T="960" Level="0" Tile="0" On="1"/>
|
||||
<SetTextureLUT Mode="G_TT_NONE"/>
|
||||
<TileSync/>
|
||||
<SetTextureImage Path="objects/object_housekey/Hilite_new" 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_NOMIRROR" MaskS="4" ShiftS="0" MaskT="4" ShiftT="0"/>
|
||||
<LoadSync/>
|
||||
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="255" Dxt="512"/>
|
||||
<PipeSync/>
|
||||
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="0" MaskT="4" ShiftT="0"/>
|
||||
<SetTileSize T="0" Uls="0" Ult="0" Lrs="60" Lrt="60"/>
|
||||
<EndDisplayList/>
|
||||
</DisplayList>
|
||||
|
@ -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_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
|
||||
<ClearGeometryMode G_CULL_FRONT="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="960" T="960" Level="0" Tile="0" On="1"/>
|
||||
<SetTextureLUT Mode="G_TT_NONE"/>
|
||||
<TileSync/>
|
||||
<SetTextureImage Path="objects/object_housekey/Hilite_new" 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_NOMIRROR" MaskS="4" ShiftS="0" MaskT="4" ShiftT="0"/>
|
||||
<LoadSync/>
|
||||
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="255" Dxt="512"/>
|
||||
<PipeSync/>
|
||||
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="0" MaskT="4" ShiftT="0"/>
|
||||
<SetTileSize T="0" Uls="0" Ult="0" Lrs="60" Lrt="60"/>
|
||||
<SetPrimColor M="0" L="0" R="255" G="255" B="218" A="255"/>
|
||||
<EndDisplayList/>
|
||||
</DisplayList>
|
||||
|
@ -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/object_housekey/HouseKey_Tag" 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_NOMIRROR" MaskS="6" ShiftS="0" MaskT="6" ShiftT="0"/>
|
||||
<LoadSync/>
|
||||
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="4095" Dxt="128"/>
|
||||
<PipeSync/>
|
||||
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="16" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="6" ShiftS="0" MaskT="6" ShiftT="0"/>
|
||||
<SetTileSize T="0" Uls="0" Ult="0" Lrs="252" Lrt="252"/>
|
||||
<SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/>
|
||||
<EndDisplayList/>
|
||||
</DisplayList>
|
||||
|
@ -80,6 +80,9 @@ static const ALIGN_ASSET(2) char gFishingPoleGiDL[] = dgFishingPoleGiDL;
|
||||
#define dgMysteryItemDL "__OTR__objects/object_mystery_item/gMysteryItemDL"
|
||||
static const ALIGN_ASSET(2) char gMysteryItemDL[] = dgMysteryItemDL;
|
||||
|
||||
#define dgHouseKeyDL "__OTR__objects/object_housekey/gHouseKeyDL"
|
||||
static const ALIGN_ASSET(2) char gHouseKeyDL[] = dgHouseKeyDL;
|
||||
|
||||
// overlays
|
||||
#define dgOptionsDividerChangeLangVtx "__OTR__overlays/ovl_file_choose/gOptionsDividerChangeLangVtx"
|
||||
static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx;
|
||||
|
@ -284,7 +284,7 @@ typedef struct {
|
||||
// #endregion
|
||||
// #region SOH [Randomizer]
|
||||
// Upstream TODO: Move these to their own struct or name to more obviously specific to Randomizer
|
||||
/* */ u16 randomizerInf[17];
|
||||
/* */ u16 randomizerInf[21];
|
||||
/* */ u8 mqDungeonCount;
|
||||
/* */ u16 adultTradeItems;
|
||||
/* */ u8 triforcePiecesCollected;
|
||||
|
@ -348,7 +348,7 @@ const std::vector<FlagTable> flagTables = {
|
||||
{ 0x24, "Market Crowd Text Randomizer" },
|
||||
{ 0x30, "Entered the Market" },
|
||||
} },
|
||||
{ "Randomizer Inf Flags", RANDOMIZER_INF, 16, {
|
||||
{ "Randomizer Inf Flags", RANDOMIZER_INF, 20, {
|
||||
{ RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE, "DUNGEONS_DONE_SPIRIT_TEMPLE" },
|
||||
{ RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE, "DUNGEONS_DONE_SHADOW_TEMPLE" },
|
||||
|
||||
@ -621,6 +621,53 @@ const std::vector<FlagTable> flagTables = {
|
||||
{ RAND_INF_ZF_GREAT_FAIRY_REWARD, "RAND_INF_ZF_GREAT_FAIRY_REWARD" },
|
||||
{ RAND_INF_COLOSSUS_GREAT_FAIRY_REWARD, "RAND_INF_COLOSSUS_GREAT_FAIRY_REWARD" },
|
||||
{ RAND_INF_OGC_GREAT_FAIRY_REWARD, "RAND_INF_OGC_GREAT_FAIRY_REWARD" },
|
||||
|
||||
{ RAND_INF_GUARD_HOUSE_UNLOCKED, "RAND_INF_GUARD_HOUSE_UNLOCKED" },
|
||||
{ RAND_INF_GUARD_HOUSE_KEY_OBTAINED, "RAND_INF_GUARD_HOUSE_KEY_OBTAINED" },
|
||||
{ RAND_INF_MARKET_BAZAAR_UNLOCKED, "RAND_INF_MARKET_BAZAAR_UNLOCKED" },
|
||||
{ RAND_INF_MARKET_BAZAAR_KEY_OBTAINED, "RAND_INF_MARKET_BAZAAR_KEY_OBTAINED" },
|
||||
{ RAND_INF_MARKET_POTION_SHOP_UNLOCKED, "RAND_INF_MARKET_POTION_SHOP_UNLOCKED" },
|
||||
{ RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED, "RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED" },
|
||||
{ RAND_INF_MASK_SHOP_UNLOCKED, "RAND_INF_MASK_SHOP_UNLOCKED" },
|
||||
{ RAND_INF_MASK_SHOP_KEY_OBTAINED, "RAND_INF_MASK_SHOP_KEY_OBTAINED" },
|
||||
{ RAND_INF_MARKET_SHOOTING_GALLERY_UNLOCKED, "RAND_INF_MARKET_SHOOTING_GALLERY_UNLOCKED" },
|
||||
{ RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED, "RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED" },
|
||||
{ RAND_INF_BOMBCHU_BOWLING_UNLOCKED, "RAND_INF_BOMBCHU_BOWLING_UNLOCKED" },
|
||||
{ RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED, "RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED" },
|
||||
{ RAND_INF_TREASURE_CHEST_GAME_BUILDING_UNLOCKED, "RAND_INF_TREASURE_CHEST_GAME_BUILDING_UNLOCKED" },
|
||||
{ RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED, "RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED" },
|
||||
{ RAND_INF_BOMBCHU_SHOP_UNLOCKED, "RAND_INF_BOMBCHU_SHOP_UNLOCKED" },
|
||||
{ RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED, "RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED" },
|
||||
{ RAND_INF_RICHARDS_HOUSE_UNLOCKED, "RAND_INF_RICHARDS_HOUSE_UNLOCKED" },
|
||||
{ RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED, "RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED" },
|
||||
{ RAND_INF_KAK_BAZAAR_UNLOCKED, "RAND_INF_KAK_BAZAAR_UNLOCKED" },
|
||||
{ RAND_INF_KAK_BAZAAR_KEY_OBTAINED, "RAND_INF_KAK_BAZAAR_KEY_OBTAINED" },
|
||||
{ RAND_INF_KAK_POTION_SHOP_UNLOCKED, "RAND_INF_KAK_POTION_SHOP_UNLOCKED" },
|
||||
{ RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED, "RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED" },
|
||||
{ RAND_INF_BOSS_HOUSE_UNLOCKED, "RAND_INF_BOSS_HOUSE_UNLOCKED" },
|
||||
{ RAND_INF_BOSS_HOUSE_KEY_OBTAINED, "RAND_INF_BOSS_HOUSE_KEY_OBTAINED" },
|
||||
{ RAND_INF_GRANNYS_POTION_SHOP_UNLOCKED, "RAND_INF_GRANNYS_POTION_SHOP_UNLOCKED" },
|
||||
{ RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED, "RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED" },
|
||||
{ RAND_INF_SKULLTULA_HOUSE_UNLOCKED, "RAND_INF_SKULLTULA_HOUSE_UNLOCKED" },
|
||||
{ RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED, "RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED" },
|
||||
{ RAND_INF_IMPAS_HOUSE_UNLOCKED, "RAND_INF_IMPAS_HOUSE_UNLOCKED" },
|
||||
{ RAND_INF_IMPAS_HOUSE_KEY_OBTAINED, "RAND_INF_IMPAS_HOUSE_KEY_OBTAINED" },
|
||||
{ RAND_INF_WINDMILL_UNLOCKED, "RAND_INF_WINDMILL_UNLOCKED" },
|
||||
{ RAND_INF_WINDMILL_KEY_OBTAINED, "RAND_INF_WINDMILL_KEY_OBTAINED" },
|
||||
{ RAND_INF_KAK_SHOOTING_GALLERY_UNLOCKED, "RAND_INF_KAK_SHOOTING_GALLERY_UNLOCKED" },
|
||||
{ RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED, "RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED" },
|
||||
{ RAND_INF_DAMPES_HUT_UNLOCKED, "RAND_INF_DAMPES_HUT_UNLOCKED" },
|
||||
{ RAND_INF_DAMPES_HUT_KEY_OBTAINED, "RAND_INF_DAMPES_HUT_KEY_OBTAINED" },
|
||||
{ RAND_INF_TALONS_HOUSE_UNLOCKED, "RAND_INF_TALONS_HOUSE_UNLOCKED" },
|
||||
{ RAND_INF_TALONS_HOUSE_KEY_OBTAINED, "RAND_INF_TALONS_HOUSE_KEY_OBTAINED" },
|
||||
{ RAND_INF_STABLES_UNLOCKED, "RAND_INF_STABLES_UNLOCKED" },
|
||||
{ RAND_INF_STABLES_KEY_OBTAINED, "RAND_INF_STABLES_KEY_OBTAINED" },
|
||||
{ RAND_INF_BACK_TOWER_UNLOCKED, "RAND_INF_BACK_TOWER_UNLOCKED" },
|
||||
{ RAND_INF_BACK_TOWER_KEY_OBTAINED, "RAND_INF_BACK_TOWER_KEY_OBTAINED" },
|
||||
{ RAND_INF_HYLIA_LAB_UNLOCKED, "RAND_INF_HYLIA_LAB_UNLOCKED" },
|
||||
{ RAND_INF_HYLIA_LAB_KEY_OBTAINED, "RAND_INF_HYLIA_LAB_KEY_OBTAINED" },
|
||||
{ RAND_INF_FISHING_HOLE_UNLOCKED, "RAND_INF_FISHING_HOLE_UNLOCKED" },
|
||||
{ RAND_INF_FISHING_HOLE_KEY_OBTAINED, "RAND_INF_FISHING_HOLE_KEY_OBTAINED" },
|
||||
} },
|
||||
};
|
||||
|
||||
|
@ -289,6 +289,11 @@ typedef enum {
|
||||
// Opt: *EnFr
|
||||
// Vanilla condition: this->reward == GI_NONE
|
||||
VB_FROGS_GO_TO_IDLE,
|
||||
VB_CONSUME_SMALL_KEY,
|
||||
// Vanilla condition: gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] <= 0
|
||||
VB_NOT_HAVE_SMALL_KEY,
|
||||
// Vanilla condition: !Flags_GetSwitch(play, this->actor.params & 0x3F)
|
||||
VB_DOOR_BE_LOCKED,
|
||||
|
||||
/*** Play Cutscenes ***/
|
||||
|
||||
|
@ -1361,7 +1361,20 @@ void StaticData::HintTable_Init_Item() {
|
||||
// /*spanish*/un destructor de cerraduras final
|
||||
CustomMessage("a final lockpick", /*german*/"ein finaler Dietrich", /*french*/"un crochet à porte final")});
|
||||
// /*spanish*/una apertura portentosa final
|
||||
|
||||
hintTextTable[RHT_OVERWORLD_KEY] = HintText(CustomMessage("an Overworld Key", /*german*/"ein kleiner Schlüssel für Ganons Schloß", /*french*/"une petite clé du Château de Ganon"),
|
||||
// /*spanish*/una llave pequeña del Castillo de Ganon
|
||||
{
|
||||
CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé")
|
||||
// /*spanish*/una llave pequeña
|
||||
}, {
|
||||
CustomMessage("a final tool for unlocking", /*german*/"ein finales Werkzeug zur Entschlüsselung", /*french*/"un anti-porte final"),
|
||||
// /*spanish*/una clave de una entrada final
|
||||
CustomMessage("a final dungeon pass", /*german*/"ein finaler Dungeon-Pass", /*french*/"le rêve final d'un prisonnier"),
|
||||
// /*spanish*/un pase de una mazmorra final
|
||||
CustomMessage("a final lock remover", /*german*/"ein finaler Schlossentferner", /*french*/"un efface-serrure final"),
|
||||
// /*spanish*/un destructor de cerraduras final
|
||||
CustomMessage("a final lockpick", /*german*/"ein finaler Dietrich", /*french*/"un crochet à porte final")});
|
||||
// /*spanish*/una apertura portentosa final
|
||||
hintTextTable[RHT_FOREST_TEMPLE_KEY_RING] = HintText(CustomMessage("a Forest Temple Key Ring", /*german*/"ein Schlüsselbund des Waldtempels", /*french*/"un trousseau de clés du Temple de la Forêt"),
|
||||
// /*spanish*/un llavero del Templo del Bosque
|
||||
{
|
||||
|
@ -1162,6 +1162,32 @@ void GenerateItemPool() {
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->GetOption(RSK_LOCK_OVERWORLD_DOORS)) {
|
||||
AddItemToPool(ItemPool, RG_GUARD_HOUSE_KEY);
|
||||
AddItemToPool(ItemPool, RG_MARKET_BAZAAR_KEY);
|
||||
AddItemToPool(ItemPool, RG_MARKET_POTION_SHOP_KEY);
|
||||
AddItemToPool(ItemPool, RG_MASK_SHOP_KEY);
|
||||
AddItemToPool(ItemPool, RG_MARKET_SHOOTING_GALLERY_KEY);
|
||||
AddItemToPool(ItemPool, RG_BOMBCHU_BOWLING_KEY);
|
||||
AddItemToPool(ItemPool, RG_TREASURE_CHEST_GAME_BUILDING_KEY);
|
||||
AddItemToPool(ItemPool, RG_BOMBCHU_SHOP_KEY);
|
||||
AddItemToPool(ItemPool, RG_RICHARDS_HOUSE_KEY);
|
||||
AddItemToPool(ItemPool, RG_KAK_BAZAAR_KEY);
|
||||
AddItemToPool(ItemPool, RG_KAK_POTION_SHOP_KEY);
|
||||
AddItemToPool(ItemPool, RG_BOSS_HOUSE_KEY);
|
||||
AddItemToPool(ItemPool, RG_GRANNYS_POTION_SHOP_KEY);
|
||||
AddItemToPool(ItemPool, RG_SKULLTULA_HOUSE_KEY);
|
||||
AddItemToPool(ItemPool, RG_IMPAS_HOUSE_KEY);
|
||||
AddItemToPool(ItemPool, RG_WINDMILL_KEY);
|
||||
AddItemToPool(ItemPool, RG_KAK_SHOOTING_GALLERY_KEY);
|
||||
AddItemToPool(ItemPool, RG_DAMPES_HUT_KEY);
|
||||
AddItemToPool(ItemPool, RG_TALONS_HOUSE_KEY);
|
||||
AddItemToPool(ItemPool, RG_STABLES_KEY);
|
||||
AddItemToPool(ItemPool, RG_BACK_TOWER_KEY);
|
||||
AddItemToPool(ItemPool, RG_HYLIA_LAB_KEY);
|
||||
AddItemToPool(ItemPool, RG_FISHING_HOLE_KEY);
|
||||
}
|
||||
|
||||
//Shopsanity
|
||||
if (
|
||||
ctx->GetOption(RSK_SHOPSANITY).Is(RO_SHOPSANITY_OFF) ||
|
||||
|
@ -8,7 +8,7 @@ void RegionTable_Init_CastleTown() {
|
||||
//Exits
|
||||
Entrance(RR_HYRULE_FIELD, {[]{return logic->IsAdult || logic->AtDay;}}),
|
||||
Entrance(RR_THE_MARKET, {[]{return true;}}),
|
||||
Entrance(RR_MARKET_GUARD_HOUSE, {[]{return true;}}),
|
||||
Entrance(RR_MARKET_GUARD_HOUSE, {[]{return (logic->CanOpenOverworldDoor(RG_GUARD_HOUSE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_THE_MARKET] = Region("Market", "Market", {RA_THE_MARKET}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
@ -16,20 +16,20 @@ void RegionTable_Init_CastleTown() {
|
||||
Entrance(RR_MARKET_ENTRANCE, {[]{return true;}}),
|
||||
Entrance(RR_TOT_ENTRANCE, {[]{return true;}}),
|
||||
Entrance(RR_CASTLE_GROUNDS, {[]{return true;}}),
|
||||
Entrance(RR_MARKET_BAZAAR, {[]{return logic->IsChild && logic->AtDay;}}),
|
||||
Entrance(RR_MARKET_MASK_SHOP, {[]{return logic->IsChild && logic->AtDay;}}),
|
||||
Entrance(RR_MARKET_SHOOTING_GALLERY, {[]{return logic->IsChild && logic->AtDay;}}),
|
||||
Entrance(RR_MARKET_BOMBCHU_BOWLING, {[]{return logic->IsChild;}}),
|
||||
Entrance(RR_MARKET_TREASURE_CHEST_GAME, {[]{return logic->IsChild && logic->AtNight;}}),
|
||||
Entrance(RR_MARKET_POTION_SHOP, {[]{return logic->IsChild && logic->AtDay;}}),
|
||||
Entrance(RR_MARKET_BAZAAR, {[]{return logic->IsChild && logic->AtDay && (logic->CanOpenOverworldDoor(RG_MARKET_BAZAAR_KEY));}}),
|
||||
Entrance(RR_MARKET_MASK_SHOP, {[]{return logic->IsChild && logic->AtDay && (logic->CanOpenOverworldDoor(RG_MASK_SHOP_KEY));}}),
|
||||
Entrance(RR_MARKET_SHOOTING_GALLERY, {[]{return logic->IsChild && logic->AtDay && (logic->CanOpenOverworldDoor(RG_MARKET_SHOOTING_GALLERY_KEY));}}),
|
||||
Entrance(RR_MARKET_BOMBCHU_BOWLING, {[]{return logic->IsChild && (logic->CanOpenOverworldDoor(RG_BOMBCHU_BOWLING_KEY));}}),
|
||||
Entrance(RR_MARKET_TREASURE_CHEST_GAME, {[]{return logic->IsChild && logic->AtNight && (logic->CanOpenOverworldDoor(RG_TREASURE_CHEST_GAME_BUILDING_KEY));}}),
|
||||
Entrance(RR_MARKET_POTION_SHOP, {[]{return logic->IsChild && logic->AtDay && (logic->CanOpenOverworldDoor(RG_MARKET_POTION_SHOP_KEY));}}),
|
||||
Entrance(RR_MARKET_BACK_ALLEY, {[]{return logic->IsChild;}}),
|
||||
});
|
||||
|
||||
areaTable[RR_MARKET_BACK_ALLEY] = Region("Market Back Alley", "Market", {RA_THE_MARKET}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_MARKET, {[]{return true;}}),
|
||||
Entrance(RR_MARKET_BOMBCHU_SHOP, {[]{return logic->AtNight;}}),
|
||||
Entrance(RR_MARKET_DOG_LADY_HOUSE, {[]{return true;}}),
|
||||
Entrance(RR_MARKET_BOMBCHU_SHOP, {[]{return logic->AtNight && (logic->CanOpenOverworldDoor(RG_BOMBCHU_SHOP_KEY));}}),
|
||||
Entrance(RR_MARKET_DOG_LADY_HOUSE, {[]{return (logic->CanOpenOverworldDoor(RG_RICHARDS_HOUSE_KEY));}}),
|
||||
Entrance(RR_MARKET_MAN_IN_GREEN_HOUSE, {[]{return logic->AtNight;}}),
|
||||
});
|
||||
|
||||
@ -176,7 +176,7 @@ void RegionTable_Init_CastleTown() {
|
||||
LOCATION(RC_MARKET_GS_GUARD_HOUSE, logic->IsChild),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_MARKET_ENTRANCE, {[]{return true;}}),
|
||||
Entrance(RR_MARKET_ENTRANCE, {[]{return (logic->CanOpenOverworldDoor(RG_GUARD_HOUSE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_MARKET_BAZAAR] = Region("Market Bazaar", "Market Bazaar", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -210,7 +210,7 @@ void RegionTable_Init_CastleTown() {
|
||||
LOCATION(RC_MARKET_SHOOTING_GALLERY_REWARD, logic->IsChild && logic->HasItem(RG_CHILD_WALLET)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_MARKET, {[]{return true;}}),
|
||||
Entrance(RR_THE_MARKET, {[]{return (logic->CanOpenOverworldDoor(RG_MARKET_SHOOTING_GALLERY_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_MARKET_BOMBCHU_BOWLING] = Region("Market Bombchu Bowling", "Market Bombchu Bowling", {}, NO_DAY_NIGHT_CYCLE, {
|
||||
@ -222,7 +222,7 @@ void RegionTable_Init_CastleTown() {
|
||||
LOCATION(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, logic->CouldPlayBowling && logic->BombchusEnabled()),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_MARKET, {[]{return true;}}),
|
||||
Entrance(RR_THE_MARKET, {[]{return (logic->CanOpenOverworldDoor(RG_BOMBCHU_BOWLING_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_MARKET_POTION_SHOP] = Region("Market Potion Shop", "Market Potion Shop", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -256,7 +256,7 @@ void RegionTable_Init_CastleTown() {
|
||||
LOCATION(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, logic->HasItem(RG_CHILD_WALLET) && ((ctx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 5)) || (ctx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !ctx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)))),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_MARKET, {[]{return true;}}),
|
||||
Entrance(RR_THE_MARKET, {[]{return (logic->CanOpenOverworldDoor(RG_TREASURE_CHEST_GAME_BUILDING_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_MARKET_BOMBCHU_SHOP] = Region("Market Bombchu Shop", "Market Bombchu Shop", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -279,7 +279,7 @@ void RegionTable_Init_CastleTown() {
|
||||
LOCATION(RC_MARKET_LOST_DOG, logic->IsChild && logic->AtNight),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_MARKET_BACK_ALLEY, {[]{return true;}}),
|
||||
Entrance(RR_MARKET_BACK_ALLEY, {[]{return (logic->CanOpenOverworldDoor(RG_RICHARDS_HOUSE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_MARKET_MAN_IN_GREEN_HOUSE] = Region("Market Man in Green House", "Market Man in Green House", {}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
|
@ -135,7 +135,7 @@ void RegionTable_Init_HyruleField() {
|
||||
Entrance(RR_ZORAS_DOMAIN, {[]{return logic->IsChild && (logic->HasItem(RG_SILVER_SCALE) || logic->CanUse(RG_IRON_BOOTS));}}),
|
||||
Entrance(RR_LH_OWL_FLIGHT, {[]{return logic->IsChild;}}),
|
||||
Entrance(RR_LH_FISHING_ISLAND, {[]{return ((logic->IsChild || logic->WaterTempleClear) && logic->HasItem(RG_BRONZE_SCALE)) || (logic->IsAdult && (logic->CanUse(RG_SCARECROW) || CanPlantBean(RR_LAKE_HYLIA)));}}),
|
||||
Entrance(RR_LH_LAB, {[]{return true;}}),
|
||||
Entrance(RR_LH_LAB, {[]{return (logic->CanOpenOverworldDoor(RG_HYLIA_LAB_KEY));}}),
|
||||
Entrance(RR_WATER_TEMPLE_ENTRYWAY, {[]{return logic->CanUse(RG_HOOKSHOT) && ((logic->CanUse(RG_IRON_BOOTS) || (ctx->GetTrickOption(RT_LH_WATER_HOOKSHOT) && logic->HasItem(RG_GOLDEN_SCALE))) || (logic->IsAdult && logic->CanUse(RG_LONGSHOT) && logic->HasItem(RG_GOLDEN_SCALE)));}}),
|
||||
Entrance(RR_LH_GROTTO, {[]{return true;}}),
|
||||
});
|
||||
@ -143,7 +143,7 @@ void RegionTable_Init_HyruleField() {
|
||||
areaTable[RR_LH_FISHING_ISLAND] = Region("LH Fishing Island", "Lake Hylia", {RA_LAKE_HYLIA}, DAY_NIGHT_CYCLE, {}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_LAKE_HYLIA, {[]{return logic->HasItem(RG_BRONZE_SCALE);}}),
|
||||
Entrance(RR_LH_FISHING_HOLE, {[]{return true;}}),
|
||||
Entrance(RR_LH_FISHING_HOLE, {[]{return (logic->CanOpenOverworldDoor(RG_FISHING_HOLE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_LH_OWL_FLIGHT] = Region("LH Owl Flight", "Lake Hylia", {RA_LAKE_HYLIA}, NO_DAY_NIGHT_CYCLE, {}, {}, {
|
||||
@ -158,7 +158,7 @@ void RegionTable_Init_HyruleField() {
|
||||
LOCATION(RC_LH_GS_LAB_CRATE, logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_LAKE_HYLIA, {[]{return true;}}),
|
||||
Entrance(RR_LAKE_HYLIA, {[]{return (logic->CanOpenOverworldDoor(RG_HYLIA_LAB_KEY));}}),
|
||||
});
|
||||
|
||||
// TODO: should some of these helpers be done via events instead?
|
||||
@ -203,7 +203,7 @@ void RegionTable_Init_HyruleField() {
|
||||
LOCATION(RC_FISHING_POLE_HINT, true),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_LH_FISHING_ISLAND, {[]{return true;}}),
|
||||
Entrance(RR_LH_FISHING_ISLAND, {[]{return (logic->CanOpenOverworldDoor(RG_FISHING_HOLE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_LH_GROTTO] = Region("LH Grotto", "LH Grotto", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -231,9 +231,9 @@ void RegionTable_Init_HyruleField() {
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_HYRULE_FIELD, {[]{return true;}}),
|
||||
Entrance(RR_LLR_TALONS_HOUSE, {[]{return true;}}),
|
||||
Entrance(RR_LLR_STABLES, {[]{return true;}}),
|
||||
Entrance(RR_LLR_TOWER, {[]{return true;}}),
|
||||
Entrance(RR_LLR_TALONS_HOUSE, {[]{return (logic->CanOpenOverworldDoor(RG_TALONS_HOUSE_KEY));}}),
|
||||
Entrance(RR_LLR_STABLES, {[]{return (logic->CanOpenOverworldDoor(RG_STABLES_KEY));}}),
|
||||
Entrance(RR_LLR_TOWER, {[]{return (logic->CanOpenOverworldDoor(RG_BACK_TOWER_KEY));}}),
|
||||
Entrance(RR_LLR_GROTTO, {[]{return logic->IsChild;}}),
|
||||
});
|
||||
|
||||
@ -242,7 +242,7 @@ void RegionTable_Init_HyruleField() {
|
||||
LOCATION(RC_LLR_TALONS_CHICKENS, logic->HasItem(RG_CHILD_WALLET) && logic->IsChild && logic->AtDay && logic->HasItem(RG_ZELDAS_LETTER)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_LON_LON_RANCH, {[]{return true;}}),
|
||||
Entrance(RR_LON_LON_RANCH, {[]{return (logic->CanOpenOverworldDoor(RG_TALONS_HOUSE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_LLR_STABLES] = Region("LLR Stables", "LLR Stables", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -251,7 +251,7 @@ void RegionTable_Init_HyruleField() {
|
||||
LOCATION(RC_LLR_STABLES_RIGHT_COW, logic->CanUse(RG_EPONAS_SONG)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_LON_LON_RANCH, {[]{return true;}}),
|
||||
Entrance(RR_LON_LON_RANCH, {[]{return (logic->CanOpenOverworldDoor(RG_STABLES_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_LLR_TOWER] = Region("LLR Tower", "LLR Tower", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -261,7 +261,7 @@ void RegionTable_Init_HyruleField() {
|
||||
LOCATION(RC_LLR_TOWER_RIGHT_COW, logic->CanUse(RG_EPONAS_SONG)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_LON_LON_RANCH, {[]{return true;}}),
|
||||
Entrance(RR_LON_LON_RANCH, {[]{return (logic->CanOpenOverworldDoor(RG_BACK_TOWER_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_LLR_GROTTO] = Region("LLR Grotto", "LLR Grotto", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
|
@ -22,14 +22,14 @@ void RegionTable_Init_Kakariko() {
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_HYRULE_FIELD, {[]{return true;}}),
|
||||
Entrance(RR_KAK_CARPENTER_BOSS_HOUSE, {[]{return true;}}),
|
||||
Entrance(RR_KAK_HOUSE_OF_SKULLTULA, {[]{return true;}}),
|
||||
Entrance(RR_KAK_IMPAS_HOUSE, {[]{return true;}}),
|
||||
Entrance(RR_KAK_WINDMILL, {[]{return true;}}),
|
||||
Entrance(RR_KAK_BAZAAR, {[]{return logic->IsAdult && logic->AtDay;}}),
|
||||
Entrance(RR_KAK_SHOOTING_GALLERY, {[]{return logic->IsAdult && logic->AtDay;}}),
|
||||
Entrance(RR_KAK_CARPENTER_BOSS_HOUSE, {[]{return (logic->CanOpenOverworldDoor(RG_BOSS_HOUSE_KEY));}}),
|
||||
Entrance(RR_KAK_HOUSE_OF_SKULLTULA, {[]{return (logic->CanOpenOverworldDoor(RG_SKULLTULA_HOUSE_KEY));}}),
|
||||
Entrance(RR_KAK_IMPAS_HOUSE, {[]{return (logic->CanOpenOverworldDoor(RG_IMPAS_HOUSE_KEY));}}),
|
||||
Entrance(RR_KAK_WINDMILL, {[]{return (logic->CanOpenOverworldDoor(RG_WINDMILL_KEY));}}),
|
||||
Entrance(RR_KAK_BAZAAR, {[]{return logic->IsAdult && logic->AtDay && (logic->CanOpenOverworldDoor(RG_KAK_BAZAAR_KEY));}}),
|
||||
Entrance(RR_KAK_SHOOTING_GALLERY, {[]{return logic->IsAdult && logic->AtDay && (logic->CanOpenOverworldDoor(RG_KAK_SHOOTING_GALLERY_KEY));}}),
|
||||
Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, {[]{return logic->DrainWell && (logic->IsChild || ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).IsNot(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF));}}),
|
||||
Entrance(RR_KAK_POTION_SHOP_FRONT, {[]{return logic->AtDay || logic->IsChild;}}),
|
||||
Entrance(RR_KAK_POTION_SHOP_FRONT, {[]{return (logic->AtDay || logic->IsChild) && (logic->CanOpenOverworldDoor(RG_KAK_POTION_SHOP_KEY));}}),
|
||||
Entrance(RR_KAK_REDEAD_GROTTO, {[]{return logic->CanOpenBombGrotto();}}),
|
||||
Entrance(RR_KAK_IMPAS_LEDGE, {[]{return (logic->IsChild && logic->AtDay) || logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && ctx->GetTrickOption(RT_VISIBLE_COLLISION));}}),
|
||||
Entrance(RR_KAK_ROOFTOP, {[]{return logic->CanUse(RG_HOOKSHOT) || (ctx->GetTrickOption(RT_KAK_MAN_ON_ROOF) && (logic->IsAdult || logic->AtDay || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOMBCHU_5) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_LONGSHOT)));}}),
|
||||
@ -65,8 +65,8 @@ void RegionTable_Init_Kakariko() {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return true;}}),
|
||||
Entrance(RR_KAK_OPEN_GROTTO, {[]{return true;}}),
|
||||
Entrance(RR_KAK_ODD_POTION_BUILDING, {[]{return logic->IsAdult;}}),
|
||||
Entrance(RR_KAK_POTION_SHOP_BACK, {[]{return logic->IsAdult && logic->AtDay;}}),
|
||||
Entrance(RR_KAK_ODD_POTION_BUILDING, {[]{return logic->IsAdult && (logic->CanOpenOverworldDoor(RG_GRANNYS_POTION_SHOP_KEY));}}),
|
||||
Entrance(RR_KAK_POTION_SHOP_BACK, {[]{return logic->IsAdult && logic->AtDay && (logic->CanOpenOverworldDoor(RG_KAK_POTION_SHOP_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_CARPENTER_BOSS_HOUSE] = Region("Kak Carpenter Boss House", "Kak Carpenter Boss House", {}, NO_DAY_NIGHT_CYCLE, {
|
||||
@ -74,7 +74,7 @@ void RegionTable_Init_Kakariko() {
|
||||
EventAccess(&logic->WakeUpAdultTalon, {[]{return logic->IsAdult && logic->CanUse(RG_POCKET_EGG);}}),
|
||||
}, {}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return true;}}),
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return (logic->CanOpenOverworldDoor(RG_BOSS_HOUSE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_HOUSE_OF_SKULLTULA] = Region("Kak House of Skulltula", "Kak House of Skulltula", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -87,7 +87,7 @@ void RegionTable_Init_Kakariko() {
|
||||
LOCATION(RC_KAK_100_GOLD_SKULLTULA_REWARD, logic->GetGSCount() >= 100)
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return true;}}),
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return (logic->CanOpenOverworldDoor(RG_SKULLTULA_HOUSE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_IMPAS_HOUSE] = Region("Kak Impas House", "Kak Impas House", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -95,7 +95,7 @@ void RegionTable_Init_Kakariko() {
|
||||
LOCATION(RC_KAK_IMPAS_HOUSE_COW, logic->CanUse(RG_EPONAS_SONG))
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return true;}}),
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return (logic->CanOpenOverworldDoor(RG_IMPAS_HOUSE_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_IMPAS_HOUSE_BACK] = Region("Kak Impas House Back", "Kak Impas House", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -117,7 +117,7 @@ void RegionTable_Init_Kakariko() {
|
||||
LOCATION(RC_SONG_FROM_WINDMILL, logic->IsAdult && logic->HasItem(RG_FAIRY_OCARINA)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return true;}}),
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return (logic->CanOpenOverworldDoor(RG_WINDMILL_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_BAZAAR] = Region("Kak Bazaar", "Kak Bazaar", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -140,7 +140,7 @@ void RegionTable_Init_Kakariko() {
|
||||
LOCATION(RC_KAK_SHOOTING_GALLERY_REWARD, logic->HasItem(RG_CHILD_WALLET) && logic->IsAdult && logic->CanUse(RG_FAIRY_BOW)),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return true;}}),
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return (logic->CanOpenOverworldDoor(RG_KAK_SHOOTING_GALLERY_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_POTION_SHOP_FRONT] = Region("Kak Potion Shop Front", "Kak Potion Shop", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -174,7 +174,7 @@ void RegionTable_Init_Kakariko() {
|
||||
},
|
||||
{
|
||||
// Exits
|
||||
Entrance(RR_KAK_BACKYARD, { [] { return true; } }),
|
||||
Entrance(RR_KAK_BACKYARD, { [] { return (logic->CanOpenOverworldDoor(RG_GRANNYS_POTION_SHOP_KEY)); } }),
|
||||
});
|
||||
|
||||
areaTable[RR_KAK_REDEAD_GROTTO] = Region("Kak Redead Grotto", "Kak Redead Grotto", {}, NO_DAY_NIGHT_CYCLE, {}, {
|
||||
@ -214,7 +214,7 @@ void RegionTable_Init_Kakariko() {
|
||||
Entrance(RR_GRAVEYARD_COMPOSERS_GRAVE, {[]{return logic->CanUse(RG_ZELDAS_LULLABY);}}),
|
||||
Entrance(RR_GRAVEYARD_HEART_PIECE_GRAVE, {[]{return logic->IsAdult || logic->AtNight;}}),
|
||||
Entrance(RR_GRAVEYARD_DAMPES_GRAVE, {[]{return logic->IsAdult;}}),
|
||||
Entrance(RR_GRAVEYARD_DAMPES_HOUSE, {[]{return logic->IsAdult /*|| logic->AtDampeTime*/;}}), //TODO: This needs to be handled in ToD rework
|
||||
Entrance(RR_GRAVEYARD_DAMPES_HOUSE, {[]{return logic->IsAdult && (logic->CanOpenOverworldDoor(RG_DAMPES_HUT_KEY)) /*|| logic->AtDampeTime*/;}}), //TODO: This needs to be handled in ToD rework
|
||||
Entrance(RR_KAKARIKO_VILLAGE, {[]{return true;}}),
|
||||
Entrance(RR_GRAVEYARD_WARP_PAD_REGION, {[]{return false;}}),
|
||||
});
|
||||
@ -264,7 +264,7 @@ void RegionTable_Init_Kakariko() {
|
||||
LOCATION(RC_DAMPE_HINT, logic->IsAdult),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_GRAVEYARD, {[]{return true;}}),
|
||||
Entrance(RR_THE_GRAVEYARD, {[]{return (logic->CanOpenOverworldDoor(RG_DAMPES_HUT_KEY));}}),
|
||||
});
|
||||
|
||||
areaTable[RR_GRAVEYARD_WARP_PAD_REGION] = Region("Graveyard Warp Pad Region", "Graveyard", {RA_THE_GRAVEYARD}, NO_DAY_NIGHT_CYCLE, {
|
||||
|
@ -592,4 +592,19 @@ extern "C" void Randomizer_DrawSkeletonKey(PlayState* play, GetItemEntry* getIte
|
||||
gSPGrayscale(POLY_OPA_DISP++, false);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void Randomizer_DrawOverworldKey(PlayState* play, GetItemEntry* getItemEntry) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, 255);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
|
||||
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gHouseKeyDL);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ void Randomizer_DrawBronzeScale(PlayState* play, GetItemEntry* getItemEntry);
|
||||
void Randomizer_DrawFishingPoleGI(PlayState* play, GetItemEntry* getItemEntry);
|
||||
void Randomizer_DrawSkeletonKey(PlayState* play, GetItemEntry* getItemEntry);
|
||||
void Randomizer_DrawMysteryItem(PlayState* play, GetItemEntry getItemEntry);
|
||||
void Randomizer_DrawOverworldKey(PlayState* play, GetItemEntry* getItemEntry);
|
||||
|
||||
#define GET_ITEM_MYSTERY \
|
||||
{ ITEM_NONE_FE, 0, 0, 0, 0, 0, 0, ITEM_NONE_FE, 0, false, ITEM_FROM_NPC, ITEM_CATEGORY_JUNK, NULL, MOD_RANDOMIZER, (CustomDrawFunc)Randomizer_DrawMysteryItem }
|
||||
|
@ -47,6 +47,7 @@ extern "C" {
|
||||
#include "src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.h"
|
||||
#include "src/overlays/actors/ovl_En_Xc/z_en_xc.h"
|
||||
#include "src/overlays/actors/ovl_Fishing/z_fishing.h"
|
||||
#include "src/overlays/actors/ovl_En_Door/z_en_door.h"
|
||||
#include "adult_trade_shuffle.h"
|
||||
#include "draw.h"
|
||||
|
||||
@ -1229,6 +1230,14 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VB_CONSUME_SMALL_KEY: {
|
||||
EnDoor* enDoor = va_arg(args, EnDoor*);
|
||||
if (enDoor->randomizerInf >= RAND_INF_GUARD_HOUSE_UNLOCKED && enDoor->randomizerInf <= RAND_INF_FISHING_HOLE_KEY_OBTAINED) {
|
||||
Flags_SetRandomizerInf(enDoor->randomizerInf);
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VB_GERUDOS_BE_FRIENDLY: {
|
||||
*should = CHECK_QUEST_ITEM(QUEST_GERUDO_CARD);
|
||||
break;
|
||||
@ -1394,6 +1403,20 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VB_NOT_HAVE_SMALL_KEY: {
|
||||
EnDoor* enDoor = va_arg(args, EnDoor*);
|
||||
if (enDoor->randomizerInf >= RAND_INF_GUARD_HOUSE_UNLOCKED && enDoor->randomizerInf <= RAND_INF_FISHING_HOLE_KEY_OBTAINED) {
|
||||
*should = !Flags_GetRandomizerInf((RandomizerInf)(enDoor->randomizerInf + 1));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VB_DOOR_BE_LOCKED: {
|
||||
EnDoor* enDoor = va_arg(args, EnDoor*);
|
||||
if (enDoor->randomizerInf >= RAND_INF_GUARD_HOUSE_UNLOCKED && enDoor->randomizerInf <= RAND_INF_FISHING_HOLE_KEY_OBTAINED) {
|
||||
*should = !Flags_GetRandomizerInf(enDoor->randomizerInf);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VB_TRADE_TIMER_ODD_MUSHROOM:
|
||||
case VB_TRADE_TIMER_EYEDROPS:
|
||||
case VB_TRADE_TIMER_FROG:
|
||||
@ -1591,6 +1614,74 @@ void ObjComb_RandomizerWait(ObjComb* objComb, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
using SceneDoorParamsPair = std::pair<int, int>;
|
||||
std::map<SceneDoorParamsPair, RandomizerInf> lookupTable = {
|
||||
{{ SCENE_MARKET_ENTRANCE_DAY, 447 }, RAND_INF_GUARD_HOUSE_UNLOCKED },
|
||||
{{ SCENE_MARKET_ENTRANCE_NIGHT, 447 }, RAND_INF_GUARD_HOUSE_UNLOCKED },
|
||||
{{ SCENE_MARKET_ENTRANCE_RUINS, 447 }, RAND_INF_GUARD_HOUSE_UNLOCKED },
|
||||
{{ SCENE_MARKET_GUARD_HOUSE, 447 }, RAND_INF_GUARD_HOUSE_UNLOCKED },
|
||||
{{ SCENE_MARKET_DAY, 4543 }, RAND_INF_MARKET_BAZAAR_UNLOCKED },
|
||||
{{ SCENE_MARKET_NIGHT, 4753 }, RAND_INF_MARKET_BAZAAR_UNLOCKED },
|
||||
{{ SCENE_MARKET_DAY, 1471 }, RAND_INF_MARKET_POTION_SHOP_UNLOCKED },
|
||||
{{ SCENE_MARKET_NIGHT, 1678 }, RAND_INF_MARKET_POTION_SHOP_UNLOCKED },
|
||||
{{ SCENE_MARKET_DAY, 3519 }, RAND_INF_MASK_SHOP_UNLOCKED },
|
||||
{{ SCENE_MARKET_NIGHT, 3728 }, RAND_INF_MASK_SHOP_UNLOCKED },
|
||||
{{ SCENE_MARKET_DAY, 2495 }, RAND_INF_MARKET_SHOOTING_GALLERY_UNLOCKED },
|
||||
{{ SCENE_MARKET_NIGHT, 2703 }, RAND_INF_MARKET_SHOOTING_GALLERY_UNLOCKED },
|
||||
{{ SCENE_SHOOTING_GALLERY, 447 }, RAND_INF_MARKET_SHOOTING_GALLERY_UNLOCKED },
|
||||
{{ SCENE_MARKET_DAY, 5567 }, RAND_INF_BOMBCHU_BOWLING_UNLOCKED },
|
||||
{{ SCENE_MARKET_NIGHT, 5567 }, RAND_INF_BOMBCHU_BOWLING_UNLOCKED },
|
||||
{{ SCENE_BOMBCHU_BOWLING_ALLEY, 447 }, RAND_INF_BOMBCHU_BOWLING_UNLOCKED },
|
||||
{{ SCENE_MARKET_DAY, 653 }, RAND_INF_TREASURE_CHEST_GAME_BUILDING_UNLOCKED },
|
||||
{{ SCENE_MARKET_NIGHT, 447 }, RAND_INF_TREASURE_CHEST_GAME_BUILDING_UNLOCKED },
|
||||
{{ SCENE_TREASURE_BOX_SHOP, 6591 }, RAND_INF_TREASURE_CHEST_GAME_BUILDING_UNLOCKED },
|
||||
{{ SCENE_BACK_ALLEY_DAY, 2689 }, RAND_INF_BOMBCHU_SHOP_UNLOCKED },
|
||||
{{ SCENE_BACK_ALLEY_NIGHT, 2495 }, RAND_INF_BOMBCHU_SHOP_UNLOCKED },
|
||||
{{ SCENE_BACK_ALLEY_DAY, 447 }, RAND_INF_RICHARDS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_BACK_ALLEY_NIGHT, 447 }, RAND_INF_RICHARDS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_DOG_LADY_HOUSE, 447 }, RAND_INF_RICHARDS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 6801 }, RAND_INF_KAK_BAZAAR_UNLOCKED }, // Adult Night
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 6591 }, RAND_INF_KAK_BAZAAR_UNLOCKED }, // Adult Day
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 6813 }, RAND_INF_KAK_BAZAAR_UNLOCKED }, // Child Day
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 6814 }, RAND_INF_KAK_BAZAAR_UNLOCKED }, // Child Night
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 8871 }, RAND_INF_KAK_POTION_SHOP_UNLOCKED }, // Child Day/Night Rear
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 8846 }, RAND_INF_KAK_POTION_SHOP_UNLOCKED }, // Adult Night Rear
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 8639 }, RAND_INF_KAK_POTION_SHOP_UNLOCKED }, // Adult Day Rear
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 7822 }, RAND_INF_KAK_POTION_SHOP_UNLOCKED }, // Adult Night
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 7615 }, RAND_INF_KAK_POTION_SHOP_UNLOCKED }, // Child Day/Night and Adult Day
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 2495 }, RAND_INF_BOSS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_KAKARIKO_CENTER_GUEST_HOUSE, 447 }, RAND_INF_BOSS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 3750 }, RAND_INF_GRANNYS_POTION_SHOP_UNLOCKED }, // Child
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 3519 }, RAND_INF_GRANNYS_POTION_SHOP_UNLOCKED }, // Adult
|
||||
{{ SCENE_POTION_SHOP_GRANNY, 447 }, RAND_INF_GRANNYS_POTION_SHOP_UNLOCKED },
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 5567 }, RAND_INF_SKULLTULA_HOUSE_UNLOCKED },
|
||||
{{ SCENE_HOUSE_OF_SKULLTULA, 447 }, RAND_INF_SKULLTULA_HOUSE_UNLOCKED },
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 1471 }, RAND_INF_IMPAS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_IMPAS_HOUSE, 447 }, RAND_INF_IMPAS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 447 }, RAND_INF_WINDMILL_UNLOCKED },
|
||||
{{ SCENE_WINDMILL_AND_DAMPES_GRAVE, 2495 }, RAND_INF_WINDMILL_UNLOCKED },
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 4543 }, RAND_INF_KAK_SHOOTING_GALLERY_UNLOCKED }, // Day
|
||||
{{ SCENE_KAKARIKO_VILLAGE, 4751 }, RAND_INF_KAK_SHOOTING_GALLERY_UNLOCKED }, // Night
|
||||
{{ SCENE_SHOOTING_GALLERY, 447 }, RAND_INF_KAK_SHOOTING_GALLERY_UNLOCKED },
|
||||
{{ SCENE_GRAVEYARD, 645 }, RAND_INF_DAMPES_HUT_UNLOCKED }, // Child Day
|
||||
{{ SCENE_GRAVEYARD, 390 }, RAND_INF_DAMPES_HUT_UNLOCKED }, // Child Evening
|
||||
{{ SCENE_GRAVEYARD, 646 }, RAND_INF_DAMPES_HUT_UNLOCKED }, // Child Night (After Dampes Tour)
|
||||
{{ SCENE_GRAVEYARD, 447 }, RAND_INF_DAMPES_HUT_UNLOCKED }, // Adult
|
||||
{{ SCENE_GRAVEKEEPERS_HUT, 447 }, RAND_INF_DAMPES_HUT_UNLOCKED },
|
||||
{{ SCENE_LON_LON_RANCH, 2495 }, RAND_INF_TALONS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_LON_LON_RANCH, 2473 }, RAND_INF_TALONS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_LON_LON_RANCH, 2729 }, RAND_INF_TALONS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_LON_LON_BUILDINGS, 1471 }, RAND_INF_TALONS_HOUSE_UNLOCKED },
|
||||
{{ SCENE_LON_LON_RANCH, 1471 }, RAND_INF_STABLES_UNLOCKED },
|
||||
{{ SCENE_STABLE, 447 }, RAND_INF_STABLES_UNLOCKED },
|
||||
{{ SCENE_LON_LON_RANCH, 447 }, RAND_INF_BACK_TOWER_UNLOCKED },
|
||||
{{ SCENE_LON_LON_BUILDINGS, 447 }, RAND_INF_BACK_TOWER_UNLOCKED },
|
||||
{{ SCENE_LAKE_HYLIA, 447 }, RAND_INF_HYLIA_LAB_UNLOCKED },
|
||||
{{ SCENE_LAKESIDE_LABORATORY, 447 }, RAND_INF_HYLIA_LAB_UNLOCKED },
|
||||
{{ SCENE_LAKE_HYLIA, 1471 }, RAND_INF_FISHING_HOLE_UNLOCKED },
|
||||
{{ SCENE_FISHING_POND, 447 }, RAND_INF_FISHING_HOLE_UNLOCKED },
|
||||
};
|
||||
|
||||
void RandomizerOnActorInitHandler(void* actorRef) {
|
||||
Actor* actor = static_cast<Actor*>(actorRef);
|
||||
|
||||
@ -1603,6 +1694,30 @@ void RandomizerOnActorInitHandler(void* actorRef) {
|
||||
}
|
||||
}
|
||||
|
||||
if (actor->id == ACTOR_EN_DOOR) {
|
||||
EnDoor* enDoor = static_cast<EnDoor*>(actorRef);
|
||||
enDoor->randomizerInf = RAND_INF_MAX;
|
||||
|
||||
auto it = lookupTable.find({gPlayState->sceneNum, actor->params});
|
||||
if (it != lookupTable.end() && RAND_GET_OPTION(RSK_LOCK_OVERWORLD_DOORS)) {
|
||||
if (it->second == RAND_INF_MARKET_SHOOTING_GALLERY_UNLOCKED && gSaveContext.entranceIndex == 0x3B) {
|
||||
// Adult shooting gallery uses same scene and door params as child, so we manually handle it
|
||||
enDoor->randomizerInf = RAND_INF_KAK_SHOOTING_GALLERY_UNLOCKED;
|
||||
} else {
|
||||
enDoor->randomizerInf = it->second;
|
||||
}
|
||||
if (!Flags_GetRandomizerInf(enDoor->randomizerInf)) {
|
||||
// We don't want to override checkable doors, we still want those to not be openable even if they have a key
|
||||
if (((actor->params >> 7) & 7) != DOOR_CHECKABLE) {
|
||||
actor->params = (actor->params & ~0x380) | (DOOR_LOCKED << 7);
|
||||
enDoor->actionFunc = EnDoor_SetupType;
|
||||
} else {
|
||||
enDoor->lockTimer = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (actor->id == ACTOR_EN_DNS) {
|
||||
EnDns* enDns = static_cast<EnDns*>(actorRef);
|
||||
s16 respawnData = gSaveContext.respawn[RESPAWN_MODE_RETURN].data & ((1 << 8) - 1);
|
||||
|
@ -159,6 +159,52 @@ void Rando::StaticData::InitItemTable() {
|
||||
itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, Text{ "Ganon's Castle Small Key", "Petite Clé du Château de Ganon", "Kleiner Schlüssel für Ganons Schloß" }, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_GANONS_CASTLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey);
|
||||
itemTable[RG_TREASURE_GAME_SMALL_KEY] = Item(RG_TREASURE_GAME_SMALL_KEY, Text{ "Chest Game Small Key", "Petite Clé du jeu la Chasse-aux-Trésors", "Kleiner Schlüssel für das Truhenspiel" }, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TREASURE_GAME_KEYS, RHT_TREASURE_GAME_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE);
|
||||
itemTable[RG_GUARD_HOUSE_KEY] = Item(RG_GUARD_HOUSE_KEY, Text{ "Guard House Key", "", "Schlüssel für das Haus der Wachen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GUARD_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_GUARD_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_GUARD_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_MARKET_BAZAAR_KEY] = Item(RG_MARKET_BAZAAR_KEY, Text{ "Market Bazaar Key", "", "Schlüssel für den Basar des Marktes" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_BAZAAR_KEY, RHT_OVERWORLD_KEY, RG_MARKET_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_MARKET_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_MARKET_POTION_SHOP_KEY] = Item(RG_MARKET_POTION_SHOP_KEY, Text{ "Market Potion Shop Key", "", "Schlüssel für den Magie-Laden des Marktes" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_POTION_SHOP_KEY, RHT_OVERWORLD_KEY, RG_MARKET_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_MARKET_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_MASK_SHOP_KEY] = Item(RG_MASK_SHOP_KEY, Text{ "Mask Shop Key", "", "Schlüssel für den Maskenladen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MASK_SHOP_KEY, RHT_OVERWORLD_KEY, RG_MASK_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_MASK_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_MARKET_SHOOTING_GALLERY_KEY] = Item(RG_MARKET_SHOOTING_GALLERY_KEY, Text{ "Market Shooting Gallery Key", "", "Schlüssel für die Schießbude des Marktes" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_MARKET_SHOOTING_GALLERY_KEY, RHT_OVERWORLD_KEY, RG_MARKET_SHOOTING_GALLERY_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_MARKET_SHOOTING_GALLERY_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_BOMBCHU_BOWLING_KEY] = Item(RG_BOMBCHU_BOWLING_KEY, Text{ "Bombchu Bowling Alley Key", "", "Schlüssel für die Minenbowlingbahn" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_BOWLING_KEY, RHT_OVERWORLD_KEY, RG_BOMBCHU_BOWLING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_BOMBCHU_BOWLING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_TREASURE_CHEST_GAME_BUILDING_KEY] = Item(RG_TREASURE_CHEST_GAME_BUILDING_KEY, Text{ "Treasure Chest Game Building Key", "", "Schlüssel für das Haus des Schatzkisten-Pokers" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TREASURE_CHEST_GAME_BUILDING_KEY,RHT_OVERWORLD_KEY, RG_TREASURE_CHEST_GAME_BUILDING_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_TREASURE_CHEST_GAME_BUILDING_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_BOMBCHU_SHOP_KEY] = Item(RG_BOMBCHU_SHOP_KEY, Text{ "Bombchu Shop Key", "", "Schlüssel für den Krabbelminenladen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOMBCHU_SHOP_KEY, RHT_OVERWORLD_KEY, RG_BOMBCHU_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_BOMBCHU_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_RICHARDS_HOUSE_KEY] = Item(RG_RICHARDS_HOUSE_KEY, Text{ "Richard's House Key", "", "Schlüssel für das Haus von Richard" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_RICHARDS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_RICHARDS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_RICHARDS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_KAK_BAZAAR_KEY] = Item(RG_KAK_BAZAAR_KEY, Text{ "Kakariko Bazaar Key", "", "Schlüssel für den Basar von Kakariko" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_BAZAAR_KEY, RHT_OVERWORLD_KEY, RG_KAK_BAZAAR_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_KAK_BAZAAR_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_KAK_POTION_SHOP_KEY] = Item(RG_KAK_POTION_SHOP_KEY, Text{ "Kakariko Potion Shop Key", "", "Schlüssel für den Magie-Laden von Kakariko" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_POTION_SHOP_KEY, RHT_OVERWORLD_KEY, RG_KAK_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_KAK_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_BOSS_HOUSE_KEY] = Item(RG_BOSS_HOUSE_KEY, Text{ "Boss's House Key", "", "Schlüssel für das Haus des Chefs" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BOSS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_BOSS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_BOSS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_GRANNYS_POTION_SHOP_KEY] = Item(RG_GRANNYS_POTION_SHOP_KEY, Text{ "Granny's Potion Shop Key", "", "Schlüssel für Asas Hexenladen" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_GRANNYS_POTION_SHOP_KEY, RHT_OVERWORLD_KEY, RG_GRANNYS_POTION_SHOP_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_GRANNYS_POTION_SHOP_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_SKULLTULA_HOUSE_KEY] = Item(RG_SKULLTULA_HOUSE_KEY, Text{ "Skulltula House Key", "", "Schlüssel für das Skulltula-Haus" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_SKULLTULA_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_SKULLTULA_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_SKULLTULA_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_IMPAS_HOUSE_KEY] = Item(RG_IMPAS_HOUSE_KEY, Text{ "Impa's House Key", "", "Schlüssel für das Haus von Impa" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_IMPAS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_IMPAS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_IMPAS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_WINDMILL_KEY] = Item(RG_WINDMILL_KEY, Text{ "Windmill Key", "", "Schlüssel für die Windmühle" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_WINDMILL_KEY, RHT_OVERWORLD_KEY, RG_WINDMILL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_WINDMILL_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_KAK_SHOOTING_GALLERY_KEY] = Item(RG_KAK_SHOOTING_GALLERY_KEY, Text{ "Kakariko Shooting Gallery Key", "", "Schlüssel für die Schießbude von Kakariko" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_KAK_SHOOTING_GALLERY_KEY, RHT_OVERWORLD_KEY, RG_KAK_SHOOTING_GALLERY_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_KAK_SHOOTING_GALLERY_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_DAMPES_HUT_KEY] = Item(RG_DAMPES_HUT_KEY, Text{ "Dampe's Hut Key", "", "Schlüssel für die Hütte von Boris" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_DAMPES_HUT_KEY, RHT_OVERWORLD_KEY, RG_DAMPES_HUT_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_DAMPES_HUT_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_TALONS_HOUSE_KEY] = Item(RG_TALONS_HOUSE_KEY, Text{ "Talon's House Key", "", "Schlüssel für das Haus von Talon" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_TALONS_HOUSE_KEY, RHT_OVERWORLD_KEY, RG_TALONS_HOUSE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_TALONS_HOUSE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_STABLES_KEY] = Item(RG_STABLES_KEY, Text{ "Stables Key", "", "Schlüssel für die Ställe" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_STABLES_KEY, RHT_OVERWORLD_KEY, RG_STABLES_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_STABLES_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_BACK_TOWER_KEY] = Item(RG_BACK_TOWER_KEY, Text{ "Back Tower Key", "", "Schlüssel für den hinteren Turm" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_BACK_TOWER_KEY, RHT_OVERWORLD_KEY, RG_BACK_TOWER_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_BACK_TOWER_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_HYLIA_LAB_KEY] = Item(RG_HYLIA_LAB_KEY, Text{ "Hylia Laboratory Key", "", "Schlüssel für das Hylia-Labor" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_HYLIA_LAB_KEY, RHT_OVERWORLD_KEY, RG_HYLIA_LAB_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_HYLIA_LAB_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
itemTable[RG_FISHING_HOLE_KEY] = Item(RG_FISHING_HOLE_KEY, Text{ "Fishing Hole Key", "", "Schlüssel für den Fischweiher" }, ITEMTYPE_ITEM, GI_DOOR_KEY, true, LOGIC_FISHING_HOLE_KEY, RHT_OVERWORLD_KEY, RG_FISHING_HOLE_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_FISHING_HOLE_KEY].SetCustomDrawFunc(Randomizer_DrawOverworldKey);
|
||||
// Key Rings
|
||||
itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, Text{ "Forest Temple Key Ring", "Trousseau du Temple de la Forêt", "Schlüsselbund für den Waldtempel" }, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||
itemTable[RG_FOREST_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing);
|
||||
|
@ -137,6 +137,30 @@ namespace Rando {
|
||||
case RG_TWINROVA_SOUL:
|
||||
case RG_GANON_SOUL:
|
||||
case RG_SKELETON_KEY:
|
||||
// Overworld Keys
|
||||
case RG_GUARD_HOUSE_KEY:
|
||||
case RG_MARKET_BAZAAR_KEY:
|
||||
case RG_MARKET_POTION_SHOP_KEY:
|
||||
case RG_MASK_SHOP_KEY:
|
||||
case RG_MARKET_SHOOTING_GALLERY_KEY:
|
||||
case RG_BOMBCHU_BOWLING_KEY:
|
||||
case RG_TREASURE_CHEST_GAME_BUILDING_KEY:
|
||||
case RG_BOMBCHU_SHOP_KEY:
|
||||
case RG_RICHARDS_HOUSE_KEY:
|
||||
case RG_KAK_BAZAAR_KEY:
|
||||
case RG_KAK_POTION_SHOP_KEY:
|
||||
case RG_BOSS_HOUSE_KEY:
|
||||
case RG_GRANNYS_POTION_SHOP_KEY:
|
||||
case RG_SKULLTULA_HOUSE_KEY:
|
||||
case RG_IMPAS_HOUSE_KEY:
|
||||
case RG_WINDMILL_KEY:
|
||||
case RG_KAK_SHOOTING_GALLERY_KEY:
|
||||
case RG_DAMPES_HUT_KEY:
|
||||
case RG_TALONS_HOUSE_KEY:
|
||||
case RG_STABLES_KEY:
|
||||
case RG_BACK_TOWER_KEY:
|
||||
case RG_HYLIA_LAB_KEY:
|
||||
case RG_FISHING_HOLE_KEY:
|
||||
return CheckRandoInf(RandoGetToRandInf.at(itemName));
|
||||
// Boss Keys
|
||||
case RG_EPONA:
|
||||
@ -377,6 +401,18 @@ namespace Rando {
|
||||
}
|
||||
}
|
||||
|
||||
bool Logic::CanOpenOverworldDoor(RandomizerGet key) {
|
||||
if (!ctx->GetOption(RSK_LOCK_OVERWORLD_DOORS)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (HasItem(RG_SKELETON_KEY)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return HasItem(key);
|
||||
}
|
||||
|
||||
uint8_t GetDifficultyValueFromString(Rando::Option& glitchOption) {
|
||||
return 0;
|
||||
}
|
||||
@ -1036,7 +1072,30 @@ namespace Rando {
|
||||
{ RG_OCARINA_C_RIGHT_BUTTON, RAND_INF_HAS_OCARINA_C_RIGHT },
|
||||
{ RG_SKELETON_KEY, RAND_INF_HAS_SKELETON_KEY },
|
||||
{ RG_GREG_RUPEE, RAND_INF_GREG_FOUND },
|
||||
{ RG_FISHING_POLE, RAND_INF_FISHING_POLE_FOUND }
|
||||
{ RG_FISHING_POLE, RAND_INF_FISHING_POLE_FOUND },
|
||||
{ RG_GUARD_HOUSE_KEY, RAND_INF_GUARD_HOUSE_KEY_OBTAINED },
|
||||
{ RG_MARKET_BAZAAR_KEY, RAND_INF_MARKET_BAZAAR_KEY_OBTAINED },
|
||||
{ RG_MARKET_POTION_SHOP_KEY, RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED },
|
||||
{ RG_MASK_SHOP_KEY, RAND_INF_MASK_SHOP_KEY_OBTAINED },
|
||||
{ RG_MARKET_SHOOTING_GALLERY_KEY, RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED },
|
||||
{ RG_BOMBCHU_BOWLING_KEY, RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED },
|
||||
{ RG_TREASURE_CHEST_GAME_BUILDING_KEY, RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED },
|
||||
{ RG_BOMBCHU_SHOP_KEY, RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED },
|
||||
{ RG_RICHARDS_HOUSE_KEY, RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED },
|
||||
{ RG_KAK_BAZAAR_KEY, RAND_INF_KAK_BAZAAR_KEY_OBTAINED },
|
||||
{ RG_KAK_POTION_SHOP_KEY, RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED },
|
||||
{ RG_BOSS_HOUSE_KEY, RAND_INF_BOSS_HOUSE_KEY_OBTAINED },
|
||||
{ RG_GRANNYS_POTION_SHOP_KEY, RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED },
|
||||
{ RG_SKULLTULA_HOUSE_KEY, RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED },
|
||||
{ RG_IMPAS_HOUSE_KEY, RAND_INF_IMPAS_HOUSE_KEY_OBTAINED },
|
||||
{ RG_WINDMILL_KEY, RAND_INF_WINDMILL_KEY_OBTAINED },
|
||||
{ RG_KAK_SHOOTING_GALLERY_KEY, RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED },
|
||||
{ RG_DAMPES_HUT_KEY, RAND_INF_DAMPES_HUT_KEY_OBTAINED },
|
||||
{ RG_TALONS_HOUSE_KEY, RAND_INF_TALONS_HOUSE_KEY_OBTAINED },
|
||||
{ RG_STABLES_KEY, RAND_INF_STABLES_KEY_OBTAINED },
|
||||
{ RG_BACK_TOWER_KEY, RAND_INF_BACK_TOWER_KEY_OBTAINED },
|
||||
{ RG_HYLIA_LAB_KEY, RAND_INF_HYLIA_LAB_KEY_OBTAINED },
|
||||
{ RG_FISHING_HOLE_KEY, RAND_INF_FISHING_HOLE_KEY_OBTAINED },
|
||||
};
|
||||
|
||||
std::map<uint32_t, uint32_t> Logic::RandoGetToDungeonScene = {
|
||||
@ -1378,6 +1437,29 @@ namespace Rando {
|
||||
case RG_OCARINA_C_RIGHT_BUTTON:
|
||||
case RG_GREG_RUPEE:
|
||||
case RG_FISHING_POLE:
|
||||
case RG_GUARD_HOUSE_KEY:
|
||||
case RG_MARKET_BAZAAR_KEY:
|
||||
case RG_MARKET_POTION_SHOP_KEY:
|
||||
case RG_MASK_SHOP_KEY:
|
||||
case RG_MARKET_SHOOTING_GALLERY_KEY:
|
||||
case RG_BOMBCHU_BOWLING_KEY:
|
||||
case RG_TREASURE_CHEST_GAME_BUILDING_KEY:
|
||||
case RG_BOMBCHU_SHOP_KEY:
|
||||
case RG_RICHARDS_HOUSE_KEY:
|
||||
case RG_KAK_BAZAAR_KEY:
|
||||
case RG_KAK_POTION_SHOP_KEY:
|
||||
case RG_BOSS_HOUSE_KEY:
|
||||
case RG_GRANNYS_POTION_SHOP_KEY:
|
||||
case RG_SKULLTULA_HOUSE_KEY:
|
||||
case RG_IMPAS_HOUSE_KEY:
|
||||
case RG_WINDMILL_KEY:
|
||||
case RG_KAK_SHOOTING_GALLERY_KEY:
|
||||
case RG_DAMPES_HUT_KEY:
|
||||
case RG_TALONS_HOUSE_KEY:
|
||||
case RG_STABLES_KEY:
|
||||
case RG_BACK_TOWER_KEY:
|
||||
case RG_HYLIA_LAB_KEY:
|
||||
case RG_FISHING_HOLE_KEY:
|
||||
SetRandoInf(RandoGetToRandInf.at(randoGet), state);
|
||||
break;
|
||||
case RG_TRIFORCE_PIECE:
|
||||
|
@ -159,6 +159,7 @@ class Logic {
|
||||
bool HasProjectile(HasProjectileAge age);
|
||||
bool HasItem(RandomizerGet itemName);
|
||||
bool HasBossSoul(RandomizerGet itemName);
|
||||
bool CanOpenOverworldDoor(RandomizerGet itemName);
|
||||
bool SmallKeys(RandomizerRegion dungeon, uint8_t requiredAmount);
|
||||
bool SmallKeys(RandomizerRegion dungeon, uint8_t requiredAmountGlitchless, uint8_t requiredAmountGlitched);
|
||||
bool CanDoGlitch(GlitchType glitch);
|
||||
|
@ -33,6 +33,7 @@ void Settings::CreateOptionDescriptions() {
|
||||
"\n"
|
||||
"Open - King Zora has already mweeped out of the way in both "
|
||||
"time periods. Ruto's Letter is removed from the item pool.";
|
||||
mOptionDescriptions[RSK_LOCK_OVERWORLD_DOORS] = "Add locks to all overworld wooden doors, requiring specific small keys to open them";
|
||||
mOptionDescriptions[RSK_STARTING_AGE] =
|
||||
"Choose which age Link will start as.\n\n"
|
||||
"Starting as adult means you start with the Master Sword in your inventory.\n"
|
||||
|
@ -2717,7 +2717,7 @@ CustomMessage Randomizer::GetGoronMessage(u16 index) {
|
||||
void Randomizer::CreateCustomMessages() {
|
||||
// RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED
|
||||
// with GIMESSAGE(getItemID, itemID, english, german, french).
|
||||
const std::array<GetItemMessage, 85> getItemMessages = {{
|
||||
const std::array<GetItemMessage, 108> getItemMessages = {{
|
||||
GIMESSAGE(RG_GREG_RUPEE, ITEM_MASK_GORON,
|
||||
"You found %gGreg%w!",
|
||||
"%gGreg%w! Du hast ihn wirklich gefunden!",
|
||||
@ -2765,40 +2765,132 @@ void Randomizer::CreateCustomMessages() {
|
||||
|
||||
GIMESSAGE(RG_GERUDO_FORTRESS_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %yThieves Hideout &%wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für das %yDiebesversteck%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %yDiebesversteck%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %yRepaire des Voleurs%w!"),
|
||||
GIMESSAGE(RG_FOREST_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %gForest Temple &%wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für den %gWaldtempel%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gWaldtempel%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gTemple de la Forêt%w!"),
|
||||
GIMESSAGE(RG_FIRE_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %rFire Temple &%wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für den %rFeuertempel%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %rFeuertempel%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %rTemple du Feu%w!"),
|
||||
GIMESSAGE(RG_WATER_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %bWater Temple &%wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für den %bWassertempel%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %bWassertempel%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %bTemple de l'Eau%w!"),
|
||||
GIMESSAGE(RG_SPIRIT_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %ySpirit Temple &%wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für den %yGeistertempel%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %yGeistertempel%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %yTemple de l'Esprit%w!"),
|
||||
GIMESSAGE(RG_SHADOW_TEMPLE_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %pShadow Temple &%wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für den %pSchattentempel%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %pSchattentempel%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %pTemple de l'Ombre%w!"),
|
||||
GIMESSAGE(RG_BOTTOM_OF_THE_WELL_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %pBottom of the &Well %wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für den %pGrund des Brunnens%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %pGrund des Brunnens%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %pPuits%w!"),
|
||||
GIMESSAGE(RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %yGerudo Training &Grounds %wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für die %yGerudo-Trainingsarena%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für die %yGerudo-Trainingsarena%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %yGymnase Gerudo%w!"),
|
||||
GIMESSAGE(RG_GANONS_CASTLE_SMALL_KEY, ITEM_KEY_SMALL,
|
||||
"You found a %rGanon's Castle &%wSmall Key!",
|
||||
"Du erhältst einen %rKleinen&Schlüssel%w für %rGanons Schloß%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für %rGanons Schloß%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %rChâteau de Ganon%w!"),
|
||||
GIMESSAGE(RG_GUARD_HOUSE_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gGuard House%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus der Wachen%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&de la %gMaison des Gardes%w!"),
|
||||
GIMESSAGE(RG_MARKET_BAZAAR_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gMarket Bazaar%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gBasar des Marktes%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMarché%w!"),
|
||||
GIMESSAGE(RG_MARKET_POTION_SHOP_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gMarket Potion Shop%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gMagie-Laden des Marktes%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMarché%w!"),
|
||||
GIMESSAGE(RG_MASK_SHOP_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gMask Shop%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gMaskenladen%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMagasin de Masques%w!"),
|
||||
GIMESSAGE(RG_MARKET_SHOOTING_GALLERY_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gMarket Shooting Gallery%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude des Marktes%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gStand de Tir%w!"),
|
||||
GIMESSAGE(RG_BOMBCHU_BOWLING_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gBombchu Bowling Alley%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für die %gMinenbowlingbahn%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gBowling Bombchu%w!"),
|
||||
GIMESSAGE(RG_TREASURE_CHEST_GAME_BUILDING_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gTreasure Chest Game Building%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Schatzkisten-Pokers%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gJeu de la Chasse au Trésor%w!"),
|
||||
GIMESSAGE(RG_BOMBCHU_SHOP_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gBombchu Shop%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gKrabbelminenladen%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMagasin de Bombchu%w!"),
|
||||
GIMESSAGE(RG_RICHARDS_HOUSE_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to&%gRichard's House%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Richard%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&de la %gMaison de Richard%w!"),
|
||||
GIMESSAGE(RG_KAK_BAZAAR_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gKakariko Bazaar%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gBasar von Kakariko%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMarché de Cocorico%w!"),
|
||||
GIMESSAGE(RG_KAK_POTION_SHOP_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gKakariko Potion Shop%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gMagie-Laden von Kakariko%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMagasin de Potions de Cocorico%w!"),
|
||||
GIMESSAGE(RG_BOSS_HOUSE_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gBoss's House%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus des Chefs%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&de la %gMaison du Boss%w!"),
|
||||
GIMESSAGE(RG_GRANNYS_POTION_SHOP_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to&%gGranny's Potion Shop%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für %gAsas Hexenladen%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMagasin de Potions de Grand-mère%w!"),
|
||||
GIMESSAGE(RG_SKULLTULA_HOUSE_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gSkulltula House%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gSkulltula-Haus%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&de la %gMaison des Skulltulas%w!"),
|
||||
GIMESSAGE(RG_IMPAS_HOUSE_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to&%gImpa's House%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Impa%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&de la %gMaison d'Impa%w!"),
|
||||
GIMESSAGE(RG_WINDMILL_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gWindmill%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für die %gWindmühle%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gMoulin à Vent%w!"),
|
||||
GIMESSAGE(RG_KAK_SHOOTING_GALLERY_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gKakariko Shooting Gallery%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für die %gSchießbude von Kakariko%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gStand de Tir de Cocorico%w!"),
|
||||
GIMESSAGE(RG_DAMPES_HUT_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to&%gDampe's Hut%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für die %gHütte von Boris%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gChalet de Dampe%w!"),
|
||||
GIMESSAGE(RG_TALONS_HOUSE_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to&%gTalon's House%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gHaus von Talon%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&de la %gMaison de Talon%w!"),
|
||||
GIMESSAGE(RG_STABLES_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gStables%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für die %gStälle%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&des %gÉcuries%w!"),
|
||||
GIMESSAGE(RG_BACK_TOWER_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gBack Tower%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %ghinteren Turm%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gTour Arrière%w!"),
|
||||
GIMESSAGE(RG_HYLIA_LAB_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gHylia Laboratory%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für das %gHylia-Labor%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gLaboratoire d'Hylia%w!"),
|
||||
GIMESSAGE(RG_FISHING_HOLE_KEY, ITEM_KEY_SMALL,
|
||||
"You found the key to the&%gFishing Hole%w!",
|
||||
"Du erhältst einen %rkleinen&Schlüssel%w für den %gFischweiher%w!",
|
||||
"Vous obtenez une %rPetite Clé %w&du %gTrou de Pêche%w!"),
|
||||
|
||||
GIMESSAGE(RG_GERUDO_FORTRESS_KEY_RING, ITEM_KEY_SMALL,
|
||||
"You found a %yThieves Hideout &%wKeyring!",
|
||||
|
@ -146,6 +146,29 @@ typedef enum {
|
||||
LOGIC_GANONS_CASTLE_KEYS,
|
||||
LOGIC_TREASURE_GAME_KEYS,
|
||||
LOGIC_SKELETON_KEY,
|
||||
LOGIC_GUARD_HOUSE_KEY,
|
||||
LOGIC_MARKET_BAZAAR_KEY,
|
||||
LOGIC_MARKET_POTION_SHOP_KEY,
|
||||
LOGIC_MASK_SHOP_KEY,
|
||||
LOGIC_MARKET_SHOOTING_GALLERY_KEY,
|
||||
LOGIC_BOMBCHU_BOWLING_KEY,
|
||||
LOGIC_TREASURE_CHEST_GAME_BUILDING_KEY,
|
||||
LOGIC_BOMBCHU_SHOP_KEY,
|
||||
LOGIC_RICHARDS_HOUSE_KEY,
|
||||
LOGIC_KAK_BAZAAR_KEY,
|
||||
LOGIC_KAK_POTION_SHOP_KEY,
|
||||
LOGIC_BOSS_HOUSE_KEY,
|
||||
LOGIC_GRANNYS_POTION_SHOP_KEY,
|
||||
LOGIC_SKULLTULA_HOUSE_KEY,
|
||||
LOGIC_IMPAS_HOUSE_KEY,
|
||||
LOGIC_WINDMILL_KEY,
|
||||
LOGIC_KAK_SHOOTING_GALLERY_KEY,
|
||||
LOGIC_DAMPES_HUT_KEY,
|
||||
LOGIC_TALONS_HOUSE_KEY,
|
||||
LOGIC_STABLES_KEY,
|
||||
LOGIC_BACK_TOWER_KEY,
|
||||
LOGIC_HYLIA_LAB_KEY,
|
||||
LOGIC_FISHING_HOLE_KEY,
|
||||
LOGIC_KOKIRI_EMERALD,
|
||||
LOGIC_GORON_RUBY,
|
||||
LOGIC_ZORA_SAPPHIRE,
|
||||
@ -2270,6 +2293,29 @@ typedef enum {
|
||||
RG_HOOKSHOT,
|
||||
RG_LONGSHOT,
|
||||
RG_SCARECROW,
|
||||
RG_GUARD_HOUSE_KEY,
|
||||
RG_MARKET_BAZAAR_KEY,
|
||||
RG_MARKET_POTION_SHOP_KEY,
|
||||
RG_MASK_SHOP_KEY,
|
||||
RG_MARKET_SHOOTING_GALLERY_KEY,
|
||||
RG_BOMBCHU_BOWLING_KEY,
|
||||
RG_TREASURE_CHEST_GAME_BUILDING_KEY,
|
||||
RG_BOMBCHU_SHOP_KEY,
|
||||
RG_RICHARDS_HOUSE_KEY,
|
||||
RG_KAK_BAZAAR_KEY,
|
||||
RG_KAK_POTION_SHOP_KEY,
|
||||
RG_BOSS_HOUSE_KEY,
|
||||
RG_GRANNYS_POTION_SHOP_KEY,
|
||||
RG_SKULLTULA_HOUSE_KEY,
|
||||
RG_IMPAS_HOUSE_KEY,
|
||||
RG_WINDMILL_KEY,
|
||||
RG_KAK_SHOOTING_GALLERY_KEY,
|
||||
RG_DAMPES_HUT_KEY,
|
||||
RG_TALONS_HOUSE_KEY,
|
||||
RG_STABLES_KEY,
|
||||
RG_BACK_TOWER_KEY,
|
||||
RG_HYLIA_LAB_KEY,
|
||||
RG_FISHING_HOLE_KEY,
|
||||
// Logic Only
|
||||
RG_DISTANT_SCARECROW,
|
||||
RG_STICKS,
|
||||
@ -3736,6 +3782,7 @@ typedef enum {
|
||||
RHT_ISOLATED_PLACE,
|
||||
RHT_DUNGEON_ORDINARY,
|
||||
RHT_DUNGEON_MASTERFUL,
|
||||
RHT_OVERWORLD_KEY,
|
||||
RHT_MAX
|
||||
} RandomizerHintTextKey;
|
||||
|
||||
@ -4021,6 +4068,7 @@ typedef enum {
|
||||
RSK_SKELETON_KEY,
|
||||
RSK_SHUFFLE_DEKU_STICK_BAG,
|
||||
RSK_SHUFFLE_DEKU_NUT_BAG,
|
||||
RSK_LOCK_OVERWORLD_DOORS,
|
||||
RSK_MAX
|
||||
} RandomizerSettingKey;
|
||||
|
||||
|
@ -306,6 +306,54 @@ typedef enum {
|
||||
RAND_INF_CHILD_TRADES_MASK_ZORA,
|
||||
RAND_INF_CHILD_TRADES_MASK_GERUDO,
|
||||
RAND_INF_CHILD_TRADES_MASK_TRUTH,
|
||||
|
||||
RAND_INF_GUARD_HOUSE_UNLOCKED,
|
||||
RAND_INF_GUARD_HOUSE_KEY_OBTAINED,
|
||||
RAND_INF_MARKET_BAZAAR_UNLOCKED,
|
||||
RAND_INF_MARKET_BAZAAR_KEY_OBTAINED,
|
||||
RAND_INF_MARKET_POTION_SHOP_UNLOCKED,
|
||||
RAND_INF_MARKET_POTION_SHOP_KEY_OBTAINED,
|
||||
RAND_INF_MASK_SHOP_UNLOCKED,
|
||||
RAND_INF_MASK_SHOP_KEY_OBTAINED,
|
||||
RAND_INF_MARKET_SHOOTING_GALLERY_UNLOCKED,
|
||||
RAND_INF_MARKET_SHOOTING_GALLERY_KEY_OBTAINED,
|
||||
RAND_INF_BOMBCHU_BOWLING_UNLOCKED,
|
||||
RAND_INF_BOMBCHU_BOWLING_KEY_OBTAINED,
|
||||
RAND_INF_TREASURE_CHEST_GAME_BUILDING_UNLOCKED,
|
||||
RAND_INF_TREASURE_CHEST_GAME_BUILDING_KEY_OBTAINED,
|
||||
RAND_INF_BOMBCHU_SHOP_UNLOCKED,
|
||||
RAND_INF_BOMBCHU_SHOP_KEY_OBTAINED,
|
||||
RAND_INF_RICHARDS_HOUSE_UNLOCKED,
|
||||
RAND_INF_RICHARDS_HOUSE_KEY_OBTAINED,
|
||||
RAND_INF_KAK_BAZAAR_UNLOCKED,
|
||||
RAND_INF_KAK_BAZAAR_KEY_OBTAINED,
|
||||
RAND_INF_KAK_POTION_SHOP_UNLOCKED,
|
||||
RAND_INF_KAK_POTION_SHOP_KEY_OBTAINED,
|
||||
RAND_INF_BOSS_HOUSE_UNLOCKED,
|
||||
RAND_INF_BOSS_HOUSE_KEY_OBTAINED,
|
||||
RAND_INF_GRANNYS_POTION_SHOP_UNLOCKED,
|
||||
RAND_INF_GRANNYS_POTION_SHOP_KEY_OBTAINED,
|
||||
RAND_INF_SKULLTULA_HOUSE_UNLOCKED,
|
||||
RAND_INF_SKULLTULA_HOUSE_KEY_OBTAINED,
|
||||
RAND_INF_IMPAS_HOUSE_UNLOCKED,
|
||||
RAND_INF_IMPAS_HOUSE_KEY_OBTAINED,
|
||||
RAND_INF_WINDMILL_UNLOCKED,
|
||||
RAND_INF_WINDMILL_KEY_OBTAINED,
|
||||
RAND_INF_KAK_SHOOTING_GALLERY_UNLOCKED,
|
||||
RAND_INF_KAK_SHOOTING_GALLERY_KEY_OBTAINED,
|
||||
RAND_INF_DAMPES_HUT_UNLOCKED,
|
||||
RAND_INF_DAMPES_HUT_KEY_OBTAINED,
|
||||
RAND_INF_TALONS_HOUSE_UNLOCKED,
|
||||
RAND_INF_TALONS_HOUSE_KEY_OBTAINED,
|
||||
RAND_INF_STABLES_UNLOCKED,
|
||||
RAND_INF_STABLES_KEY_OBTAINED,
|
||||
RAND_INF_BACK_TOWER_UNLOCKED,
|
||||
RAND_INF_BACK_TOWER_KEY_OBTAINED,
|
||||
RAND_INF_HYLIA_LAB_UNLOCKED,
|
||||
RAND_INF_HYLIA_LAB_KEY_OBTAINED,
|
||||
RAND_INF_FISHING_HOLE_UNLOCKED,
|
||||
RAND_INF_FISHING_HOLE_KEY_OBTAINED,
|
||||
|
||||
// If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16)
|
||||
|
||||
RAND_INF_MAX,
|
||||
|
@ -109,6 +109,7 @@ void Settings::CreateOptions() {
|
||||
mOptions[RSK_KAK_GATE] = Option::U8("Kakariko Gate", {"Closed", "Open"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("KakarikoGate"), mOptionDescriptions[RSK_KAK_GATE]);
|
||||
mOptions[RSK_DOOR_OF_TIME] = Option::U8("Door of Time", {"Closed", "Song only", "Open"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("DoorOfTime"), mOptionDescriptions[RSK_DOOR_OF_TIME], WidgetType::Combobox);
|
||||
mOptions[RSK_ZORAS_FOUNTAIN] = Option::U8("Zora's Fountain", {"Closed", "Closed as child", "Open"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ZorasFountain"), mOptionDescriptions[RSK_ZORAS_FOUNTAIN]);
|
||||
mOptions[RSK_LOCK_OVERWORLD_DOORS] = Option::Bool("Lock Overworld Doors", "gRandomizeLockOverworldDoors", mOptionDescriptions[RSK_LOCK_OVERWORLD_DOORS]);
|
||||
mOptions[RSK_GERUDO_FORTRESS] = Option::U8("Gerudo Fortress", {"Normal", "Fast", "Open"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("GerudoFortress"), mOptionDescriptions[RSK_GERUDO_FORTRESS]);
|
||||
mOptions[RSK_RAINBOW_BRIDGE] = Option::U8("Rainbow Bridge", {"Vanilla", "Always open", "Stones", "Medallions", "Dungeon rewards", "Dungeons", "Tokens", "Greg"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("RainbowBridge"), mOptionDescriptions[RSK_RAINBOW_BRIDGE], WidgetType::Combobox, RO_BRIDGE_VANILLA, false, IMFLAG_NONE);
|
||||
mOptions[RSK_RAINBOW_BRIDGE_STONE_COUNT] = Option::U8("Stone Count", {NumOpts(0, 4)}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("StoneCount"), "", WidgetType::Slider, 3, true);
|
||||
@ -695,6 +696,7 @@ void Settings::CreateOptions() {
|
||||
&mOptions[RSK_KAK_GATE],
|
||||
&mOptions[RSK_DOOR_OF_TIME],
|
||||
&mOptions[RSK_ZORAS_FOUNTAIN],
|
||||
&mOptions[RSK_LOCK_OVERWORLD_DOORS],
|
||||
}, false, WidgetContainerType::COLUMN);
|
||||
mOptionGroups[RSG_WORLD_IMGUI] = OptionGroup::SubGroup("World Settings", {
|
||||
&mOptions[RSK_STARTING_AGE],
|
||||
@ -944,6 +946,7 @@ void Settings::CreateOptions() {
|
||||
&mOptions[RSK_KAK_GATE],
|
||||
&mOptions[RSK_DOOR_OF_TIME],
|
||||
&mOptions[RSK_ZORAS_FOUNTAIN],
|
||||
&mOptions[RSK_LOCK_OVERWORLD_DOORS],
|
||||
&mOptions[RSK_GERUDO_FORTRESS],
|
||||
&mOptions[RSK_RAINBOW_BRIDGE],
|
||||
&mOptions[RSK_RAINBOW_BRIDGE_STONE_COUNT],
|
||||
@ -1262,6 +1265,7 @@ void Settings::CreateOptions() {
|
||||
{ "Open Settings:Door of Time", RSK_DOOR_OF_TIME },
|
||||
{ "Open Settings:Zora's Fountain", RSK_ZORAS_FOUNTAIN },
|
||||
{ "World Settings:Starting Age", RSK_STARTING_AGE },
|
||||
{ "Open Settings:Lock Overworld Doors", RSK_LOCK_OVERWORLD_DOORS },
|
||||
{ "Open Settings:Gerudo Fortress", RSK_GERUDO_FORTRESS },
|
||||
{ "Open Settings:Rainbow Bridge", RSK_RAINBOW_BRIDGE },
|
||||
{ "Open Settings:Stone Count", RSK_RAINBOW_BRIDGE_STONE_COUNT },
|
||||
@ -2801,6 +2805,7 @@ void Settings::ParseJson(nlohmann::json spoilerFileJson) {
|
||||
case RSK_MQ_DUNGEON_SET:
|
||||
case RSK_SHUFFLE_DEKU_NUT_BAG:
|
||||
case RSK_SHUFFLE_DEKU_STICK_BAG:
|
||||
case RSK_LOCK_OVERWORLD_DOORS:
|
||||
if (it.value() == "Off") {
|
||||
mOptions[index].SetSelectedIndex(RO_GENERIC_OFF);
|
||||
} else if (it.value() == "On") {
|
||||
|
@ -2712,6 +2712,9 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
gSaveContext.inventory.dungeonItems[mapIndex] |= bitmask;
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
} else if (item >= RG_GUARD_HOUSE_KEY && item <= RG_FISHING_HOLE_KEY) {
|
||||
Flags_SetRandomizerInf(RAND_INF_GUARD_HOUSE_UNLOCKED + ((item - RG_GUARD_HOUSE_KEY) * 2) + 1);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_TYCOON_WALLET) {
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "objects/object_hidan_objects/object_hidan_objects.h"
|
||||
#include "objects/object_mizu_objects/object_mizu_objects.h"
|
||||
#include "objects/object_haka_door/object_haka_door.h"
|
||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||
|
||||
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
||||
|
||||
@ -161,7 +162,7 @@ void EnDoor_SetupType(EnDoor* this, PlayState* play) {
|
||||
}
|
||||
this->actor.world.rot.y = 0x0000;
|
||||
if (doorType == DOOR_LOCKED) {
|
||||
if (!Flags_GetSwitch(play, this->actor.params & 0x3F)) {
|
||||
if (GameInteractor_Should(VB_DOOR_BE_LOCKED, !Flags_GetSwitch(play, this->actor.params & 0x3F), this)) {
|
||||
this->lockTimer = 10;
|
||||
}
|
||||
} else if (doorType == DOOR_AJAR) {
|
||||
@ -200,8 +201,10 @@ void EnDoor_Idle(EnDoor* this, PlayState* play) {
|
||||
Animation_PlayOnceSetSpeed(&this->skelAnime, D_809FCECC[this->animStyle],
|
||||
(player->stateFlags1 & PLAYER_STATE1_IN_WATER) ? 0.75f : 1.5f);
|
||||
if (this->lockTimer != 0) {
|
||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]--;
|
||||
Flags_SetSwitch(play, this->actor.params & 0x3F);
|
||||
if (GameInteractor_Should(VB_CONSUME_SMALL_KEY, true, this)) {
|
||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]--;
|
||||
Flags_SetSwitch(play, this->actor.params & 0x3F);
|
||||
}
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK);
|
||||
}
|
||||
} else if (!Player_InCsMode(play)) {
|
||||
@ -213,7 +216,7 @@ void EnDoor_Idle(EnDoor* this, PlayState* play) {
|
||||
}
|
||||
if (ABS(phi_v0) < 0x3000) {
|
||||
if (this->lockTimer != 0) {
|
||||
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] <= 0) {
|
||||
if (GameInteractor_Should(VB_NOT_HAVE_SMALL_KEY, gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] <= 0, this)) {
|
||||
Player* player2 = GET_PLAYER(play);
|
||||
|
||||
player2->naviTextId = -0x203;
|
||||
|
@ -55,6 +55,9 @@ typedef struct EnDoor {
|
||||
/* 0x0198 */ Vec3s jointTable[5];
|
||||
/* 0x01B6 */ Vec3s morphTable[5];
|
||||
/* 0x01D4 */ EnDoorActionFunc actionFunc;
|
||||
// #region SOH [Randomizer]
|
||||
/* */ RandomizerInf randomizerInf;
|
||||
// #endregion
|
||||
} EnDoor; // size = 0x01D8
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -5413,7 +5413,14 @@ s32 Player_ActionHandler_1(Player* this, PlayState* play) {
|
||||
this->stateFlags1 |= PLAYER_STATE1_IN_CUTSCENE;
|
||||
Actor_DisableLens(play);
|
||||
|
||||
if (((doorActor->params >> 7) & 7) == 3) {
|
||||
if (
|
||||
((doorActor->params >> 7) & 7) == 3 ||
|
||||
(
|
||||
doorActor->id == ACTOR_EN_DOOR &&
|
||||
((doorActor->params >> 7) & 7) == 1 &&
|
||||
((EnDoor*)doorActor)->randomizerInf != RAND_INF_MAX
|
||||
)
|
||||
) {
|
||||
checkPos.x = doorActor->world.pos.x - (sp6C * sp74);
|
||||
checkPos.y = doorActor->world.pos.y + 10.0f;
|
||||
checkPos.z = doorActor->world.pos.z - (sp6C * sp78);
|
||||
|
Loading…
Reference in New Issue
Block a user