summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickel246 <treepickleonion@gmail.com>2026-06-21 06:15:54 -0700
committerGitHub <noreply@github.com>2026-06-21 13:15:54 +0000
commiteb272ef68982f8045c4b4bc2be5a5d15900a35d9 (patch)
treea4cdbe07c5570446e559e741429695973f1bfeab
parent46f775ef86042c1181b7d9a2f1a55e3f3353b1cc (diff)
Update Visuals for Ability Shuffles (#6783)
Adds new visuals for the open chest, climb, and crawl ability shuffles, including bespoke gi models more consistent with the rest of the game as well as unique icons for the item tracker
-rw-r--r--soh/assets/custom/objects/gameplay_keep/gChestLockTexbin0 -> 220 bytes
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL14
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_0180
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_128
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_29
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0266
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_142
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_210
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_tri_07
-rw-r--r--soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_vtx_06
-rw-r--r--soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_frame_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_inside_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_lock_layerTransparent20
-rw-r--r--soh/assets/custom/objects/object_gi_climb/gGiClimbDL8
-rw-r--r--soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_tri_057
-rw-r--r--soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_070
-rw-r--r--soh/assets/custom/objects/object_gi_climb/mat_gGiClimbDL_ladder_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL16
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_066
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_144
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_234
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_313
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_49
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_059
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_141
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_254
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_318
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_414
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_2_layerOpaque20
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_layerOpaque20
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_gem_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_leather_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_grab/gGiGrabDL12
-rw-r--r--soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_080
-rw-r--r--soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_171
-rw-r--r--soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_229
-rw-r--r--soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0100
-rw-r--r--soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_194
-rw-r--r--soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_225
-rw-r--r--soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_accent_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_gem_layerOpaque21
-rw-r--r--soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_layerOpaque21
-rw-r--r--soh/assets/custom/textures/icon_item_static/gClimbTex.rgba32.pngbin0 -> 1875 bytes
-rw-r--r--soh/assets/custom/textures/icon_item_static/gCrawlTex.rgba32.pngbin0 -> 2607 bytes
-rw-r--r--soh/assets/custom/textures/icon_item_static/gGrabTex.rgba32.pngbin0 -> 2066 bytes
-rw-r--r--soh/assets/custom/textures/icon_item_static/gOpenChestsTex.rgba32.pngbin0 -> 2472 bytes
-rw-r--r--soh/assets/soh_assets.h24
-rw-r--r--soh/soh/Enhancements/randomizer/draw.cpp79
-rw-r--r--soh/soh/Enhancements/randomizer/item_list.cpp8
-rw-r--r--soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp2
-rw-r--r--soh/soh/SohGui/ImGuiUtils.cpp24
53 files changed, 1795 insertions, 88 deletions
diff --git a/soh/assets/custom/objects/gameplay_keep/gChestLockTex b/soh/assets/custom/objects/gameplay_keep/gChestLockTex
new file mode 100644
index 000000000..30764d0bd
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_keep/gChestLockTex
Binary files differ
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL
new file mode 100644
index 000000000..6bbdd4b8d
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL
@@ -0,0 +1,14 @@
+<DisplayList Version="0">
+ <CallDisplayList Path="objects/object_gi_chest/mat_gGiOpenChestsDL_chest_frame_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_0"/>
+ <CallDisplayList Path="objects/object_gi_chest/mat_gGiOpenChestsDL_chest_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_1"/>
+ <CallDisplayList Path="objects/object_gi_chest/mat_gGiOpenChestsDL_chest_inside_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_2"/>
+ <CallDisplayList Path="objects/object_gi_chest/mat_gGiOpenChestsDL_chest_lock_layerTransparent"/>
+ <CallDisplayList Path="objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_tri_0"/>
+ <ClearGeometryMode G_LIGHTING="1"/>
+ <SetGeometryMode G_LIGHTING="1"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_0 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_0
new file mode 100644
index 000000000..85a14b138
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_0
@@ -0,0 +1,180 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="31"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="4" V02="5"/>
+ <Triangle1 V00="6" V01="0" V02="5"/>
+ <Triangle1 V00="7" V01="3" V02="2"/>
+ <Triangle1 V00="8" V01="9" V02="10"/>
+ <Triangle1 V00="11" V01="12" V02="10"/>
+ <Triangle1 V00="13" V01="14" V02="15"/>
+ <Triangle1 V00="14" V01="16" V02="17"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="19" V01="21" V02="22"/>
+ <Triangle1 V00="23" V01="18" V02="22"/>
+ <Triangle1 V00="24" V01="23" V02="25"/>
+ <Triangle1 V00="26" V01="27" V02="28"/>
+ <Triangle1 V00="27" V01="29" V02="30"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="31" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="4" V02="5"/>
+ <Triangle1 V00="6" V01="7" V02="8"/>
+ <Triangle1 V00="9" V01="10" V02="11"/>
+ <Triangle1 V00="9" V01="12" V02="10"/>
+ <Triangle1 V00="13" V01="12" V02="9"/>
+ <Triangle1 V00="13" V01="14" V02="12"/>
+ <Triangle1 V00="10" V01="15" V02="16"/>
+ <Triangle1 V00="10" V01="17" V02="15"/>
+ <Triangle1 V00="15" V01="17" V02="14"/>
+ <Triangle1 V00="15" V01="14" V02="18"/>
+ <Triangle1 V00="19" V01="20" V02="21"/>
+ <Triangle1 V00="19" V01="22" V02="20"/>
+ <Triangle1 V00="23" V01="24" V02="25"/>
+ <Triangle1 V00="23" V01="26" V02="24"/>
+ <Triangle1 V00="26" V01="27" V02="24"/>
+ <Triangle1 V00="26" V01="28" V02="27"/>
+ <Triangle1 V00="29" V01="30" V02="31"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="63" Count="30"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="0" V02="2"/>
+ <Triangle1 V00="4" V01="3" V02="2"/>
+ <Triangle1 V00="3" V01="5" V02="0"/>
+ <Triangle1 V00="3" V01="6" V02="5"/>
+ <Triangle1 V00="6" V01="7" V02="5"/>
+ <Triangle1 V00="8" V01="7" V02="6"/>
+ <Triangle1 V00="8" V01="9" V02="7"/>
+ <Triangle1 V00="10" V01="9" V02="8"/>
+ <Triangle1 V00="10" V01="11" V02="9"/>
+ <Triangle1 V00="10" V01="3" V02="11"/>
+ <Triangle1 V00="5" V01="7" V02="12"/>
+ <Triangle1 V00="5" V01="12" V02="13"/>
+ <Triangle1 V00="12" V01="14" V02="13"/>
+ <Triangle1 V00="12" V01="15" V02="14"/>
+ <Triangle1 V00="16" V01="17" V02="18"/>
+ <Triangle1 V00="16" V01="19" V02="17"/>
+ <Triangle1 V00="20" V01="19" V02="16"/>
+ <Triangle1 V00="20" V01="21" V02="19"/>
+ <Triangle1 V00="22" V01="23" V02="24"/>
+ <Triangle1 V00="22" V01="24" V02="25"/>
+ <Triangle1 V00="25" V01="24" V02="26"/>
+ <Triangle1 V00="25" V01="26" V02="27"/>
+ <Triangle1 V00="27" V01="26" V02="28"/>
+ <Triangle1 V00="27" V01="28" V02="29"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="93" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="0" V02="2"/>
+ <Triangle1 V00="4" V01="3" V02="2"/>
+ <Triangle1 V00="5" V01="6" V02="7"/>
+ <Triangle1 V00="7" V01="6" V02="8"/>
+ <Triangle1 V00="9" V01="10" V02="11"/>
+ <Triangle1 V00="10" V01="12" V02="11"/>
+ <Triangle1 V00="13" V01="9" V02="14"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="15" V01="16" V02="17"/>
+ <Triangle1 V00="16" V01="18" V02="17"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="19" V01="15" V02="20"/>
+ <Triangle1 V00="21" V01="22" V02="23"/>
+ <Triangle1 V00="24" V01="21" V02="23"/>
+ <Triangle1 V00="25" V01="26" V02="27"/>
+ <Triangle1 V00="25" V01="28" V02="26"/>
+ <Triangle1 V00="29" V01="30" V02="31"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="125" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="4" V02="5"/>
+ <Triangle1 V00="3" V01="5" V02="6"/>
+ <Triangle1 V00="7" V01="8" V02="9"/>
+ <Triangle1 V00="7" V01="9" V02="10"/>
+ <Triangle1 V00="11" V01="12" V02="13"/>
+ <Triangle1 V00="11" V01="13" V02="14"/>
+ <Triangle1 V00="15" V01="16" V02="17"/>
+ <Triangle1 V00="15" V01="18" V02="16"/>
+ <Triangle1 V00="18" V01="19" V02="16"/>
+ <Triangle1 V00="18" V01="20" V02="19"/>
+ <Triangle1 V00="20" V01="21" V02="19"/>
+ <Triangle1 V00="20" V01="22" V02="21"/>
+ <Triangle1 V00="22" V01="23" V02="21"/>
+ <Triangle1 V00="22" V01="15" V02="23"/>
+ <Triangle1 V00="24" V01="25" V02="26"/>
+ <Triangle1 V00="24" V01="27" V02="25"/>
+ <Triangle1 V00="28" V01="27" V02="24"/>
+ <Triangle1 V00="28" V01="29" V02="27"/>
+ <Triangle1 V00="30" V01="29" V02="28"/>
+ <Triangle1 V00="30" V01="31" V02="29"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="157" Count="32"/>
+ <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="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="12" V01="11" V02="10"/>
+ <Triangle1 V00="12" V01="13" V02="11"/>
+ <Triangle1 V00="14" V01="15" V02="16"/>
+ <Triangle1 V00="14" V01="17" V02="15"/>
+ <Triangle1 V00="18" V01="15" V02="17"/>
+ <Triangle1 V00="18" V01="19" V02="15"/>
+ <Triangle1 V00="18" V01="20" V02="19"/>
+ <Triangle1 V00="18" V01="21" V02="20"/>
+ <Triangle1 V00="22" V01="20" V02="21"/>
+ <Triangle1 V00="22" V01="23" V02="20"/>
+ <Triangle1 V00="24" V01="25" V02="26"/>
+ <Triangle1 V00="24" V01="27" V02="25"/>
+ <Triangle1 V00="28" V01="25" V02="27"/>
+ <Triangle1 V00="28" V01="29" V02="25"/>
+ <Triangle1 V00="28" V01="30" V02="29"/>
+ <Triangle1 V00="28" V01="31" V02="30"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="189" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="3" V02="1"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="7" V01="4" V02="6"/>
+ <Triangle1 V00="8" V01="7" V02="6"/>
+ <Triangle1 V00="9" V01="10" V02="11"/>
+ <Triangle1 V00="12" V01="9" V02="11"/>
+ <Triangle1 V00="11" V01="13" V02="12"/>
+ <Triangle1 V00="14" V01="15" V02="16"/>
+ <Triangle1 V00="16" V01="17" V02="14"/>
+ <Triangle1 V00="16" V01="18" V02="17"/>
+ <Triangle1 V00="19" V01="20" V02="21"/>
+ <Triangle1 V00="21" V01="20" V02="22"/>
+ <Triangle1 V00="20" V01="23" V02="22"/>
+ <Triangle1 V00="24" V01="25" V02="26"/>
+ <Triangle1 V00="24" V01="26" V02="27"/>
+ <Triangle1 V00="27" V01="26" V02="28"/>
+ <Triangle1 V00="27" V01="28" V02="29"/>
+ <Triangle1 V00="29" V01="28" V02="30"/>
+ <Triangle1 V00="29" V01="30" V02="31"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="221" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="3" V02="1"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="4" V01="6" V02="7"/>
+ <Triangle1 V00="8" V01="4" V02="7"/>
+ <Triangle1 V00="7" V01="9" V02="8"/>
+ <Triangle1 V00="7" V01="10" V02="9"/>
+ <Triangle1 V00="9" V01="11" V02="8"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="14" V02="15"/>
+ <Triangle1 V00="16" V01="17" V02="18"/>
+ <Triangle1 V00="19" V01="17" V02="16"/>
+ <Triangle1 V00="19" V01="16" V02="20"/>
+ <Triangle1 V00="21" V01="19" V02="20"/>
+ <Triangle1 V00="22" V01="23" V02="24"/>
+ <Triangle1 V00="22" V01="24" V02="25"/>
+ <Triangle1 V00="26" V01="27" V02="28"/>
+ <Triangle1 V00="26" V01="29" V02="27"/>
+ <Triangle1 V00="29" V01="30" V02="27"/>
+ <Triangle1 V00="29" V01="31" V02="30"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="253" Count="11"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="3" V02="1"/>
+ <Triangle1 V00="3" V01="4" V02="1"/>
+ <Triangle1 V00="3" V01="5" V02="4"/>
+ <Triangle1 V00="6" V01="7" V02="8"/>
+ <Triangle1 V00="6" V01="8" V02="9"/>
+ <Triangle1 V00="10" V01="6" V02="9"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_1 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_1
new file mode 100644
index 000000000..c3ad8b733
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_1
@@ -0,0 +1,28 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="4" V02="5"/>
+ <Triangle1 V00="6" V01="7" V02="8"/>
+ <Triangle1 V00="6" V01="8" V02="9"/>
+ <Triangle1 V00="10" V01="11" V02="12"/>
+ <Triangle1 V00="10" V01="12" V02="13"/>
+ <Triangle1 V00="14" V01="15" V02="16"/>
+ <Triangle1 V00="14" V01="17" V02="15"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="20" V02="21"/>
+ <Triangle1 V00="22" V01="23" V02="24"/>
+ <Triangle1 V00="22" V01="25" V02="23"/>
+ <Triangle1 V00="25" V01="26" V02="23"/>
+ <Triangle1 V00="25" V01="27" V02="26"/>
+ <Triangle1 V00="28" V01="26" V02="27"/>
+ <Triangle1 V00="28" V01="27" V02="29"/>
+ <Triangle1 V00="30" V01="28" V02="29"/>
+ <Triangle1 V00="30" V01="29" V02="31"/>
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="8"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="0" V02="2"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="6" V01="5" V02="7"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_2 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_2
new file mode 100644
index 000000000..636919755
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_2
@@ -0,0 +1,9 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="2" V02="3"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="4" V01="6" V02="7"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0
new file mode 100644
index 000000000..8fb82b99c
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0
@@ -0,0 +1,266 @@
+<Vertex Version="0">
+ <Vtx X="-29" Y="-25" Z="-18" S="10" T="-372" R="153" G="52" B="54" A="255"/>
+ <Vtx X="-29" Y="-25" Z="13" S="10" T="-372" R="155" G="54" B="201" A="255"/>
+ <Vtx X="-13" Y="-11" Z="-2" S="10" T="-372" R="129" G="0" B="254" A="255"/>
+ <Vtx X="-29" Y="3" Z="13" S="203" T="-372" R="155" G="202" B="201" A="255"/>
+ <Vtx X="-29" Y="3" Z="-18" S="203" T="-372" R="153" G="204" B="54" A="255"/>
+ <Vtx X="-13" Y="-11" Z="-2" S="203" T="-372" R="129" G="0" B="254" A="255"/>
+ <Vtx X="-29" Y="3" Z="-18" S="203" T="-372" R="153" G="204" B="54" A="255"/>
+ <Vtx X="-29" Y="-25" Z="13" S="10" T="-372" R="155" G="54" B="201" A="255"/>
+ <Vtx X="25" Y="3" Z="-22" S="217" T="609" R="200" G="207" B="154" A="255"/>
+ <Vtx X="25" Y="-25" Z="-22" S="12" T="609" R="200" G="49" B="154" A="255"/>
+ <Vtx X="0" Y="-11" Z="-2" S="217" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="-25" Y="3" Z="-22" S="217" T="609" R="56" G="207" B="154" A="255"/>
+ <Vtx X="25" Y="3" Z="-22" S="217" T="609" R="200" G="207" B="154" A="255"/>
+ <Vtx X="29" Y="-25" Z="13" S="10" T="-372" R="101" G="54" B="201" A="255"/>
+ <Vtx X="29" Y="-25" Z="-18" S="10" T="-372" R="103" G="52" B="54" A="255"/>
+ <Vtx X="13" Y="-11" Z="-2" S="10" T="-372" R="127" G="0" B="254" A="255"/>
+ <Vtx X="29" Y="3" Z="-18" S="203" T="-372" R="103" G="204" B="54" A="255"/>
+ <Vtx X="13" Y="-11" Z="-2" S="10" T="-372" R="127" G="0" B="254" A="255"/>
+ <Vtx X="-29" Y="29" Z="-8" S="224" T="-269" R="196" G="147" B="25" A="255"/>
+ <Vtx X="-29" Y="22" Z="-18" S="232" T="-323" R="195" G="199" B="96" A="255"/>
+ <Vtx X="0" Y="14" Z="-4" S="224" T="-269" R="182" G="156" B="26" A="255"/>
+ <Vtx X="-29" Y="11" Z="-20" S="243" T="-405" R="198" G="238" B="111" A="255"/>
+ <Vtx X="0" Y="14" Z="-4" S="232" T="-323" R="182" G="156" B="26" A="255"/>
+ <Vtx X="-29" Y="26" Z="4" S="232" T="-323" R="199" G="158" B="199" A="255"/>
+ <Vtx X="-29" Y="19" Z="11" S="232" T="-372" R="200" G="179" B="172" A="255"/>
+ <Vtx X="0" Y="14" Z="-4" S="221" T="-364" R="182" G="156" B="26" A="255"/>
+ <Vtx X="29" Y="22" Z="-18" S="232" T="-323" R="61" G="199" B="96" A="255"/>
+ <Vtx X="29" Y="29" Z="-8" S="224" T="-269" R="60" G="147" B="25" A="255"/>
+ <Vtx X="0" Y="14" Z="-4" S="232" T="-323" R="74" G="156" B="26" A="255"/>
+ <Vtx X="29" Y="26" Z="4" S="232" T="-323" R="58" G="157" B="201" A="255"/>
+ <Vtx X="0" Y="14" Z="-4" S="224" T="-269" R="74" G="156" B="26" A="255"/>
+ <Vtx X="29" Y="11" Z="-19" S="231" T="-379" R="58" G="238" B="111" A="255"/>
+ <Vtx X="29" Y="22" Z="-18" S="232" T="-323" R="61" G="199" B="96" A="255"/>
+ <Vtx X="0" Y="14" Z="-4" S="221" T="-364" R="74" G="156" B="26" A="255"/>
+ <Vtx X="29" Y="26" Z="4" S="232" T="-323" R="58" G="157" B="201" A="255"/>
+ <Vtx X="29" Y="19" Z="11" S="235" T="-385" R="56" G="177" B="174" A="255"/>
+ <Vtx X="0" Y="14" Z="-4" S="232" T="-323" R="74" G="156" B="26" A="255"/>
+ <Vtx X="29" Y="11" Z="-19" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="10" Z="-23" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="-25" Z="-18" S="10" T="-372" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="-29" Z="17" S="-13" T="-397" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="-25" Z="13" S="10" T="-372" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="-29" Z="-22" S="-13" T="-397" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="3" Z="-18" S="203" T="-372" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="6" Z="-22" S="243" T="-397" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="3" Z="13" S="203" T="-372" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="-25" Z="13" S="10" T="-372" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="6" Z="17" S="243" T="-397" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="3" Z="-18" S="203" T="-372" R="129" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="627" R="0" G="0" B="129" A="255"/>
+ <Vtx X="25" Y="-25" Z="-22" S="12" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="25" Y="3" Z="-22" S="217" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="29" Y="-29" Z="-22" S="-13" T="627" R="0" G="0" B="129" A="255"/>
+ <Vtx X="29" Y="-29" Z="17" S="-13" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="-25" Z="-18" S="10" T="-372" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="-25" Z="13" S="10" T="-372" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="-29" Z="-22" S="-13" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="3" Z="-18" S="203" T="-372" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="-2" Y="-25" Z="17" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-25" Y="-25" Z="17" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-29" Y="-29" Z="17" S="-13" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-2" Y="-25" Z="17" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-29" Y="-29" Z="17" S="-13" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="0" Y="-29" Z="17" S="-13" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="2" Y="-25" Z="17" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="29" Y="-29" Z="17" S="-13" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-2" Y="3" Z="17" S="217" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="2" Y="3" Z="17" S="217" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="0" Y="6" Z="17" S="243" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="25" Y="3" Z="17" S="217" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="29" Y="6" Z="17" S="243" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="25" Y="-25" Z="17" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="29" Y="-29" Z="17" S="-13" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-29" Y="6" Z="17" S="243" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-25" Y="3" Z="17" S="217" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-25" Y="-25" Z="17" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-29" Y="-29" Z="17" S="-13" T="627" R="0" G="0" B="127" A="255"/>
+ <Vtx X="29" Y="3" Z="13" S="203" T="-372" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="-29" Z="17" S="-13" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="-25" Z="13" S="10" T="-372" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="17" S="243" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="3" Z="-18" S="203" T="-372" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="25" Y="-25" Z="-22" S="12" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="29" Y="-29" Z="-22" S="-13" T="627" R="0" G="0" B="129" A="255"/>
+ <Vtx X="-29" Y="-29" Z="-22" S="-13" T="627" R="0" G="0" B="129" A="255"/>
+ <Vtx X="-25" Y="-25" Z="-22" S="12" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="-29" Y="6" Z="-22" S="243" T="627" R="0" G="0" B="129" A="255"/>
+ <Vtx X="-25" Y="3" Z="-22" S="217" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="627" R="0" G="0" B="129" A="255"/>
+ <Vtx X="25" Y="3" Z="-22" S="217" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="29" Y="-29" Z="-22" S="-269" T="-141" R="0" G="129" B="0" A="255"/>
+ <Vtx X="29" Y="-29" Z="17" S="-269" T="-141" R="0" G="129" B="0" A="255"/>
+ <Vtx X="0" Y="-29" Z="17" S="-269" T="-141" R="0" G="129" B="0" A="255"/>
+ <Vtx X="-29" Y="-29" Z="-22" S="-269" T="-141" R="0" G="129" B="0" A="255"/>
+ <Vtx X="-29" Y="-29" Z="17" S="-269" T="-141" R="0" G="129" B="0" A="255"/>
+ <Vtx X="-8" Y="-15" Z="17" S="99" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="8" Y="-15" Z="17" S="104" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-8" Y="-6" Z="17" S="126" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="8" Y="-6" Z="17" S="126" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-25" Y="-25" Z="17" S="12" T="609" R="64" G="66" B="87" A="255"/>
+ <Vtx X="-2" Y="-25" Z="17" S="12" T="609" R="192" G="66" B="87" A="255"/>
+ <Vtx X="-13" Y="-11" Z="-2" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-2" Y="3" Z="17" S="217" T="609" R="192" G="190" B="87" A="255"/>
+ <Vtx X="-25" Y="3" Z="17" S="217" T="609" R="64" G="190" B="87" A="255"/>
+ <Vtx X="-13" Y="-11" Z="-2" S="217" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="25" Y="3" Z="17" S="217" T="609" R="192" G="190" B="87" A="255"/>
+ <Vtx X="2" Y="3" Z="17" S="217" T="609" R="64" G="190" B="87" A="255"/>
+ <Vtx X="13" Y="-11" Z="-2" S="217" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="2" Y="-25" Z="17" S="12" T="609" R="64" G="66" B="87" A="255"/>
+ <Vtx X="25" Y="-25" Z="17" S="12" T="609" R="192" G="66" B="87" A="255"/>
+ <Vtx X="13" Y="-11" Z="-2" S="12" T="609" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-25" Y="-25" Z="-22" S="12" T="609" R="56" G="49" B="154" A="255"/>
+ <Vtx X="-25" Y="3" Z="-22" S="217" T="609" R="56" G="207" B="154" A="255"/>
+ <Vtx X="0" Y="-11" Z="-2" S="12" T="609" R="0" G="0" B="129" A="255"/>
+ <Vtx X="25" Y="-25" Z="-22" S="12" T="609" R="200" G="49" B="154" A="255"/>
+ <Vtx X="29" Y="3" Z="13" S="203" T="-372" R="101" G="202" B="201" A="255"/>
+ <Vtx X="13" Y="-11" Z="-2" S="203" T="-372" R="127" G="0" B="254" A="255"/>
+ <Vtx X="29" Y="3" Z="-18" S="203" T="-372" R="103" G="204" B="54" A="255"/>
+ <Vtx X="29" Y="-25" Z="13" S="10" T="-372" R="101" G="54" B="201" A="255"/>
+ <Vtx X="-8" Y="-6" Z="17" S="126" T="609" R="0" G="127" B="0" A="255"/>
+ <Vtx X="8" Y="-6" Z="17" S="126" T="609" R="0" G="127" B="0" A="255"/>
+ <Vtx X="8" Y="-6" Z="15" S="126" T="609" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-8" Y="-6" Z="17" S="126" T="609" R="0" G="127" B="0" A="255"/>
+ <Vtx X="8" Y="-6" Z="15" S="126" T="609" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-8" Y="-6" Z="15" S="126" T="609" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-8" Y="-15" Z="17" S="99" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-8" Y="-6" Z="17" S="126" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-8" Y="-6" Z="15" S="126" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-8" Y="-15" Z="15" S="99" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="8" Y="-6" Z="17" S="126" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="8" Y="-15" Z="17" S="104" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="8" Y="-15" Z="15" S="104" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="8" Y="-6" Z="15" S="126" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="8" Y="-15" Z="17" S="104" T="609" R="0" G="129" B="0" A="255"/>
+ <Vtx X="-8" Y="-15" Z="17" S="99" T="609" R="0" G="129" B="0" A="255"/>
+ <Vtx X="-8" Y="-15" Z="15" S="99" T="609" R="0" G="129" B="0" A="255"/>
+ <Vtx X="8" Y="-15" Z="15" S="104" T="609" R="0" G="129" B="0" A="255"/>
+ <Vtx X="25" Y="6" Z="-18" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="17" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="25" Y="6" Z="13" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-29" Y="6" Z="17" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-25" Y="6" Z="13" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-29" Y="6" Z="-22" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-25" Y="6" Z="-18" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="221" T="-364" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-25" Y="30" Z="6" S="435" T="-124" R="0" G="110" B="64" A="255"/>
+ <Vtx X="-29" Y="20" Z="15" S="499" T="-141" R="0" G="81" B="98" A="255"/>
+ <Vtx X="-25" Y="20" Z="15" S="499" T="-124" R="0" G="81" B="98" A="255"/>
+ <Vtx X="-29" Y="30" Z="6" S="435" T="-141" R="0" G="110" B="64" A="255"/>
+ <Vtx X="-25" Y="33" Z="-9" S="371" T="-124" R="0" G="124" B="227" A="255"/>
+ <Vtx X="-29" Y="33" Z="-9" S="371" T="-141" R="0" G="124" B="227" A="255"/>
+ <Vtx X="-25" Y="24" Z="-22" S="435" T="-124" R="0" G="64" B="146" A="255"/>
+ <Vtx X="-29" Y="24" Z="-22" S="435" T="-141" R="0" G="64" B="147" A="255"/>
+ <Vtx X="-25" Y="10" Z="-23" S="499" T="-124" R="0" G="16" B="130" A="255"/>
+ <Vtx X="-29" Y="24" Z="-22" S="435" T="-141" R="0" G="64" B="147" A="255"/>
+ <Vtx X="-25" Y="24" Z="-22" S="435" T="-124" R="0" G="64" B="146" A="255"/>
+ <Vtx X="-29" Y="10" Z="-23" S="499" T="-141" R="0" G="16" B="130" A="255"/>
+ <Vtx X="25" Y="24" Z="-22" S="435" T="-124" R="0" G="64" B="146" A="255"/>
+ <Vtx X="29" Y="10" Z="-23" S="499" T="-141" R="0" G="16" B="130" A="255"/>
+ <Vtx X="25" Y="10" Z="-23" S="499" T="-124" R="0" G="16" B="130" A="255"/>
+ <Vtx X="29" Y="24" Z="-22" S="435" T="-141" R="0" G="64" B="146" A="255"/>
+ <Vtx X="25" Y="33" Z="-9" S="371" T="-124" R="0" G="124" B="227" A="255"/>
+ <Vtx X="29" Y="33" Z="-9" S="371" T="-141" R="0" G="124" B="227" A="255"/>
+ <Vtx X="25" Y="30" Z="6" S="435" T="-124" R="0" G="110" B="64" A="255"/>
+ <Vtx X="29" Y="30" Z="6" S="435" T="-141" R="0" G="110" B="64" A="255"/>
+ <Vtx X="25" Y="20" Z="15" S="499" T="-124" R="0" G="81" B="98" A="255"/>
+ <Vtx X="29" Y="20" Z="15" S="499" T="-141" R="0" G="81" B="98" A="255"/>
+ <Vtx X="-29" Y="11" Z="-20" S="243" T="-405" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="24" Z="-22" S="243" T="-333" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="10" Z="-23" S="243" T="-397" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="22" Z="-18" S="232" T="-323" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="29" Z="-8" S="224" T="-269" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="33" Z="-9" S="243" T="-269" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="30" Z="6" S="243" T="-333" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="26" Z="4" S="232" T="-323" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="19" Z="11" S="232" T="-372" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="20" Z="15" S="243" T="-397" R="129" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="19" Z="11" S="235" T="-385" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="30" Z="6" S="243" T="-333" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="20" Z="15" S="243" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="26" Z="4" S="232" T="-323" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="29" Z="-8" S="224" T="-269" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="33" Z="-9" S="243" T="-269" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="24" Z="-22" S="243" T="-333" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="22" Z="-18" S="232" T="-323" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="11" Z="-19" S="231" T="-379" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="24" Z="-22" S="243" T="-333" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="22" Z="-18" S="232" T="-323" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="10" Z="-23" S="243" T="-397" R="127" G="0" B="0" A="255"/>
+ <Vtx X="2" Y="20" Z="15" S="499" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="2" Y="10" Z="-23" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="2" Y="24" Z="-22" S="435" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="2" Y="30" Z="6" S="435" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="2" Y="33" Z="-9" S="371" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="-25" Y="20" Z="15" S="499" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="-25" Y="10" Z="-23" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="-25" Y="24" Z="-22" S="435" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="-25" Y="30" Z="6" S="435" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="-25" Y="33" Z="-9" S="371" T="-124" R="127" G="0" B="0" A="255"/>
+ <Vtx X="25" Y="30" Z="6" S="435" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="25" Y="33" Z="-9" S="371" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="25" Y="24" Z="-22" S="435" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="25" Y="20" Z="15" S="499" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="25" Y="10" Z="-23" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-2" Y="20" Z="15" S="499" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-2" Y="30" Z="6" S="435" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-2" Y="10" Z="-23" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-2" Y="24" Z="-22" S="435" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-2" Y="33" Z="-9" S="371" T="-124" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-2" Y="20" Z="15" S="499" T="-124" R="0" G="81" B="98" A="255"/>
+ <Vtx X="2" Y="20" Z="15" S="499" T="-124" R="0" G="81" B="98" A="255"/>
+ <Vtx X="2" Y="30" Z="6" S="435" T="-124" R="0" G="110" B="64" A="255"/>
+ <Vtx X="-2" Y="30" Z="6" S="435" T="-124" R="0" G="110" B="64" A="255"/>
+ <Vtx X="2" Y="33" Z="-9" S="371" T="-124" R="0" G="124" B="227" A="255"/>
+ <Vtx X="-2" Y="33" Z="-9" S="371" T="-124" R="0" G="124" B="227" A="255"/>
+ <Vtx X="2" Y="24" Z="-22" S="435" T="-124" R="0" G="64" B="146" A="255"/>
+ <Vtx X="-2" Y="24" Z="-22" S="435" T="-124" R="0" G="64" B="146" A="255"/>
+ <Vtx X="2" Y="24" Z="-22" S="435" T="-124" R="0" G="64" B="146" A="255"/>
+ <Vtx X="-2" Y="10" Z="-23" S="499" T="-124" R="0" G="16" B="130" A="255"/>
+ <Vtx X="-2" Y="24" Z="-22" S="435" T="-124" R="0" G="64" B="146" A="255"/>
+ <Vtx X="2" Y="10" Z="-23" S="499" T="-124" R="0" G="16" B="130" A="255"/>
+ <Vtx X="-29" Y="19" Z="11" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="-29" Y="20" Z="15" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="29" Y="20" Z="15" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="29" Y="19" Z="11" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="-29" Y="11" Z="-20" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="29" Y="10" Z="-23" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="29" Y="11" Z="-19" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="-29" Y="10" Z="-23" S="243" T="609" R="0" G="123" B="223" A="255"/>
+ <Vtx X="29" Y="10" Z="-23" S="243" T="609" R="0" G="223" B="133" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="609" R="0" G="223" B="133" A="255"/>
+ <Vtx X="-29" Y="6" Z="-22" S="243" T="609" R="0" G="223" B="133" A="255"/>
+ <Vtx X="-29" Y="10" Z="-23" S="243" T="609" R="0" G="223" B="133" A="255"/>
+ <Vtx X="-29" Y="19" Z="11" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="17" Z="16" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="20" Z="15" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="6" Z="-22" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="11" Z="-20" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="10" Z="-23" S="243" T="609" R="129" G="0" B="0" A="255"/>
+ <Vtx X="-29" Y="20" Z="15" S="243" T="609" R="0" G="66" B="108" A="255"/>
+ <Vtx X="-29" Y="17" Z="16" S="243" T="609" R="0" G="66" B="108" A="255"/>
+ <Vtx X="29" Y="17" Z="16" S="243" T="609" R="0" G="66" B="108" A="255"/>
+ <Vtx X="29" Y="20" Z="15" S="243" T="609" R="0" G="66" B="108" A="255"/>
+ <Vtx X="25" Y="7" Z="-19" S="243" T="609" R="255" G="133" B="33" A="255"/>
+ <Vtx X="-29" Y="6" Z="-22" S="243" T="609" R="1" G="133" B="33" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="609" R="255" G="133" B="33" A="255"/>
+ <Vtx X="-25" Y="7" Z="-19" S="243" T="609" R="1" G="133" B="33" A="255"/>
+ <Vtx X="-29" Y="17" Z="16" S="243" T="609" R="1" G="133" B="31" A="255"/>
+ <Vtx X="-25" Y="16" Z="12" S="243" T="609" R="1" G="133" B="32" A="255"/>
+ <Vtx X="-25" Y="16" Z="12" S="243" T="609" R="1" G="133" B="32" A="255"/>
+ <Vtx X="29" Y="17" Z="16" S="243" T="609" R="255" G="133" B="31" A="255"/>
+ <Vtx X="-29" Y="17" Z="16" S="243" T="609" R="1" G="133" B="31" A="255"/>
+ <Vtx X="25" Y="16" Z="12" S="243" T="609" R="255" G="133" B="32" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="609" R="255" G="133" B="33" A="255"/>
+ <Vtx X="25" Y="7" Z="-19" S="243" T="609" R="255" G="133" B="33" A="255"/>
+ <Vtx X="29" Y="17" Z="16" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="6" Z="-22" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="11" Z="-19" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="19" Z="11" S="243" T="609" R="127" G="0" B="0" A="255"/>
+ <Vtx X="29" Y="20" Z="15" S="243" T="609" R="127" G="0" B="0" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_1 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_1
new file mode 100644
index 000000000..dde8c515c
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_1
@@ -0,0 +1,42 @@
+<Vertex Version="0">
+ <Vtx X="28" Y="10" Z="-21" S="669" T="-2869" R="76" G="14" B="155" A="255"/>
+ <Vtx X="28" Y="23" Z="-19" S="604" T="-4294" R="80" G="49" B="171" A="255"/>
+ <Vtx X="28" Y="32" Z="-9" S="465" T="-4924" R="80" G="96" B="230" A="255"/>
+ <Vtx X="-28" Y="10" Z="-21" S="669" T="-2869" R="180" G="14" B="155" A="255"/>
+ <Vtx X="-28" Y="32" Z="-9" S="465" T="-4924" R="176" G="96" B="230" A="255"/>
+ <Vtx X="-28" Y="23" Z="-19" S="604" T="-4294" R="176" G="49" B="171" A="255"/>
+ <Vtx X="-28" Y="-27" Z="16" S="194" T="1007" R="166" G="0" B="90" A="255"/>
+ <Vtx X="28" Y="-27" Z="16" S="770" T="1007" R="90" G="0" B="90" A="255"/>
+ <Vtx X="28" Y="2" Z="16" S="770" T="-2917" R="90" G="0" B="90" A="255"/>
+ <Vtx X="-28" Y="2" Z="16" S="194" T="-2917" R="166" G="0" B="90" A="255"/>
+ <Vtx X="28" Y="-27" Z="16" S="259" T="981" R="90" G="0" B="90" A="255"/>
+ <Vtx X="28" Y="-27" Z="-21" S="669" T="981" R="90" G="0" B="166" A="255"/>
+ <Vtx X="28" Y="2" Z="-21" S="669" T="-2869" R="90" G="0" B="166" A="255"/>
+ <Vtx X="28" Y="2" Z="16" S="259" T="-2869" R="90" G="0" B="90" A="255"/>
+ <Vtx X="-28" Y="-27" Z="16" S="259" T="981" R="166" G="0" B="90" A="255"/>
+ <Vtx X="-28" Y="2" Z="-21" S="669" T="-2869" R="166" G="0" B="166" A="255"/>
+ <Vtx X="-28" Y="-27" Z="-21" S="669" T="981" R="166" G="0" B="166" A="255"/>
+ <Vtx X="-28" Y="2" Z="16" S="259" T="-2869" R="166" G="0" B="90" A="255"/>
+ <Vtx X="28" Y="2" Z="-21" S="770" T="-9320" R="90" G="0" B="166" A="255"/>
+ <Vtx X="28" Y="-27" Z="-21" S="770" T="-13243" R="90" G="0" B="166" A="255"/>
+ <Vtx X="-28" Y="-27" Z="-21" S="194" T="-13243" R="166" G="0" B="166" A="255"/>
+ <Vtx X="-28" Y="2" Z="-21" S="194" T="-9320" R="166" G="0" B="166" A="255"/>
+ <Vtx X="-28" Y="10" Z="-21" S="194" T="-9320" R="180" G="14" B="155" A="255"/>
+ <Vtx X="28" Y="23" Z="-19" S="770" T="-7714" R="80" G="49" B="171" A="255"/>
+ <Vtx X="28" Y="10" Z="-21" S="770" T="-9320" R="76" G="14" B="155" A="255"/>
+ <Vtx X="-28" Y="23" Z="-19" S="194" T="-7714" R="176" G="49" B="171" A="255"/>
+ <Vtx X="28" Y="32" Z="-9" S="770" T="-6124" R="80" G="96" B="230" A="255"/>
+ <Vtx X="-28" Y="32" Z="-9" S="194" T="-6124" R="176" G="96" B="230" A="255"/>
+ <Vtx X="28" Y="30" Z="5" S="770" T="-4533" R="81" G="86" B="47" A="255"/>
+ <Vtx X="-28" Y="30" Z="5" S="194" T="-4533" R="175" G="86" B="47" A="255"/>
+ <Vtx X="28" Y="19" Z="14" S="770" T="-2917" R="73" G="68" B="78" A="255"/>
+ <Vtx X="-28" Y="19" Z="14" S="194" T="-2917" R="183" G="68" B="78" A="255"/>
+ <Vtx X="28" Y="19" Z="14" S="259" T="-2869" R="73" G="68" B="78" A="255"/>
+ <Vtx X="28" Y="10" Z="-21" S="669" T="-2869" R="76" G="14" B="155" A="255"/>
+ <Vtx X="28" Y="32" Z="-9" S="465" T="-4924" R="80" G="96" B="230" A="255"/>
+ <Vtx X="28" Y="30" Z="5" S="327" T="-4294" R="81" G="86" B="47" A="255"/>
+ <Vtx X="-28" Y="30" Z="5" S="327" T="-4294" R="175" G="86" B="47" A="255"/>
+ <Vtx X="-28" Y="32" Z="-9" S="465" T="-4924" R="176" G="96" B="230" A="255"/>
+ <Vtx X="-28" Y="19" Z="14" S="259" T="-2869" R="183" G="68" B="78" A="255"/>
+ <Vtx X="-28" Y="10" Z="-21" S="669" T="-2869" R="180" G="14" B="155" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_2 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_2
new file mode 100644
index 000000000..e73e84204
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_2
@@ -0,0 +1,10 @@
+<Vertex Version="0">
+ <Vtx X="25" Y="6" Z="-18" S="353" T="-232" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-25" Y="6" Z="-18" S="353" T="-232" R="0" G="127" B="0" A="255"/>
+ <Vtx X="-25" Y="6" Z="13" S="353" T="-232" R="0" G="127" B="0" A="255"/>
+ <Vtx X="25" Y="6" Z="13" S="353" T="-232" R="0" G="127" B="0" A="255"/>
+ <Vtx X="25" Y="16" Z="12" S="375" T="741" R="0" G="133" B="33" A="255"/>
+ <Vtx X="-25" Y="16" Z="12" S="375" T="741" R="0" G="133" B="33" A="255"/>
+ <Vtx X="-25" Y="7" Z="-19" S="375" T="741" R="0" G="133" B="33" A="255"/>
+ <Vtx X="25" Y="7" Z="-19" S="375" T="741" R="0" G="133" B="33" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_tri_0 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_tri_0
new file mode 100644
index 000000000..f8fef42d6
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_tri_0
@@ -0,0 +1,7 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="4"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="0" V02="2"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_vtx_0 b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_vtx_0
new file mode 100644
index 000000000..16e2a5030
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_vtx_0
@@ -0,0 +1,6 @@
+<Vertex Version="0">
+ <Vtx X="-2" Y="-14" Z="17" S="-20" T="480" R="0" G="0" B="127" A="255"/>
+ <Vtx X="2" Y="-14" Z="17" S="498" T="480" R="0" G="0" B="127" A="255"/>
+ <Vtx X="2" Y="-8" Z="17" S="498" T="-2" R="0" G="0" B="127" A="255"/>
+ <Vtx X="-2" Y="-8" Z="17" S="-20" T="-2" R="0" G="0" B="127" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_frame_layerOpaque b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_frame_layerOpaque
new file mode 100644
index 000000000..4c581c418
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_frame_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="2639" T="2639" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="0" G="15" B="34" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown11Tex" 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="0" ShiftS="0" MaskT="0" 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="128" G="126" B="136" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_inside_layerOpaque b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_inside_layerOpaque
new file mode 100644
index 000000000..719a61294
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_inside_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_DECAL2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="3950" T="3950" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="0" G="15" B="34" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown11Tex" 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="0" ShiftS="0" MaskT="0" 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="45" G="44" B="48" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_layerOpaque b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_layerOpaque
new file mode 100644
index 000000000..c44a43bf2
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="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_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="80" G="50" B="0" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown10Tex" 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="0" ShiftS="0" MaskT="0" 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="123" G="72" B="0" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_lock_layerTransparent b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_lock_layerTransparent
new file mode 100644
index 000000000..0e87e1fa2
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_lock_layerTransparent
@@ -0,0 +1,20 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_TEXEL0" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_COMBINED" Ab1="G_ACMUX_0" Ac1="G_ACMUX_PRIMITIVE" Ad1="G_ACMUX_0"/>
+ <SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="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_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_DECAL2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gChestLockTex" 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="0" ShiftS="0" MaskT="0" ShiftT="0"/>
+ <LoadSync/>
+ <LoadBlock Tile="7" Uls="0" Ult="0" Lrs="63" Dxt="2048" />
+ <PipeSync/>
+ <SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="1" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_MIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="3" ShiftS="0" MaskT="4" ShiftT="0"/>
+ <SetTileSize T="0" Uls="0" Ult="0" Lrs="28" Lrt="60"/>
+ <SetPrimColor M="0" L="0" R="0" G="0" B="0" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_climb/gGiClimbDL b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL
new file mode 100644
index 000000000..69b8b36d0
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL
@@ -0,0 +1,8 @@
+<DisplayList Version="0">
+ <CallDisplayList Path="objects/object_gi_climb/mat_gGiClimbDL_ladder_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_climb/gGiClimbDL_layer_Opaque_tri_0"/>
+ <ClearGeometryMode G_LIGHTING="1"/>
+ <SetGeometryMode G_LIGHTING="1"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_tri_0 b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_tri_0
new file mode 100644
index 000000000..551563c91
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_tri_0
@@ -0,0 +1,57 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="30"/>
+ <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="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="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="15" V02="13"/>
+ <Triangle1 V00="16" V01="17" V02="18"/>
+ <Triangle1 V00="16" V01="19" V02="17"/>
+ <Triangle1 V00="19" V01="20" V02="17"/>
+ <Triangle1 V00="19" V01="21" V02="20"/>
+ <Triangle1 V00="21" V01="22" V02="20"/>
+ <Triangle1 V00="21" V01="23" V02="22"/>
+ <Triangle1 V00="24" V01="23" V02="21"/>
+ <Triangle1 V00="24" V01="25" V02="23"/>
+ <Triangle1 V00="23" V01="26" V02="22"/>
+ <Triangle1 V00="23" V01="27" V02="26"/>
+ <Triangle1 V00="20" V01="28" V02="29"/>
+ <Triangle1 V00="20" V01="22" V02="28"/>
+ <LoadVertices Path="objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="30" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="3" V02="1"/>
+ <Triangle1 V00="4" V01="3" V02="0"/>
+ <Triangle1 V00="4" V01="5" V02="3"/>
+ <Triangle1 V00="6" V01="5" V02="4"/>
+ <Triangle1 V00="7" V01="6" V02="4"/>
+ <Triangle1 V00="7" V01="8" V02="6"/>
+ <Triangle1 V00="6" V01="9" V02="5"/>
+ <Triangle1 V00="10" V01="9" V02="6"/>
+ <Triangle1 V00="10" V01="11" V02="9"/>
+ <Triangle1 V00="9" V01="12" V02="5"/>
+ <Triangle1 V00="9" V01="13" V02="12"/>
+ <Triangle1 V00="14" V01="15" V02="16"/>
+ <Triangle1 V00="14" V01="17" V02="15"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="21" V02="19"/>
+ <Triangle1 V00="21" V01="22" V02="19"/>
+ <Triangle1 V00="21" V01="23" V02="22"/>
+ <Triangle1 V00="23" V01="24" V02="22"/>
+ <Triangle1 V00="23" V01="25" V02="24"/>
+ <Triangle1 V00="26" V01="27" V02="28"/>
+ <Triangle1 V00="26" V01="28" V02="29"/>
+ <Triangle1 V00="30" V01="29" V02="28"/>
+ <Triangle1 V00="30" V01="28" V02="31"/>
+ <LoadVertices Path="objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="62" Count="6"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="3" V02="1"/>
+ <Triangle1 V00="3" V01="4" V02="1"/>
+ <Triangle1 V00="3" V01="5" V02="4"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_0 b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_0
new file mode 100644
index 000000000..18675e007
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_0
@@ -0,0 +1,70 @@
+<Vertex Version="0">
+ <Vtx X="15" Y="22" Z="4" S="243" T="627" R="235" G="105" B="68" A="255"/>
+ <Vtx X="-15" Y="15" Z="-4" S="-13" T="371" R="225" G="185" B="100" A="255"/>
+ <Vtx X="14" Y="15" Z="5" S="-13" T="627" R="225" G="185" B="100" A="255"/>
+ <Vtx X="-15" Y="22" Z="-5" S="243" T="371" R="235" G="105" B="68" A="255"/>
+ <Vtx X="-13" Y="14" Z="-9" S="-13" T="115" R="21" G="151" B="188" A="255"/>
+ <Vtx X="14" Y="15" Z="5" S="-269" T="-141" R="225" G="185" B="100" A="255"/>
+ <Vtx X="-15" Y="15" Z="-4" S="-269" T="115" R="225" G="185" B="100" A="255"/>
+ <Vtx X="16" Y="14" Z="0" S="-13" T="-141" R="21" G="151" B="188" A="255"/>
+ <Vtx X="-13" Y="21" Z="-11" S="243" T="115" R="31" G="71" B="156" A="255"/>
+ <Vtx X="17" Y="21" Z="-2" S="243" T="-141" R="31" G="71" B="156" A="255"/>
+ <Vtx X="-15" Y="22" Z="-5" S="499" T="115" R="235" G="105" B="68" A="255"/>
+ <Vtx X="15" Y="22" Z="4" S="499" T="-141" R="235" G="105" B="68" A="255"/>
+ <Vtx X="14" Y="8" Z="7" S="243" T="627" R="235" G="105" B="68" A="255"/>
+ <Vtx X="-16" Y="0" Z="-1" S="243" T="371" R="225" G="185" B="100" A="255"/>
+ <Vtx X="14" Y="0" Z="8" S="243" T="627" R="225" G="185" B="100" A="255"/>
+ <Vtx X="-15" Y="8" Z="-2" S="243" T="371" R="235" G="105" B="68" A="255"/>
+ <Vtx X="24" Y="32" Z="7" S="243" T="627" R="53" G="86" B="77" A="255"/>
+ <Vtx X="11" Y="-24" Z="14" S="-13" T="371" R="160" G="198" B="60" A="255"/>
+ <Vtx X="21" Y="-24" Z="17" S="-13" T="627" R="44" G="198" B="104" A="255"/>
+ <Vtx X="14" Y="32" Z="4" S="243" T="371" R="169" G="86" B="34" A="255"/>
+ <Vtx X="14" Y="-26" Z="5" S="-13" T="115" R="203" G="170" B="179" A="255"/>
+ <Vtx X="17" Y="30" Z="-5" S="243" T="115" R="212" G="58" B="152" A="255"/>
+ <Vtx X="23" Y="-26" Z="8" S="-13" T="-141" R="87" G="170" B="222" A="255"/>
+ <Vtx X="27" Y="30" Z="-2" S="243" T="-141" R="96" G="58" B="196" A="255"/>
+ <Vtx X="14" Y="32" Z="4" S="499" T="115" R="169" G="86" B="34" A="255"/>
+ <Vtx X="24" Y="32" Z="7" S="499" T="-141" R="53" G="86" B="77" A="255"/>
+ <Vtx X="21" Y="-24" Z="17" S="-13" T="-397" R="44" G="198" B="104" A="255"/>
+ <Vtx X="24" Y="32" Z="7" S="243" T="-397" R="53" G="86" B="77" A="255"/>
+ <Vtx X="21" Y="-24" Z="17" S="-269" T="-141" R="44" G="198" B="104" A="255"/>
+ <Vtx X="11" Y="-24" Z="14" S="-269" T="115" R="160" G="198" B="60" A="255"/>
+ <Vtx X="-17" Y="-24" Z="5" S="-13" T="371" R="44" G="198" B="104" A="255"/>
+ <Vtx X="-23" Y="32" Z="-8" S="243" T="627" R="169" G="86" B="34" A="255"/>
+ <Vtx X="-27" Y="-24" Z="2" S="-13" T="627" R="160" G="198" B="60" A="255"/>
+ <Vtx X="-14" Y="32" Z="-5" S="243" T="371" R="53" G="86" B="77" A="255"/>
+ <Vtx X="-14" Y="-26" Z="-4" S="-13" T="115" R="87" G="170" B="222" A="255"/>
+ <Vtx X="-11" Y="30" Z="-14" S="243" T="115" R="96" G="58" B="196" A="255"/>
+ <Vtx X="-24" Y="-26" Z="-7" S="-13" T="-141" R="203" G="170" B="179" A="255"/>
+ <Vtx X="-17" Y="-24" Z="5" S="-269" T="115" R="44" G="198" B="104" A="255"/>
+ <Vtx X="-27" Y="-24" Z="2" S="-269" T="-141" R="160" G="198" B="60" A="255"/>
+ <Vtx X="-21" Y="30" Z="-17" S="243" T="-141" R="212" G="58" B="152" A="255"/>
+ <Vtx X="-27" Y="-24" Z="2" S="-13" T="-397" R="160" G="198" B="60" A="255"/>
+ <Vtx X="-23" Y="32" Z="-8" S="243" T="-397" R="169" G="86" B="34" A="255"/>
+ <Vtx X="-14" Y="32" Z="-5" S="499" T="115" R="53" G="86" B="77" A="255"/>
+ <Vtx X="-23" Y="32" Z="-8" S="499" T="-141" R="169" G="86" B="34" A="255"/>
+ <Vtx X="-16" Y="-7" Z="0" S="-13" T="371" R="235" G="105" B="68" A="255"/>
+ <Vtx X="13" Y="-15" Z="11" S="243" T="627" R="225" G="185" B="100" A="255"/>
+ <Vtx X="13" Y="-7" Z="9" S="-13" T="627" R="235" G="105" B="68" A="255"/>
+ <Vtx X="-17" Y="-15" Z="2" S="243" T="371" R="225" G="185" B="100" A="255"/>
+ <Vtx X="13" Y="-7" Z="9" S="-269" T="-141" R="235" G="105" B="68" A="255"/>
+ <Vtx X="-14" Y="-8" Z="-5" S="-13" T="115" R="31" G="71" B="156" A="255"/>
+ <Vtx X="-16" Y="-7" Z="0" S="-269" T="115" R="235" G="105" B="68" A="255"/>
+ <Vtx X="15" Y="-8" Z="4" S="-13" T="-141" R="31" G="71" B="156" A="255"/>
+ <Vtx X="-15" Y="-16" Z="-4" S="243" T="115" R="21" G="151" B="188" A="255"/>
+ <Vtx X="15" Y="-16" Z="5" S="243" T="-141" R="21" G="151" B="188" A="255"/>
+ <Vtx X="-17" Y="-15" Z="2" S="499" T="115" R="225" G="185" B="100" A="255"/>
+ <Vtx X="13" Y="-15" Z="11" S="499" T="-141" R="225" G="185" B="100" A="255"/>
+ <Vtx X="-15" Y="8" Z="-2" S="499" T="115" R="235" G="105" B="68" A="255"/>
+ <Vtx X="14" Y="8" Z="7" S="499" T="-141" R="235" G="105" B="68" A="255"/>
+ <Vtx X="16" Y="7" Z="1" S="243" T="-141" R="6" G="97" B="81" A="255"/>
+ <Vtx X="-14" Y="7" Z="-8" S="243" T="115" R="6" G="97" B="81" A="255"/>
+ <Vtx X="-14" Y="7" Z="-8" S="243" T="115" R="105" G="188" B="23" A="255"/>
+ <Vtx X="16" Y="7" Z="1" S="243" T="-141" R="105" G="188" B="22" A="255"/>
+ <Vtx X="16" Y="7" Z="1" S="243" T="-141" R="105" G="188" B="22" A="255"/>
+ <Vtx X="-14" Y="-1" Z="-7" S="243" T="115" R="21" G="151" B="188" A="255"/>
+ <Vtx X="-14" Y="7" Z="-8" S="243" T="115" R="105" G="188" B="23" A="255"/>
+ <Vtx X="15" Y="-1" Z="2" S="243" T="-141" R="21" G="151" B="188" A="255"/>
+ <Vtx X="-16" Y="0" Z="-1" S="499" T="115" R="225" G="185" B="100" A="255"/>
+ <Vtx X="14" Y="0" Z="8" S="499" T="-141" R="225" G="185" B="100" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_climb/mat_gGiClimbDL_ladder_layerOpaque b/soh/assets/custom/objects/object_gi_climb/mat_gGiClimbDL_ladder_layerOpaque
new file mode 100644
index 000000000..4c75266a9
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/mat_gGiClimbDL_ladder_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="2639" T="2639" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="82" G="35" B="0" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown11Tex" 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="0" ShiftS="0" MaskT="0" 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="128" G="95" B="0" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL
new file mode 100644
index 000000000..beb4fbe28
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL
@@ -0,0 +1,16 @@
+<DisplayList Version="0">
+ <CallDisplayList Path="objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_0"/>
+ <CallDisplayList Path="objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_leather_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_1"/>
+ <CallDisplayList Path="objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_2"/>
+ <CallDisplayList Path="objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_2_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_3"/>
+ <CallDisplayList Path="objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_gem_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_4"/>
+ <ClearGeometryMode G_LIGHTING="1"/>
+ <SetGeometryMode G_LIGHTING="1"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_0 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_0
new file mode 100644
index 000000000..423797430
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_0
@@ -0,0 +1,66 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
+ <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="3" V01="5" V02="6"/>
+ <Triangle1 V00="3" V01="6" V02="7"/>
+ <Triangle1 V00="7" V01="6" V02="8"/>
+ <Triangle1 V00="7" V01="8" V02="9"/>
+ <Triangle1 V00="10" V01="7" V02="9"/>
+ <Triangle1 V00="10" V01="9" V02="11"/>
+ <Triangle1 V00="10" V01="11" V02="12"/>
+ <Triangle1 V00="10" V01="12" V02="13"/>
+ <Triangle1 V00="13" V01="12" V02="14"/>
+ <Triangle1 V00="13" V01="14" V02="15"/>
+ <Triangle1 V00="15" V01="14" V02="16"/>
+ <Triangle1 V00="15" V01="16" V02="17"/>
+ <Triangle1 V00="18" V01="15" V02="17"/>
+ <Triangle1 V00="18" V01="17" V02="19"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="20" V02="21"/>
+ <Triangle1 V00="22" V01="18" V02="21"/>
+ <Triangle1 V00="22" V01="21" V02="23"/>
+ <Triangle1 V00="22" V01="15" V02="18"/>
+ <Triangle1 V00="22" V01="13" V02="15"/>
+ <Triangle1 V00="0" V01="13" V02="22"/>
+ <Triangle1 V00="0" V01="22" V02="24"/>
+ <Triangle1 V00="0" V01="24" V02="25"/>
+ <Triangle1 V00="0" V01="10" V02="13"/>
+ <Triangle1 V00="0" V01="7" V02="10"/>
+ <Triangle1 V00="0" V01="3" V02="7"/>
+ <Triangle1 V00="26" V01="27" V02="28"/>
+ <Triangle1 V00="26" V01="29" V02="27"/>
+ <Triangle1 V00="26" V01="30" V02="29"/>
+ <Triangle1 V00="26" V01="31" V02="30"/>
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="25"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="3" V02="1"/>
+ <Triangle1 V00="0" V01="4" V02="3"/>
+ <Triangle1 V00="0" V01="5" V02="4"/>
+ <Triangle1 V00="3" V01="6" V02="1"/>
+ <Triangle1 V00="3" V01="7" V02="6"/>
+ <Triangle1 V00="3" V01="8" V02="7"/>
+ <Triangle1 V00="3" V01="9" V02="8"/>
+ <Triangle1 V00="7" V01="8" V02="10"/>
+ <Triangle1 V00="7" V01="10" V02="11"/>
+ <Triangle1 V00="7" V01="11" V02="12"/>
+ <Triangle1 V00="7" V01="12" V02="6"/>
+ <Triangle1 V00="6" V01="12" V02="13"/>
+ <Triangle1 V00="6" V01="13" V02="14"/>
+ <Triangle1 V00="1" V01="6" V02="14"/>
+ <Triangle1 V00="1" V01="14" V02="15"/>
+ <Triangle1 V00="2" V01="1" V02="15"/>
+ <Triangle1 V00="2" V01="15" V02="16"/>
+ <Triangle1 V00="2" V01="16" V02="17"/>
+ <Triangle1 V00="2" V01="17" V02="18"/>
+ <Triangle1 V00="18" V01="17" V02="19"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="21" V01="18" V02="20"/>
+ <Triangle1 V00="21" V01="20" V02="22"/>
+ <Triangle1 V00="21" V01="22" V02="23"/>
+ <Triangle1 V00="21" V01="23" V02="24"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_1 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_1
new file mode 100644
index 000000000..7b025597c
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_1
@@ -0,0 +1,44 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="2" V02="3"/>
+ <Triangle1 V00="4" V01="3" V02="2"/>
+ <Triangle1 V00="5" V01="4" V02="2"/>
+ <Triangle1 V00="5" V01="6" V02="4"/>
+ <Triangle1 V00="7" V01="6" V02="5"/>
+ <Triangle1 V00="7" V01="5" V02="8"/>
+ <Triangle1 V00="7" V01="8" V02="9"/>
+ <Triangle1 V00="7" V01="9" V02="10"/>
+ <Triangle1 V00="9" V01="11" V02="10"/>
+ <Triangle1 V00="9" V01="12" V02="11"/>
+ <Triangle1 V00="11" V01="12" V02="13"/>
+ <Triangle1 V00="14" V01="13" V02="12"/>
+ <Triangle1 V00="14" V01="12" V02="15"/>
+ <Triangle1 V00="16" V01="13" V02="14"/>
+ <Triangle1 V00="16" V01="17" V02="13"/>
+ <Triangle1 V00="18" V01="17" V02="16"/>
+ <Triangle1 V00="18" V01="19" V02="17"/>
+ <Triangle1 V00="20" V01="13" V02="17"/>
+ <Triangle1 V00="20" V01="21" V02="13"/>
+ <Triangle1 V00="21" V01="22" V02="13"/>
+ <Triangle1 V00="21" V01="23" V02="22"/>
+ <Triangle1 V00="13" V01="22" V02="11"/>
+ <Triangle1 V00="10" V01="11" V02="22"/>
+ <Triangle1 V00="24" V01="0" V02="3"/>
+ <Triangle1 V00="24" V01="3" V02="25"/>
+ <Triangle1 V00="26" V01="25" V02="3"/>
+ <Triangle1 V00="26" V01="3" V02="27"/>
+ <Triangle1 V00="27" V01="3" V02="28"/>
+ <Triangle1 V00="3" V01="4" V02="28"/>
+ <Triangle1 V00="6" V01="28" V02="4"/>
+ <Triangle1 V00="27" V01="28" V02="29"/>
+ <Triangle1 V00="30" V01="31" V02="25"/>
+ <Triangle1 V00="30" V01="25" V02="26"/>
+ <Triangle1 V00="18" V01="24" V02="25"/>
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="7"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="4" V02="5"/>
+ <Triangle1 V00="3" V01="5" V02="6"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_2 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_2
new file mode 100644
index 000000000..98f24ac28
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_2
@@ -0,0 +1,34 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
+ <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="7" V02="8"/>
+ <Triangle1 V00="6" V01="8" V02="9"/>
+ <Triangle1 V00="10" V01="11" V02="12"/>
+ <Triangle1 V00="10" V01="12" V02="13"/>
+ <Triangle1 V00="14" V01="15" V02="16"/>
+ <Triangle1 V00="14" V01="16" V02="17"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="20" V02="21"/>
+ <Triangle1 V00="22" V01="23" V02="24"/>
+ <Triangle1 V00="22" V01="24" V02="25"/>
+ <Triangle1 V00="26" V01="27" V02="28"/>
+ <Triangle1 V00="26" V01="29" V02="27"/>
+ <Triangle1 V00="30" V01="29" V02="26"/>
+ <Triangle1 V00="30" V01="31" V02="29"/>
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_2" VertexBufferIndex="0" VertexOffset="32" Count="20"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="2" V02="3"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="4" V01="6" V02="7"/>
+ <Triangle1 V00="8" V01="9" V02="10"/>
+ <Triangle1 V00="8" V01="10" V02="11"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="14" V02="15"/>
+ <Triangle1 V00="16" V01="17" V02="18"/>
+ <Triangle1 V00="16" V01="18" V02="19"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_3 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_3
new file mode 100644
index 000000000..13e49ce17
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_3
@@ -0,0 +1,13 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_3" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="2" V02="3"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="4" V01="6" V02="7"/>
+ <Triangle1 V00="8" V01="9" V02="10"/>
+ <Triangle1 V00="8" V01="10" V02="11"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="14" V02="15"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_4 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_4
new file mode 100644
index 000000000..c47844334
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_4
@@ -0,0 +1,9 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_4" VertexBufferIndex="0" VertexOffset="0" Count="12"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="4" V02="5"/>
+ <Triangle1 V00="6" V01="7" V02="8"/>
+ <Triangle1 V00="9" V01="10" V02="11"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_0 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_0
new file mode 100644
index 000000000..3f0218909
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_0
@@ -0,0 +1,59 @@
+<Vertex Version="0">
+ <Vtx X="-12" Y="7" Z="12" S="-318" T="6" R="182" G="16" B="102" A="255"/>
+ <Vtx X="0" Y="8" Z="17" S="187" T="55" R="207" G="16" B="116" A="255"/>
+ <Vtx X="0" Y="18" Z="15" S="192" T="-135" R="201" G="44" B="106" A="255"/>
+ <Vtx X="-11" Y="14" Z="10" S="-252" T="-183" R="182" G="43" B="94" A="255"/>
+ <Vtx X="0" Y="25" Z="11" S="194" T="-318" R="198" G="54" B="99" A="255"/>
+ <Vtx X="-10" Y="19" Z="8" S="-318" T="-318" R="184" G="53" B="90" A="255"/>
+ <Vtx X="-17" Y="16" Z="1" S="-318" T="-318" R="155" G="51" B="56" A="255"/>
+ <Vtx X="-19" Y="12" Z="2" S="-285" T="-187" R="150" G="41" B="57" A="255"/>
+ <Vtx X="-21" Y="14" Z="-8" S="-318" T="-318" R="144" G="50" B="32" A="255"/>
+ <Vtx X="-23" Y="10" Z="-9" S="-318" T="-190" R="140" G="36" B="36" A="255"/>
+ <Vtx X="-20" Y="6" Z="4" S="-318" T="6" R="147" G="15" B="63" A="255"/>
+ <Vtx X="-24" Y="5" Z="-8" S="-318" T="6" R="136" G="13" B="39" A="255"/>
+ <Vtx X="-24" Y="-1" Z="-8" S="-318" T="6" R="136" G="243" B="39" A="255"/>
+ <Vtx X="-20" Y="-1" Z="4" S="-318" T="6" R="147" G="241" B="63" A="255"/>
+ <Vtx X="-23" Y="-6" Z="-9" S="-318" T="-190" R="140" G="220" B="36" A="255"/>
+ <Vtx X="-19" Y="-8" Z="2" S="-285" T="-187" R="150" G="215" B="57" A="255"/>
+ <Vtx X="-21" Y="-9" Z="-8" S="-318" T="-318" R="144" G="206" B="32" A="255"/>
+ <Vtx X="-17" Y="-11" Z="1" S="-318" T="-318" R="155" G="205" B="56" A="255"/>
+ <Vtx X="-11" Y="-10" Z="10" S="-252" T="-183" R="182" G="213" B="94" A="255"/>
+ <Vtx X="-10" Y="-14" Z="8" S="-318" T="-318" R="184" G="203" B="90" A="255"/>
+ <Vtx X="0" Y="-20" Z="11" S="194" T="-318" R="198" G="202" B="99" A="255"/>
+ <Vtx X="0" Y="-13" Z="15" S="192" T="-135" R="201" G="212" B="106" A="255"/>
+ <Vtx X="-12" Y="-2" Z="12" S="-318" T="6" R="182" G="240" B="102" A="255"/>
+ <Vtx X="0" Y="-3" Z="17" S="187" T="55" R="207" G="240" B="116" A="255"/>
+ <Vtx X="0" Y="-3" Z="17" S="184" T="46" R="207" G="240" B="116" A="255"/>
+ <Vtx X="0" Y="8" Z="17" S="184" T="46" R="207" G="16" B="116" A="255"/>
+ <Vtx X="12" Y="7" Z="12" S="-318" T="6" R="74" G="16" B="102" A="255"/>
+ <Vtx X="0" Y="18" Z="15" S="192" T="-135" R="55" G="44" B="106" A="255"/>
+ <Vtx X="0" Y="8" Z="17" S="187" T="55" R="49" G="16" B="116" A="255"/>
+ <Vtx X="11" Y="14" Z="10" S="-252" T="-183" R="74" G="43" B="94" A="255"/>
+ <Vtx X="19" Y="12" Z="2" S="-285" T="-187" R="106" G="41" B="57" A="255"/>
+ <Vtx X="20" Y="6" Z="4" S="-318" T="6" R="109" G="15" B="63" A="255"/>
+ <Vtx X="12" Y="7" Z="12" S="-318" T="6" R="74" G="16" B="102" A="255"/>
+ <Vtx X="20" Y="-1" Z="4" S="-318" T="6" R="109" G="241" B="63" A="255"/>
+ <Vtx X="20" Y="6" Z="4" S="-318" T="6" R="109" G="15" B="63" A="255"/>
+ <Vtx X="12" Y="-2" Z="12" S="-318" T="6" R="74" G="240" B="102" A="255"/>
+ <Vtx X="0" Y="-3" Z="17" S="184" T="46" R="49" G="240" B="116" A="255"/>
+ <Vtx X="0" Y="8" Z="17" S="184" T="46" R="49" G="16" B="116" A="255"/>
+ <Vtx X="19" Y="-8" Z="2" S="-285" T="-187" R="106" G="215" B="57" A="255"/>
+ <Vtx X="11" Y="-10" Z="10" S="-252" T="-183" R="74" G="213" B="94" A="255"/>
+ <Vtx X="0" Y="-13" Z="15" S="192" T="-135" R="55" G="212" B="106" A="255"/>
+ <Vtx X="0" Y="-3" Z="17" S="187" T="55" R="49" G="240" B="116" A="255"/>
+ <Vtx X="0" Y="-20" Z="11" S="194" T="-318" R="58" G="202" B="99" A="255"/>
+ <Vtx X="10" Y="-14" Z="8" S="-318" T="-318" R="72" G="203" B="90" A="255"/>
+ <Vtx X="17" Y="-11" Z="1" S="-318" T="-318" R="101" G="205" B="56" A="255"/>
+ <Vtx X="21" Y="-9" Z="-8" S="-318" T="-318" R="112" G="206" B="32" A="255"/>
+ <Vtx X="23" Y="-6" Z="-9" S="-318" T="-190" R="116" G="220" B="36" A="255"/>
+ <Vtx X="24" Y="-1" Z="-8" S="-318" T="6" R="120" G="243" B="39" A="255"/>
+ <Vtx X="24" Y="5" Z="-8" S="-318" T="6" R="120" G="13" B="39" A="255"/>
+ <Vtx X="23" Y="10" Z="-9" S="-318" T="-190" R="116" G="36" B="36" A="255"/>
+ <Vtx X="19" Y="12" Z="2" S="-285" T="-187" R="106" G="41" B="57" A="255"/>
+ <Vtx X="21" Y="14" Z="-8" S="-318" T="-318" R="112" G="50" B="32" A="255"/>
+ <Vtx X="17" Y="16" Z="1" S="-318" T="-318" R="101" G="51" B="56" A="255"/>
+ <Vtx X="11" Y="14" Z="10" S="-252" T="-183" R="74" G="43" B="94" A="255"/>
+ <Vtx X="10" Y="19" Z="8" S="-318" T="-318" R="72" G="53" B="90" A="255"/>
+ <Vtx X="0" Y="25" Z="11" S="194" T="-318" R="58" G="54" B="99" A="255"/>
+ <Vtx X="0" Y="18" Z="15" S="192" T="-135" R="55" G="44" B="106" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_1 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_1
new file mode 100644
index 000000000..c5029d598
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_1
@@ -0,0 +1,41 @@
+<Vertex Version="0">
+ <Vtx X="-15" Y="22" Z="-1" S="777" T="406" R="152" G="38" B="63" A="255"/>
+ <Vtx X="-19" Y="19" Z="-10" S="467" T="436" R="140" G="36" B="38" A="255"/>
+ <Vtx X="-22" Y="8" Z="-9" S="423" T="602" R="133" G="30" B="247" A="255"/>
+ <Vtx X="-20" Y="2" Z="3" S="771" T="690" R="146" G="0" B="63" A="255"/>
+ <Vtx X="-24" Y="2" Z="-9" S="423" T="688" R="133" G="0" B="224" A="255"/>
+ <Vtx X="-13" Y="8" Z="-18" S="4" T="588" R="191" G="2" B="147" A="255"/>
+ <Vtx X="-13" Y="-4" Z="-18" S="-1" T="783" R="191" G="254" B="147" A="255"/>
+ <Vtx X="0" Y="-4" Z="-23" S="-500" T="786" R="0" G="198" B="143" A="255"/>
+ <Vtx X="0" Y="9" Z="-23" S="-496" T="580" R="0" G="58" B="143" A="255"/>
+ <Vtx X="13" Y="8" Z="-18" S="4" T="588" R="65" G="2" B="147" A="255"/>
+ <Vtx X="13" Y="-4" Z="-18" S="-1" T="783" R="65" G="254" B="147" A="255"/>
+ <Vtx X="24" Y="2" Z="-9" S="423" T="688" R="123" G="0" B="224" A="255"/>
+ <Vtx X="22" Y="8" Z="-9" S="423" T="602" R="123" G="30" B="247" A="255"/>
+ <Vtx X="20" Y="2" Z="3" S="771" T="690" R="110" G="0" B="63" A="255"/>
+ <Vtx X="15" Y="22" Z="-1" S="777" T="406" R="104" G="38" B="63" A="255"/>
+ <Vtx X="19" Y="19" Z="-10" S="467" T="436" R="116" G="36" B="38" A="255"/>
+ <Vtx X="9" Y="25" Z="5" S="1066" T="354" R="36" G="98" B="72" A="255"/>
+ <Vtx X="12" Y="2" Z="12" S="1080" T="692" R="70" G="48" B="94" A="255"/>
+ <Vtx X="0" Y="29" Z="8" S="1353" T="291" R="0" G="106" B="70" A="255"/>
+ <Vtx X="0" Y="2" Z="17" S="1497" T="701" R="166" G="0" B="89" A="255"/>
+ <Vtx X="9" Y="-21" Z="5" S="1051" T="1030" R="68" G="218" B="101" A="255"/>
+ <Vtx X="15" Y="-17" Z="-1" S="764" T="974" R="104" G="218" B="63" A="255"/>
+ <Vtx X="22" Y="-3" Z="-9" S="419" T="774" R="123" G="226" B="247" A="255"/>
+ <Vtx X="19" Y="-14" Z="-10" S="456" T="940" R="116" G="220" B="38" A="255"/>
+ <Vtx X="-9" Y="25" Z="5" S="1066" T="354" R="220" G="98" B="72" A="255"/>
+ <Vtx X="-12" Y="2" Z="12" S="1080" T="692" R="184" G="48" B="93" A="255"/>
+ <Vtx X="-9" Y="-21" Z="5" S="1051" T="1030" R="188" G="218" B="101" A="255"/>
+ <Vtx X="-15" Y="-17" Z="-1" S="764" T="974" R="152" G="218" B="63" A="255"/>
+ <Vtx X="-22" Y="-3" Z="-9" S="419" T="774" R="133" G="226" B="247" A="255"/>
+ <Vtx X="-19" Y="-14" Z="-10" S="456" T="940" R="140" G="220" B="38" A="255"/>
+ <Vtx X="0" Y="-24" Z="8" S="1335" T="1095" R="0" G="150" B="70" A="255"/>
+ <Vtx X="0" Y="2" Z="17" S="1497" T="688" R="166" G="0" B="89" A="255"/>
+ <Vtx X="0" Y="29" Z="8" S="1353" T="291" R="0" G="106" B="70" A="255"/>
+ <Vtx X="-12" Y="2" Z="12" S="1080" T="692" R="184" G="48" B="93" A="255"/>
+ <Vtx X="0" Y="2" Z="17" S="1497" T="701" R="166" G="0" B="89" A="255"/>
+ <Vtx X="0" Y="-24" Z="8" S="1335" T="1095" R="0" G="150" B="70" A="255"/>
+ <Vtx X="9" Y="-21" Z="5" S="1051" T="1030" R="68" G="218" B="101" A="255"/>
+ <Vtx X="12" Y="2" Z="12" S="1080" T="692" R="70" G="48" B="94" A="255"/>
+ <Vtx X="0" Y="2" Z="17" S="1497" T="688" R="166" G="0" B="89" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_2 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_2
new file mode 100644
index 000000000..516ff3d81
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_2
@@ -0,0 +1,54 @@
+<Vertex Version="0">
+ <Vtx X="-19" Y="12" Z="2" S="371" T="693" R="147" G="44" B="48" A="255"/>
+ <Vtx X="-17" Y="16" Z="1" S="432" T="998" R="155" G="51" B="56" A="255"/>
+ <Vtx X="-21" Y="14" Z="-8" S="1955" T="1006" R="144" G="50" B="32" A="255"/>
+ <Vtx X="-23" Y="10" Z="-8" S="2063" T="627" R="140" G="38" B="36" A="255"/>
+ <Vtx X="-20" Y="6" Z="4" S="311" T="3" R="136" G="14" B="39" A="255"/>
+ <Vtx X="-24" Y="5" Z="-8" S="2066" T="-54" R="136" G="14" B="39" A="255"/>
+ <Vtx X="-11" Y="14" Z="10" S="-218" T="672" R="179" G="53" B="86" A="255"/>
+ <Vtx X="-10" Y="19" Z="8" S="-113" T="1003" R="184" G="53" B="90" A="255"/>
+ <Vtx X="-17" Y="16" Z="1" S="1281" T="998" R="155" G="51" B="56" A="255"/>
+ <Vtx X="-19" Y="12" Z="2" S="1221" T="693" R="147" G="44" B="48" A="255"/>
+ <Vtx X="-19" Y="-8" Z="2" S="1746" T="-673" R="147" G="212" B="48" A="255"/>
+ <Vtx X="-23" Y="-6" Z="-8" S="1763" T="1032" R="140" G="218" B="36" A="255"/>
+ <Vtx X="-21" Y="-9" Z="-8" S="2000" T="912" R="144" G="206" B="32" A="255"/>
+ <Vtx X="-17" Y="-11" Z="1" S="1981" T="-623" R="155" G="205" B="56" A="255"/>
+ <Vtx X="-11" Y="-10" Z="10" S="-725" T="687" R="179" G="203" B="86" A="255"/>
+ <Vtx X="-10" Y="-14" Z="8" S="-724" T="951" R="184" G="203" B="90" A="255"/>
+ <Vtx X="0" Y="-20" Z="11" S="602" T="953" R="198" G="202" B="99" A="255"/>
+ <Vtx X="0" Y="-13" Z="15" S="625" T="553" R="198" G="202" B="99" A="255"/>
+ <Vtx X="-20" Y="6" Z="4" S="415" T="-691" R="136" G="14" B="39" A="255"/>
+ <Vtx X="-24" Y="5" Z="-8" S="518" T="1044" R="136" G="14" B="39" A="255"/>
+ <Vtx X="-24" Y="-1" Z="-8" S="1165" T="1051" R="136" G="242" B="39" A="255"/>
+ <Vtx X="-20" Y="-1" Z="4" S="1193" T="-685" R="136" G="242" B="39" A="255"/>
+ <Vtx X="-11" Y="-10" Z="10" S="1417" T="687" R="179" G="203" B="86" A="255"/>
+ <Vtx X="-19" Y="-8" Z="2" S="174" T="735" R="147" G="212" B="48" A="255"/>
+ <Vtx X="-17" Y="-11" Z="1" S="140" T="953" R="155" G="205" B="56" A="255"/>
+ <Vtx X="-10" Y="-14" Z="8" S="1416" T="951" R="184" G="203" B="90" A="255"/>
+ <Vtx X="19" Y="12" Z="2" S="371" T="693" R="109" G="44" B="48" A="255"/>
+ <Vtx X="21" Y="14" Z="-8" S="1955" T="1006" R="112" G="50" B="32" A="255"/>
+ <Vtx X="17" Y="16" Z="1" S="432" T="998" R="101" G="51" B="56" A="255"/>
+ <Vtx X="23" Y="10" Z="-8" S="2063" T="627" R="116" G="38" B="36" A="255"/>
+ <Vtx X="20" Y="6" Z="4" S="311" T="3" R="120" G="14" B="39" A="255"/>
+ <Vtx X="24" Y="5" Z="-8" S="2066" T="-54" R="120" G="14" B="39" A="255"/>
+ <Vtx X="11" Y="14" Z="10" S="-218" T="672" R="77" G="53" B="86" A="255"/>
+ <Vtx X="19" Y="12" Z="2" S="1221" T="693" R="109" G="44" B="48" A="255"/>
+ <Vtx X="17" Y="16" Z="1" S="1281" T="998" R="101" G="51" B="56" A="255"/>
+ <Vtx X="10" Y="19" Z="8" S="-113" T="1003" R="72" G="53" B="90" A="255"/>
+ <Vtx X="19" Y="-8" Z="2" S="1746" T="-673" R="109" G="212" B="48" A="255"/>
+ <Vtx X="17" Y="-11" Z="1" S="1981" T="-623" R="101" G="205" B="56" A="255"/>
+ <Vtx X="21" Y="-9" Z="-8" S="2000" T="912" R="112" G="206" B="32" A="255"/>
+ <Vtx X="23" Y="-6" Z="-8" S="1763" T="1032" R="116" G="219" B="36" A="255"/>
+ <Vtx X="11" Y="-10" Z="10" S="-725" T="687" R="77" G="203" B="86" A="255"/>
+ <Vtx X="0" Y="-13" Z="15" S="625" T="553" R="58" G="202" B="99" A="255"/>
+ <Vtx X="0" Y="-20" Z="11" S="602" T="953" R="58" G="202" B="99" A="255"/>
+ <Vtx X="10" Y="-14" Z="8" S="-724" T="951" R="72" G="203" B="90" A="255"/>
+ <Vtx X="20" Y="6" Z="4" S="416" T="-709" R="120" G="14" B="39" A="255"/>
+ <Vtx X="20" Y="-1" Z="4" S="1182" T="-749" R="120" G="242" B="38" A="255"/>
+ <Vtx X="24" Y="-1" Z="-8" S="1165" T="1051" R="120" G="242" B="38" A="255"/>
+ <Vtx X="24" Y="5" Z="-8" S="518" T="1044" R="120" G="14" B="39" A="255"/>
+ <Vtx X="11" Y="-10" Z="10" S="1417" T="687" R="77" G="203" B="86" A="255"/>
+ <Vtx X="10" Y="-14" Z="8" S="1416" T="951" R="72" G="203" B="90" A="255"/>
+ <Vtx X="17" Y="-11" Z="1" S="140" T="953" R="101" G="205" B="56" A="255"/>
+ <Vtx X="19" Y="-8" Z="2" S="174" T="735" R="109" G="212" B="48" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_3 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_3
new file mode 100644
index 000000000..b8a57d348
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_3
@@ -0,0 +1,18 @@
+<Vertex Version="0">
+ <Vtx X="-11" Y="14" Z="10" S="218" T="678" R="179" G="53" B="86" A="255"/>
+ <Vtx X="0" Y="18" Z="15" S="-1235" T="436" R="198" G="54" B="99" A="255"/>
+ <Vtx X="0" Y="25" Z="11" S="-1118" T="1007" R="198" G="54" B="99" A="255"/>
+ <Vtx X="-10" Y="19" Z="8" S="182" T="999" R="184" G="53" B="90" A="255"/>
+ <Vtx X="-20" Y="-1" Z="4" S="1142" T="-694" R="136" G="242" B="39" A="255"/>
+ <Vtx X="-24" Y="-1" Z="-8" S="1161" T="1051" R="136" G="242" B="39" A="255"/>
+ <Vtx X="-23" Y="-6" Z="-8" S="1763" T="1032" R="140" G="218" B="36" A="255"/>
+ <Vtx X="-19" Y="-8" Z="2" S="1746" T="-613" R="147" G="212" B="48" A="255"/>
+ <Vtx X="11" Y="14" Z="10" S="218" T="678" R="77" G="53" B="86" A="255"/>
+ <Vtx X="10" Y="19" Z="8" S="182" T="999" R="72" G="53" B="90" A="255"/>
+ <Vtx X="0" Y="25" Z="11" S="-1118" T="1007" R="58" G="54" B="99" A="255"/>
+ <Vtx X="0" Y="18" Z="15" S="-1235" T="436" R="58" G="54" B="99" A="255"/>
+ <Vtx X="20" Y="-1" Z="4" S="1120" T="-754" R="120" G="242" B="38" A="255"/>
+ <Vtx X="19" Y="-8" Z="2" S="1746" T="-613" R="109" G="212" B="48" A="255"/>
+ <Vtx X="23" Y="-6" Z="-8" S="1763" T="1032" R="116" G="219" B="36" A="255"/>
+ <Vtx X="24" Y="-1" Z="-8" S="1161" T="1051" R="120" G="242" B="38" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_4 b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_4
new file mode 100644
index 000000000..8100ac493
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_4
@@ -0,0 +1,14 @@
+<Vertex Version="0">
+ <Vtx X="0" Y="-10" Z="16" S="495" T="495" R="65" G="224" B="104" A="255"/>
+ <Vtx X="6" Y="2" Z="16" S="495" T="-529" R="65" G="224" B="104" A="255"/>
+ <Vtx X="0" Y="2" Z="19" S="-17" T="-17" R="65" G="224" B="104" A="255"/>
+ <Vtx X="0" Y="14" Z="16" S="-529" T="-529" R="191" G="32" B="104" A="255"/>
+ <Vtx X="-6" Y="2" Z="16" S="-529" T="495" R="191" G="32" B="104" A="255"/>
+ <Vtx X="0" Y="2" Z="19" S="-17" T="-17" R="191" G="32" B="104" A="255"/>
+ <Vtx X="6" Y="2" Z="16" S="495" T="-529" R="65" G="32" B="104" A="255"/>
+ <Vtx X="0" Y="14" Z="16" S="-529" T="-529" R="65" G="32" B="104" A="255"/>
+ <Vtx X="0" Y="2" Z="19" S="-17" T="-17" R="65" G="32" B="104" A="255"/>
+ <Vtx X="-6" Y="2" Z="16" S="-529" T="495" R="191" G="224" B="104" A="255"/>
+ <Vtx X="0" Y="-10" Z="16" S="495" T="495" R="191" G="224" B="104" A="255"/>
+ <Vtx X="0" Y="2" Z="19" S="-17" T="-17" R="191" G="224" B="104" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_2_layerOpaque b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_2_layerOpaque
new file mode 100644
index 000000000..e2b27b004
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_2_layerOpaque
@@ -0,0 +1,20 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_TEXEL0" 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_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="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_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_DECAL2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/object_gi_gloves/object_gi_glovesTex_000000" 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="0" ShiftS="0" MaskT="0" ShiftT="0"/>
+ <LoadSync/>
+ <LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256" />
+ <PipeSync/>
+ <SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_MIRROR" Cmt0="G_TX_CLAMP" Cmt1="G_TX_NOMIRROR" MaskS="6" ShiftS="0" MaskT="5" ShiftT="0"/>
+ <SetTileSize T="0" Uls="0" Ult="0" Lrs="252" Lrt="124"/>
+ <SetPrimColor M="0" L="0" R="67" G="66" B="90" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_layerOpaque b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_layerOpaque
new file mode 100644
index 000000000..08df73907
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_layerOpaque
@@ -0,0 +1,20 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_TEXEL0" 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_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="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_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_DECAL2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/object_gi_gloves/object_gi_glovesTex_000000" 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="0" ShiftS="0" MaskT="0" ShiftT="0"/>
+ <LoadSync/>
+ <LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256" />
+ <PipeSync/>
+ <SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_MIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="6" ShiftS="0" MaskT="5" ShiftT="0"/>
+ <SetTileSize T="0" Uls="0" Ult="0" Lrs="252" Lrt="124"/>
+ <SetPrimColor M="0" L="0" R="67" G="66" B="90" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_gem_layerOpaque b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_gem_layerOpaque
new file mode 100644
index 000000000..8908fe473
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_gem_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="1984" T="1984" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="38" G="0" B="78" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown10Tex" 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="0" ShiftS="0" MaskT="0" 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="176" G="42" B="0" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_layerOpaque b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_layerOpaque
new file mode 100644
index 000000000..a1854c96b
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="3295" T="3295" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="0" G="33" B="78" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown11Tex" 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="0" ShiftS="0" MaskT="0" 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="206" G="206" B="206" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_leather_layerOpaque b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_leather_layerOpaque
new file mode 100644
index 000000000..d68b2b765
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_leather_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1" G_TEXTURE_GEN="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="55" G="24" B="0" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown10Tex" 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="0" ShiftS="0" MaskT="0" 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="116" G="66" B="0" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_grab/gGiGrabDL b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL
new file mode 100644
index 000000000..6f82b6856
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL
@@ -0,0 +1,12 @@
+<DisplayList Version="0">
+ <CallDisplayList Path="objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_0"/>
+ <CallDisplayList Path="objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_accent_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_1"/>
+ <CallDisplayList Path="objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_gem_layerOpaque"/>
+ <CallDisplayList Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_2"/>
+ <ClearGeometryMode G_LIGHTING="1"/>
+ <SetGeometryMode G_LIGHTING="1"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_0 b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_0
new file mode 100644
index 000000000..ab6a7f5cc
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_0
@@ -0,0 +1,80 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="2" V02="3"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="4" V01="6" V02="7"/>
+ <Triangle1 V00="8" V01="9" V02="10"/>
+ <Triangle1 V00="8" V01="11" V02="9"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="15" V02="13"/>
+ <Triangle1 V00="16" V01="15" V02="12"/>
+ <Triangle1 V00="16" V01="12" V02="17"/>
+ <Triangle1 V00="17" V01="12" V02="18"/>
+ <Triangle1 V00="18" V01="12" V02="14"/>
+ <Triangle1 V00="18" V01="14" V02="19"/>
+ <Triangle1 V00="17" V01="18" V02="20"/>
+ <Triangle1 V00="21" V01="13" V02="15"/>
+ <Triangle1 V00="21" V01="22" V02="13"/>
+ <Triangle1 V00="23" V01="22" V02="21"/>
+ <Triangle1 V00="24" V01="23" V02="21"/>
+ <Triangle1 V00="16" V01="24" V02="21"/>
+ <Triangle1 V00="16" V01="21" V02="15"/>
+ <Triangle1 V00="24" V01="25" V02="23"/>
+ <Triangle1 V00="23" V01="26" V02="22"/>
+ <Triangle1 V00="27" V01="28" V02="29"/>
+ <Triangle1 V00="27" V01="30" V02="28"/>
+ <Triangle1 V00="31" V01="30" V02="27"/>
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="30"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="2" V01="1" V02="3"/>
+ <Triangle1 V00="2" V01="3" V02="4"/>
+ <Triangle1 V00="5" V01="2" V02="4"/>
+ <Triangle1 V00="5" V01="4" V02="6"/>
+ <Triangle1 V00="5" V01="6" V02="7"/>
+ <Triangle1 V00="5" V01="7" V02="8"/>
+ <Triangle1 V00="8" V01="7" V02="9"/>
+ <Triangle1 V00="8" V01="9" V02="10"/>
+ <Triangle1 V00="11" V01="8" V02="10"/>
+ <Triangle1 V00="11" V01="12" V02="8"/>
+ <Triangle1 V00="12" V01="5" V02="8"/>
+ <Triangle1 V00="12" V01="13" V02="5"/>
+ <Triangle1 V00="14" V01="15" V02="16"/>
+ <Triangle1 V00="14" V01="17" V02="15"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="20" V02="21"/>
+ <Triangle1 V00="20" V01="22" V02="21"/>
+ <Triangle1 V00="20" V01="23" V02="22"/>
+ <Triangle1 V00="24" V01="25" V02="26"/>
+ <Triangle1 V00="24" V01="26" V02="27"/>
+ <Triangle1 V00="28" V01="24" V02="27"/>
+ <Triangle1 V00="28" V01="29" V02="24"/>
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="62" Count="30"/>
+ <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="5" V02="0"/>
+ <Triangle1 V00="6" V01="7" V02="8"/>
+ <Triangle1 V00="6" V01="8" V02="9"/>
+ <Triangle1 V00="10" V01="6" V02="9"/>
+ <Triangle1 V00="10" V01="11" V02="6"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="14" V02="15"/>
+ <Triangle1 V00="16" V01="12" V02="15"/>
+ <Triangle1 V00="16" V01="17" V02="12"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="20" V02="21"/>
+ <Triangle1 V00="20" V01="22" V02="21"/>
+ <Triangle1 V00="20" V01="23" V02="22"/>
+ <Triangle1 V00="24" V01="25" V02="26"/>
+ <Triangle1 V00="24" V01="26" V02="27"/>
+ <Triangle1 V00="26" V01="28" V02="27"/>
+ <Triangle1 V00="26" V01="29" V02="28"/>
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0" VertexBufferIndex="0" VertexOffset="92" Count="6"/>
+ <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"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_1 b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_1
new file mode 100644
index 000000000..edbc12e4a
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_1
@@ -0,0 +1,71 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="30"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="0" V01="3" V02="1"/>
+ <Triangle1 V00="4" V01="3" V02="0"/>
+ <Triangle1 V00="4" V01="0" V02="5"/>
+ <Triangle1 V00="6" V01="7" V02="8"/>
+ <Triangle1 V00="6" V01="9" V02="7"/>
+ <Triangle1 V00="10" V01="9" V02="6"/>
+ <Triangle1 V00="10" V01="6" V02="11"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="15" V02="13"/>
+ <Triangle1 V00="13" V01="15" V02="16"/>
+ <Triangle1 V00="13" V01="16" V02="17"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="21" V02="19"/>
+ <Triangle1 V00="19" V01="21" V02="22"/>
+ <Triangle1 V00="19" V01="22" V02="23"/>
+ <Triangle1 V00="24" V01="25" V02="26"/>
+ <Triangle1 V00="24" V01="27" V02="25"/>
+ <Triangle1 V00="28" V01="27" V02="24"/>
+ <Triangle1 V00="28" V01="24" V02="29"/>
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_1" VertexBufferIndex="0" VertexOffset="30" Count="32"/>
+ <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="4" V02="5"/>
+ <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="10" V01="11" V02="12"/>
+ <Triangle1 V00="10" V01="12" V02="13"/>
+ <Triangle1 V00="14" V01="13" V02="12"/>
+ <Triangle1 V00="14" V01="12" V02="15"/>
+ <Triangle1 V00="14" V01="15" V02="16"/>
+ <Triangle1 V00="14" V01="16" V02="17"/>
+ <Triangle1 V00="18" V01="17" V02="16"/>
+ <Triangle1 V00="18" V01="16" V02="19"/>
+ <Triangle1 V00="20" V01="21" V02="22"/>
+ <Triangle1 V00="20" V01="22" V02="23"/>
+ <Triangle1 V00="20" V01="23" V02="24"/>
+ <Triangle1 V00="20" V01="24" V02="25"/>
+ <Triangle1 V00="26" V01="27" V02="28"/>
+ <Triangle1 V00="26" V01="28" V02="29"/>
+ <Triangle1 V00="28" V01="30" V02="29"/>
+ <Triangle1 V00="28" V01="31" V02="30"/>
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_1" VertexBufferIndex="0" VertexOffset="62" Count="30"/>
+ <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="5" V02="0"/>
+ <Triangle1 V00="6" V01="7" V02="8"/>
+ <Triangle1 V00="6" V01="8" V02="9"/>
+ <Triangle1 V00="8" V01="10" V02="9"/>
+ <Triangle1 V00="8" V01="11" V02="10"/>
+ <Triangle1 V00="12" V01="13" V02="14"/>
+ <Triangle1 V00="12" V01="14" V02="15"/>
+ <Triangle1 V00="16" V01="12" V02="15"/>
+ <Triangle1 V00="16" V01="17" V02="12"/>
+ <Triangle1 V00="18" V01="19" V02="20"/>
+ <Triangle1 V00="18" V01="20" V02="21"/>
+ <Triangle1 V00="22" V01="18" V02="21"/>
+ <Triangle1 V00="22" V01="23" V02="18"/>
+ <Triangle1 V00="24" V01="25" V02="26"/>
+ <Triangle1 V00="24" V01="26" V02="27"/>
+ <Triangle1 V00="26" V01="28" V02="27"/>
+ <Triangle1 V00="26" V01="29" V02="28"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_2 b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_2
new file mode 100644
index 000000000..24d4e1228
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_2
@@ -0,0 +1,29 @@
+<DisplayList Version="0">
+ <LoadVertices Path="objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="23"/>
+ <Triangle1 V00="0" V01="1" V02="2"/>
+ <Triangle1 V00="3" V01="0" V02="2"/>
+ <Triangle1 V00="4" V01="3" V02="2"/>
+ <Triangle1 V00="5" V01="4" V02="2"/>
+ <Triangle1 V00="4" V01="5" V02="6"/>
+ <Triangle1 V00="7" V01="4" V02="6"/>
+ <Triangle1 V00="7" V01="6" V02="8"/>
+ <Triangle1 V00="6" V01="9" V02="8"/>
+ <Triangle1 V00="9" V01="6" V02="10"/>
+ <Triangle1 V00="11" V01="9" V02="10"/>
+ <Triangle1 V00="11" V01="10" V02="12"/>
+ <Triangle1 V00="10" V01="13" V02="12"/>
+ <Triangle1 V00="7" V01="8" V02="14"/>
+ <Triangle1 V00="14" V01="8" V02="15"/>
+ <Triangle1 V00="15" V01="16" V02="14"/>
+ <Triangle1 V00="17" V01="16" V02="15"/>
+ <Triangle1 V00="17" V01="18" V02="16"/>
+ <Triangle1 V00="16" V01="18" V02="19"/>
+ <Triangle1 V00="7" V01="14" V02="4"/>
+ <Triangle1 V00="4" V01="14" V02="20"/>
+ <Triangle1 V00="20" V01="21" V02="4"/>
+ <Triangle1 V00="4" V01="21" V02="3"/>
+ <Triangle1 V00="3" V01="21" V02="0"/>
+ <Triangle1 V00="0" V01="21" V02="22"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0 b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0
new file mode 100644
index 000000000..9d353378f
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0
@@ -0,0 +1,100 @@
+<Vertex Version="0">
+ <Vtx X="26" Y="17" Z="-25" S="-529" T="495" R="84" G="52" B="175" A="255"/>
+ <Vtx X="26" Y="15" Z="-20" S="-529" T="495" R="122" G="33" B="11" A="255"/>
+ <Vtx X="29" Y="0" Z="-28" S="-529" T="495" R="89" G="28" B="170" A="255"/>
+ <Vtx X="21" Y="15" Z="-25" S="-529" T="495" R="250" G="33" B="134" A="255"/>
+ <Vtx X="29" Y="0" Z="-28" S="-529" T="495" R="191" G="166" B="62" A="255"/>
+ <Vtx X="26" Y="15" Z="-20" S="-529" T="495" R="39" G="199" B="106" A="255"/>
+ <Vtx X="21" Y="11" Z="-20" S="-529" T="495" R="198" G="157" B="56" A="255"/>
+ <Vtx X="21" Y="15" Z="-25" S="-529" T="495" R="151" G="199" B="213" A="255"/>
+ <Vtx X="24" Y="-22" Z="-23" S="-529" T="495" R="78" G="190" B="180" A="255"/>
+ <Vtx X="28" Y="-5" Z="-27" S="-529" T="495" R="86" G="213" B="173" A="255"/>
+ <Vtx X="25" Y="-19" Z="-19" S="-529" T="495" R="119" G="213" B="14" A="255"/>
+ <Vtx X="19" Y="-19" Z="-24" S="-529" T="495" R="246" G="213" B="137" A="255"/>
+ <Vtx X="-6" Y="-8" Z="5" S="-529" T="495" R="85" G="48" B="174" A="255"/>
+ <Vtx X="-6" Y="1" Z="17" S="-529" T="495" R="127" G="250" B="251" A="255"/>
+ <Vtx X="-5" Y="-10" Z="15" S="-529" T="495" R="124" G="27" B="5" A="255"/>
+ <Vtx X="-7" Y="1" Z="7" S="-529" T="495" R="91" G="248" B="168" A="255"/>
+ <Vtx X="-17" Y="1" Z="6" S="-529" T="495" R="9" G="250" B="129" A="255"/>
+ <Vtx X="-16" Y="-10" Z="5" S="-529" T="495" R="255" G="27" B="132" A="255"/>
+ <Vtx X="-3" Y="-13" Z="3" S="-529" T="495" R="69" G="84" B="190" A="255"/>
+ <Vtx X="-1" Y="-20" Z="11" S="-529" T="495" R="109" G="61" B="21" A="255"/>
+ <Vtx X="-11" Y="-20" Z="1" S="-529" T="495" R="239" G="61" B="146" A="255"/>
+ <Vtx X="-5" Y="8" Z="5" S="-529" T="495" R="80" G="194" B="179" A="255"/>
+ <Vtx X="-4" Y="12" Z="15" S="-529" T="495" R="121" G="218" B="8" A="255"/>
+ <Vtx X="-2" Y="14" Z="2" S="-529" T="495" R="61" G="161" B="197" A="255"/>
+ <Vtx X="-15" Y="12" Z="4" S="-529" T="495" R="252" G="218" B="135" A="255"/>
+ <Vtx X="-9" Y="21" Z="-1" S="-529" T="495" R="233" G="188" B="152" A="255"/>
+ <Vtx X="1" Y="21" Z="9" S="-529" T="495" R="104" G="188" B="27" A="255"/>
+ <Vtx X="-16" Y="-10" Z="5" S="-529" T="495" R="133" G="223" B="255" A="255"/>
+ <Vtx X="-17" Y="1" Z="16" S="-529" T="495" R="165" G="8" B="88" A="255"/>
+ <Vtx X="-17" Y="1" Z="6" S="-529" T="495" R="129" G="6" B="5" A="255"/>
+ <Vtx X="-15" Y="-13" Z="14" S="-529" T="495" R="171" G="210" B="82" A="255"/>
+ <Vtx X="-11" Y="-20" Z="1" S="-529" T="495" R="145" G="198" B="234" A="255"/>
+ <Vtx X="-11" Y="-20" Z="1" S="-529" T="495" R="145" G="198" B="234" A="255"/>
+ <Vtx X="-9" Y="-27" Z="9" S="-529" T="495" R="192" G="165" B="62" A="255"/>
+ <Vtx X="-15" Y="-13" Z="14" S="-529" T="495" R="171" G="210" B="82" A="255"/>
+ <Vtx X="-1" Y="-20" Z="11" S="-529" T="495" R="18" G="198" B="111" A="255"/>
+ <Vtx X="-5" Y="-10" Z="15" S="-529" T="495" R="252" G="223" B="123" A="255"/>
+ <Vtx X="-17" Y="1" Z="16" S="-529" T="495" R="165" G="8" B="88" A="255"/>
+ <Vtx X="-6" Y="1" Z="17" S="-529" T="495" R="246" G="6" B="126" A="255"/>
+ <Vtx X="-4" Y="12" Z="15" S="-529" T="495" R="0" G="44" B="119" A="255"/>
+ <Vtx X="-13" Y="15" Z="13" S="-529" T="495" R="176" G="60" B="78" A="255"/>
+ <Vtx X="1" Y="21" Z="9" S="-529" T="495" R="24" G="66" B="106" A="255"/>
+ <Vtx X="-7" Y="28" Z="7" S="-529" T="495" R="200" G="101" B="54" A="255"/>
+ <Vtx X="-9" Y="21" Z="-1" S="-529" T="495" R="151" G="66" B="228" A="255"/>
+ <Vtx X="-15" Y="12" Z="4" S="-529" T="495" R="137" G="44" B="252" A="255"/>
+ <Vtx X="-17" Y="1" Z="6" S="-529" T="495" R="129" G="6" B="5" A="255"/>
+ <Vtx X="28" Y="-5" Z="-27" S="-529" T="495" R="200" G="100" B="54" A="255"/>
+ <Vtx X="20" Y="-15" Z="-19" S="-529" T="495" R="208" G="108" B="47" A="255"/>
+ <Vtx X="25" Y="-19" Z="-19" S="-529" T="495" R="44" G="62" B="101" A="255"/>
+ <Vtx X="19" Y="-19" Z="-24" S="-529" T="495" R="156" G="62" B="208" A="255"/>
+ <Vtx X="24" Y="19" Z="-17" S="-529" T="495" R="46" G="191" B="99" A="255"/>
+ <Vtx X="17" Y="26" Z="-8" S="-529" T="495" R="62" G="184" B="85" A="255"/>
+ <Vtx X="12" Y="17" Z="-12" S="-529" T="495" R="235" G="132" B="20" A="255"/>
+ <Vtx X="17" Y="14" Z="-17" S="-529" T="495" R="213" G="144" B="42" A="255"/>
+ <Vtx X="18" Y="19" Z="-23" S="-529" T="495" R="158" G="191" B="207" A="255"/>
+ <Vtx X="9" Y="26" Z="-17" S="-529" T="495" R="174" G="184" B="191" A="255"/>
+ <Vtx X="-3" Y="30" Z="3" S="-529" T="495" R="229" G="121" B="26" A="255"/>
+ <Vtx X="4" Y="23" Z="6" S="-529" T="495" R="50" G="80" B="85" A="255"/>
+ <Vtx X="13" Y="26" Z="-4" S="-529" T="495" R="66" G="84" B="68" A="255"/>
+ <Vtx X="10" Y="33" Z="-9" S="-529" T="495" R="2" G="127" B="254" A="255"/>
+ <Vtx X="5" Y="26" Z="-13" S="-529" T="495" R="190" G="84" B="188" A="255"/>
+ <Vtx X="-5" Y="23" Z="-4" S="-529" T="495" R="173" G="80" B="203" A="255"/>
+ <Vtx X="8" Y="18" Z="-8" S="-529" T="495" R="12" G="130" B="244" A="255"/>
+ <Vtx X="13" Y="26" Z="-4" S="-529" T="495" R="76" G="179" B="67" A="255"/>
+ <Vtx X="4" Y="23" Z="6" S="-529" T="495" R="88" G="178" B="47" A="255"/>
+ <Vtx X="2" Y="16" Z="-2" S="-529" T="495" R="33" G="137" B="225" A="255"/>
+ <Vtx X="-5" Y="23" Z="-4" S="-529" T="495" R="213" G="178" B="166" A="255"/>
+ <Vtx X="5" Y="26" Z="-13" S="-529" T="495" R="192" G="179" B="178" A="255"/>
+ <Vtx X="24" Y="22" Z="-23" S="-529" T="495" R="67" G="87" B="192" A="255"/>
+ <Vtx X="18" Y="19" Z="-23" S="-529" T="495" R="235" G="61" B="146" A="255"/>
+ <Vtx X="9" Y="26" Z="-17" S="-529" T="495" R="216" G="78" B="164" A="255"/>
+ <Vtx X="13" Y="32" Z="-13" S="-529" T="495" R="34" G="118" B="223" A="255"/>
+ <Vtx X="17" Y="26" Z="-8" S="-529" T="495" R="91" G="78" B="43" A="255"/>
+ <Vtx X="24" Y="19" Z="-17" S="-529" T="495" R="109" G="61" B="25" A="255"/>
+ <Vtx X="10" Y="-19" Z="-10" S="-529" T="495" R="246" G="126" B="9" A="255"/>
+ <Vtx X="15" Y="-28" Z="-6" S="-529" T="495" R="68" G="73" B="78" A="255"/>
+ <Vtx X="22" Y="-22" Z="-15" S="-529" T="495" R="51" G="69" B="94" A="255"/>
+ <Vtx X="16" Y="-17" Z="-15" S="-529" T="495" R="223" G="118" B="32" A="255"/>
+ <Vtx X="16" Y="-22" Z="-22" S="-529" T="495" R="164" G="69" B="201" A="255"/>
+ <Vtx X="7" Y="-28" Z="-14" S="-529" T="495" R="180" G="73" B="185" A="255"/>
+ <Vtx X="11" Y="-27" Z="-2" S="-529" T="495" R="58" G="172" B="76" A="255"/>
+ <Vtx X="2" Y="-23" Z="8" S="-529" T="495" R="43" G="179" B="92" A="255"/>
+ <Vtx X="-6" Y="-30" Z="6" S="-529" T="495" R="218" G="140" B="36" A="255"/>
+ <Vtx X="7" Y="-34" Z="-6" S="-529" T="495" R="247" G="130" B="9" A="255"/>
+ <Vtx X="2" Y="-27" Z="-11" S="-529" T="495" R="183" G="172" B="195" A="255"/>
+ <Vtx X="-8" Y="-23" Z="-2" S="-529" T="495" R="166" G="179" B="210" A="255"/>
+ <Vtx X="2" Y="-23" Z="8" S="-529" T="495" R="95" G="74" B="40" A="255"/>
+ <Vtx X="11" Y="-27" Z="-2" S="-529" T="495" R="83" G="75" B="60" A="255"/>
+ <Vtx X="6" Y="-19" Z="-6" S="-529" T="495" R="23" G="123" B="234" A="255"/>
+ <Vtx X="0" Y="-16" Z="0" S="-529" T="495" R="43" G="112" B="215" A="255"/>
+ <Vtx X="-8" Y="-23" Z="-2" S="-529" T="495" R="219" G="74" B="160" A="255"/>
+ <Vtx X="2" Y="-27" Z="-11" S="-529" T="495" R="199" G="75" B="171" A="255"/>
+ <Vtx X="7" Y="-28" Z="-14" S="-529" T="495" R="209" G="174" B="171" A="255"/>
+ <Vtx X="16" Y="-22" Z="-22" S="-529" T="495" R="230" G="188" B="152" A="255"/>
+ <Vtx X="21" Y="-26" Z="-21" S="-529" T="495" R="58" G="158" B="200" A="255"/>
+ <Vtx X="11" Y="-34" Z="-10" S="-529" T="495" R="23" G="133" B="234" A="255"/>
+ <Vtx X="15" Y="-28" Z="-6" S="-529" T="495" R="83" G="174" B="50" A="255"/>
+ <Vtx X="22" Y="-22" Z="-15" S="-529" T="495" R="103" G="188" B="30" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_1 b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_1
new file mode 100644
index 000000000..3ca19c5f0
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_1
@@ -0,0 +1,94 @@
+<Vertex Version="0">
+ <Vtx X="-7" Y="28" Z="7" S="-529" T="495" R="200" G="101" B="54" A="255"/>
+ <Vtx X="-5" Y="23" Z="-4" S="-529" T="495" R="173" G="80" B="203" A="255"/>
+ <Vtx X="-9" Y="21" Z="-1" S="-529" T="495" R="151" G="66" B="228" A="255"/>
+ <Vtx X="-3" Y="30" Z="3" S="-529" T="495" R="229" G="121" B="26" A="255"/>
+ <Vtx X="4" Y="23" Z="6" S="-529" T="495" R="50" G="80" B="85" A="255"/>
+ <Vtx X="1" Y="21" Z="9" S="-529" T="495" R="24" G="66" B="106" A="255"/>
+ <Vtx X="10" Y="33" Z="-9" S="-529" T="495" R="2" G="127" B="254" A="255"/>
+ <Vtx X="9" Y="26" Z="-17" S="-529" T="495" R="216" G="78" B="164" A="255"/>
+ <Vtx X="5" Y="26" Z="-13" S="-529" T="495" R="190" G="84" B="188" A="255"/>
+ <Vtx X="13" Y="32" Z="-13" S="-529" T="495" R="34" G="118" B="223" A="255"/>
+ <Vtx X="17" Y="26" Z="-8" S="-529" T="495" R="91" G="78" B="43" A="255"/>
+ <Vtx X="13" Y="26" Z="-4" S="-529" T="495" R="66" G="84" B="68" A="255"/>
+ <Vtx X="18" Y="19" Z="-23" S="-529" T="495" R="235" G="61" B="146" A="255"/>
+ <Vtx X="26" Y="17" Z="-25" S="-529" T="495" R="84" G="52" B="175" A="255"/>
+ <Vtx X="21" Y="15" Z="-25" S="-529" T="495" R="250" G="33" B="134" A="255"/>
+ <Vtx X="24" Y="22" Z="-23" S="-529" T="495" R="67" G="87" B="192" A="255"/>
+ <Vtx X="24" Y="19" Z="-17" S="-529" T="495" R="109" G="61" B="25" A="255"/>
+ <Vtx X="26" Y="15" Z="-20" S="-529" T="495" R="122" G="33" B="11" A="255"/>
+ <Vtx X="2" Y="-27" Z="-11" S="-529" T="495" R="199" G="75" B="171" A="255"/>
+ <Vtx X="10" Y="-19" Z="-10" S="-529" T="495" R="246" G="126" B="9" A="255"/>
+ <Vtx X="7" Y="-28" Z="-14" S="-529" T="495" R="180" G="73" B="185" A="255"/>
+ <Vtx X="6" Y="-19" Z="-6" S="-529" T="495" R="23" G="123" B="234" A="255"/>
+ <Vtx X="11" Y="-27" Z="-2" S="-529" T="495" R="83" G="75" B="60" A="255"/>
+ <Vtx X="15" Y="-28" Z="-6" S="-529" T="495" R="68" G="73" B="78" A="255"/>
+ <Vtx X="20" Y="-15" Z="-19" S="-529" T="495" R="208" G="108" B="47" A="255"/>
+ <Vtx X="22" Y="-22" Z="-15" S="-529" T="495" R="51" G="69" B="94" A="255"/>
+ <Vtx X="25" Y="-19" Z="-19" S="-529" T="495" R="44" G="62" B="101" A="255"/>
+ <Vtx X="16" Y="-17" Z="-15" S="-529" T="495" R="223" G="118" B="32" A="255"/>
+ <Vtx X="16" Y="-22" Z="-22" S="-529" T="495" R="164" G="69" B="201" A="255"/>
+ <Vtx X="19" Y="-19" Z="-24" S="-529" T="495" R="156" G="62" B="208" A="255"/>
+ <Vtx X="2" Y="-23" Z="8" S="-529" T="495" R="95" G="74" B="40" A="255"/>
+ <Vtx X="-3" Y="-13" Z="3" S="-529" T="495" R="69" G="84" B="190" A="255"/>
+ <Vtx X="-1" Y="-20" Z="11" S="-529" T="495" R="109" G="61" B="21" A="255"/>
+ <Vtx X="0" Y="-16" Z="0" S="-529" T="495" R="43" G="112" B="215" A="255"/>
+ <Vtx X="-8" Y="-23" Z="-2" S="-529" T="495" R="219" G="74" B="160" A="255"/>
+ <Vtx X="-11" Y="-20" Z="1" S="-529" T="495" R="239" G="61" B="146" A="255"/>
+ <Vtx X="-17" Y="8" Z="8" S="367" T="-98" R="162" G="64" B="200" A="255"/>
+ <Vtx X="-15" Y="8" Z="5" S="367" T="-145" R="164" G="54" B="186" A="255"/>
+ <Vtx X="-17" Y="1" Z="6" S="239" T="-145" R="151" G="2" B="185" A="255"/>
+ <Vtx X="-19" Y="1" Z="8" S="239" T="-98" R="147" G="2" B="191" A="255"/>
+ <Vtx X="-18" Y="-6" Z="8" S="111" T="-98" R="156" G="196" B="205" A="255"/>
+ <Vtx X="-16" Y="-6" Z="6" S="111" T="-145" R="160" G="205" B="191" A="255"/>
+ <Vtx X="-15" Y="-10" Z="14" S="-17" T="-145" R="216" G="142" B="39" A="255"/>
+ <Vtx X="-16" Y="-9" Z="16" S="-17" T="-81" R="204" G="151" B="50" A="255"/>
+ <Vtx X="-9" Y="-6" Z="18" S="111" T="-98" R="47" G="196" B="101" A="255"/>
+ <Vtx X="-6" Y="-6" Z="16" S="111" T="-145" R="62" G="205" B="99" A="255"/>
+ <Vtx X="-7" Y="1" Z="17" S="239" T="-145" R="68" G="2" B="107" A="255"/>
+ <Vtx X="-9" Y="1" Z="18" S="239" T="-98" R="61" G="2" B="112" A="255"/>
+ <Vtx X="-8" Y="8" Z="17" S="367" T="-98" R="53" G="64" B="96" A="255"/>
+ <Vtx X="-6" Y="8" Z="15" S="367" T="-145" R="66" G="54" B="94" A="255"/>
+ <Vtx X="-14" Y="13" Z="13" S="-17" T="367" R="226" G="120" B="29" A="255"/>
+ <Vtx X="-15" Y="8" Z="5" S="111" T="367" R="164" G="54" B="186" A="255"/>
+ <Vtx X="-17" Y="8" Z="8" S="111" T="321" R="162" G="64" B="200" A="255"/>
+ <Vtx X="-15" Y="12" Z="15" S="-17" T="303" R="214" G="113" B="41" A="255"/>
+ <Vtx X="-8" Y="8" Z="17" S="111" T="321" R="53" G="64" B="96" A="255"/>
+ <Vtx X="-6" Y="8" Z="15" S="111" T="367" R="66" G="54" B="94" A="255"/>
+ <Vtx X="5" Y="26" Z="-13" S="-529" T="495" R="192" G="179" B="178" A="255"/>
+ <Vtx X="9" Y="26" Z="-17" S="-529" T="495" R="174" G="184" B="191" A="255"/>
+ <Vtx X="12" Y="17" Z="-12" S="-529" T="495" R="235" G="132" B="20" A="255"/>
+ <Vtx X="8" Y="18" Z="-8" S="-529" T="495" R="12" G="130" B="244" A="255"/>
+ <Vtx X="13" Y="26" Z="-4" S="-529" T="495" R="76" G="179" B="67" A="255"/>
+ <Vtx X="17" Y="26" Z="-8" S="-529" T="495" R="62" G="184" B="85" A="255"/>
+ <Vtx X="21" Y="11" Z="-20" S="-529" T="495" R="198" G="157" B="56" A="255"/>
+ <Vtx X="26" Y="15" Z="-20" S="-529" T="495" R="39" G="199" B="106" A="255"/>
+ <Vtx X="24" Y="19" Z="-17" S="-529" T="495" R="46" G="191" B="99" A="255"/>
+ <Vtx X="17" Y="14" Z="-17" S="-529" T="495" R="213" G="144" B="42" A="255"/>
+ <Vtx X="18" Y="19" Z="-23" S="-529" T="495" R="158" G="191" B="207" A="255"/>
+ <Vtx X="21" Y="15" Z="-25" S="-529" T="495" R="151" G="199" B="213" A="255"/>
+ <Vtx X="4" Y="23" Z="6" S="-529" T="495" R="88" G="178" B="47" A="255"/>
+ <Vtx X="1" Y="21" Z="9" S="-529" T="495" R="104" G="188" B="27" A="255"/>
+ <Vtx X="-2" Y="14" Z="2" S="-529" T="495" R="61" G="161" B="197" A="255"/>
+ <Vtx X="2" Y="16" Z="-2" S="-529" T="495" R="33" G="137" B="225" A="255"/>
+ <Vtx X="-5" Y="23" Z="-4" S="-529" T="495" R="213" G="178" B="166" A="255"/>
+ <Vtx X="-9" Y="21" Z="-1" S="-529" T="495" R="233" G="188" B="152" A="255"/>
+ <Vtx X="-9" Y="-27" Z="9" S="-529" T="495" R="192" G="165" B="62" A="255"/>
+ <Vtx X="-11" Y="-20" Z="1" S="-529" T="495" R="145" G="198" B="234" A="255"/>
+ <Vtx X="-8" Y="-23" Z="-2" S="-529" T="495" R="166" G="179" B="210" A="255"/>
+ <Vtx X="-6" Y="-30" Z="6" S="-529" T="495" R="218" G="140" B="36" A="255"/>
+ <Vtx X="2" Y="-23" Z="8" S="-529" T="495" R="43" G="179" B="92" A="255"/>
+ <Vtx X="-1" Y="-20" Z="11" S="-529" T="495" R="18" G="198" B="111" A="255"/>
+ <Vtx X="7" Y="-34" Z="-6" S="-529" T="495" R="247" G="130" B="9" A="255"/>
+ <Vtx X="2" Y="-27" Z="-11" S="-529" T="495" R="183" G="172" B="195" A="255"/>
+ <Vtx X="7" Y="-28" Z="-14" S="-529" T="495" R="209" G="174" B="171" A="255"/>
+ <Vtx X="11" Y="-34" Z="-10" S="-529" T="495" R="23" G="133" B="234" A="255"/>
+ <Vtx X="15" Y="-28" Z="-6" S="-529" T="495" R="83" G="174" B="50" A="255"/>
+ <Vtx X="11" Y="-27" Z="-2" S="-529" T="495" R="58" G="172" B="76" A="255"/>
+ <Vtx X="16" Y="-22" Z="-22" S="-529" T="495" R="230" G="188" B="152" A="255"/>
+ <Vtx X="19" Y="-19" Z="-24" S="-529" T="495" R="246" G="213" B="137" A="255"/>
+ <Vtx X="24" Y="-22" Z="-23" S="-529" T="495" R="78" G="190" B="180" A="255"/>
+ <Vtx X="21" Y="-26" Z="-21" S="-529" T="495" R="58" G="158" B="200" A="255"/>
+ <Vtx X="22" Y="-22" Z="-15" S="-529" T="495" R="103" G="188" B="30" A="255"/>
+ <Vtx X="25" Y="-19" Z="-19" S="-529" T="495" R="119" G="213" B="14" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_2 b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_2
new file mode 100644
index 000000000..6aed39e1e
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_2
@@ -0,0 +1,25 @@
+<Vertex Version="0">
+ <Vtx X="-15" Y="12" Z="15" S="-17" T="303" R="214" G="113" B="41" A="255"/>
+ <Vtx X="-17" Y="8" Z="8" S="111" T="321" R="162" G="64" B="200" A="255"/>
+ <Vtx X="-20" Y="8" Z="14" S="111" T="239" R="146" G="63" B="250" A="255"/>
+ <Vtx X="-18" Y="9" Z="17" S="-17" T="239" R="184" G="78" B="70" A="255"/>
+ <Vtx X="-20" Y="2" Z="19" S="-17" T="111" R="165" G="8" B="88" A="255"/>
+ <Vtx X="-22" Y="2" Z="14" S="111" T="111" R="129" G="5" B="247" A="255"/>
+ <Vtx X="-20" Y="-5" Z="14" S="111" T="-17" R="141" G="203" B="255" A="255"/>
+ <Vtx X="-19" Y="-6" Z="18" S="-17" T="-17" R="177" G="191" B="76" A="255"/>
+ <Vtx X="-16" Y="-9" Z="16" S="-17" T="-81" R="204" G="151" B="50" A="255"/>
+ <Vtx X="-18" Y="-6" Z="8" S="111" T="-98" R="156" G="196" B="205" A="255"/>
+ <Vtx X="-22" Y="2" Z="14" S="239" T="-17" R="129" G="5" B="247" A="255"/>
+ <Vtx X="-19" Y="1" Z="8" S="239" T="-98" R="147" G="2" B="191" A="255"/>
+ <Vtx X="-17" Y="8" Z="8" S="367" T="-98" R="162" G="64" B="200" A="255"/>
+ <Vtx X="-20" Y="8" Z="14" S="367" T="-17" R="146" G="63" B="250" A="255"/>
+ <Vtx X="-15" Y="-5" Z="20" S="111" T="-17" R="253" G="203" B="115" A="255"/>
+ <Vtx X="-9" Y="-6" Z="18" S="111" T="-98" R="47" G="196" B="101" A="255"/>
+ <Vtx X="-15" Y="2" Z="21" S="239" T="-17" R="5" G="5" B="127" A="255"/>
+ <Vtx X="-9" Y="1" Z="18" S="239" T="-98" R="61" G="2" B="112" A="255"/>
+ <Vtx X="-8" Y="8" Z="17" S="367" T="-98" R="53" G="64" B="96" A="255"/>
+ <Vtx X="-14" Y="8" Z="19" S="367" T="-17" R="2" G="63" B="110" A="255"/>
+ <Vtx X="-15" Y="2" Z="21" S="111" T="111" R="5" G="5" B="127" A="255"/>
+ <Vtx X="-14" Y="8" Z="19" S="111" T="239" R="2" G="63" B="110" A="255"/>
+ <Vtx X="-8" Y="8" Z="17" S="111" T="321" R="53" G="64" B="96" A="255"/>
+</Vertex>
diff --git a/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_accent_layerOpaque b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_accent_layerOpaque
new file mode 100644
index 000000000..d792132a9
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_accent_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="1984" T="1984" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="135" G="33" B="0" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown11Tex" 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="0" ShiftS="0" MaskT="0" 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="247" B="201" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_gem_layerOpaque b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_gem_layerOpaque
new file mode 100644
index 000000000..9c39f0510
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_gem_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="1984" T="1984" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="0" G="49" B="79" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown11Tex" 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="0" ShiftS="0" MaskT="0" 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>
+
diff --git a/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_layerOpaque b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_layerOpaque
new file mode 100644
index 000000000..53634fa60
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_layerOpaque
@@ -0,0 +1,21 @@
+<DisplayList Version="0">
+ <PipeSync/>
+ <SetCombineLERP A0="G_CCMUX_PRIMITIVE" B0="G_CCMUX_ENVIRONMENT" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_ENVIRONMENT" 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_SHADE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
+ <SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
+ <ClearGeometryMode G_CULL_FRONT="1" G_LOD="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
+ <SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
+ <Texture S="1984" T="1984" Level="0" Tile="0" On="1"/>
+ <SetEnvColor R="45" G="0" B="72" A="255"/>
+ <TileSync/>
+ <SetTextureImage Path="objects/gameplay_keep/gEffUnknown11Tex" 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="0" ShiftS="0" MaskT="0" 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="206" G="0" B="69" A="255"/>
+ <EndDisplayList/>
+</DisplayList>
+
diff --git a/soh/assets/custom/textures/icon_item_static/gClimbTex.rgba32.png b/soh/assets/custom/textures/icon_item_static/gClimbTex.rgba32.png
new file mode 100644
index 000000000..d990715a2
--- /dev/null
+++ b/soh/assets/custom/textures/icon_item_static/gClimbTex.rgba32.png
Binary files differ
diff --git a/soh/assets/custom/textures/icon_item_static/gCrawlTex.rgba32.png b/soh/assets/custom/textures/icon_item_static/gCrawlTex.rgba32.png
new file mode 100644
index 000000000..81c16592d
--- /dev/null
+++ b/soh/assets/custom/textures/icon_item_static/gCrawlTex.rgba32.png
Binary files differ
diff --git a/soh/assets/custom/textures/icon_item_static/gGrabTex.rgba32.png b/soh/assets/custom/textures/icon_item_static/gGrabTex.rgba32.png
new file mode 100644
index 000000000..01215fd2f
--- /dev/null
+++ b/soh/assets/custom/textures/icon_item_static/gGrabTex.rgba32.png
Binary files differ
diff --git a/soh/assets/custom/textures/icon_item_static/gOpenChestsTex.rgba32.png b/soh/assets/custom/textures/icon_item_static/gOpenChestsTex.rgba32.png
new file mode 100644
index 000000000..089eb5b57
--- /dev/null
+++ b/soh/assets/custom/textures/icon_item_static/gOpenChestsTex.rgba32.png
Binary files differ
diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h
index aa7599273..a384f1953 100644
--- a/soh/assets/soh_assets.h
+++ b/soh/assets/soh_assets.h
@@ -194,6 +194,18 @@ static const ALIGN_ASSET(2) char gGiZoraJabbernutDL[] = dgGiZoraJabbernutDL;
#define dgGiFishingPoleDL "__OTR__objects/object_gi_fishing_pole/gGiFishingPoleDL"
static const ALIGN_ASSET(2) char gGiFishingPoleDL[] = dgGiFishingPoleDL;
+#define dgGiClimbDL "__OTR__objects/object_gi_climb/gGiClimbDL"
+static const ALIGN_ASSET(2) char gGiClimbDL[] = dgGiClimbDL;
+
+#define dgGiCrawlDL "__OTR__objects/object_gi_crawl/gGiCrawlDL"
+static const ALIGN_ASSET(2) char gGiCrawlDL[] = dgGiCrawlDL;
+
+#define dgGiOpenChestsDL "__OTR__objects/object_gi_chest/gGiOpenChestsDL"
+static const ALIGN_ASSET(2) char gGiOpenChestsDL[] = dgGiOpenChestsDL;
+
+#define dgGiGrabDL "__OTR__objects/object_gi_grab/gGiGrabDL"
+static const ALIGN_ASSET(2) char gGiGrabDL[] = dgGiGrabDL;
+
#define dgMysteryItemDL "__OTR__objects/object_mystery_item/gMysteryItemDL"
static const ALIGN_ASSET(2) char gMysteryItemDL[] = dgMysteryItemDL;
@@ -491,6 +503,18 @@ static const ALIGN_ASSET(2) char gFileSelLanguageGERTex[] = dgFileSelLanguageGER
#define dgRocsFeatherTex "__OTR__textures/icon_item_static/gRocsFeatherTex"
static const ALIGN_ASSET(2) char gRocsFeatherTex[] = dgRocsFeatherTex;
+#define dgCrawlTex "__OTR__textures/icon_item_static/gCrawlTex"
+static const ALIGN_ASSET(2) char gCrawlTex[] = dgCrawlTex;
+
+#define dgClimbTex "__OTR__textures/icon_item_static/gClimbTex"
+static const ALIGN_ASSET(2) char gClimbTex[] = dgClimbTex;
+
+#define dgOpenChestsTex "__OTR__textures/icon_item_static/gOpenChestsTex"
+static const ALIGN_ASSET(2) char gOpenChestsTex[] = dgOpenChestsTex;
+
+#define dgGrabTex "__OTR__textures/icon_item_static/gGrabTex"
+static const ALIGN_ASSET(2) char gGrabTex[] = dgGrabTex;
+
#define dgRocsFeatherItemNameENGTex "__OTR__textures/item_name_static/gRocsFeatherItemNameENGTex"
static const ALIGN_ASSET(2) char gRocsFeatherItemNameENGTex[] = dgRocsFeatherItemNameENGTex;
diff --git a/soh/soh/Enhancements/randomizer/draw.cpp b/soh/soh/Enhancements/randomizer/draw.cpp
index ff7fc3b75..fe16e5b10 100644
--- a/soh/soh/Enhancements/randomizer/draw.cpp
+++ b/soh/soh/Enhancements/randomizer/draw.cpp
@@ -1135,10 +1135,7 @@ extern "C" void Randomizer_DrawPowerBracelet(PlayState* play, GetItemEntry* getI
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
G_MTX_MODELVIEW | G_MTX_LOAD);
- gSPGrayscale(POLY_OPA_DISP++, true);
- gDPSetGrayscaleColor(POLY_OPA_DISP++, 80, 80, 80, 255);
- gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiGoronBraceletDL);
- gSPGrayscale(POLY_OPA_DISP++, false);
+ gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiGrabDL);
CLOSE_DISPS(play->state.gfxCtx);
}
@@ -1147,16 +1144,11 @@ extern "C" void Randomizer_DrawLadder(PlayState* play, GetItemEntry* getItemEntr
OPEN_DISPS(play->state.gfxCtx);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
- gSPSegment(POLY_OPA_DISP++, 0x08, (uintptr_t)gMoriHashiraTex);
- Matrix_Translate(0, -30, 0, MTXMODE_APPLY);
- Matrix_Scale(1.0f, 0.25f, 1.0f, MTXMODE_APPLY);
- gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gMoriHashigoLadderDL);
+ gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
+ G_MTX_MODELVIEW | G_MTX_LOAD);
- Matrix_RotateY(M_PIf, MTXMODE_APPLY);
- gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gMoriHashigoLadderDL);
+ gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiClimbDL);
CLOSE_DISPS(play->state.gfxCtx);
}
@@ -1165,15 +1157,11 @@ extern "C" void Randomizer_DrawKneePads(PlayState* play, GetItemEntry* getItemEn
OPEN_DISPS(play->state.gfxCtx);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
- Matrix_Translate(-35, -5, 0, MTXMODE_APPLY);
- Matrix_Scale(0.4f, 0.8f, 1.2f, MTXMODE_APPLY);
- gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
- gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiDekuShieldDL);
- Gfx_SetupDL_25Opa(play->state.gfxCtx);
- Matrix_Translate(35, -7, 4, MTXMODE_APPLY);
- gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
- gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiDekuShieldDL);
+ gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
+ G_MTX_MODELVIEW | G_MTX_LOAD);
+
+ gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiCrawlDL);
CLOSE_DISPS(play->state.gfxCtx);
}
@@ -1228,54 +1216,15 @@ extern "C" void Randomizer_DrawJabberNut(PlayState* play, GetItemEntry* getItemE
CLOSE_DISPS(play->state.gfxCtx);
}
-static Gfx* boxLidDL;
-static Gfx* boxBodyDL;
-extern "C" void EnBox_PostLimbDrawOverride(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
- Gfx** gfx = (Gfx**)thisx;
- if (limbIndex == 1) {
- gSPMatrix((*gfx)++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gSPDisplayList((*gfx)++, boxBodyDL);
- } else if (limbIndex == 3) {
- gSPMatrix((*gfx)++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gSPDisplayList((*gfx)++, boxLidDL);
- }
-}
-
-extern "C" Gfx* EnBox_EmptyDList(GraphicsContext* gfxCtx);
-#define LIMB_COUNT_CHEST 5
extern "C" void Randomizer_DrawOpenChest(PlayState* play, GetItemEntry* getItemEntry) {
- static bool initialized = false;
- static SkelAnime skelAnime;
- static Vec3s jointTable[LIMB_COUNT_CHEST];
- static Vec3s otherTable[LIMB_COUNT_CHEST];
- static u32 lastUpdate = 0;
-
- if (!initialized) {
- initialized = true;
- boxBodyDL = ResourceMgr_LoadGfxByName((const char*)gTreasureChestChestFrontDL);
- boxLidDL = ResourceMgr_LoadGfxByName((const char*)gTreasureChestChestSideAndLidDL);
- SkelAnime_Init(play, &skelAnime, (SkeletonHeader*)&gTreasureChestSkel,
- (AnimationHeader*)&gTreasureChestAnim_00024C, jointTable, otherTable, LIMB_COUNT_CHEST);
-
- // no closing animation to loop, so play animation back & forth for smooth loop
- Animation_PlayOnce(&skelAnime, (AnimationHeader*)&gTreasureChestAnim_00043C);
- }
-
- if (lastUpdate != play->state.frames) {
- lastUpdate = play->state.frames;
- if (SkelAnime_Update(&skelAnime)) {
- Animation_Reverse(&skelAnime);
- }
- }
-
OPEN_DISPS(play->state.gfxCtx);
- Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY);
- gDPPipeSync(POLY_OPA_DISP++);
- gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255);
- gSPSegment(POLY_OPA_DISP++, 0x08, (uintptr_t)EnBox_EmptyDList(play->state.gfxCtx));
Gfx_SetupDL_25Opa(play->state.gfxCtx);
- SkelAnime_DrawSkeletonOpa(play, &skelAnime, nullptr, (PostLimbDrawOpa)EnBox_PostLimbDrawOverride, &POLY_OPA_DISP);
+
+ gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
+ G_MTX_MODELVIEW | G_MTX_LOAD);
+
+ gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiOpenChestsDL);
CLOSE_DISPS(play->state.gfxCtx);
}
@@ -1290,8 +1239,6 @@ extern "C" void Randomizer_DrawFishingPoleGI(PlayState* play, GetItemEntry* getI
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiFishingPoleDL);
- Matrix_Pop();
-
CLOSE_DISPS(play->state.gfxCtx);
}
diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp
index e28d3057a..378df39b5 100644
--- a/soh/soh/Enhancements/randomizer/item_list.cpp
+++ b/soh/soh/Enhancements/randomizer/item_list.cpp
@@ -393,13 +393,13 @@ void Rando::StaticData::InitItemTable() {
itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, Text{ "Bronze Scale", "Écaille de Bronze", "Bronzene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_NONE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, {"the ", "l'", "die "});
itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale);
- itemTable[RG_POWER_BRACELET] = Item(RG_POWER_BRACELET, Text{ "Power Bracelet", "Bracelets de Force", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_NONE, RHT_NONE, RG_POWER_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, {"the ", "les ", TODO_TRANSLATE}).CustomIcon(gItemIconGoronsBraceletTex);
+ itemTable[RG_POWER_BRACELET] = Item(RG_POWER_BRACELET, Text{ "Power Bracelet", "Bracelets de Force", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_NONE, RHT_NONE, RG_POWER_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, {"the ", "les ", TODO_TRANSLATE}).CustomIcon(gGrabTex);
itemTable[RG_POWER_BRACELET].SetCustomDrawFunc(Randomizer_DrawPowerBracelet);
- itemTable[RG_CLIMB] = Item(RG_CLIMB, Text{ "Climb", "Grimper", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_NONE, RHT_CLIMB, RG_CLIMB, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
+ itemTable[RG_CLIMB] = Item(RG_CLIMB, Text{ "Climb", "Grimper", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_NONE, RHT_CLIMB, RG_CLIMB, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER).CustomIcon(gClimbTex);
itemTable[RG_CLIMB].SetCustomDrawFunc(Randomizer_DrawLadder);
- itemTable[RG_CRAWL] = Item(RG_CRAWL, Text{ "Crawl", "Ramper", "Kriechen" }, ITEMTYPE_ITEM, GI_SHIELD_DEKU, true, LOGIC_NONE, RHT_CRAWL, RG_CRAWL, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
+ itemTable[RG_CRAWL] = Item(RG_CRAWL, Text{ "Crawl", "Ramper", "Kriechen" }, ITEMTYPE_ITEM, GI_SHIELD_DEKU, true, LOGIC_NONE, RHT_CRAWL, RG_CRAWL, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER).CustomIcon(gCrawlTex);
itemTable[RG_CRAWL].SetCustomDrawFunc(Randomizer_DrawKneePads);
- itemTable[RG_OPEN_CHEST] = Item(RG_OPEN_CHEST, Text{ "Open Chests", "Ouvrir des coffres", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_KEY_SMALL, true, LOGIC_NONE, RHT_OPEN_CHEST, RG_OPEN_CHEST, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
+ itemTable[RG_OPEN_CHEST] = Item(RG_OPEN_CHEST, Text{ "Open Chests", "Ouvrir des coffres", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_KEY_SMALL, true, LOGIC_NONE, RHT_OPEN_CHEST, RG_OPEN_CHEST, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER).CustomIcon(gOpenChestsTex);
itemTable[RG_OPEN_CHEST].SetCustomDrawFunc(Randomizer_DrawOpenChest);
itemTable[RG_PROGRESSIVE_BOMBCHU_BAG] = Item(RG_PROGRESSIVE_BOMBCHU_BAG, Text{ "Bombchu Bag", "Sac de Missiles Teigneux", "Krabbelminentasche" }, ITEMTYPE_ITEM, RG_PROGRESSIVE_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, RG_PROGRESSIVE_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, {"a ", "un ", "eine "}).CustomIcon(gItemIconBombchuTex);
diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp
index ddd9435e9..48657c29c 100644
--- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp
+++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp
@@ -1275,7 +1275,7 @@ void DrawItem(ItemTrackerItem item) {
ImGui::PopStyleColor();
}
- if (item.id >= RG_BRONZE_SCALE && item.id <= RG_OPEN_CHEST) {
+ if (item.id == RG_BRONZE_SCALE) {
ImVec2 p = ImGui::GetCursorScreenPos();
ImGui::SetCursorScreenPos(
ImVec2(p.x + (iconSize / 2) - (ImGui::CalcTextSize(itemName.c_str()).x / 2), p.y - (iconSize + 2)));
diff --git a/soh/soh/SohGui/ImGuiUtils.cpp b/soh/soh/SohGui/ImGuiUtils.cpp
index 8cf657910..eedac81c0 100644
--- a/soh/soh/SohGui/ImGuiUtils.cpp
+++ b/soh/soh/SohGui/ImGuiUtils.cpp
@@ -152,13 +152,13 @@ std::map<uint32_t, ItemMapEntry> customItemsMapping = {
{ RG_BONGO_BONGO_SOUL, { RG_BONGO_BONGO_SOUL, "RG_BONGO_BONGO_SOUL", "RG_BONGO_BONGO_SOUL_Faded", gBossSoulTex } },
{ RG_TWINROVA_SOUL, { RG_TWINROVA_SOUL, "RG_TWINROVA_SOUL", "RG_TWINROVA_SOUL_Faded", gBossSoulTex } },
{ RG_GANON_SOUL, { RG_GANON_SOUL, "RG_GANON_SOUL", "RG_GANON_SOUL_Faded", gBossSoulTex } },
- { RG_OPEN_CHEST, { RG_OPEN_CHEST, "RG_OPEN_CHEST", "RG_OPEN_CHEST_Faded", gMapChestIconTex } }
-};
-
-std::map<uint32_t, ItemMapEntry> actionShuffleMapping = {
- { RG_CRAWL, { RG_CRAWL, "RG_CRAWL", "RG_CRAWL_Faded", gButtonBackgroundTex } },
- { RG_CLIMB, { RG_CLIMB, "RG_CLIMB", "RG_CLIMB_Faded", gButtonBackgroundTex } },
- { RG_POWER_BRACELET, { RG_POWER_BRACELET, "RG_POWER_BRACELET", "RG_POWER_BRACELET_Faded", gButtonBackgroundTex } },
+ { RG_OPEN_CHEST, { RG_OPEN_CHEST, "RG_OPEN_CHEST", "RG_OPEN_CHEST_Faded", gOpenChestsTex } },
+ { RG_CRAWL, { RG_CRAWL, "RG_CRAWL", "RG_CRAWL_Faded", gCrawlTex } },
+ { RG_CLIMB, { RG_CLIMB, "RG_CLIMB", "RG_CLIMB_Faded", gClimbTex } },
+ {
+ RG_POWER_BRACELET,
+ { RG_POWER_BRACELET, "RG_POWER_BRACELET", "RG_POWER_BRACELET_Faded", gGrabTex },
+ },
};
std::map<uint32_t, ItemMapEntry> jabbernutMapping = {
@@ -235,16 +235,6 @@ void RegisterImGuiItemIcons() {
->LoadGuiTexture(entry.second.nameFaded, entry.second.texturePath, gregFadedGreen);
}
- for (const auto& entry : actionShuffleMapping) {
- ImVec4 aButtonBlue = ImVec4(90.f / 255.f, 90.f / 250.f, 255.f / 255.f, 255.f / 255.f);
- ImVec4 aButtonBlueFaded = aButtonBlue;
- aButtonBlueFaded.w = 0.3f;
- std::dynamic_pointer_cast<Fast::Fast3dGui>(Ship::Context::GetRawInstance()->GetWindow()->GetGui())
- ->LoadGuiTexture(entry.second.name, entry.second.texturePath, aButtonBlue);
- std::dynamic_pointer_cast<Fast::Fast3dGui>(Ship::Context::GetRawInstance()->GetWindow()->GetGui())
- ->LoadGuiTexture(entry.second.nameFaded, entry.second.texturePath, aButtonBlueFaded);
- }
-
for (const auto& entry : customItemsMapping) {
std::dynamic_pointer_cast<Fast::Fast3dGui>(Ship::Context::GetRawInstance()->GetWindow()->GetGui())
->LoadGuiTexture(entry.second.name, entry.second.texturePath, ImVec4(1, 1, 1, 1));