Rando Enhancement: Mysterious Shuffled Items (#3227)

* Add rando enhancement "Mysterious Shuffled Items", which obfuscates shuffled freestanding/drawn-in-world items (PoH, tokens, shop items) with a custom question mark model (thanks Hato), and uses the "mysterious item" functionality of `GetMerchantMessage` for everything that supports it, regardless of hint status on generation.

* Reverted back to rando enhancement, but added condition for Mysterious Shuffle not being on for the gem rotation fix to apply.

* First attempt at changing to fake GetItemEntry instead of directly calling the mystery draw function. Needs more work.

* Updated CVar to reflect CVar rework values.

Added `IsCheckShuffled` as preliminary function for checking *only* if a check is shuffled, not necessarily if it is just visible on the tracker. This accounts for the difference between tokensanity and "Always Show GS On Tracker", where you don't want to obfuscate the latter.

* Bit of cleanup.

* Cross-platform building edits. If anyone has a better idea of how to handle this fake GIE, I'm all ears.

* Update to CVar macros.

* Fix freestanding item gives.
Fix mysterious item model colors.

* Fix bombchu bowling mystery.

* Remove bowling bomchus check obfuscation (unused, removed in v3).
This commit is contained in:
Malkierian 2024-05-06 17:17:08 -07:00 committed by GitHub
parent f3b948226b
commit b3d51441eb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
29 changed files with 896 additions and 41 deletions

View File

@ -0,0 +1,16 @@
<DisplayList Version="0">
<ClearGeometryMode G_LIGHTING="1" />
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="objects/object_mystery_item/mat_gMysteryItemDL_f3dlite_mysteryItem_material"/>
<CallDisplayList Path="objects/object_mystery_item/gMysteryItemDL_tri_0"/>
<CallDisplayList Path="objects/object_mystery_item/mat_gMysteryItemDL_f3dlite_mysteryItem_light_material"/>
<CallDisplayList Path="objects/object_mystery_item/gMysteryItemDL_tri_1"/>
<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,56 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="2" V01="4" V02="3" Flag0="0" V10="0" V11="3" V12="5" Flag1="0"/>
<Triangles2 V00="3" V01="6" V02="5" Flag0="0" V10="3" V11="7" V12="6" Flag1="0"/>
<Triangles2 V00="3" V01="8" V02="7" Flag0="0" V10="3" V11="9" V12="8" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="6" Flag0="0" V10="7" V11="11" V12="10" Flag1="0"/>
<Triangles2 V00="7" V01="12" V02="11" Flag0="0" V10="13" V11="14" V12="0" Flag1="0"/>
<Triangles2 V00="15" V01="13" V02="0" Flag0="0" V10="16" V11="15" V12="0" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="0" Flag0="0" V10="0" V11="18" V12="17" Flag1="0"/>
<Triangles2 V00="0" V01="19" V02="18" Flag0="0" V10="0" V11="5" V12="19" Flag1="0"/>
<Triangles2 V00="17" V01="20" V02="16" Flag0="0" V10="20" V11="21" V12="16" Flag1="0"/>
<Triangles2 V00="21" V01="22" V02="16" Flag0="0" V10="21" V11="23" V12="22" Flag1="0"/>
<Triangles2 V00="23" V01="24" V02="22" Flag0="0" V10="23" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="23" V01="26" V02="25" Flag0="0" V10="23" V11="27" V12="26" Flag1="0"/>
<Triangles2 V00="26" V01="28" V02="25" Flag0="0" V10="15" V11="29" V12="13" Flag1="0"/>
<Triangles2 V00="30" V01="31" V02="15" Flag0="0" V10="16" V11="30" V12="15" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="4" V12="0" Flag1="0"/>
<Triangles2 V00="5" V01="3" V02="0" Flag0="0" V10="6" V11="7" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="6" V02="8" Flag0="0" V10="9" V11="8" V12="10" Flag1="0"/>
<Triangles2 V00="9" V01="11" V02="6" Flag0="0" V10="12" V11="13" V12="14" Flag1="0"/>
<Triangles2 V00="15" V01="12" V02="14" Flag0="0" V10="16" V11="15" V12="14" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="14" Flag0="0" V10="18" V11="17" V12="14" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="14" Flag0="0" V10="14" V11="20" V12="19" Flag1="0"/>
<Triangles2 V00="14" V01="21" V02="20" Flag0="0" V10="14" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="14" V01="23" V02="22" Flag0="0" V10="22" V11="24" V12="21" Flag1="0"/>
<Triangles2 V00="21" V01="25" V02="26" Flag0="0" V10="21" V11="26" V12="20" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="20" Flag0="0" V10="20" V11="28" V12="29" Flag1="0"/>
<Triangles2 V00="20" V01="29" V02="30" Flag0="0" V10="20" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="1" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="1" Flag0="0" V10="3" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="6" V02="4" Flag0="0" V10="5" V11="7" V12="6" Flag1="0"/>
<Triangles2 V00="6" V01="8" V02="4" Flag0="0" V10="9" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="9" V02="11" Flag0="0" V10="13" V11="12" V12="11" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="11" Flag0="0" V10="13" V11="15" V12="12" Flag1="0"/>
<Triangles2 V00="13" V01="16" V02="15" Flag0="0" V10="15" V11="17" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="18" V02="9" Flag0="0" V10="4" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="4" V01="20" V02="1" Flag0="0" V10="20" V11="21" V12="1" Flag1="0"/>
<Triangles2 V00="22" V01="2" V02="23" Flag0="0" V10="22" V11="23" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="25" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="27" V01="29" V02="28" Flag0="0" V10="28" V11="30" V12="25" Flag1="0"/>
<Triangle1 V00="28" V01="31" V02="30"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_0" VertexBufferIndex="0" VertexOffset="96" Count="21"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="6" V01="8" V02="7" Flag0="0" V10="9" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="9" V01="11" V02="12" Flag0="0" V10="11" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="14" V02="9" Flag0="0" V10="12" V11="15" V12="14" Flag1="0"/>
<Triangles2 V00="12" V01="16" V02="15" Flag0="0" V10="15" V11="17" V12="14" Flag1="0"/>
<Triangles2 V00="14" V01="18" V02="19" Flag0="0" V10="14" V11="19" V12="9" Flag1="0"/>
<Triangle1 V00="19" V01="20" V02="9"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,120 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="4" V12="5" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="6" V11="8" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="11" V02="12" Flag0="0" V10="10" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="14" V11="16" V12="17" Flag1="0"/>
<Triangles2 V00="18" V01="19" V02="20" Flag0="0" V10="18" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="22" V11="24" V12="25" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="26" V11="28" V12="29" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="30" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="62" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="94" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="126" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="158" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="190" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="222" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="254" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="286" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="318" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="350" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/object_mystery_item/gMysteryItemDL_vtx_1" VertexBufferIndex="0" VertexOffset="382" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="2" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="4" V11="6" V12="7" Flag1="0"/>
<Triangles2 V00="8" V01="9" V02="10" Flag0="0" V10="8" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="12" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="16" V11="18" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="20" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="24" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="28" V11="30" V12="31" Flag1="0"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,119 @@
<Vertex Version="0">
<Vtx X="12" Y="36" Z="5" S="151" T="-443" R="0" G="0" B="127" A="255"/>
<Vtx X="2" Y="38" Z="5" S="4" T="-461" R="0" G="0" B="127" A="255"/>
<Vtx X="-4" Y="37" Z="5" S="-71" T="-456" R="0" G="0" B="127" A="255"/>
<Vtx X="-13" Y="34" Z="5" S="-197" T="-417" R="0" G="0" B="127" A="255"/>
<Vtx X="-9" Y="36" Z="5" S="-139" T="-441" R="0" G="0" B="127" A="255"/>
<Vtx X="-3" Y="31" Z="5" S="-59" T="-373" R="0" G="0" B="127" A="255"/>
<Vtx X="-11" Y="27" Z="5" S="-157" T="-323" R="0" G="0" B="127" A="255"/>
<Vtx X="-23" Y="24" Z="5" S="-318" T="-281" R="0" G="0" B="127" A="255"/>
<Vtx X="-19" Y="30" Z="5" S="-275" T="-355" R="0" G="0" B="127" A="255"/>
<Vtx X="-17" Y="32" Z="5" S="-242" T="-388" R="0" G="0" B="127" A="255"/>
<Vtx X="-15" Y="22" Z="5" S="-220" T="-239" R="0" G="0" B="127" A="255"/>
<Vtx X="-26" Y="23" Z="5" S="-358" T="-270" R="0" G="0" B="127" A="255"/>
<Vtx X="-25" Y="24" Z="5" S="-357" T="-278" R="0" G="0" B="127" A="255"/>
<Vtx X="22" Y="31" Z="5" S="277" T="-377" R="0" G="0" B="127" A="255"/>
<Vtx X="18" Y="34" Z="5" S="223" T="-416" R="0" G="0" B="127" A="255"/>
<Vtx X="26" Y="23" Z="5" S="331" T="-269" R="0" G="0" B="127" A="255"/>
<Vtx X="22" Y="11" Z="5" S="286" T="-99" R="0" G="0" B="127" A="255"/>
<Vtx X="15" Y="24" Z="5" S="186" T="-275" R="0" G="0" B="127" A="255"/>
<Vtx X="11" Y="29" Z="5" S="132" T="-343" R="0" G="0" B="127" A="255"/>
<Vtx X="5" Y="31" Z="5" S="46" T="-375" R="0" G="0" B="127" A="255"/>
<Vtx X="15" Y="18" Z="5" S="188" T="-193" R="0" G="0" B="127" A="255"/>
<Vtx X="12" Y="13" Z="5" S="151" T="-130" R="0" G="0" B="127" A="255"/>
<Vtx X="11" Y="5" Z="5" S="128" T="-29" R="0" G="0" B="127" A="255"/>
<Vtx X="8" Y="10" Z="5" S="96" T="-85" R="0" G="0" B="127" A="255"/>
<Vtx X="5" Y="2" Z="5" S="55" T="12" R="0" G="0" B="127" A="255"/>
<Vtx X="-4" Y="0" Z="5" S="-76" T="43" R="0" G="0" B="127" A="255"/>
<Vtx X="-2" Y="4" Z="5" S="-44" T="-5" R="0" G="0" B="127" A="255"/>
<Vtx X="2" Y="7" Z="5" S="10" T="-45" R="0" G="0" B="127" A="255"/>
<Vtx X="-4" Y="2" Z="5" S="-64" T="19" R="0" G="0" B="127" A="255"/>
<Vtx X="24" Y="28" Z="5" S="312" T="-329" R="0" G="0" B="127" A="255"/>
<Vtx X="25" Y="15" Z="5" S="324" T="-165" R="0" G="0" B="127" A="255"/>
<Vtx X="26" Y="19" Z="5" S="333" T="-209" R="0" G="0" B="127" A="255"/>
<Vtx X="22" Y="11" Z="5" S="286" T="-99" R="0" G="0" B="127" A="255"/>
<Vtx X="24" Y="13" Z="5" S="308" T="-128" R="0" G="0" B="127" A="255"/>
<Vtx X="25" Y="15" Z="5" S="324" T="-165" R="0" G="0" B="127" A="255"/>
<Vtx X="18" Y="8" Z="5" S="221" T="-58" R="0" G="0" B="127" A="255"/>
<Vtx X="20" Y="9" Z="5" S="258" T="-76" R="0" G="0" B="127" A="255"/>
<Vtx X="11" Y="5" Z="5" S="128" T="-29" R="0" G="0" B="127" A="255"/>
<Vtx X="-5" Y="-4" Z="5" S="-82" T="94" R="0" G="0" B="127" A="255"/>
<Vtx X="2" Y="-4" Z="5" S="14" T="94" R="0" G="0" B="127" A="255"/>
<Vtx X="2" Y="-2" Z="5" S="14" T="76" R="0" G="0" B="127" A="255"/>
<Vtx X="-4" Y="0" Z="5" S="-76" T="43" R="0" G="0" B="127" A="255"/>
<Vtx X="5" Y="2" Z="5" S="55" T="12" R="0" G="0" B="127" A="255"/>
<Vtx X="-5" Y="-2" Z="5" S="-82" T="66" R="0" G="0" B="127" A="255"/>
<Vtx X="-4" Y="37" Z="-5" S="-71" T="-456" R="0" G="0" B="129" A="255"/>
<Vtx X="2" Y="38" Z="-5" S="4" T="-461" R="0" G="0" B="129" A="255"/>
<Vtx X="12" Y="36" Z="-5" S="151" T="-443" R="0" G="0" B="129" A="255"/>
<Vtx X="-9" Y="36" Z="-5" S="-139" T="-441" R="0" G="0" B="129" A="255"/>
<Vtx X="-3" Y="31" Z="-5" S="-59" T="-373" R="0" G="0" B="129" A="255"/>
<Vtx X="5" Y="31" Z="-5" S="46" T="-375" R="0" G="0" B="129" A="255"/>
<Vtx X="11" Y="29" Z="-5" S="132" T="-343" R="0" G="0" B="129" A="255"/>
<Vtx X="15" Y="24" Z="-5" S="186" T="-275" R="0" G="0" B="129" A="255"/>
<Vtx X="22" Y="11" Z="-5" S="286" T="-99" R="0" G="0" B="129" A="255"/>
<Vtx X="26" Y="23" Z="-5" S="331" T="-269" R="0" G="0" B="129" A="255"/>
<Vtx X="22" Y="31" Z="-5" S="277" T="-377" R="0" G="0" B="129" A="255"/>
<Vtx X="18" Y="34" Z="-5" S="223" T="-416" R="0" G="0" B="129" A="255"/>
<Vtx X="24" Y="28" Z="-5" S="312" T="-329" R="0" G="0" B="129" A="255"/>
<Vtx X="26" Y="19" Z="-5" S="333" T="-209" R="0" G="0" B="129" A="255"/>
<Vtx X="25" Y="15" Z="-5" S="324" T="-165" R="0" G="0" B="129" A="255"/>
<Vtx X="24" Y="13" Z="-5" S="308" T="-128" R="0" G="0" B="129" A="255"/>
<Vtx X="20" Y="9" Z="-5" S="258" T="-76" R="0" G="0" B="129" A="255"/>
<Vtx X="18" Y="8" Z="-5" S="221" T="-58" R="0" G="0" B="129" A="255"/>
<Vtx X="11" Y="5" Z="-5" S="128" T="-29" R="0" G="0" B="129" A="255"/>
<Vtx X="12" Y="13" Z="-5" S="151" T="-130" R="0" G="0" B="129" A="255"/>
<Vtx X="11" Y="5" Z="-5" S="128" T="-29" R="0" G="0" B="129" A="255"/>
<Vtx X="8" Y="10" Z="-5" S="96" T="-85" R="0" G="0" B="129" A="255"/>
<Vtx X="12" Y="13" Z="-5" S="151" T="-130" R="0" G="0" B="129" A="255"/>
<Vtx X="5" Y="2" Z="-5" S="55" T="12" R="0" G="0" B="129" A="255"/>
<Vtx X="-4" Y="0" Z="-5" S="-76" T="43" R="0" G="0" B="129" A="255"/>
<Vtx X="2" Y="-2" Z="-5" S="14" T="76" R="0" G="0" B="129" A="255"/>
<Vtx X="-5" Y="-4" Z="-5" S="-82" T="94" R="0" G="0" B="129" A="255"/>
<Vtx X="2" Y="-4" Z="-5" S="14" T="94" R="0" G="0" B="129" A="255"/>
<Vtx X="-5" Y="-2" Z="-5" S="-82" T="66" R="0" G="0" B="129" A="255"/>
<Vtx X="-17" Y="32" Z="-5" S="-242" T="-388" R="0" G="0" B="129" A="255"/>
<Vtx X="-13" Y="34" Z="-5" S="-197" T="-417" R="0" G="0" B="129" A="255"/>
<Vtx X="-9" Y="36" Z="-5" S="-139" T="-441" R="0" G="0" B="129" A="255"/>
<Vtx X="-23" Y="24" Z="-5" S="-318" T="-281" R="0" G="0" B="129" A="255"/>
<Vtx X="-11" Y="27" Z="-5" S="-157" T="-323" R="0" G="0" B="129" A="255"/>
<Vtx X="-3" Y="31" Z="-5" S="-59" T="-373" R="0" G="0" B="129" A="255"/>
<Vtx X="-26" Y="23" Z="-5" S="-358" T="-270" R="0" G="0" B="129" A="255"/>
<Vtx X="-15" Y="22" Z="-5" S="-217" T="-248" R="0" G="0" B="129" A="255"/>
<Vtx X="-25" Y="24" Z="-5" S="-357" T="-278" R="0" G="0" B="129" A="255"/>
<Vtx X="-19" Y="30" Z="-5" S="-275" T="-355" R="0" G="0" B="129" A="255"/>
<Vtx X="-4" Y="2" Z="-5" S="-64" T="19" R="0" G="0" B="129" A="255"/>
<Vtx X="-2" Y="4" Z="-5" S="-44" T="-5" R="0" G="0" B="129" A="255"/>
<Vtx X="2" Y="7" Z="-5" S="10" T="-45" R="0" G="0" B="129" A="255"/>
<Vtx X="22" Y="11" Z="-5" S="286" T="-99" R="0" G="0" B="129" A="255"/>
<Vtx X="15" Y="18" Z="-5" S="188" T="-193" R="0" G="0" B="129" A="255"/>
<Vtx X="15" Y="24" Z="-5" S="186" T="-275" R="0" G="0" B="129" A="255"/>
<Vtx X="-5" Y="-19" Z="-5" S="-376" T="51" R="0" G="0" B="129" A="255"/>
<Vtx X="-2" Y="-18" Z="-5" S="-341" T="36" R="0" G="0" B="129" A="255"/>
<Vtx X="1" Y="-18" Z="-5" S="-301" T="42" R="0" G="0" B="129" A="255"/>
<Vtx X="4" Y="-22" Z="-5" S="-256" T="101" R="0" G="0" B="129" A="255"/>
<Vtx X="3" Y="-20" Z="-5" S="-271" T="65" R="0" G="0" B="129" A="255"/>
<Vtx X="-3" Y="-28" Z="-5" S="-360" T="179" R="0" G="0" B="129" A="255"/>
<Vtx X="2" Y="-27" Z="-5" S="-284" T="170" R="0" G="0" B="129" A="255"/>
<Vtx X="4" Y="-22" Z="-5" S="-256" T="101" R="0" G="0" B="129" A="255"/>
<Vtx X="4" Y="-25" Z="-5" S="-262" T="141" R="0" G="0" B="129" A="255"/>
<Vtx X="2" Y="-27" Z="-5" S="-284" T="170" R="0" G="0" B="129" A="255"/>
<Vtx X="0" Y="-29" Z="-5" S="-320" T="185" R="0" G="0" B="129" A="255"/>
<Vtx X="-3" Y="-28" Z="-5" S="-360" T="179" R="0" G="0" B="129" A="255"/>
<Vtx X="-6" Y="-27" Z="-5" S="-390" T="157" R="0" G="0" B="129" A="255"/>
<Vtx X="-7" Y="-24" Z="-5" S="-405" T="122" R="0" G="0" B="129" A="255"/>
<Vtx X="-5" Y="-19" Z="-5" S="-376" T="51" R="0" G="0" B="129" A="255"/>
<Vtx X="-6" Y="-21" Z="-5" S="-399" T="82" R="0" G="0" B="129" A="255"/>
<Vtx X="1" Y="-18" Z="5" S="-301" T="42" R="0" G="0" B="127" A="255"/>
<Vtx X="-2" Y="-18" Z="5" S="-341" T="36" R="0" G="0" B="127" A="255"/>
<Vtx X="-5" Y="-19" Z="5" S="-376" T="51" R="0" G="0" B="127" A="255"/>
<Vtx X="-7" Y="-24" Z="5" S="-405" T="122" R="0" G="0" B="127" A="255"/>
<Vtx X="-6" Y="-21" Z="5" S="-399" T="82" R="0" G="0" B="127" A="255"/>
<Vtx X="2" Y="-27" Z="5" S="-284" T="170" R="0" G="0" B="127" A="255"/>
<Vtx X="-3" Y="-28" Z="5" S="-360" T="179" R="0" G="0" B="127" A="255"/>
<Vtx X="-6" Y="-27" Z="5" S="-390" T="157" R="0" G="0" B="127" A="255"/>
<Vtx X="0" Y="-29" Z="5" S="-320" T="185" R="0" G="0" B="127" A="255"/>
<Vtx X="4" Y="-25" Z="5" S="-262" T="141" R="0" G="0" B="127" A="255"/>
<Vtx X="4" Y="-22" Z="5" S="-256" T="101" R="0" G="0" B="127" A="255"/>
<Vtx X="3" Y="-20" Z="5" S="-271" T="65" R="0" G="0" B="127" A="255"/>
</Vertex>

View File

@ -0,0 +1,416 @@
<Vertex Version="0">
<Vtx X="-11" Y="16" Z="0" S="-168" T="-172" R="87" G="234" B="90" A="255"/>
<Vtx X="-11" Y="19" Z="0" S="-158" T="-209" R="87" G="234" B="90" A="255"/>
<Vtx X="-15" Y="22" Z="5" S="-217" T="-248" R="87" G="234" B="90" A="255"/>
<Vtx X="-15" Y="22" Z="-5" S="-220" T="-239" R="87" G="234" B="166" A="255"/>
<Vtx X="-11" Y="19" Z="0" S="-158" T="-209" R="87" G="234" B="166" A="255"/>
<Vtx X="-11" Y="16" Z="0" S="-168" T="-172" R="87" G="234" B="166" A="255"/>
<Vtx X="2" Y="43" Z="0" S="6" T="-529" R="250" G="90" B="90" A="255"/>
<Vtx X="-5" Y="42" Z="0" S="-81" T="-522" R="250" G="90" B="90" A="255"/>
<Vtx X="-4" Y="37" Z="5" S="-71" T="-456" R="250" G="90" B="90" A="255"/>
<Vtx X="2" Y="38" Z="5" S="4" T="-461" R="250" G="90" B="90" A="255"/>
<Vtx X="14" Y="41" Z="0" S="167" T="-509" R="10" G="89" B="90" A="255"/>
<Vtx X="2" Y="43" Z="0" S="6" T="-529" R="10" G="89" B="90" A="255"/>
<Vtx X="2" Y="38" Z="5" S="4" T="-461" R="10" G="89" B="90" A="255"/>
<Vtx X="12" Y="36" Z="5" S="151" T="-443" R="10" G="89" B="90" A="255"/>
<Vtx X="-5" Y="42" Z="0" S="-81" T="-522" R="237" G="88" B="90" A="255"/>
<Vtx X="-11" Y="41" Z="0" S="-159" T="-505" R="237" G="88" B="90" A="255"/>
<Vtx X="-9" Y="36" Z="5" S="-139" T="-441" R="237" G="88" B="90" A="255"/>
<Vtx X="-4" Y="37" Z="5" S="-71" T="-456" R="237" G="88" B="90" A="255"/>
<Vtx X="20" Y="39" Z="0" S="255" T="-475" R="32" G="84" B="90" A="255"/>
<Vtx X="14" Y="41" Z="0" S="167" T="-509" R="32" G="84" B="90" A="255"/>
<Vtx X="12" Y="36" Z="5" S="151" T="-443" R="32" G="84" B="90" A="255"/>
<Vtx X="18" Y="34" Z="5" S="223" T="-416" R="32" G="84" B="90" A="255"/>
<Vtx X="-11" Y="41" Z="0" S="-159" T="-505" R="223" G="83" B="90" A="255"/>
<Vtx X="-16" Y="39" Z="0" S="-228" T="-477" R="223" G="83" B="90" A="255"/>
<Vtx X="-13" Y="34" Z="5" S="-197" T="-417" R="223" G="83" B="90" A="255"/>
<Vtx X="-9" Y="36" Z="5" S="-139" T="-441" R="223" G="83" B="90" A="255"/>
<Vtx X="-16" Y="39" Z="0" S="-228" T="-477" R="208" G="76" B="90" A="255"/>
<Vtx X="-20" Y="36" Z="0" S="-285" T="-441" R="208" G="76" B="90" A="255"/>
<Vtx X="-17" Y="32" Z="5" S="-242" T="-388" R="208" G="76" B="90" A="255"/>
<Vtx X="-13" Y="34" Z="5" S="-197" T="-417" R="208" G="76" B="90" A="255"/>
<Vtx X="25" Y="35" Z="0" S="324" T="-425" R="52" G="73" B="90" A="255"/>
<Vtx X="20" Y="39" Z="0" S="255" T="-475" R="52" G="73" B="90" A="255"/>
<Vtx X="18" Y="34" Z="5" S="223" T="-416" R="52" G="73" B="90" A="255"/>
<Vtx X="22" Y="31" Z="5" S="277" T="-377" R="52" G="73" B="90" A="255"/>
<Vtx X="-20" Y="36" Z="0" S="-285" T="-441" R="192" G="63" B="90" A="255"/>
<Vtx X="-23" Y="33" Z="0" S="-329" T="-396" R="192" G="63" B="90" A="255"/>
<Vtx X="-19" Y="30" Z="5" S="-275" T="-355" R="192" G="63" B="90" A="255"/>
<Vtx X="-17" Y="32" Z="5" S="-242" T="-388" R="192" G="63" B="90" A="255"/>
<Vtx X="29" Y="30" Z="0" S="373" T="-360" R="72" G="53" B="90" A="255"/>
<Vtx X="25" Y="35" Z="0" S="324" T="-425" R="72" G="53" B="90" A="255"/>
<Vtx X="22" Y="31" Z="5" S="277" T="-377" R="72" G="53" B="90" A="255"/>
<Vtx X="24" Y="28" Z="5" S="312" T="-329" R="72" G="53" B="90" A="255"/>
<Vtx X="-23" Y="33" Z="0" S="-329" T="-396" R="178" G="45" B="90" A="255"/>
<Vtx X="-26" Y="29" Z="0" S="-358" T="-346" R="178" G="45" B="90" A="255"/>
<Vtx X="-23" Y="24" Z="5" S="-318" T="-281" R="178" G="45" B="90" A="255"/>
<Vtx X="-19" Y="30" Z="5" S="-275" T="-355" R="178" G="45" B="90" A="255"/>
<Vtx X="-26" Y="29" Z="0" S="-358" T="-346" R="250" G="90" B="90" A="255"/>
<Vtx X="-30" Y="29" Z="0" S="-416" T="-342" R="250" G="90" B="90" A="255"/>
<Vtx X="-25" Y="24" Z="5" S="-357" T="-278" R="250" G="90" B="90" A="255"/>
<Vtx X="-23" Y="24" Z="5" S="-318" T="-281" R="250" G="90" B="90" A="255"/>
<Vtx X="-30" Y="29" Z="0" S="-416" T="-342" R="167" G="11" B="90" A="255"/>
<Vtx X="-31" Y="19" Z="0" S="-433" T="-214" R="167" G="11" B="90" A="255"/>
<Vtx X="-26" Y="23" Z="5" S="-358" T="-270" R="167" G="11" B="90" A="255"/>
<Vtx X="-25" Y="24" Z="5" S="-357" T="-278" R="167" G="11" B="90" A="255"/>
<Vtx X="31" Y="24" Z="0" S="398" T="-280" R="86" G="27" B="90" A="255"/>
<Vtx X="29" Y="30" Z="0" S="373" T="-360" R="86" G="27" B="90" A="255"/>
<Vtx X="24" Y="28" Z="5" S="312" T="-329" R="86" G="27" B="90" A="255"/>
<Vtx X="26" Y="23" Z="5" S="331" T="-269" R="86" G="27" B="90" A="255"/>
<Vtx X="-2" Y="26" Z="0" S="-43" T="-306" R="2" G="166" B="90" A="255"/>
<Vtx X="4" Y="26" Z="0" S="35" T="-308" R="2" G="166" B="90" A="255"/>
<Vtx X="5" Y="31" Z="5" S="46" T="-375" R="2" G="166" B="90" A="255"/>
<Vtx X="-3" Y="31" Z="5" S="-59" T="-373" R="2" G="166" B="90" A="255"/>
<Vtx X="4" Y="26" Z="0" S="35" T="-308" R="225" G="172" B="90" A="255"/>
<Vtx X="8" Y="25" Z="0" S="91" T="-287" R="225" G="172" B="90" A="255"/>
<Vtx X="11" Y="29" Z="5" S="132" T="-343" R="225" G="172" B="90" A="255"/>
<Vtx X="5" Y="31" Z="5" S="46" T="-375" R="225" G="172" B="90" A="255"/>
<Vtx X="-7" Y="23" Z="0" S="-112" T="-271" R="40" G="176" B="90" A="255"/>
<Vtx X="-2" Y="26" Z="0" S="-43" T="-306" R="40" G="176" B="90" A="255"/>
<Vtx X="-3" Y="31" Z="5" S="-59" T="-373" R="40" G="176" B="90" A="255"/>
<Vtx X="-11" Y="27" Z="5" S="-157" T="-323" R="40" G="176" B="90" A="255"/>
<Vtx X="8" Y="25" Z="0" S="91" T="-287" R="186" G="200" B="90" A="255"/>
<Vtx X="10" Y="22" Z="0" S="120" T="-251" R="186" G="200" B="90" A="255"/>
<Vtx X="15" Y="24" Z="5" S="186" T="-275" R="186" G="200" B="90" A="255"/>
<Vtx X="11" Y="29" Z="5" S="132" T="-343" R="186" G="200" B="90" A="255"/>
<Vtx X="26" Y="23" Z="5" S="331" T="-269" R="90" G="2" B="90" A="255"/>
<Vtx X="26" Y="19" Z="5" S="333" T="-209" R="90" G="2" B="90" A="255"/>
<Vtx X="31" Y="18" Z="0" S="400" T="-203" R="90" G="2" B="90" A="255"/>
<Vtx X="31" Y="24" Z="0" S="398" T="-280" R="90" G="2" B="90" A="255"/>
<Vtx X="-11" Y="19" Z="0" S="-158" T="-209" R="70" G="202" B="91" A="255"/>
<Vtx X="-7" Y="23" Z="0" S="-112" T="-271" R="70" G="202" B="91" A="255"/>
<Vtx X="-11" Y="27" Z="5" S="-157" T="-323" R="70" G="202" B="91" A="255"/>
<Vtx X="-15" Y="22" Z="5" S="-220" T="-239" R="70" G="202" B="91" A="255"/>
<Vtx X="10" Y="22" Z="0" S="120" T="-251" R="166" G="255" B="90" A="255"/>
<Vtx X="10" Y="19" Z="0" S="120" T="-211" R="166" G="255" B="90" A="255"/>
<Vtx X="15" Y="18" Z="5" S="188" T="-193" R="166" G="255" B="90" A="255"/>
<Vtx X="15" Y="24" Z="5" S="186" T="-275" R="166" G="255" B="90" A="255"/>
<Vtx X="-31" Y="19" Z="0" S="-433" T="-214" R="242" G="167" B="90" A="255"/>
<Vtx X="-11" Y="16" Z="0" S="-168" T="-172" R="242" G="167" B="90" A="255"/>
<Vtx X="-15" Y="22" Z="5" S="-217" T="-248" R="242" G="167" B="90" A="255"/>
<Vtx X="-26" Y="23" Z="5" S="-358" T="-270" R="242" G="167" B="90" A="255"/>
<Vtx X="10" Y="19" Z="0" S="120" T="-211" R="179" G="46" B="90" A="255"/>
<Vtx X="9" Y="16" Z="0" S="99" T="-174" R="179" G="46" B="90" A="255"/>
<Vtx X="12" Y="13" Z="5" S="151" T="-130" R="179" G="46" B="90" A="255"/>
<Vtx X="15" Y="18" Z="5" S="188" T="-193" R="179" G="46" B="90" A="255"/>
<Vtx X="30" Y="14" Z="0" S="389" T="-145" R="88" G="239" B="90" A="255"/>
<Vtx X="31" Y="18" Z="0" S="400" T="-203" R="88" G="239" B="90" A="255"/>
<Vtx X="26" Y="19" Z="5" S="333" T="-209" R="88" G="239" B="90" A="255"/>
<Vtx X="25" Y="15" Z="5" S="324" T="-165" R="88" G="239" B="90" A="255"/>
<Vtx X="9" Y="16" Z="0" S="99" T="-174" R="199" G="70" B="90" A="255"/>
<Vtx X="6" Y="14" Z="0" S="60" T="-143" R="199" G="70" B="90" A="255"/>
<Vtx X="8" Y="10" Z="5" S="96" T="-85" R="199" G="70" B="90" A="255"/>
<Vtx X="12" Y="13" Z="5" S="151" T="-130" R="199" G="70" B="90" A="255"/>
<Vtx X="28" Y="10" Z="0" S="366" T="-94" R="82" G="220" B="90" A="255"/>
<Vtx X="30" Y="14" Z="0" S="389" T="-145" R="82" G="220" B="90" A="255"/>
<Vtx X="25" Y="15" Z="5" S="324" T="-165" R="82" G="220" B="90" A="255"/>
<Vtx X="24" Y="13" Z="5" S="308" T="-128" R="82" G="220" B="90" A="255"/>
<Vtx X="6" Y="14" Z="0" S="60" T="-143" R="218" G="81" B="90" A="255"/>
<Vtx X="-1" Y="11" Z="0" S="-24" T="-103" R="218" G="81" B="90" A="255"/>
<Vtx X="2" Y="7" Z="5" S="10" T="-45" R="218" G="81" B="90" A="255"/>
<Vtx X="8" Y="10" Z="5" S="96" T="-85" R="218" G="81" B="90" A="255"/>
<Vtx X="26" Y="7" Z="0" S="335" T="-52" R="72" G="202" B="90" A="255"/>
<Vtx X="28" Y="10" Z="0" S="366" T="-94" R="72" G="202" B="90" A="255"/>
<Vtx X="24" Y="13" Z="5" S="308" T="-128" R="72" G="202" B="90" A="255"/>
<Vtx X="22" Y="11" Z="5" S="286" T="-99" R="72" G="202" B="90" A="255"/>
<Vtx X="-1" Y="11" Z="0" S="-24" T="-103" R="203" G="73" B="90" A="255"/>
<Vtx X="-6" Y="7" Z="0" S="-90" T="-54" R="203" G="73" B="90" A="255"/>
<Vtx X="-2" Y="4" Z="5" S="-44" T="-5" R="203" G="73" B="90" A="255"/>
<Vtx X="2" Y="7" Z="5" S="10" T="-45" R="203" G="73" B="90" A="255"/>
<Vtx X="-6" Y="7" Z="0" S="-90" T="-54" R="187" G="58" B="90" A="255"/>
<Vtx X="-8" Y="5" Z="0" S="-120" T="-18" R="187" G="58" B="90" A="255"/>
<Vtx X="-4" Y="2" Z="5" S="-64" T="19" R="187" G="58" B="90" A="255"/>
<Vtx X="-2" Y="4" Z="5" S="-44" T="-5" R="187" G="58" B="90" A="255"/>
<Vtx X="23" Y="5" Z="0" S="294" T="-19" R="57" G="186" B="90" A="255"/>
<Vtx X="26" Y="7" Z="0" S="335" T="-52" R="57" G="186" B="90" A="255"/>
<Vtx X="22" Y="11" Z="5" S="286" T="-99" R="57" G="186" B="90" A="255"/>
<Vtx X="20" Y="9" Z="5" S="258" T="-76" R="57" G="186" B="90" A="255"/>
<Vtx X="19" Y="3" Z="0" S="246" T="4" R="39" G="175" B="90" A="255"/>
<Vtx X="23" Y="5" Z="0" S="294" T="-19" R="39" G="175" B="90" A="255"/>
<Vtx X="20" Y="9" Z="5" S="258" T="-76" R="39" G="175" B="90" A="255"/>
<Vtx X="18" Y="8" Z="5" S="221" T="-58" R="39" G="175" B="90" A="255"/>
<Vtx X="-8" Y="5" Z="0" S="-120" T="-18" R="176" G="41" B="90" A="255"/>
<Vtx X="-9" Y="2" Z="0" S="-139" T="19" R="176" G="41" B="90" A="255"/>
<Vtx X="-4" Y="0" Z="5" S="-76" T="43" R="176" G="41" B="90" A="255"/>
<Vtx X="-4" Y="2" Z="5" S="-64" T="19" R="176" G="41" B="90" A="255"/>
<Vtx X="13" Y="1" Z="0" S="155" T="33" R="27" G="170" B="90" A="255"/>
<Vtx X="19" Y="3" Z="0" S="246" T="4" R="27" G="170" B="90" A="255"/>
<Vtx X="18" Y="8" Z="5" S="221" T="-58" R="27" G="170" B="90" A="255"/>
<Vtx X="11" Y="5" Z="5" S="128" T="-29" R="27" G="170" B="90" A="255"/>
<Vtx X="-9" Y="2" Z="0" S="-139" T="19" R="168" G="21" B="90" A="255"/>
<Vtx X="-10" Y="-1" Z="0" S="-149" T="58" R="168" G="21" B="90" A="255"/>
<Vtx X="-5" Y="-2" Z="5" S="-82" T="66" R="168" G="21" B="90" A="255"/>
<Vtx X="-4" Y="0" Z="5" S="-76" T="43" R="168" G="21" B="90" A="255"/>
<Vtx X="9" Y="-1" Z="0" S="103" T="62" R="44" G="177" B="90" A="255"/>
<Vtx X="13" Y="1" Z="0" S="155" T="33" R="44" G="177" B="90" A="255"/>
<Vtx X="11" Y="5" Z="5" S="128" T="-29" R="44" G="177" B="90" A="255"/>
<Vtx X="5" Y="2" Z="5" S="55" T="12" R="44" G="177" B="90" A="255"/>
<Vtx X="-10" Y="-1" Z="0" S="-149" T="58" R="166" G="0" B="90" A="255"/>
<Vtx X="-10" Y="-9" Z="0" S="-150" T="161" R="166" G="0" B="90" A="255"/>
<Vtx X="-5" Y="-4" Z="5" S="-82" T="94" R="166" G="0" B="90" A="255"/>
<Vtx X="-5" Y="-2" Z="5" S="-82" T="66" R="166" G="0" B="90" A="255"/>
<Vtx X="7" Y="-4" Z="0" S="81" T="96" R="76" G="208" B="90" A="255"/>
<Vtx X="9" Y="-1" Z="0" S="103" T="62" R="76" G="208" B="90" A="255"/>
<Vtx X="5" Y="2" Z="5" S="55" T="12" R="76" G="208" B="90" A="255"/>
<Vtx X="2" Y="-2" Z="5" S="14" T="76" R="76" G="208" B="90" A="255"/>
<Vtx X="-10" Y="-9" Z="0" S="-150" T="161" R="0" G="166" B="90" A="255"/>
<Vtx X="7" Y="-9" Z="0" S="81" T="161" R="0" G="166" B="90" A="255"/>
<Vtx X="2" Y="-4" Z="5" S="14" T="94" R="0" G="166" B="90" A="255"/>
<Vtx X="-5" Y="-4" Z="5" S="-82" T="94" R="0" G="166" B="90" A="255"/>
<Vtx X="7" Y="-9" Z="0" S="81" T="161" R="90" G="0" B="90" A="255"/>
<Vtx X="7" Y="-4" Z="0" S="81" T="96" R="90" G="0" B="90" A="255"/>
<Vtx X="2" Y="-2" Z="5" S="14" T="76" R="90" G="0" B="90" A="255"/>
<Vtx X="2" Y="-4" Z="5" S="14" T="94" R="90" G="0" B="90" A="255"/>
<Vtx X="2" Y="38" Z="-5" S="4" T="-461" R="250" G="90" B="166" A="255"/>
<Vtx X="-4" Y="37" Z="-5" S="-71" T="-456" R="250" G="90" B="166" A="255"/>
<Vtx X="-5" Y="42" Z="0" S="-81" T="-522" R="250" G="90" B="166" A="255"/>
<Vtx X="2" Y="43" Z="0" S="6" T="-529" R="250" G="90" B="166" A="255"/>
<Vtx X="12" Y="36" Z="-5" S="151" T="-443" R="10" G="89" B="166" A="255"/>
<Vtx X="2" Y="38" Z="-5" S="4" T="-461" R="10" G="89" B="166" A="255"/>
<Vtx X="2" Y="43" Z="0" S="6" T="-529" R="10" G="89" B="166" A="255"/>
<Vtx X="14" Y="41" Z="0" S="167" T="-509" R="10" G="89" B="166" A="255"/>
<Vtx X="-4" Y="37" Z="-5" S="-71" T="-456" R="237" G="88" B="166" A="255"/>
<Vtx X="-9" Y="36" Z="-5" S="-139" T="-441" R="237" G="88" B="166" A="255"/>
<Vtx X="-11" Y="41" Z="0" S="-159" T="-505" R="237" G="88" B="166" A="255"/>
<Vtx X="-5" Y="42" Z="0" S="-81" T="-522" R="237" G="88" B="166" A="255"/>
<Vtx X="18" Y="34" Z="-5" S="223" T="-416" R="32" G="84" B="166" A="255"/>
<Vtx X="12" Y="36" Z="-5" S="151" T="-443" R="32" G="84" B="166" A="255"/>
<Vtx X="14" Y="41" Z="0" S="167" T="-509" R="32" G="84" B="166" A="255"/>
<Vtx X="20" Y="39" Z="0" S="255" T="-475" R="32" G="84" B="166" A="255"/>
<Vtx X="-9" Y="36" Z="-5" S="-139" T="-441" R="223" G="83" B="166" A="255"/>
<Vtx X="-13" Y="34" Z="-5" S="-197" T="-417" R="223" G="83" B="166" A="255"/>
<Vtx X="-16" Y="39" Z="0" S="-228" T="-477" R="223" G="83" B="166" A="255"/>
<Vtx X="-11" Y="41" Z="0" S="-159" T="-505" R="223" G="83" B="166" A="255"/>
<Vtx X="-13" Y="34" Z="-5" S="-197" T="-417" R="208" G="76" B="166" A="255"/>
<Vtx X="-17" Y="32" Z="-5" S="-242" T="-388" R="208" G="76" B="166" A="255"/>
<Vtx X="-20" Y="36" Z="0" S="-285" T="-441" R="208" G="76" B="166" A="255"/>
<Vtx X="-16" Y="39" Z="0" S="-228" T="-477" R="208" G="76" B="166" A="255"/>
<Vtx X="22" Y="31" Z="-5" S="277" T="-377" R="52" G="73" B="166" A="255"/>
<Vtx X="18" Y="34" Z="-5" S="223" T="-416" R="52" G="73" B="166" A="255"/>
<Vtx X="20" Y="39" Z="0" S="255" T="-475" R="52" G="73" B="166" A="255"/>
<Vtx X="25" Y="35" Z="0" S="324" T="-425" R="52" G="73" B="166" A="255"/>
<Vtx X="-17" Y="32" Z="-5" S="-242" T="-388" R="192" G="63" B="166" A="255"/>
<Vtx X="-19" Y="30" Z="-5" S="-275" T="-355" R="192" G="63" B="166" A="255"/>
<Vtx X="-23" Y="33" Z="0" S="-329" T="-396" R="192" G="63" B="166" A="255"/>
<Vtx X="-20" Y="36" Z="0" S="-285" T="-441" R="192" G="63" B="166" A="255"/>
<Vtx X="24" Y="28" Z="-5" S="312" T="-329" R="72" G="53" B="166" A="255"/>
<Vtx X="22" Y="31" Z="-5" S="277" T="-377" R="72" G="53" B="166" A="255"/>
<Vtx X="25" Y="35" Z="0" S="324" T="-425" R="72" G="53" B="166" A="255"/>
<Vtx X="29" Y="30" Z="0" S="373" T="-360" R="72" G="53" B="166" A="255"/>
<Vtx X="-19" Y="30" Z="-5" S="-275" T="-355" R="178" G="45" B="166" A="255"/>
<Vtx X="-23" Y="24" Z="-5" S="-318" T="-281" R="178" G="45" B="166" A="255"/>
<Vtx X="-26" Y="29" Z="0" S="-358" T="-346" R="178" G="45" B="166" A="255"/>
<Vtx X="-23" Y="33" Z="0" S="-329" T="-396" R="178" G="45" B="166" A="255"/>
<Vtx X="-23" Y="24" Z="-5" S="-318" T="-281" R="250" G="90" B="166" A="255"/>
<Vtx X="-25" Y="24" Z="-5" S="-357" T="-278" R="250" G="90" B="166" A="255"/>
<Vtx X="-30" Y="29" Z="0" S="-416" T="-342" R="250" G="90" B="166" A="255"/>
<Vtx X="-26" Y="29" Z="0" S="-358" T="-346" R="250" G="90" B="166" A="255"/>
<Vtx X="-25" Y="24" Z="-5" S="-357" T="-278" R="167" G="11" B="166" A="255"/>
<Vtx X="-26" Y="23" Z="-5" S="-358" T="-270" R="167" G="11" B="166" A="255"/>
<Vtx X="-31" Y="19" Z="0" S="-433" T="-214" R="167" G="11" B="166" A="255"/>
<Vtx X="-30" Y="29" Z="0" S="-416" T="-342" R="167" G="11" B="166" A="255"/>
<Vtx X="26" Y="23" Z="-5" S="331" T="-269" R="86" G="27" B="166" A="255"/>
<Vtx X="24" Y="28" Z="-5" S="312" T="-329" R="86" G="27" B="166" A="255"/>
<Vtx X="29" Y="30" Z="0" S="373" T="-360" R="86" G="27" B="166" A="255"/>
<Vtx X="31" Y="24" Z="0" S="398" T="-280" R="86" G="27" B="166" A="255"/>
<Vtx X="-3" Y="31" Z="-5" S="-59" T="-373" R="2" G="166" B="166" A="255"/>
<Vtx X="5" Y="31" Z="-5" S="46" T="-375" R="2" G="166" B="166" A="255"/>
<Vtx X="4" Y="26" Z="0" S="35" T="-308" R="2" G="166" B="166" A="255"/>
<Vtx X="-2" Y="26" Z="0" S="-43" T="-306" R="2" G="166" B="166" A="255"/>
<Vtx X="5" Y="31" Z="-5" S="46" T="-375" R="225" G="172" B="166" A="255"/>
<Vtx X="11" Y="29" Z="-5" S="132" T="-343" R="225" G="172" B="166" A="255"/>
<Vtx X="8" Y="25" Z="0" S="91" T="-287" R="225" G="172" B="166" A="255"/>
<Vtx X="4" Y="26" Z="0" S="35" T="-308" R="225" G="172" B="166" A="255"/>
<Vtx X="-11" Y="27" Z="-5" S="-157" T="-323" R="40" G="176" B="166" A="255"/>
<Vtx X="-3" Y="31" Z="-5" S="-59" T="-373" R="40" G="176" B="166" A="255"/>
<Vtx X="-2" Y="26" Z="0" S="-43" T="-306" R="40" G="176" B="166" A="255"/>
<Vtx X="-7" Y="23" Z="0" S="-112" T="-271" R="40" G="176" B="166" A="255"/>
<Vtx X="11" Y="29" Z="-5" S="132" T="-343" R="186" G="200" B="166" A="255"/>
<Vtx X="15" Y="24" Z="-5" S="186" T="-275" R="186" G="200" B="166" A="255"/>
<Vtx X="10" Y="22" Z="0" S="120" T="-251" R="186" G="200" B="166" A="255"/>
<Vtx X="8" Y="25" Z="0" S="91" T="-287" R="186" G="200" B="166" A="255"/>
<Vtx X="31" Y="24" Z="0" S="398" T="-280" R="90" G="2" B="166" A="255"/>
<Vtx X="31" Y="18" Z="0" S="400" T="-203" R="90" G="2" B="166" A="255"/>
<Vtx X="26" Y="19" Z="-5" S="333" T="-209" R="90" G="2" B="166" A="255"/>
<Vtx X="26" Y="23" Z="-5" S="331" T="-269" R="90" G="2" B="166" A="255"/>
<Vtx X="-15" Y="22" Z="-5" S="-220" T="-239" R="70" G="202" B="165" A="255"/>
<Vtx X="-11" Y="27" Z="-5" S="-157" T="-323" R="70" G="202" B="165" A="255"/>
<Vtx X="-7" Y="23" Z="0" S="-112" T="-271" R="70" G="202" B="165" A="255"/>
<Vtx X="-11" Y="19" Z="0" S="-158" T="-209" R="70" G="202" B="165" A="255"/>
<Vtx X="15" Y="24" Z="-5" S="186" T="-275" R="166" G="255" B="166" A="255"/>
<Vtx X="15" Y="18" Z="-5" S="188" T="-193" R="166" G="255" B="166" A="255"/>
<Vtx X="10" Y="19" Z="0" S="120" T="-211" R="166" G="255" B="166" A="255"/>
<Vtx X="10" Y="22" Z="0" S="120" T="-251" R="166" G="255" B="166" A="255"/>
<Vtx X="-26" Y="23" Z="-5" S="-358" T="-270" R="242" G="167" B="166" A="255"/>
<Vtx X="-15" Y="22" Z="-5" S="-217" T="-248" R="242" G="167" B="166" A="255"/>
<Vtx X="-11" Y="16" Z="0" S="-168" T="-172" R="242" G="167" B="166" A="255"/>
<Vtx X="-31" Y="19" Z="0" S="-433" T="-214" R="242" G="167" B="166" A="255"/>
<Vtx X="15" Y="18" Z="-5" S="188" T="-193" R="179" G="46" B="166" A="255"/>
<Vtx X="12" Y="13" Z="-5" S="151" T="-130" R="179" G="46" B="166" A="255"/>
<Vtx X="9" Y="16" Z="0" S="99" T="-174" R="179" G="46" B="166" A="255"/>
<Vtx X="10" Y="19" Z="0" S="120" T="-211" R="179" G="46" B="166" A="255"/>
<Vtx X="25" Y="15" Z="-5" S="324" T="-165" R="88" G="239" B="166" A="255"/>
<Vtx X="26" Y="19" Z="-5" S="333" T="-209" R="88" G="239" B="166" A="255"/>
<Vtx X="31" Y="18" Z="0" S="400" T="-203" R="88" G="239" B="166" A="255"/>
<Vtx X="30" Y="14" Z="0" S="389" T="-145" R="88" G="239" B="166" A="255"/>
<Vtx X="12" Y="13" Z="-5" S="151" T="-130" R="199" G="70" B="166" A="255"/>
<Vtx X="8" Y="10" Z="-5" S="96" T="-85" R="199" G="70" B="166" A="255"/>
<Vtx X="6" Y="14" Z="0" S="60" T="-143" R="199" G="70" B="166" A="255"/>
<Vtx X="9" Y="16" Z="0" S="99" T="-174" R="199" G="70" B="166" A="255"/>
<Vtx X="24" Y="13" Z="-5" S="308" T="-128" R="82" G="220" B="166" A="255"/>
<Vtx X="25" Y="15" Z="-5" S="324" T="-165" R="82" G="220" B="166" A="255"/>
<Vtx X="30" Y="14" Z="0" S="389" T="-145" R="82" G="220" B="166" A="255"/>
<Vtx X="28" Y="10" Z="0" S="366" T="-94" R="82" G="220" B="166" A="255"/>
<Vtx X="8" Y="10" Z="-5" S="96" T="-85" R="218" G="81" B="166" A="255"/>
<Vtx X="2" Y="7" Z="-5" S="10" T="-45" R="218" G="81" B="166" A="255"/>
<Vtx X="-1" Y="11" Z="0" S="-24" T="-103" R="218" G="81" B="166" A="255"/>
<Vtx X="6" Y="14" Z="0" S="60" T="-143" R="218" G="81" B="166" A="255"/>
<Vtx X="22" Y="11" Z="-5" S="286" T="-99" R="72" G="202" B="166" A="255"/>
<Vtx X="24" Y="13" Z="-5" S="308" T="-128" R="72" G="202" B="166" A="255"/>
<Vtx X="28" Y="10" Z="0" S="366" T="-94" R="72" G="202" B="166" A="255"/>
<Vtx X="26" Y="7" Z="0" S="335" T="-52" R="72" G="202" B="166" A="255"/>
<Vtx X="2" Y="7" Z="-5" S="10" T="-45" R="203" G="73" B="166" A="255"/>
<Vtx X="-2" Y="4" Z="-5" S="-44" T="-5" R="203" G="73" B="166" A="255"/>
<Vtx X="-6" Y="7" Z="0" S="-90" T="-54" R="203" G="73" B="166" A="255"/>
<Vtx X="-1" Y="11" Z="0" S="-24" T="-103" R="203" G="73" B="166" A="255"/>
<Vtx X="-2" Y="4" Z="-5" S="-44" T="-5" R="187" G="58" B="166" A="255"/>
<Vtx X="-4" Y="2" Z="-5" S="-64" T="19" R="187" G="58" B="166" A="255"/>
<Vtx X="-8" Y="5" Z="0" S="-120" T="-18" R="187" G="58" B="166" A="255"/>
<Vtx X="-6" Y="7" Z="0" S="-90" T="-54" R="187" G="58" B="166" A="255"/>
<Vtx X="20" Y="9" Z="-5" S="258" T="-76" R="57" G="186" B="166" A="255"/>
<Vtx X="22" Y="11" Z="-5" S="286" T="-99" R="57" G="186" B="166" A="255"/>
<Vtx X="26" Y="7" Z="0" S="335" T="-52" R="57" G="186" B="166" A="255"/>
<Vtx X="23" Y="5" Z="0" S="294" T="-19" R="57" G="186" B="166" A="255"/>
<Vtx X="18" Y="8" Z="-5" S="221" T="-58" R="39" G="175" B="166" A="255"/>
<Vtx X="20" Y="9" Z="-5" S="258" T="-76" R="39" G="175" B="166" A="255"/>
<Vtx X="23" Y="5" Z="0" S="294" T="-19" R="39" G="175" B="166" A="255"/>
<Vtx X="19" Y="3" Z="0" S="246" T="4" R="39" G="175" B="166" A="255"/>
<Vtx X="-4" Y="2" Z="-5" S="-64" T="19" R="176" G="41" B="166" A="255"/>
<Vtx X="-4" Y="0" Z="-5" S="-76" T="43" R="176" G="41" B="166" A="255"/>
<Vtx X="-9" Y="2" Z="0" S="-139" T="19" R="176" G="41" B="166" A="255"/>
<Vtx X="-8" Y="5" Z="0" S="-120" T="-18" R="176" G="41" B="166" A="255"/>
<Vtx X="11" Y="5" Z="-5" S="128" T="-29" R="27" G="170" B="166" A="255"/>
<Vtx X="18" Y="8" Z="-5" S="221" T="-58" R="27" G="170" B="166" A="255"/>
<Vtx X="19" Y="3" Z="0" S="246" T="4" R="27" G="170" B="166" A="255"/>
<Vtx X="13" Y="1" Z="0" S="155" T="33" R="27" G="170" B="166" A="255"/>
<Vtx X="-4" Y="0" Z="-5" S="-76" T="43" R="168" G="21" B="166" A="255"/>
<Vtx X="-5" Y="-2" Z="-5" S="-82" T="66" R="168" G="21" B="166" A="255"/>
<Vtx X="-10" Y="-1" Z="0" S="-149" T="58" R="168" G="21" B="166" A="255"/>
<Vtx X="-9" Y="2" Z="0" S="-139" T="19" R="168" G="21" B="166" A="255"/>
<Vtx X="5" Y="2" Z="-5" S="55" T="12" R="44" G="177" B="166" A="255"/>
<Vtx X="11" Y="5" Z="-5" S="128" T="-29" R="44" G="177" B="166" A="255"/>
<Vtx X="13" Y="1" Z="0" S="155" T="33" R="44" G="177" B="166" A="255"/>
<Vtx X="9" Y="-1" Z="0" S="103" T="62" R="44" G="177" B="166" A="255"/>
<Vtx X="-5" Y="-2" Z="-5" S="-82" T="66" R="166" G="0" B="166" A="255"/>
<Vtx X="-5" Y="-4" Z="-5" S="-82" T="94" R="166" G="0" B="166" A="255"/>
<Vtx X="-10" Y="-9" Z="0" S="-150" T="161" R="166" G="0" B="166" A="255"/>
<Vtx X="-10" Y="-1" Z="0" S="-149" T="58" R="166" G="0" B="166" A="255"/>
<Vtx X="2" Y="-2" Z="-5" S="14" T="76" R="76" G="208" B="166" A="255"/>
<Vtx X="5" Y="2" Z="-5" S="55" T="12" R="76" G="208" B="166" A="255"/>
<Vtx X="9" Y="-1" Z="0" S="103" T="62" R="76" G="208" B="166" A="255"/>
<Vtx X="7" Y="-4" Z="0" S="81" T="96" R="76" G="208" B="166" A="255"/>
<Vtx X="-5" Y="-4" Z="-5" S="-82" T="94" R="0" G="166" B="166" A="255"/>
<Vtx X="2" Y="-4" Z="-5" S="14" T="94" R="0" G="166" B="166" A="255"/>
<Vtx X="7" Y="-9" Z="0" S="81" T="161" R="0" G="166" B="166" A="255"/>
<Vtx X="-10" Y="-9" Z="0" S="-150" T="161" R="0" G="166" B="166" A="255"/>
<Vtx X="2" Y="-4" Z="-5" S="14" T="94" R="90" G="0" B="166" A="255"/>
<Vtx X="2" Y="-2" Z="-5" S="14" T="76" R="90" G="0" B="166" A="255"/>
<Vtx X="7" Y="-4" Z="0" S="81" T="96" R="90" G="0" B="166" A="255"/>
<Vtx X="7" Y="-9" Z="0" S="81" T="161" R="90" G="0" B="166" A="255"/>
<Vtx X="3" Y="-13" Z="0" S="-274" T="-22" R="11" G="89" B="90" A="255"/>
<Vtx X="-3" Y="-12" Z="0" S="-350" T="-32" R="11" G="89" B="90" A="255"/>
<Vtx X="-2" Y="-18" Z="5" S="-341" T="36" R="11" G="89" B="90" A="255"/>
<Vtx X="1" Y="-18" Z="5" S="-301" T="42" R="11" G="89" B="90" A="255"/>
<Vtx X="-3" Y="-12" Z="0" S="-350" T="-32" R="221" G="83" B="90" A="255"/>
<Vtx X="-8" Y="-15" Z="0" S="-418" T="-4" R="221" G="83" B="90" A="255"/>
<Vtx X="-5" Y="-19" Z="5" S="-376" T="51" R="221" G="83" B="90" A="255"/>
<Vtx X="-2" Y="-18" Z="5" S="-341" T="36" R="221" G="83" B="90" A="255"/>
<Vtx X="7" Y="-17" Z="0" S="-216" T="23" R="55" G="71" B="90" A="255"/>
<Vtx X="3" Y="-13" Z="0" S="-274" T="-22" R="55" G="71" B="90" A="255"/>
<Vtx X="1" Y="-18" Z="5" S="-301" T="42" R="55" G="71" B="90" A="255"/>
<Vtx X="3" Y="-20" Z="5" S="-271" T="65" R="55" G="71" B="90" A="255"/>
<Vtx X="-8" Y="-15" Z="0" S="-418" T="-4" R="185" G="55" B="90" A="255"/>
<Vtx X="-11" Y="-19" Z="0" S="-463" T="55" R="185" G="55" B="90" A="255"/>
<Vtx X="-6" Y="-21" Z="5" S="-399" T="82" R="185" G="55" B="90" A="255"/>
<Vtx X="-5" Y="-19" Z="5" S="-376" T="51" R="185" G="55" B="90" A="255"/>
<Vtx X="9" Y="-22" Z="0" S="-188" T="92" R="83" G="34" B="90" A="255"/>
<Vtx X="7" Y="-17" Z="0" S="-216" T="23" R="83" G="34" B="90" A="255"/>
<Vtx X="3" Y="-20" Z="5" S="-271" T="65" R="83" G="34" B="90" A="255"/>
<Vtx X="4" Y="-22" Z="5" S="-256" T="101" R="83" G="34" B="90" A="255"/>
<Vtx X="-11" Y="-19" Z="0" S="-463" T="55" R="167" G="11" B="90" A="255"/>
<Vtx X="-12" Y="-25" Z="0" S="-473" T="131" R="167" G="11" B="90" A="255"/>
<Vtx X="-7" Y="-24" Z="5" S="-405" T="122" R="167" G="11" B="90" A="255"/>
<Vtx X="-6" Y="-21" Z="5" S="-399" T="82" R="167" G="11" B="90" A="255"/>
<Vtx X="9" Y="-27" Z="0" S="-198" T="168" R="89" G="245" B="90" A="255"/>
<Vtx X="9" Y="-22" Z="0" S="-188" T="92" R="89" G="245" B="90" A="255"/>
<Vtx X="4" Y="-22" Z="5" S="-256" T="101" R="89" G="245" B="90" A="255"/>
<Vtx X="4" Y="-25" Z="5" S="-262" T="141" R="89" G="245" B="90" A="255"/>
<Vtx X="-12" Y="-25" Z="0" S="-473" T="131" R="173" G="221" B="90" A="255"/>
<Vtx X="-10" Y="-30" Z="0" S="-444" T="200" R="173" G="221" B="90" A="255"/>
<Vtx X="-6" Y="-27" Z="5" S="-390" T="157" R="173" G="221" B="90" A="255"/>
<Vtx X="-7" Y="-24" Z="5" S="-405" T="122" R="173" G="221" B="90" A="255"/>
<Vtx X="5" Y="-32" Z="0" S="-242" T="225" R="71" G="201" B="90" A="255"/>
<Vtx X="9" Y="-27" Z="0" S="-198" T="168" R="71" G="201" B="90" A="255"/>
<Vtx X="4" Y="-25" Z="5" S="-262" T="141" R="71" G="201" B="90" A="255"/>
<Vtx X="2" Y="-27" Z="5" S="-284" T="170" R="71" G="201" B="90" A="255"/>
<Vtx X="-10" Y="-30" Z="0" S="-444" T="200" R="202" G="184" B="90" A="255"/>
<Vtx X="-5" Y="-33" Z="0" S="-386" T="244" R="202" G="184" B="90" A="255"/>
<Vtx X="-3" Y="-28" Z="5" S="-360" T="179" R="202" G="184" B="90" A="255"/>
<Vtx X="-6" Y="-27" Z="5" S="-390" T="157" R="202" G="184" B="90" A="255"/>
<Vtx X="0" Y="-34" Z="0" S="-311" T="253" R="34" G="173" B="90" A="255"/>
<Vtx X="5" Y="-32" Z="0" S="-242" T="225" R="34" G="173" B="90" A="255"/>
<Vtx X="2" Y="-27" Z="5" S="-284" T="170" R="34" G="173" B="90" A="255"/>
<Vtx X="0" Y="-29" Z="5" S="-320" T="185" R="34" G="173" B="90" A="255"/>
<Vtx X="-5" Y="-33" Z="0" S="-386" T="244" R="245" G="167" B="90" A="255"/>
<Vtx X="0" Y="-34" Z="0" S="-311" T="253" R="245" G="167" B="90" A="255"/>
<Vtx X="0" Y="-29" Z="5" S="-320" T="185" R="245" G="167" B="90" A="255"/>
<Vtx X="-3" Y="-28" Z="5" S="-360" T="179" R="245" G="167" B="90" A="255"/>
<Vtx X="1" Y="-18" Z="-5" S="-301" T="42" R="11" G="89" B="166" A="255"/>
<Vtx X="-2" Y="-18" Z="-5" S="-341" T="36" R="11" G="89" B="166" A="255"/>
<Vtx X="-3" Y="-12" Z="0" S="-350" T="-32" R="11" G="89" B="166" A="255"/>
<Vtx X="3" Y="-13" Z="0" S="-274" T="-22" R="11" G="89" B="166" A="255"/>
<Vtx X="-2" Y="-18" Z="-5" S="-341" T="36" R="221" G="83" B="166" A="255"/>
<Vtx X="-5" Y="-19" Z="-5" S="-376" T="51" R="221" G="83" B="166" A="255"/>
<Vtx X="-8" Y="-15" Z="0" S="-418" T="-4" R="221" G="83" B="166" A="255"/>
<Vtx X="-3" Y="-12" Z="0" S="-350" T="-32" R="221" G="83" B="166" A="255"/>
<Vtx X="3" Y="-20" Z="-5" S="-271" T="65" R="55" G="71" B="166" A="255"/>
<Vtx X="1" Y="-18" Z="-5" S="-301" T="42" R="55" G="71" B="166" A="255"/>
<Vtx X="3" Y="-13" Z="0" S="-274" T="-22" R="55" G="71" B="166" A="255"/>
<Vtx X="7" Y="-17" Z="0" S="-216" T="23" R="55" G="71" B="166" A="255"/>
<Vtx X="-5" Y="-19" Z="-5" S="-376" T="51" R="185" G="55" B="166" A="255"/>
<Vtx X="-6" Y="-21" Z="-5" S="-399" T="82" R="185" G="55" B="166" A="255"/>
<Vtx X="-11" Y="-19" Z="0" S="-463" T="55" R="185" G="55" B="166" A="255"/>
<Vtx X="-8" Y="-15" Z="0" S="-418" T="-4" R="185" G="55" B="166" A="255"/>
<Vtx X="4" Y="-22" Z="-5" S="-256" T="101" R="83" G="34" B="166" A="255"/>
<Vtx X="3" Y="-20" Z="-5" S="-271" T="65" R="83" G="34" B="166" A="255"/>
<Vtx X="7" Y="-17" Z="0" S="-216" T="23" R="83" G="34" B="166" A="255"/>
<Vtx X="9" Y="-22" Z="0" S="-188" T="92" R="83" G="34" B="166" A="255"/>
<Vtx X="-6" Y="-21" Z="-5" S="-399" T="82" R="167" G="11" B="166" A="255"/>
<Vtx X="-7" Y="-24" Z="-5" S="-405" T="122" R="167" G="11" B="166" A="255"/>
<Vtx X="-12" Y="-25" Z="0" S="-473" T="131" R="167" G="11" B="166" A="255"/>
<Vtx X="-11" Y="-19" Z="0" S="-463" T="55" R="167" G="11" B="166" A="255"/>
<Vtx X="4" Y="-25" Z="-5" S="-262" T="141" R="89" G="245" B="166" A="255"/>
<Vtx X="4" Y="-22" Z="-5" S="-256" T="101" R="89" G="245" B="166" A="255"/>
<Vtx X="9" Y="-22" Z="0" S="-188" T="92" R="89" G="245" B="166" A="255"/>
<Vtx X="9" Y="-27" Z="0" S="-198" T="168" R="89" G="245" B="166" A="255"/>
<Vtx X="-7" Y="-24" Z="-5" S="-405" T="122" R="173" G="221" B="166" A="255"/>
<Vtx X="-6" Y="-27" Z="-5" S="-390" T="157" R="173" G="221" B="166" A="255"/>
<Vtx X="-10" Y="-30" Z="0" S="-444" T="200" R="173" G="221" B="166" A="255"/>
<Vtx X="-12" Y="-25" Z="0" S="-473" T="131" R="173" G="221" B="166" A="255"/>
<Vtx X="2" Y="-27" Z="-5" S="-284" T="170" R="71" G="201" B="166" A="255"/>
<Vtx X="4" Y="-25" Z="-5" S="-262" T="141" R="71" G="201" B="166" A="255"/>
<Vtx X="9" Y="-27" Z="0" S="-198" T="168" R="71" G="201" B="166" A="255"/>
<Vtx X="5" Y="-32" Z="0" S="-242" T="225" R="71" G="201" B="166" A="255"/>
<Vtx X="-6" Y="-27" Z="-5" S="-390" T="157" R="202" G="184" B="166" A="255"/>
<Vtx X="-3" Y="-28" Z="-5" S="-360" T="179" R="202" G="184" B="166" A="255"/>
<Vtx X="-5" Y="-33" Z="0" S="-386" T="244" R="202" G="184" B="166" A="255"/>
<Vtx X="-10" Y="-30" Z="0" S="-444" T="200" R="202" G="184" B="166" A="255"/>
<Vtx X="0" Y="-29" Z="-5" S="-320" T="185" R="34" G="173" B="166" A="255"/>
<Vtx X="2" Y="-27" Z="-5" S="-284" T="170" R="34" G="173" B="166" A="255"/>
<Vtx X="5" Y="-32" Z="0" S="-242" T="225" R="34" G="173" B="166" A="255"/>
<Vtx X="0" Y="-34" Z="0" S="-311" T="253" R="34" G="173" B="166" A="255"/>
<Vtx X="-3" Y="-28" Z="-5" S="-360" T="179" R="245" G="167" B="166" A="255"/>
<Vtx X="0" Y="-29" Z="-5" S="-320" T="185" R="245" G="167" B="166" A="255"/>
<Vtx X="0" Y="-34" Z="0" S="-311" T="253" R="245" G="167" B="166" A="255"/>
<Vtx X="-5" Y="-33" Z="0" S="-386" T="244" R="245" G="167" B="166" A="255"/>
</Vertex>

View File

@ -0,0 +1,10 @@
<Vertex Version="0">
<Vtx X="-31" Y="-34" Z="-5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
<Vtx X="-31" Y="-34" Z="5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
<Vtx X="-31" Y="43" Z="5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
<Vtx X="-31" Y="43" Z="-5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
<Vtx X="31" Y="-34" Z="-5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
<Vtx X="31" Y="-34" Z="5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
<Vtx X="31" Y="43" Z="5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
<Vtx X="31" Y="43" Z="-5" S="-16" T="-16" R="0" G="0" B="0" A="0"/>
</Vertex>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="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_mystery_item/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="220" G="220" B="220" A="255"/>
<EndDisplayList/>
</DisplayList>

View File

@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="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_mystery_item/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="114" G="114" B="114" A="255"/>
<EndDisplayList/>
</DisplayList>

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 dgMysteryItemDL "__OTR__objects/object_mystery_item/gMysteryItemDL"
static const ALIGN_ASSET(2) char gMysteryItemDL[] = dgMysteryItemDL;
// 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

@ -172,7 +172,8 @@ extern "C"
extern u8 gWalkSpeedToggle2; extern u8 gWalkSpeedToggle2;
extern f32 iceTrapScale; extern f32 iceTrapScale;
extern f32 triforcePieceScale; extern f32 triforcePieceScale;
extern f32 mysteryItemScale;
extern const s16 D_8014A6C0[]; extern const s16 D_8014A6C0[];
#define gTatumsPerBeat (D_8014A6C0[1]) #define gTatumsPerBeat (D_8014A6C0[1])
extern const AudioContextInitSizes D_8014A6C4; extern const AudioContextInitSizes D_8014A6C4;

View File

@ -323,6 +323,7 @@ static std::map<std::string, CosmeticOption> cosmeticOptions = {
COSMETIC_OPTION("World.Moon", "Moon", COSMETICS_GROUP_WORLD, ImVec4(240, 255, 180, 255), false, true, true), COSMETIC_OPTION("World.Moon", "Moon", COSMETICS_GROUP_WORLD, ImVec4(240, 255, 180, 255), false, true, true),
COSMETIC_OPTION("World.GossipStone", "Gossip Stone", COSMETICS_GROUP_WORLD, ImVec4(200, 200, 200, 255), false, true, true), COSMETIC_OPTION("World.GossipStone", "Gossip Stone", COSMETICS_GROUP_WORLD, ImVec4(200, 200, 200, 255), false, true, true),
COSMETIC_OPTION("World.RedIce", "Red Ice", COSMETICS_GROUP_WORLD, ImVec4(255, 0, 0, 255), false, true, false), COSMETIC_OPTION("World.RedIce", "Red Ice", COSMETICS_GROUP_WORLD, ImVec4(255, 0, 0, 255), false, true, false),
COSMETIC_OPTION("World.MysteryItem", "Mystery Item", COSMETICS_GROUP_WORLD, ImVec4(0, 60, 100, 255), false, true, false),
COSMETIC_OPTION("Navi.IdlePrimary", "Idle Primary", COSMETICS_GROUP_NAVI, ImVec4(255, 255, 255, 255), false, true, false), COSMETIC_OPTION("Navi.IdlePrimary", "Idle Primary", COSMETICS_GROUP_NAVI, ImVec4(255, 255, 255, 255), false, true, false),
COSMETIC_OPTION("Navi.IdleSecondary", "Idle Secondary", COSMETICS_GROUP_NAVI, ImVec4( 0, 0, 255, 0), false, true, true), COSMETIC_OPTION("Navi.IdleSecondary", "Idle Secondary", COSMETICS_GROUP_NAVI, ImVec4( 0, 0, 255, 0), false, true, true),

View File

@ -248,7 +248,7 @@ extern "C" void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry get
if (triforcePieceScale < 0.0001f) { if (triforcePieceScale < 0.0001f) {
triforcePieceScale += 0.00003f; triforcePieceScale += 0.00003f;
} }
// Animation. When not the completed triforce, create delay before showing the piece to bypass interpolation. // Animation. When not the completed triforce, create delay before showing the piece to bypass interpolation.
// If the completed triforce, make it grow slowly. // If the completed triforce, make it grow slowly.
if (current != required) { if (current != required) {
@ -275,5 +275,28 @@ extern "C" void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry get
} else if (current == required && triforcePieceScale > 0.00008f) { } else if (current == required && triforcePieceScale > 0.00008f) {
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gTriforcePieceCompletedDL); gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gTriforcePieceCompletedDL);
} }
CLOSE_DISPS(play->state.gfxCtx);
}
extern "C" void Randomizer_DrawMysteryItem(PlayState* play, GetItemEntry getItemEntry) {
Color_RGB8 color = { 0, 60, 100 };
if (CVarGetInteger(CVAR_COSMETIC("World.MysteryItem.Changed"), 0)) {
color = CVarGetColor24(CVAR_COSMETIC("World.MysteryItem.Value"), color);
}
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);
gDPSetGrayscaleColor(POLY_XLU_DISP++, color.r, color.g, color.b, 255);
gSPGrayscale(POLY_XLU_DISP++, true);
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gMysteryItemDL);
gSPGrayscale(POLY_XLU_DISP++, false);
CLOSE_DISPS(play->state.gfxCtx); CLOSE_DISPS(play->state.gfxCtx);
} }

View File

@ -16,6 +16,10 @@ 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);
void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry getItemEntry); void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry getItemEntry);
void Randomizer_DrawMysteryItem(PlayState* play, GetItemEntry getItemEntry);
#define GET_ITEM_MYSTERY \
{ ITEM_NONE, 0, 0, 0, 0, 0, 0, 0, 0, false, ITEM_FROM_NPC, ITEM_CATEGORY_JUNK, Randomizer_DrawMysteryItem }
#ifdef __cplusplus #ifdef __cplusplus
}; };
#endif #endif

View File

@ -5412,12 +5412,20 @@ CustomMessage Randomizer::GetMerchantMessage(RandomizerInf randomizerInf, u16 te
RandomizerCheck rc = GetCheckFromRandomizerInf(randomizerInf); RandomizerCheck rc = GetCheckFromRandomizerInf(randomizerInf);
RandomizerGet shopItemGet = this->itemLocations[rc].rgID; RandomizerGet shopItemGet = this->itemLocations[rc].rgID;
std::array<std::string, LANGUAGE_MAX> shopItemName; std::array<std::string, LANGUAGE_MAX> shopItemName;
if (mysterious) { if (mysterious || CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0)) {
shopItemName = { if (randomizerInf >= RAND_INF_SHOP_ITEMS_KF_SHOP_ITEM_1 && randomizerInf <= RAND_INF_SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_8) {
"mysterious item", shopItemName = {
"mysteriösen Gegenstand", "Mysterious Item",
"objet mystérieux" "Mysteriösen Gegenstand",
}; "Objet Mystérieux"
};
} else {
shopItemName = {
"mysterious item",
"mysteriösen Gegenstand",
"objet mystérieux"
};
}
// TODO: This should eventually be replaced with a full fledged trick model & trick name system // TODO: This should eventually be replaced with a full fledged trick model & trick name system
} else if (shopItemGet == RG_ICE_TRAP) { } else if (shopItemGet == RG_ICE_TRAP) {
shopItemGet = this->itemLocations[rc].fakeRgID; shopItemGet = this->itemLocations[rc].fakeRgID;

View File

@ -9,6 +9,7 @@
#include <memory> #include <memory>
#include <soh/Enhancements/randomizer/randomizerTypes.h> #include <soh/Enhancements/randomizer/randomizerTypes.h>
#include "soh/Enhancements/randomizer/randomizer_check_objects.h" #include "soh/Enhancements/randomizer/randomizer_check_objects.h"
#include "soh/Enhancements/randomizer/randomizer_check_tracker.h"
#include "soh/Enhancements/randomizer/randomizer_tricks.h" #include "soh/Enhancements/randomizer/randomizer_tricks.h"
#include <soh/Enhancements/custom-message/CustomMessageManager.h> #include <soh/Enhancements/custom-message/CustomMessageManager.h>
#include "soh/Enhancements/item-tables/ItemTableTypes.h" #include "soh/Enhancements/item-tables/ItemTableTypes.h"

View File

@ -1223,7 +1223,7 @@ void LoadSettings() {
} }
} }
bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj) { bool IsCheckShuffled(RandomizerCheckObject rcObj) {
if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) != RO_LOGIC_VANILLA) { if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) != RO_LOGIC_VANILLA) {
return return
(rcObj.rcArea != RCAREA_INVALID) && // don't show Invalid locations (rcObj.rcArea != RCAREA_INVALID) && // don't show Invalid locations
@ -1236,7 +1236,7 @@ bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj) {
rcObj.vOrMQ == RCVORMQ_MQ && OTRGlobals::Instance->gRandomizer->masterQuestDungeons.contains(rcObj.sceneId) || rcObj.vOrMQ == RCVORMQ_MQ && OTRGlobals::Instance->gRandomizer->masterQuestDungeons.contains(rcObj.sceneId) ||
rcObj.vOrMQ == RCVORMQ_VANILLA && !OTRGlobals::Instance->gRandomizer->masterQuestDungeons.contains(rcObj.sceneId) rcObj.vOrMQ == RCVORMQ_VANILLA && !OTRGlobals::Instance->gRandomizer->masterQuestDungeons.contains(rcObj.sceneId)
) && ) &&
(rcObj.rcType != RCTYPE_SHOP || (showShops && (!hideShopRightChecks || hideShopRightChecks && rcObj.actorParams > 0x03))) && (rcObj.rcType != RCTYPE_SHOP || (showShops && rcObj.actorParams > 0x03)) &&
(rcObj.rcType != RCTYPE_SCRUB || (rcObj.rcType != RCTYPE_SCRUB ||
showScrubs || showScrubs ||
rcObj.rc == RC_LW_DEKU_SCRUB_NEAR_BRIDGE || // The 3 scrubs that are always randomized rcObj.rc == RC_LW_DEKU_SCRUB_NEAR_BRIDGE || // The 3 scrubs that are always randomized
@ -1245,7 +1245,7 @@ bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj) {
) && ) &&
(rcObj.rcType != RCTYPE_MERCHANT || showMerchants) && (rcObj.rcType != RCTYPE_MERCHANT || showMerchants) &&
(rcObj.rcType != RCTYPE_OCARINA || showOcarinas) && (rcObj.rcType != RCTYPE_OCARINA || showOcarinas) &&
(rcObj.rcType != RCTYPE_SKULL_TOKEN || alwaysShowGS || (rcObj.rcType != RCTYPE_SKULL_TOKEN ||
(showOverworldTokens && RandomizerCheckObjects::AreaIsOverworld(rcObj.rcArea)) || (showOverworldTokens && RandomizerCheckObjects::AreaIsOverworld(rcObj.rcArea)) ||
(showDungeonTokens && RandomizerCheckObjects::AreaIsDungeon(rcObj.rcArea)) (showDungeonTokens && RandomizerCheckObjects::AreaIsDungeon(rcObj.rcArea))
) && ) &&
@ -1265,6 +1265,7 @@ bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj) {
(rcObj.rcType != RCTYPE_BOSS_KEY || showBossKeysanity) && (rcObj.rcType != RCTYPE_BOSS_KEY || showBossKeysanity) &&
(rcObj.rcType != RCTYPE_GANON_BOSS_KEY || showGanonBossKey) && (rcObj.rcType != RCTYPE_GANON_BOSS_KEY || showGanonBossKey) &&
(rcObj.rc != RC_KAK_100_GOLD_SKULLTULA_REWARD || show100SkullReward) && (rcObj.rc != RC_KAK_100_GOLD_SKULLTULA_REWARD || show100SkullReward) &&
(rcObj.rc != RC_MARKET_BOMBCHU_BOWLING_BOMBCHUS) &&
(rcObj.rcType != RCTYPE_GF_KEY && rcObj.rc != RC_GF_GERUDO_MEMBERSHIP_CARD || (rcObj.rcType != RCTYPE_GF_KEY && rcObj.rc != RC_GF_GERUDO_MEMBERSHIP_CARD ||
(showGerudoCard && rcObj.rc == RC_GF_GERUDO_MEMBERSHIP_CARD) || (showGerudoCard && rcObj.rc == RC_GF_GERUDO_MEMBERSHIP_CARD) ||
(fortressNormal && showGerudoFortressKeys && rcObj.rcType == RCTYPE_GF_KEY) || (fortressNormal && showGerudoFortressKeys && rcObj.rcType == RCTYPE_GF_KEY) ||
@ -1280,6 +1281,10 @@ bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj) {
return false; return false;
} }
bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj) {
return IsCheckShuffled(rcObj) || (rcObj.rcType == RCTYPE_SKULL_TOKEN && alwaysShowGS) || (rcObj.rcType == RCTYPE_SHOP && (showShops && (!hideShopRightChecks)));
}
void UpdateInventoryChecks() { void UpdateInventoryChecks() {
//For all the areas with maps, if you have one, spoil the area //For all the areas with maps, if you have one, spoil the area
for (auto [scene, area] : DungeonRCAreasBySceneID) { for (auto [scene, area] : DungeonRCAreasBySceneID) {
@ -1444,6 +1449,8 @@ void DrawLocation(RandomizerCheckObject rcObj) {
//Draw the extra info //Draw the extra info
txt = ""; txt = "";
bool mystery = CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && OTRGlobals::Instance->gRandomizer->merchantPrices.contains(rcObj.rc);
if (checkData.hintItem != 0) { if (checkData.hintItem != 0) {
// TODO hints // TODO hints
} else if (status != RCSHOW_UNCHECKED) { } else if (status != RCSHOW_UNCHECKED) {
@ -1466,16 +1473,16 @@ void DrawLocation(RandomizerCheckObject rcObj) {
case RCSHOW_IDENTIFIED: case RCSHOW_IDENTIFIED:
case RCSHOW_SEEN: case RCSHOW_SEEN:
if (IS_RANDO) { if (IS_RANDO) {
if (gSaveContext.itemLocations[rcObj.rc].get.rgID == RG_ICE_TRAP) { if (gSaveContext.itemLocations[rcObj.rc].get.rgID == RG_ICE_TRAP && !mystery) {
if (status == RCSHOW_IDENTIFIED) { if (status == RCSHOW_IDENTIFIED) {
txt = gSaveContext.itemLocations[rcObj.rc].get.trickName; txt = gSaveContext.itemLocations[rcObj.rc].get.trickName;
} else { } else {
txt = OTRGlobals::Instance->gRandomizer->EnumToSpoilerfileGetName[gSaveContext.itemLocations[rcObj.rc].get.fakeRgID][gSaveContext.language]; txt = OTRGlobals::Instance->gRandomizer->EnumToSpoilerfileGetName[gSaveContext.itemLocations[rcObj.rc].get.fakeRgID][gSaveContext.language];
} }
} else { } else if (!mystery) {
txt = OTRGlobals::Instance->gRandomizer->EnumToSpoilerfileGetName[gSaveContext.itemLocations[rcObj.rc].get.rgID][gSaveContext.language]; txt = OTRGlobals::Instance->gRandomizer->EnumToSpoilerfileGetName[gSaveContext.itemLocations[rcObj.rc].get.rgID][gSaveContext.language];
} }
if (status == RCSHOW_IDENTIFIED) { if (!IsVisibleInCheckTracker(rcObj) && status == RCSHOW_IDENTIFIED && !mystery) {
txt += fmt::format(" - {}", gSaveContext.checkTrackerData[rcObj.rc].price); txt += fmt::format(" - {}", gSaveContext.checkTrackerData[rcObj.rc].price);
} }
} else { } else {

View File

@ -47,6 +47,7 @@ void DefaultCheckData(RandomizerCheck rc);
void Teardown(); void Teardown();
void UpdateAllOrdering(); void UpdateAllOrdering();
bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj); bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj);
bool IsCheckShuffled(RandomizerCheckObject check);
void InitTrackerData(bool isDebug); void InitTrackerData(bool isDebug);
RandomizerCheckArea GetCheckArea(); RandomizerCheckArea GetCheckArea();
void UpdateCheck(uint32_t, RandomizerCheckTrackerData); void UpdateCheck(uint32_t, RandomizerCheckTrackerData);

View File

@ -84,6 +84,7 @@ GameInteractorSail* GameInteractorSail::Instance;
#include "Enhancements/mods.h" #include "Enhancements/mods.h"
#include "Enhancements/game-interactor/GameInteractor.h" #include "Enhancements/game-interactor/GameInteractor.h"
#include "Enhancements/randomizer/draw.h"
#include <libultraship/libultraship.h> #include <libultraship/libultraship.h>
// Resource Types/Factories // Resource Types/Factories
@ -2437,6 +2438,14 @@ extern "C" ItemObtainability Randomizer_GetItemObtainabilityFromRandomizerCheck(
return OTRGlobals::Instance->gRandomizer->GetItemObtainabilityFromRandomizerCheck(randomizerCheck); return OTRGlobals::Instance->gRandomizer->GetItemObtainabilityFromRandomizerCheck(randomizerCheck);
} }
extern "C" bool Randomizer_IsCheckShuffled(RandomizerCheck randomizerCheck) {
return CheckTracker::IsCheckShuffled(RandomizerCheckObjects::GetAllRCObjects().find(randomizerCheck)->second);
}
extern "C" GetItemEntry GetItemMystery() {
return { ITEM_NONE_FE, 0, 0, 0, 0, 0, 0, ITEM_NONE_FE, 0, false, ITEM_FROM_NPC, ITEM_CATEGORY_JUNK, NULL, MOD_RANDOMIZER, (CustomDrawFunc)Randomizer_DrawMysteryItem };
}
CustomMessage Randomizer_GetCustomGetItemMessage(Player* player) { CustomMessage Randomizer_GetCustomGetItemMessage(Player* player) {
s16 giid; s16 giid;
if (player->getItemEntry.objectId != OBJECT_INVALID) { if (player->getItemEntry.objectId != OBJECT_INVALID) {

View File

@ -179,6 +179,8 @@ GetItemEntry Randomizer_GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorPar
GetItemEntry Randomizer_GetItemFromActorWithoutObtainabilityCheck(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogId); GetItemEntry Randomizer_GetItemFromActorWithoutObtainabilityCheck(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogId);
GetItemEntry Randomizer_GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId); GetItemEntry Randomizer_GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId);
GetItemEntry Randomizer_GetItemFromKnownCheckWithoutObtainabilityCheck(RandomizerCheck randomizerCheck, GetItemID ogId); GetItemEntry Randomizer_GetItemFromKnownCheckWithoutObtainabilityCheck(RandomizerCheck randomizerCheck, GetItemID ogId);
bool Randomizer_IsCheckShuffled(RandomizerCheck check);
GetItemEntry GetItemMystery();
ItemObtainability Randomizer_GetItemObtainabilityFromRandomizerCheck(RandomizerCheck randomizerCheck); ItemObtainability Randomizer_GetItemObtainabilityFromRandomizerCheck(RandomizerCheck randomizerCheck);
int CustomMessage_RetrieveIfExists(PlayState* play); int CustomMessage_RetrieveIfExists(PlayState* play);
void Overlay_DisplayText(float duration, const char* text); void Overlay_DisplayText(float duration, const char* text);

View File

@ -1972,6 +1972,11 @@ void DrawRandomizerMenu() {
"Play unique fanfares when obtaining quest items " "Play unique fanfares when obtaining quest items "
"(medallions/stones/songs). Note that these fanfares are longer than usual." "(medallions/stones/songs). Note that these fanfares are longer than usual."
); );
UIWidgets::PaddedEnhancementCheckbox("Mysterious Shuffled Items", CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), true, false);
UIWidgets::Tooltip(
"Displays a \"Mystery Item\" model in place of any freestanding/GS/shop items that were shuffled, "
"and replaces item names for them and scrubs and merchants, regardless of hint settings, "
"so you never know what you're getting.");
ImGui::EndMenu(); ImGui::EndMenu();
} }

View File

@ -1366,17 +1366,19 @@ void EnItem00_DrawCollectible(EnItem00* this, PlayState* play) {
if (IS_RANDO && (this->getItemId != GI_NONE || this->actor.params == ITEM00_SMALL_KEY)) { if (IS_RANDO && (this->getItemId != GI_NONE || this->actor.params == ITEM00_SMALL_KEY)) {
RandomizerCheck randoCheck = RandomizerCheck randoCheck =
Randomizer_GetCheckFromActor(this->actor.id, play->sceneNum, this->ogParams); Randomizer_GetCheckFromActor(this->actor.id, play->sceneNum, this->ogParams);
GetItemEntry giEntry = this->randoGiEntry;
if (randoCheck != RC_UNKNOWN_CHECK) { if (randoCheck != RC_UNKNOWN_CHECK) {
this->randoGiEntry = this->randoGiEntry = Randomizer_GetItemFromKnownCheck(randoCheck, GI_NONE);
Randomizer_GetItemFromKnownCheck(randoCheck, GI_NONE); giEntry = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(randoCheck))
this->randoGiEntry.getItemFrom = ITEM_FROM_FREESTANDING; ? GetItemMystery() : this->randoGiEntry;
giEntry.getItemFrom = ITEM_FROM_FREESTANDING;
} }
f32 mtxScale = 10.67f; f32 mtxScale = 16.0f;
Matrix_Scale(mtxScale, mtxScale, mtxScale, MTXMODE_APPLY); Matrix_Scale(mtxScale, mtxScale, mtxScale, MTXMODE_APPLY);
EnItem00_CustomItemsParticles(&this->actor, play, this->randoGiEntry); EnItem00_CustomItemsParticles(&this->actor, play, giEntry);
GetItemEntry_Draw(play, this->randoGiEntry); GetItemEntry_Draw(play, giEntry);
} else if (this->actor.params == ITEM00_BOMBCHU) { } else if (this->actor.params == ITEM00_BOMBCHU) {
OPEN_DISPS(play->state.gfxCtx); OPEN_DISPS(play->state.gfxCtx);
@ -1460,17 +1462,19 @@ void EnItem00_DrawHeartPiece(EnItem00* this, PlayState* play) {
if (IS_RANDO) { if (IS_RANDO) {
RandomizerCheck randoCheck = RandomizerCheck randoCheck =
Randomizer_GetCheckFromActor(this->actor.id, play->sceneNum, this->ogParams); Randomizer_GetCheckFromActor(this->actor.id, play->sceneNum, this->ogParams);
GetItemEntry giEntry = this->randoGiEntry;
if (randoCheck != RC_UNKNOWN_CHECK) { if (randoCheck != RC_UNKNOWN_CHECK) {
this->randoGiEntry = this->randoGiEntry = Randomizer_GetItemFromKnownCheck(randoCheck, GI_NONE);
Randomizer_GetItemFromKnownCheck(randoCheck, GI_NONE); giEntry = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(randoCheck))
this->randoGiEntry.getItemFrom = ITEM_FROM_FREESTANDING; ? GetItemMystery() : this->randoGiEntry;
giEntry.getItemFrom = ITEM_FROM_FREESTANDING;
} }
f32 mtxScale = 16.0f; f32 mtxScale = 16.0f;
Matrix_Scale(mtxScale, mtxScale, mtxScale, MTXMODE_APPLY); Matrix_Scale(mtxScale, mtxScale, mtxScale, MTXMODE_APPLY);
EnItem00_CustomItemsParticles(&this->actor, play, this->randoGiEntry); EnItem00_CustomItemsParticles(&this->actor, play, giEntry);
GetItemEntry_Draw(play, this->randoGiEntry); GetItemEntry_Draw(play, giEntry);
} else { } else {
s32 pad; s32 pad;

View File

@ -2088,7 +2088,8 @@ void DemoEffect_DrawGetItem(Actor* thisx, PlayState* play) {
return; return;
} }
if (IS_RANDO && play->sceneNum == SCENE_JABU_JABU) { if (IS_RANDO && play->sceneNum == SCENE_JABU_JABU) {
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_BARINADE, RG_ZORA_SAPPHIRE); GetItemEntry getItemEntry = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(RC_BARINADE))
? GetItemMystery() : Randomizer_GetItemFromKnownCheck(RC_BARINADE, RG_ZORA_SAPPHIRE);
this->getItem.drawId = getItemEntry.gid; this->getItem.drawId = getItemEntry.gid;
func_8002EBCC(thisx, play, 0); func_8002EBCC(thisx, play, 0);
func_8002ED80(thisx, play, 0); func_8002ED80(thisx, play, 0);

View File

@ -515,14 +515,17 @@ void EnExItem_DrawItems(EnExItem* this, PlayState* play) {
switch (this->type) { switch (this->type) {
case EXITEM_BOMB_BAG_BOWLING: case EXITEM_BOMB_BAG_BOWLING:
case EXITEM_BOMB_BAG_COUNTER: case EXITEM_BOMB_BAG_COUNTER:
randoGetItem = Randomizer_GetItemFromKnownCheck(RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, GI_BOMB_BAG_20); randoGetItem = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE))
? GetItemMystery()
: Randomizer_GetItemFromKnownCheck(RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, GI_BOMB_BAG_20);
break; break;
case EXITEM_BOMBCHUS_BOWLING: case EXITEM_BOMBCHUS_BOWLING:
case EXITEM_BOMBCHUS_COUNTER: case EXITEM_BOMBCHUS_COUNTER:
randoGetItem = Randomizer_GetItemFromKnownCheck(RC_MARKET_BOMBCHU_BOWLING_BOMBCHUS, GI_BOMBCHUS_10); randoGetItem = Randomizer_GetItemFromKnownCheck(RC_MARKET_BOMBCHU_BOWLING_BOMBCHUS, GI_BOMBCHUS_10);
break; break;
case EXITEM_BULLET_BAG: case EXITEM_BULLET_BAG:
randoGetItem = Randomizer_GetItemFromKnownCheck(RC_LW_TARGET_IN_WOODS, GI_BULLET_BAG_50); randoGetItem = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(RC_LW_TARGET_IN_WOODS))
? GetItemMystery() : Randomizer_GetItemFromKnownCheck(RC_LW_TARGET_IN_WOODS, GI_BULLET_BAG_50);
break; break;
} }
@ -540,8 +543,8 @@ void EnExItem_DrawHeartPiece(EnExItem* this, PlayState* play) {
func_8002ED80(&this->actor, play, 0); func_8002ED80(&this->actor, play, 0);
if (IS_RANDO) { if (IS_RANDO) {
GetItemEntry randoGetItem = GetItemEntry randoGetItem = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE))
Randomizer_GetItemFromKnownCheck(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, GI_HEART_PIECE); ? GetItemMystery() : Randomizer_GetItemFromKnownCheck(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, GI_HEART_PIECE);
EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem); EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem);
GetItemEntry_Draw(play, randoGetItem); GetItemEntry_Draw(play, randoGetItem);
} else { } else {

View File

@ -1286,8 +1286,8 @@ void EnGirlA_InitializeItemAction(EnGirlA* this, PlayState* play) {
this->basePrice = shopItemIdentity.itemPrice; this->basePrice = shopItemIdentity.itemPrice;
this->giDrawId = getItemEntry.gid; this->giDrawId = getItemEntry.gid;
// Correct the rotation for spiritual stones // Correct the rotation for spiritual stones, but only if mysterious shuffle isn't on, else it's obvious what's there in shops
if (getItemEntry.getItemId >= RG_KOKIRI_EMERALD && getItemEntry.getItemId <= RG_ZORA_SAPPHIRE) { if (!CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && (getItemEntry.getItemId >= RG_KOKIRI_EMERALD && getItemEntry.getItemId <= RG_ZORA_SAPPHIRE)) {
this->actor.shape.rot.y = this->actor.shape.rot.y + 20000; this->actor.shape.rot.y = this->actor.shape.rot.y + 20000;
} }
} }
@ -1332,7 +1332,8 @@ void EnGirlA_Draw(Actor* thisx, PlayState* play) {
if (this->actor.params == SI_RANDOMIZED_ITEM) { if (this->actor.params == SI_RANDOMIZED_ITEM) {
ShopItemIdentity shopItemIdentity = Randomizer_IdentifyShopItem(play->sceneNum, this->randoSlotIndex); ShopItemIdentity shopItemIdentity = Randomizer_IdentifyShopItem(play->sceneNum, this->randoSlotIndex);
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheckWithoutObtainabilityCheck(shopItemIdentity.randomizerCheck, shopItemIdentity.ogItemId); GetItemEntry getItemEntry = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && this->actor.params == SI_RANDOMIZED_ITEM) ? GetItemMystery() :
Randomizer_GetItemFromKnownCheckWithoutObtainabilityCheck(shopItemIdentity.randomizerCheck, shopItemIdentity.ogItemId);
EnItem00_CustomItemsParticles(&this->actor, play, getItemEntry); EnItem00_CustomItemsParticles(&this->actor, play, getItemEntry);
GetItemEntry_Draw(play, getItemEntry); GetItemEntry_Draw(play, getItemEntry);

View File

@ -214,7 +214,8 @@ void EnSi_Draw(Actor* thisx, PlayState* play) {
if (!IS_RANDO) { if (!IS_RANDO) {
GetItem_Draw(play, GID_SKULL_TOKEN_2); GetItem_Draw(play, GID_SKULL_TOKEN_2);
} else { } else {
getItem = Randomizer_GetItemFromActor(this->actor.id, play->sceneNum, this->actor.params, GI_SKULL_TOKEN); RandomizerCheck check = Randomizer_GetCheckFromActor(this->actor.id, play->sceneNum, this->actor.params);
getItem = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(check)) ? GetItemMystery() : Randomizer_GetItemFromKnownCheck(check, GI_SKULL_TOKEN);
EnItem00_CustomItemsParticles(&this->actor, play, getItem); EnItem00_CustomItemsParticles(&this->actor, play, getItem);
if (getItem.itemId != ITEM_SKULL_TOKEN) { if (getItem.itemId != ITEM_SKULL_TOKEN) {
f32 mtxScale = 1.5f; f32 mtxScale = 1.5f;

View File

@ -99,8 +99,8 @@ void ItemBHeart_Draw(Actor* thisx, PlayState* play) {
} }
if (IS_RANDO) { if (IS_RANDO) {
GetItemEntry_Draw(play, Randomizer_GetItemFromActor(this->actor.id, RandomizerCheck check = Randomizer_GetCheckFromActor(this->actor.id, play->sceneNum, this->actor.params);
play->sceneNum,this->actor.params, GI_HEART_CONTAINER_2)); GetItemEntry_Draw(play, (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(check)) ? GetItemMystery() : Randomizer_GetItemFromKnownCheck(check, GI_HEART_CONTAINER_2));
} else { } else {
if (flag) { if (flag) {
Gfx_SetupDL_25Xlu(play->state.gfxCtx); Gfx_SetupDL_25Xlu(play->state.gfxCtx);

View File

@ -230,7 +230,8 @@ void ItemEtcetera_DrawThroughLens(Actor* thisx, PlayState* play) {
func_8002ED80(&this->actor, play, 0); func_8002ED80(&this->actor, play, 0);
if(IS_RANDO && play->sceneNum == SCENE_TREASURE_BOX_SHOP) { if(IS_RANDO && play->sceneNum == SCENE_TREASURE_BOX_SHOP) {
GetItemEntry randoGetItem = GetChestGameRandoGetItem(this->actor.room, this->giDrawId, play); RandomizerCheck check = RC_MAX;
GetItemEntry randoGetItem = GetChestGameRandoGetItem(this->actor.room, this->giDrawId, play); //TODO Rando: add mysterious shuffle when chest minigame keys get shuffled
EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem); EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem);
if (randoGetItem.itemId != ITEM_NONE) { if (randoGetItem.itemId != ITEM_NONE) {
GetItemEntry_Draw(play, randoGetItem); GetItemEntry_Draw(play, randoGetItem);
@ -249,9 +250,9 @@ void ItemEtcetera_Draw(Actor* thisx, PlayState* play) {
if (IS_RANDO) { if (IS_RANDO) {
GetItemEntry randoGetItem = (GetItemEntry)GET_ITEM_NONE; GetItemEntry randoGetItem = (GetItemEntry)GET_ITEM_NONE;
if (type == ITEM_ETC_ARROW_FIRE) { if (type == ITEM_ETC_ARROW_FIRE) {
randoGetItem = Randomizer_GetItemFromKnownCheck(RC_LH_SUN, GI_ARROW_FIRE); randoGetItem = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(RC_LH_SUN)) ? GetItemMystery() : Randomizer_GetItemFromKnownCheck(RC_LH_SUN, GI_ARROW_FIRE);
} else if (type == ITEM_ETC_LETTER) { } else if (type == ITEM_ETC_LETTER) {
randoGetItem = Randomizer_GetItemFromKnownCheck(RC_LH_UNDERWATER_ITEM, GI_LETTER_RUTO); randoGetItem = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(RC_LH_UNDERWATER_ITEM)) ? GetItemMystery() : Randomizer_GetItemFromKnownCheck(RC_LH_UNDERWATER_ITEM, GI_LETTER_RUTO);
} }
EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem); EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem);

View File

@ -215,7 +215,7 @@ void ItemOcarina_Draw(Actor* thisx, PlayState* play) {
func_8002ED80(thisx, play, 0); func_8002ED80(thisx, play, 0);
if (IS_RANDO) { if (IS_RANDO) {
GetItemEntry randoGetItem = Randomizer_GetItemFromKnownCheck(RC_HF_OCARINA_OF_TIME_ITEM, GI_OCARINA_OOT); GetItemEntry randoGetItem = (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && Randomizer_IsCheckShuffled(RC_HF_OCARINA_OF_TIME_ITEM)) ? GetItemMystery() : Randomizer_GetItemFromKnownCheck(RC_HF_OCARINA_OF_TIME_ITEM, GI_OCARINA_OOT);
EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem); EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem);
GetItemEntry_Draw(play, randoGetItem); GetItemEntry_Draw(play, randoGetItem);
return; return;