Merge pull request #3300 from stratomaster64/soulcalibur

Rando: Boss Soul Shuffle
This commit is contained in:
Garrett Cox 2023-11-19 20:09:54 -06:00 committed by GitHub
commit 21caecab84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 1742 additions and 40 deletions

2
.gitmodules vendored
View File

@ -6,4 +6,4 @@
url = https://github.com/harbourmasters/ZAPDTR url = https://github.com/harbourmasters/ZAPDTR
[submodule "OTRExporter"] [submodule "OTRExporter"]
path = OTRExporter path = OTRExporter
url = https://github.com/harbourmasters/OTRExporter url = https://github.com/harbourmasters/OTRExporter/

View File

@ -0,0 +1,19 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_boss_soul/mat_gGIBossSoulSkullDL_skull_surface"/>
<CallDisplayList Path="objects/object_boss_soul/gGIBossSoulSkullDL_tri_0"/>
<CallDisplayList Path="objects/object_boss_soul/mat_gGIBossSoulSkullDL_skull_black"/>
<CallDisplayList Path="objects/object_boss_soul/gGIBossSoulSkullDL_tri_1"/>
<CallDisplayList Path="objects/object_boss_soul/mat_gGIBossSoulSkullDL_skull_eyes"/>
<CallDisplayList Path="objects/object_boss_soul/gGIBossSoulSkullDL_tri_2"/>
<CallDisplayList Path="objects/object_boss_soul/mat_gGIBossSoulSkullDL_skull_horns"/>
<CallDisplayList Path="objects/object_boss_soul/gGIBossSoulSkullDL_tri_3"/>
<CallDisplayList Path="objects/object_boss_soul/mat_gGIBossSoulSkullDL_Gem_eyes"/>
<CallDisplayList Path="objects/object_boss_soul/gGIBossSoulSkullDL_tri_4"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,163 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_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="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="2"/>
<Triangle1 V00="2" V01="8" V02="7"/>
<Triangle1 V00="2" V01="9" V02="8"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="10" V01="13" V02="12"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="12" V01="13" V02="15"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="2" V02="1"/>
<Triangle1 V00="2" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="1" V01="8" V02="4"/>
<Triangle1 V00="1" V01="9" V02="8"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="7" V01="8" V02="10"/>
<Triangle1 V00="7" 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="15" V01="14" V02="12"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="3" V02="0"/>
<Triangle1 V00="4" V01="3" V02="2"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="8" V01="12" V02="11"/>
<Triangle1 V00="13" V01="12" V02="8"/>
<Triangle1 V00="14" V01="13" V02="8"/>
<Triangle1 V00="14" V01="8" V02="15"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="2" V01="4" V02="3"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="5" V01="7" V02="10"/>
<Triangle1 V00="5" V01="10" V02="11"/>
<Triangle1 V00="11" V01="12" V02="5"/>
<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_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="3" V02="0"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="0" V01="4" V02="5"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="6" V01="4" V02="7"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="4" V01="9" V02="8"/>
<Triangle1 V00="10" V01="9" V02="4"/>
<Triangle1 V00="4" V01="11" V02="10"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="80" 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="5" V02="3"/>
<Triangle1 V00="6" V01="3" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="9" V01="10" V02="6"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="14" V01="12" V02="13"/>
<Triangle1 V00="14" V01="15" V02="12"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="96" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="0" V01="3" V02="4"/>
<Triangle1 V00="0" V01="4" V02="5"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="7" V01="8" V02="5"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="11" V01="5" V02="8"/>
<Triangle1 V00="12" V01="5" V02="11"/>
<Triangle1 V00="13" V01="12" V02="11"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="15" V01="14" V02="11"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="112" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="0" V01="4" V02="5"/>
<Triangle1 V00="0" V01="6" V02="4"/>
<Triangle1 V00="4" V01="7" V02="5"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="8" V01="10" V02="9"/>
<Triangle1 V00="8" V01="11" V02="10"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="14" V01="12" V02="13"/>
<Triangle1 V00="14" V01="15" V02="12"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="128" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="4" V02="0"/>
<Triangle1 V00="0" V01="5" V02="1"/>
<Triangle1 V00="0" V01="6" V02="5"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="6" V01="8" V02="7"/>
<Triangle1 V00="5" V01="7" V02="9"/>
<Triangle1 V00="10" V01="9" V02="7"/>
<Triangle1 V00="11" V01="10" V02="7"/>
<Triangle1 V00="12" V01="9" V02="10"/>
<Triangle1 V00="13" V01="9" V02="12"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="12" V02="15"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="144" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="6" V01="0" V02="3"/>
<Triangle1 V00="7" V01="0" V02="6"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="7" V01="1" V02="0"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_0" VertexBufferIndex="0" VertexOffset="158" Count="13"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="7" V02="5"/>
<Triangle1 V00="7" V01="8" V02="5"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="8"/>
<Triangle1 V00="11" V01="12" V02="8"/>
<Triangle1 V00="5" V01="8" V02="12"/>
<EndDisplayList/>
</DisplayList>

View File

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

View File

@ -0,0 +1,7 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="4"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="1"/>
<EndDisplayList/>
</DisplayList>

View File

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

View File

@ -0,0 +1,245 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" 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="0" V01="6" V02="5"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="6" V01="8" V02="7"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="11" V01="10" V02="9"/>
<Triangle1 V00="2" V01="11" V02="9"/>
<Triangle1 V00="2" V01="12" V02="11"/>
<Triangle1 V00="12" V01="2" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="15" V01="14" V02="13"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="3" V02="0"/>
<Triangle1 V00="3" V01="4" V02="0"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="5" V01="3" V02="6"/>
<Triangle1 V00="3" V01="7" V02="6"/>
<Triangle1 V00="3" V01="8" V02="7"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="12" V01="14" V02="13"/>
<Triangle1 V00="15" V01="14" V02="12"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="5" V01="3" V02="4"/>
<Triangle1 V00="5" V01="6" V02="3"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="10" V01="9" V02="7"/>
<Triangle1 V00="11" V01="10" V02="7"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="14" V01="12" V02="13"/>
<Triangle1 V00="14" V01="15" V02="12"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="48" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="5" V01="4" V02="0"/>
<Triangle1 V00="6" V01="5" V02="0"/>
<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="10" V02="7"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="9" V01="12" V02="11"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="14" V02="11"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="64" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="0" V01="5" V02="1"/>
<Triangle1 V00="1" V01="5" V02="6"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="5" V01="8" V02="7"/>
<Triangle1 V00="8" V01="9" V02="7"/>
<Triangle1 V00="8" V01="10" V02="9"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="9" V01="11" V02="12"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="15" V01="14" V02="13"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="80" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="4"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="7" V01="4" V02="5"/>
<Triangle1 V00="7" V01="8" V02="4"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="10" V01="9" V02="7"/>
<Triangle1 V00="11" V01="10" V02="7"/>
<Triangle1 V00="11" V01="7" V02="5"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="10"/>
<Triangle1 V00="13" V01="14" V02="10"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="96" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="7"/>
<Triangle1 V00="6" V01="8" V02="5"/>
<Triangle1 V00="8" V01="9" V02="5"/>
<Triangle1 V00="8" V01="10" V02="9"/>
<Triangle1 V00="11" V01="9" V02="10"/>
<Triangle1 V00="11" V01="12" V02="9"/>
<Triangle1 V00="13" V01="12" V02="11"/>
<Triangle1 V00="12" V01="14" V02="9"/>
<Triangle1 V00="12" V01="15" V02="14"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="112" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="1" V01="3" V02="4"/>
<Triangle1 V00="1" V01="5" V02="2"/>
<Triangle1 V00="1" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="1"/>
<Triangle1 V00="2" V01="5" V02="8"/>
<Triangle1 V00="2" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="13" V02="11"/>
<Triangle1 V00="13" V01="14" V02="11"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="128" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="8" V01="7" V02="5"/>
<Triangle1 V00="9" V01="8" V02="5"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="11" V01="10" V02="9"/>
<Triangle1 V00="12" V01="11" V02="9"/>
<Triangle1 V00="13" V01="12" V02="9"/>
<Triangle1 V00="14" V01="13" V02="9"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="144" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="1"/>
<Triangle1 V00="3" V01="1" V02="4"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="9" V01="8" V02="6"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="11" V01="10" V02="9"/>
<Triangle1 V00="12" V01="11" V02="9"/>
<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_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="160" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="1"/>
<Triangle1 V00="3" V01="1" V02="4"/>
<Triangle1 V00="4" V01="1" V02="5"/>
<Triangle1 V00="6" V01="5" V02="1"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="6" V01="8" V02="7"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="10" V02="7"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="9" V01="12" V02="11"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="11" V01="13" V02="14"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="176" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="1" V01="5" V02="4"/>
<Triangle1 V00="5" V01="6" V02="4"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="8" V01="9" V02="6"/>
<Triangle1 V00="8" V01="10" V02="9"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="10" V01="13" V02="12"/>
<Triangle1 V00="14" V01="13" V02="10"/>
<Triangle1 V00="14" V01="15" V02="13"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="192" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="5" V01="8" V02="7"/>
<Triangle1 V00="4" V01="6" V02="9"/>
<Triangle1 V00="4" V01="9" V02="10"/>
<Triangle1 V00="11" V01="10" V02="9"/>
<Triangle1 V00="11" V01="9" V02="12"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="15" V01="13" V02="14"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="208" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="4" V02="1"/>
<Triangle1 V00="5" V01="4" V02="3"/>
<Triangle1 V00="6" V01="5" V02="3"/>
<Triangle1 V00="5" V01="7" V02="4"/>
<Triangle1 V00="7" V01="8" V02="4"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="8"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="12" V01="14" V02="13"/>
<Triangle1 V00="15" V01="11" V02="13"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="224" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="4" V01="2" V02="5"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="4" V01="5" V02="7"/>
<Triangle1 V00="8" V01="4" V02="7"/>
<Triangle1 V00="8" V01="9" V02="4"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="13" V01="12" V02="10"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="15" V01="14" V02="13"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="240" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="6" V02="4"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="10" V01="7" V02="8"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="14" V01="12" V02="11"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<LoadVertices Path="objects/object_boss_soul/gGIBossSoulSkullDL_vtx_4" VertexBufferIndex="0" VertexOffset="256" Count="9"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="2" V01="4" V02="3"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="6" V01="5" V02="2"/>
<Triangle1 V00="6" V01="2" V02="7"/>
<Triangle1 V00="5" V01="8" V02="4"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,173 @@
<Vertex Version="0">
<Vtx X="18" Y="17" Z="0" S="147" T="-17" R="87" G="69" B="194" A="255"/>
<Vtx X="16" Y="14" Z="-8" S="239" T="-17" R="55" G="65" B="161" A="255"/>
<Vtx X="9" Y="17" Z="-8" S="239" T="-81" R="16" G="78" B="157" A="255"/>
<Vtx X="9" Y="22" Z="1" S="147" T="-81" R="12" G="111" B="196" A="255"/>
<Vtx X="0" Y="18" Z="-7" S="239" T="-145" R="249" G="91" B="167" A="255"/>
<Vtx X="0" Y="11" Z="-9" S="111" T="-145" R="246" G="32" B="133" A="255"/>
<Vtx X="4" Y="11" Z="-9" S="111" T="-113" R="1" G="23" B="131" A="255"/>
<Vtx X="9" Y="6" Z="-10" S="15" T="-17" R="9" G="11" B="130" A="255"/>
<Vtx X="18" Y="8" Z="-8" S="47" T="111" R="74" G="18" B="154" A="255"/>
<Vtx X="16" Y="14" Z="-8" S="111" T="111" R="55" G="65" B="161" A="255"/>
<Vtx X="18" Y="17" Z="0" S="111" T="19" R="87" G="69" B="194" A="255"/>
<Vtx X="22" Y="10" Z="0" S="47" T="19" R="122" G="20" B="225" A="255"/>
<Vtx X="22" Y="10" Z="7" S="47" T="-17" R="35" G="4" B="122" A="255"/>
<Vtx X="19" Y="17" Z="7" S="111" T="-17" R="41" G="18" B="119" A="255"/>
<Vtx X="19" Y="17" Z="6" S="111" T="-11" R="103" G="230" B="69" A="255"/>
<Vtx X="10" Y="22" Z="8" S="111" T="-81" R="18" G="37" B="120" A="255"/>
<Vtx X="19" Y="17" Z="7" S="111" T="-17" R="41" G="18" B="119" A="255"/>
<Vtx X="10" Y="22" Z="7" S="117" T="-81" R="210" G="73" B="94" A="255"/>
<Vtx X="10" Y="22" Z="8" S="111" T="-81" R="18" G="37" B="120" A="255"/>
<Vtx X="19" Y="17" Z="6" S="117" T="-17" R="103" G="230" B="69" A="255"/>
<Vtx X="1" Y="23" Z="9" S="111" T="-145" R="10" G="32" B="123" A="255"/>
<Vtx X="-7" Y="22" Z="9" S="111" T="-81" R="3" G="37" B="122" A="255"/>
<Vtx X="-7" Y="22" Z="8" S="117" T="-81" R="62" G="73" B="84" A="255"/>
<Vtx X="-8" Y="22" Z="3" S="147" T="-81" R="234" G="112" B="200" A="255"/>
<Vtx X="1" Y="23" Z="2" S="147" T="-145" R="253" G="121" B="217" A="255"/>
<Vtx X="9" Y="22" Z="1" S="147" T="-81" R="12" G="111" B="196" A="255"/>
<Vtx X="0" Y="18" Z="-7" S="239" T="-145" R="249" G="91" B="167" A="255"/>
<Vtx X="-9" Y="17" Z="-6" S="239" T="-81" R="222" G="78" B="161" A="255"/>
<Vtx X="0" Y="11" Z="-9" S="111" T="-145" R="246" G="32" B="133" A="255"/>
<Vtx X="-5" Y="11" Z="-8" S="111" T="-113" R="233" G="23" B="133" A="255"/>
<Vtx X="0" Y="3" Z="-10" S="-17" T="-145" R="245" G="0" B="129" A="255"/>
<Vtx X="4" Y="11" Z="-9" S="111" T="-113" R="1" G="23" B="131" A="255"/>
<Vtx X="0" Y="3" Z="-10" S="-17" T="-145" R="245" G="0" B="129" A="255"/>
<Vtx X="4" Y="11" Z="-9" S="111" T="-113" R="1" G="23" B="131" A="255"/>
<Vtx X="9" Y="6" Z="-10" S="15" T="-17" R="9" G="11" B="130" A="255"/>
<Vtx X="9" Y="2" Z="-10" S="-17" T="-17" R="13" G="249" B="130" A="255"/>
<Vtx X="18" Y="8" Z="-8" S="47" T="111" R="74" G="18" B="154" A="255"/>
<Vtx X="18" Y="0" Z="-8" S="-17" T="111" R="86" G="227" B="167" A="255"/>
<Vtx X="21" Y="0" Z="0" S="-17" T="19" R="118" G="218" B="229" A="255"/>
<Vtx X="22" Y="10" Z="0" S="47" T="19" R="122" G="20" B="225" A="255"/>
<Vtx X="22" Y="10" Z="7" S="47" T="-17" R="35" G="4" B="122" A="255"/>
<Vtx X="22" Y="0" Z="7" S="-17" T="-17" R="50" G="244" B="116" A="255"/>
<Vtx X="16" Y="-9" Z="7" S="-81" T="-17" R="48" G="250" B="118" A="255"/>
<Vtx X="12" Y="4" Z="8" S="-4" T="-71" R="11" G="0" B="127" A="255"/>
<Vtx X="13" Y="7" Z="7" S="23" T="-65" R="11" G="0" B="127" A="255"/>
<Vtx X="12" Y="11" Z="8" S="45" T="-73" R="11" G="0" B="127" A="255"/>
<Vtx X="8" Y="12" Z="8" S="49" T="-96" R="11" G="0" B="127" A="255"/>
<Vtx X="10" Y="22" Z="8" S="111" T="-81" R="18" G="37" B="120" A="255"/>
<Vtx X="5" Y="11" Z="8" S="35" T="-119" R="11" G="0" B="127" A="255"/>
<Vtx X="8" Y="12" Z="8" S="49" T="-96" R="11" G="0" B="127" A="255"/>
<Vtx X="10" Y="22" Z="8" S="111" T="-81" R="18" G="37" B="120" A="255"/>
<Vtx X="-2" Y="11" Z="9" S="35" T="-119" R="10" G="0" B="127" A="255"/>
<Vtx X="-6" Y="12" Z="9" S="49" T="-96" R="10" G="0" B="127" A="255"/>
<Vtx X="-19" Y="10" Z="10" S="47" T="-17" R="243" G="4" B="126" A="255"/>
<Vtx X="-7" Y="22" Z="9" S="111" T="-81" R="3" G="37" B="122" A="255"/>
<Vtx X="-16" Y="17" Z="10" S="111" T="-17" R="236" G="18" B="124" A="255"/>
<Vtx X="-7" Y="22" Z="8" S="117" T="-81" R="62" G="73" B="84" A="255"/>
<Vtx X="-16" Y="17" Z="9" S="117" T="-17" R="166" G="230" B="86" A="255"/>
<Vtx X="-16" Y="17" Z="9" S="111" T="-11" R="166" G="230" B="86" A="255"/>
<Vtx X="-17" Y="17" Z="3" S="111" T="19" R="159" G="69" B="210" A="255"/>
<Vtx X="-20" Y="10" Z="4" S="47" T="19" R="131" G="20" B="247" A="255"/>
<Vtx X="-18" Y="8" Z="-5" S="47" T="111" R="166" G="18" B="168" A="255"/>
<Vtx X="-16" Y="14" Z="-5" S="111" T="111" R="185" G="65" B="172" A="255"/>
<Vtx X="-9" Y="6" Z="-8" S="15" T="-17" R="225" G="11" B="133" A="255"/>
<Vtx X="-9" Y="6" Z="-8" S="15" T="-17" R="225" G="11" B="133" A="255"/>
<Vtx X="-16" Y="14" Z="-5" S="111" T="111" R="185" G="65" B="172" A="255"/>
<Vtx X="-9" Y="17" Z="-6" S="239" T="-81" R="222" G="78" B="161" A="255"/>
<Vtx X="-5" Y="11" Z="-8" S="111" T="-113" R="233" G="23" B="133" A="255"/>
<Vtx X="0" Y="3" Z="-10" S="-17" T="-145" R="245" G="0" B="129" A="255"/>
<Vtx X="-9" Y="2" Z="-8" S="-17" T="-17" R="222" G="249" B="134" A="255"/>
<Vtx X="-7" Y="-1" Z="-8" S="-49" T="-17" R="231" G="238" B="133" A="255"/>
<Vtx X="-5" Y="-1" Z="-8" S="-145" T="-113" R="225" G="236" B="134" A="255"/>
<Vtx X="0" Y="-8" Z="-9" S="-145" T="-145" R="245" G="237" B="131" A="255"/>
<Vtx X="4" Y="-1" Z="-9" S="-145" T="-113" R="9" G="236" B="131" A="255"/>
<Vtx X="7" Y="-1" Z="-9" S="-49" T="-17" R="3" G="238" B="130" A="255"/>
<Vtx X="9" Y="2" Z="-10" S="-17" T="-17" R="13" G="249" B="130" A="255"/>
<Vtx X="14" Y="-6" Z="-8" S="-81" T="111" R="92" G="232" B="171" A="255"/>
<Vtx X="18" Y="0" Z="-8" S="-17" T="111" R="86" G="227" B="167" A="255"/>
<Vtx X="21" Y="0" Z="0" S="-17" T="19" R="118" G="218" B="229" A="255"/>
<Vtx X="16" Y="-9" Z="1" S="-81" T="19" R="124" G="236" B="235" A="255"/>
<Vtx X="16" Y="-9" Z="1" S="-81" T="19" R="124" G="236" B="235" A="255"/>
<Vtx X="21" Y="0" Z="0" S="-17" T="19" R="118" G="218" B="229" A="255"/>
<Vtx X="22" Y="0" Z="7" S="-17" T="-17" R="50" G="244" B="116" A="255"/>
<Vtx X="16" Y="-9" Z="7" S="-81" T="-17" R="48" G="250" B="118" A="255"/>
<Vtx X="18" Y="-17" Z="0" S="-145" T="19" R="7" G="134" B="221" A="255"/>
<Vtx X="19" Y="-17" Z="7" S="-145" T="-17" R="12" G="242" B="126" A="255"/>
<Vtx X="10" Y="-9" Z="8" S="-145" T="-81" R="30" G="219" B="118" A="255"/>
<Vtx X="12" Y="4" Z="8" S="-4" T="-71" R="11" G="0" B="127" A="255"/>
<Vtx X="8" Y="2" Z="8" S="-21" T="-99" R="11" G="0" B="127" A="255"/>
<Vtx X="5" Y="4" Z="8" S="-8" T="-121" R="11" G="0" B="127" A="255"/>
<Vtx X="4" Y="-5" Z="8" S="-59" T="-133" R="8" G="0" B="127" A="255"/>
<Vtx X="4" Y="7" Z="8" S="13" T="-127" R="11" G="0" B="127" A="255"/>
<Vtx X="1" Y="2" Z="9" S="-26" T="-145" R="11" G="0" B="127" A="255"/>
<Vtx X="5" Y="11" Z="8" S="35" T="-119" R="11" G="0" B="127" A="255"/>
<Vtx X="-2" Y="11" Z="9" S="35" T="-119" R="10" G="0" B="127" A="255"/>
<Vtx X="-1" Y="7" Z="9" S="13" T="-127" R="10" G="0" B="127" A="255"/>
<Vtx X="-2" Y="-5" Z="9" S="-59" T="-133" R="14" G="0" B="126" A="255"/>
<Vtx X="1" Y="2" Z="9" S="-26" T="-145" R="11" G="0" B="127" A="255"/>
<Vtx X="-1" Y="7" Z="9" S="13" T="-127" R="10" G="0" B="127" A="255"/>
<Vtx X="-2" Y="4" Z="9" S="-8" T="-121" R="10" G="0" B="127" A="255"/>
<Vtx X="-6" Y="2" Z="9" S="-21" T="-99" R="10" G="0" B="127" A="255"/>
<Vtx X="-19" Y="0" Z="10" S="-17" T="-17" R="227" G="244" B="123" A="255"/>
<Vtx X="-10" Y="4" Z="9" S="-4" T="-71" R="10" G="0" B="127" A="255"/>
<Vtx X="-11" Y="7" Z="10" S="23" T="-65" R="10" G="0" B="127" A="255"/>
<Vtx X="-19" Y="10" Z="10" S="47" T="-17" R="243" G="4" B="126" A="255"/>
<Vtx X="-9" Y="11" Z="9" S="45" T="-73" R="10" G="0" B="127" A="255"/>
<Vtx X="-6" Y="12" Z="9" S="49" T="-96" R="10" G="0" B="127" A="255"/>
<Vtx X="-19" Y="0" Z="4" S="-17" T="19" R="135" G="218" B="250" A="255"/>
<Vtx X="-14" Y="-9" Z="3" S="-81" T="19" R="131" G="236" B="0" A="255"/>
<Vtx X="-14" Y="-6" Z="-6" S="-81" T="111" R="151" G="232" B="189" A="255"/>
<Vtx X="-18" Y="0" Z="-5" S="-17" T="111" R="156" G="227" B="183" A="255"/>
<Vtx X="-18" Y="8" Z="-5" S="47" T="111" R="166" G="18" B="168" A="255"/>
<Vtx X="-18" Y="8" Z="-5" S="47" T="111" R="166" G="18" B="168" A="255"/>
<Vtx X="-19" Y="0" Z="4" S="-17" T="19" R="135" G="218" B="250" A="255"/>
<Vtx X="-20" Y="10" Z="4" S="47" T="19" R="131" G="20" B="247" A="255"/>
<Vtx X="-19" Y="10" Z="10" S="47" T="-17" R="243" G="4" B="126" A="255"/>
<Vtx X="-9" Y="2" Z="-8" S="-17" T="-17" R="222" G="249" B="134" A="255"/>
<Vtx X="-18" Y="0" Z="-5" S="-17" T="111" R="156" G="227" B="183" A="255"/>
<Vtx X="-9" Y="6" Z="-8" S="15" T="-17" R="225" G="11" B="133" A="255"/>
<Vtx X="-14" Y="-6" Z="-6" S="-81" T="111" R="151" G="232" B="189" A="255"/>
<Vtx X="-7" Y="-1" Z="-8" S="-49" T="-17" R="231" G="238" B="133" A="255"/>
<Vtx X="-16" Y="-13" Z="-5" S="-273" T="-17" R="241" G="173" B="161" A="255"/>
<Vtx X="-9" Y="-7" Z="-6" S="-273" T="-81" R="205" G="176" B="171" A="255"/>
<Vtx X="-5" Y="-1" Z="-8" S="-145" T="-113" R="225" G="236" B="134" A="255"/>
<Vtx X="0" Y="-20" Z="-7" S="-273" T="-145" R="248" G="179" B="155" A="255"/>
<Vtx X="0" Y="-8" Z="-9" S="-145" T="-145" R="245" G="237" B="131" A="255"/>
<Vtx X="4" Y="-1" Z="-9" S="-145" T="-113" R="9" G="236" B="131" A="255"/>
<Vtx X="9" Y="-7" Z="-8" S="-273" T="-81" R="35" G="176" B="164" A="255"/>
<Vtx X="16" Y="-13" Z="-8" S="-273" T="-17" R="255" G="173" B="160" A="255"/>
<Vtx X="9" Y="-7" Z="-8" S="-273" T="-81" R="35" G="176" B="164" A="255"/>
<Vtx X="4" Y="-1" Z="-9" S="-145" T="-113" R="9" G="236" B="131" A="255"/>
<Vtx X="7" Y="-1" Z="-9" S="-49" T="-17" R="3" G="238" B="130" A="255"/>
<Vtx X="14" Y="-6" Z="-8" S="-81" T="111" R="92" G="232" B="171" A="255"/>
<Vtx X="9" Y="-9" Z="1" S="-180" T="-81" R="53" G="144" B="226" A="255"/>
<Vtx X="18" Y="-17" Z="0" S="-180" T="-17" R="7" G="134" B="221" A="255"/>
<Vtx X="10" Y="-9" Z="8" S="-145" T="-81" R="30" G="219" B="118" A="255"/>
<Vtx X="19" Y="-17" Z="7" S="-145" T="-17" R="12" G="242" B="126" A="255"/>
<Vtx X="1" Y="-27" Z="9" S="-145" T="-145" R="11" G="237" B="125" A="255"/>
<Vtx X="1" Y="-4" Z="9" S="-59" T="-145" R="11" G="1" B="127" A="255"/>
<Vtx X="4" Y="-5" Z="8" S="-59" T="-133" R="8" G="0" B="127" A="255"/>
<Vtx X="-7" Y="-9" Z="9" S="-145" T="-81" R="247" G="219" B="121" A="255"/>
<Vtx X="-8" Y="-9" Z="3" S="-180" T="-81" R="199" G="144" B="235" A="255"/>
<Vtx X="-17" Y="-17" Z="3" S="-180" T="-17" R="243" G="134" B="223" A="255"/>
<Vtx X="-16" Y="-17" Z="10" S="-145" T="-17" R="9" G="242" B="126" A="255"/>
<Vtx X="-14" Y="-9" Z="10" S="-81" T="-17" R="229" G="250" B="124" A="255"/>
<Vtx X="-16" Y="-17" Z="10" S="-145" T="-17" R="9" G="242" B="126" A="255"/>
<Vtx X="-7" Y="-9" Z="9" S="-145" T="-81" R="247" G="219" B="121" A="255"/>
<Vtx X="-19" Y="0" Z="10" S="-17" T="-17" R="227" G="244" B="123" A="255"/>
<Vtx X="-2" Y="-5" Z="9" S="-59" T="-133" R="14" G="0" B="126" A="255"/>
<Vtx X="1" Y="-4" Z="9" S="-59" T="-145" R="11" G="1" B="127" A="255"/>
<Vtx X="-14" Y="-9" Z="3" S="-81" T="19" R="131" G="236" B="0" A="255"/>
<Vtx X="-17" Y="-17" Z="3" S="-145" T="19" R="243" G="134" B="223" A="255"/>
<Vtx X="-16" Y="-13" Z="-5" S="-145" T="111" R="241" G="173" B="161" A="255"/>
<Vtx X="-14" Y="-6" Z="-6" S="-81" T="111" R="151" G="232" B="189" A="255"/>
<Vtx X="16" Y="-13" Z="-8" S="-145" T="111" R="255" G="173" B="160" A="255"/>
<Vtx X="14" Y="-6" Z="-8" S="-81" T="111" R="92" G="232" B="171" A="255"/>
<Vtx X="16" Y="-9" Z="1" S="-81" T="19" R="124" G="236" B="235" A="255"/>
<Vtx X="18" Y="-17" Z="0" S="-145" T="19" R="7" G="134" B="221" A="255"/>
<Vtx X="-17" Y="17" Z="3" S="147" T="-17" R="159" G="69" B="210" A="255"/>
<Vtx X="-9" Y="17" Z="-6" S="239" T="-81" R="222" G="78" B="161" A="255"/>
<Vtx X="-16" Y="14" Z="-5" S="239" T="-17" R="185" G="65" B="172" A="255"/>
<Vtx X="-8" Y="22" Z="3" S="147" T="-81" R="234" G="112" B="200" A="255"/>
<Vtx X="-16" Y="-13" Z="-5" S="-273" T="-17" R="241" G="173" B="161" A="255"/>
<Vtx X="-8" Y="-9" Z="3" S="-180" T="-81" R="199" G="144" B="235" A="255"/>
<Vtx X="-17" Y="-17" Z="3" S="-180" T="-17" R="243" G="134" B="223" A="255"/>
<Vtx X="-9" Y="-7" Z="-6" S="-273" T="-81" R="205" G="176" B="171" A="255"/>
<Vtx X="1" Y="-27" Z="2" S="-180" T="-145" R="254" G="133" B="223" A="255"/>
<Vtx X="0" Y="-20" Z="-7" S="-273" T="-145" R="248" G="179" B="155" A="255"/>
<Vtx X="9" Y="-7" Z="-8" S="-273" T="-81" R="35" G="176" B="164" A="255"/>
<Vtx X="9" Y="-9" Z="1" S="-180" T="-81" R="53" G="144" B="226" A="255"/>
<Vtx X="1" Y="-27" Z="9" S="-145" T="-145" R="11" G="237" B="125" A="255"/>
</Vertex>

View File

@ -0,0 +1,26 @@
<Vertex Version="0">
<Vtx X="13" Y="7" Z="7" S="23" T="-65" R="11" G="0" B="127" A="255"/>
<Vtx X="12" Y="11" Z="8" S="45" T="-73" R="11" G="0" B="127" A="255"/>
<Vtx X="8" Y="12" Z="8" S="49" T="-96" R="11" G="0" B="127" A="255"/>
<Vtx X="4" Y="7" Z="8" S="13" T="-127" R="11" G="0" B="127" A="255"/>
<Vtx X="5" Y="11" Z="8" S="35" T="-119" R="11" G="0" B="127" A="255"/>
<Vtx X="8" Y="2" Z="8" S="-21" T="-99" R="11" G="0" B="127" A="255"/>
<Vtx X="5" Y="4" Z="8" S="-8" T="-121" R="11" G="0" B="127" A="255"/>
<Vtx X="12" Y="4" Z="8" S="-4" T="-71" R="11" G="0" B="127" A="255"/>
<Vtx X="-6" Y="12" Z="9" S="49" T="-96" R="10" G="0" B="127" A="255"/>
<Vtx X="-9" Y="11" Z="9" S="45" T="-73" R="10" G="0" B="127" A="255"/>
<Vtx X="-11" Y="7" Z="10" S="23" T="-65" R="10" G="0" B="127" A="255"/>
<Vtx X="-6" Y="2" Z="9" S="-21" T="-99" R="10" G="0" B="127" A="255"/>
<Vtx X="-10" Y="4" Z="9" S="-4" T="-71" R="10" G="0" B="127" A="255"/>
<Vtx X="-1" Y="7" Z="9" S="13" T="-127" R="10" G="0" B="127" A="255"/>
<Vtx X="-2" Y="4" Z="9" S="-8" T="-121" R="10" G="0" B="127" A="255"/>
<Vtx X="-2" Y="11" Z="9" S="35" T="-119" R="10" G="0" B="127" A="255"/>
<Vtx X="4" Y="-5" Z="8" S="-59" T="-133" R="8" G="0" B="127" A="255"/>
<Vtx X="1" Y="2" Z="9" S="-26" T="-145" R="11" G="0" B="127" A="255"/>
<Vtx X="1" Y="1" Z="7" S="-26" T="-145" R="225" G="243" B="123" A="255"/>
<Vtx X="-2" Y="-5" Z="9" S="-59" T="-133" R="14" G="0" B="126" A="255"/>
<Vtx X="-1" Y="-5" Z="7" S="-59" T="-133" R="74" G="57" B="86" A="255"/>
<Vtx X="1" Y="-4" Z="9" S="-59" T="-145" R="11" G="1" B="127" A="255"/>
<Vtx X="1" Y="-4" Z="7" S="-59" T="-145" R="10" G="44" B="119" A="255"/>
<Vtx X="4" Y="-5" Z="7" S="-59" T="-133" R="198" G="57" B="98" A="255"/>
</Vertex>

View File

@ -0,0 +1,6 @@
<Vertex Version="0">
<Vtx X="4" Y="-5" Z="7" S="1008" T="1008" R="198" G="57" B="98" A="255"/>
<Vtx X="1" Y="1" Z="7" S="1008" T="582" R="225" G="243" B="123" A="255"/>
<Vtx X="1" Y="-4" Z="7" S="883" T="967" R="10" G="44" B="119" A="255"/>
<Vtx X="-1" Y="-5" Z="7" S="1008" T="1008" R="74" G="57" B="86" A="255"/>
</Vertex>

View File

@ -0,0 +1,58 @@
<Vertex Version="0">
<Vtx X="19" Y="17" Z="6" S="111" T="-11" R="103" G="230" B="69" A="255"/>
<Vtx X="18" Y="17" Z="0" S="111" T="19" R="87" G="69" B="194" A="255"/>
<Vtx X="21" Y="23" Z="4" S="111" T="19" R="100" G="245" B="178" A="255"/>
<Vtx X="21" Y="23" Z="10" S="111" T="-11" R="73" G="199" B="87" A="255"/>
<Vtx X="22" Y="27" Z="4" S="111" T="19" R="72" G="242" B="152" A="255"/>
<Vtx X="22" Y="25" Z="9" S="111" T="-11" R="93" G="225" B="81" A="255"/>
<Vtx X="27" Y="35" Z="9" S="111" T="-11" R="106" G="67" B="20" A="255"/>
<Vtx X="10" Y="22" Z="7" S="117" T="-81" R="210" G="73" B="94" A="255"/>
<Vtx X="19" Y="17" Z="6" S="117" T="-17" R="103" G="230" B="69" A="255"/>
<Vtx X="21" Y="23" Z="10" S="117" T="-17" R="73" G="199" B="87" A="255"/>
<Vtx X="13" Y="27" Z="11" S="117" T="-81" R="178" G="10" B="100" A="255"/>
<Vtx X="22" Y="25" Z="9" S="117" T="-17" R="93" G="225" B="81" A="255"/>
<Vtx X="16" Y="33" Z="11" S="117" T="-81" R="209" G="73" B="93" A="255"/>
<Vtx X="27" Y="35" Z="9" S="117" T="-81" R="106" G="67" B="20" A="255"/>
<Vtx X="12" Y="27" Z="5" S="147" T="-81" R="171" G="69" B="191" A="255"/>
<Vtx X="9" Y="22" Z="1" S="147" T="-81" R="12" G="111" B="196" A="255"/>
<Vtx X="18" Y="17" Z="0" S="147" T="-17" R="87" G="69" B="194" A="255"/>
<Vtx X="9" Y="22" Z="1" S="147" T="-81" R="12" G="111" B="196" A="255"/>
<Vtx X="12" Y="27" Z="5" S="147" T="-81" R="171" G="69" B="191" A="255"/>
<Vtx X="21" Y="23" Z="4" S="147" T="-17" R="100" G="245" B="178" A="255"/>
<Vtx X="17" Y="34" Z="5" S="147" T="-81" R="209" G="96" B="187" A="255"/>
<Vtx X="16" Y="33" Z="11" S="117" T="-81" R="209" G="73" B="93" A="255"/>
<Vtx X="27" Y="35" Z="9" S="147" T="-81" R="106" G="67" B="20" A="255"/>
<Vtx X="22" Y="27" Z="4" S="147" T="-17" R="72" G="242" B="152" A="255"/>
<Vtx X="27" Y="35" Z="9" S="147" T="-17" R="106" G="67" B="20" A="255"/>
<Vtx X="10" Y="22" Z="7" S="117" T="-81" R="210" G="73" B="94" A="255"/>
<Vtx X="13" Y="27" Z="11" S="117" T="-81" R="178" G="10" B="100" A="255"/>
<Vtx X="-16" Y="17" Z="9" S="111" T="-11" R="166" G="230" B="86" A="255"/>
<Vtx X="-19" Y="23" Z="8" S="111" T="19" R="144" G="245" B="197" A="255"/>
<Vtx X="-17" Y="17" Z="3" S="111" T="19" R="159" G="69" B="210" A="255"/>
<Vtx X="-18" Y="23" Z="13" S="111" T="-11" R="199" G="199" B="98" A="255"/>
<Vtx X="-20" Y="27" Z="8" S="111" T="19" R="167" G="242" B="166" A="255"/>
<Vtx X="-18" Y="23" Z="13" S="111" T="-11" R="199" G="199" B="98" A="255"/>
<Vtx X="-19" Y="25" Z="13" S="111" T="-11" R="179" G="225" B="96" A="255"/>
<Vtx X="-20" Y="27" Z="8" S="111" T="19" R="167" G="242" B="166" A="255"/>
<Vtx X="-24" Y="35" Z="13" S="111" T="-11" R="155" G="67" B="38" A="255"/>
<Vtx X="-7" Y="22" Z="8" S="117" T="-81" R="62" G="73" B="84" A="255"/>
<Vtx X="-18" Y="23" Z="13" S="117" T="-17" R="199" G="199" B="98" A="255"/>
<Vtx X="-16" Y="17" Z="9" S="117" T="-17" R="166" G="230" B="86" A="255"/>
<Vtx X="-9" Y="27" Z="13" S="117" T="-81" R="94" G="10" B="85" A="255"/>
<Vtx X="-8" Y="22" Z="3" S="147" T="-81" R="234" G="112" B="200" A="255"/>
<Vtx X="-10" Y="27" Z="7" S="147" T="-81" R="72" G="69" B="177" A="255"/>
<Vtx X="-17" Y="17" Z="3" S="147" T="-17" R="159" G="69" B="210" A="255"/>
<Vtx X="-19" Y="23" Z="8" S="147" T="-17" R="144" G="245" B="197" A="255"/>
<Vtx X="-14" Y="34" Z="8" S="147" T="-81" R="34" G="96" B="180" A="255"/>
<Vtx X="-20" Y="27" Z="8" S="147" T="-17" R="167" G="242" B="166" A="255"/>
<Vtx X="-24" Y="35" Z="13" S="147" T="-17" R="155" G="67" B="38" A="255"/>
<Vtx X="-13" Y="33" Z="13" S="117" T="-81" R="62" G="73" B="83" A="255"/>
<Vtx X="-14" Y="34" Z="8" S="147" T="-81" R="34" G="96" B="180" A="255"/>
<Vtx X="-24" Y="35" Z="13" S="147" T="-81" R="155" G="67" B="38" A="255"/>
<Vtx X="-13" Y="33" Z="13" S="117" T="-81" R="62" G="73" B="83" A="255"/>
<Vtx X="-10" Y="27" Z="7" S="147" T="-81" R="72" G="69" B="177" A="255"/>
<Vtx X="-9" Y="27" Z="13" S="117" T="-81" R="94" G="10" B="85" A="255"/>
<Vtx X="-19" Y="25" Z="13" S="117" T="-17" R="179" G="225" B="96" A="255"/>
<Vtx X="-24" Y="35" Z="13" S="117" T="-81" R="155" G="67" B="38" A="255"/>
<Vtx X="-18" Y="23" Z="13" S="117" T="-17" R="199" G="199" B="98" A="255"/>
</Vertex>

View File

@ -0,0 +1,267 @@
<Vertex Version="0">
<Vtx X="5" Y="5" Z="8" S="422" T="14" R="139" G="208" B="12" A="255"/>
<Vtx X="5" Y="9" Z="8" S="422" T="14" R="137" G="44" B="8" A="255"/>
<Vtx X="8" Y="7" Z="4" S="206" T="14" R="13" G="192" B="147" A="255"/>
<Vtx X="5" Y="7" Z="8" S="422" T="-50" R="129" G="0" B="6" A="255"/>
<Vtx X="6" Y="5" Z="9" S="462" T="14" R="196" G="229" B="109" A="255"/>
<Vtx X="6" Y="4" Z="8" S="422" T="78" R="166" G="166" B="2" A="255"/>
<Vtx X="8" Y="7" Z="4" S="206" T="142" R="13" G="192" B="147" A="255"/>
<Vtx X="7" Y="3" Z="8" S="422" T="142" R="206" G="139" B="8" A="255"/>
<Vtx X="9" Y="3" Z="8" S="422" T="206" R="0" G="129" B="255" A="255"/>
<Vtx X="11" Y="3" Z="8" S="422" T="142" R="54" G="141" B="251" A="255"/>
<Vtx X="10" Y="4" Z="9" S="462" T="142" R="36" G="188" B="101" A="255"/>
<Vtx X="11" Y="4" Z="8" S="422" T="78" R="90" G="167" B="245" A="255"/>
<Vtx X="12" Y="5" Z="7" S="422" T="14" R="119" G="212" B="244" A="255"/>
<Vtx X="12" Y="9" Z="7" S="422" T="14" R="117" G="48" B="248" A="255"/>
<Vtx X="12" Y="7" Z="7" S="422" T="-50" R="126" G="0" B="241" A="255"/>
<Vtx X="12" Y="9" Z="8" S="462" T="14" R="78" G="27" B="97" A="255"/>
<Vtx X="11" Y="10" Z="8" S="422" T="78" R="89" G="90" B="243" A="255"/>
<Vtx X="12" Y="9" Z="8" S="462" T="14" R="78" G="27" B="97" A="255"/>
<Vtx X="12" Y="9" Z="7" S="422" T="14" R="117" G="48" B="248" A="255"/>
<Vtx X="8" Y="7" Z="4" S="206" T="142" R="13" G="192" B="147" A="255"/>
<Vtx X="11" Y="11" Z="8" S="422" T="142" R="52" G="116" B="255" A="255"/>
<Vtx X="9" Y="11" Z="8" S="422" T="206" R="255" G="127" B="255" A="255"/>
<Vtx X="7" Y="11" Z="8" S="422" T="142" R="180" G="102" B="5" A="255"/>
<Vtx X="6" Y="10" Z="8" S="422" T="78" R="165" G="89" B="3" A="255"/>
<Vtx X="5" Y="9" Z="8" S="422" T="14" R="137" G="44" B="8" A="255"/>
<Vtx X="6" Y="9" Z="9" S="462" T="14" R="196" G="27" B="109" A="255"/>
<Vtx X="5" Y="7" Z="8" S="422" T="-50" R="129" G="0" B="6" A="255"/>
<Vtx X="6" Y="7" Z="9" S="462" T="-50" R="189" G="0" B="108" A="255"/>
<Vtx X="6" Y="5" Z="9" S="462" T="14" R="196" G="229" B="109" A="255"/>
<Vtx X="7" Y="7" Z="9" S="462" T="-50" R="236" G="0" B="125" A="255"/>
<Vtx X="7" Y="6" Z="9" S="462" T="14" R="232" G="243" B="124" A="255"/>
<Vtx X="6" Y="5" Z="9" S="462" T="78" R="210" G="200" B="104" A="255"/>
<Vtx X="6" Y="4" Z="8" S="422" T="78" R="166" G="166" B="2" A="255"/>
<Vtx X="6" Y="5" Z="9" S="462" T="78" R="210" G="200" B="104" A="255"/>
<Vtx X="6" Y="5" Z="9" S="462" T="14" R="196" G="229" B="109" A="255"/>
<Vtx X="7" Y="4" Z="9" S="462" T="142" R="238" G="188" B="106" A="255"/>
<Vtx X="7" Y="3" Z="8" S="422" T="142" R="206" G="139" B="8" A="255"/>
<Vtx X="9" Y="3" Z="8" S="422" T="206" R="0" G="129" B="255" A="255"/>
<Vtx X="9" Y="4" Z="9" S="462" T="206" R="9" G="183" B="104" A="255"/>
<Vtx X="10" Y="4" Z="9" S="462" T="142" R="36" G="188" B="101" A="255"/>
<Vtx X="9" Y="5" Z="9" S="462" T="206" R="10" G="225" B="123" A="255"/>
<Vtx X="10" Y="5" Z="9" S="462" T="142" R="23" G="221" B="120" A="255"/>
<Vtx X="11" Y="5" Z="9" S="462" T="78" R="64" G="200" B="95" A="255"/>
<Vtx X="11" Y="4" Z="8" S="422" T="78" R="90" G="167" B="245" A="255"/>
<Vtx X="12" Y="5" Z="8" S="462" T="14" R="78" G="229" B="97" A="255"/>
<Vtx X="12" Y="5" Z="7" S="422" T="14" R="119" G="212" B="244" A="255"/>
<Vtx X="12" Y="7" Z="7" S="422" T="-50" R="126" G="0" B="241" A="255"/>
<Vtx X="12" Y="7" Z="8" S="462" T="-50" R="85" G="0" B="95" A="255"/>
<Vtx X="12" Y="9" Z="8" S="462" T="14" R="78" G="27" B="97" A="255"/>
<Vtx X="12" Y="7" Z="8" S="462" T="-50" R="85" G="0" B="95" A="255"/>
<Vtx X="12" Y="7" Z="7" S="422" T="-50" R="126" G="0" B="241" A="255"/>
<Vtx X="11" Y="7" Z="9" S="462" T="-50" R="42" G="0" B="120" A="255"/>
<Vtx X="11" Y="9" Z="9" S="462" T="14" R="45" G="13" B="118" A="255"/>
<Vtx X="11" Y="10" Z="9" S="462" T="78" R="64" G="56" B="95" A="255"/>
<Vtx X="11" Y="10" Z="8" S="422" T="78" R="89" G="90" B="243" A="255"/>
<Vtx X="10" Y="10" Z="9" S="462" T="142" R="36" G="68" B="101" A="255"/>
<Vtx X="11" Y="11" Z="8" S="422" T="142" R="52" G="116" B="255" A="255"/>
<Vtx X="9" Y="11" Z="8" S="422" T="206" R="255" G="127" B="255" A="255"/>
<Vtx X="9" Y="10" Z="9" S="462" T="206" R="9" G="73" B="104" A="255"/>
<Vtx X="7" Y="10" Z="9" S="462" T="142" R="238" G="68" B="106" A="255"/>
<Vtx X="7" Y="11" Z="8" S="422" T="142" R="180" G="102" B="5" A="255"/>
<Vtx X="6" Y="10" Z="8" S="422" T="78" R="165" G="89" B="3" A="255"/>
<Vtx X="6" Y="10" Z="9" S="462" T="78" R="210" G="56" B="104" A="255"/>
<Vtx X="6" Y="9" Z="9" S="462" T="14" R="196" G="27" B="109" A="255"/>
<Vtx X="7" Y="9" Z="9" S="462" T="14" R="232" G="13" B="124" A="255"/>
<Vtx X="6" Y="10" Z="9" S="462" T="78" R="210" G="56" B="104" A="255"/>
<Vtx X="6" Y="9" Z="9" S="462" T="14" R="196" G="27" B="109" A="255"/>
<Vtx X="7" Y="7" Z="9" S="462" T="-50" R="236" G="0" B="125" A="255"/>
<Vtx X="6" Y="7" Z="9" S="462" T="-50" R="189" G="0" B="108" A="255"/>
<Vtx X="7" Y="9" Z="9" S="462" T="78" R="238" G="29" B="122" A="255"/>
<Vtx X="7" Y="9" Z="9" S="462" T="142" R="255" G="35" B="122" A="255"/>
<Vtx X="7" Y="9" Z="9" S="526" T="142" R="253" G="14" B="126" A="255"/>
<Vtx X="7" Y="9" Z="9" S="526" T="78" R="232" G="13" B="124" A="255"/>
<Vtx X="7" Y="7" Z="9" S="590" T="142" R="254" G="0" B="127" A="255"/>
<Vtx X="7" Y="7" Z="9" S="590" T="78" R="236" G="0" B="125" A="255"/>
<Vtx X="7" Y="6" Z="9" S="526" T="78" R="232" G="243" B="124" A="255"/>
<Vtx X="7" Y="6" Z="9" S="526" T="142" R="253" G="242" B="126" A="255"/>
<Vtx X="7" Y="5" Z="9" S="462" T="78" R="238" G="227" B="122" A="255"/>
<Vtx X="7" Y="5" Z="9" S="462" T="142" R="255" G="221" B="122" A="255"/>
<Vtx X="6" Y="5" Z="9" S="462" T="78" R="210" G="200" B="104" A="255"/>
<Vtx X="6" Y="5" Z="9" S="462" T="78" R="210" G="200" B="104" A="255"/>
<Vtx X="7" Y="5" Z="9" S="462" T="78" R="238" G="227" B="122" A="255"/>
<Vtx X="7" Y="6" Z="9" S="462" T="14" R="232" G="243" B="124" A="255"/>
<Vtx X="7" Y="4" Z="9" S="462" T="142" R="238" G="188" B="106" A="255"/>
<Vtx X="7" Y="5" Z="9" S="462" T="142" R="255" G="221" B="122" A="255"/>
<Vtx X="9" Y="5" Z="9" S="462" T="206" R="10" G="225" B="123" A="255"/>
<Vtx X="9" Y="4" Z="9" S="462" T="206" R="9" G="183" B="104" A="255"/>
<Vtx X="9" Y="6" Z="9" S="526" T="206" R="11" G="243" B="126" A="255"/>
<Vtx X="7" Y="6" Z="9" S="526" T="142" R="253" G="242" B="126" A="255"/>
<Vtx X="9" Y="7" Z="9" S="590" T="206" R="11" G="0" B="127" A="255"/>
<Vtx X="10" Y="6" Z="9" S="526" T="142" R="25" G="242" B="124" A="255"/>
<Vtx X="10" Y="5" Z="9" S="462" T="142" R="23" G="221" B="120" A="255"/>
<Vtx X="10" Y="5" Z="9" S="462" T="78" R="39" G="227" B="117" A="255"/>
<Vtx X="11" Y="6" Z="9" S="526" T="78" R="45" G="243" B="118" A="255"/>
<Vtx X="10" Y="7" Z="9" S="590" T="142" R="24" G="0" B="125" A="255"/>
<Vtx X="11" Y="7" Z="9" S="590" T="78" R="42" G="0" B="120" A="255"/>
<Vtx X="10" Y="7" Z="9" S="590" T="142" R="24" G="0" B="125" A="255"/>
<Vtx X="11" Y="7" Z="9" S="590" T="78" R="42" G="0" B="120" A="255"/>
<Vtx X="11" Y="9" Z="9" S="526" T="78" R="45" G="13" B="118" A="255"/>
<Vtx X="10" Y="9" Z="9" S="526" T="142" R="25" G="14" B="124" A="255"/>
<Vtx X="10" Y="9" Z="9" S="462" T="78" R="39" G="29" B="117" A="255"/>
<Vtx X="10" Y="9" Z="9" S="462" T="142" R="23" G="35" B="120" A="255"/>
<Vtx X="11" Y="10" Z="9" S="462" T="78" R="64" G="56" B="95" A="255"/>
<Vtx X="11" Y="9" Z="9" S="462" T="14" R="45" G="13" B="118" A="255"/>
<Vtx X="10" Y="10" Z="9" S="462" T="142" R="36" G="68" B="101" A="255"/>
<Vtx X="9" Y="9" Z="9" S="462" T="206" R="10" G="31" B="123" A="255"/>
<Vtx X="9" Y="10" Z="9" S="462" T="206" R="9" G="73" B="104" A="255"/>
<Vtx X="7" Y="10" Z="9" S="462" T="142" R="238" G="68" B="106" A="255"/>
<Vtx X="7" Y="9" Z="9" S="462" T="142" R="255" G="35" B="122" A="255"/>
<Vtx X="6" Y="10" Z="9" S="462" T="78" R="210" G="56" B="104" A="255"/>
<Vtx X="9" Y="9" Z="9" S="526" T="206" R="11" G="13" B="126" A="255"/>
<Vtx X="7" Y="9" Z="9" S="526" T="142" R="253" G="14" B="126" A="255"/>
<Vtx X="7" Y="9" Z="9" S="526" T="142" R="253" G="14" B="126" A="255"/>
<Vtx X="9" Y="7" Z="9" S="590" T="206" R="11" G="0" B="127" A="255"/>
<Vtx X="9" Y="9" Z="9" S="526" T="206" R="11" G="13" B="126" A="255"/>
<Vtx X="7" Y="7" Z="9" S="590" T="142" R="254" G="0" B="127" A="255"/>
<Vtx X="7" Y="6" Z="9" S="526" T="142" R="253" G="242" B="126" A="255"/>
<Vtx X="10" Y="9" Z="9" S="526" T="142" R="25" G="14" B="124" A="255"/>
<Vtx X="10" Y="7" Z="9" S="590" T="142" R="24" G="0" B="125" A="255"/>
<Vtx X="10" Y="6" Z="9" S="526" T="142" R="25" G="242" B="124" A="255"/>
<Vtx X="10" Y="9" Z="9" S="462" T="142" R="23" G="35" B="120" A="255"/>
<Vtx X="9" Y="9" Z="9" S="462" T="206" R="10" G="31" B="123" A="255"/>
<Vtx X="11" Y="7" Z="9" S="462" T="-50" R="42" G="0" B="120" A="255"/>
<Vtx X="12" Y="5" Z="8" S="462" T="14" R="78" G="229" B="97" A="255"/>
<Vtx X="12" Y="7" Z="8" S="462" T="-50" R="85" G="0" B="95" A="255"/>
<Vtx X="11" Y="6" Z="9" S="462" T="14" R="45" G="243" B="118" A="255"/>
<Vtx X="11" Y="5" Z="9" S="462" T="78" R="64" G="200" B="95" A="255"/>
<Vtx X="10" Y="5" Z="9" S="462" T="78" R="39" G="227" B="117" A="255"/>
<Vtx X="11" Y="5" Z="9" S="462" T="78" R="64" G="200" B="95" A="255"/>
<Vtx X="10" Y="5" Z="9" S="462" T="78" R="39" G="227" B="117" A="255"/>
<Vtx X="10" Y="5" Z="9" S="462" T="142" R="23" G="221" B="120" A="255"/>
<Vtx X="-2" Y="5" Z="9" S="422" T="14" R="117" G="208" B="248" A="255"/>
<Vtx X="-6" Y="7" Z="5" S="206" T="14" R="224" G="192" B="151" A="255"/>
<Vtx X="-2" Y="9" Z="9" S="422" T="14" R="119" G="44" B="244" A="255"/>
<Vtx X="-2" Y="7" Z="9" S="422" T="-50" R="126" G="0" B="241" A="255"/>
<Vtx X="-3" Y="9" Z="10" S="462" T="14" R="78" G="27" B="97" A="255"/>
<Vtx X="-3" Y="10" Z="9" S="422" T="78" R="89" G="90" B="244" A="255"/>
<Vtx X="-6" Y="7" Z="5" S="206" T="142" R="224" G="192" B="151" A="255"/>
<Vtx X="-4" Y="11" Z="9" S="422" T="142" R="76" G="102" B="252" A="255"/>
<Vtx X="-6" Y="11" Z="9" S="422" T="206" R="1" G="127" B="254" A="255"/>
<Vtx X="-8" Y="11" Z="9" S="422" T="142" R="204" G="116" B="7" A="255"/>
<Vtx X="-9" Y="10" Z="9" S="422" T="78" R="166" G="90" B="3" A="255"/>
<Vtx X="-10" Y="9" Z="9" S="422" T="14" R="139" G="48" B="12" A="255"/>
<Vtx X="-9" Y="9" Z="10" S="462" T="14" R="196" G="27" B="109" A="255"/>
<Vtx X="-9" Y="9" Z="10" S="462" T="14" R="196" G="27" B="109" A="255"/>
<Vtx X="-10" Y="9" Z="9" S="422" T="14" R="139" G="48" B="12" A="255"/>
<Vtx X="-10" Y="7" Z="9" S="422" T="-50" R="129" G="0" B="6" A="255"/>
<Vtx X="-10" Y="5" Z="9" S="422" T="14" R="137" G="212" B="8" A="255"/>
<Vtx X="-6" Y="7" Z="5" S="206" T="14" R="224" G="192" B="151" A="255"/>
<Vtx X="-9" Y="4" Z="9" S="422" T="78" R="166" G="166" B="3" A="255"/>
<Vtx X="-8" Y="3" Z="9" S="422" T="142" R="202" G="141" B="4" A="255"/>
<Vtx X="-8" Y="4" Z="10" S="462" T="142" R="238" G="188" B="106" A="255"/>
<Vtx X="-6" Y="3" Z="9" S="422" T="206" R="0" G="129" B="254" A="255"/>
<Vtx X="-6" Y="7" Z="5" S="206" T="142" R="224" G="192" B="151" A="255"/>
<Vtx X="-4" Y="3" Z="9" S="422" T="142" R="52" G="140" B="255" A="255"/>
<Vtx X="-3" Y="4" Z="9" S="422" T="78" R="89" G="167" B="244" A="255"/>
<Vtx X="-2" Y="5" Z="9" S="422" T="14" R="117" G="208" B="248" A="255"/>
<Vtx X="-3" Y="5" Z="10" S="462" T="14" R="78" G="229" B="97" A="255"/>
<Vtx X="-2" Y="7" Z="9" S="422" T="-50" R="126" G="0" B="241" A="255"/>
<Vtx X="-3" Y="7" Z="10" S="462" T="-50" R="85" G="0" B="95" A="255"/>
<Vtx X="-2" Y="7" Z="9" S="422" T="-50" R="126" G="0" B="241" A="255"/>
<Vtx X="-3" Y="9" Z="10" S="462" T="14" R="78" G="27" B="97" A="255"/>
<Vtx X="-3" Y="7" Z="10" S="462" T="-50" R="85" G="0" B="95" A="255"/>
<Vtx X="-4" Y="7" Z="10" S="462" T="-50" R="42" G="0" B="120" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="462" T="14" R="45" G="13" B="118" A="255"/>
<Vtx X="-4" Y="10" Z="10" S="462" T="78" R="64" G="56" B="95" A="255"/>
<Vtx X="-3" Y="10" Z="9" S="422" T="78" R="89" G="90" B="244" A="255"/>
<Vtx X="-4" Y="10" Z="10" S="462" T="142" R="36" G="68" B="101" A="255"/>
<Vtx X="-4" Y="11" Z="9" S="422" T="142" R="76" G="102" B="252" A="255"/>
<Vtx X="-6" Y="11" Z="9" S="422" T="206" R="1" G="127" B="254" A="255"/>
<Vtx X="-6" Y="10" Z="10" S="462" T="206" R="9" G="73" B="104" A="255"/>
<Vtx X="-8" Y="10" Z="10" S="462" T="142" R="238" G="68" B="106" A="255"/>
<Vtx X="-8" Y="11" Z="9" S="422" T="142" R="204" G="116" B="7" A="255"/>
<Vtx X="-9" Y="10" Z="9" S="422" T="78" R="166" G="90" B="3" A="255"/>
<Vtx X="-8" Y="10" Z="10" S="462" T="78" R="210" G="56" B="104" A="255"/>
<Vtx X="-9" Y="9" Z="10" S="462" T="14" R="196" G="27" B="109" A="255"/>
<Vtx X="-8" Y="10" Z="10" S="462" T="78" R="210" G="56" B="104" A="255"/>
<Vtx X="-9" Y="9" Z="10" S="462" T="14" R="196" G="27" B="109" A="255"/>
<Vtx X="-8" Y="9" Z="10" S="462" T="14" R="232" G="13" B="124" A="255"/>
<Vtx X="-8" Y="7" Z="10" S="462" T="-50" R="236" G="0" B="125" A="255"/>
<Vtx X="-9" Y="7" Z="10" S="462" T="-50" R="189" G="0" B="108" A="255"/>
<Vtx X="-10" Y="7" Z="9" S="422" T="-50" R="129" G="0" B="6" A="255"/>
<Vtx X="-9" Y="5" Z="10" S="462" T="14" R="196" G="229" B="109" A="255"/>
<Vtx X="-10" Y="5" Z="9" S="422" T="14" R="137" G="212" B="8" A="255"/>
<Vtx X="-9" Y="4" Z="9" S="422" T="78" R="166" G="166" B="3" A="255"/>
<Vtx X="-8" Y="5" Z="10" S="462" T="78" R="210" G="200" B="104" A="255"/>
<Vtx X="-8" Y="4" Z="10" S="462" T="142" R="238" G="188" B="106" A="255"/>
<Vtx X="-7" Y="5" Z="10" S="462" T="142" R="255" G="221" B="122" A="255"/>
<Vtx X="-6" Y="5" Z="10" S="462" T="206" R="10" G="225" B="123" A="255"/>
<Vtx X="-6" Y="4" Z="10" S="462" T="206" R="9" G="183" B="104" A="255"/>
<Vtx X="-6" Y="3" Z="9" S="422" T="206" R="0" G="129" B="254" A="255"/>
<Vtx X="-4" Y="4" Z="10" S="462" T="142" R="36" G="188" B="101" A="255"/>
<Vtx X="-6" Y="3" Z="9" S="422" T="206" R="0" G="129" B="254" A="255"/>
<Vtx X="-4" Y="3" Z="9" S="422" T="142" R="52" G="140" B="255" A="255"/>
<Vtx X="-4" Y="4" Z="10" S="462" T="142" R="36" G="188" B="101" A="255"/>
<Vtx X="-3" Y="4" Z="9" S="422" T="78" R="89" G="167" B="244" A="255"/>
<Vtx X="-4" Y="5" Z="10" S="462" T="78" R="64" G="200" B="95" A="255"/>
<Vtx X="-3" Y="5" Z="10" S="462" T="14" R="78" G="229" B="97" A="255"/>
<Vtx X="-4" Y="6" Z="10" S="462" T="14" R="45" G="243" B="118" A="255"/>
<Vtx X="-4" Y="7" Z="10" S="462" T="-50" R="42" G="0" B="120" A="255"/>
<Vtx X="-3" Y="7" Z="10" S="462" T="-50" R="85" G="0" B="95" A="255"/>
<Vtx X="-4" Y="5" Z="10" S="462" T="78" R="39" G="227" B="117" A="255"/>
<Vtx X="-4" Y="5" Z="10" S="462" T="142" R="23" G="221" B="120" A="255"/>
<Vtx X="-4" Y="6" Z="10" S="526" T="142" R="25" G="242" B="124" A="255"/>
<Vtx X="-4" Y="6" Z="10" S="526" T="78" R="45" G="243" B="118" A="255"/>
<Vtx X="-4" Y="7" Z="10" S="590" T="142" R="24" G="0" B="125" A="255"/>
<Vtx X="-4" Y="7" Z="10" S="590" T="78" R="42" G="0" B="120" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="526" T="78" R="45" G="13" B="118" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="526" T="78" R="45" G="13" B="118" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="526" T="142" R="25" G="14" B="124" A="255"/>
<Vtx X="-4" Y="7" Z="10" S="590" T="142" R="24" G="0" B="125" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="462" T="78" R="39" G="29" B="117" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="462" T="142" R="23" G="35" B="120" A="255"/>
<Vtx X="-4" Y="10" Z="10" S="462" T="78" R="64" G="56" B="95" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="462" T="14" R="45" G="13" B="118" A="255"/>
<Vtx X="-4" Y="10" Z="10" S="462" T="142" R="36" G="68" B="101" A="255"/>
<Vtx X="-6" Y="9" Z="10" S="462" T="206" R="10" G="31" B="123" A="255"/>
<Vtx X="-6" Y="10" Z="10" S="462" T="206" R="9" G="73" B="104" A="255"/>
<Vtx X="-8" Y="10" Z="10" S="462" T="142" R="238" G="68" B="106" A="255"/>
<Vtx X="-7" Y="9" Z="10" S="462" T="142" R="255" G="35" B="122" A="255"/>
<Vtx X="-8" Y="10" Z="10" S="462" T="78" R="210" G="56" B="104" A="255"/>
<Vtx X="-8" Y="9" Z="10" S="462" T="78" R="238" G="29" B="122" A="255"/>
<Vtx X="-8" Y="9" Z="10" S="462" T="14" R="232" G="13" B="124" A="255"/>
<Vtx X="-7" Y="9" Z="11" S="526" T="142" R="253" G="14" B="126" A="255"/>
<Vtx X="-6" Y="9" Z="10" S="526" T="206" R="11" G="13" B="126" A="255"/>
<Vtx X="-7" Y="9" Z="10" S="462" T="142" R="255" G="35" B="122" A="255"/>
<Vtx X="-7" Y="9" Z="11" S="526" T="142" R="253" G="14" B="126" A="255"/>
<Vtx X="-6" Y="7" Z="10" S="590" T="206" R="11" G="0" B="127" A="255"/>
<Vtx X="-7" Y="7" Z="11" S="590" T="142" R="254" G="0" B="127" A="255"/>
<Vtx X="-8" Y="9" Z="10" S="526" T="78" R="232" G="13" B="124" A="255"/>
<Vtx X="-8" Y="9" Z="10" S="462" T="78" R="238" G="29" B="122" A="255"/>
<Vtx X="-8" Y="7" Z="10" S="590" T="78" R="236" G="0" B="125" A="255"/>
<Vtx X="-8" Y="6" Z="10" S="526" T="78" R="232" G="243" B="124" A="255"/>
<Vtx X="-7" Y="6" Z="11" S="526" T="142" R="253" G="242" B="126" A="255"/>
<Vtx X="-8" Y="5" Z="10" S="462" T="78" R="238" G="227" B="122" A="255"/>
<Vtx X="-7" Y="5" Z="10" S="462" T="142" R="255" G="221" B="122" A="255"/>
<Vtx X="-8" Y="5" Z="10" S="462" T="78" R="210" G="200" B="104" A="255"/>
<Vtx X="-8" Y="6" Z="10" S="462" T="14" R="232" G="243" B="124" A="255"/>
<Vtx X="-9" Y="5" Z="10" S="462" T="14" R="196" G="229" B="109" A="255"/>
<Vtx X="-8" Y="7" Z="10" S="462" T="-50" R="236" G="0" B="125" A="255"/>
<Vtx X="-8" Y="7" Z="10" S="462" T="-50" R="236" G="0" B="125" A="255"/>
<Vtx X="-9" Y="7" Z="10" S="462" T="-50" R="189" G="0" B="108" A="255"/>
<Vtx X="-9" Y="5" Z="10" S="462" T="14" R="196" G="229" B="109" A="255"/>
<Vtx X="-7" Y="5" Z="10" S="462" T="142" R="255" G="221" B="122" A="255"/>
<Vtx X="-6" Y="6" Z="10" S="526" T="206" R="11" G="243" B="126" A="255"/>
<Vtx X="-7" Y="6" Z="11" S="526" T="142" R="253" G="242" B="126" A="255"/>
<Vtx X="-6" Y="5" Z="10" S="462" T="206" R="10" G="225" B="123" A="255"/>
<Vtx X="-4" Y="5" Z="10" S="462" T="142" R="23" G="221" B="120" A="255"/>
<Vtx X="-4" Y="4" Z="10" S="462" T="142" R="36" G="188" B="101" A="255"/>
<Vtx X="-6" Y="4" Z="10" S="462" T="206" R="9" G="183" B="104" A="255"/>
<Vtx X="-4" Y="5" Z="10" S="462" T="78" R="64" G="200" B="95" A="255"/>
<Vtx X="-6" Y="9" Z="10" S="526" T="206" R="11" G="13" B="126" A="255"/>
<Vtx X="-6" Y="9" Z="10" S="462" T="206" R="10" G="31" B="123" A="255"/>
<Vtx X="-7" Y="9" Z="10" S="462" T="142" R="255" G="35" B="122" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="462" T="142" R="23" G="35" B="120" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="526" T="142" R="25" G="14" B="124" A="255"/>
<Vtx X="-4" Y="9" Z="10" S="526" T="142" R="25" G="14" B="124" A="255"/>
<Vtx X="-6" Y="9" Z="10" S="526" T="206" R="11" G="13" B="126" A="255"/>
<Vtx X="-6" Y="7" Z="10" S="590" T="206" R="11" G="0" B="127" A="255"/>
<Vtx X="-4" Y="7" Z="10" S="590" T="142" R="24" G="0" B="125" A="255"/>
<Vtx X="-4" Y="6" Z="10" S="526" T="142" R="25" G="242" B="124" A="255"/>
<Vtx X="-6" Y="6" Z="10" S="526" T="206" R="11" G="243" B="126" A="255"/>
<Vtx X="-7" Y="6" Z="11" S="526" T="142" R="253" G="242" B="126" A="255"/>
<Vtx X="-7" Y="7" Z="11" S="590" T="142" R="254" G="0" B="127" A="255"/>
<Vtx X="-4" Y="5" Z="10" S="462" T="142" R="23" G="221" B="120" A="255"/>
</Vertex>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_TEXEL0" 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="5898" T="5898" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_boss_soul/noise_tex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" 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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<SetPrimColor M="0" L="0" R="223" G="62" B="53" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_TEXEL0" 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="1984" T="1984" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_boss_soul/noise_tex_copy" 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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<SetPrimColor M="0" L="0" R="49" G="49" B="49" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_TEXEL0" 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_boss_soul/noise_tex_copy" 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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<SetPrimColor M="0" L="0" R="90" G="14" B="12" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_TEXEL0" 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="1984" T="1984" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_boss_soul/noise_tex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" 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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<SetPrimColor M="0" L="0" R="255" G="241" B="124" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_TEXEL0" 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="1984" T="1984" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_boss_soul/noise_tex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" 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="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<!-- <SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/> -->
<EndDisplayList/>
</DisplayList>

Binary file not shown.

View File

@ -56,6 +56,9 @@ static const ALIGN_ASSET(2) char gTriforcePiece2DL[] = dgTriforcePiece2DL;
#define dgTriforcePieceCompletedDL "__OTR__objects/object_triforce_completed/gTriforcePieceCompletedDL" #define dgTriforcePieceCompletedDL "__OTR__objects/object_triforce_completed/gTriforcePieceCompletedDL"
static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCompletedDL; static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCompletedDL;
#define dgBossSoulSkullDL "__OTR__objects/object_boss_soul/gGIBossSoulSkullDL"
static const ALIGN_ASSET(2) char gBossSoulSkullDL[] = dgBossSoulSkullDL;
// overlays // overlays
#define dgOptionsDividerChangeLangVtx "__OTR__overlays/ovl_file_choose/gOptionsDividerChangeLangVtx" #define dgOptionsDividerChangeLangVtx "__OTR__overlays/ovl_file_choose/gOptionsDividerChangeLangVtx"
static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx; static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx;

View File

@ -505,6 +505,16 @@ const std::vector<FlagTable> flagTables = {
{ RAND_INF_CHILD_FISHING, "RAND_INF_CHILD_FISHING" }, { RAND_INF_CHILD_FISHING, "RAND_INF_CHILD_FISHING" },
{ RAND_INF_ADULT_FISHING, "RAND_INF_ADULT_FISHING" }, { RAND_INF_ADULT_FISHING, "RAND_INF_ADULT_FISHING" },
{ RAND_INF_10_BIG_POES, "RAND_INF_10_BIG_POES" }, { RAND_INF_10_BIG_POES, "RAND_INF_10_BIG_POES" },
{ RAND_INF_GOHMA_SOUL, "RAND_INF_GOHMA_SOUL" },
{ RAND_INF_KING_DODONGO_SOUL, "RAND_INF_KING_DODONGO_SOUL" },
{ RAND_INF_BARINADE_SOUL, "RAND_INF_BARINADE_SOUL" },
{ RAND_INF_PHANTOM_GANON_SOUL, "RAND_INF_PHANTOM_GANON_SOUL" },
{ RAND_INF_VOLVAGIA_SOUL, "RAND_INF_VOLVAGIA_SOUL" },
{ RAND_INF_MORPHA_SOUL, "RAND_INF_MORPHA_SOUL" },
{ RAND_INF_BONGO_BONGO_SOUL, "RAND_INF_BONGO_BONGO_SOUL" },
{ RAND_INF_TWINROVA_SOUL, "RAND_INF_TWINROVA_SOUL" },
{ RAND_INF_GANON_SOUL, "RAND_INF_GANON_SOUL" },
} }, } },
}; };

View File

@ -1039,6 +1039,64 @@ void RegisterRandomizerSheikSpawn() {
}); });
} }
//Boss souls require an additional item (represented by a RAND_INF) to spawn a boss in a particular lair
void RegisterBossSouls() {
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnActorInit>([](void* actor) {
if (!gPlayState) return;
if (!IS_RANDO || !(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BOSS_SOULS))) return;
RandomizerInf rand_inf = RAND_INF_MAX;
Actor* actual = (Actor*)actor;
switch (gPlayState->sceneNum){
case SCENE_DEKU_TREE_BOSS:
rand_inf = RAND_INF_GOHMA_SOUL;
break;
case SCENE_DODONGOS_CAVERN_BOSS:
rand_inf = RAND_INF_KING_DODONGO_SOUL;
break;
case SCENE_JABU_JABU_BOSS:
rand_inf = RAND_INF_BARINADE_SOUL;
break;
case SCENE_FOREST_TEMPLE_BOSS:
rand_inf = RAND_INF_PHANTOM_GANON_SOUL;
break;
case SCENE_FIRE_TEMPLE_BOSS:
rand_inf = RAND_INF_VOLVAGIA_SOUL;
break;
case SCENE_WATER_TEMPLE_BOSS:
rand_inf = RAND_INF_MORPHA_SOUL;
break;
case SCENE_SHADOW_TEMPLE_BOSS:
rand_inf = RAND_INF_BONGO_BONGO_SOUL;
break;
case SCENE_SPIRIT_TEMPLE_BOSS:
rand_inf = RAND_INF_TWINROVA_SOUL;
break;
case SCENE_GANONDORF_BOSS:
case SCENE_GANON_BOSS:
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BOSS_SOULS) == RO_BOSS_SOULS_ON_PLUS_GANON) {
rand_inf = RAND_INF_GANON_SOUL;
}
break;
default: break;
}
//Deletes all actors in the boss category if the soul isn't found.
//Some actors, like Dark Link, Arwings, and Zora's Sapphire...?, are in this category despite not being actual bosses,
//so ignore any "boss" if `rand_inf` doesn't change from RAND_INF_MAX.
if (rand_inf != RAND_INF_MAX) {
if (!Flags_GetRandomizerInf(rand_inf) && actual->category == ACTORCAT_BOSS) {
Actor_Delete(&gPlayState->actorCtx, actual, gPlayState);
}
//Special case for Phantom Ganon's horse (and fake), as they're considered "background actors",
//but still control the boss fight flow.
if (!Flags_GetRandomizerInf(RAND_INF_PHANTOM_GANON_SOUL) && actual->id == ACTOR_EN_FHG) {
Actor_Delete(&gPlayState->actorCtx, actual, gPlayState);
}
}
});
}
void InitMods() { void InitMods() {
RegisterTTS(); RegisterTTS();
RegisterInfiniteMoney(); RegisterInfiniteMoney();
@ -1066,5 +1124,6 @@ void InitMods() {
RegisterEnemyDefeatCounts(); RegisterEnemyDefeatCounts();
RegisterAltTrapTypes(); RegisterAltTrapTypes();
RegisterRandomizerSheikSpawn(); RegisterRandomizerSheikSpawn();
RegisterBossSouls();
NameTag_RegisterHooks(); NameTag_RegisterHooks();
} }

View File

@ -1939,6 +1939,114 @@ void HintTable_Init_Item() {
Text{"a Piece of the Triforce", /*french*/"un fragment de la Triforce", /*spanish*/"un fragmento de la Trifuerza"} Text{"a Piece of the Triforce", /*french*/"un fragment de la Triforce", /*spanish*/"un fragmento de la Trifuerza"}
); );
hintTable[RHT_GOHMA_SOUL] = HintText::Item({
//obscure text
Text{"an invasive soul", "", ""},
Text{"some spider essence", "", ""},
}, {
//ambiguous text
Text{"something webbed", "", ""}
}, {
//clear text
Text{"the soul of Gohma", "", ""}}
);
hintTable[RHT_KING_DODONGO_SOUL] = HintText::Item({
//obscure text
Text{"a royal soul", "", ""},
Text{"some reptile essence", "", ""},
}, {
//ambiguous text
Text{"something explosive", "", ""}
}, {
//clear text
Text{"the soul of King Dodongo", "", ""}}
);
hintTable[RHT_BARINADE_SOUL] = HintText::Item({
//obscure text
Text{"an infectuous soul", "", ""},
Text{"some parasitic essence", "", ""},
}, {
//ambiguous text
Text{"something fishy", "", ""}
}, {
//clear text
Text("the soul of Barinade", "", "")}
);
hintTable[RHT_PHANTOM_GANON_SOUL] = HintText::Item({
//obscure text
Text{"a duplicate soul", "", ""},
Text{"some illusionary essence", "", ""},
}, {
//ambiguous text
Text{"something spectral", "", ""}
}, {
//clear text
Text{"the soul of Phantom Ganon", "", ""}}
);
hintTable[RHT_VOLVAGIA_SOUL] = HintText::Item({
//obscure text
Text{"a draconic soul", "", ""},
Text{"some magmatic essence", "", ""},
}, {
//ambiguous text
Text{"something hot", "", ""}
}, {
//clear text
Text{"the soul of Volvagia", "", ""}}
);
hintTable[RHT_MORPHA_SOUL] = HintText::Item({
//obscure text
Text{"an aquatic soul", "", ""},
Text{"some liquid essence", "", ""},
}, {
//ambiguous text
Text{"something wet", "", ""}
}, {
//clear text
Text{"the soul of Barinade", "", ""}}
);
hintTable[RHT_BONGO_BONGO_SOUL] = HintText::Item({
//obscure text
Text{"a shadowy soul", "", ""},
Text{"some handy essence", "", ""},
}, {
//ambiguous text
Text{"something dark", "", ""}
}, {
//clear text
Text{"the soul of Bongo Bongo", "", ""}}
);
hintTable[RHT_TWINROVA_SOUL] = HintText::Item({
//obscure text
Text{"old souls", "", ""},
Text{"twin essences", "", ""},
}, {
//ambiguous text
Text{"something spiritual", "", ""}
}, {
//clear text
Text{"the soul of Twinrova", "", ""}}
);
hintTable[RHT_GANON_SOUL] = HintText::Item({
//obscure text
Text{"an evil soul", "", ""},
Text{"some powerful essence", "", ""},
}, {
//ambiguous text
Text{"something strong", "", ""}
}, {
//clear text
Text{"the soul of Ganon", "", ""}}
);
hintTable[RHT_EPONA] = HintText::Item({ hintTable[RHT_EPONA] = HintText::Item({
//obscure text //obscure text
Text{"a horse", /*french*/"un fidèle destrier", /*spanish*/"una yegua"}, Text{"a horse", /*french*/"un fidèle destrier", /*spanish*/"una yegua"},

View File

@ -829,6 +829,30 @@ void GenerateItemPool() {
ctx->PlaceItemInLocation(RC_KAK_100_GOLD_SKULLTULA_REWARD, RG_HUGE_RUPEE, false, true); ctx->PlaceItemInLocation(RC_KAK_100_GOLD_SKULLTULA_REWARD, RG_HUGE_RUPEE, false, true);
} }
if (ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS)) {
AddItemToMainPool(RG_GOHMA_SOUL);
AddItemToMainPool(RG_KING_DODONGO_SOUL);
AddItemToMainPool(RG_BARINADE_SOUL);
AddItemToMainPool(RG_PHANTOM_GANON_SOUL);
AddItemToMainPool(RG_VOLVAGIA_SOUL);
AddItemToMainPool(RG_MORPHA_SOUL);
AddItemToMainPool(RG_BONGO_BONGO_SOUL);
AddItemToMainPool(RG_TWINROVA_SOUL);
ctx->possibleIceTrapModels.push_back(RG_GOHMA_SOUL);
ctx->possibleIceTrapModels.push_back(RG_KING_DODONGO_SOUL);
ctx->possibleIceTrapModels.push_back(RG_BARINADE_SOUL);
ctx->possibleIceTrapModels.push_back(RG_PHANTOM_GANON_SOUL);
ctx->possibleIceTrapModels.push_back(RG_VOLVAGIA_SOUL);
ctx->possibleIceTrapModels.push_back(RG_MORPHA_SOUL);
ctx->possibleIceTrapModels.push_back(RG_BONGO_BONGO_SOUL);
ctx->possibleIceTrapModels.push_back(RG_TWINROVA_SOUL);
if (ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS).Is(RO_BOSS_SOULS_ON_PLUS_GANON)) {
AddItemToMainPool(RG_GANON_SOUL);
ctx->possibleIceTrapModels.push_back(RG_GANON_SOUL);
}
}
if (ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC)) { if (ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC)) {
AddItemToMainPool(RG_PROGRESSIVE_BOMBCHUS, 5); AddItemToMainPool(RG_PROGRESSIVE_BOMBCHUS, 5);
} else { } else {

View File

@ -254,9 +254,9 @@ void AreaTable_Init_DekuTree() {
{ {
// Events // Events
EventAccess(&DekuTreeClear, { [] { EventAccess(&DekuTreeClear, { [] {
return DekuTreeClear || return DekuTreeClear || (HasBossSoul(RG_GOHMA_SOUL) &&
(CanJumpslash && (Nuts || CanUse(RG_FAIRY_SLINGSHOT) || CanUse(RG_FAIRY_BOW) || (CanJumpslash && (Nuts || CanUse(RG_FAIRY_SLINGSHOT) || CanUse(RG_FAIRY_BOW) ||
HookshotOrBoomerang)); HookshotOrBoomerang)));
}}), }}),
}, },
{ {

View File

@ -294,10 +294,10 @@ void AreaTable_Init_DodongosCavern() {
// Events // Events
EventAccess(&DodongosCavernClear, EventAccess(&DodongosCavernClear,
{ [] { { [] {
return DodongosCavernClear || return DodongosCavernClear || (HasBossSoul(RG_KING_DODONGO_SOUL) &&
(Here(RR_DODONGOS_CAVERN_BOSS_ROOM, (Here(RR_DODONGOS_CAVERN_BOSS_ROOM,
[] { return HasExplosives || (CanUse(RG_MEGATON_HAMMER) && randoCtx->GetTrickOption(RT_DC_HAMMER_FLOOR)); }) && [] { return HasExplosives || (CanUse(RG_MEGATON_HAMMER) && randoCtx->GetTrickOption(RT_DC_HAMMER_FLOOR)); }) &&
(Bombs || GoronBracelet) && CanJumpslash); /*todo add chu kill to tricks*/ (Bombs || GoronBracelet) && CanJumpslash)); /*todo add chu kill to tricks*/
}}), }}),
}, },
{ {

View File

@ -410,7 +410,7 @@ void AreaTable_Init_FireTemple() {
{ {
// Events // Events
EventAccess(&FireTempleClear, EventAccess(&FireTempleClear,
{ [] { return FireTempleClear || (FireTimer >= 64 && CanUse(RG_MEGATON_HAMMER)); }}), { [] { return FireTempleClear || (HasBossSoul(RG_VOLVAGIA_SOUL) && (FireTimer >= 64 && CanUse(RG_MEGATON_HAMMER))); }}),
}, },
{ {
// Locations // Locations

View File

@ -421,8 +421,8 @@ void AreaTable_Init_ForestTemple() {
{ {
// Events // Events
EventAccess(&ForestTempleClear, { [] { EventAccess(&ForestTempleClear, { [] {
return ForestTempleClear || ((CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD)) && return ForestTempleClear || (HasBossSoul(RG_PHANTOM_GANON_SOUL) && ((CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD)) &&
(CanUse(RG_HOOKSHOT) || CanUse(RG_FAIRY_BOW) || CanUse(RG_FAIRY_SLINGSHOT))); (CanUse(RG_HOOKSHOT) || CanUse(RG_FAIRY_BOW) || CanUse(RG_FAIRY_SLINGSHOT))));
} }), } }),
}, },
{ {

View File

@ -117,7 +117,7 @@ void AreaTable_Init_GanonsCastle() {
//Locations //Locations
LocationAccess(RC_GANONS_TOWER_BOSS_KEY_CHEST, {[]{return CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD);}}), LocationAccess(RC_GANONS_TOWER_BOSS_KEY_CHEST, {[]{return CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD);}}),
LocationAccess(RC_GANONDORF_HINT, {[]{return BossKeyGanonsCastle && (CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD));}}), LocationAccess(RC_GANONDORF_HINT, {[]{return BossKeyGanonsCastle && (CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD));}}),
LocationAccess(RC_GANON, {[]{return BossKeyGanonsCastle && CanUse(RG_LIGHT_ARROWS) && CanUse(RG_MASTER_SWORD);}}), LocationAccess(RC_GANON, {[]{return HasBossSoul(RG_GANON_SOUL) && BossKeyGanonsCastle && CanUse(RG_LIGHT_ARROWS) && CanUse(RG_MASTER_SWORD);}}),
}, {}); }, {});
/*--------------------------- /*---------------------------

View File

@ -235,7 +235,7 @@ void AreaTable_Init_JabuJabusBelly() {
{ {
// Events //todo: add pot kill trick // Events //todo: add pot kill trick
EventAccess(&JabuJabusBellyClear, EventAccess(&JabuJabusBellyClear,
{ [] { return JabuJabusBellyClear || (CanUse(RG_BOOMERANG) && CanJumpslash); } }), { [] { return JabuJabusBellyClear || (HasBossSoul(RG_BARINADE_SOUL) && (CanUse(RG_BOOMERANG) && CanJumpslash)); } }),
}, },
{ {
// Locations // Locations

View File

@ -195,10 +195,10 @@ void AreaTable_Init_ShadowTemple() {
{ {
// Events // Events
EventAccess(&ShadowTempleClear, { [] { EventAccess(&ShadowTempleClear, { [] {
return ShadowTempleClear || return ShadowTempleClear || (HasBossSoul(RG_BONGO_BONGO_SOUL) &&
((CanUse(RG_LENS_OF_TRUTH) || randoCtx->GetTrickOption(RT_LENS_BONGO)) && ((CanUse(RG_LENS_OF_TRUTH) || randoCtx->GetTrickOption(RT_LENS_BONGO)) &&
(CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD)) && (CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD)) &&
(CanUse(RG_HOOKSHOT) || CanUse(RG_FAIRY_BOW) || CanUse(RG_FAIRY_SLINGSHOT) || randoCtx->GetTrickOption(RT_SHADOW_BONGO))); (CanUse(RG_HOOKSHOT) || CanUse(RG_FAIRY_BOW) || CanUse(RG_FAIRY_SLINGSHOT) || randoCtx->GetTrickOption(RT_SHADOW_BONGO))));
} }), } }),
}, },
{ {

View File

@ -259,8 +259,8 @@ void AreaTable_Init_SpiritTemple() {
{ {
// Events // Events
EventAccess(&SpiritTempleClear, { [] { EventAccess(&SpiritTempleClear, { [] {
return SpiritTempleClear || (CanUse(RG_MIRROR_SHIELD) && return SpiritTempleClear || (HasBossSoul(RG_TWINROVA_SOUL) && (CanUse(RG_MIRROR_SHIELD) &&
(CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD))); (CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD))));
} }), } }),
}, },
{ {

View File

@ -319,8 +319,8 @@ void AreaTable_Init_WaterTemple() {
{ {
// Events // Events
EventAccess(&WaterTempleClear, { [] { EventAccess(&WaterTempleClear, { [] {
return WaterTempleClear || return WaterTempleClear || (HasBossSoul(RG_MORPHA_SOUL) &&
(CanUse(RG_HOOKSHOT) && (CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD))); (CanUse(RG_HOOKSHOT) && (CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD))));
} }), } }),
}, },
{ {

View File

@ -315,6 +315,16 @@ namespace Logic {
uint8_t Age = 0; uint8_t Age = 0;
bool CanCompleteTriforce = false; bool CanCompleteTriforce = false;
bool CanSummonGohma = false;
bool CanSummonKingDodongo = false;
bool CanSummonBarinade = false;
bool CanSummonPhantomGanon = false;
bool CanSummonVolvagia = false;
bool CanSummonMorpha = false;
bool CanSummonBongoBongo = false;
bool CanSummonTwinrova = false;
bool CanSummonGanon = false;
//Events //Events
bool ShowedMidoSwordAndShield = false; bool ShowedMidoSwordAndShield = false;
bool CarpenterRescue = false; bool CarpenterRescue = false;
@ -466,6 +476,35 @@ namespace Logic {
(age == HasProjectileAge::Either && (Slingshot || Boomerang || Hookshot || Bow)); (age == HasProjectileAge::Either && (Slingshot || Boomerang || Hookshot || Bow));
} }
bool HasBossSoul(RandomizerGet itemName) {
auto ctx = Rando::Context::GetInstance();
if (!ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS)) {
return true;
}
switch(itemName) {
case RG_GOHMA_SOUL:
return CanSummonGohma; break;
case RG_KING_DODONGO_SOUL:
return CanSummonKingDodongo; break;
case RG_BARINADE_SOUL:
return CanSummonBarinade; break;
case RG_PHANTOM_GANON_SOUL:
return CanSummonPhantomGanon; break;
case RG_VOLVAGIA_SOUL:
return CanSummonVolvagia; break;
case RG_MORPHA_SOUL:
return CanSummonMorpha; break;
case RG_BONGO_BONGO_SOUL:
return CanSummonBongoBongo; break;
case RG_TWINROVA_SOUL:
return CanSummonTwinrova; break;
case RG_GANON_SOUL:
return ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS).Is(RO_BOSS_SOULS_ON_PLUS_GANON) ? CanSummonGanon : true;
break;
default: break;
}
}
uint8_t GetDifficultyValueFromString(Rando::Option& glitchOption) { uint8_t GetDifficultyValueFromString(Rando::Option& glitchOption) {
return 0; return 0;
} }
@ -892,6 +931,17 @@ namespace Logic {
//Triforce Pieces //Triforce Pieces
TriforcePieces = 0; TriforcePieces = 0;
//Boss Souls
CanSummonGohma = false;
CanSummonKingDodongo = false;
CanSummonBarinade = false;
CanSummonPhantomGanon = false;
CanSummonVolvagia = false;
CanSummonMorpha = false;
CanSummonBongoBongo = false;
CanSummonTwinrova = false;
CanSummonGanon = false;
//Drops and Bottle Contents Access //Drops and Bottle Contents Access
DekuNutDrop = false; DekuNutDrop = false;
NutPot = false; NutPot = false;

View File

@ -307,6 +307,16 @@ extern bool LinksCow;
extern uint8_t Age; extern uint8_t Age;
extern bool CanCompleteTriforce; extern bool CanCompleteTriforce;
extern bool CanSummonGohma;
extern bool CanSummonKingDodongo;
extern bool CanSummonBarinade;
extern bool CanSummonPhantomGanon;
extern bool CanSummonVolvagia;
extern bool CanSummonMorpha;
extern bool CanSummonBongoBongo;
extern bool CanSummonTwinrova;
extern bool CanSummonGanon;
// Events // Events
extern bool ShowedMidoSwordAndShield; extern bool ShowedMidoSwordAndShield;
extern bool CarpenterRescue; extern bool CarpenterRescue;
@ -371,6 +381,7 @@ void UpdateHelpers();
bool CanPlay(bool song); bool CanPlay(bool song);
bool CanUse(RandomizerGet itemName); bool CanUse(RandomizerGet itemName);
bool HasProjectile(HasProjectileAge age); bool HasProjectile(HasProjectileAge age);
bool HasBossSoul(RandomizerGet itemName);
bool SmallKeys(RandomizerRegion dungeon, uint8_t requiredAmount); bool SmallKeys(RandomizerRegion dungeon, uint8_t requiredAmount);
bool SmallKeys(RandomizerRegion dungeon, uint8_t requiredAmountGlitchless, uint8_t requiredAmountGlitched); bool SmallKeys(RandomizerRegion dungeon, uint8_t requiredAmountGlitchless, uint8_t requiredAmountGlitched);
bool CanDoGlitch(GlitchType glitch); bool CanDoGlitch(GlitchType glitch);

View File

@ -10,7 +10,7 @@
std::vector<ItemAndPrice> NonShopItems = {}; std::vector<ItemAndPrice> NonShopItems = {};
static std::array<std::vector<Text>, 0xE1> trickNameTable; // Table of trick names for ice traps static std::array<std::vector<Text>, 0xF0> trickNameTable; // Table of trick names for ice traps
bool initTrickNames = false; //Indicates if trick ice trap names have been initialized yet bool initTrickNames = false; //Indicates if trick ice trap names have been initialized yet
//Set vanilla shop item locations before potentially shuffling //Set vanilla shop item locations before potentially shuffling
@ -703,6 +703,42 @@ void InitTrickNames() {
Text{"Piece of Cheese", "Morceau de Fromage", "Piece of Cheese"}, Text{"Piece of Cheese", "Morceau de Fromage", "Piece of Cheese"},
Text{"Triforce Shard", "Éclat de Triforce", "Triforce Shard"}, Text{"Triforce Shard", "Éclat de Triforce", "Triforce Shard"},
Text{"Shiny Rock", "Caiiloux Brillant", "Shiny Rock"}}; Text{"Shiny Rock", "Caiiloux Brillant", "Shiny Rock"}};
trickNameTable[RG_GOHMA_SOUL] = {
Text{"Spider Sense", "", ""},
Text{"Deku Spirit", "", ""},
Text("Ghost of Ghoma", "", "")};
trickNameTable[RG_KING_DODONGO_SOUL] = {
Text{"Lizard Soul", "", ""},
Text{"Regal Remains", "", ""},
Text{"Dodongo's Core", "", ""}};
trickNameTable[RG_BARINADE_SOUL] = {
Text{"Parasitic Poltergeist", "", ""},
Text{"Jabu Insides", "", ""},
Text{"Barinade Bacteria", "", ""}};
trickNameTable[RG_PHANTOM_GANON_SOUL] = {
Text{"Bigger Poe", "", ""},
Text{"Sacred Forest Pine Tree", "", ""},
Text{"Ganon's Phantom", "", ""}};
trickNameTable[RG_VOLVAGIA_SOUL] = {
Text{"Dragon Roast", "", ""},
Text{"Hot n' Ready", "", ""},
Text{"Volvagia's Vitality", "", ""}};
trickNameTable[RG_MORPHA_SOUL] = {
Text{"Dihydrogen Monoxide", "", ""},
Text{"Morpha Molecules", "", ""},
Text{"Wet Stuff", "", ""}};
trickNameTable[RG_BONGO_BONGO_SOUL] = {
Text{"Shadow Soul", "", ""},
Text{"Dark Essence", "", ""},
Text{"Bongo Bongo's Bongo", "", ""}};
trickNameTable[RG_TWINROVA_SOUL] = {
Text{"Sandy Ashes", "", ""},
Text{"Spiritual Spirit", "", ""},
Text{"Twin Rovers", "", ""}};
trickNameTable[RG_GANON_SOUL] = {
Text{"Pure Evil", "", ""},
Text{"Ganon's Ghost", "", ""},
Text{"Pork", "", ""}};
/* /*
//Names for individual upgrades, in case progressive names are replaced //Names for individual upgrades, in case progressive names are replaced

View File

@ -10,6 +10,7 @@
#include "objects/object_gi_key/object_gi_key.h" #include "objects/object_gi_key/object_gi_key.h"
#include "objects/object_gi_bosskey/object_gi_bosskey.h" #include "objects/object_gi_bosskey/object_gi_bosskey.h"
#include "objects/object_gi_hearts/object_gi_hearts.h" #include "objects/object_gi_hearts/object_gi_hearts.h"
#include "objects/object_gi_fire/object_gi_fire.h"
#include "objects/object_toki_objects/object_toki_objects.h" #include "objects/object_toki_objects/object_toki_objects.h"
#include "objects/gameplay_field_keep/gameplay_field_keep.h" #include "objects/gameplay_field_keep/gameplay_field_keep.h"
#include "soh_assets.h" #include "soh_assets.h"
@ -277,3 +278,52 @@ extern "C" void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry get
} }
CLOSE_DISPS(play->state.gfxCtx); CLOSE_DISPS(play->state.gfxCtx);
} }
extern "C" void Randomizer_DrawBossSoul(PlayState* play, GetItemEntry* getItemEntry) {
s16 slot = getItemEntry->getItemId - RG_GOHMA_SOUL;
s16 flameColors[9][3] = {
{ 0, 255, 0 }, // Gohma
{ 255, 0, 100 }, // King Dodongo
{ 50, 255, 255}, // Barinade
{ 4, 195, 46 }, // Phantom Ganon
{ 237, 95, 95 }, // Volvagia
{ 85, 180, 223 }, // Morpha
{ 126, 16, 177 }, // Bongo Bongo
{ 222, 158, 47 }, // Twinrova
{ 80, 80, 80 }, // Ganon/Dorf
};
OPEN_DISPS(play->state.gfxCtx);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
G_MTX_MODELVIEW | G_MTX_LOAD);
if (slot == 8) { // For Ganon only...
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 0, 0, 0, 255);
} else {
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 255);
}
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gBossSoulSkullDL);
if (slot >= 0) {
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
gSPSegment(POLY_XLU_DISP++, 8, (uintptr_t)Gfx_TwoTexScroll(
play->state.gfxCtx, 0, 0 * (play->state.frames * 0),
0 * (play->state.frames * 0), 16, 32, 1, 1 * (play->state.frames * 1),
-1 * (play->state.frames * 8), 16, 32
));
Matrix_Push();
Matrix_Translate(0.0f, -70.0f, 0.0f, MTXMODE_APPLY);
Matrix_Scale(5.0f, 5.0f, 5.0f, MTXMODE_APPLY);
Matrix_ReplaceRotation(&play->billboardMtxF);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
G_MTX_MODELVIEW | G_MTX_LOAD);
gDPSetGrayscaleColor(POLY_XLU_DISP++, flameColors[slot][0], flameColors[slot][1], flameColors[slot][2], 255);
gSPGrayscale(POLY_XLU_DISP++, true);
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiBlueFireFlameDL);
gSPGrayscale(POLY_XLU_DISP++, false);
Matrix_Pop();
}
CLOSE_DISPS(play->state.gfxCtx);
}

View File

@ -12,6 +12,7 @@ extern "C" {
void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEntry); void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEntry);
void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEntry); void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEntry);
void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEntry); void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEntry);
void Randomizer_DrawBossSoul(PlayState* play, GetItemEntry* getItemEntry);
void Randomizer_DrawDoubleDefense(PlayState* play, GetItemEntry* getItemEntry); void Randomizer_DrawDoubleDefense(PlayState* play, GetItemEntry* getItemEntry);
void Randomizer_DrawMasterSword(PlayState* play, GetItemEntry* getItemEntry); void Randomizer_DrawMasterSword(PlayState* play, GetItemEntry* getItemEntry);
void Randomizer_DrawTriforcePiece(PlayState* play, GetItemEntry getItemEntry); void Randomizer_DrawTriforcePiece(PlayState* play, GetItemEntry getItemEntry);

View File

@ -94,26 +94,26 @@ void Rando::StaticData::InitItemTable() {
itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, Text{ "Requiem of Spirit", "Requiem des Esprits", "Requiem des Geistes" }, ITEMTYPE_SONG, 0xBE, true, &Logic::RequiemOfSpirit, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, Text{ "Requiem of Spirit", "Requiem des Esprits", "Requiem des Geistes" }, ITEMTYPE_SONG, 0xBE, true, &Logic::RequiemOfSpirit, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, Text{ "Prelude of Light", "Prélude de la Lumière", "Präludium des Lichts" }, ITEMTYPE_SONG, 0xC0, true, &Logic::PreludeOfLight, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, Text{ "Prelude of Light", "Prélude de la Lumière", "Präludium des Lichts" }, ITEMTYPE_SONG, 0xC0, true, &Logic::PreludeOfLight, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
// Maps and Compasses // Maps and Compasses
itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, Text{ "Great Deku Tree Map", "Carte de l'Arbre Mojo", "Karte des Deku-Baums" }, ITEMTYPE_MAP, 0xA5, false, &Logic::noVariable, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, Text{ "Great Deku Tree Map", "Carte de l'Arbre Mojo", "Karte des Deku-Baums" }, ITEMTYPE_MAP, 0xA5, false, &Logic::noVariable, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, Text{ "Dodongo's Cavern Map", "Carte de la Caverne Dodongo", "Karte der Dodongo-Höhle" }, ITEMTYPE_MAP, 0xA6, false, &Logic::noVariable, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, Text{ "Dodongo's Cavern Map", "Carte de la Caverne Dodongo", "Karte der Dodongo-Höhle" }, ITEMTYPE_MAP, 0xA6, false, &Logic::noVariable, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, Text{ "Jabu-Jabu's Belly Map", "Carte du Ventre de Jabu-Jabu", "Karte des Jabu-Jabu-Bauchs" }, ITEMTYPE_MAP, 0xA7, false, &Logic::noVariable, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, Text{ "Jabu-Jabu's Belly Map", "Carte du Ventre de Jabu-Jabu", "Karte des Jabu-Jabu-Bauchs" }, ITEMTYPE_MAP, 0xA7, false, &Logic::noVariable, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, Text{ "Forest Temple Map", "Carte du Temple de la Forêt", "Waldtempel Karte" }, ITEMTYPE_MAP, 0xA8, false, &Logic::noVariable, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, Text{ "Forest Temple Map", "Carte du Temple de la Forêt", "Waldtempel Karte" }, ITEMTYPE_MAP, 0xA8, false, &Logic::noVariable, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, Text{ "Fire Temple Map", "Carte due Temple de Feu", "Feuertempel Karte" }, ITEMTYPE_MAP, 0xA9, false, &Logic::noVariable, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, Text{ "Fire Temple Map", "Carte due Temple de Feu", "Feuertempel Karte" }, ITEMTYPE_MAP, 0xA9, false, &Logic::noVariable, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, Text{ "Water Temple Map", "Carte du Temple de l'Eau", "Wassertempel-Karte" }, ITEMTYPE_MAP, 0xAA, false, &Logic::noVariable, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, Text{ "Water Temple Map", "Carte du Temple de l'Eau", "Wassertempel-Karte" }, ITEMTYPE_MAP, 0xAA, false, &Logic::noVariable, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, Text{ "Spirit Temple Map", "Carte due Temple de l'Esprit", "Geistertempel Karte" }, ITEMTYPE_MAP, 0xAB, false, &Logic::noVariable, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, Text{ "Spirit Temple Map", "Carte due Temple de l'Esprit", "Geistertempel Karte" }, ITEMTYPE_MAP, 0xAB, false, &Logic::noVariable, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, Text{ "Shadow Temple Map", "Carte du Temple de l'Ombre", "Karte des Schattentempels" }, ITEMTYPE_MAP, 0xAC, false, &Logic::noVariable, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, Text{ "Shadow Temple Map", "Carte du Temple de l'Ombre", "Karte des Schattentempels" }, ITEMTYPE_MAP, 0xAC, false, &Logic::noVariable, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_BOTTOM_OF_THE_WELL_MAP] = Item(RG_BOTTOM_OF_THE_WELL_MAP, Text{ "Bottom of the Well Map", "Carte du Puits", "Boden des Brunnens Karte" }, ITEMTYPE_MAP, 0xAD, false, &Logic::noVariable, RHT_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOTTOM_OF_THE_WELL_MAP] = Item(RG_BOTTOM_OF_THE_WELL_MAP, Text{ "Bottom of the Well Map", "Carte du Puits", "Boden des Brunnens Karte" }, ITEMTYPE_MAP, 0xAD, false, &Logic::noVariable, RHT_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, Text{ "Ice Cavern Map", "Carte de la Caverne Polaire", "Eishöhle Karte" }, ITEMTYPE_MAP, 0xAE, false, &Logic::noVariable, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, Text{ "Ice Cavern Map", "Carte de la Caverne Polaire", "Eishöhle Karte" }, ITEMTYPE_MAP, 0xAE, false, &Logic::noVariable, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, Text{ "Great Deku Tree Compass", "Boussole de l'Arbre Mojo", "Kompass des Deku-Baums" }, ITEMTYPE_COMPASS, 0x9B, false, &Logic::noVariable, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, Text{ "Great Deku Tree Compass", "Boussole de l'Arbre Mojo", "Kompass des Deku-Baums" }, ITEMTYPE_COMPASS, 0x9B, false, &Logic::noVariable, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, Text{ "Dodongo's Cavern Compass", "Boussole de la Caverne Dodongo", "Kompass der Dodongo-Höhle" }, ITEMTYPE_COMPASS, 0x9C, false, &Logic::noVariable, RHT_DODONGOS_CAVERN_COMPASS,RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, Text{ "Dodongo's Cavern Compass", "Boussole de la Caverne Dodongo", "Kompass der Dodongo-Höhle" }, ITEMTYPE_COMPASS, 0x9C, false, &Logic::noVariable, RHT_DODONGOS_CAVERN_COMPASS,RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS, Text{ "Jabu-Jabu's Belly Compass", "Boussole du Ventre de Jabu-Jabu", "Kompass des Jabu-Jabu-Bauchs" }, ITEMTYPE_COMPASS, 0x9D, false, &Logic::noVariable, RHT_JABU_JABUS_BELLY_COMPASS,RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS, Text{ "Jabu-Jabu's Belly Compass", "Boussole du Ventre de Jabu-Jabu", "Kompass des Jabu-Jabu-Bauchs" }, ITEMTYPE_COMPASS, 0x9D, false, &Logic::noVariable, RHT_JABU_JABUS_BELLY_COMPASS,RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, Text{ "Forest Temple Compass", "Boussole du Temple de la Forêt", "Waldtempel-Kompass" }, ITEMTYPE_COMPASS, 0x9E, false, &Logic::noVariable, RHT_FOREST_TEMPLE_COMPASS, RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, Text{ "Forest Temple Compass", "Boussole du Temple de la Forêt", "Waldtempel-Kompass" }, ITEMTYPE_COMPASS, 0x9E, false, &Logic::noVariable, RHT_FOREST_TEMPLE_COMPASS, RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, Text{ "Fire Temple Compass", "Boussole du Temple du Feu", "Feuertempel-Kompass" }, ITEMTYPE_COMPASS, 0x9F, false, &Logic::noVariable, RHT_FIRE_TEMPLE_COMPASS, RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, Text{ "Fire Temple Compass", "Boussole du Temple du Feu", "Feuertempel-Kompass" }, ITEMTYPE_COMPASS, 0x9F, false, &Logic::noVariable, RHT_FIRE_TEMPLE_COMPASS, RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, Text{ "Water Temple Compass", "Boussole du Temple de l'Eau", "Wassertempel-Kompass" }, ITEMTYPE_COMPASS, 0xA0, false, &Logic::noVariable, RHT_WATER_TEMPLE_COMPASS, RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, Text{ "Water Temple Compass", "Boussole du Temple de l'Eau", "Wassertempel-Kompass" }, ITEMTYPE_COMPASS, 0xA0, false, &Logic::noVariable, RHT_WATER_TEMPLE_COMPASS, RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, Text{ "Spirit Temple Compass", "Boussole due Temple de l'Esprit", "Geistiger Tempelkompass" }, ITEMTYPE_COMPASS, 0xA1, false, &Logic::noVariable, RHT_SPIRIT_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, Text{ "Spirit Temple Compass", "Boussole due Temple de l'Esprit", "Geistiger Tempelkompass" }, ITEMTYPE_COMPASS, 0xA1, false, &Logic::noVariable, RHT_SPIRIT_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, Text{ "Shadow Temple Compass", "Boussole du Temple de l'Ombre", "Kompass des Schattentempels" }, ITEMTYPE_COMPASS, 0xA2, false, &Logic::noVariable, RHT_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, Text{ "Shadow Temple Compass", "Boussole du Temple de l'Ombre", "Kompass des Schattentempels" }, ITEMTYPE_COMPASS, 0xA2, false, &Logic::noVariable, RHT_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_BOTTOM_OF_THE_WELL_COMPASS] = Item(RG_BOTTOM_OF_THE_WELL_COMPASS, Text{ "Bottom of the Well Compass", "Boussole du Puits", "Boden des Brunnenkompasses" }, ITEMTYPE_COMPASS, 0xA3, false, &Logic::noVariable, RHT_BOTTOM_OF_THE_WELL_COMPASS,RG_BOTTOM_OF_THE_WELL_COMPASS,OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOTTOM_OF_THE_WELL_COMPASS] = Item(RG_BOTTOM_OF_THE_WELL_COMPASS, Text{ "Bottom of the Well Compass", "Boussole du Puits", "Boden des Brunnenkompasses" }, ITEMTYPE_COMPASS, 0xA3, false, &Logic::noVariable, RHT_BOTTOM_OF_THE_WELL_COMPASS,RG_BOTTOM_OF_THE_WELL_COMPASS,OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, Text{ "Ice Cavern Compass", "Boussole de la Caverne Polaire", "Eishöhlenkompass" }, ITEMTYPE_COMPASS, 0xA4, false, &Logic::noVariable, RHT_ICE_CAVERN_COMPASS, RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, Text{ "Ice Cavern Compass", "Boussole de la Caverne Polaire", "Eishöhlenkompass" }, ITEMTYPE_COMPASS, 0xA4, false, &Logic::noVariable, RHT_ICE_CAVERN_COMPASS, RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
// Boss Keys // Boss Keys
itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, Text{ "Forest Temple Boss Key", "Clé d'Or du Temple de la Forêt", "Waldtempel-Boss-Schlüssel" }, ITEMTYPE_BOSSKEY, 0x95, true, &Logic::BossKeyForestTemple, RHT_FOREST_TEMPLE_BOSS_KEY, RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, Text{ "Forest Temple Boss Key", "Clé d'Or du Temple de la Forêt", "Waldtempel-Boss-Schlüssel" }, ITEMTYPE_BOSSKEY, 0x95, true, &Logic::BossKeyForestTemple, RHT_FOREST_TEMPLE_BOSS_KEY, RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER);
itemTable[RG_FOREST_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); itemTable[RG_FOREST_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey);
@ -240,6 +240,25 @@ void Rando::StaticData::InitItemTable() {
itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, Text{ "Buy Red Potion [40]", "Acheter: Potion Rouge [40]", "Rotes Elixier kaufen [40]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, &Logic::noVariable, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, Text{ "Buy Red Potion [40]", "Acheter: Potion Rouge [40]", "Rotes Elixier kaufen [40]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, &Logic::noVariable, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40);
itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, Text{ "Buy Red Potion [50]", "Acheter: Potion Rouge [50]", "Rotes Elixier kaufen [50]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, &Logic::noVariable, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, Text{ "Buy Red Potion [50]", "Acheter: Potion Rouge [50]", "Rotes Elixier kaufen [50]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, &Logic::noVariable, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50);
// Misc. // Misc.
itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, Text{ "Gohma's Soul", "", "" }, ITEMTYPE_ITEM, 0xE0, true, &Logic::CanSummonGohma, RHT_GOHMA_SOUL, RG_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_GOHMA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, Text{ "King Dodongo's Soul", "", "" }, ITEMTYPE_ITEM, 0xE1, true, &Logic::CanSummonKingDodongo,RHT_KING_DODONGO_SOUL, RG_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_KING_DODONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, Text{ "Barinade's Soul", "", "" }, ITEMTYPE_ITEM, 0xE2, true, &Logic::CanSummonBarinade, RHT_BARINADE_SOUL, RG_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_BARINADE_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, Text{ "Phantom Ganon's Soul", "", "" }, ITEMTYPE_ITEM, 0xE3, true, &Logic::CanSummonPhantomGanon,RHT_PHANTOM_GANON_SOUL, RG_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_PHANTOM_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, Text{ "Volvagia's Soul", "", "" }, ITEMTYPE_ITEM, 0xE4, true, &Logic::CanSummonVolvagia, RHT_VOLVAGIA_SOUL, RG_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_VOLVAGIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, Text{ "Morpha's Soul", "", "" }, ITEMTYPE_ITEM, 0xE5, true, &Logic::CanSummonMorpha, RHT_MORPHA_SOUL, RG_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_MORPHA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, Text{ "Bongo Bongo's Soul", "", "" }, ITEMTYPE_ITEM, 0xE6, true, &Logic::CanSummonBongoBongo, RHT_BONGO_BONGO_SOUL, RG_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_BONGO_BONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, Text{ "Twinrova's Soul", "", "" }, ITEMTYPE_ITEM, 0xE7, true, &Logic::CanSummonTwinrova, RHT_TWINROVA_SOUL, RG_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_TWINROVA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, Text{ "Ganon's Soul", "", "" }, ITEMTYPE_ITEM, 0xE8, true, &Logic::CanSummonGanon, RHT_GANON_SOUL, RG_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
itemTable[RG_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul);
itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, Text{ "Triforce", "Triforce", "Triforce" }, ITEMTYPE_EVENT, RG_TRIFORCE, false, &Logic::noVariable, RHT_NONE); itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, Text{ "Triforce", "Triforce", "Triforce" }, ITEMTYPE_EVENT, RG_TRIFORCE, false, &Logic::noVariable, RHT_NONE);
itemTable[RG_HINT] = Item(RG_HINT, Text{ "Hint", "Indice", "Hinweis" }, ITEMTYPE_EVENT, RG_HINT, false, &Logic::noVariable, RHT_NONE); itemTable[RG_HINT] = Item(RG_HINT, Text{ "Hint", "Indice", "Hinweis" }, ITEMTYPE_EVENT, RG_HINT, false, &Logic::noVariable, RHT_NONE);
// Individual stages of progressive items (only here for GetItemEntry purposes, not for use in seed gen) // Individual stages of progressive items (only here for GetItemEntry purposes, not for use in seed gen)

View File

@ -1695,6 +1695,7 @@ void GenerateRandomizerImgui(std::string seed = "") {
cvarSettings[RSK_SHUFFLE_MAGIC_BEANS] = CVarGetInteger("gRandomizeShuffleBeans", 0); cvarSettings[RSK_SHUFFLE_MAGIC_BEANS] = CVarGetInteger("gRandomizeShuffleBeans", 0);
cvarSettings[RSK_SHUFFLE_MERCHANTS] = CVarGetInteger("gRandomizeShuffleMerchants", RO_SHUFFLE_MERCHANTS_OFF); cvarSettings[RSK_SHUFFLE_MERCHANTS] = CVarGetInteger("gRandomizeShuffleMerchants", RO_SHUFFLE_MERCHANTS_OFF);
cvarSettings[RSK_SHUFFLE_100_GS_REWARD] = CVarGetInteger("gRandomizeShuffle100GSReward", RO_GENERIC_OFF); cvarSettings[RSK_SHUFFLE_100_GS_REWARD] = CVarGetInteger("gRandomizeShuffle100GSReward", RO_GENERIC_OFF);
cvarSettings[RSK_SHUFFLE_BOSS_SOULS] = CVarGetInteger("gRandomizeShuffleBossSouls", RO_BOSS_SOULS_OFF);
cvarSettings[RSK_ENABLE_BOMBCHU_DROPS] = CVarGetInteger("gRandomizeEnableBombchuDrops", 0); cvarSettings[RSK_ENABLE_BOMBCHU_DROPS] = CVarGetInteger("gRandomizeEnableBombchuDrops", 0);
cvarSettings[RSK_BOMBCHUS_IN_LOGIC] = CVarGetInteger("gRandomizeBombchusInLogic", 0); cvarSettings[RSK_BOMBCHUS_IN_LOGIC] = CVarGetInteger("gRandomizeBombchusInLogic", 0);
cvarSettings[RSK_SKIP_CHILD_ZELDA] = CVarGetInteger("gRandomizeSkipChildZelda", 0); cvarSettings[RSK_SKIP_CHILD_ZELDA] = CVarGetInteger("gRandomizeSkipChildZelda", 0);
@ -1926,6 +1927,7 @@ void RandomizerSettingsWindow::DrawElement() {
static const char* randoTokensanity[4] = { "Off", "Dungeons", "Overworld", "All Tokens" }; static const char* randoTokensanity[4] = { "Off", "Dungeons", "Overworld", "All Tokens" };
static const char* randoShuffleScrubs[4] = { "Off", "Affordable", "Expensive", "Random Prices" }; static const char* randoShuffleScrubs[4] = { "Off", "Affordable", "Expensive", "Random Prices" };
static const char* randoShuffleMerchants[3] = { "Off", "On (no hints)", "On (with hints)" }; static const char* randoShuffleMerchants[3] = { "Off", "On (no hints)", "On (with hints)" };
static const char* randoShuffleBossSouls[3] = { "Off", "On", "On + Ganon"};
// Shuffle Dungeon Items Settings // Shuffle Dungeon Items Settings
static const char* randoShuffleMapsAndCompasses[6] = { "Start With", "Vanilla", "Own Dungeon", static const char* randoShuffleMapsAndCompasses[6] = { "Start With", "Vanilla", "Own Dungeon",
@ -2844,6 +2846,15 @@ void RandomizerSettingsWindow::DrawElement() {
UIWidgets::PaddedSeparator(); UIWidgets::PaddedSeparator();
// Shuffle Boss Souls
// Forces players to find a boss's soul before defeating them in their lair.
ImGui::Text("%s", ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS).GetName().c_str());
UIWidgets::InsertHelpHoverText("Shuffles 8 boss souls (one for each blue warp dungeon). A boss will not appear until you collect its respective soul."
"\n\"On + Ganon\" will also hide Ganon and Ganondorf behind a boss soul.");
UIWidgets::EnhancementCombobox("gRandomizeShuffleBossSouls", randoShuffleBossSouls, RO_BOSS_SOULS_OFF);
UIWidgets::PaddedSeparator();
ImGui::PopItemWidth(); ImGui::PopItemWidth();
ImGui::EndChild(); ImGui::EndChild();
@ -4725,7 +4736,7 @@ CustomMessage Randomizer::GetGoronMessage(u16 index) {
void Randomizer::CreateCustomMessages() { void Randomizer::CreateCustomMessages() {
// RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED // RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED
// with GIMESSAGE(getItemID, itemID, english, german, french). // with GIMESSAGE(getItemID, itemID, english, german, french).
const std::array<GetItemMessage, 57> getItemMessages = {{ const std::array<GetItemMessage, 66> getItemMessages = {{
GIMESSAGE(RG_GREG_RUPEE, ITEM_MASK_GORON, GIMESSAGE(RG_GREG_RUPEE, ITEM_MASK_GORON,
"You found %gGreg%w!", "You found %gGreg%w!",
"%gGreg%w! Du hast ihn wirklich gefunden!", "%gGreg%w! Du hast ihn wirklich gefunden!",
@ -4959,7 +4970,18 @@ void Randomizer::CreateCustomMessages() {
GIMESSAGE(RG_TYCOON_WALLET, ITEM_WALLET_GIANT, GIMESSAGE(RG_TYCOON_WALLET, ITEM_WALLET_GIANT,
"You got a %rTycoon's Wallet%w!&It's gigantic! Now you can carry&up to %y999 rupees%w!", "You got a %rTycoon's Wallet%w!&It's gigantic! Now you can carry&up to %y999 rupees%w!",
"Du erhältst die %rGoldene&Geldbörse%w! Die größte aller&Geldbörsen! Jetzt kannst Du bis&zu %y999 Rubine%w mit dir führen!", "Du erhältst die %rGoldene&Geldbörse%w! Die größte aller&Geldbörsen! Jetzt kannst Du bis&zu %y999 Rubine%w mit dir führen!",
"Vous obtenez la %rBourse de Magnat%w!&Elle peut contenir jusqu'à %y999 rubis%w!&C'est gigantesque!") "Vous obtenez la %rBourse de Magnat%w!&Elle peut contenir jusqu'à %y999 rubis%w!&C'est gigantesque!"),
GIMESSAGE_UNTRANSLATED(RG_GOHMA_SOUL, ITEM_BIG_POE, "You found the soul for %gGohma%w!"),
GIMESSAGE_UNTRANSLATED(RG_KING_DODONGO_SOUL, ITEM_BIG_POE, "You found the soul for %rKing&Dodongo%w!"),
GIMESSAGE_UNTRANSLATED(RG_BARINADE_SOUL, ITEM_BIG_POE, "You found the soul for %bBarinade%w!"),
GIMESSAGE_UNTRANSLATED(RG_PHANTOM_GANON_SOUL, ITEM_BIG_POE, "You found the soul for %gPhantom&Ganon%w!"),
GIMESSAGE_UNTRANSLATED(RG_VOLVAGIA_SOUL, ITEM_BIG_POE, "You found the soul for %rVolvagia%w!"),
GIMESSAGE_UNTRANSLATED(RG_MORPHA_SOUL, ITEM_BIG_POE, "You found the soul for %bMorpha%w!"),
GIMESSAGE_UNTRANSLATED(RG_BONGO_BONGO_SOUL, ITEM_BIG_POE, "You found the soul for %pBongo&Bongo%w!"),
GIMESSAGE_UNTRANSLATED(RG_TWINROVA_SOUL, ITEM_BIG_POE, "You found the soul for %yTwinrova%w!"),
GIMESSAGE_UNTRANSLATED(RG_GANON_SOUL, ITEM_BIG_POE, "You found the soul for %cGanon%w!"),
}}; }};
CreateGetItemMessages(&getItemMessages); CreateGetItemMessages(&getItemMessages);
CreateRupeeMessages(); CreateRupeeMessages();

View File

@ -1814,6 +1814,15 @@ typedef enum {
RG_BUY_RED_POTION_50, RG_BUY_RED_POTION_50,
RG_TRIFORCE, RG_TRIFORCE,
RG_TRIFORCE_PIECE, RG_TRIFORCE_PIECE,
RG_GOHMA_SOUL,
RG_KING_DODONGO_SOUL,
RG_BARINADE_SOUL,
RG_PHANTOM_GANON_SOUL,
RG_VOLVAGIA_SOUL,
RG_MORPHA_SOUL,
RG_BONGO_BONGO_SOUL,
RG_TWINROVA_SOUL,
RG_GANON_SOUL,
RG_HINT, RG_HINT,
RG_TYCOON_WALLET, RG_TYCOON_WALLET,
RG_FAIRY_OCARINA, RG_FAIRY_OCARINA,
@ -3018,6 +3027,15 @@ typedef enum {
RHT_DEKU_STICK_CAPACITY_20, RHT_DEKU_STICK_CAPACITY_20,
RHT_DEKU_STICK_CAPACITY_30, RHT_DEKU_STICK_CAPACITY_30,
RHT_TRIFORCE_PIECE, RHT_TRIFORCE_PIECE,
RHT_GOHMA_SOUL,
RHT_KING_DODONGO_SOUL,
RHT_BARINADE_SOUL,
RHT_PHANTOM_GANON_SOUL,
RHT_VOLVAGIA_SOUL,
RHT_MORPHA_SOUL,
RHT_BONGO_BONGO_SOUL,
RHT_TWINROVA_SOUL,
RHT_GANON_SOUL,
RHT_EPONA, RHT_EPONA,
// Entrances // Entrances
RHT_DESERT_COLOSSUS_TO_COLOSSUS_GROTTO, RHT_DESERT_COLOSSUS_TO_COLOSSUS_GROTTO,
@ -3427,6 +3445,7 @@ typedef enum {
RSK_TRIFORCE_HUNT, RSK_TRIFORCE_HUNT,
RSK_TRIFORCE_HUNT_PIECES_TOTAL, RSK_TRIFORCE_HUNT_PIECES_TOTAL,
RSK_TRIFORCE_HUNT_PIECES_REQUIRED, RSK_TRIFORCE_HUNT_PIECES_REQUIRED,
RSK_SHUFFLE_BOSS_SOULS,
RSK_MAX RSK_MAX
} RandomizerSettingKey; } RandomizerSettingKey;
@ -3551,6 +3570,12 @@ typedef enum {
RO_AMMO_DROPS_OFF, RO_AMMO_DROPS_OFF,
} RandoOptionAmmoDrops; } RandoOptionAmmoDrops;
typedef enum {
RO_BOSS_SOULS_OFF,
RO_BOSS_SOULS_ON,
RO_BOSS_SOULS_ON_PLUS_GANON,
} RandoOptionBossSouls;
//Any Dungeon Item (start with, vanilla, own dungeon, any dungeon, //Any Dungeon Item (start with, vanilla, own dungeon, any dungeon,
//overworld, anywhere) //overworld, anywhere)
typedef enum { typedef enum {

View File

@ -160,6 +160,16 @@ typedef enum {
RAND_INF_ADULT_FISHING, RAND_INF_ADULT_FISHING,
RAND_INF_10_BIG_POES, RAND_INF_10_BIG_POES,
RAND_INF_GOHMA_SOUL,
RAND_INF_KING_DODONGO_SOUL,
RAND_INF_BARINADE_SOUL,
RAND_INF_PHANTOM_GANON_SOUL,
RAND_INF_VOLVAGIA_SOUL,
RAND_INF_MORPHA_SOUL,
RAND_INF_BONGO_BONGO_SOUL,
RAND_INF_TWINROVA_SOUL,
RAND_INF_GANON_SOUL,
// 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) // 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, RAND_INF_MAX,

View File

@ -84,6 +84,20 @@ std::vector<ItemTrackerItem> triforcePieces = {
ITEM_TRACKER_ITEM(RG_TRIFORCE_PIECE, 0, DrawItem), ITEM_TRACKER_ITEM(RG_TRIFORCE_PIECE, 0, DrawItem),
}; };
std::vector<ItemTrackerItem> bossSoulItems = {
//Hack for right now, just gonna draw souls as bottles/big poes.
//Will replace with other macro once we have a custom texture
ITEM_TRACKER_ITEM_CUSTOM(RG_GOHMA_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_KING_DODONGO_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_BARINADE_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_PHANTOM_GANON_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_VOLVAGIA_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_MORPHA_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_BONGO_BONGO_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_TWINROVA_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
ITEM_TRACKER_ITEM_CUSTOM(RG_GANON_SOUL, ITEM_BIG_POE, ITEM_BOTTLE, 0, DrawItem ),
};
std::vector<ItemTrackerDungeon> itemTrackerDungeonsWithMapsHorizontal = { std::vector<ItemTrackerDungeon> itemTrackerDungeonsWithMapsHorizontal = {
{ SCENE_DEKU_TREE, { ITEM_DUNGEON_MAP, ITEM_COMPASS } }, { SCENE_DEKU_TREE, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
{ SCENE_DODONGOS_CAVERN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } }, { SCENE_DODONGOS_CAVERN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
@ -154,6 +168,18 @@ std::map<uint16_t, std::string> itemTrackerDungeonShortNames = {
{ SCENE_THIEVES_HIDEOUT, "HIDE" }, { SCENE_THIEVES_HIDEOUT, "HIDE" },
}; };
std::map<uint16_t, std::string> itemTrackerBossShortNames = {
{ RG_GOHMA_SOUL, "GOHMA" },
{ RG_KING_DODONGO_SOUL, "KD" },
{ RG_BARINADE_SOUL, "BARI" },
{ RG_PHANTOM_GANON_SOUL, "PG"},
{ RG_VOLVAGIA_SOUL, "VOLV"},
{ RG_MORPHA_SOUL, "MORPH"},
{ RG_BONGO_BONGO_SOUL, "BONGO"},
{ RG_TWINROVA_SOUL, "TWIN"},
{ RG_GANON_SOUL, "GANON"},
};
std::vector<ItemTrackerItem> dungeonItems = {}; std::vector<ItemTrackerItem> dungeonItems = {};
std::unordered_map<uint32_t, ItemTrackerItem> actualItemTrackerItemMap = { std::unordered_map<uint32_t, ItemTrackerItem> actualItemTrackerItemMap = {
@ -609,6 +635,53 @@ void DrawItem(ItemTrackerItem item) {
hasItem = IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT); hasItem = IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT);
itemName = "Triforce Piece"; itemName = "Triforce Piece";
break; break;
case RG_GOHMA_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_GOHMA_SOUL);
itemName = "Gohma's Soul";
break;
case RG_KING_DODONGO_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_KING_DODONGO_SOUL);
itemName = "King Dodongo's Soul";
break;
case RG_BARINADE_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_BARINADE_SOUL);
itemName = "Barinade's Soul";
break;
case RG_PHANTOM_GANON_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_PHANTOM_GANON_SOUL);
itemName = "Phantom Ganon's Soul";
break;
case RG_VOLVAGIA_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_VOLVAGIA_SOUL);
itemName = "Volvagia's Soul";
break;
case RG_MORPHA_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_MORPHA_SOUL);
itemName = "Morpha's Soul";
break;
case RG_BONGO_BONGO_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_BONGO_BONGO_SOUL);
itemName = "Bongo Bongo's Soul";
break;
case RG_TWINROVA_SOUL:
actualItemId = item.id;
hasItem = Flags_GetRandomizerInf(RAND_INF_TWINROVA_SOUL);
itemName = "Twinrova's Soul";
break;
case RG_GANON_SOUL:
actualItemId = item.id;
hasItem = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BOSS_SOULS) == RO_BOSS_SOULS_ON_PLUS_GANON ?
Flags_GetRandomizerInf(RAND_INF_GANON_SOUL) : true;
itemName = "Ganon's Soul";
break;
} }
if (GameInteractor::IsSaveLoaded() && (hasItem && item.id != actualItemId && actualItemTrackerItemMap.find(actualItemId) != actualItemTrackerItemMap.end())) { if (GameInteractor::IsSaveLoaded() && (hasItem && item.id != actualItemId && actualItemTrackerItemMap.find(actualItemId) != actualItemTrackerItemMap.end())) {
@ -621,6 +694,16 @@ void DrawItem(ItemTrackerItem item) {
ImVec2(iconSize, iconSize), ImVec2(0, 0), ImVec2(1, 1)); ImVec2(iconSize, iconSize), ImVec2(0, 0), ImVec2(1, 1));
DrawItemCount(item); DrawItemCount(item);
if (item.id >= RG_GOHMA_SOUL && item.id <= RG_GANON_SOUL) {
ImVec2 p = ImGui::GetCursorScreenPos();
std::string bossName = itemTrackerBossShortNames[item.id];
ImGui::SetCursorScreenPos(ImVec2(p.x + (iconSize / 2) - (ImGui::CalcTextSize(bossName.c_str()).x / 2), p.y - (iconSize + 13)));
ImGui::PushStyleColor(ImGuiCol_Text, IM_COL_WHITE);
ImGui::Text("%s", bossName.c_str());
ImGui::PopStyleColor();
}
ImGui::EndGroup(); ImGui::EndGroup();
if (itemName == "") { if (itemName == "") {
@ -956,6 +1039,17 @@ void UpdateVectors() {
mainWindowItems.insert(mainWindowItems.end(), triforcePieces.begin(), triforcePieces.end()); mainWindowItems.insert(mainWindowItems.end(), triforcePieces.begin(), triforcePieces.end());
} }
//If we're adding boss souls to the main window...
if (CVarGetInteger("gItemTrackerBossSoulsDisplayType", SECTION_DISPLAY_HIDDEN) == SECTION_DISPLAY_MAIN_WINDOW) {
//...add empty items on the main window to get the souls on their own row. (Too many to sit with Greg/Triforce pieces)
while (mainWindowItems.size() % 6) {
mainWindowItems.push_back(ITEM_TRACKER_ITEM(ITEM_NONE, 0, DrawItem));
}
//Add boss souls
mainWindowItems.insert(mainWindowItems.end(), bossSoulItems.begin(), bossSoulItems.end());
}
shouldUpdateVectors = false; shouldUpdateVectors = false;
} }
@ -1056,6 +1150,12 @@ void ItemTrackerWindow::DrawElement() {
EndFloatingWindows(); EndFloatingWindows();
} }
if (CVarGetInteger("gItemTrackerBossSoulsDisplayType", SECTION_DISPLAY_HIDDEN) == SECTION_DISPLAY_SEPARATE) {
BeginFloatingWindows("Boss Soul Tracker");
DrawItemsInRows(bossSoulItems);
EndFloatingWindows();
}
if (CVarGetInteger("gItemTrackerNotesDisplayType", SECTION_DISPLAY_HIDDEN) == SECTION_DISPLAY_SEPARATE && CVarGetInteger("gItemTrackerDisplayType", TRACKER_DISPLAY_ALWAYS) == TRACKER_DISPLAY_ALWAYS) { if (CVarGetInteger("gItemTrackerNotesDisplayType", SECTION_DISPLAY_HIDDEN) == SECTION_DISPLAY_SEPARATE && CVarGetInteger("gItemTrackerDisplayType", TRACKER_DISPLAY_ALWAYS) == TRACKER_DISPLAY_ALWAYS) {
ImGui::SetNextWindowSize(ImVec2(400,300), ImGuiCond_FirstUseEver); ImGui::SetNextWindowSize(ImVec2(400,300), ImGuiCond_FirstUseEver);
BeginFloatingWindows("Personal Notes", ImGuiWindowFlags_NoFocusOnAppearing); BeginFloatingWindows("Personal Notes", ImGuiWindowFlags_NoFocusOnAppearing);
@ -1195,6 +1295,10 @@ void ItemTrackerSettingsWindow::DrawElement() {
shouldUpdateVectors = true; shouldUpdateVectors = true;
} }
if (UIWidgets::LabeledRightAlignedEnhancementCombobox("Boss Souls", "gItemTrackerBossSoulsDisplayType", displayTypes, SECTION_DISPLAY_HIDDEN)) {
shouldUpdateVectors = true;
}
if (CVarGetInteger("gItemTrackerDisplayType", TRACKER_DISPLAY_ALWAYS) == TRACKER_DISPLAY_ALWAYS) { if (CVarGetInteger("gItemTrackerDisplayType", TRACKER_DISPLAY_ALWAYS) == TRACKER_DISPLAY_ALWAYS) {
if (UIWidgets::LabeledRightAlignedEnhancementCombobox("Personal notes", "gItemTrackerNotesDisplayType", displayTypes, SECTION_DISPLAY_HIDDEN)) { if (UIWidgets::LabeledRightAlignedEnhancementCombobox("Personal notes", "gItemTrackerNotesDisplayType", displayTypes, SECTION_DISPLAY_HIDDEN)) {
shouldUpdateVectors = true; shouldUpdateVectors = true;

View File

@ -24,6 +24,11 @@ bool HasEquipment(ItemTrackerItem);
id, #id, #id "_Faded", data, drawFunc \ id, #id, #id "_Faded", data, drawFunc \
} }
#define ITEM_TRACKER_ITEM_CUSTOM(id, name, nameFaded, data, drawFunc)\
{ \
id, #name, #nameFaded "_Faded", data, drawFunc \
}
typedef struct ItemTrackerDungeon { typedef struct ItemTrackerDungeon {
uint32_t id; uint32_t id;
std::vector<uint32_t> items; std::vector<uint32_t> items;

View File

@ -106,6 +106,7 @@ void Settings::CreateOptions() {
mOptions[RSK_SHUFFLE_ADULT_TRADE] = Option::Bool("Shuffle Adult Trade"); mOptions[RSK_SHUFFLE_ADULT_TRADE] = Option::Bool("Shuffle Adult Trade");
mOptions[RSK_SHUFFLE_CHEST_MINIGAME] = Option::U8("Shuffle Chest Minigame", {"Off", "On (Separate)", "On (Pack)"}); mOptions[RSK_SHUFFLE_CHEST_MINIGAME] = Option::U8("Shuffle Chest Minigame", {"Off", "On (Separate)", "On (Pack)"});
mOptions[RSK_SHUFFLE_100_GS_REWARD] = Option::Bool("Shuffle 100 GS Reward"); mOptions[RSK_SHUFFLE_100_GS_REWARD] = Option::Bool("Shuffle 100 GS Reward");
mOptions[RSK_SHUFFLE_BOSS_SOULS] = Option::U8("Shuffle Boss Souls", {"Off", "On", "On + Ganon"});
mOptions[RSK_SHUFFLE_MAPANDCOMPASS] = Option::U8("Maps/Compasses", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"}, OptionCategory::Setting, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON); mOptions[RSK_SHUFFLE_MAPANDCOMPASS] = Option::U8("Maps/Compasses", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"}, OptionCategory::Setting, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
mOptions[RSK_KEYSANITY] = Option::U8("Small Keys", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"}, OptionCategory::Setting, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON); mOptions[RSK_KEYSANITY] = Option::U8("Small Keys", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"}, OptionCategory::Setting, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
mOptions[RSK_GERUDO_KEYS] = Option::U8("Gerudo Fortress Keys", {"Vanilla", "Any Dungeon", "Overworld", "Anywhere"}); mOptions[RSK_GERUDO_KEYS] = Option::U8("Gerudo Fortress Keys", {"Vanilla", "Any Dungeon", "Overworld", "Anywhere"});
@ -616,6 +617,7 @@ void Settings::CreateOptions() {
&mOptions[RSK_SHUFFLE_ADULT_TRADE], &mOptions[RSK_SHUFFLE_ADULT_TRADE],
&mOptions[RSK_SHUFFLE_CHEST_MINIGAME], &mOptions[RSK_SHUFFLE_CHEST_MINIGAME],
&mOptions[RSK_SHUFFLE_100_GS_REWARD], &mOptions[RSK_SHUFFLE_100_GS_REWARD],
&mOptions[RSK_SHUFFLE_BOSS_SOULS],
}); });
mOptionGroups[RSG_SHUFFLE_DUNGEON_ITEMS] = OptionGroup("Shuffle Dungeon Items", { mOptionGroups[RSG_SHUFFLE_DUNGEON_ITEMS] = OptionGroup("Shuffle Dungeon Items", {
&mOptions[RSK_SHUFFLE_MAPANDCOMPASS], &mOptions[RSK_SHUFFLE_MAPANDCOMPASS],
@ -821,6 +823,7 @@ void Settings::CreateOptions() {
{ "Shuffle Settings:Shuffle Frog Song Rupees", RSK_SHUFFLE_FROG_SONG_RUPEES }, { "Shuffle Settings:Shuffle Frog Song Rupees", RSK_SHUFFLE_FROG_SONG_RUPEES },
{ "Shuffle Settings:Shuffle Merchants", RSK_SHUFFLE_MERCHANTS }, { "Shuffle Settings:Shuffle Merchants", RSK_SHUFFLE_MERCHANTS },
{ "Shuffle Settings:Shuffle 100 GS Reward", RSK_SHUFFLE_100_GS_REWARD }, { "Shuffle Settings:Shuffle 100 GS Reward", RSK_SHUFFLE_100_GS_REWARD },
{ "Shuffle Settings:Shuffle Boss Souls", RSK_SHUFFLE_BOSS_SOULS },
{ "Start with Deku Shield", RSK_STARTING_DEKU_SHIELD }, { "Start with Deku Shield", RSK_STARTING_DEKU_SHIELD },
{ "Start with Kokiri Sword", RSK_STARTING_KOKIRI_SWORD }, { "Start with Kokiri Sword", RSK_STARTING_KOKIRI_SWORD },
{ "Start with Fairy Ocarina", RSK_STARTING_OCARINA }, { "Start with Fairy Ocarina", RSK_STARTING_OCARINA },
@ -1520,6 +1523,14 @@ void Settings::ParseJson(nlohmann::json spoilerFileJson) {
mOptions[index].SetSelectedIndex(RO_AMMO_DROPS_OFF); mOptions[index].SetSelectedIndex(RO_AMMO_DROPS_OFF);
} }
break; break;
case RSK_SHUFFLE_BOSS_SOULS:
if (it.value() == "Off") {
mOptions[index].SetSelectedIndex(RO_BOSS_SOULS_OFF);
} else if (it.value() == "On") {
mOptions[index].SetSelectedIndex(RO_BOSS_SOULS_ON);
} else if (it.value() == "On + Ganon") {
mOptions[index].SetSelectedIndex(RO_BOSS_SOULS_ON_PLUS_GANON);
}
case RSK_STARTING_OCARINA: case RSK_STARTING_OCARINA:
if (it.value() == "Off") { if (it.value() == "Off") {
mOptions[index].SetSelectedIndex(RO_STARTING_OCARINA_OFF); mOptions[index].SetSelectedIndex(RO_STARTING_OCARINA_OFF);

View File

@ -2611,6 +2611,13 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
return Return_Item_Entry(giEntry, RG_NONE); return Return_Item_Entry(giEntry, RG_NONE);
} }
if (item >= RG_GOHMA_SOUL && item <= RG_GANON_SOUL) {
u8 index = item - RG_GOHMA_SOUL;
Flags_SetRandomizerInf(RAND_INF_GOHMA_SOUL + index);
return Return_Item_Entry(giEntry, RG_NONE);
}
if (item == RG_PROGRESSIVE_BOMBCHUS) { if (item == RG_PROGRESSIVE_BOMBCHUS) {
if (INV_CONTENT(ITEM_BOMBCHU) == ITEM_NONE) { if (INV_CONTENT(ITEM_BOMBCHU) == ITEM_NONE) {
INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU;

View File

@ -652,6 +652,9 @@ void BossVa_Init(Actor* thisx, PlayState* play2) {
this->actor.colChkInfo.damageTable = sDamageTable; this->actor.colChkInfo.damageTable = sDamageTable;
sPhase2Timer = 0xFFFF; sPhase2Timer = 0xFFFF;
if (Flags_GetEventChkInf(EVENTCHKINF_BEGAN_BARINA_BATTLE)) { if (Flags_GetEventChkInf(EVENTCHKINF_BEGAN_BARINA_BATTLE)) {
if (Randomizer_GetSettingValue(RSK_SHUFFLE_BOSS_SOULS) && !Flags_GetRandomizerInf(RAND_INF_BARINADE_SOUL)) {
sCsState = BOSSVA_BATTLE;
} else {
sCsState = INTRO_CALL_BARI; sCsState = INTRO_CALL_BARI;
sDoorState = 100; sDoorState = 100;
func_8002DF54(play, &this->actor, 1); func_8002DF54(play, &this->actor, 1);
@ -682,6 +685,7 @@ void BossVa_Init(Actor* thisx, PlayState* play2) {
} }
sCameraAtMaxVel = sCameraEyeMaxVel = sZeroVec; sCameraAtMaxVel = sCameraEyeMaxVel = sZeroVec;
}
} else { } else {
sCsState = INTRO_START; sCsState = INTRO_START;

View File

@ -495,7 +495,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->jewel.type = DEMO_EFFECT_JEWEL_ZORA; this->jewel.type = DEMO_EFFECT_JEWEL_ZORA;
this->jewel.isPositionInit = 0; this->jewel.isPositionInit = 0;
DemoEffect_InitJewel(play, this); DemoEffect_InitJewel(play, this);
Actor_ChangeCategory(play, &play->actorCtx, &this->actor, ACTOR_EN_DOOR); Actor_ChangeCategory(play, &play->actorCtx, &this->actor, ACTORCAT_BOSS);
if ((play->sceneNum == SCENE_JABU_JABU) && (Flags_GetInfTable(INFTABLE_145))) { if ((play->sceneNum == SCENE_JABU_JABU) && (Flags_GetInfTable(INFTABLE_145))) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
return; return;