diff --git a/soh/assets/custom/objects/gameplay_keep/gChestLockTex b/soh/assets/custom/objects/gameplay_keep/gChestLockTex
new file mode 100644
index 0000000000..30764d0bd2
Binary files /dev/null and b/soh/assets/custom/objects/gameplay_keep/gChestLockTex 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 0000000000..6bbdd4b8df
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..85a14b138f
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_0
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..c3ad8b733c
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_1
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..6369197552
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_tri_2
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
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 0000000000..8fb82b99cf
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_0
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..dde8c515c1
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_1
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..e73e84204e
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_layer_Opaque_vtx_2
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
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 0000000000..f8fef42d69
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_tri_0
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
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 0000000000..16e2a50300
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/gGiOpenChestsDL_mesh_layer_Transparent_vtx_0
@@ -0,0 +1,6 @@
+
+
+
+
+
+
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 0000000000..4c581c418e
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_frame_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..719a61294c
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_inside_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..c44a43bf20
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..0e87e1fa2d
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_chest/mat_gGiOpenChestsDL_chest_lock_layerTransparent
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..69b8b36d01
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
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 0000000000..551563c91f
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_tri_0
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..18675e007b
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/gGiClimbDL_layer_Opaque_vtx_0
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..4c75266a93
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_climb/mat_gGiClimbDL_ladder_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..beb4fbe283
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..4237974301
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_0
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..7b025597cb
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_1
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..98f24ac28d
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_2
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..13e49ce177
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_3
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..c478443349
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_tri_4
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
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 0000000000..3f02189098
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_0
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..c5029d5985
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_1
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..516ff3d812
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_2
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..b8a57d3485
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_3
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..8100ac4935
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/gGiCrawlDL_layer_Opaque_vtx_4
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..e2b27b004a
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_2_layerOpaque
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..08df739078
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_decal_layerOpaque
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..8908fe4738
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_gem_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..a1854c96b4
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..d68b2b7656
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_crawl/mat_gGiCrawlDL_kneepad_leather_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..6f82b68561
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..ab6a7f5ccb
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_0
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..edbc12e4a5
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_1
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..24d4e12286
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_tri_2
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..9d353378fa
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_0
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..3ca19c5f0b
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_1
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..6aed39e1ec
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/gGiGrabDL_layer_Opaque_vtx_2
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..d792132a9d
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_accent_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..9c39f05105
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_gem_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..53634fa609
--- /dev/null
+++ b/soh/assets/custom/objects/object_gi_grab/mat_gGiGrabDL_power_bracelet_layerOpaque
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..d990715a21
Binary files /dev/null and b/soh/assets/custom/textures/icon_item_static/gClimbTex.rgba32.png 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 0000000000..81c16592db
Binary files /dev/null and b/soh/assets/custom/textures/icon_item_static/gCrawlTex.rgba32.png 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 0000000000..01215fd2f6
Binary files /dev/null and b/soh/assets/custom/textures/icon_item_static/gGrabTex.rgba32.png 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 0000000000..089eb5b574
Binary files /dev/null and b/soh/assets/custom/textures/icon_item_static/gOpenChestsTex.rgba32.png differ
diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h
index aa75992736..a384f19537 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 ff7fc3b750..fe16e5b10e 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 e28d3057a6..378df39b5e 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 ddd9435e95..48657c29c4 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 8cf6579106..eedac81c07 100644
--- a/soh/soh/SohGui/ImGuiUtils.cpp
+++ b/soh/soh/SohGui/ImGuiUtils.cpp
@@ -152,13 +152,13 @@ std::map 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 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 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(Ship::Context::GetRawInstance()->GetWindow()->GetGui())
- ->LoadGuiTexture(entry.second.name, entry.second.texturePath, aButtonBlue);
- std::dynamic_pointer_cast(Ship::Context::GetRawInstance()->GetWindow()->GetGui())
- ->LoadGuiTexture(entry.second.nameFaded, entry.second.texturePath, aButtonBlueFaded);
- }
-
for (const auto& entry : customItemsMapping) {
std::dynamic_pointer_cast(Ship::Context::GetRawInstance()->GetWindow()->GetGui())
->LoadGuiTexture(entry.second.name, entry.second.texturePath, ImVec4(1, 1, 1, 1));