diff --git a/soh/assets/.gitignore b/soh/assets/.gitignore
index dce395e6f..d75078bf1 100644
--- a/soh/assets/.gitignore
+++ b/soh/assets/.gitignore
@@ -4,4 +4,4 @@
*.cfg
*.vtx.inc
*.dlist.inc
-*.txt
\ No newline at end of file
+!*.png
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/PotBaseNoise_8 b/soh/assets/custom/objects/gameplay_dangeon_keep/PotBaseNoise_8
new file mode 100644
index 000000000..a278fcdff
Binary files /dev/null and b/soh/assets/custom/objects/gameplay_dangeon_keep/PotBaseNoise_8 differ
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/PotFaceNoise_16 b/soh/assets/custom/objects/gameplay_dangeon_keep/PotFaceNoise_16
new file mode 100644
index 000000000..302172ec0
Binary files /dev/null and b/soh/assets/custom/objects/gameplay_dangeon_keep/PotFaceNoise_16 differ
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL
new file mode 100644
index 000000000..f1e794a96
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_0 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_0
new file mode 100644
index 000000000..e3d576ab5
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_0
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_1 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_1
new file mode 100644
index 000000000..9e3577c30
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_1
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_2 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_2
new file mode 100644
index 000000000..957020e99
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_2
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_3 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_3
new file mode 100644
index 000000000..7b2e00037
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_3
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_4 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_4
new file mode 100644
index 000000000..554a34e4b
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_tri_4
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0
new file mode 100644
index 000000000..88f1059c3
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1
new file mode 100644
index 000000000..2de2afee7
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_2 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_2
new file mode 100644
index 000000000..6683ff1d2
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_2
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_3 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_3
new file mode 100644
index 000000000..4394fa228
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_3
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_4 b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_4
new file mode 100644
index 000000000..2ef56105a
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/gRandoPotDL_vtx_4
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbase b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbase
new file mode 100644
index 000000000..6c4a0fdee
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbase
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbottom b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbottom
new file mode 100644
index 000000000..e69179046
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbottom
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potface b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potface
new file mode 100644
index 000000000..a1a6346ee
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potface
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potrim b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potrim
new file mode 100644
index 000000000..3c56bbc96
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potrim
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potvoid b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potvoid
new file mode 100644
index 000000000..d39d1af92
--- /dev/null
+++ b/soh/assets/custom/objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potvoid
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h
index 16a2f5cd0..340383147 100644
--- a/soh/assets/soh_assets.h
+++ b/soh/assets/soh_assets.h
@@ -59,6 +59,9 @@ static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCo
#define dgBossSoulSkullDL "__OTR__objects/object_boss_soul/gGIBossSoulSkullDL"
static const ALIGN_ASSET(2) char gBossSoulSkullDL[] = dgBossSoulSkullDL;
+#define dgRandoPotDL "__OTR__objects/gameplay_dangeon_keep/gRandoPotDL"
+static const ALIGN_ASSET(2) char gRandoPotDL[] = dgRandoPotDL;
+
// overlays
#define dgOptionsDividerChangeLangVtx "__OTR__overlays/ovl_file_choose/gOptionsDividerChangeLangVtx"
static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx;
diff --git a/soh/assets/sources/potshuffle/MysteryPot.blend b/soh/assets/sources/potshuffle/MysteryPot.blend
new file mode 100644
index 000000000..a84fe623e
Binary files /dev/null and b/soh/assets/sources/potshuffle/MysteryPot.blend differ
diff --git a/soh/assets/sources/potshuffle/PotBaseNoise_8.png b/soh/assets/sources/potshuffle/PotBaseNoise_8.png
new file mode 100644
index 000000000..db1d6e91e
Binary files /dev/null and b/soh/assets/sources/potshuffle/PotBaseNoise_8.png differ
diff --git a/soh/assets/sources/potshuffle/PotFaceNoise_16.png b/soh/assets/sources/potshuffle/PotFaceNoise_16.png
new file mode 100644
index 000000000..57834bb55
Binary files /dev/null and b/soh/assets/sources/potshuffle/PotFaceNoise_16.png differ
diff --git a/soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c b/soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
index f32021910..9bd463e43 100644
--- a/soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
+++ b/soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
@@ -8,6 +8,7 @@
#include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h"
#include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#include "objects/object_tsubo/object_tsubo.h"
+#include "soh_assets.h"
#define FLAGS (ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_ALWAYS_THROWN)
@@ -167,15 +168,9 @@ void ObjTsubo_Init(Actor* thisx, PlayState* play) {
ObjTsubo_SetupWaitForObject(this);
osSyncPrintf("(dungeon keep 壷)(arg_data 0x%04x)\n", this->actor.params);
}
- if (IS_RANDO) {
+ if (IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_POTS)) {
this->potIdentity = Randomizer_IdentifyPot(play->sceneNum, (s16)this->actor.world.pos.x,
(s16)this->actor.world.pos.y, (s16)this->actor.world.pos.z);
-
- if (ObjTsubo_HoldsRandomizedItem(this, play)) {
- this->actor.scale.x = 0.1f;
- this->actor.scale.y = 0.1f;
- this->actor.scale.z = 0.1f;
- }
}
}
@@ -374,5 +369,20 @@ void ObjTsubo_Update(Actor* thisx, PlayState* play) {
}
void ObjTsubo_Draw(Actor* thisx, PlayState* play) {
- Gfx_DrawDListOpa(play, D_80BA1B84[(thisx->params >> 8) & 1]);
+ ObjTsubo* this = (ObjTsubo*)thisx;
+
+ if (IS_RANDO && ObjTsubo_HoldsRandomizedItem(this, play)) {
+ float potSize = 1.0f;
+
+ OPEN_DISPS(play->state.gfxCtx);
+ Gfx_SetupDL_25Opa(play->state.gfxCtx);
+ Matrix_Scale(potSize, potSize, potSize, MTXMODE_APPLY);
+ gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
+ G_MTX_MODELVIEW | G_MTX_LOAD);
+
+ gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gRandoPotDL);
+ CLOSE_DISPS(play->state.gfxCtx);
+ } else {
+ Gfx_DrawDListOpa(play, D_80BA1B84[(thisx->params >> 8) & 1]);
+ }
}