diff --git a/soh/assets/custom/objects/gameplay_holiday/BaubleHilite b/soh/assets/custom/objects/gameplay_holiday/BaubleHilite new file mode 100644 index 0000000000..4cb27947f0 Binary files /dev/null and b/soh/assets/custom/objects/gameplay_holiday/BaubleHilite differ diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_b_f3dlite_BaubleBlue b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_b_f3dlite_BaubleBlue new file mode 100644 index 0000000000..9d8829650f --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_b_f3dlite_BaubleBlue @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_g_f3dlite_BaubleGreen b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_g_f3dlite_BaubleGreen new file mode 100644 index 0000000000..8ba44c27bd --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_g_f3dlite_BaubleGreen @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_r_f3dlite_BaubleRed b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_r_f3dlite_BaubleRed new file mode 100644 index 0000000000..539187c2af --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_r_f3dlite_BaubleRed @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_s_f3dlite_BaubleSilver b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_s_f3dlite_BaubleSilver new file mode 100644 index 0000000000..2c5de1ab2f --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_s_f3dlite_BaubleSilver @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeBrown b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeBrown new file mode 100644 index 0000000000..e8215b8916 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeBrown @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeGreen b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeGreen new file mode 100644 index 0000000000..bb926c31e0 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeGreen @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentBlue b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentBlue new file mode 100644 index 0000000000..95a98809cc --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentBlue @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentGreen b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentGreen new file mode 100644 index 0000000000..e6bea0b6c5 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentGreen @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentRed b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentRed new file mode 100644 index 0000000000..b42644ae81 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentRed @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_star_f3dlite_GoldStar b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_star_f3dlite_GoldStar new file mode 100644 index 0000000000..3d82334c6e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_star_f3dlite_GoldStar @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree b/soh/assets/custom/objects/gameplay_holiday/xmas_tree new file mode 100644 index 0000000000..2691067888 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b new file mode 100644 index 0000000000..4498e24fe7 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_tri_0 new file mode 100644 index 0000000000..792d47536e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_vtx_0 new file mode 100644 index 0000000000..db948f00be --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g new file mode 100644 index 0000000000..fbb02006b7 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_tri_0 new file mode 100644 index 0000000000..471f208c6e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_vtx_0 new file mode 100644 index 0000000000..3e9f85ec7f --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r new file mode 100644 index 0000000000..b93e0da35a --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_tri_0 new file mode 100644 index 0000000000..7aa1828a1b --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_vtx_0 new file mode 100644 index 0000000000..e8fc7a8dcd --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s new file mode 100644 index 0000000000..71f8877ae0 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_tri_0 new file mode 100644 index 0000000000..f88b6f2087 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_vtx_0 new file mode 100644 index 0000000000..653d4a071c --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents new file mode 100644 index 0000000000..458e405750 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_0 new file mode 100644 index 0000000000..3e2b4441fc --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_0 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_1 new file mode 100644 index 0000000000..cecbe09a2b --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_1 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_2 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_2 new file mode 100644 index 0000000000..efc528078e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_2 @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_0 new file mode 100644 index 0000000000..fd5885c08c --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_0 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_1 new file mode 100644 index 0000000000..fdc4bf6e8a --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_1 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_2 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_2 new file mode 100644 index 0000000000..3c4703e1b6 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_2 @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star new file mode 100644 index 0000000000..4cefe078a1 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_tri_0 new file mode 100644 index 0000000000..73507855d1 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_tri_0 @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_vtx_0 new file mode 100644 index 0000000000..107d0a5c7d --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_vtx_0 @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_0 new file mode 100644 index 0000000000..688a578613 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_0 @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_1 new file mode 100644 index 0000000000..34c37bef70 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_1 @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_0 new file mode 100644 index 0000000000..6b65e8a813 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_0 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_1 new file mode 100644 index 0000000000..23934fa7f5 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_1 @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_completed/GlowAlpha_64 b/soh/assets/custom/objects/object_triforce_completed/GlowAlpha_64 new file mode 100644 index 0000000000..1682d9e6f2 Binary files /dev/null and b/soh/assets/custom/objects/object_triforce_completed/GlowAlpha_64 differ diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL index 966bef2060..b7c7d8af02 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL @@ -1,7 +1,7 @@ - + - + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 index dea47708c1..f9d6420cc0 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 @@ -1,56 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 index 36be4333f2..b67adf06ef 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 @@ -1,7 +1,390 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 index 6ca96db305..ca11ab1b3b 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 @@ -1,54 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 index 3a653966d7..cc747f74a3 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 @@ -1,8 +1,347 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_completed/hilite_melon b/soh/assets/custom/objects/object_triforce_completed/hilite_melon new file mode 100644 index 0000000000..df1d605b38 Binary files /dev/null and b/soh/assets/custom/objects/object_triforce_completed/hilite_melon differ diff --git a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_Glow b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_Glow new file mode 100644 index 0000000000..6bed4d2744 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_Glow @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold similarity index 75% rename from soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_triforce_surface rename to soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold index 5f8dc51f90..65dfd4f560 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_triforce_surface +++ b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold @@ -1,6 +1,6 @@ - + @@ -8,14 +8,14 @@ - + - + diff --git a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_edges b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_edges deleted file mode 100644 index 52591dfc85..0000000000 --- a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_edges +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_surface deleted file mode 100644 index 06193ae61a..0000000000 --- a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_surface +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_completed/noise_tex b/soh/assets/custom/objects/object_triforce_completed/noise_tex deleted file mode 100644 index a6d6cf945e..0000000000 Binary files a/soh/assets/custom/objects/object_triforce_completed/noise_tex and /dev/null differ diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL index 70d08c31d2..0beb02144f 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL @@ -1,10 +1,8 @@ - + - + - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 index 09e44f1b79..286a543842 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 @@ -1,17 +1,67 @@ - - - + + + - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 index 48001e3c39..a3c013e4ac 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 @@ -1,18 +1,91 @@ - - - - - - - - - - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_2 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_2 deleted file mode 100644 index e35e34492a..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_2 +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 index a86fa98bf5..3637534b99 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 @@ -1,18 +1,72 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 index 230fbb7f88..ef51d7124c 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 @@ -1,22 +1,107 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_2 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_2 deleted file mode 100644 index 86d1238254..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_2 +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/image b/soh/assets/custom/objects/object_triforce_piece_0/image new file mode 100644 index 0000000000..2a8a62348b Binary files /dev/null and b/soh/assets/custom/objects/object_triforce_piece_0/image differ diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_ball b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_ball new file mode 100644 index 0000000000..214ad3df66 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_ball @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_shard_edge b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_shard_edge deleted file mode 100644 index f626317933..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_shard_edge +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_edges b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_edges deleted file mode 100644 index 9355e70943..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_edges +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_surface deleted file mode 100644 index e863b31c5a..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_surface +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver new file mode 100644 index 0000000000..d56781ad26 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/noise_tex b/soh/assets/custom/objects/object_triforce_piece_0/noise_tex deleted file mode 100644 index a6d6cf945e..0000000000 Binary files a/soh/assets/custom/objects/object_triforce_piece_0/noise_tex and /dev/null differ diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL index 50a9264c62..4ffea5cf8a 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL @@ -1,7 +1,7 @@ - + - + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 index 5f33f7347e..c9e63a8d96 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 @@ -1,20 +1,67 @@ - - - - - - + + + + + + + + - - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 index 43df6492b4..67f0ba8eb3 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 @@ -1,25 +1,88 @@ - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 index e078b82461..d9a5075af2 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 @@ -1,23 +1,72 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 index e0460194da..8c2f954e7c 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 @@ -1,34 +1,96 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/image b/soh/assets/custom/objects/object_triforce_piece_1/image new file mode 100644 index 0000000000..2a8a62348b Binary files /dev/null and b/soh/assets/custom/objects/object_triforce_piece_1/image differ diff --git a/soh/assets/custom/objects/object_triforce_piece_1/image_copy b/soh/assets/custom/objects/object_triforce_piece_1/image_copy new file mode 100644 index 0000000000..2a8a62348b Binary files /dev/null and b/soh/assets/custom/objects/object_triforce_piece_1/image_copy differ diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_blue_mat b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_blue_mat new file mode 100644 index 0000000000..18d8436b2b --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_blue_mat @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_shard_edge b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_shard_edge deleted file mode 100644 index b9e61293d1..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_shard_edge +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 new file mode 100644 index 0000000000..26f9a0b700 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/noise_tex b/soh/assets/custom/objects/object_triforce_piece_1/noise_tex deleted file mode 100644 index a6d6cf945e..0000000000 Binary files a/soh/assets/custom/objects/object_triforce_piece_1/noise_tex and /dev/null differ diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL index 5213cd53ca..7318e9b1c0 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL @@ -1,10 +1,8 @@ - + - + - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 index b54e182d5e..59d81883f1 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 @@ -1,29 +1,67 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 index 00a32bfd88..a15c641d7a 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 @@ -1,11 +1,378 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_2 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_2 deleted file mode 100644 index 0993c1c1ee..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_2 +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 index bf7dfcac67..5122e29042 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 @@ -1,36 +1,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 index e3237ab215..988bfb6735 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 @@ -1,12 +1,410 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_2 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_2 deleted file mode 100644 index ec4e737005..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_2 +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/image b/soh/assets/custom/objects/object_triforce_piece_2/image new file mode 100644 index 0000000000..2a8a62348b Binary files /dev/null and b/soh/assets/custom/objects/object_triforce_piece_2/image differ diff --git a/soh/assets/custom/objects/object_triforce_piece_2/image_copy b/soh/assets/custom/objects/object_triforce_piece_2/image_copy new file mode 100644 index 0000000000..2a8a62348b Binary files /dev/null and b/soh/assets/custom/objects/object_triforce_piece_2/image_copy differ diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_Green_mat b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_Green_mat new file mode 100644 index 0000000000..35d57dfeae --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_Green_mat @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_shard_edge b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_shard_edge deleted file mode 100644 index c222fe68d5..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_shard_edge +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_edges b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_edges deleted file mode 100644 index 5968068f5f..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_edges +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_surface deleted file mode 100644 index d903f00bbd..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_surface +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 new file mode 100644 index 0000000000..6a9be7bec4 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/noise_tex b/soh/assets/custom/objects/object_triforce_piece_2/noise_tex deleted file mode 100644 index a6d6cf945e..0000000000 Binary files a/soh/assets/custom/objects/object_triforce_piece_2/noise_tex and /dev/null differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bark_64 b/soh/assets/custom/objects/object_xmas_tree/Bark_64 new file mode 100644 index 0000000000..8f1b837cd2 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bark_64 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 b/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 new file mode 100644 index 0000000000..e33491d5af Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_shaded_64 b/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_shaded_64 new file mode 100644 index 0000000000..dca2158b4b Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_shaded_64 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL new file mode 100644 index 0000000000..c343cfe2a0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_0 new file mode 100644 index 0000000000..38cdbe014b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_0 @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 new file mode 100644 index 0000000000..ff4e066a5b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 new file mode 100644 index 0000000000..561d3ac5ef --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_0 new file mode 100644 index 0000000000..94e5e1fefc --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_0 @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 new file mode 100644 index 0000000000..01ed88a145 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 new file mode 100644 index 0000000000..fd03778f89 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeBrown b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeBrown new file mode 100644 index 0000000000..37fdb10d29 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeBrown @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen new file mode 100644 index 0000000000..119341c701 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip new file mode 100644 index 0000000000..9baaadbf55 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h index 2b193053c3..a672b3663e 100644 --- a/soh/assets/soh_assets.h +++ b/soh/assets/soh_assets.h @@ -56,6 +56,27 @@ static const ALIGN_ASSET(2) char gTriforcePiece2DL[] = dgTriforcePiece2DL; #define dgTriforcePieceCompletedDL "__OTR__objects/object_triforce_completed/gTriforcePieceCompletedDL" static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCompletedDL; +#define dgXmasTreeDL "__OTR__objects/object_xmas_tree/gXmasTreeDL" +static const ALIGN_ASSET(2) char gXmasTreeDL[] = dgXmasTreeDL; + +#define dxmas_tree_presents "__OTR__objects/gameplay_holiday/xmas_tree_presents" +static const ALIGN_ASSET(2) char xmas_tree_presents[] = dxmas_tree_presents; + +#define dxmas_tree_star "__OTR__objects/gameplay_holiday/xmas_tree_star" +static const ALIGN_ASSET(2) char xmas_tree_star[] = dxmas_tree_star; + +#define dxmas_tree_bauble_r "__OTR__objects/gameplay_holiday/xmas_tree_bauble_r" +static const ALIGN_ASSET(2) char xmas_tree_bauble_r[] = dxmas_tree_bauble_r; + +#define dxmas_tree_bauble_g "__OTR__objects/gameplay_holiday/xmas_tree_bauble_g" +static const ALIGN_ASSET(2) char xmas_tree_bauble_g[] = dxmas_tree_bauble_g; + +#define dxmas_tree_bauble_b "__OTR__objects/gameplay_holiday/xmas_tree_bauble_b" +static const ALIGN_ASSET(2) char xmas_tree_bauble_b[] = dxmas_tree_bauble_b; + +#define dxmas_tree_bauble_s "__OTR__objects/gameplay_holiday/xmas_tree_bauble_s" +static const ALIGN_ASSET(2) char xmas_tree_bauble_s[] = dxmas_tree_bauble_s; + // overlays #define dgOptionsDividerChangeLangVtx "__OTR__overlays/ovl_file_choose/gOptionsDividerChangeLangVtx" static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx; diff --git a/soh/soh/ActorDB.cpp b/soh/soh/ActorDB.cpp index 2cf4d8fe77..4e36f5e51f 100644 --- a/soh/soh/ActorDB.cpp +++ b/soh/soh/ActorDB.cpp @@ -604,8 +604,25 @@ static ActorDBInit EnPartnerInit = { }; extern "C" s16 gEnPartnerId; +#include "src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h" +static ActorDBInit EnChristmasTreeInit = { + "En_ChristmasTree", + "Christmas Tree", + ACTORCAT_PROP, + (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY), + OBJECT_GAMEPLAY_KEEP, + sizeof(EnChristmasTree), + (ActorFunc)EnChristmasTree_Init, + (ActorFunc)EnChristmasTree_Destroy, + (ActorFunc)EnChristmasTree_Update, + (ActorFunc)EnChristmasTree_Draw, + nullptr, +}; +extern "C" s16 gEnChristmasTreeId; + void ActorDB::AddBuiltInCustomActors() { gEnPartnerId = ActorDB::Instance->AddEntry(EnPartnerInit).entry.id; + gEnChristmasTreeId = ActorDB::Instance->AddEntry(EnChristmasTreeInit).entry.id; } extern "C" ActorDBEntry* ActorDB_Retrieve(const int id) { diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp index 9af4eadb7e..b357363ac9 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp @@ -515,7 +515,7 @@ void DrawInfoTab() { UIWidgets::InsertHelpHoverText("Z-Targeting behavior"); if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT)) { - ImGui::InputScalar("Triforce Pieces", ImGuiDataType_U16, &gSaveContext.triforcePiecesCollected); + ImGui::InputScalar("Triforce Pieces", ImGuiDataType_U8, &gSaveContext.triforcePiecesCollected); UIWidgets::InsertHelpHoverText("Currently obtained Triforce Pieces. For Triforce Hunt."); } diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index 42c9c91c0f..01557efefe 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -505,6 +505,7 @@ const std::vector flagTables = { { RAND_INF_CHILD_FISHING, "RAND_INF_CHILD_FISHING" }, { RAND_INF_ADULT_FISHING, "RAND_INF_ADULT_FISHING" }, { RAND_INF_10_BIG_POES, "RAND_INF_10_BIG_POES" }, + { RAND_INF_GRANT_GANONS_BOSSKEY, "RAND_INF_GRANT_GANONS_BOSSKEY" }, } }, }; diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index 750ca54be0..f4b62363d4 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -652,8 +652,6 @@ void RegisterTriforceHunt() { // Warp to credits if (GameInteractor::State::TriforceHuntCreditsWarpActive) { - GetItemEntry getItemEntry = ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); - GiveItemEntryWithoutActor(gPlayState, getItemEntry); eventTimer = 1; GameInteractor::State::TriforceHuntCreditsWarpActive = 0; } @@ -706,6 +704,18 @@ void RegisterTriforceHunt() { }); } +void RegisterGrantGanonsBossKey() { + GameInteractor::Instance->RegisterGameHook([]() { + // Triforce Hunt needs the check if the player isn't being teleported to the credits scene. + if (!GameInteractor::IsGameplayPaused() && Flags_GetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY) && + gPlayState->sceneLoadFlag != 0x14 && (1 << 0 & gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER]) == 0) { + GetItemEntry getItemEntry = + ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); + GiveItemEntryWithoutActor(gPlayState, getItemEntry); + } + }); +} + //this map is used for enemies that can be uniquely identified by their id //and that are always counted //enemies that can't be uniquely identified by their id @@ -1091,6 +1101,7 @@ void InitMods() { RegisterMenuPathFix(); RegisterMirrorModeHandler(); RegisterTriforceHunt(); + RegisterGrantGanonsBossKey(); RegisterEnemyDefeatCounts(); RegisterAltTrapTypes(); RegisterRandomizerSheikSpawn(); diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index 9b9913c8c4..7d7a3cf428 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -1931,12 +1931,12 @@ void HintTable_Init_Item() { hintTable[TRIFORCE_PIECE] = HintText::Item({ //obscure text - Text{"a triumph fork", /*french*/"la Tribosse", /*spanish*/"un trígono del triunfo"}, - Text{"cheese", /*french*/"du fromage", /*spanish*/"un porción de queso"}, - Text{"a gold fragment", /*french*/"un fragment d'or", /*spanish*/"un fragmento dorado"}, + Text{"a Christmas Ornament", /*french*/"la Tribosse", /*spanish*/"un trígono del triunfo"}, + Text{"a Christmas Ornament", /*french*/"du fromage", /*spanish*/"un porción de queso"}, + Text{"a Christmas Ornament", /*french*/"un fragment d'or", /*spanish*/"un fragmento dorado"}, }, {}, //clear text - Text{"a Piece of the Triforce", /*french*/"un fragment de la Triforce", /*spanish*/"un fragmento de la Trifuerza"} + Text{"a Christmas Ornament", /*french*/"un fragment de la Triforce", /*spanish*/"un fragmento de la Trifuerza"} ); hintTable[EPONA] = HintText::Item({ diff --git a/soh/soh/Enhancements/randomizer/3drando/item_list.cpp b/soh/soh/Enhancements/randomizer/3drando/item_list.cpp index 34e9c779f7..6f61b9e126 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_list.cpp @@ -242,7 +242,7 @@ void ItemTable_Init() { // RandomizerGet itemTable[BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, Text{"Buy Red Potion [40]", "Acheter: Potion Rouge [40]", "Comprar poción roja [40]"}, ITEMTYPE_SHOP, 0x30, false, &noVariable, BOTTLE_WITH_RED_POTION, 40); itemTable[BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, Text{"Buy Red Potion [50]", "Acheter: Potion Rouge [50]", "Comprar poción roja [50]"}, ITEMTYPE_SHOP, 0x31, false, &noVariable, BOTTLE_WITH_RED_POTION, 50); - itemTable[TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{"Triforce Piece", "Triforce Piece", "Triforce Piece"}, ITEMTYPE_ITEM, 0xDF, true, &TriforcePieces, TRIFORCE_PIECE); + itemTable[TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{"Christmas Ornament", "Christmas Ornament", "Christmas Ornament"}, ITEMTYPE_ITEM, 0xDF, true, &TriforcePieces, TRIFORCE_PIECE); itemTable[TRIFORCE] = Item(RG_TRIFORCE, Text{"Triforce", "Triforce", "Trifuerza"}, ITEMTYPE_EVENT, GI_RUPEE_RED_LOSE, false, &noVariable, NONE); itemTable[HINT] = Item(RG_HINT, Text{"Hint", "Indice", "Pista"}, ITEMTYPE_EVENT, GI_RUPEE_BLUE_LOSE, false, &noVariable, NONE); diff --git a/soh/soh/Enhancements/randomizer/3drando/shops.cpp b/soh/soh/Enhancements/randomizer/3drando/shops.cpp index 85fb22c22d..7e94b8066d 100644 --- a/soh/soh/Enhancements/randomizer/3drando/shops.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/shops.cpp @@ -699,9 +699,9 @@ void InitTrickNames() { Text{"Life Heart", "Cœur de vie", "Vida Corazón"}, Text{"Lots of Love", "Beaucoup d'amour", "Mucho amor"}}; trickNameTable[0xDF] = { - Text{"Piece of Cheese", "Morceau de Fromage", "Piece of Cheese"}, - Text{"Triforce Shard", "Éclat de Triforce", "Triforce Shard"}, - Text{"Shiny Rock", "Caiiloux Brillant", "Shiny Rock"}}; + Text{"Glass Ball", "Morceau de Fromage", "Piece of Cheese"}, + Text{"Coal", "Éclat de Triforce", "Triforce Shard"}, + Text{"Ornamento", "Caiiloux Brillant", "Shiny Rock"}}; /* //Names for individual upgrades, in case progressive names are replaced diff --git a/soh/soh/Enhancements/randomizer/draw.cpp b/soh/soh/Enhancements/randomizer/draw.cpp index eacc62725b..570ac5801c 100644 --- a/soh/soh/Enhancements/randomizer/draw.cpp +++ b/soh/soh/Enhancements/randomizer/draw.cpp @@ -214,7 +214,7 @@ extern "C" void Randomizer_DrawTriforcePiece(PlayState* play, GetItemEntry getIt Gfx_SetupDL_25Xlu(play->state.gfxCtx); - uint16_t current = gSaveContext.triforcePiecesCollected; + uint8_t current = gSaveContext.triforcePiecesCollected; Matrix_Scale(0.035f, 0.035f, 0.035f, MTXMODE_APPLY); @@ -238,8 +238,8 @@ extern "C" void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry get Gfx_SetupDL_25Xlu(play->state.gfxCtx); - uint16_t current = gSaveContext.triforcePiecesCollected; - uint16_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + uint8_t current = gSaveContext.triforcePiecesCollected; + uint8_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); Matrix_Scale(triforcePieceScale, triforcePieceScale, triforcePieceScale, MTXMODE_APPLY); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index a1f11bc103..331aedc2f0 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -60,6 +60,7 @@ const std::string Randomizer::hintMessageTableID = "RandomizerHints"; const std::string Randomizer::merchantMessageTableID = "RandomizerMerchants"; const std::string Randomizer::rupeeMessageTableID = "RandomizerRupees"; const std::string Randomizer::triforcePieceMessageTableID = "RandomizerTriforcePiece"; +const std::string Randomizer::christmasTreeMessageTableID = "RandomizerChristmasTree"; const std::string Randomizer::NaviRandoMessageTableID = "RandomizerNavi"; const std::string Randomizer::IceTrapRandoMessageTableID = "RandomizerIceTrap"; const std::string Randomizer::randoMiscHintsTableID = "RandomizerMiscHints"; @@ -3542,21 +3543,20 @@ void RandomizerSettingsWindow::DrawElement() { } // Triforce Hunt - UIWidgets::EnhancementCheckbox("Triforce Hunt", "gRandomizeTriforceHunt"); + UIWidgets::EnhancementCheckbox("Christmas Ornaments Hunt", "gRandomizeTriforceHunt"); UIWidgets::InsertHelpHoverText( - "Pieces of the Triforce of Courage have been scattered across the world. Find them all to finish the game!\n\n" - "When the required amount of pieces have been found, the game is saved and Ganon's Boss key is given " - "to you when you load back into the game if you desire to beat Ganon afterwards.\n\n" - "Keep in mind Ganon might not be logically beatable when \"All Locations Reachable\" is turned off." + "The Christmas ornnaments went missing from the tree in Kakariko Village! Find them back and restore the Christmas " + "magic. The tree will get more and more decorated as you find more of the ornaments. Interact with the completed tree " + "to finish the game! Your game will be saved and Ganon's Boss key will be granted once you load back into the save." ); if (CVarGetInteger("gRandomizeTriforceHunt", 0)) { // Triforce Hunt (total pieces) UIWidgets::Spacer(0); int totalPieces = CVarGetInteger("gRandomizeTriforceHuntTotalPieces", 30); - ImGui::Text("Triforce Pieces in the world: %d", totalPieces); + ImGui::Text("Ornaments in the world: %d", totalPieces); UIWidgets::InsertHelpHoverText( - "The amount of Triforce pieces that will be placed in the world. " + "The amount of Christmas ornaments that will be placed in the world. " "Keep in mind seed generation can fail if more pieces are placed than there are junk items in the item pool." ); ImGui::SameLine(); @@ -3564,9 +3564,9 @@ void RandomizerSettingsWindow::DrawElement() { // Triforce Hunt (required pieces) int requiredPieces = CVarGetInteger("gRandomizeTriforceHuntRequiredPieces", 20); - ImGui::Text("Triforce Pieces to win: %d", requiredPieces); + ImGui::Text("Ornaments to win: %d", requiredPieces); UIWidgets::InsertHelpHoverText( - "The amount of Triforce pieces required to win the game." + "The amount of Christmas ornaments required to win the game." ); ImGui::SameLine(); UIWidgets::EnhancementSliderInt("", "##TriforceHuntRequiredPieces", "gRandomizeTriforceHuntRequiredPieces", 1, totalPieces, "", 20); @@ -5515,27 +5515,27 @@ CustomMessage Randomizer::GetRupeeMessage(u16 rupeeTextId) { void CreateTriforcePieceMessages() { CustomMessage TriforcePieceMessages[NUM_TRIFORCE_PIECE_MESSAGES] = { - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. It's a start!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. It's a start!", "Ein %yTriforce-Splitter%w! Du hast&%g{{current}}%w von %c{{required}}%w gefunden. Es ist ein&Anfang!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. C'est un début!" }, - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Progress!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Progress!", "Ein %yTriforce-Splitter%w! Du hast&%g{{current}}%w von %c{{required}}%w gefunden. Es geht voran!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. Ça avance!" }, - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Over half-way&there!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Over half-way&there!", "Ein %yTriforce-Splitter%w! Du hast&schon %g{{current}}%w von %c{{required}}%w gefunden. Schon&über die Hälfte!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. Il en reste un&peu moins que la moitié!" }, - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Almost done!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Almost done!", "Ein %yTriforce-Splitter%w! Du hast&schon %g{{current}}%w von %c{{required}}%w gefunden. Fast&geschafft!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. C'est presque&terminé!" }, - { "You completed the %yTriforce of&Courage%w! %gGG%w!", + { "You found all of the %yChristmas&Ornaments%w! Visit the %gChristmas&tree%w in Kakariko Village!", "Das %yTriforce des Mutes%w! Du hast&alle Splitter gefunden. %gGut gemacht%w!", "Vous avez complété la %yTriforce&du Courage%w! %gFélicitations%w!" }, - { "You found a spare %yTriforce Piece%w!&You only needed %c{{required}}%w, but you have %g{{current}}%w!", + { "You found a spare %yChristmas Ornament%w!&You only needed %c{{required}}%w, but you have %g{{current}}%w!", "Ein übriger %yTriforce-Splitter%w! Du&hast nun %g{{current}}%w von %c{{required}}%w nötigen gefunden.", "Vous avez trouvé un %yFragment de&Triforce%w en plus! Vous n'aviez besoin&que de %c{{required}}%w, mais vous en avez %g{{current}}%w en&tout!" }, }; @@ -5548,9 +5548,9 @@ void CreateTriforcePieceMessages() { CustomMessage Randomizer::GetTriforcePieceMessage() { // Item is only given after the textbox, so reflect that inside the textbox. - uint16_t current = gSaveContext.triforcePiecesCollected + 1; - uint16_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); - uint16_t remaining = required - current; + uint8_t current = gSaveContext.triforcePiecesCollected + 1; + uint8_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + uint8_t remaining = required - current; float percentageCollected = (float)current / (float)required; uint8_t messageIndex; @@ -5575,6 +5575,39 @@ CustomMessage Randomizer::GetTriforcePieceMessage() { messageEntry.Replace("{{required}}", std::to_string(required), std::to_string(required), std::to_string(required)); return messageEntry; } +void CreateChristmasTreeMessages() { + CustomMessage ChristmasTreeMessages[2] = { + + { "The %yChristmas tree%w seems to be&missing some of %gits magic%w... Find all&ornaments to save %rChristmas%w!", + "The %yChristmas tree%w seems to be&missing some of %gits magic%w... Find all&ornaments to save %rChristmas%w!", + "The %yChristmas tree%w seems to be&missing some of %gits magic%w... Find all&ornaments to save %rChristmas%w!" }, + + { "The tree's magic has been fully&restored. %gMerry %rChristmas%w!", + "The tree's magic has been fully&restored. %gMerry %rChristmas%w!", + "The tree's magic has been fully&restored. %gMerry %rChristmas%w!" } + }; + CustomMessageManager* customMessageManager = CustomMessageManager::Instance; + customMessageManager->AddCustomMessageTable(Randomizer::christmasTreeMessageTableID); + for (unsigned int i = 0; i <= 1; i++) { + customMessageManager->CreateMessage(Randomizer::christmasTreeMessageTableID, i, ChristmasTreeMessages[i]); + } +} + +CustomMessage Randomizer::GetChristmasTreeMessage() { + // Item is only given after the textbox, so reflect that inside the textbox. + uint8_t current = gSaveContext.triforcePiecesCollected; + uint8_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + uint8_t messageIndex; + + if (current < required) { + messageIndex = 0; + } else { + messageIndex = 1; + } + + CustomMessage messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::christmasTreeMessageTableID, messageIndex); + return messageEntry; +} void CreateNaviRandoMessages() { CustomMessage NaviMessages[NUM_NAVI_MESSAGES] = { @@ -6108,6 +6141,7 @@ void Randomizer::CreateCustomMessages() { CreateGetItemMessages(&getItemMessages); CreateRupeeMessages(); CreateTriforcePieceMessages(); + CreateChristmasTreeMessages(); CreateNaviRandoMessages(); CreateIceTrapRandoMessages(); CreateFireTempleGoronMessages(); diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index a726cecdee..3ad363d2a9 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -49,6 +49,7 @@ class Randomizer { static const std::string merchantMessageTableID; static const std::string rupeeMessageTableID; static const std::string triforcePieceMessageTableID; + static const std::string christmasTreeMessageTableID; static const std::string NaviRandoMessageTableID; static const std::string IceTrapRandoMessageTableID; static const std::string randoMiscHintsTableID; @@ -105,6 +106,7 @@ class Randomizer { static void CreateCustomMessages(); static CustomMessage GetRupeeMessage(u16 rupeeTextId); static CustomMessage GetTriforcePieceMessage(); + static CustomMessage GetChristmasTreeMessage(); bool CheckContainsVanillaItem(RandomizerCheck randoCheck); }; diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index 33c206b470..8d4ec98012 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -159,6 +159,7 @@ typedef enum { RAND_INF_CHILD_FISHING, RAND_INF_ADULT_FISHING, RAND_INF_10_BIG_POES, + RAND_INF_GRANT_GANONS_BOSSKEY, // If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16) diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index f24ab818b9..33477b0c62 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -607,7 +607,7 @@ void DrawItem(ItemTrackerItem item) { case RG_TRIFORCE_PIECE: actualItemId = item.id; hasItem = IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT); - itemName = "Triforce Piece"; + itemName = "Christmas Ornament"; break; } @@ -1148,9 +1148,9 @@ void ItemTrackerSettingsWindow::DrawElement() { UIWidgets::Spacer(0); - ImGui::Text("Triforce Piece Count Tracking"); + ImGui::Text("Christmas ornament Count Tracking"); UIWidgets::EnhancementCombobox("gItemTrackerTriforcePieceTrack", itemTrackerTriforcePieceTrackOptions, TRIFORCE_PIECE_COLLECTED_REQUIRED_MAX); - UIWidgets::InsertHelpHoverText("Customize what numbers are shown for triforce piece tracking."); + UIWidgets::InsertHelpHoverText("Customize what numbers are shown for ornament tracking."); ImGui::TableNextColumn(); @@ -1191,7 +1191,7 @@ void ItemTrackerSettingsWindow::DrawElement() { shouldUpdateVectors = true; } - if (UIWidgets::LabeledRightAlignedEnhancementCombobox("Triforce Pieces", "gItemTrackerTriforcePiecesDisplayType", displayTypes, SECTION_DISPLAY_HIDDEN)) { + if (UIWidgets::LabeledRightAlignedEnhancementCombobox("Christmas Ornaments", "gItemTrackerTriforcePiecesDisplayType", displayTypes, SECTION_DISPLAY_HIDDEN)) { shouldUpdateVectors = true; } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 7262a56e17..5c7bdee722 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -812,11 +812,8 @@ extern "C" void InitOTR() { time_t now = time(NULL); tm *tm_now = localtime(&now); - if (tm_now->tm_mon == 11 && tm_now->tm_mday >= 24 && tm_now->tm_mday <= 25) { - CVarRegisterInteger("gLetItSnow", 1); - } else { - CVarClear("gLetItSnow"); - } + + CVarRegisterInteger("gLetItSnow", 1); srand(now); #ifdef ENABLE_CROWD_CONTROL @@ -2042,7 +2039,9 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) { s16 actorParams = 0; if (IS_RANDO) { Player* player = GET_PLAYER(play); - if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) { + if (textId == 0x406B && play->sceneNum == SCENE_KAKARIKO_VILLAGE) { + messageEntry = Randomizer::GetChristmasTreeMessage(); + } else if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) { if (player->getItemEntry.getItemId == RG_ICE_TRAP) { u16 iceTrapTextId = Random(0, NUM_ICE_TRAP_MESSAGES); messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, iceTrapTextId); diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index ec25d20625..e972297f65 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -2600,14 +2600,6 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { gSaveContext.triforcePiecesCollected++; GameInteractor_SetTriforceHuntPieceGiven(true); - // Teleport to credits when goal is reached. - if (gSaveContext.triforcePiecesCollected == Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED)) { - gSaveContext.sohStats.itemTimestamp[TIMESTAMP_TRIFORCE_COMPLETED] = GAMEPLAYSTAT_TOTAL_TIME; - gSaveContext.sohStats.gameComplete = 1; - Play_PerformSave(play); - GameInteractor_SetTriforceHuntCreditsWarpActive(true); - } - return Return_Item_Entry(giEntry, RG_NONE); } diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index 112a71888f..de13f78e94 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -35,6 +35,7 @@ u64 D_801614D0[0xA00]; PlayState* gPlayState; s16 gEnPartnerId; +s16 gEnChristmasTreeId; void OTRPlay_SpawnScene(PlayState* play, s32 sceneNum, s32 spawn); @@ -759,6 +760,10 @@ void Play_Init(GameState* thisx) { GET_PLAYER(play)->actor.world.pos.y + Player_GetHeight(GET_PLAYER(play)) + 5.0f, GET_PLAYER(play)->actor.world.pos.z, 0, 0, 0, 1, true); } + + if (play->sceneNum == SCENE_KAKARIKO_VILLAGE && Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT)) { + Actor_Spawn(&play->actorCtx, play, gEnChristmasTreeId, -734, 0, 420, 0, 0, 0, 1, true); + } } void Play_Update(PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c new file mode 100644 index 0000000000..9d9f65190b --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c @@ -0,0 +1,134 @@ +/* + * File: z_en_christmastree.c + * Overlay: ovl_En_ChristmasTree + * Description: Custom Christmas Tree for Ornament Hunt + */ + +#include "z_en_christmastree.h" +#include "soh_assets.h" +#include "soh/Enhancements/game-interactor/GameInteractor.h" + +void EnChristmasTree_Init(Actor* thisx, PlayState* play); +void EnChristmasTree_Destroy(Actor* thisx, PlayState* play); +void EnChristmasTree_Update(Actor* thisx, PlayState* play); +void EnChristmasTree_Draw(Actor* thisx, PlayState* play); + +void EnChristmasTree_Wait(EnChristmasTree* this, PlayState* play); +void EnChristmasTree_Talk(EnChristmasTree* this, PlayState* play); + +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_NONE, + AT_NONE, + AC_NONE, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0x00000000, 0x00, 0x00 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_NONE, + BUMP_NONE, + OCELEM_ON, + }, + { 50, 150, 0, { 0, 0, 0 } }, +}; + +static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; + +void EnChristmasTree_Init(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 90.0f); + Collider_InitCylinder(play, &this->collider); + Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); + CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit); + Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, 4); + + this->actor.targetMode = 1; + this->actor.textId = 0x406B; // Hijacking bean seller text ID so I'm sure it doesn't clash + + this->actionFunc = EnChristmasTree_Wait; +} + +void EnChristmasTree_Destroy(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + + Collider_DestroyCylinder(play, &this->collider); +} + +void EnChristmasTree_Wait(EnChristmasTree* this, PlayState* play) { + if (Actor_ProcessTalkRequest(&this->actor, play)) { // if talk is initiated + this->actionFunc = EnChristmasTree_Talk; + } else if ((this->actor.xzDistToPlayer < 170.0f)) { // talk range + func_8002F2CC(&this->actor, play, 170.0f); + } +} + +void EnChristmasTree_Talk(EnChristmasTree* this, PlayState* play) { + u8 dialogState = Message_GetState(&play->msgCtx); + if (dialogState != TEXT_STATE_CHOICE) { + if ((dialogState == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { // advanced final textbox + this->actionFunc = EnChristmasTree_Wait; + + // Teleport to credits when goal is reached. + if (gSaveContext.triforcePiecesCollected >= Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED)) { + gSaveContext.sohStats.itemTimestamp[TIMESTAMP_TRIFORCE_COMPLETED] = GAMEPLAYSTAT_TOTAL_TIME; + gSaveContext.sohStats.gameComplete = 1; + Flags_SetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY); + Play_PerformSave(play); + GameInteractor_SetTriforceHuntCreditsWarpActive(true); + } + } + } + + +} + +void EnChristmasTree_Update(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + ColliderCylinder* collider = &this->collider; + + Collider_UpdateCylinder(thisx, collider); + CollisionCheck_SetOC(play, &play->colChkCtx, (Collider*)collider); + + Actor_SetFocus(&this->actor, 80.0f); + + this->actionFunc(this, play); +} + +void EnChristmasTree_Draw(Actor* thisx, PlayState* play) { + float percentageCompleted = (float)gSaveContext.triforcePiecesCollected / + (float)Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + float treeSize = 30.0f; + + OPEN_DISPS(play->state.gfxCtx); + + Gfx_SetupDL_25Opa(play->state.gfxCtx); + + Matrix_Scale(treeSize, treeSize, treeSize, 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*)gXmasTreeDL); + if (percentageCompleted >= 0.17f) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_presents); + } + if (percentageCompleted >= 0.34f) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_r); + } + if (percentageCompleted >= 0.51f) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_g); + } + if (percentageCompleted >= 0.68f) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_b); + } + if (percentageCompleted >= 0.85f) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_s); + } + if (percentageCompleted >= 1.0f) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_star); + } + + CLOSE_DISPS(play->state.gfxCtx); +} diff --git a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h new file mode 100644 index 0000000000..1dbed3396b --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h @@ -0,0 +1,28 @@ +#ifndef Z_EN_CHRISTMASTREE_H +#define Z_EN_CHRISTMASTREE_H + +#include +#include "global.h" + +struct EnChristmasTree; + +typedef void (*EnChristmasTreeActionFunc)(struct EnChristmasTree*, PlayState*); + +typedef struct EnChristmasTree { + Actor actor; + ColliderCylinder collider; + EnChristmasTreeActionFunc actionFunc; +} EnChristmasTree; + +#ifdef __cplusplus +extern "C" { +#endif +void EnChristmasTree_Init(Actor* thisx, PlayState* play); +void EnChristmasTree_Destroy(Actor* thisx, PlayState* play); +void EnChristmasTree_Update(Actor* thisx, PlayState* play); +void EnChristmasTree_Draw(Actor* thisx, PlayState* play); +#ifdef __cplusplus +} +#endif + +#endif