diff --git a/soh/assets/custom/objects/object_festivehats/antlers_64 b/soh/assets/custom/objects/object_festivehats/antlers_64 new file mode 100644 index 000000000..74fe9e819 Binary files /dev/null and b/soh/assets/custom/objects/object_festivehats/antlers_64 differ diff --git a/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL b/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL new file mode 100644 index 000000000..ab8fdf45f --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL_tri_0 new file mode 100644 index 000000000..980452845 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL_tri_0 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL_vtx_0 new file mode 100644 index 000000000..8a64cdf18 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gCuccoLadyHatDL_vtx_0 @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL new file mode 100644 index 000000000..6d059179f --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_tri_0 new file mode 100644 index 000000000..3e0ab2ad8 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_tri_0 @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_tri_1 b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_tri_1 new file mode 100644 index 000000000..99f0a799d --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_tri_1 @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_vtx_0 new file mode 100644 index 000000000..ebb2b0eea --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_vtx_0 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_vtx_1 b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_vtx_1 new file mode 100644 index 000000000..d7263bc94 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gEponaRudolphHatDL_vtx_1 @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL b/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL new file mode 100644 index 000000000..2b2ee6c3e --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL_tri_0 new file mode 100644 index 000000000..543e90c1f --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL_tri_0 @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL_vtx_0 new file mode 100644 index 000000000..d7263bc94 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gHorseAntlersDL_vtx_0 @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL b/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL new file mode 100644 index 000000000..27bdd9211 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL_tri_0 new file mode 100644 index 000000000..313f489de --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL_tri_0 @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL_vtx_0 new file mode 100644 index 000000000..eb7d042ff --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkAdultHatTrimDL_vtx_0 @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL b/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL new file mode 100644 index 000000000..6f7262451 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL_tri_0 new file mode 100644 index 000000000..83cf6d929 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL_tri_0 @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL_vtx_0 new file mode 100644 index 000000000..b937dad3e --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkAdultPompomDL_vtx_0 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL b/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL new file mode 100644 index 000000000..769a41928 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL_tri_0 new file mode 100644 index 000000000..776fb4da9 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL_tri_0 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL_vtx_0 new file mode 100644 index 000000000..847f1ae81 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkChildHatTrimDL_vtx_0 @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL b/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL new file mode 100644 index 000000000..4093e1aa3 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL_tri_0 new file mode 100644 index 000000000..4f18af8bf --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL_tri_0 @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL_vtx_0 new file mode 100644 index 000000000..b0c371f13 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gLinkChildPompomDL_vtx_0 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL b/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL new file mode 100644 index 000000000..ec6ccada7 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL_tri_0 new file mode 100644 index 000000000..672602bc1 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL_tri_0 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL_vtx_0 new file mode 100644 index 000000000..c7a513a67 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gPaperCrownGenericDL_vtx_0 @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL new file mode 100644 index 000000000..0f4573976 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_tri_0 b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_tri_0 new file mode 100644 index 000000000..5396ff4d8 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_tri_0 @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_tri_1 b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_tri_1 new file mode 100644 index 000000000..bdf895c49 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_tri_1 @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_vtx_0 b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_vtx_0 new file mode 100644 index 000000000..145ca70f4 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_vtx_0 @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_vtx_1 b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_vtx_1 new file mode 100644 index 000000000..7f90daac7 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/gSantaHatGenericDL_vtx_1 @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/hilite_nose b/soh/assets/custom/objects/object_festivehats/hilite_nose new file mode 100644 index 000000000..b2d4623c9 Binary files /dev/null and b/soh/assets/custom/objects/object_festivehats/hilite_nose differ diff --git a/soh/assets/custom/objects/object_festivehats/mat_gCuccoLadyHatDL_f3dlite_hatcolour b/soh/assets/custom/objects/object_festivehats/mat_gCuccoLadyHatDL_f3dlite_hatcolour new file mode 100644 index 000000000..d1d036f89 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gCuccoLadyHatDL_f3dlite_hatcolour @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gEponaRudolphHatDL_f3dlite_antlers b/soh/assets/custom/objects/object_festivehats/mat_gEponaRudolphHatDL_f3dlite_antlers new file mode 100644 index 000000000..3717c72b2 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gEponaRudolphHatDL_f3dlite_antlers @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gEponaRudolphHatDL_f3dlite_rednose b/soh/assets/custom/objects/object_festivehats/mat_gEponaRudolphHatDL_f3dlite_rednose new file mode 100644 index 000000000..758d8698b --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gEponaRudolphHatDL_f3dlite_rednose @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gHorseAntlersDL_f3dlite_antlers b/soh/assets/custom/objects/object_festivehats/mat_gHorseAntlersDL_f3dlite_antlers new file mode 100644 index 000000000..3717c72b2 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gHorseAntlersDL_f3dlite_antlers @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gLinkAdultHatTrimDL_f3dlite_santahat_white b/soh/assets/custom/objects/object_festivehats/mat_gLinkAdultHatTrimDL_f3dlite_santahat_white new file mode 100644 index 000000000..2f72783f7 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gLinkAdultHatTrimDL_f3dlite_santahat_white @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gLinkAdultPompomDL_f3dlite_santahat_white b/soh/assets/custom/objects/object_festivehats/mat_gLinkAdultPompomDL_f3dlite_santahat_white new file mode 100644 index 000000000..2f72783f7 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gLinkAdultPompomDL_f3dlite_santahat_white @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gLinkChildHatTrimDL_f3dlite_santahat_white b/soh/assets/custom/objects/object_festivehats/mat_gLinkChildHatTrimDL_f3dlite_santahat_white new file mode 100644 index 000000000..2f72783f7 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gLinkChildHatTrimDL_f3dlite_santahat_white @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gLinkChildPompomDL_f3dlite_santahat_white b/soh/assets/custom/objects/object_festivehats/mat_gLinkChildPompomDL_f3dlite_santahat_white new file mode 100644 index 000000000..2f72783f7 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gLinkChildPompomDL_f3dlite_santahat_white @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gPaperCrownGenericDL_f3dlite_crown b/soh/assets/custom/objects/object_festivehats/mat_gPaperCrownGenericDL_f3dlite_crown new file mode 100644 index 000000000..4fb4e2029 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gPaperCrownGenericDL_f3dlite_crown @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gSantaHatGenericDL_f3dlite_santahatred b/soh/assets/custom/objects/object_festivehats/mat_gSantaHatGenericDL_f3dlite_santahatred new file mode 100644 index 000000000..b42644ae8 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gSantaHatGenericDL_f3dlite_santahatred @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_festivehats/mat_gSantaHatGenericDL_f3dlite_santahatwhite b/soh/assets/custom/objects/object_festivehats/mat_gSantaHatGenericDL_f3dlite_santahatwhite new file mode 100644 index 000000000..2f72783f7 --- /dev/null +++ b/soh/assets/custom/objects/object_festivehats/mat_gSantaHatGenericDL_f3dlite_santahatwhite @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 b/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 new file mode 100644 index 000000000..68187fbf5 Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/SnowBlanket_32 b/soh/assets/custom/objects/object_kakariko_decor/SnowBlanket_32 new file mode 100644 index 000000000..733b30757 Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/SnowBlanket_32 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/SnowBuildup_32 b/soh/assets/custom/objects/object_kakariko_decor/SnowBuildup_32 new file mode 100644 index 000000000..4653f07d1 Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/SnowBuildup_32 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/SnowDissolve_32 b/soh/assets/custom/objects/object_kakariko_decor/SnowDissolve_32 new file mode 100644 index 000000000..e7c7aa142 Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/SnowDissolve_32 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/String_BYBY_32 b/soh/assets/custom/objects/object_kakariko_decor/String_BYBY_32 new file mode 100644 index 000000000..62efcb10a Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/String_BYBY_32 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/String_GRGR_32 b/soh/assets/custom/objects/object_kakariko_decor/String_GRGR_32 new file mode 100644 index 000000000..b905f21a9 Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/String_GRGR_32 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/UsagiLeaf_8 b/soh/assets/custom/objects/object_kakariko_decor/UsagiLeaf_8 new file mode 100644 index 000000000..fc4d3ff5b Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/UsagiLeaf_8 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/YukiUsagi_16 b/soh/assets/custom/objects/object_kakariko_decor/YukiUsagi_16 new file mode 100644 index 000000000..2034627ff Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/YukiUsagi_16 differ diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL new file mode 100644 index 000000000..13d9447f7 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_tri_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_tri_0 new file mode 100644 index 000000000..1263127aa --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_tri_0 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_tri_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_tri_1 new file mode 100644 index 000000000..2aff9496e --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_tri_1 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_0 new file mode 100644 index 000000000..9f3683fed --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_0 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_1 new file mode 100644 index 000000000..e438e71cf --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_1 @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_cull b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_cull new file mode 100644 index 000000000..c3ecddb8a --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoAdultDecorDL_vtx_cull @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL new file mode 100644 index 000000000..a3972ce7a --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_0 new file mode 100644 index 000000000..eb7e92fdf --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_0 @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_1 new file mode 100644 index 000000000..77468a738 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_1 @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_2 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_2 new file mode 100644 index 000000000..97634bb7b --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_tri_2 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_0 new file mode 100644 index 000000000..24e3e3d6e --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_0 @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_1 new file mode 100644 index 000000000..0b12310ec --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_1 @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_2 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_2 new file mode 100644 index 000000000..f2a81069d --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_2 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_cull b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_cull new file mode 100644 index 000000000..b2e233783 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoChildDecorDL_vtx_cull @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL new file mode 100644 index 000000000..f0363d242 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_0 new file mode 100644 index 000000000..5ee2633e5 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_0 @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_1 new file mode 100644 index 000000000..2b52e5ef3 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_1 @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_2 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_2 new file mode 100644 index 000000000..d6f5dbafe --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_2 @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_3 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_3 new file mode 100644 index 000000000..f66ba5914 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_3 @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_4 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_4 new file mode 100644 index 000000000..e0d376897 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_5 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_5 new file mode 100644 index 000000000..ca52719c9 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_5 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_6 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_6 new file mode 100644 index 000000000..75be056f5 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_6 @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_7 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_7 new file mode 100644 index 000000000..eeedcf1ee --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_7 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_0 new file mode 100644 index 000000000..c0a07802c --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_0 @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_1 new file mode 100644 index 000000000..c7615dd3b --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_1 @@ -0,0 +1,770 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_2 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_2 new file mode 100644 index 000000000..3ff9d2e43 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_2 @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_3 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_3 new file mode 100644 index 000000000..b0e49797a --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_3 @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_4 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_4 new file mode 100644 index 000000000..043452939 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_5 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_5 new file mode 100644 index 000000000..46c6ac9a1 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_5 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_6 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_6 new file mode 100644 index 000000000..0e5970505 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_6 @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_7 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_7 new file mode 100644 index 000000000..1929d460e --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_7 @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_cull b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_cull new file mode 100644 index 000000000..a183da293 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_cull @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoAdultDecorDL_f3dlite_StringGRGR b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoAdultDecorDL_f3dlite_StringGRGR new file mode 100644 index 000000000..b8478fa90 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoAdultDecorDL_f3dlite_StringGRGR @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoAdultDecorDL_f3dlite_snowlayer b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoAdultDecorDL_f3dlite_snowlayer new file mode 100644 index 000000000..5456b3893 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoAdultDecorDL_f3dlite_snowlayer @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_SnowBuildup b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_SnowBuildup new file mode 100644 index 000000000..a79cca54f --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_SnowBuildup @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_UsagiLeaf b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_UsagiLeaf new file mode 100644 index 000000000..be29498ef --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_UsagiLeaf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_YukiUsagiBody b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_YukiUsagiBody new file mode 100644 index 000000000..3a2d2c889 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoChildDecorDL_f3dlite_YukiUsagiBody @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_CuccoBedding b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_CuccoBedding new file mode 100644 index 000000000..520258210 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_CuccoBedding @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_SnowBuildup b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_SnowBuildup new file mode 100644 index 000000000..a79cca54f --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_SnowBuildup @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringBYBY b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringBYBY new file mode 100644 index 000000000..5c85eb88f --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringBYBY @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringGRGR b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringGRGR new file mode 100644 index 000000000..b8478fa90 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringGRGR @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_UsagiLeaf b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_UsagiLeaf new file mode 100644 index 000000000..be29498ef --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_UsagiLeaf @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_YukiUsagiBody b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_YukiUsagiBody new file mode 100644 index 000000000..3a2d2c889 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_YukiUsagiBody @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_snowdissolve b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_snowdissolve new file mode 100644 index 000000000..e86142f29 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_snowdissolve @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_snowlayer b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_snowlayer new file mode 100644 index 000000000..5456b3893 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_snowlayer @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_beak b/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_beak new file mode 100644 index 000000000..f83feec12 --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_beak @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_eye b/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_eye new file mode 100644 index 000000000..c24abe2ab --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_eye @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_skin b/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_skin new file mode 100644 index 000000000..6c57863e3 --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/mat_object_penguin_DL_skin @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/object_penguin_DL b/soh/assets/custom/objects/object_penguin/object_penguin_DL new file mode 100644 index 000000000..393bbc438 --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/object_penguin_DL @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_0 b/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_0 new file mode 100644 index 000000000..9039650d4 --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_0 @@ -0,0 +1,862 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_1 b/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_1 new file mode 100644 index 000000000..efb326ace --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_1 @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_2 b/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_2 new file mode 100644 index 000000000..96c7933ec --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/object_penguin_DL_tri_2 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_0 b/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_0 new file mode 100644 index 000000000..f1a650d47 --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_0 @@ -0,0 +1,922 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_1 b/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_1 new file mode 100644 index 000000000..5cd519f95 --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_1 @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_2 b/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_2 new file mode 100644 index 000000000..97f03bf0f --- /dev/null +++ b/soh/assets/custom/objects/object_penguin/object_penguin_DL_vtx_2 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_penguin/ping_eye b/soh/assets/custom/objects/object_penguin/ping_eye new file mode 100644 index 000000000..32eb2e7e1 Binary files /dev/null and b/soh/assets/custom/objects/object_penguin/ping_eye differ diff --git a/soh/assets/custom/objects/object_penguin/ping_tex b/soh/assets/custom/objects/object_penguin/ping_tex new file mode 100644 index 000000000..9913decc7 Binary files /dev/null and b/soh/assets/custom/objects/object_penguin/ping_tex differ diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/SnowBlanket_32 b/soh/assets/custom/objects/object_temple_of_time_decor/SnowBlanket_32 new file mode 100644 index 000000000..733b30757 Binary files /dev/null and b/soh/assets/custom/objects/object_temple_of_time_decor/SnowBlanket_32 differ diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/SnowBuildup_32 b/soh/assets/custom/objects/object_temple_of_time_decor/SnowBuildup_32 new file mode 100644 index 000000000..4653f07d1 Binary files /dev/null and b/soh/assets/custom/objects/object_temple_of_time_decor/SnowBuildup_32 differ diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/String_BYBY_32 b/soh/assets/custom/objects/object_temple_of_time_decor/String_BYBY_32 new file mode 100644 index 000000000..62efcb10a Binary files /dev/null and b/soh/assets/custom/objects/object_temple_of_time_decor/String_BYBY_32 differ diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/String_GRGR_32 b/soh/assets/custom/objects/object_temple_of_time_decor/String_GRGR_32 new file mode 100644 index 000000000..b905f21a9 Binary files /dev/null and b/soh/assets/custom/objects/object_temple_of_time_decor/String_GRGR_32 differ diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL new file mode 100644 index 000000000..491663279 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_0 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_0 new file mode 100644 index 000000000..75fc6598b --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_0 @@ -0,0 +1,2222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_1 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_1 new file mode 100644 index 000000000..bf36e26c4 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_1 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_2 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_2 new file mode 100644 index 000000000..4020ff3d1 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_2 @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_3 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_3 new file mode 100644 index 000000000..eb072a5ef --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_3 @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_4 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_4 new file mode 100644 index 000000000..34fbdd806 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_4 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_5 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_5 new file mode 100644 index 000000000..e360d5739 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_5 @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_6 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_6 new file mode 100644 index 000000000..8dcd07878 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_6 @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_7 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_7 new file mode 100644 index 000000000..a276056ed --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_7 @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_8 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_8 new file mode 100644 index 000000000..b7f90b048 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_tri_8 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_0 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_0 new file mode 100644 index 000000000..772a7955d --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_0 @@ -0,0 +1,4468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_1 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_1 new file mode 100644 index 000000000..f62970ec9 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_1 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_2 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_2 new file mode 100644 index 000000000..30da04c9f --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_2 @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_3 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_3 new file mode 100644 index 000000000..834efd769 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_3 @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_4 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_4 new file mode 100644 index 000000000..acfe49fc6 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_4 @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_5 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_5 new file mode 100644 index 000000000..13fd6d48a --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_5 @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_6 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_6 new file mode 100644 index 000000000..e8e4e4a52 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_6 @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_7 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_7 new file mode 100644 index 000000000..359d48716 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_7 @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_8 b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_8 new file mode 100644 index 000000000..2cb6bf701 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_8 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_cull b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_cull new file mode 100644 index 000000000..6dd5d78cb --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/gTempleOfTimeDecorDL_vtx_cull @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/ice b/soh/assets/custom/objects/object_temple_of_time_decor/ice new file mode 100644 index 000000000..ff27a0246 Binary files /dev/null and b/soh/assets/custom/objects/object_temple_of_time_decor/ice differ diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_SnowBuildup b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_SnowBuildup new file mode 100644 index 000000000..46d52d40d --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_SnowBuildup @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_StringBYBY b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_StringBYBY new file mode 100644 index 000000000..16c505a28 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_StringBYBY @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_StringGRGR b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_StringGRGR new file mode 100644 index 000000000..5663994ee --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_StringGRGR @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_blue_material b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_blue_material new file mode 100644 index 000000000..c0c1a4ac9 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_blue_material @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_green_material b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_green_material new file mode 100644 index 000000000..6fcf6e1d8 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_green_material @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_red_material b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_red_material new file mode 100644 index 000000000..a73985478 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_red_material @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_yellow_material b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_yellow_material new file mode 100644 index 000000000..9f11354bd --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_gift_col_yellow_material @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_ice_material b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_ice_material new file mode 100644 index 000000000..2a71c2cc9 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_ice_material @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_snowlayer b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_snowlayer new file mode 100644 index 000000000..e15d18af1 --- /dev/null +++ b/soh/assets/custom/objects/object_temple_of_time_decor/mat_gTempleOfTimeDecorDL_f3dlite_snowlayer @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + 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 000000000..1682d9e6f 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 966bef206..b7c7d8af0 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 dea47708c..f9d6420cc 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 36be4333f..b67adf06e 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 6ca96db30..ca11ab1b3 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 3a653966d..cc747f74a 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 000000000..df1d605b3 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 000000000..6bed4d274 --- /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_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold new file mode 100644 index 000000000..65dfd4f56 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL index 70d08c31d..0beb02144 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 09e44f1b7..286a54384 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 48001e3c3..a3c013e4a 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_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 index a86fa98bf..4f60b10fe 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 230fbb7f8..80931181f 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/image b/soh/assets/custom/objects/object_triforce_piece_0/image new file mode 100644 index 000000000..2a8a62348 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 000000000..214ad3df6 --- /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_silver b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver new file mode 100644 index 000000000..d56781ad2 --- /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_1/gTriforcePiece1DL b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL index 50a9264c6..4ffea5cf8 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 5f33f7347..c9e63a8d9 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 43df6492b..67f0ba8eb 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 e078b8246..366463fd9 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 e0460194d..8085ae95a 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 000000000..2a8a62348 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 000000000..2a8a62348 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 000000000..6ba4d88f9 --- /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_silver_002 b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 new file mode 100644 index 000000000..26f9a0b70 --- /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_2/gTriforcePiece2DL b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL index 5213cd53c..7318e9b1c 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 b54e182d5..59d81883f 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 00a32bfd8..a15c641d7 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_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 index bf7dfcac6..90dc38784 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 e3237ab21..ef4ea40e4 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/image b/soh/assets/custom/objects/object_triforce_piece_2/image new file mode 100644 index 000000000..2a8a62348 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 000000000..2a8a62348 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 000000000..94418f24f --- /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_silver_001 b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 new file mode 100644 index 000000000..6a9be7bec --- /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_xmas_tree/Bark_64 b/soh/assets/custom/objects/object_xmas_tree/Bark_64 new file mode 100644 index 000000000..8f1b837cd 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/Bauble1Tex_B_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_B_32 new file mode 100644 index 000000000..5e28d8e82 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_B_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_G_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_G_32 new file mode 100644 index 000000000..a40393dbd Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_G_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_R_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_R_32 new file mode 100644 index 000000000..c2d49ae42 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble1Tex_R_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_B_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_B_32 new file mode 100644 index 000000000..2596d8264 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_B_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_G_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_G_32 new file mode 100644 index 000000000..e6889fee4 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_G_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_R_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_R_32 new file mode 100644 index 000000000..aef353a27 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble2Tex_R_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_B_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_B_32 new file mode 100644 index 000000000..8f9c96cb1 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_B_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_G_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_G_32 new file mode 100644 index 000000000..b8ce81e43 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_G_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_R_32 b/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_R_32 new file mode 100644 index 000000000..40394698f Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Bauble3Tex_R_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/GlowAlpha_64 b/soh/assets/custom/objects/object_xmas_tree/GlowAlpha_64 new file mode 100644 index 000000000..1682d9e6f Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/GlowAlpha_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 000000000..e33491d5a 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 000000000..dca2158b4 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/Wrapping_B_32 b/soh/assets/custom/objects/object_xmas_tree/Wrapping_B_32 new file mode 100644 index 000000000..9d70aa720 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Wrapping_B_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Wrapping_B_64 b/soh/assets/custom/objects/object_xmas_tree/Wrapping_B_64 new file mode 100644 index 000000000..071e01a2d Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Wrapping_B_64 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Wrapping_G_32 b/soh/assets/custom/objects/object_xmas_tree/Wrapping_G_32 new file mode 100644 index 000000000..8fac0c1c4 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Wrapping_G_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Wrapping_G_64 b/soh/assets/custom/objects/object_xmas_tree/Wrapping_G_64 new file mode 100644 index 000000000..6c128dbee Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Wrapping_G_64 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Wrapping_R_32 b/soh/assets/custom/objects/object_xmas_tree/Wrapping_R_32 new file mode 100644 index 000000000..a61f3d386 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Wrapping_R_32 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/Wrapping_R_64 b/soh/assets/custom/objects/object_xmas_tree/Wrapping_R_64 new file mode 100644 index 000000000..d884c2ca6 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/Wrapping_R_64 differ diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL new file mode 100644 index 000000000..c354defda --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_0 new file mode 100644 index 000000000..bc1589a65 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_0 @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_1 new file mode 100644 index 000000000..ff14442dc --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_1 @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_2 new file mode 100644 index 000000000..ea5e79a96 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_2 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_3 new file mode 100644 index 000000000..4280e17a5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_tri_3 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_0 new file mode 100644 index 000000000..2d2b533a4 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_0 @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_1 new file mode 100644 index 000000000..2199d0779 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_1 @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_2 new file mode 100644 index 000000000..e0403545a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_2 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_3 new file mode 100644 index 000000000..ae1fba294 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor100DL_vtx_3 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL new file mode 100644 index 000000000..80f8fc81b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_0 new file mode 100644 index 000000000..2a2601403 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_0 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_1 new file mode 100644 index 000000000..87dc5c7ca --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_1 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_2 new file mode 100644 index 000000000..d9d225ee1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_2 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_3 new file mode 100644 index 000000000..010dfe669 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_3 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_4 new file mode 100644 index 000000000..34de1a10f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_4 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_5 new file mode 100644 index 000000000..dbaef4a37 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_5 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_6 new file mode 100644 index 000000000..4b4aaa742 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_6 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_7 new file mode 100644 index 000000000..a3aa6c672 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_tri_7 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_0 new file mode 100644 index 000000000..189a72f78 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_0 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_1 new file mode 100644 index 000000000..491afaa21 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_1 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_2 new file mode 100644 index 000000000..1c86dfb20 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_2 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_3 new file mode 100644 index 000000000..fef6070e2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_3 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_4 new file mode 100644 index 000000000..74ff37e83 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_5 new file mode 100644 index 000000000..e5347a692 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_5 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_6 new file mode 100644 index 000000000..57b0c83f5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_6 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_7 new file mode 100644 index 000000000..4eea9d31d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor10DL_vtx_7 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL new file mode 100644 index 000000000..cd83c25f8 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_0 new file mode 100644 index 000000000..7410becef --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_0 @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_1 new file mode 100644 index 000000000..782f5f9e1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_1 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_2 new file mode 100644 index 000000000..46d90cfee --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_2 @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_3 new file mode 100644 index 000000000..fcae1cb60 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_3 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_4 new file mode 100644 index 000000000..cea2d4b01 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_4 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_5 new file mode 100644 index 000000000..8e6c88ddf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_5 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_6 new file mode 100644 index 000000000..0c0928683 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_6 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_7 new file mode 100644 index 000000000..f56472810 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_7 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_8 new file mode 100644 index 000000000..8464121eb --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_8 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_9 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_9 new file mode 100644 index 000000000..a22341bdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_tri_9 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_0 new file mode 100644 index 000000000..c8a3028f5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_0 @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_1 new file mode 100644 index 000000000..d7bf03045 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_1 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_2 new file mode 100644 index 000000000..768baea65 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_2 @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_3 new file mode 100644 index 000000000..87d0b1315 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_3 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_4 new file mode 100644 index 000000000..8fb018224 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_4 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_5 new file mode 100644 index 000000000..76d9b788a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_5 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_6 new file mode 100644 index 000000000..60cef595c --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_6 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_7 new file mode 100644 index 000000000..e590fd848 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_7 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_8 new file mode 100644 index 000000000..505f171b0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_8 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_9 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_9 new file mode 100644 index 000000000..50c131f9c --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor20DL_vtx_9 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL new file mode 100644 index 000000000..4e4fd95aa --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_0 new file mode 100644 index 000000000..1ee54492c --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_0 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_1 new file mode 100644 index 000000000..0efacf68a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_1 @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_2 new file mode 100644 index 000000000..e05cc11fb --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_2 @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_3 new file mode 100644 index 000000000..19917bd2e --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_3 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_4 new file mode 100644 index 000000000..f5f256b23 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_4 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_5 new file mode 100644 index 000000000..536d06f7a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_5 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_6 new file mode 100644 index 000000000..45568173a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_tri_6 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_0 new file mode 100644 index 000000000..509ed6529 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_0 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_1 new file mode 100644 index 000000000..49c0a080a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_1 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_2 new file mode 100644 index 000000000..c109c19f5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_2 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_3 new file mode 100644 index 000000000..c7c1e10a6 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_3 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_4 new file mode 100644 index 000000000..a26e55df1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_5 new file mode 100644 index 000000000..d1177d633 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_5 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_6 new file mode 100644 index 000000000..d947223ad --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor30DL_vtx_6 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL new file mode 100644 index 000000000..9da99431f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_0 new file mode 100644 index 000000000..f94c732e4 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_0 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_1 new file mode 100644 index 000000000..348919286 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_1 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_10 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_10 new file mode 100644 index 000000000..959b692d4 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_10 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_11 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_11 new file mode 100644 index 000000000..41fb8d2b9 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_11 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_12 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_12 new file mode 100644 index 000000000..8062b5a56 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_12 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_2 new file mode 100644 index 000000000..7c52dae86 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_2 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_3 new file mode 100644 index 000000000..af7892786 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_3 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_4 new file mode 100644 index 000000000..e662f6ed6 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_4 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_5 new file mode 100644 index 000000000..22b809b3f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_5 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_6 new file mode 100644 index 000000000..1d845ad8a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_6 @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_7 new file mode 100644 index 000000000..12c90c209 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_7 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_8 new file mode 100644 index 000000000..bbd9078ce --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_8 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_9 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_9 new file mode 100644 index 000000000..11e6780ea --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_tri_9 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_0 new file mode 100644 index 000000000..8579d6fee --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_0 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_1 new file mode 100644 index 000000000..b0dcceeec --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_1 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_10 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_10 new file mode 100644 index 000000000..7d59969b3 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_10 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_11 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_11 new file mode 100644 index 000000000..ab7d95f64 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_11 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_12 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_12 new file mode 100644 index 000000000..514f00f38 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_12 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_2 new file mode 100644 index 000000000..7135901b7 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_2 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_3 new file mode 100644 index 000000000..874e86e45 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_3 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_4 new file mode 100644 index 000000000..8dcece79b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_4 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_5 new file mode 100644 index 000000000..030415bf5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_5 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_6 new file mode 100644 index 000000000..5758decfe --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_6 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_7 new file mode 100644 index 000000000..7e171bd29 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_7 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_8 new file mode 100644 index 000000000..26f056a5f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_8 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_9 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_9 new file mode 100644 index 000000000..878f90b20 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor40DL_vtx_9 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL new file mode 100644 index 000000000..537d98d5f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_0 new file mode 100644 index 000000000..41e8cb3c9 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_0 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_1 new file mode 100644 index 000000000..0beb4cd5f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_1 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_2 new file mode 100644 index 000000000..a33dc9689 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_2 @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_3 new file mode 100644 index 000000000..8cd67cdeb --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_3 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_4 new file mode 100644 index 000000000..f3cb40c18 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_4 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_5 new file mode 100644 index 000000000..28c1fa004 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_tri_5 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_0 new file mode 100644 index 000000000..4bbea8de4 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_0 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_1 new file mode 100644 index 000000000..c331cabed --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_1 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_2 new file mode 100644 index 000000000..62bb3dc53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_2 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_3 new file mode 100644 index 000000000..135764c05 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_3 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_4 new file mode 100644 index 000000000..1066194fb --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_5 new file mode 100644 index 000000000..afec2ee78 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor50DL_vtx_5 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL new file mode 100644 index 000000000..fe51b9f6b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_0 new file mode 100644 index 000000000..1d746dde9 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_0 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_1 new file mode 100644 index 000000000..095e5d8f1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_1 @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_2 new file mode 100644 index 000000000..b1f3c81fc --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_2 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_3 new file mode 100644 index 000000000..e88a5cffe --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_3 @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_4 new file mode 100644 index 000000000..cbc9ce14a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_4 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_5 new file mode 100644 index 000000000..6646786c1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_5 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_6 new file mode 100644 index 000000000..a2a881763 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_6 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_7 new file mode 100644 index 000000000..2a5440b86 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_7 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_8 new file mode 100644 index 000000000..245daae2b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_8 @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_9 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_9 new file mode 100644 index 000000000..34a3d0b55 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_tri_9 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_0 new file mode 100644 index 000000000..b33405eec --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_0 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_1 new file mode 100644 index 000000000..ff671566d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_1 @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_2 new file mode 100644 index 000000000..21358026e --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_2 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_3 new file mode 100644 index 000000000..831547972 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_3 @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_4 new file mode 100644 index 000000000..c591133b8 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_4 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_5 new file mode 100644 index 000000000..d111addad --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_5 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_6 new file mode 100644 index 000000000..2684a5759 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_6 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_7 new file mode 100644 index 000000000..a2ab6b20a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_7 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_8 new file mode 100644 index 000000000..fed438e57 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_8 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_9 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_9 new file mode 100644 index 000000000..9f8e178ed --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor60DL_vtx_9 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL new file mode 100644 index 000000000..9d7a0b749 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_0 new file mode 100644 index 000000000..540a5e3e3 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_0 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_1 new file mode 100644 index 000000000..3b27e35d2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_1 @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_2 new file mode 100644 index 000000000..29326efac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_2 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_3 new file mode 100644 index 000000000..83850278e --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_3 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_4 new file mode 100644 index 000000000..38401ac4f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_4 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_5 new file mode 100644 index 000000000..ef0b4397d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_5 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_6 new file mode 100644 index 000000000..0df608625 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_tri_6 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_0 new file mode 100644 index 000000000..6e115c0bb --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_0 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_1 new file mode 100644 index 000000000..ce6941dc9 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_1 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_2 new file mode 100644 index 000000000..56624ffb0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_2 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_3 new file mode 100644 index 000000000..ec758ec91 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_3 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_4 new file mode 100644 index 000000000..3e9cc0ff4 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_5 new file mode 100644 index 000000000..ac28e8fb0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_5 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_6 new file mode 100644 index 000000000..0cf3101e0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor70DL_vtx_6 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL new file mode 100644 index 000000000..ba14f553d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_0 new file mode 100644 index 000000000..233c5e5b7 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_0 @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_1 new file mode 100644 index 000000000..160f85e33 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_1 @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_2 new file mode 100644 index 000000000..712db2ead --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_2 @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_3 new file mode 100644 index 000000000..567f9bbfa --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_3 @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_4 new file mode 100644 index 000000000..ed60abbb9 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_4 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_5 new file mode 100644 index 000000000..9d0125976 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_5 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_6 new file mode 100644 index 000000000..011391daa --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_6 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_7 new file mode 100644 index 000000000..ae4be6ebd --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_7 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_8 new file mode 100644 index 000000000..b7a34eb1d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_tri_8 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_0 new file mode 100644 index 000000000..4e538463f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_0 @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_1 new file mode 100644 index 000000000..1c7a6b49c --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_1 @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_2 new file mode 100644 index 000000000..2717d84f0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_2 @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_3 new file mode 100644 index 000000000..e5f479fc4 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_3 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_4 new file mode 100644 index 000000000..5e1500678 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_4 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_5 new file mode 100644 index 000000000..e00362088 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_5 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_6 new file mode 100644 index 000000000..e67313e14 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_6 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_7 new file mode 100644 index 000000000..7acc51f2a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_7 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_8 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_8 new file mode 100644 index 000000000..c3ac2ef36 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor80DL_vtx_8 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL new file mode 100644 index 000000000..f96deccc4 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_0 new file mode 100644 index 000000000..aaf575f3e --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_0 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_1 new file mode 100644 index 000000000..17e2bbb14 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_1 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_2 new file mode 100644 index 000000000..45f70fca8 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_2 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_3 new file mode 100644 index 000000000..501540e99 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_3 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_4 new file mode 100644 index 000000000..6aa20edeb --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_4 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_5 new file mode 100644 index 000000000..9f5515c3b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_5 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_6 new file mode 100644 index 000000000..e8b2ebe15 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_6 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_7 new file mode 100644 index 000000000..e8686cfeb --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_tri_7 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_0 new file mode 100644 index 000000000..4bf94f75a --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_0 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_1 new file mode 100644 index 000000000..a3e163984 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_1 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_2 new file mode 100644 index 000000000..5075a9732 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_2 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_3 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_3 new file mode 100644 index 000000000..7b0fce1b2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_3 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_4 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_4 new file mode 100644 index 000000000..240d7afe2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_4 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_5 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_5 new file mode 100644 index 000000000..adf5dfa9b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_5 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_6 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_6 new file mode 100644 index 000000000..5e02e04d8 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_6 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_7 b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_7 new file mode 100644 index 000000000..f92e3d98d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasDecor90DL_vtx_7 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL new file mode 100644 index 000000000..2bad08d2d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_tri_0 new file mode 100644 index 000000000..79b9903f8 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_tri_0 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_tri_1 new file mode 100644 index 000000000..0f82cf893 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_tri_1 @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_vtx_0 new file mode 100644 index 000000000..a990fc5af --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_vtx_0 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_vtx_1 new file mode 100644 index 000000000..746770594 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasStarDL_vtx_1 @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 000000000..c343cfe2a --- /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 000000000..38cdbe014 --- /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 000000000..ff4e066a5 --- /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 000000000..561d3ac5e --- /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 000000000..94e5e1fef --- /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 000000000..01ed88a14 --- /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 000000000..fd03778f8 --- /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/hilite_melon b/soh/assets/custom/objects/object_xmas_tree/hilite_melon new file mode 100644 index 000000000..df1d605b3 Binary files /dev/null and b/soh/assets/custom/objects/object_xmas_tree/hilite_melon differ diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_B_64 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_B_64 new file mode 100644 index 000000000..e2cb1c6af --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_B_64 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_G_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_G_32 new file mode 100644 index 000000000..5f67d4de1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_G_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_R_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_R_32 new file mode 100644 index 000000000..f330997c2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_R_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_R_64 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_R_64 new file mode 100644 index 000000000..ddba85e48 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor100DL_f3dlite_Wrapping_R_64 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_G new file mode 100644 index 000000000..424720964 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_B new file mode 100644 index 000000000..a2fb86662 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_R new file mode 100644 index 000000000..780bee1c5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble2_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble3_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble3_G new file mode 100644 index 000000000..5ec29067d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble3_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble3_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble3_R new file mode 100644 index 000000000..6bfad5f53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor10DL_f3dlite_Bauble3_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_B new file mode 100644 index 000000000..a2fb86662 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_R new file mode 100644 index 000000000..780bee1c5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble2_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble3_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble3_B new file mode 100644 index 000000000..7af3c0fdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble3_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble3_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble3_G new file mode 100644 index 000000000..5ec29067d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Bauble3_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_B_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_B_32 new file mode 100644 index 000000000..1425245e0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_B_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_G_64 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_G_64 new file mode 100644 index 000000000..c3a973f39 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_G_64 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_R_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_R_32 new file mode 100644 index 000000000..f330997c2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor20DL_f3dlite_Wrapping_R_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_G new file mode 100644 index 000000000..424720964 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble2_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble2_B new file mode 100644 index 000000000..a2fb86662 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble2_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble3_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble3_B new file mode 100644 index 000000000..7af3c0fdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble3_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble3_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble3_R new file mode 100644 index 000000000..6bfad5f53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor30DL_f3dlite_Bauble3_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_B new file mode 100644 index 000000000..a2fb86662 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_R new file mode 100644 index 000000000..780bee1c5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble2_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_B new file mode 100644 index 000000000..7af3c0fdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_G new file mode 100644 index 000000000..5ec29067d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_R new file mode 100644 index 000000000..6bfad5f53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Bauble3_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_B_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_B_32 new file mode 100644 index 000000000..1425245e0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_B_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_G_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_G_32 new file mode 100644 index 000000000..5f67d4de1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_G_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_G_64 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_G_64 new file mode 100644 index 000000000..c3a973f39 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_G_64 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_R_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_R_32 new file mode 100644 index 000000000..f330997c2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_R_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_R_64 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_R_64 new file mode 100644 index 000000000..ddba85e48 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor40DL_f3dlite_Wrapping_R_64 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble1_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble1_G new file mode 100644 index 000000000..424720964 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble1_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble2_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble2_R new file mode 100644 index 000000000..780bee1c5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble2_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble3_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble3_B new file mode 100644 index 000000000..7af3c0fdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble3_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble3_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble3_R new file mode 100644 index 000000000..6bfad5f53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor50DL_f3dlite_Bauble3_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_G new file mode 100644 index 000000000..424720964 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble2_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble2_R new file mode 100644 index 000000000..780bee1c5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble2_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble3_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble3_G new file mode 100644 index 000000000..5ec29067d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Bauble3_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_B_64 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_B_64 new file mode 100644 index 000000000..e2cb1c6af --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_B_64 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_G_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_G_32 new file mode 100644 index 000000000..5f67d4de1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_G_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_R_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_R_32 new file mode 100644 index 000000000..f330997c2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_R_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_R_64 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_R_64 new file mode 100644 index 000000000..ddba85e48 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor60DL_f3dlite_Wrapping_R_64 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble1_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble1_G new file mode 100644 index 000000000..424720964 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble1_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble2_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble2_R new file mode 100644 index 000000000..780bee1c5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble2_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_B new file mode 100644 index 000000000..7af3c0fdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_G new file mode 100644 index 000000000..5ec29067d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_R new file mode 100644 index 000000000..6bfad5f53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor70DL_f3dlite_Bauble3_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble2_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble2_G new file mode 100644 index 000000000..a3ebffce5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble2_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_B new file mode 100644 index 000000000..7af3c0fdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_G new file mode 100644 index 000000000..5ec29067d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_R new file mode 100644 index 000000000..6bfad5f53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Bauble3_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_B_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_B_32 new file mode 100644 index 000000000..1425245e0 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_B_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_G_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_G_32 new file mode 100644 index 000000000..5f67d4de1 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_G_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_R_32 b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_R_32 new file mode 100644 index 000000000..f330997c2 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor80DL_f3dlite_Wrapping_R_32 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_B new file mode 100644 index 000000000..0562ad514 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_G new file mode 100644 index 000000000..424720964 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_R new file mode 100644 index 000000000..ed8997bac --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble1_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble2_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble2_B new file mode 100644 index 000000000..a2fb86662 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble2_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble2_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble2_R new file mode 100644 index 000000000..780bee1c5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble2_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_B b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_B new file mode 100644 index 000000000..7af3c0fdf --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_B @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_G b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_G new file mode 100644 index 000000000..5ec29067d --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_G @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_R b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_R new file mode 100644 index 000000000..6bfad5f53 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasDecor90DL_f3dlite_Bauble3_R @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasStarDL_f3dlite_Glow b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasStarDL_f3dlite_Glow new file mode 100644 index 000000000..381668c5c --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasStarDL_f3dlite_Glow @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasStarDL_f3dlite_OrnamentGold b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasStarDL_f3dlite_OrnamentGold new file mode 100644 index 000000000..b657da8a7 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasStarDL_f3dlite_OrnamentGold @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + 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 000000000..37fdb10d2 --- /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 000000000..119341c70 --- /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 000000000..9baaadbf5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/textures/parameter_static/gTriforcePiece.rgba32.png b/soh/assets/custom/textures/parameter_static/gTriforcePiece.rgba32.png index cc67b6a13..eace659af 100644 Binary files a/soh/assets/custom/textures/parameter_static/gTriforcePiece.rgba32.png and b/soh/assets/custom/textures/parameter_static/gTriforcePiece.rgba32.png differ diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h index aa50cb4a3..5912aaa30 100644 --- a/soh/assets/soh_assets.h +++ b/soh/assets/soh_assets.h @@ -8,6 +8,27 @@ // On Mac, not using aligned resource names was causing crashes in release builds // objects +#define dgLinkAdultHatTrimDL "__OTR__objects/object_festivehats/gLinkAdultHatTrimDL" +static const ALIGN_ASSET(2) char gLinkAdultHatTrimDL[] = dgLinkAdultHatTrimDL; + +#define dgLinkAdultPompomDL "__OTR__objects/object_festivehats/gLinkAdultPompomDL" +static const ALIGN_ASSET(2) char gLinkAdultPompomDL[] = dgLinkAdultPompomDL; + +#define dgLinkChildHatTrimDL "__OTR__objects/object_festivehats/gLinkChildHatTrimDL" +static const ALIGN_ASSET(2) char gLinkChildHatTrimDL[] = dgLinkChildHatTrimDL; + +#define dgPaperCrownGenericDL "__OTR__objects/object_festivehats/gPaperCrownGenericDL" +static const ALIGN_ASSET(2) char gPaperCrownGenericDL[] = dgPaperCrownGenericDL; + +#define dgSantaHatGenericDL "__OTR__objects/object_festivehats/gSantaHatGenericDL" +static const ALIGN_ASSET(2) char gSantaHatGenericDL[] = dgSantaHatGenericDL; + +#define dgHorseAntlersDL "__OTR__objects/object_festivehats/gHorseAntlersDL" +static const ALIGN_ASSET(2) char gHorseAntlersDL[] = dgHorseAntlersDL; + +#define dgEponaRudolphHatDL "__OTR__objects/object_festivehats/gEponaRudolphHatDL" +static const ALIGN_ASSET(2) char gEponaRudolphHatDL[] = dgEponaRudolphHatDL; + #define dgChristmasGreenTreasureChestFrontTex "__OTR__objects/object_box/gChristmasGreenTreasureChestFrontTex" static const ALIGN_ASSET(2) char gChristmasGreenTreasureChestFrontTex[] = dgChristmasGreenTreasureChestFrontTex; @@ -146,6 +167,54 @@ static const ALIGN_ASSET(2) char gFishingPoleGiDL[] = dgFishingPoleGiDL; #define dgMysteryItemDL "__OTR__objects/object_mystery_item/gMysteryItemDL" static const ALIGN_ASSET(2) char gMysteryItemDL[] = dgMysteryItemDL; +#define dgXmasTreeDL "__OTR__objects/object_xmas_tree/gXmasTreeDL" +static const ALIGN_ASSET(2) char gXmasTreeDL[] = dgXmasTreeDL; + +#define dgXmasDecor10DL "__OTR__objects/object_xmas_tree/gXmasDecor10DL" +static const ALIGN_ASSET(2) char gXmasDecor10DL[] = dgXmasDecor10DL; + +#define dgXmasDecor20DL "__OTR__objects/object_xmas_tree/gXmasDecor20DL" +static const ALIGN_ASSET(2) char gXmasDecor20DL[] = dgXmasDecor20DL; + +#define dgXmasDecor30DL "__OTR__objects/object_xmas_tree/gXmasDecor30DL" +static const ALIGN_ASSET(2) char gXmasDecor30DL[] = dgXmasDecor30DL; + +#define dgXmasDecor40DL "__OTR__objects/object_xmas_tree/gXmasDecor40DL" +static const ALIGN_ASSET(2) char gXmasDecor40DL[] = dgXmasDecor40DL; + +#define dgXmasDecor50DL "__OTR__objects/object_xmas_tree/gXmasDecor50DL" +static const ALIGN_ASSET(2) char gXmasDecor50DL[] = dgXmasDecor50DL; + +#define dgXmasDecor60DL "__OTR__objects/object_xmas_tree/gXmasDecor60DL" +static const ALIGN_ASSET(2) char gXmasDecor60DL[] = dgXmasDecor60DL; + +#define dgXmasDecor70DL "__OTR__objects/object_xmas_tree/gXmasDecor70DL" +static const ALIGN_ASSET(2) char gXmasDecor70DL[] = dgXmasDecor70DL; + +#define dgXmasDecor80DL "__OTR__objects/object_xmas_tree/gXmasDecor80DL" +static const ALIGN_ASSET(2) char gXmasDecor80DL[] = dgXmasDecor80DL; + +#define dgXmasDecor90DL "__OTR__objects/object_xmas_tree/gXmasDecor90DL" +static const ALIGN_ASSET(2) char gXmasDecor90DL[] = dgXmasDecor90DL; + +#define dgXmasDecor100DL "__OTR__objects/object_xmas_tree/gXmasDecor100DL" +static const ALIGN_ASSET(2) char gXmasDecor100DL[] = dgXmasDecor100DL; + +#define dgXmasStarDL "__OTR__objects/object_xmas_tree/gXmasStarDL" +static const ALIGN_ASSET(2) char gXmasStarDL[] = dgXmasStarDL; + +#define dgKakarikoDecorDL "__OTR__objects/object_kakariko_decor/gKakarikoDecorDL" +static const ALIGN_ASSET(2) char gKakarikoDecorDL[] = dgKakarikoDecorDL; + +#define dgTempleOfTimeDecorDL "__OTR__objects/object_temple_of_time_decor/gTempleOfTimeDecorDL" +static const ALIGN_ASSET(2) char gTempleOfTimeDecorDL[] = dgTempleOfTimeDecorDL; + +#define dgKakarikoChildDecorDL "__OTR__objects/object_kakariko_decor/gKakarikoChildDecorDL" +static const ALIGN_ASSET(2) char gKakarikoChildDecorDL[] = dgKakarikoChildDecorDL; + +#define dgKakarikoAdultDecorDL "__OTR__objects/object_kakariko_decor/gKakarikoAdultDecorDL" +static const ALIGN_ASSET(2) char gKakarikoAdultDecorDL[] = dgKakarikoAdultDecorDL; + #define dgBombchuBagBodyDL "__OTR__objects/object_bombchubag/gBombchuBagBodyDL" static const ALIGN_ASSET(2) char gBombchuBagBodyDL[] = dgBombchuBagBodyDL; diff --git a/soh/soh/ActorDB.cpp b/soh/soh/ActorDB.cpp index 70ea29675..3c0df4db3 100644 --- a/soh/soh/ActorDB.cpp +++ b/soh/soh/ActorDB.cpp @@ -612,8 +612,61 @@ static ActorDBInit EnPartnerInit = { }; extern "C" s16 gEnPartnerId; +#include "src/overlays/actors/ovl_En_Snowball/z_en_snowball.h" +static ActorDBInit EnSnowballInit = { + "En_Snowball", + "Snowball", + ACTORCAT_ITEMACTION, + (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED | ACTOR_FLAG_HOOKSHOT_PULLS_ACTOR | + ACTOR_FLAG_CAN_PRESS_SWITCHES), + OBJECT_GAMEPLAY_KEEP, + sizeof(EnSnowball), + (ActorFunc)EnSnowball_Init, + (ActorFunc)EnSnowball_Destroy, + (ActorFunc)EnSnowball_Update, + (ActorFunc)EnSnowball_Draw, + nullptr, +}; +extern "C" s16 gEnSnowballId; + +#include "src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h" +static ActorDBInit EnChristmasTreeInit = { + "En_ChristmasTree", + "Christmas Tree", + ACTORCAT_PROP, + (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | + ACTOR_FLAG_DRAW_CULLING_DISABLED), + OBJECT_GAMEPLAY_KEEP, + sizeof(EnChristmasTree), + (ActorFunc)EnChristmasTree_Init, + (ActorFunc)EnChristmasTree_Destroy, + (ActorFunc)EnChristmasTree_Update, + (ActorFunc)EnChristmasTree_Draw, + nullptr, +}; +extern "C" s16 gEnChristmasTreeId; + +#include "src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.h" +static ActorDBInit EnChristmasDecoInit = { + "En_ChristmasDeco", + "Christmas Decos", + ACTORCAT_PROP, + (ACTOR_FLAG_DRAW_CULLING_DISABLED), + OBJECT_GAMEPLAY_KEEP, + sizeof(EnChristmasDeco), + (ActorFunc)EnChristmasDeco_Init, + (ActorFunc)EnChristmasDeco_Destroy, + (ActorFunc)EnChristmasDeco_Update, + (ActorFunc)EnChristmasDeco_Draw, + nullptr, +}; +extern "C" s16 gEnChristmasDecoId; + void ActorDB::AddBuiltInCustomActors() { gEnPartnerId = ActorDB::Instance->AddEntry(EnPartnerInit).entry.id; + gEnSnowballId = ActorDB::Instance->AddEntry(EnSnowballInit).entry.id; + gEnChristmasTreeId = ActorDB::Instance->AddEntry(EnChristmasTreeInit).entry.id; + gEnChristmasDecoId = ActorDB::Instance->AddEntry(EnChristmasDecoInit).entry.id; } extern "C" ActorDBEntry* ActorDB_Retrieve(const int id) { diff --git a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp index 314b92b40..926799bb6 100644 --- a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp +++ b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp @@ -48,6 +48,13 @@ extern "C" { #include "textures/nintendo_rogo_static/nintendo_rogo_static.h" #include "objects/object_gi_rabit_mask/object_gi_rabit_mask.h" #include "overlays/ovl_Magic_Wind/ovl_Magic_Wind.h" +#include "objects/object_wood02/object_wood02.h" +#include "scenes/overworld/spot00/spot00_room_0.h" +#include "scenes/overworld/spot04/spot04_room_0.h" +#include "scenes/overworld/spot04/spot04_room_1.h" +#include "scenes/overworld/spot20/spot20_room_0.h" +#include "scenes/overworld/spot03/spot03_room_0.h" +#include "scenes/overworld/spot15/spot15_room_0.h" extern PlayState* gPlayState; void ResourceMgr_PatchGfxByName(const char* path, const char* patchName, int index, Gfx instruction); @@ -198,9 +205,9 @@ Color_RGBA8 ColorRGBA8(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { colors were darker than the gDPSetPrimColor. You will see many more examples of this below in the `ApplyOrResetCustomGfxPatches` method */ static std::map cosmeticOptions = { - COSMETIC_OPTION("Link.KokiriTunic", "Kokiri Tunic", COSMETICS_GROUP_LINK, ColorRGBA8( 30, 105, 27, 255), false, true, false), - COSMETIC_OPTION("Link.GoronTunic", "Goron Tunic", COSMETICS_GROUP_LINK, ColorRGBA8(100, 20, 0, 255), false, true, false), - COSMETIC_OPTION("Link.ZoraTunic", "Zora Tunic", COSMETICS_GROUP_LINK, ColorRGBA8( 0, 60, 100, 255), false, true, false), + COSMETIC_OPTION("Link.KokiriTunic", "Kokiri Tunic", COSMETICS_GROUP_LINK, ColorRGBA8(255, 0, 0, 255), false, true, false), + COSMETIC_OPTION("Link.GoronTunic", "Goron Tunic", COSMETICS_GROUP_LINK, ColorRGBA8(255, 0, 0, 255), false, true, false), + COSMETIC_OPTION("Link.ZoraTunic", "Zora Tunic", COSMETICS_GROUP_LINK, ColorRGBA8(255, 0, 0, 255), false, true, false), COSMETIC_OPTION("Link.Hair", "Hair", COSMETICS_GROUP_LINK, ColorRGBA8(255, 173, 27, 255), false, true, true), COSMETIC_OPTION("Link.Linen", "Linen", COSMETICS_GROUP_LINK, ColorRGBA8(255, 255, 255, 255), false, true, true), COSMETIC_OPTION("Link.Boots", "Boots", COSMETICS_GROUP_LINK, ColorRGBA8( 93, 44, 18, 255), false, true, true), @@ -251,7 +258,7 @@ static std::map cosmeticOptions = { COSMETIC_OPTION("Consumable.DDHeartBorder", "DD Heart Border", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8(255, 255, 255, 255), false, true, true), COSMETIC_OPTION("Consumable.Magic", "Magic", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8( 0, 200, 0, 255), false, true, false), COSMETIC_OPTION("Consumable.MagicActive", "Magic Active", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8(250, 250, 0, 255), false, true, true), - COSMETIC_OPTION("Consumable_MagicInfinite", "Infinite Magic", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8( 0, 0, 200, 255), false, true, true), + COSMETIC_OPTION("Consumable.MagicInfinite", "Infinite Magic", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8( 0, 0, 200, 255), false, true, true), COSMETIC_OPTION("Consumable.MagicBorder", "Magic Border", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8(255, 255, 255, 255), false, true, true), COSMETIC_OPTION("Consumable.MagicBorderActive", "Magic Border Active", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8(255, 255, 255, 255), false, true, true), COSMETIC_OPTION("Consumable.GreenRupee", "Green Rupee", COSMETICS_GROUP_CONSUMABLE, ColorRGBA8( 50, 255, 50, 255), false, true, true), @@ -439,7 +446,7 @@ static std::map cosmeticOptions = { COSMETIC_OPTION("NPC.Dog1", "Dog 1", COSMETICS_GROUP_NPC, ColorRGBA8(255, 255, 200, 255), false, true, true), COSMETIC_OPTION("NPC.Dog2", "Dog 2", COSMETICS_GROUP_NPC, ColorRGBA8(150, 100, 50, 255), false, true, true), COSMETIC_OPTION("NPC.GoldenSkulltula", "Golden Skulltula", COSMETICS_GROUP_NPC, ColorRGBA8(255, 255, 255, 255), false, true, false), - COSMETIC_OPTION("NPC.Kokiri", "Kokiri", COSMETICS_GROUP_NPC, ColorRGBA8( 0, 130, 70, 255), false, true, false), + COSMETIC_OPTION("NPC.Kokiri", "Kokiri", COSMETICS_GROUP_NPC, ColorRGBA8(255, 0, 0, 255), false, true, false), COSMETIC_OPTION("NPC.Gerudo", "Gerudo", COSMETICS_GROUP_NPC, ColorRGBA8( 90, 0, 140, 255), false, true, false), COSMETIC_OPTION("NPC.MetalTrap", "Metal Trap", COSMETICS_GROUP_NPC, ColorRGBA8(255, 255, 255, 255), false, true, true), COSMETIC_OPTION("NPC.IronKnuckles", "Iron Knuckles", COSMETICS_GROUP_NPC, ColorRGBA8(245, 255, 205, 255), false, true, false), @@ -566,6 +573,23 @@ void CosmeticsUpdateTick() { 5. GFX Command: The GFX command you want to insert */ void ApplyOrResetCustomGfxPatches(bool manualChange) { + if (manualChange) { + PATCH_GFX(object_wood02_DL_007968, "Tree1", "gLetItSnow", 17, gsDPSetPrimColor(0, 0, 255, 255, 255, 255)); + PATCH_GFX(object_wood02_DL_000090, "Tree2", "gLetItSnow", 17, gsDPSetPrimColor(0, 0, 200, 255, 255, 255)); + PATCH_GFX(object_wood02_DL_000340, "Tree3", "gLetItSnow", 17, gsDPSetPrimColor(0, 0, 255, 255, 255, 255)); + PATCH_GFX(object_wood02_DL_000340, "Tree4", "gLetItSnow", 24, gsDPSetPrimColor(0, 0, 255, 255, 255, 255)); + PATCH_GFX(spot00_room_0DL_0139A8, "Path1", "gLetItSnow", 23, gsDPSetPrimColor(0, 0, 100, 150, 255, 60)); + PATCH_GFX(spot00_room_0DL_013250, "Path2", "gLetItSnow", 23, gsDPSetPrimColor(0, 0, 100, 150, 255, 60)); + PATCH_GFX(spot00_room_0DL_0143C8, "Path3", "gLetItSnow", 23, gsDPSetPrimColor(0, 0, 100, 150, 255, 60)); + PATCH_GFX(spot04_room_0DL_018048, "Path4", "gLetItSnow", 24, gsDPSetPrimColor(0, 0, 100, 150, 255, 60)); + PATCH_GFX(spot04_room_1DL_007810, "Path5", "gLetItSnow", 24, gsDPSetPrimColor(0, 0, 100, 150, 255, 60)); + PATCH_GFX(spot20_room_0DL_0062D0, "Path6", "gLetItSnow", 23, gsDPSetPrimColor(0, 0, 200, 230, 255, 30)); + PATCH_GFX(spot20_room_0DL_004460, "Path8", "gLetItSnow", 31, gsDPSetPrimColor(0, 0, 200, 230, 255, 30)); + PATCH_GFX(spot20_room_0DL_004460, "Path9", "gLetItSnow", 118, gsDPSetPrimColor(0, 0, 200, 230, 255, 30)); + PATCH_GFX(spot20_room_0DL_0065E8, "Path10", "gLetItSnow", 24, gsDPSetPrimColor(0, 0, 200, 230, 255, 30)); + PATCH_GFX(spot03_room_0DL_00C4B0, "Path11", "gLetItSnow", 23, gsDPSetPrimColor(0, 0, 200, 230, 255, 30)); + PATCH_GFX(spot15_room_0DL_00C748, "Path12", "gLetItSnow", 23, gsDPSetPrimColor(0, 0, 200, 230, 255, 30)); + } static CosmeticOption& magicFaroresPrimary = cosmeticOptions.at("Magic.FaroresPrimary"); if (manualChange || CVarGetInteger(magicFaroresPrimary.rainbowCvar, 0)) { Color_RGBA8 color = CVarGetColor(magicFaroresPrimary.valuesCvar, magicFaroresPrimary.defaultColor); diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor.h b/soh/soh/Enhancements/game-interactor/GameInteractor.h index 8ac2d9dda..7d43d79ed 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor.h +++ b/soh/soh/Enhancements/game-interactor/GameInteractor.h @@ -68,6 +68,7 @@ typedef enum { extern "C" { #endif uint8_t GameInteractor_NoUIActive(); +void GameInteractor_SetNoUIActive(uint8_t state); GILinkSize GameInteractor_GetLinkSize(); void GameInteractor_SetLinkSize(GILinkSize size); uint8_t GameInteractor_InvisibleLinkActive(); diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor_State.cpp b/soh/soh/Enhancements/game-interactor/GameInteractor_State.cpp index bdcb4f37a..c6d751395 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor_State.cpp +++ b/soh/soh/Enhancements/game-interactor/GameInteractor_State.cpp @@ -36,6 +36,10 @@ uint8_t GameInteractor_NoUIActive() { return GameInteractor::State::NoUIActive; } +void GameInteractor_SetNoUIActive(uint8_t state) { + GameInteractor::State::NoUIActive = state; +} + // MARK: - GameInteractor::State::LinkSize GILinkSize GameInteractor_GetLinkSize() { return GameInteractor::State::LinkSize; diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index 93b4ce79e..383878489 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -40,6 +40,7 @@ extern "C" { extern SaveContext gSaveContext; extern PlayState* gPlayState; +extern s16 gEnSnowballId; } /// Switches Link's age and respawns him at the last entrance he entered. @@ -562,6 +563,87 @@ void RegisterRandomizedEnemySizes() { }); } +static CollisionPoly snowballPoly; +static Vec3f snowballPos; +static f32 raycastResult; + +static u32 iceBlockParams[] = { + 0x214, 0x1, 0x11, 0x10, 0x20, +}; + +void RegisterSnowballs() { + GameInteractor::Instance->RegisterGameHook([]() { + if (gPlayState->sceneNum != SCENE_HYRULE_FIELD && gPlayState->sceneNum != SCENE_KAKARIKO_VILLAGE) { + return; + } + + int actorsSpawned = 0; + + while (actorsSpawned < 30) { + snowballPos.x = (float)(Random((gPlayState->sceneNum == SCENE_HYRULE_FIELD ? -10000 : -2700) + 10000, + (gPlayState->sceneNum == SCENE_HYRULE_FIELD ? 5000 : 2000) + 10000) - + (float)10000.0f); + snowballPos.y = 5000; + snowballPos.z = (float)(Random((gPlayState->sceneNum == SCENE_HYRULE_FIELD ? -1000 : -2000) + 10000, + (gPlayState->sceneNum == SCENE_HYRULE_FIELD ? 15000 : 2000) + 10000) - + (float)10000.0f); + + raycastResult = BgCheck_AnyRaycastFloor1(&gPlayState->colCtx, &snowballPoly, &snowballPos); + + if (raycastResult > BGCHECK_Y_MIN) { + Actor_Spawn(&gPlayState->actorCtx, gPlayState, gEnSnowballId, snowballPos.x, raycastResult, + snowballPos.z, 0, 0, 0, gPlayState->sceneNum == SCENE_HYRULE_FIELD, 0); + actorsSpawned++; + } + } + }); + + GameInteractor::Instance->RegisterGameHook([]() { + if (gPlayState->sceneNum != SCENE_LAKE_HYLIA) { + return; + } + + int actorsSpawned = 0; + + Vec3f spawnedIceBlockPos[15]; + + while (actorsSpawned < 15) { + Vec3f iceBlockPos; + iceBlockPos.x = (float)(Random((-4200) + 10000, (3000) + 10000) - (float)10000.0f); + iceBlockPos.y = -1713.0f; + iceBlockPos.z = (float)(Random((2600) + 10000, (9000) + 10000) - (float)10000.0f); + + raycastResult = BgCheck_AnyRaycastFloor1(&gPlayState->colCtx, &snowballPoly, &iceBlockPos); + + if (raycastResult > BGCHECK_Y_MIN) { + + bool overlaps = false; + for (int i = 0; i < actorsSpawned; i++) { + if (Math_Vec3f_DistXZ(&spawnedIceBlockPos[i], &iceBlockPos) < 500.0f) { + overlaps = true; + break; + } + } + + if (overlaps) { + continue; + } + + if (LINK_IS_ADULT && !Flags_GetEventChkInf(EVENTCHKINF_RAISED_LAKE_HYLIA_WATER)) { + iceBlockPos.y = raycastResult; + } else { + iceBlockPos.y = -1310.0f; + } + + Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_BG_SPOT08_ICEBLOCK, iceBlockPos.x, iceBlockPos.y, + iceBlockPos.z, 0, (s16)Random(0, 0xFFFF), 0, RandomElement(iceBlockParams), 0); + spawnedIceBlockPos[actorsSpawned] = iceBlockPos; + actorsSpawned++; + } + } + }); +} + void InitMods() { RandomizerRegisterHooks(); TimeSaverRegisterHooks(); @@ -574,4 +656,5 @@ void InitMods() { RegisterPatchHandHandler(); RegisterHurtContainerModeHandler(); RandoKaleido_RegisterHooks(); + RegisterSnowballs(); } diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index c08b6a1e4..8f4bd656c 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -403,7 +403,7 @@ void Rando::StaticData::InitItemTable() { itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, Text{ "Deku Stick Capacity (30)", "Capacité de Bâtons Mojo (30)", "Deku-Stab-Kapazität (30)" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, Text{ "Magic Meter", "Jauge de Magie", "Magische Kraft" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, RG_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, Text{ "Enhanced Magic Meter", "Jauge de Magie améliorée", "Verb. Magische Kraft" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{ "Triforce Piece", "Triforce Piece", "Triforce-Splitter" }, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{ "Christmas Ornament", "Christmas Ornament", "Christmas Ornament" }, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Archipelago itemTable[RG_ARCHIPELAGO_ITEM_USEFUL] = Item(RG_ARCHIPELAGO_ITEM_USEFUL, Text{"Useful AP Item", "Useful AP Item", "Useful AP Item"}, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, RG_ARCHIPELAGO_ITEM_USEFUL, OBJECT_GI_LETTER, GID_LETTER_ZELDA, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 52c2d7ae7..c06cb4ca8 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -67,6 +67,7 @@ const std::string Randomizer::NaviRandoMessageTableID = "RandomizerNavi"; const std::string Randomizer::IceTrapRandoMessageTableID = "RandomizerIceTrap"; const std::string Randomizer::randoMiscHintsTableID = "RandomizerMiscHints"; const std::string Randomizer::archipelagoItemsTableID = "ÁrchipelagoItems"; +const std::string Randomizer::christmasTreeMessageTableID = "RandomizerChristmasTree"; static const char* englishRupeeNames[188] = { "[P]", @@ -4822,33 +4823,33 @@ 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!", - "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 à " + { "You found a %yChristmas Ornament%w!&%g[[current]]%w down, %c[[remaining]]%w to go. It's a start!", + "Ein %yChristmas Ornament%w! Du hast&%g[[current]]%w von %c[[required]]%w gefunden. Es ist ein&Anfang!", + "Vous trouvez un %yChristmas Ornament%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!", - "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 à " + { "You found a %yChristmas Ornament%w!&%g[[current]]%w down, %c[[remaining]]%w to go. Progress!", + "Ein %yChristmas Ornament%w! Du hast&%g[[current]]%w von %c[[required]]%w gefunden. Es geht voran!", + "Vous trouvez un %yChristmas Ornament%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!", - "Ein %yTriforce-Splitter%w! Du hast&schon %g[[current]]%w von %c[[required]]%w gefunden. Schon&über die " + { "You found a %yChristmas Ornament%w!&%g[[current]]%w down, %c[[remaining]]%w to go. Over half-way&there!", + "Ein %yChristmas Ornament%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 à " + "Vous trouvez un %yChristmas Ornament%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!", - "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 à " + { "You found a %yChristmas Ornament%w!&%g[[current]]%w down, %c[[remaining]]%w to go. Almost done!", + "Ein %yChristmas Ornament%w! Du hast&schon %g[[current]]%w von %c[[required]]%w gefunden. Fast&geschafft!", + "Vous trouvez un %yChristmas Ornament%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!", - "Noch ein %yTriforce-Splitter%w! Du&brauchtest nur %c[[required]]%w, hast jetzt aber %g[[current]]%w!", + { "You found a spare %yChristmas Ornament%w!&You only needed %c[[required]]%w, but you have %g[[current]]%w!", + "Noch ein %yChristmas Ornament%w! Du&brauchtest nur %c[[required]]%w, hast jetzt aber %g[[current]]%w!", "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!" }, }; @@ -4890,6 +4891,44 @@ CustomMessage Randomizer::GetTriforcePieceMessage() { 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.ship.quest.data.randomizer.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] = { @@ -5900,6 +5939,7 @@ void Randomizer::CreateCustomMessages() { CreateGetItemMessages(getItemMessages); CreateRupeeMessages(); CreateTriforcePieceMessages(); + CreateChristmasTreeMessages(); CreateNaviRandoMessages(); CreateFireTempleGoronMessages(); CreateArchipelagoItemMessage(); diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index 30cf85c66..636a806fb 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -35,6 +35,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; @@ -77,6 +78,7 @@ class Randomizer { static CustomMessage GetIceTrapMessage(); static CustomMessage GetTriforcePieceMessage(); static CustomMessage GetArchipelagoItemMessage(int16_t randomizerGet, uint32_t randomizerCheck); + static CustomMessage GetChristmasTreeMessage(); }; #ifdef __cplusplus diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index cd32cc4b1..342497348 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -807,7 +807,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; case RG_GOHMA_SOUL: actualItemId = item.id; @@ -1669,7 +1669,7 @@ void ItemTrackerWindow::DrawElement() { if (CVarGetInteger(CVAR_TRACKER_ITEM("DisplayType.TriforcePieces"), SECTION_DISPLAY_HIDDEN) == SECTION_DISPLAY_SEPARATE) { - BeginFloatingWindows("Triforce Piece Tracker"); + BeginFloatingWindows("Christmas Ornament Tracker"); DrawItemsInRows(triforcePieces); EndFloatingWindows(); } @@ -1992,7 +1992,7 @@ void RegisterItemTrackerWidgets() { .Tooltip("Customize what numbers are shown for key tracking.")); SohGui::mSohMenu->AddSearchWidget({ keyTracking, "Randomizer", "Item Tracker", "General Settings" }); - triforcePieceTracking = { .name = "Triforce Pieces", .type = WidgetType::WIDGET_CVAR_COMBOBOX }; + triforcePieceTracking = { .name = "Christmas Ornaments", .type = WidgetType::WIDGET_CVAR_COMBOBOX }; triforcePieceTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.TriforcePieces")) .Options(ComboboxOptions() .DefaultIndex(SECTION_DISPLAY_HIDDEN) @@ -2040,7 +2040,7 @@ void RegisterItemTrackerWidgets() { ; SohGui::mSohMenu->AddSearchWidget({ bossSoulsTracking, "Randomizer", "Item Tracker", "General Settings", "icon" }); - triforcePieceCount = { .name = "Triforce Piece Count Tracking", .type = WidgetType::WIDGET_CVAR_COMBOBOX }; + triforcePieceCount = { .name = "Christmas Ornament Count Tracking", .type = WidgetType::WIDGET_CVAR_COMBOBOX }; triforcePieceCount.CVar(CVAR_TRACKER_ITEM("TriforcePieceCounts")) .Options(ComboboxOptions() .DefaultIndex(TRIFORCE_PIECE_COLLECTED_REQUIRED_MAX) @@ -2048,7 +2048,7 @@ void RegisterItemTrackerWidgets() { .LabelPosition(LabelPositions::Far) .Color(THEME_COLOR) .ComboMap(itemTrackerTriforcePieceTrackOptions) - .Tooltip("Customize what numbers are shown for triforce piece tracking.")); + .Tooltip("Customize what numbers are shown for Christmas ornament tracking.")); SohGui::mSohMenu->AddSearchWidget({ triforcePieceCount, "Randomizer", "Item Tracker", "General Settings" }); ocarinaButtonTracking = { .name = "Ocarina Buttons", .type = WidgetType::WIDGET_CVAR_COMBOBOX }; diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 7598cd637..6a20e893a 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1313,11 +1313,23 @@ extern "C" void InitOTR(int argc, char* argv[]) { 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(CVAR_GENERAL("LetItSnow"), 1); - } else { - CVarClear(CVAR_GENERAL("LetItSnow")); - } + //if (tm_now->tm_mon == 11 && tm_now->tm_mday >= 24 && tm_now->tm_mday <= 25) { + // CVarRegisterInteger(CVAR_GENERAL("LetItSnow"), 1); + //} else { + // CVarClear(CVAR_GENERAL("LetItSnow")); + //} + + CVarRegisterInteger(CVAR_GENERAL("LetItSnow"), 1); + CVarRegisterInteger(CVAR_COSMETIC("Hud.AButton.Changed"), 1); + CVarRegisterColor(CVAR_COSMETIC("Hud.AButton.Value"), Color_RGBA8{ 255, 255, 255, 255 }); + CVarRegisterInteger(CVAR_COSMETIC("Hud.BButton.Changed"), 1); + CVarRegisterColor(CVAR_COSMETIC("Hud.BButton.Value"), Color_RGBA8{ 255, 255, 255, 255 }); + CVarRegisterInteger(CVAR_COSMETIC("Hud.CButtons.Changed"), 1); + CVarRegisterColor(CVAR_COSMETIC("Hud.CButtons.Value"), Color_RGBA8{ 255, 255, 255, 255 }); + CVarRegisterInteger(CVAR_COSMETIC("Consumable.Hearts.Changed"), 1); + CVarRegisterColor(CVAR_COSMETIC("Consumable.Hearts.Value"), Color_RGBA8{ 255, 158, 0, 255 }); + CVarRegisterInteger(CVAR_COSMETIC("Consumable.Magic.Changed"), 1); + CVarRegisterColor(CVAR_COSMETIC("Consumable.Magic.Value"), Color_RGBA8{ 255, 0, 0, 255 }); srand(now); #ifdef ENABLE_REMOTE_CONTROL @@ -2427,7 +2439,9 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) { bool nonBeanMerchants = ctx->GetOption(RSK_SHUFFLE_MERCHANTS).Is(RO_SHUFFLE_MERCHANTS_ALL_BUT_BEANS) || ctx->GetOption(RSK_SHUFFLE_MERCHANTS).Is(RO_SHUFFLE_MERCHANTS_ALL); 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) { messageEntry = Randomizer::GetIceTrapMessage(); } else if (player->getItemEntry.getItemId == RG_TRIFORCE_PIECE) { diff --git a/soh/src/code/z_kankyo.c b/soh/src/code/z_kankyo.c index d78a93c6c..a99cc5b43 100644 --- a/soh/src/code/z_kankyo.c +++ b/soh/src/code/z_kankyo.c @@ -2275,17 +2275,17 @@ void Environment_FillScreen(GraphicsContext* gfxCtx, u8 red, u8 green, u8 blue, } Color_RGB8 sSandstormPrimColors[] = { - { 210, 156, 85 }, - { 255, 200, 100 }, - { 225, 160, 50 }, - { 105, 90, 40 }, + { 210, 210, 210 }, + { 255, 255, 255 }, + { 225, 225, 225 }, + { 105, 105, 105 }, }; Color_RGB8 sSandstormEnvColors[] = { - { 155, 106, 35 }, - { 200, 150, 50 }, - { 170, 110, 0 }, - { 50, 40, 0 }, + { 155, 155, 155 }, + { 200, 200, 200 }, + { 170, 170, 170 }, + { 50, 50, 50 }, }; u16 previousPatchedSandstormScreenSize = 0; diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index cab1d3cff..e1097c90a 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -3485,8 +3485,8 @@ void Interface_DrawMagicBar(PlayState* play) { if (CVarGetInteger(CVAR_COSMETIC("Consumable.Magic.Changed"), 0)) { magicbar_green = CVarGetColor24(CVAR_COSMETIC("Consumable.Magic.Value"), magicbar_green); } - if (CVarGetInteger("gCosmetics.Consumable_MagicInfinite.Changed", 0)) { - magicbar_blue = CVarGetColor24("gCosmetics.Consumable_MagicInfinite.Value", magicbar_blue); + if (CVarGetInteger(CVAR_COSMETIC("Consumable.MagicInfinite.Changed"), 0)) { + magicbar_blue = CVarGetColor24(CVAR_COSMETIC("Consumable.MagicInfinite.Value"), magicbar_blue); } OPEN_DISPS(play->state.gfxCtx); diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index b1a714dcb..eb999d72d 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -38,6 +38,9 @@ Input* D_8012D1F8 = NULL; PlayState* gPlayState; s16 firstInit = 0; s16 gEnPartnerId; +s16 gEnSnowballId; +s16 gEnChristmasTreeId; +s16 gEnChristmasDecoId; void Play_SpawnScene(PlayState* play, s32 sceneId, s32 spawn); @@ -687,6 +690,12 @@ 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) { + Actor_Spawn(&play->actorCtx, play, gEnChristmasTreeId, -734, 0, 420, 0, 0, 0, 0, true); + } + + Actor_Spawn(&play->actorCtx, play, gEnChristmasDecoId, 0, 0, 0, 0, 0, 0, 0, true); } void Play_Update(PlayState* play) { diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index 58829aee8..05060b464 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -11,6 +11,7 @@ #include "soh/ResourceManagerHelpers.h" #include +#include "soh_assets.h" typedef struct { /* 0x00 */ u8 flag; @@ -1014,10 +1015,18 @@ void* sMouthTextures[] = { }; #endif +// Original colors +// Color_RGB8 sTunicColors[] = { +// { 30, 105, 27 }, +// { 100, 20, 0 }, +// { 0, 60, 100 }, +//}; + +// Overwrite to red tunic as default for Holidays in Hyrule build Color_RGB8 sTunicColors[] = { - { 30, 105, 27 }, - { 100, 20, 0 }, - { 0, 60, 100 }, + { 255, 0, 0 }, + { 255, 0, 0 }, + { 255, 0, 0 }, }; Color_RGB8 sGauntletColors[] = { @@ -1788,6 +1797,55 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve Matrix_MultVec3f(&sZeroVec, D_80160000); } + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0) && !(this->stateFlags1 & PLAYER_STATE1_FIRST_PERSON) && + !(this->stateFlags2 & PLAYER_STATE2_CRAWLING)) { + if (limbIndex == PLAYER_LIMB_HEAD) { + OPEN_DISPS(play->state.gfxCtx); + + Matrix_Push(); + if (LINK_IS_ADULT) { + Matrix_RotateZYX(24000, -16000, -7000, MTXMODE_APPLY); + Matrix_Translate(32.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.0f, 1.0f, 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++, gLinkAdultHatTrimDL); + } else { + Matrix_RotateZYX(24000, -16000, -7000, MTXMODE_APPLY); + Matrix_Translate(32.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.0f, 1.0f, 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++, gLinkChildHatTrimDL); + } + + Matrix_Pop(); + + CLOSE_DISPS(play->state.gfxCtx); + } + + if (limbIndex == PLAYER_LIMB_HAT) { + OPEN_DISPS(play->state.gfxCtx); + + Matrix_Push(); + if (LINK_IS_ADULT) { + Matrix_RotateZYX(0, 0, 17500, MTXMODE_APPLY); + Matrix_Translate(-195.0f, 1500.0f, -95.0f, MTXMODE_APPLY); + Matrix_Scale(2.0f, 2.0f, 2.0f, MTXMODE_APPLY); + } else { + Matrix_RotateZYX(0, 0, 27000, MTXMODE_APPLY); + Matrix_Translate(-950.0f, 2600.0f, -75.0f, MTXMODE_APPLY); + Matrix_Scale(2.0f, 2.0f, 2.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++, gLinkAdultPompomDL); + Matrix_Pop(); + + CLOSE_DISPS(play->state.gfxCtx); + } + } + if (limbIndex == PLAYER_LIMB_L_HAND) { MtxF sp14C; Actor* hookedActor; diff --git a/soh/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c b/soh/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c index a85ec4f51..1c97aa17c 100644 --- a/soh/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c +++ b/soh/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c @@ -307,7 +307,7 @@ void BgSpot08Iceblock_Init(Actor* thisx, PlayState* play) { break; } - if (LINK_AGE_IN_YEARS == YEARS_CHILD) { + if (LINK_AGE_IN_YEARS == YEARS_CHILD && play->sceneNum == SCENE_ZORAS_FOUNTAIN) { Actor_Kill(&this->dyna.actor); return; } @@ -331,6 +331,12 @@ void BgSpot08Iceblock_Init(Actor* thisx, PlayState* play) { this->surfaceNormal.y = 1.0f; this->rotationAxis.x = 1.0f; + if (LINK_IS_ADULT && !Flags_GetEventChkInf(EVENTCHKINF_RAISED_LAKE_HYLIA_WATER) && + play->sceneNum == SCENE_LAKE_HYLIA) { + BgSpot08Iceblock_SetupNoAction(this); + return; + } + switch (this->dyna.actor.params & 0xF) { case 0: case 1: diff --git a/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c b/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c index acba457ab..daffc865e 100644 --- a/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c +++ b/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c @@ -6,6 +6,7 @@ #include "soh/frame_interpolation.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/OTRGlobals.h" +#include "soh_assets.h" #include "soh/ResourceManagerHelpers.h" #include // malloc @@ -1357,6 +1358,21 @@ void BossDodongo_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s Matrix_MultVec3f(&D_808CA48C, &this->unk_404); } Collider_UpdateSpheres(limbIndex, &this->collider); + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 7) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-6643, 1771, -14834, MTXMODE_APPLY); + Matrix_Translate(2000.0f, 5000.0f, 4000.0f, MTXMODE_APPLY); + Matrix_Scale(6.114f, 6.114f, 6.114f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void BossDodongo_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c b/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c index f845f323a..8de2833aa 100644 --- a/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c +++ b/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c @@ -9,6 +9,7 @@ #include "assets/objects/object_ganon_anime1/object_ganon_anime1.h" #include "assets/objects/object_ganon_anime2/object_ganon_anime2.h" #include "assets/scenes/dungeons/ganon_boss/ganon_boss_scene.h" +#include "soh_assets.h" #include "soh/frame_interpolation.h" #include "soh/OTRGlobals.h" @@ -3378,6 +3379,21 @@ void BossGanon_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* Matrix_MultVec3f(&sp1C, &this->unk_214); } + + if (limbIndex == 14) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(7749, 0, -11956, MTXMODE_APPLY); + Matrix_Translate(675.676f, -229.730f, 148.649f, MTXMODE_APPLY); + Matrix_Scale(1.014f, 1.014f, 1.014f, MTXMODE_APPLY); + + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Color_RGBA8 color = { 255, 0, 0, 255 }; + gDPSetEnvColor(POLY_OPA_DISP++, color.r, color.g, color.b, color.a); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void BossGanon_InitRand(s32 seedInit0, s32 seedInit1, s32 seedInit2) { diff --git a/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c b/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c index 1799dafd0..01fb2b855 100644 --- a/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c +++ b/soh/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c @@ -10,6 +10,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #include @@ -2649,6 +2650,18 @@ void BossGanon2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* } } + if (CVarGetInteger("gLetItSnow", 0)) { + if (limbIndex == 16) { + Matrix_Push(); + Matrix_RotateZYX(5977, 4649, 18154, MTXMODE_APPLY); + Matrix_Translate(364.865f, 67.568f, 378.378f, MTXMODE_APPLY); + Matrix_Scale(4.595f, 4.595f, 4.595f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + } + } + CLOSE_DISPS(play->state.gfxCtx); } @@ -2768,6 +2781,21 @@ void BossGanon2_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s } else if (limbIndex == 10) { Matrix_MultVec3f(&D_80907164, &this->unk_1B8); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 11) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, -15056, MTXMODE_APPLY); + Matrix_Translate(824.324f, 472.973f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.845f, 0.845f, 0.845f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 100, 100, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void func_80905674(BossGanon2* this, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c b/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c index 8f74d05a8..ba63a3ae5 100644 --- a/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c +++ b/soh/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c @@ -12,6 +12,7 @@ #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" #include "soh/OTRGlobals.h" +#include "soh_assets.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #define FLAGS \ @@ -1427,6 +1428,21 @@ void BossGanondrof_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec if (((this->flyMode != GND_FLY_PAINTING) || (this->actionFunc == BossGanondrof_Intro)) && (limbIndex <= 25)) { Matrix_MultVec3f(&zeroVec, &this->bodyPartsPos[limbIndex - 1]); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0) && this->deathState == NOT_DEAD) { + if (limbIndex == 15) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(11955, 0, -15499, MTXMODE_APPLY); + Matrix_Translate(459.460f, 256.757f, -567.568f, MTXMODE_APPLY); + Matrix_Scale(0.877f, 0.877f, 0.877f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 100, 100, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } Gfx* BossGanondrof_GetClearPixelDList(GraphicsContext* gfxCtx) { diff --git a/soh/src/overlays/actors/ovl_En_Am/z_en_am.c b/soh/src/overlays/actors/ovl_En_Am/z_en_am.c index 272d5df0c..494e4cb14 100644 --- a/soh/src/overlays/actors/ovl_En_Am/z_en_am.c +++ b/soh/src/overlays/actors/ovl_En_Am/z_en_am.c @@ -9,6 +9,7 @@ #include "overlays/actors/ovl_En_Bom/z_en_bom.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -952,6 +953,21 @@ void EnAm_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if ((limbIndex == 1) && (this->unk_264 != 0)) { EnAm_TransformSwordHitbox(&this->dyna.actor, play); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 4) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, -2657, MTXMODE_APPLY); + Matrix_Translate(4000.0f, 1148.649f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.655f, 1.655f, 1.655f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } static Vec3f sIcePosOffsets[] = { diff --git a/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c b/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c index 7897ef761..98efae143 100644 --- a/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c +++ b/soh/src/overlays/actors/ovl_En_Ani/z_en_ani.c @@ -9,6 +9,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -318,6 +319,21 @@ void EnAni_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == 15) { Matrix_MultVec3f(&sMultVec, &this->actor.focus.pos); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(1992, 0, 2656, MTXMODE_APPLY); + Matrix_Translate(972.973f, 40.541f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.965f, 0.965f, 0.965f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnAni_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c b/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c index 424f94a1c..1f764de70 100644 --- a/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c +++ b/soh/src/overlays/actors/ovl_En_Bb/z_en_bb.c @@ -9,6 +9,7 @@ #include "objects/object_Bb/object_Bb.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -1272,6 +1273,20 @@ void EnBb_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, EnBb* this = (EnBb*)thisx; BodyBreak_SetInfo(&this->bodyBreak, limbIndex, 4, 15, 15, dList, BODYBREAK_OBJECT_DEFAULT); + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-13063, 0, -27454, MTXMODE_APPLY); + Matrix_Translate(418.919f, -81.081f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.757f, 1.757f, 1.757f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } static Vec3f sFireIceOffsets[] = { diff --git a/soh/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c b/soh/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c index 409865907..99487e337 100644 --- a/soh/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c +++ b/soh/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c @@ -1,6 +1,7 @@ #include "z_en_bom_chu.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" #include "objects/gameplay_keep/gameplay_keep.h" +#include "soh_assets.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -527,5 +528,15 @@ void EnBomChu_Draw(Actor* thisx, PlayState* play) { gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, gBombchuDL); + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + Matrix_Push(); + Matrix_RotateZYX(0, -3100, 17047, MTXMODE_APPLY); + Matrix_Translate(445.946f, -27.027f, 608.108f, MTXMODE_APPLY); + Matrix_Scale(0.541f, 0.541f, 0.541f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + } + CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.c b/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.c new file mode 100644 index 000000000..2a4e02be9 --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.c @@ -0,0 +1,61 @@ +/* + * File: z_en_christmasdeco.c + * Overlay: ovl_En_ChristmasDeco + * Description: Custom Christmas Decorations + */ + +#include "z_en_christmasdeco.h" +#include "soh_assets.h" + +void EnChristmasDeco_Init(Actor* thisx, PlayState* play); +void EnChristmasDeco_Destroy(Actor* thisx, PlayState* play); +void EnChristmasDeco_Update(Actor* thisx, PlayState* play); +void EnChristmasDeco_Draw(Actor* thisx, PlayState* play); + +void EnChristmasDeco_Init(Actor* thisx, PlayState* play) { + if (play->sceneNum == SCENE_TEMPLE_OF_TIME) { + EnChristmasDeco* this = (EnChristmasDeco*)thisx; + this->actor.room = -1; + } +} + +void EnChristmasDeco_Destroy(Actor* thisx, PlayState* play) { + +} + +void EnChristmasDeco_Update(Actor* thisx, PlayState* play) { + +} + +void EnChristmasDeco_Draw(Actor* thisx, PlayState* play) { + float decoSize = 10.0f; + + OPEN_DISPS(play->state.gfxCtx); + + Gfx_SetupDL_25Opa(play->state.gfxCtx); + + Matrix_Scale(decoSize, decoSize, decoSize, MTXMODE_APPLY); + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD); + + // Assertion Halt in Debug mode, switch to Release when testing. + if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gKakarikoDecorDL); + if (LINK_IS_CHILD) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gKakarikoChildDecorDL); + } else { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gKakarikoAdultDecorDL); + } + } + + if (play->sceneNum == SCENE_TEMPLE_OF_TIME) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gTempleOfTimeDecorDL); + if (LINK_IS_CHILD) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gTempleOfTimeDecorDL); + } else { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gTempleOfTimeDecorDL); + } + } + + CLOSE_DISPS(play->state.gfxCtx); +} diff --git a/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.h b/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.h new file mode 100644 index 000000000..f2a317648 --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.h @@ -0,0 +1,27 @@ +#ifndef Z_EN_CHRISTMASDECO_H +#define Z_EN_CHRISTMASDECO_H + +#include +#include "global.h" + +struct EnChristmasDeco; + +typedef void (*EnChristmasDecoActionFunc)(struct EnChristmasDeco*, PlayState*); + +typedef struct EnChristmasDeco { + Actor actor; + EnChristmasDecoActionFunc actionFunc; +} EnChristmasDeco; + +#ifdef __cplusplus +extern "C" { +#endif +void EnChristmasDeco_Init(Actor* thisx, PlayState* play); +void EnChristmasDeco_Destroy(Actor* thisx, PlayState* play); +void EnChristmasDeco_Update(Actor* thisx, PlayState* play); +void EnChristmasDeco_Draw(Actor* thisx, PlayState* play); +#ifdef __cplusplus +} +#endif + +#endif 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 000000000..467bc6d31 --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c @@ -0,0 +1,213 @@ +/* + * 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" +#include "soh/OTRGlobals.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); +void EnChristmasTree_SetupEndTitle(EnChristmasTree* this, PlayState* play); +void EnChristmasTree_HandleEndTitle(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, + }, + { 100, 330, 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, 160.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->actor.shape.rot.y = -14784; + + 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) && Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT)) { // 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 + // 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); + this->actionFunc = EnChristmasTree_SetupEndTitle; + } else { + this->actionFunc = EnChristmasTree_Wait; + } + } + } +} + +void EnChristmasTree_SetupEndTitle(EnChristmasTree* this, PlayState* play) { + Player* player = GET_PLAYER(play); + + Actor_Spawn(&play->actorCtx, play, ACTOR_END_TITLE, 0, 0, 0, 0, 0, 0, 2, false); + + player->stateFlags1 = PLAYER_STATE1_INPUT_DISABLED; + + Flags_SetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY); + + Play_PerformSave(play); + + this->actionFunc = EnChristmasTree_HandleEndTitle; +} + +void EnChristmasTree_HandleEndTitle(EnChristmasTree* this, PlayState* play) { + Camera* camera = Play_GetCamera(play, play->mainCamera.thisIdx); + Player* player = GET_PLAYER(play); + Vec3f camAt; + Vec3f camEye; + + // Not forcing camera mode makes the camera jitter for a bit after setting position. + // Also forces letterbox bars. + Camera_ChangeMode(camera, CAM_MODE_STILL); + + // Christmas Tree's position + camAt.x = -734.0f; + camAt.y = 130.0f; + camAt.z = 420.0f; + + // Camera's position + camEye.x = -1237.0f; + camEye.y = 218.0f; + camEye.z = 408.0f; + + // Not setting fov manually makes camera zoom in after setting the above for a little bit. + camera->fov = 60.0f; + + // Set camera + Play_CameraSetAtEye(play, play->mainCamera.thisIdx, &camAt, &camEye); + + // Hide player so he's not visible in the final screen. Also move him so target arrow on tree dissapears. + player->actor.scale.x = player->actor.scale.y = player->actor.scale.z = 0.00001f; + player->actor.world.pos.z = 500.0f; + + // Hide HUD + Interface_ChangeAlpha(1); +} + +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); + + uint8_t triforceHuntActive = Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT); + float percentageCompleted = (float)gSaveContext.triforcePiecesCollected / + (float)Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + + if ((percentageCompleted >= 1.0f || !triforceHuntActive) && !this->spawnedRupee) { + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_WONDER_ITEM, this->actor.world.pos.x, this->actor.world.pos.y + 280, + this->actor.world.pos.z, 0, 0, LINK_IS_ADULT ? 1 : 4, 0x1ABF, false); + this->spawnedRupee = 1; + } + + this->actionFunc(this, play); +} + +void EnChristmasTree_Draw(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + + float treeSize = 55.0f; + uint8_t triforceHuntActive = Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT); + float percentageCompleted = (float)gSaveContext.triforcePiecesCollected / + (float)Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + + 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.1f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor10DL); + } + if (percentageCompleted >= 0.2f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor20DL); + } + if (percentageCompleted >= 0.3f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor30DL); + } + if (percentageCompleted >= 0.4f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor40DL); + } + if (percentageCompleted >= 0.5f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor50DL); + } + if (percentageCompleted >= 0.6f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor60DL); + } + if (percentageCompleted >= 0.7f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor70DL); + } + if (percentageCompleted >= 0.8f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor80DL); + } + if (percentageCompleted >= 0.9f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor90DL); + } + if (percentageCompleted >= 1.0f || !triforceHuntActive) { + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor100DL); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasStarDL); + } + + 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 000000000..fd580ac71 --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h @@ -0,0 +1,29 @@ +#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; + u8 spawnedRupee; +} 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 diff --git a/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c b/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c index 0c8c8e59e..86fa46e42 100644 --- a/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c +++ b/soh/src/overlays/actors/ovl_En_Cs/z_en_cs.c @@ -2,6 +2,7 @@ #include "objects/object_cs/object_cs.h" #include "objects/object_link_child/object_link_child.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -522,4 +523,19 @@ void EnCs_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Matrix_RotateZ(5.0 * M_PI / 9.0, MTXMODE_APPLY); Matrix_Get(&this->spookyMaskMtx); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(8191, -5757, -24133, MTXMODE_APPLY); + Matrix_Translate(270.27f, 297.297f, -513.514f, MTXMODE_APPLY); + Matrix_Scale(1.135f, 1.135f, 1.135f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } diff --git a/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c b/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c index 9852620e0..dfc217053 100644 --- a/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c +++ b/soh/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c @@ -7,6 +7,7 @@ #include "z_en_daiku_kakariko.h" #include "objects/object_daiku/object_daiku.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -538,6 +539,55 @@ void EnDaikuKakariko_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, V gSPDisplayList(POLY_OPA_DISP++, carpenterHeadDLists[this->actor.params & 3]); } + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + Matrix_Push(); + switch (this->actor.params) { + case 259: { + Matrix_RotateZYX(4649, 0, -3543, MTXMODE_APPLY); + Matrix_Translate(824.324f, 324.324f, -175.676f, MTXMODE_APPLY); + Matrix_Scale(0.966f, 0.966f, 0.966f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + case 513: { + Matrix_RotateZYX(0, 0, -6200, MTXMODE_APPLY); + Matrix_Translate(770.27f, 567.568f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.899f, 0.899f, 0.899f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 255, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + case 2: { + Matrix_RotateZYX(0, 0, 7970, MTXMODE_APPLY); + Matrix_Translate(1270.27f, -878.378f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 255, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + case -256: + default: { + Matrix_RotateZYX(0, 0, -8635, MTXMODE_APPLY); + Matrix_Translate(675.676f, 716.216f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.899f, 0.899f, 0.899f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + } + } + Matrix_Pop(); + } + } + CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c b/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c index b84103a4a..1c354c59c 100644 --- a/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c +++ b/soh/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c @@ -4,6 +4,7 @@ #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) @@ -1276,6 +1277,20 @@ void EnDekubaba_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* if (limbIndex == 1) { Collider_UpdateSpheres(limbIndex, &this->collider); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 4) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(16485, -1425, -20964, MTXMODE_APPLY); + Matrix_Translate(-149.0f, 92.0f, -587.0f, MTXMODE_APPLY); + Matrix_Scale(1.534f, 1.534f, 1.534f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnDekubaba_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c index 4ba3520b1..b3d80414d 100644 --- a/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -10,6 +10,7 @@ #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -490,9 +491,27 @@ void EnDns_Update(Actor* thisx, PlayState* play) { } } +void EnDns_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnDns* this = (EnDns*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 17) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, 17490, MTXMODE_APPLY); + Matrix_Translate(4200.0f, -472.973f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(4.932f, 4.932f, 4.932f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } +} + void EnDns_Draw(Actor* thisx, PlayState* play) { EnDns* this = (EnDns*)thisx; Gfx_SetupDL_25Opa(play->state.gfxCtx); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, NULL, &this->actor); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnDns_PostLimbDraw, &this->actor); } diff --git a/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c b/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c index 07a244cd3..3efe190fd 100644 --- a/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c +++ b/soh/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c @@ -4,6 +4,7 @@ #include "objects/object_dodongo/object_dodongo.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -914,6 +915,21 @@ void EnDodongo_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* Matrix_MultVec3f(&baseOffset, &this->icePos[i]); } } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 7) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, -13063, MTXMODE_APPLY); + Matrix_Translate(864.865f, 756.757f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.662f, 0.662f, 0.662f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnDodongo_Draw(Actor* thisx, PlayState* play2) { diff --git a/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c b/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c index c8cb4bd97..5cc221f09 100644 --- a/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c +++ b/soh/src/overlays/actors/ovl_En_Dog/z_en_dog.c @@ -7,6 +7,7 @@ #include "z_en_dog.h" #include "objects/object_dog/object_dog.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS 0 @@ -496,6 +497,19 @@ s32 EnDog_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p } void EnDog_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 4) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(20811, -32768, 3985, MTXMODE_APPLY); + Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.25f, 1.25f, 1.25f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnDog_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c b/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c index 1c5566d54..6374a1b88 100644 --- a/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c +++ b/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c @@ -9,6 +9,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -289,6 +290,21 @@ void EnDs_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == 5) { Matrix_MultVec3f(&sMultVec, &this->actor.focus.pos); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 5) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-1329, -3100, 0, MTXMODE_APPLY); + Matrix_Translate(1270.27f, 351.351f, -310.811f, MTXMODE_APPLY); + Matrix_Scale(0.797f, 0.797f, 0.797f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnDs_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Du/z_en_du.c b/soh/src/overlays/actors/ovl_En_Du/z_en_du.c index 299d70869..d5e638881 100644 --- a/soh/src/overlays/actors/ovl_En_Du/z_en_du.c +++ b/soh/src/overlays/actors/ovl_En_Du/z_en_du.c @@ -3,6 +3,7 @@ #include "scenes/overworld/spot18/spot18_scene.h" #include "soh/OTRGlobals.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_DURING_OCARINA) @@ -655,6 +656,20 @@ void EnDu_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == 16) { Matrix_MultVec3f(&D_809FF40C, &this->actor.focus.pos); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 17) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(13062, -1329, -15499, MTXMODE_APPLY); + Matrix_Translate(945.946f, -297.297f, 608.108f, MTXMODE_APPLY); + Matrix_Scale(1.217f, 1.217f, 1.217f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnDu_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c index 96a9297b9..3d3985b48 100644 --- a/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/soh/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -9,6 +9,7 @@ #include #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) @@ -1497,6 +1498,26 @@ s32 EnElf_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p return false; } +s32 EnElf_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnElf* this = (EnElf*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 2) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, 17047, MTXMODE_APPLY); + Matrix_Translate(202.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.595f, 0.595f, 0.595f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } + + return false; +} + void EnElf_Draw(Actor* thisx, PlayState* play) { s32 pad; f32 alphaScale; diff --git a/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 24c6ff5de..005313f4e 100644 --- a/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/soh/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -9,6 +9,7 @@ #include "scenes/indoors/hakasitarelay/hakasitarelay_scene.h" #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -294,6 +295,20 @@ void EnFu_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == FU_LIMB_HEAD) { Matrix_MultVec3f(&sMtxSrc, &this->actor.focus.pos); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 14) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-27454, 0, 1992, MTXMODE_APPLY); + Matrix_Translate(878.378f, -108.108f, 67.568f, MTXMODE_APPLY); + Matrix_Scale(1.135f, 1.135f, 1.135f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnFu_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c b/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c index 0bc173059..faf2bb20c 100644 --- a/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c +++ b/soh/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c @@ -3,6 +3,7 @@ #include "vt.h" #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -417,9 +418,29 @@ s32 EnHeishi_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f return false; } +s32 EnHeishi4_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnHeishi4* this = (EnHeishi4*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 16) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, 442, MTXMODE_APPLY); + Matrix_Translate(256.757f, 121.621f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.337f, 1.337f, 1.337f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } + + return false; +} + void EnHeishi4_Draw(Actor* thisx, PlayState* play) { EnHeishi4* this = (EnHeishi4*)thisx; Gfx_SetupDL_25Opa(play->state.gfxCtx); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnHeishi_OverrideLimbDraw, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnHeishi_OverrideLimbDraw, EnHeishi4_PostLimbDraw, this); } diff --git a/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c b/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c index 8b7456350..7f272093e 100644 --- a/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c +++ b/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c @@ -8,6 +8,7 @@ #include "vt.h" #include "objects/object_hs/object_hs.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -66,6 +67,13 @@ void EnHs2_Init(Actor* thisx, PlayState* play) { this->actionFunc = func_80A6F1A4; this->unk_2A8 = 0; this->actor.targetMode = 6; + + if (play->sceneNum == SCENE_KAKARIKO_VILLAGE && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + this->actor.world.pos.x = 756.0; + this->actor.world.pos.y = 80.0; + this->actor.world.pos.z = 1378.0; + this->actor.shape.rot.y = 32534; + } } void EnHs2_Destroy(Actor* thisx, PlayState* play) { @@ -161,6 +169,21 @@ void EnHs2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == 9) { Matrix_MultVec3f(&D_80A6F4CC, &this->actor.focus.pos); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 9) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, -6421, MTXMODE_APPLY); + Matrix_Translate(621.622f, 378.378f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.763f, 0.763f, 0.763f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 255, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnHs2_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c index 209137b0d..2f1525466 100644 --- a/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c +++ b/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c @@ -17,6 +17,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -907,6 +908,21 @@ void EnHy_Init(Actor* thisx, PlayState* play) { Actor_Kill(&this->actor); } + if (play->sceneNum == SCENE_KAKARIKO_VILLAGE && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (this->actor.params == 1929) { + this->actor.world.pos.x = 261.826; + this->actor.world.pos.y = 240.0; + this->actor.world.pos.z = 1669.660; + this->actor.shape.rot.y = 23784; + } + if (this->actor.params == 1930) { + this->actor.world.pos.x = 262.224; + this->actor.world.pos.y = 240.0; + this->actor.world.pos.z = 1594.390; + this->actor.shape.rot.y = 7728; + } + } + this->getItemEntry = (GetItemEntry)GET_ITEM_NONE; this->actionFunc = EnHy_InitImpl; } @@ -1188,6 +1204,111 @@ void EnHy_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Matrix_MultVec3f(&sp3C, &this->actor.focus.pos); } + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + Matrix_Push(); + switch (this->actor.params) { + case 1938: { + Matrix_RotateZYX(5313, 0, -1550, MTXMODE_APPLY); + Matrix_Translate(1108.108f, 54.054f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.0f, 1.0f, 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++, gSantaHatGenericDL); + break; + } + case 135: + case 7: { + Matrix_RotateZYX(1328, 0, 885, MTXMODE_APPLY); + Matrix_Translate(864.865f, 229.73f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.25f, 1.25f, 1.25f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + break; + } + case 1922: { + Matrix_RotateZYX(4206, 221, -3543, MTXMODE_APPLY); + Matrix_Translate(662.162f, 162.162f, -27.027f, MTXMODE_APPLY); + Matrix_Scale(1.0f, 1.0f, 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++, gSantaHatGenericDL); + break; + } + case 1925: { + Matrix_RotateZYX(-9521, 442, -5536, MTXMODE_APPLY); + Matrix_Translate(351.351f, 256.757f, 283.784f, MTXMODE_APPLY); + Matrix_Scale(1.217f, 1.217f, 1.217f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + break; + } + case 1920: { + Matrix_RotateZYX(0, 0, 3321, MTXMODE_APPLY); + Matrix_Translate(1148.649f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.73f, 0.73f, 0.73f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + case 1930: { + Matrix_RotateZYX(3542, 0, 0, MTXMODE_APPLY); + Matrix_Translate(972.973f, -13.514f, 54.054f, MTXMODE_APPLY); + Matrix_Scale(0.831f, 0.831f, 0.831f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + case 1929: { + Matrix_RotateZYX(3542, 0, 0, MTXMODE_APPLY); + Matrix_Translate(972.973f, -13.514f, 54.054f, MTXMODE_APPLY); + Matrix_Scale(0.831f, 0.831f, 0.831f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + case 1921: { + Matrix_RotateZYX(0, 0, 664, MTXMODE_APPLY); + Matrix_Translate(1256.757f, -297.297f, -40.541f, MTXMODE_APPLY); + Matrix_Scale(1.135f, 1.135f, 1.135f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 255, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + case 1939: { + Matrix_RotateZYX(2656, 1328, 1992, MTXMODE_APPLY); + Matrix_Translate(1094.594f, 94.594f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.351f, 1.351f, 1.351f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + break; + } + default: { + Matrix_RotateZYX(0, 0, 664, MTXMODE_APPLY); + Matrix_Translate(783.784f, 94.594f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.662f, 0.662f, 0.662f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + break; + } + } + Matrix_Pop(); + } + } + CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c index c4dbe3f3a..63388cf08 100644 --- a/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -10,6 +10,7 @@ #include "vt.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -947,6 +948,19 @@ void EnIk_PostLimbDraw3(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, break; } + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 11) { + Matrix_Push(); + Matrix_RotateZYX(0, 0, -15056, MTXMODE_APPLY); + Matrix_Translate(824.324f, 472.973f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.845f, 0.845f, 0.845f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 100, 100, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + } + } + CLOSE_DISPS(play->state.gfxCtx); } @@ -1223,6 +1237,20 @@ void EnIk_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, } } break; } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 11) { + Matrix_Push(); + Matrix_RotateZYX(0, 0, -15056, MTXMODE_APPLY); + Matrix_Translate(824.324f, 472.973f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.845f, 0.845f, 0.845f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 100, 100, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + } + } + CLOSE_DISPS(gfxCtx); } @@ -1368,6 +1396,19 @@ void EnIk_PostLimbDraw1(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, break; } + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 11) { + Matrix_Push(); + Matrix_RotateZYX(0, 0, -15056, MTXMODE_APPLY); + Matrix_Translate(824.324f, 472.973f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.845f, 0.845f, 0.845f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 100, 100, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + } + } + CLOSE_DISPS(gfxCtx); } diff --git a/soh/src/overlays/actors/ovl_En_In/z_en_in.c b/soh/src/overlays/actors/ovl_En_In/z_en_in.c index 18903bfbb..8678cf2c8 100644 --- a/soh/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/soh/src/overlays/actors/ovl_En_In/z_en_in.c @@ -2,6 +2,7 @@ #include "overlays/actors/ovl_En_Horse/z_en_horse.h" #include "objects/object_in/object_in.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -992,6 +993,18 @@ void EnIn_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, gSPDisplayList(POLY_OPA_DISP++, gIngoChildEraPitchForkDL); } + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 16) { + Matrix_Push(); + Matrix_RotateZYX(-8192, -222, -11513, MTXMODE_APPLY); + Matrix_Translate(770.0f, 837.0f, 878.0f, MTXMODE_APPLY); + Matrix_Scale(1.068f, 1.068f, 1.068f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + } + } + CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c b/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c index 9c485f501..386bf816b 100644 --- a/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c +++ b/soh/src/overlays/actors/ovl_En_Jj/z_en_jj.c @@ -8,6 +8,7 @@ #include "objects/object_jj/object_jj.h" #include "overlays/actors/ovl_Eff_Dust/z_eff_dust.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -307,6 +308,26 @@ void EnJj_Update(Actor* thisx, PlayState* play) { this->skelAnime.jointTable[10].z = this->mouthOpenAngle; } +s32 EnJj_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnJj* this = (EnJj*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 13) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(4649, -8635, 15276, MTXMODE_APPLY); + Matrix_Translate(27.027f, 135.135f, -81.081f, MTXMODE_APPLY); + Matrix_Scale(0.304f, 0.304f, 0.304f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } + + return false; +} + void EnJj_Draw(Actor* thisx, PlayState* play2) { static void* eyeTextures[] = { gJabuJabuEyeOpenTex, gJabuJabuEyeHalfTex, gJabuJabuEyeClosedTex }; PlayState* play = play2; @@ -318,7 +339,7 @@ void EnJj_Draw(Actor* thisx, PlayState* play2) { Matrix_Translate(0.0f, (cosf(this->skelAnime.curFrame * (M_PI / 41.0f)) * 10.0f) - 10.0f, 0.0f, MTXMODE_APPLY); Matrix_Scale(10.0f, 10.0f, 10.0f, MTXMODE_APPLY); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(eyeTextures[this->eyeIndex])); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnJj_PostLimbDraw, this); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c b/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c index 70ca84c0e..4f7ac342b 100644 --- a/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c +++ b/soh/src/overlays/actors/ovl_En_Ko/z_en_ko.c @@ -1351,6 +1351,12 @@ Gfx* EnKo_SetEnvColor(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b, u8 a) { void EnKo_Draw(Actor* thisx, PlayState* play) { EnKo* this = (EnKo*)thisx; Color_RGBA8 tunicColor = sModelInfo[ENKO_TYPE].tunicColor; + + // Overwrite to red tunic as default for Holidays in Hyrule build + tunicColor.r = 255; + tunicColor.g = 0; + tunicColor.b = 0; + Color_RGBA8 bootsColor = sModelInfo[ENKO_TYPE].bootsColor; if (CVarGetInteger(CVAR_COSMETIC("NPC.Kokiri.Changed"), 0)) { diff --git a/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index 23146f376..9cf15e3f6 100644 --- a/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -270,6 +270,13 @@ void EnKusa_Init(Actor* thisx, PlayState* play) { return; } + if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.world.pos.z < 600.0 && + CVAR_GENERAL("LetItSnow")) { + this->actor.world.pos.x += 1620.672; + this->actor.world.pos.y += 80; + this->actor.world.pos.z += 900.884; + } + EnKusa_SetupWaitObject(this); } diff --git a/soh/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c b/soh/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c index b75aa749f..9d8f2689b 100644 --- a/soh/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c +++ b/soh/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c @@ -8,6 +8,7 @@ #include "objects/object_ma1/object_ma1.h" #include "soh/OTRGlobals.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -467,6 +468,21 @@ void EnMa1_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == 15) { Matrix_MultVec3f(&vec, &this->actor.focus.pos); } + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, 0, MTXMODE_APPLY); + Matrix_Translate(756.757f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.73f, 0.73f, 0.73f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } } void EnMa1_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c index c258182d5..c15ba5323 100644 --- a/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c +++ b/soh/src/overlays/actors/ovl_En_Niw/z_en_niw.c @@ -10,6 +10,7 @@ #include "vt.h" #include "soh/frame_interpolation.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_THROW_ONLY) @@ -1133,13 +1134,33 @@ s32 EnNiw_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p return false; } +s32 EnNiw_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnNiw* this = (EnNiw*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, -19705, MTXMODE_APPLY); + Matrix_Translate(297.297f, -81.082f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.0f, 1.0f, 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++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } + + return false; +} + void EnNiw_Draw(Actor* thisx, PlayState* play) { EnNiw* this = (EnNiw*)thisx; Vec3f scale = { 0.15f, 0.15f, 0.15f }; GraphicsContext* gfxCtx = play->state.gfxCtx; Gfx_SetupDL_25Opa(play->state.gfxCtx); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiw_OverrideLimbDraw, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiw_OverrideLimbDraw, EnNiw_PostLimbDraw, this); if (this->actionFunc == func_80AB6450) { func_80033C30(&this->actor.world.pos, &scale, 255, play); diff --git a/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c b/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c index 84da935d6..f95de6a6f 100644 --- a/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c +++ b/soh/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c @@ -8,6 +8,7 @@ #include "objects/object_gr/object_gr.h" #include "vt.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -247,6 +248,27 @@ s32 EnNiwGirlOverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f static Vec3f sConstVec3f = { 0.2f, 0.2f, 0.2f }; +s32 EnNiwGirl_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnNiwGirl* this = (EnNiwGirl*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 4) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, 0, MTXMODE_APPLY); + Matrix_Translate(945.945f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.676f, 0.676f, 0.676f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } + + return false; +} + void EnNiwGirl_Draw(Actor* thisx, PlayState* play) { static void* eyeTextures[] = { gNiwGirlEyeOpenTex, gNiwGirlEyeHalfTex, gNiwGirlEyeClosedTex }; EnNiwGirl* this = (EnNiwGirl*)thisx; @@ -257,7 +279,7 @@ void EnNiwGirl_Draw(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(eyeTextures[this->eyeIndex])); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiwGirlOverrideLimbDraw, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiwGirlOverrideLimbDraw, EnNiwGirl_PostLimbDraw, this); func_80033C30(&this->actor.world.pos, &sp4C, 255, play); CLOSE_DISPS(play->state.gfxCtx); diff --git a/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c b/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c index 69cc15aed..b21f783e5 100644 --- a/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c +++ b/soh/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c @@ -6,6 +6,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -586,6 +587,27 @@ s32 EnNiwLady_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3 return false; } +s32 EnNiwLady_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnNiwLady* this = (EnNiwLady*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 15) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-886, -3322, -5093, MTXMODE_APPLY); + Matrix_Translate(824.324f, 283.782f, -202.703f, MTXMODE_APPLY); + Matrix_Scale(0.762f, 0.762f, 0.762f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } + + return false; +} + void EnNiwLady_Draw(Actor* thisx, PlayState* play) { static void* sEyeTextures[] = { gCuccoLadyEyeOpenTex, gCuccoLadyEyeHalfTex, gCuccoLadyEyeClosedTex }; EnNiwLady* this = (EnNiwLady*)thisx; @@ -597,7 +619,7 @@ void EnNiwLady_Draw(Actor* thisx, PlayState* play) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sEyeTextures[this->faceState])); gSPSegment(POLY_OPA_DISP++, 0x0C, func_80ABB0A0(play->state.gfxCtx)); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiwLady_OverrideLimbDraw, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnNiwLady_OverrideLimbDraw, EnNiwLady_PostLimbDraw, this); } CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c b/soh/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c index cf70efe9f..172fe70cf 100644 --- a/soh/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c +++ b/soh/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c @@ -12,6 +12,7 @@ #include "objects/object_shopnuts/object_shopnuts.h" #include "objects/object_dns/object_dns.h" #include "objects/object_dnk/object_dnk.h" +#include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -47,7 +48,7 @@ static ColliderCylinderInit sCylinderInit = { }, { ELEMTYPE_UNK0, - { 0xFFCFFFFF, 0x00, 0x08 }, + { 0xFFCFFFFF, 0x02, 0x08 }, { 0xFFCFFFFF, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_WOOD, BUMP_ON, @@ -72,6 +73,8 @@ void EnNutsball_Init(Actor* thisx, PlayState* play) { EnNutsball* this = (EnNutsball*)thisx; s32 pad; + this->collider.info.toucher.effect = 2; + ActorShape_Init(&this->actor.shape, 400.0f, ActorShadow_DrawCircle, 13.0f); Collider_InitCylinder(play, &this->collider); Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); @@ -141,8 +144,10 @@ void func_80ABBBA8(EnNutsball* this, PlayState* play) { sp40.y = this->actor.world.pos.y + 4; sp40.z = this->actor.world.pos.z; - EffectSsHahen_SpawnBurst(play, &sp40, 6.0f, 0, 7, 3, 15, HAHEN_OBJECT_DEFAULT, 10, NULL); - SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_EN_OCTAROCK_ROCK); + /*EffectSsHahen_SpawnBurst(play, &sp40, 6.0f, 0, 7, 3, 15, HAHEN_OBJECT_DEFAULT, 10, NULL); + SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_EN_OCTAROCK_ROCK);*/ + EffectSsIcePiece_SpawnBurst(play, &this->actor.world.pos, this->actor.scale.x / 10); + SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_PL_ICE_BROKEN); Actor_Kill(&this->actor); } else { if (this->timer == -300) { @@ -178,15 +183,34 @@ void EnNutsball_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - if (CVarGetInteger(CVAR_ENHANCEMENT("NewDrops"), 0) != 0) { + //if ((CVarGetInteger(CVAR_ENHANCEMENT("NewDrops"), 0) != 0) || CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + // Gfx_SetupDL_25Opa(play->state.gfxCtx); + // f32 scale = 12.0f; + + // gSPSegment(POLY_OPA_DISP++, 0x08, + // Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, (0 - 1) % 128, 32, 32, 1, 0, (1 * -2) % 128, 32, 32)); + + // Matrix_RotateX(thisx->home.rot.z * 9.58738e-05f, MTXMODE_APPLY); + // Matrix_Translate(0.0f, -445.946f, 0.0f, MTXMODE_APPLY); + // Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); + + // gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + // gDPSetEnvColor(POLY_OPA_DISP++, 0, 50, 100, 255); + // gSPDisplayList(POLY_OPA_DISP++, gEffIceFragment3DL); + if ((CVarGetInteger(CVAR_ENHANCEMENT("NewDrops"), 0) != 0) || CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { Gfx_SetupDL_25Opa(play->state.gfxCtx); + f32 scale = 12.0f; + gSPSegment(POLY_OPA_DISP++, 0x08, - Gfx_TwoTexScroll(play->state.gfxCtx, 0, 1 * (play->state.frames * 6), 1 * (play->state.frames * 6), - 32, 32, 1, 1 * (play->state.frames * 6), 1 * (play->state.frames * 6), 32, 32)); - Matrix_Scale(25.0f, 25.0f, 25.0f, MTXMODE_APPLY); + Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, (0 - 1) % 128, 32, 32, 1, 0, (1 * -2) % 128, 32, 32)); + Matrix_RotateX(thisx->home.rot.z * 9.58738e-05f, MTXMODE_APPLY); - gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD); - gSPDisplayList(POLY_OPA_DISP++, sDListsNew[thisx->params]); + Matrix_Translate(0.0f, -445.946f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); + + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 50, 100, 255); + gSPDisplayList(POLY_OPA_DISP++, gEffIceFragment3DL); } else { Gfx_SetupDL_25Opa(play->state.gfxCtx); Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); diff --git a/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c b/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c index 279bc6834..2da3efb1f 100644 --- a/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c +++ b/soh/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c @@ -3,6 +3,7 @@ #include "objects/gameplay_field_keep/gameplay_field_keep.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) @@ -520,7 +521,7 @@ void EnOkuta_ProjectileFly(EnOkuta* this, PlayState* play) { f32 temp_f20; f32 temp_f22; s32 i; - for (s16 i = 0; i < ARRAY_COUNT(sEffectScales); i++) { + /*for (s16 i = 0; i < ARRAY_COUNT(sEffectScales); i++) { phi_s0 += 10000; temp_f20 = Rand_ZeroOne() * 5.0f; @@ -547,12 +548,14 @@ void EnOkuta_ProjectileFly(EnOkuta* this, PlayState* play) { EffectSsKakera_Spawn(play, &pos, &velocity, &this->actor.world.pos, gravity, phi_v0, 30, 5, 0, sEffectScales[i] / 5, 3, 0, 70, 1, OBJECT_GAMEPLAY_FIELD_KEEP, gSilverRockFragmentsDL); - } + }*/ + EffectSsIcePiece_SpawnBurst(play, &this->actor.world.pos, this->actor.scale.x / 10); } else { EffectSsHahen_SpawnBurst(play, &pos, 6.0f, 0, 1, 2, 15, 7, 10, gOctorokProjectileDL); } - SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_EN_OCTAROCK_ROCK); + //SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_EN_OCTAROCK_ROCK); + SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_PL_ICE_BROKEN); Actor_Kill(&this->actor); } } else if (this->timer == -300) { @@ -764,16 +767,30 @@ void EnOkuta_Draw(Actor* thisx, PlayState* play) { } else { OPEN_DISPS(play->state.gfxCtx); - if (CVarGetInteger(CVAR_ENHANCEMENT("NewDrops"), 0) != 0) { + //if (CVarGetInteger(CVAR_ENHANCEMENT("NewDrops"), 0) != 0) { + // Gfx_SetupDL_25Opa(play->state.gfxCtx); + // gSPSegment(POLY_OPA_DISP++, 0x08, + // Gfx_TwoTexScroll(play->state.gfxCtx, 0, 1 * (play->state.frames * 6), + // 1 * (play->state.frames * 6), 32, 32, 1, 1 * (play->state.frames * 6), + // 1 * (play->state.frames * 6), 32, 32)); + // Matrix_Scale(7.0f, 7.0f, 7.0f, MTXMODE_APPLY); + // Matrix_RotateX(thisx->home.rot.z * (M_PI / 0x8000), MTXMODE_APPLY); + // gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD); + // gSPDisplayList(POLY_OPA_DISP++, gSilverRockDL); + if ((CVarGetInteger(CVAR_ENHANCEMENT("NewDrops"), 0) != 0) || CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { Gfx_SetupDL_25Opa(play->state.gfxCtx); + f32 scale = 12.0f; + gSPSegment(POLY_OPA_DISP++, 0x08, - Gfx_TwoTexScroll(play->state.gfxCtx, 0, 1 * (play->state.frames * 6), - 1 * (play->state.frames * 6), 32, 32, 1, 1 * (play->state.frames * 6), - 1 * (play->state.frames * 6), 32, 32)); - Matrix_Scale(7.0f, 7.0f, 7.0f, MTXMODE_APPLY); - Matrix_RotateX(thisx->home.rot.z * (M_PI / 0x8000), MTXMODE_APPLY); - gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD); - gSPDisplayList(POLY_OPA_DISP++, gSilverRockDL); + Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, (0 - 1) % 128, 32, 32, 1, 0, (1 * -2) % 128, 32, 32)); + + Matrix_RotateX(thisx->home.rot.z * 9.58738e-05f, MTXMODE_APPLY); + Matrix_Translate(0.0f, -445.946f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); + + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 50, 100, 255); + gSPDisplayList(POLY_OPA_DISP++, gEffIceFragment3DL); } else { Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); Matrix_RotateZ(this->actor.home.rot.z * (M_PI / 0x8000), MTXMODE_APPLY); diff --git a/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index d78daafe4..31cc9a633 100644 --- a/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -18,6 +18,7 @@ #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include #include "soh/OTRGlobals.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -2425,6 +2426,73 @@ void EnOssan_DrawStickDirectionPrompts(PlayState* play, EnOssan* this) { CLOSE_DISPS(play->state.gfxCtx); } +s32 EnOssan_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnOssan* this = (EnOssan*)thisx; + + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (limbIndex == 8) { + switch (this->actor.params) { + case 4: { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-11071, -443, -3986, MTXMODE_APPLY); + Matrix_Translate(878.378f, 351.351f, 540.541f, MTXMODE_APPLY); + Matrix_Scale(1.352f, 1.352f, 1.352f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + break; + } + case 1: + case 3: { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-6643, 1992, -1772, MTXMODE_APPLY); + Matrix_Translate(918.919f, 121.622f, 256.757f, MTXMODE_APPLY); + Matrix_Scale(0.73f, 0.73f, 0.73f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 255, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + break; + } + case 2: { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-16163, 0, 2878, MTXMODE_APPLY); + Matrix_Translate(905.406f, 0.0f, -27.027f, MTXMODE_APPLY); + Matrix_Scale(1.318f, 1.318f, 1.318f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + break; + } + default: { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-11071, -443, -3986, MTXMODE_APPLY); + Matrix_Translate(878.378f, 351.351f, 540.541f, MTXMODE_APPLY); + Matrix_Scale(1.352f, 1.352f, 1.352f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + break; + } + } + } + } + + return false; +} + void EnOssan_DrawBazaarShopkeeper(Actor* thisx, PlayState* play) { static void* sBazaarShopkeeperEyeTextures[] = { gOssanEyeOpenTex, gOssanEyeHalfTex, gOssanEyeClosedTex }; EnOssan* this = (EnOssan*)thisx; @@ -2434,7 +2502,8 @@ void EnOssan_DrawBazaarShopkeeper(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sBazaarShopkeeperEyeTextures[this->eyeTextureIdx])); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnOssan_OverrideLimbDrawDefaultShopkeeper, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnOssan_OverrideLimbDrawDefaultShopkeeper, EnOssan_PostLimbDraw, + this); EnOssan_DrawCursor(play, this, this->cursorX, this->cursorY, this->cursorZ, this->drawCursor); EnOssan_DrawStickDirectionPrompts(play, this); @@ -2460,6 +2529,16 @@ s32 EnOssan_OverrideLimbDrawKokiriShopkeeper(PlayState* play, s32 limbIndex, Gfx gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(sKokiriShopkeeperEyeTextures[this->eyeTextureIdx])); } + if (limbIndex == 15 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + Matrix_Push(); + Matrix_RotateZYX(14169, -2215, 0, MTXMODE_APPLY); + Matrix_Translate(1810.811f, -351.351f, -94.595f, MTXMODE_APPLY); + Matrix_Scale(1.068f, 1.068f, 1.068f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + } + CLOSE_DISPS(play->state.gfxCtx); return 0; @@ -2488,8 +2567,8 @@ void EnOssan_DrawKokiriShopkeeper(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); - gSPSegment(POLY_OPA_DISP++, 0x08, EnOssan_SetEnvColor(play->state.gfxCtx, 0, 130, 70, 255)); - gSPSegment(POLY_OPA_DISP++, 0x09, EnOssan_SetEnvColor(play->state.gfxCtx, 110, 170, 20, 255)); + gSPSegment(POLY_OPA_DISP++, 0x08, EnOssan_SetEnvColor(play->state.gfxCtx, 255, 0, 0, 255)); + gSPSegment(POLY_OPA_DISP++, 0x09, EnOssan_SetEnvColor(play->state.gfxCtx, 255, 0, 0, 255)); gSPSegment(POLY_OPA_DISP++, 0x0C, EnOssan_EndDList(play->state.gfxCtx)); SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnOssan_OverrideLimbDrawKokiriShopkeeper, NULL, this); @@ -2564,7 +2643,7 @@ void EnOssan_DrawPotionShopkeeper(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sPotionShopkeeperEyeTextures[this->eyeTextureIdx])); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnOssan_PostLimbDraw, this); EnOssan_DrawCursor(play, this, this->cursorX, this->cursorY, this->cursorZ, this->drawCursor); EnOssan_DrawStickDirectionPrompts(play, this); @@ -2600,7 +2679,7 @@ void EnOssan_DrawBombchuShopkeeper(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sBombchuShopkeeperEyeTextures[this->eyeTextureIdx])); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnOssan_PostLimbDraw, this); EnOssan_DrawCursor(play, this, this->cursorX, this->cursorY, this->cursorZ, this->drawCursor); EnOssan_DrawStickDirectionPrompts(play, this); diff --git a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c index c62db2dd8..5b64a4355 100644 --- a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c +++ b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c @@ -10,6 +10,7 @@ #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -431,6 +432,18 @@ void EnPoRelay_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* gSPDisplayList(POLY_OPA_DISP++, gDampeHaloDL); CLOSE_DISPS(play->state.gfxCtx); } + + if (limbIndex == 16 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(10627, 3321, -13727, MTXMODE_APPLY); + Matrix_Translate(418.919f, 40.54f, -256.757f, MTXMODE_APPLY); + Matrix_Scale(1.068f, 1.068f, 1.068f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void EnPoRelay_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c b/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c index 5ac3c7e8d..fdbe2fd9a 100644 --- a/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c +++ b/soh/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c @@ -4,6 +4,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) @@ -306,6 +307,18 @@ void EnShopnuts_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* gSPDisplayList(POLY_OPA_DISP++, gBusinessScrubNoseDL); CLOSE_DISPS(play->state.gfxCtx); } + + if (limbIndex == 17 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, 17490, MTXMODE_APPLY); + Matrix_Translate(4200.0f, -472.973f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(4.932f, 4.932f, 4.932f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void EnShopnuts_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c index b7612dd91..9bc10c242 100644 --- a/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c +++ b/soh/src/overlays/actors/ovl_En_Skb/z_en_skb.c @@ -3,6 +3,7 @@ #include "objects/object_skb/object_skb.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -554,6 +555,19 @@ void EnSkb_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, } else if ((this->unk_283 ^ (this->unk_283 | 4)) == 0) { BodyBreak_SetInfo(&this->bodyBreak, limbIndex, 0, 18, 18, dList, BODYBREAK_OBJECT_DEFAULT); } + + if (limbIndex == 11 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, -2215, MTXMODE_APPLY); + Matrix_Translate(1324.324f, 662.162f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void EnSkb_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Snowball/z_en_snowball.c b/soh/src/overlays/actors/ovl_En_Snowball/z_en_snowball.c new file mode 100644 index 000000000..1a2b9841e --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_Snowball/z_en_snowball.c @@ -0,0 +1,229 @@ +/* + * File: z_en_snowball.c + * Overlay: ovl_En_Snowball + * Description: Rollable Snowball + */ + +#include "z_en_snowball.h" +#include "objects/gameplay_keep/gameplay_keep.h" +#include "objects/object_goroiwa/object_goroiwa.h" +#include "soh_assets.h" + +#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED + +void EnSnowball_Init(Actor* thisx, PlayState* play); +void EnSnowball_Destroy(Actor* thisx, PlayState* play); +void EnSnowball_Update(Actor* thisx, PlayState* play); +void EnSnowball_Draw(Actor* thisx, PlayState* play); + +static ColliderJntSphElementInit sJntSphElementsInit[] = { + { + { + ELEMTYPE_UNK0, + { 0x20000000, 0x00, 0x04 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL, + BUMP_NONE, + OCELEM_ON, + }, + { 0, { { 0, 0, 0 }, 14 }, 100 }, + }, +}; + +static ColliderJntSphInit sJntSphInit = { + { + COLTYPE_NONE, + AT_ON | AT_TYPE_ENEMY, + AC_NONE, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_2, + COLSHAPE_JNTSPH, + }, + 1, + sJntSphElementsInit, +}; + +static CollisionCheckInfoInit sColChkInfoInit = { 0, 3, 15, MASS_HEAVY }; + +void EnSnowball_UpdateCollider(EnSnowball* this) { + Sphere16* worldSphere = &this->collider.elements[0].dim.worldSphere; + + worldSphere->center.x = this->actor.world.pos.x; + worldSphere->center.y = this->actor.world.pos.y + (this->actor.scale.x * 500.0f); + worldSphere->center.z = this->actor.world.pos.z; + worldSphere->radius = (this->actor.scale.x * 500.0f); +} + +void EnSnowball_InitCollider(EnSnowball* this, PlayState* play) { + Collider_InitJntSph(play, &this->collider); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + EnSnowball_UpdateCollider(this); + this->collider.elements[0].dim.worldSphere.radius = (this->actor.scale.x * 500.0f); +} + +static InitChainEntry sInitChain[] = { + ICHAIN_F32_DIV1000(gravity, -860, ICHAIN_CONTINUE), ICHAIN_F32_DIV1000(minVelocityY, -15000, ICHAIN_CONTINUE), + ICHAIN_VEC3F_DIV1000(scale, 5, ICHAIN_CONTINUE), ICHAIN_F32(uncullZoneForward, 1500, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneScale, 150, ICHAIN_CONTINUE), ICHAIN_F32(uncullZoneDownward, 1500, ICHAIN_STOP), +}; + +void EnSnowball_Init(Actor* thisx, PlayState* play) { + EnSnowball* this = (EnSnowball*)thisx; + + Actor_ProcessInitChain(&this->actor, sInitChain); + EnSnowball_InitCollider(this, play); + CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit); + ActorShape_Init(&this->actor.shape, 595.0f, ActorShadow_DrawCircle, 9.4f); + this->actor.shape.shadowAlpha = 200; + + if (thisx->params == 1) { + this->actor.speedXZ += 5.0f; + this->actor.world.rot.y = Rand_ZeroFloat(65536.0f); + } +} + +void EnSnowball_Destroy(Actor* thisx, PlayState* play) { + EnSnowball* this = (EnSnowball*)thisx; + + Collider_DestroyJntSph(play, &this->collider); +} + +void EnSnowball_Update(Actor* thisx, PlayState* play) { + EnSnowball* this = (EnSnowball*)thisx; + Actor* player = GET_PLAYER(play); + + // Kill the actor if it falls too far + if (thisx->world.pos.y < -10000.0f) { + Actor_Kill(thisx); + return; + } + + u8 meanBoulder = thisx->params == 1 && this->actor.scale.x > 0.1f; + + // Check if the player is close enough to start rolling + if (this->actor.xzDistToPlayer < MAX(20.0f, this->actor.scale.x * 600.0f) && !meanBoulder) { + /// Flip the actor's rotation away from the player + thisx->world.rot.y = thisx->yawTowardsPlayer + 0x8000; + this->actor.speedXZ = MAX(5.0f, this->actor.speedXZ); + } + + if (this->collider.base.atFlags & AT_HIT) { + this->collider.base.atFlags &= ~AT_HIT; + // Flip the actor's rotation away from the player + thisx->world.rot.y = thisx->yawTowardsPlayer + 0x8000; + + func_8002F6D4(play, &this->actor, 2.0f, this->actor.yawTowardsPlayer, 0.0f, 0); + Player_PlaySfx(&GET_PLAYER(play)->actor, NA_SE_PL_BODY_HIT); + } + + // Slow down the actor and increase it's scale + if (this->actor.speedXZ > 0.0f) { + CollisionPoly snowballPoly; + u8 goingUp = this->actor.world.pos.y - this->prevY > 0.001f; + u8 goingDown = this->actor.world.pos.y - this->prevY < -0.001f; + + // friction + if (thisx->params != 1) { + this->actor.speedXZ -= 0.1f; + } + + if (goingDown) { + // Increase the speed if going down hill + f32 speed = (this->prevY - this->actor.world.pos.y) * 0.15f; + this->actor.speedXZ += MIN(speed, 0.5f); + } else if (goingUp) { + // Reduce the speed if going up hill + this->actor.speedXZ -= (this->actor.world.pos.y - this->prevY) * 0.1f; + } + + if (goingUp || goingDown) { + // Check if going straight, one degree right, or one degree left will result in steeper slope + // Check straight + Vec3f snowballPos = this->actor.world.pos; + snowballPos.y += 100.0f; + snowballPos.x += Math_SinS(this->actor.world.rot.y) * 1.0f; + snowballPos.z += Math_CosS(this->actor.world.rot.y) * 1.0f; + float straightSlope = BgCheck_AnyRaycastFloor1(&gPlayState->colCtx, &snowballPoly, &snowballPos); + + // Check one degree right + snowballPos = this->actor.world.pos; + snowballPos.y += 100.0f; + snowballPos.x += Math_SinS(this->actor.world.rot.y + 0x100) * 1.0f; + snowballPos.z += Math_CosS(this->actor.world.rot.y + 0x100) * 1.0f; + float rightSlope = BgCheck_AnyRaycastFloor1(&gPlayState->colCtx, &snowballPoly, &snowballPos); + + // Check one degree left + snowballPos = this->actor.world.pos; + snowballPos.y += 100.0f; + snowballPos.x += Math_SinS(this->actor.world.rot.y - 0x100) * 1.0f; + snowballPos.z += Math_CosS(this->actor.world.rot.y - 0x100) * 1.0f; + float leftSlope = BgCheck_AnyRaycastFloor1(&gPlayState->colCtx, &snowballPoly, &snowballPos); + + if (straightSlope > rightSlope || straightSlope > leftSlope) { + if (rightSlope < leftSlope) { + this->actor.world.rot.y += 0x100; + } else { + this->actor.world.rot.y -= 0x100; + } + } + } + + // Check if the actor is colliding with a wall and bounce off + if (thisx->bgCheckFlags & 8) { + if (ABS((s16)(thisx->wallYaw - thisx->world.rot.y)) > 0x4000) { + thisx->world.rot.y = ((thisx->wallYaw - thisx->world.rot.y) + thisx->wallYaw) - 0x8000; + } + if (thisx->params != 1) { + thisx->speedXZ *= 0.7f; + } + thisx->bgCheckFlags &= ~8; + if (this->actor.speedXZ > 5.0f) { + Audio_PlayActorSound2(thisx, NA_SE_EV_BOMB_BOUND); + } + } + + Actor_SetScale(&this->actor, MIN(0.15f, this->actor.scale.x + (this->actor.speedXZ * 0.00001f))); + } + + if (this->actor.speedXZ < 0.0f) { + this->actor.speedXZ = 0.0f; + } + + // Based on speed and scale, rotate the snowball + // The larger the snowball, the slower it rotates + this->sRot += (this->actor.speedXZ * 15.0f) / this->actor.scale.x; + + // record the actor's position + this->prevY = this->actor.world.pos.y; + + // Process movement (moves foward based on speed and rotation) + Actor_MoveXZGravity(thisx); + + // Prevent actor from going through the ground or walls + Actor_UpdateBgCheckInfo(play, &this->actor, MAX(10.0f, this->actor.scale.x * 250.0f), MAX(10.0f, this->actor.scale.x * 500.0f), 0.0f, 0xFF); + + EnSnowball_UpdateCollider(this); + // Add collision checks if the actor is a mean boulder + if (meanBoulder) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); + } +} + +void EnSnowball_Draw(Actor* thisx, PlayState* play) { + EnSnowball* this = (EnSnowball*)thisx; + + OPEN_DISPS(play->state.gfxCtx); + + Gfx_SetupDL_25Opa(play->state.gfxCtx); + + Matrix_RotateZYX(this->sRot, thisx->world.rot.y, 0, MTXMODE_APPLY); + + Matrix_Translate(0.0f, 5.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.5f, 0.5f, 0.5f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPDisplayList(POLY_OPA_DISP++, gSnowballDL); + + CLOSE_DISPS(play->state.gfxCtx); +} diff --git a/soh/src/overlays/actors/ovl_En_Snowball/z_en_snowball.h b/soh/src/overlays/actors/ovl_En_Snowball/z_en_snowball.h new file mode 100644 index 000000000..fa8c0779c --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_Snowball/z_en_snowball.h @@ -0,0 +1,31 @@ +#ifndef Z_EN_SNOWBALL_H +#define Z_EN_SNOWBALL_H + +#include +#include "global.h" + +struct EnSnowball; + +typedef void (*EnSnowballActionFunc)(struct EnSnowball*, PlayState*); + +typedef struct EnSnowball { + Actor actor; + + ColliderJntSph collider; + ColliderJntSphElement colliderItems[1]; + s16 sRot; + f32 prevY; +} EnSnowball; + +#ifdef __cplusplus +extern "C" { +#endif +void EnSnowball_Init(Actor* thisx, PlayState* play); +void EnSnowball_Destroy(Actor* thisx, PlayState* play); +void EnSnowball_Update(Actor* thisx, PlayState* play); +void EnSnowball_Draw(Actor* thisx, PlayState* play); +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c index 1cbc8c5ef..3d80eb38e 100644 --- a/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/soh/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -12,6 +12,7 @@ #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -398,6 +399,19 @@ void EnSth_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, CLOSE_DISPS(play->state.gfxCtx); } } + + if (limbIndex == 15 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-4207, -665, -4650, MTXMODE_APPLY); + Matrix_Translate(932.432f, 162.163f, 81.082f, MTXMODE_APPLY); + Matrix_Scale(0.73f, 0.73f, 0.73f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } Gfx* EnSth_AllocColorDList(GraphicsContext* play, u8 envR, u8 envG, u8 envB, u8 envA) { diff --git a/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 01052b9bb..5f4515ff8 100644 --- a/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/soh/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -7,6 +7,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -521,12 +522,31 @@ s32 EnSyatekiMan_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, V return 0; } +s32 EnSyatekiMan_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { + EnSyatekiMan* this = (EnSyatekiMan*)thisx; + + if (limbIndex == 8 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(2214, 3985, -7750, MTXMODE_APPLY); + Matrix_Translate(1094.594f, 1162.162f, -40.541f, MTXMODE_APPLY); + Matrix_Scale(0.864f, 0.864f, 0.864f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 255, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + + return false; +} + void EnSyatekiMan_Draw(Actor* thisx, PlayState* play) { s32 pad; EnSyatekiMan* this = (EnSyatekiMan*)thisx; Gfx_SetupDL_25Opa(play->state.gfxCtx); - SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnSyatekiMan_OverrideLimbDraw, NULL, this); + SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnSyatekiMan_OverrideLimbDraw, EnSyatekiMan_PostLimbDraw, this); } void EnSyatekiMan_SetBgm(void) { diff --git a/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c b/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c index a01d18f98..fc1e48dfe 100644 --- a/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c +++ b/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c @@ -10,6 +10,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -1215,6 +1216,18 @@ void EnTa_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == 15) { Matrix_MultVec3f(&D_80B16E7C, &this->actor.focus.pos); } + + if (limbIndex == 15 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(11955, -1993, 221, MTXMODE_APPLY); + Matrix_Translate(1081.081f, -108.108f, -270.270f, MTXMODE_APPLY); + Matrix_Scale(1.554f, 1.554f, 1.554f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void EnTa_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Test/z_en_test.c b/soh/src/overlays/actors/ovl_En_Test/z_en_test.c index 0bcf45a8b..ed6f7431f 100644 --- a/soh/src/overlays/actors/ovl_En_Test/z_en_test.c +++ b/soh/src/overlays/actors/ovl_En_Test/z_en_test.c @@ -8,6 +8,7 @@ #include "objects/object_sk2/object_sk2.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -1950,6 +1951,18 @@ void EnTest_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot this->bodyPartsPos[bodyPart].z = sp50.z; } } + + if (limbIndex == 11 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-10849, 0, -5314, MTXMODE_APPLY); + Matrix_Translate(513.514f, 283.784f, 554.054f, MTXMODE_APPLY); + Matrix_Scale(1.203f, 1.203f, 1.203f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void EnTest_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Tg/z_en_tg.c b/soh/src/overlays/actors/ovl_En_Tg/z_en_tg.c index 40015812a..6421ea571 100644 --- a/soh/src/overlays/actors/ovl_En_Tg/z_en_tg.c +++ b/soh/src/overlays/actors/ovl_En_Tg/z_en_tg.c @@ -6,6 +6,7 @@ #include "z_en_tg.h" #include "objects/object_mu/object_mu.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -167,6 +168,29 @@ void EnTg_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == 9) { // Place the target point at the guy's head instead of the center of the actor Matrix_MultVec3f(&targetOffset, &this->actor.focus.pos); + if (CVAR_GENERAL("LetItSnow")) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-3100, 1992, 2435, MTXMODE_APPLY); + Matrix_Translate(864.865f, -121.622f, 175.676f, MTXMODE_APPLY); + Matrix_Scale(0.865f, 0.865f, 0.865f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } + } else if (limbIndex == 20 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-2657, -1550, 1549, MTXMODE_APPLY); + Matrix_Translate(594.594f, -135.135f, -54.054f, MTXMODE_APPLY); + Matrix_Scale(0.966f, 0.966f, 0.966f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 255, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); } } diff --git a/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c index 96ce945e4..5492cb866 100644 --- a/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/soh/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -10,6 +10,7 @@ #include "soh/frame_interpolation.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -728,6 +729,18 @@ void EnTk_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Matrix_MultVec3f(&sp28, &this->v3f_304); func_80B1D200(play); } + + if (limbIndex == 16 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(10627, 3321, -13727, MTXMODE_APPLY); + Matrix_Translate(418.919f, 40.54f, -256.757f, MTXMODE_APPLY); + Matrix_Scale(1.068f, 1.068f, 1.068f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void EnTk_Draw(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c b/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c index e67277d22..9f21fa36a 100644 --- a/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c +++ b/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c @@ -9,6 +9,7 @@ #include "soh/OTRGlobals.h" #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -107,6 +108,12 @@ void EnToryo_Init(Actor* thisx, PlayState* play) { break; case SCENE_KAKARIKO_VILLAGE: if ((LINK_AGE_IN_YEARS == YEARS_CHILD) && IS_DAY) { + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + this->actor.world.pos.x = 756.0; + this->actor.world.pos.y = 80.0; + this->actor.world.pos.z = 1378.0; + this->actor.shape.rot.y = 32534; + } this->stateFlags |= 2; } break; @@ -415,4 +422,16 @@ void EnToryo_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro Matrix_MultVec3f(&sMultVec, &this->actor.focus.pos); break; } + + if (limbIndex == 15 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(-23691, 664, -2879, MTXMODE_APPLY); + Matrix_Translate(810.811f, -243.243f, 270.27f, MTXMODE_APPLY); + Matrix_Scale(1.216f, 1.216f, 1.216f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } diff --git a/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c b/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c index a26e3eab9..4ad0e07c6 100644 --- a/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c +++ b/soh/src/overlays/actors/ovl_En_Vm/z_en_vm.c @@ -10,6 +10,7 @@ #include "objects/gameplay_keep/gameplay_keep.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -519,6 +520,18 @@ void EnVm_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, &this->colliderQuad2.dim.quad[1], &this->colliderQuad2.dim.quad[2], &this->colliderQuad2.dim.quad[3]); } + + if (limbIndex == 6 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(19704, -1329, 11734, MTXMODE_APPLY); + Matrix_Translate(310.811f, -108.108f, -81.081f, MTXMODE_APPLY); + Matrix_Scale(2.297f, 2.297f, 2.297f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gSantaHatGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } void EnVm_Draw(Actor* thisx, PlayState* play2) { diff --git a/soh/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/soh/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index 084334a6b..ad635316c 100644 --- a/soh/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/soh/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -136,6 +136,11 @@ u8 WeatherTag_CheckEnableWeatherEffect(EnWeatherTag* this, PlayState* play, u8 a u8 ret = false; Player* player = GET_PLAYER(play); + if (LINK_IS_ADULT && gPlayState != NULL && gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && + CVAR_GENERAL("LetItSnow")) { + return ret; + } + if (Actor_WorldDistXZToActor(&player->actor, &this->actor) < WEATHER_TAG_RANGE100(this->actor.params)) { if ((play->envCtx.indoors != 0) || !gSkyboxBlendingEnabled || (play->skyboxId != SKYBOX_NORMAL_SKY && play->envCtx.unk_1F == play->envCtx.unk_20)) { diff --git a/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c b/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c index 48f17149e..1502ec510 100644 --- a/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c +++ b/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.c @@ -10,6 +10,7 @@ #include "objects/object_wf/object_wf.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/ResourceManagerHelpers.h" +#include "soh_assets.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -1428,6 +1429,19 @@ void EnWf_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, this->bodyPartsPos[bodyPartIndex].z = bodyPartPos.z; } } + + if (limbIndex == 17 && CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + OPEN_DISPS(play->state.gfxCtx); + Matrix_Push(); + Matrix_RotateZYX(0, 0, -18377, MTXMODE_APPLY); + Matrix_Translate(729.73f, 1243.243f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(0.743f, 0.743f, 0.743f, MTXMODE_APPLY); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255); + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gPaperCrownGenericDL); + Matrix_Pop(); + CLOSE_DISPS(play->state.gfxCtx); + } } static void* sWolfosNormalEyeTextures[] = { gWolfosNormalEyeOpenTex, gWolfosNormalEyeHalfTex, gWolfosNormalEyeNarrowTex, diff --git a/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c b/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c index 1fe96d38c..6c839b0cf 100644 --- a/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c +++ b/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c @@ -179,6 +179,18 @@ void EnWood02_Init(Actor* thisx, PlayState* play2) { f32 floorY; s16 extraRot; + if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) { + if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.params <= WOOD_TREE_KAKARIKO_ADULT) { + Actor_Kill(this); + } + + if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.params >= 0) { + this->actor.world.pos.x = 754.051; + this->actor.world.pos.y = 80.0; + this->actor.world.pos.z = 1429.908; + } + } + // The tree in Kakariko's day scene does not have the same params to spawn the GS // as the night scene, For the always spawn GS enhancement we apply the needed // params to have the GS drop when bonking @@ -446,14 +458,20 @@ void EnWood02_Draw(Actor* thisx, PlayState* play) { if ((type == WOOD_TREE_OVAL_GREEN_SPAWNER) || (type == WOOD_TREE_OVAL_GREEN_SPAWNED) || (type == WOOD_TREE_OVAL_GREEN) || (type == WOOD_LEAF_GREEN)) { - red = 50; - green = 170; - blue = 70; + //red = 50; + //green = 170; + //blue = 70; + red = 255; + green = 255; + blue = 255; } else if ((type == WOOD_TREE_OVAL_YELLOW_SPAWNER) || (type == WOOD_TREE_OVAL_YELLOW_SPAWNED) || (type == WOOD_LEAF_YELLOW)) { - red = 180; - green = 155; - blue = 0; + //red = 180; + //green = 155; + //blue = 0; + red = 255; + green = 255; + blue = 255; } else { red = green = blue = 255; } diff --git a/soh/src/overlays/actors/ovl_End_Title/z_end_title.c b/soh/src/overlays/actors/ovl_End_Title/z_end_title.c index b87e127ce..17a17360f 100644 --- a/soh/src/overlays/actors/ovl_End_Title/z_end_title.c +++ b/soh/src/overlays/actors/ovl_End_Title/z_end_title.c @@ -72,41 +72,75 @@ void EndTitle_DrawFull(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); + uint8_t isKak = play->sceneNum == SCENE_KAKARIKO_VILLAGE; + // Draw title cards on the screen - if ((frameCount > 890) && (this->endAlpha < 200)) { + if ((frameCount > 890 || isKak) && (this->endAlpha < 200)) { this->endAlpha += 7; } - if ((frameCount > 810) && (this->tlozAlpha < 200)) { + if ((frameCount > 810 || isKak) && (this->tlozAlpha < 200)) { this->tlozAlpha += 15; } - if ((frameCount > 850) && (this->ootAlpha < 200)) { + if ((frameCount > 850 || isKak) && (this->ootAlpha < 200)) { this->ootAlpha += 15; } - + OVERLAY_DISP = Gfx_SetupDL_64(OVERLAY_DISP); - gDPSetTextureLUT(OVERLAY_DISP++, G_TT_NONE); - gDPSetEnvColor(OVERLAY_DISP++, 255, 120, 30, 0); - gDPSetRenderMode(OVERLAY_DISP++, G_RM_PASS, G_RM_XLU_SURF2); - gSPClearGeometryMode(OVERLAY_DISP++, - G_TEXTURE_ENABLE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR); - gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, - COMBINED, 0, 0, 0, COMBINED); - gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->endAlpha); - gDPLoadTextureTile(OVERLAY_DISP++, sTheEndTex, G_IM_FMT_IA, G_IM_SIZ_8b, 80, 24, 0, 0, 80 - 1, 24 - 1, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); - gSPTextureRectangle(OVERLAY_DISP++, 120 << 2, 90 << 2, 200 << 2, 113 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->tlozAlpha); - gDPLoadTextureTile(OVERLAY_DISP++, sTheLegendOfZeldaTex, G_IM_FMT_IA, G_IM_SIZ_8b, 120, 24, 0, 0, 120 - 1, 24 - 1, - 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); - gSPTextureRectangle(OVERLAY_DISP++, 100 << 2, 160 << 2, 220 << 2, 183 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, - 1 << 10); - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->ootAlpha); - gDPLoadTextureTile(OVERLAY_DISP++, sOcarinaOfTimeTex, G_IM_FMT_IA, G_IM_SIZ_8b, 112, 16, 0, 0, 112 - 1, 16 - 1, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); - gSPTextureRectangle(OVERLAY_DISP++, 104 << 2, 177 << 2, 216 << 2, 192 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, - 1 << 10); + + if (this->actor.params == 2) { + gSPGrayscale(OVERLAY_DISP++, false); + gDPSetTextureLUT(OVERLAY_DISP++, G_TT_NONE); + gDPSetEnvColor(OVERLAY_DISP++, 0, 255, 0, 0); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_PASS, G_RM_XLU_SURF2); + gSPClearGeometryMode(OVERLAY_DISP++, G_TEXTURE_ENABLE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED); + gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->endAlpha); + gDPLoadTextureTile(OVERLAY_DISP++, sTheEndTex, G_IM_FMT_IA, G_IM_SIZ_8b, 80, 24, 0, 0, 80 - 1, 24 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); + gSPTextureRectangle(OVERLAY_DISP++, 120 << 2, 90 << 2, 200 << 2, 113 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->tlozAlpha); + gDPLoadTextureTile(OVERLAY_DISP++, sTheLegendOfZeldaTex, G_IM_FMT_IA, G_IM_SIZ_8b, 120, 24, 0, 0, 120 - 1, 24 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); + gSPTextureRectangle(OVERLAY_DISP++, 100 << 2, 160 << 2, 220 << 2, 183 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->ootAlpha); + gDPLoadTextureTile(OVERLAY_DISP++, sOcarinaOfTimeTex, G_IM_FMT_IA, G_IM_SIZ_8b, 112, 16, 0, 0, 112 - 1, 16 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); + gSPTextureRectangle(OVERLAY_DISP++, 104 << 2, 177 << 2, 216 << 2, 192 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + + gVisMonoColor.a = 0; + //D_801614B0.r = 205; + //D_801614B0.g = 168; + //D_801614B0.b = 130; + + //gSPGrayscale(OVERLAY_DISP++, true); + } else if (gVisMonoColor.a > 0) { + gSPGrayscale(OVERLAY_DISP++, false); + gDPSetTextureLUT(OVERLAY_DISP++, G_TT_NONE); + gDPSetEnvColor(OVERLAY_DISP++, 255, 120, 30, 0); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_PASS, G_RM_XLU_SURF2); + gSPClearGeometryMode(OVERLAY_DISP++, G_TEXTURE_ENABLE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, + COMBINED, 0, 0, 0, COMBINED); + gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->endAlpha); + gDPLoadTextureTile(OVERLAY_DISP++, sTheEndTex, G_IM_FMT_IA, G_IM_SIZ_8b, 80, 24, 0, 0, 80 - 1, 24 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); + gSPTextureRectangle(OVERLAY_DISP++, 120 << 2, 90 << 2, 200 << 2, 113 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->tlozAlpha); + gDPLoadTextureTile(OVERLAY_DISP++, sTheLegendOfZeldaTex, G_IM_FMT_IA, G_IM_SIZ_8b, 120, 24, 0, 0, 120 - 1, + 24 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); + gSPTextureRectangle(OVERLAY_DISP++, 100 << 2, 160 << 2, 220 << 2, 183 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0x00, 0x80, 0, 0, 0, this->ootAlpha); + gDPLoadTextureTile(OVERLAY_DISP++, sOcarinaOfTimeTex, G_IM_FMT_IA, G_IM_SIZ_8b, 112, 16, 0, 0, 112 - 1, 16 - 1, + 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 0, 0, 0, 0); + gSPTextureRectangle(OVERLAY_DISP++, 104 << 2, 177 << 2, 216 << 2, 192 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); + if (gVisMonoColor.a > 0) + gSPGrayscale(OVERLAY_DISP++, true); + } CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c b/soh/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c index 12d5c38cc..689082306 100644 --- a/soh/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c +++ b/soh/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c @@ -178,19 +178,18 @@ void EffectSsBomb2_Update(PlayState* play, u32 index, EffectSs* this) { divisor = this->life - 13; this->rPrimColorR = func_80027DD4(this->rPrimColorR, 255, divisor); this->rPrimColorG = func_80027DD4(this->rPrimColorG, 255, divisor); - this->rPrimColorB = func_80027DD4(this->rPrimColorB, 150, divisor); + this->rPrimColorB = func_80027DD4(this->rPrimColorB, 255, divisor); this->rPrimColorA = func_80027DD4(this->rPrimColorA, 255, divisor); - this->rEnvColorR = func_80027DD4(this->rEnvColorR, 150, divisor); - this->rEnvColorG = func_80027DD4(this->rEnvColorG, 0, divisor); - this->rEnvColorB = func_80027DD4(this->rEnvColorB, 0, divisor); + this->rEnvColorR = func_80027DD4(this->rEnvColorR, 255, divisor); + this->rEnvColorG = func_80027DD4(this->rEnvColorG, 255, divisor); + this->rEnvColorB = func_80027DD4(this->rEnvColorB, 255, divisor); } else if ((this->life < 14) && (this->life > -1)) { divisor = this->life + 1; - this->rPrimColorR = func_80027DD4(this->rPrimColorR, 50, divisor); - this->rPrimColorG = func_80027DD4(this->rPrimColorG, 50, divisor); - this->rPrimColorB = func_80027DD4(this->rPrimColorB, 50, divisor); - this->rPrimColorA = func_80027DD4(this->rPrimColorA, 150, divisor); - this->rEnvColorR = func_80027DD4(this->rEnvColorR, 10, divisor); - this->rEnvColorG = func_80027DD4(this->rEnvColorG, 10, divisor); - this->rEnvColorB = func_80027DD4(this->rEnvColorB, 10, divisor); + this->rPrimColorR = func_80027DD4(this->rPrimColorR, 255, divisor); + this->rPrimColorG = func_80027DD4(this->rPrimColorG, 255, divisor); + this->rPrimColorB = func_80027DD4(this->rPrimColorB, 255, divisor); + this->rPrimColorA = func_80027DD4(this->rPrimColorA, 255, divisor); + this->rEnvColorR = func_80027DD4(this->rEnvColorR, 255, divisor); + this->rEnvColorG = func_80027DD4(this->rEnvColorG, 255, divisor); + this->rEnvColorB = func_80027DD4(this->rEnvColorB, 255, divisor); } -}