From 63af883c6f84378635c0448a5ed9c1aa0be17c03 Mon Sep 17 00:00:00 2001 From: aMannus Date: Fri, 3 Nov 2023 23:23:49 +0100 Subject: [PATCH 1/7] Christmas Ornament Hunt first pass --- .../objects/gameplay_holiday/BaubleHilite | Bin 0 -> 1116 bytes .../mat_xmas_tree_bauble_b_f3dlite_BaubleBlue | 21 +++ ...mat_xmas_tree_bauble_g_f3dlite_BaubleGreen | 21 +++ .../mat_xmas_tree_bauble_r_f3dlite_BaubleRed | 21 +++ ...at_xmas_tree_bauble_s_f3dlite_BaubleSilver | 21 +++ .../mat_xmas_tree_f3dlite_TreeBrown | 12 ++ .../mat_xmas_tree_f3dlite_TreeGreen | 12 ++ ...mat_xmas_tree_presents_f3dlite_PresentBlue | 12 ++ ...at_xmas_tree_presents_f3dlite_PresentGreen | 12 ++ .../mat_xmas_tree_presents_f3dlite_PresentRed | 12 ++ .../mat_xmas_tree_star_f3dlite_GoldStar | 21 +++ .../custom/objects/gameplay_holiday/xmas_tree | 13 ++ .../gameplay_holiday/xmas_tree_bauble_b | 11 ++ .../gameplay_holiday/xmas_tree_bauble_b_tri_0 | 69 +++++++++ .../gameplay_holiday/xmas_tree_bauble_b_vtx_0 | 72 ++++++++++ .../gameplay_holiday/xmas_tree_bauble_g | 11 ++ .../gameplay_holiday/xmas_tree_bauble_g_tri_0 | 69 +++++++++ .../gameplay_holiday/xmas_tree_bauble_g_vtx_0 | 72 ++++++++++ .../gameplay_holiday/xmas_tree_bauble_r | 11 ++ .../gameplay_holiday/xmas_tree_bauble_r_tri_0 | 69 +++++++++ .../gameplay_holiday/xmas_tree_bauble_r_vtx_0 | 72 ++++++++++ .../gameplay_holiday/xmas_tree_bauble_s | 11 ++ .../gameplay_holiday/xmas_tree_bauble_s_tri_0 | 69 +++++++++ .../gameplay_holiday/xmas_tree_bauble_s_vtx_0 | 72 ++++++++++ .../gameplay_holiday/xmas_tree_presents | 15 ++ .../gameplay_holiday/xmas_tree_presents_tri_0 | 31 ++++ .../gameplay_holiday/xmas_tree_presents_tri_1 | 31 ++++ .../gameplay_holiday/xmas_tree_presents_tri_2 | 45 ++++++ .../gameplay_holiday/xmas_tree_presents_vtx_0 | 50 +++++++ .../gameplay_holiday/xmas_tree_presents_vtx_1 | 50 +++++++ .../gameplay_holiday/xmas_tree_presents_vtx_2 | 74 ++++++++++ .../objects/gameplay_holiday/xmas_tree_star | 11 ++ .../gameplay_holiday/xmas_tree_star_tri_0 | 26 ++++ .../gameplay_holiday/xmas_tree_star_vtx_0 | 33 +++++ .../objects/gameplay_holiday/xmas_tree_tri_0 | 15 ++ .../objects/gameplay_holiday/xmas_tree_tri_1 | 26 ++++ .../objects/gameplay_holiday/xmas_tree_vtx_0 | 14 ++ .../objects/gameplay_holiday/xmas_tree_vtx_1 | 29 ++++ soh/assets/soh_assets.h | 21 +++ soh/include/z64save.h | 1 + soh/soh/ActorDB.cpp | 17 +++ .../Enhancements/debugger/debugSaveEditor.cpp | 5 + soh/soh/Enhancements/mods.cpp | 5 +- .../Enhancements/randomizer/randomizer.cpp | 47 +++++- soh/soh/Enhancements/randomizer/randomizer.h | 2 + soh/soh/Enhancements/randomizer/savefile.cpp | 1 + soh/soh/OTRGlobals.cpp | 4 +- soh/soh/SaveManager.cpp | 6 + soh/src/code/z_parameter.c | 8 -- soh/src/code/z_play.c | 5 + .../ovl_En_ChristmasTree/z_en_christmastree.c | 134 ++++++++++++++++++ .../ovl_En_ChristmasTree/z_en_christmastree.h | 28 ++++ 52 files changed, 1501 insertions(+), 19 deletions(-) create mode 100644 soh/assets/custom/objects/gameplay_holiday/BaubleHilite create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_b_f3dlite_BaubleBlue create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_g_f3dlite_BaubleGreen create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_r_f3dlite_BaubleRed create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_s_f3dlite_BaubleSilver create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeBrown create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeGreen create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentBlue create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentGreen create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentRed create mode 100644 soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_star_f3dlite_GoldStar create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_tri_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_vtx_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_tri_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_vtx_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_tri_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_vtx_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_tri_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_vtx_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_1 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_2 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_1 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_2 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_star create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_tri_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_vtx_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_1 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_0 create mode 100644 soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_1 create mode 100644 soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c create mode 100644 soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h diff --git a/soh/assets/custom/objects/gameplay_holiday/BaubleHilite b/soh/assets/custom/objects/gameplay_holiday/BaubleHilite new file mode 100644 index 0000000000000000000000000000000000000000..4cb27947f034084277cfae158d1b001acd238464 GIT binary patch literal 1116 zcmZQzU|@)F4e@6L((m`Jy$8ZTCeeTms8RunA(|TO85n?=g@NHe6#V=7>e9A3burPk zv$kG%`Qsl<976y5`DlB4a*(&XtE-1saB}OG2Pi83zT00P>f!9<=-}Ys=;Z9`8D6{R z&0n|?e;zN4^Kf#ov$e6Ywz0DZDslBpnDgK_RKcJ76M|eEY^|*<%+1a1gCfKH-JP7> zLV9mQ6#RWM(cj75#?su>#MsEhC#R?=KQ-9J$t|$=0mzDf?-vC*+F4te8XM~C>FPTt z=MMBYK^78TuN-CO$#>Uox zA?|JwTYkLhcDJ`OGt$#iQ&y0bmXeZ^kyBJr*EVp<$ntaXZhd(z-PzW{#6VkJSwTip zTvSv{TuN3!MMKv%F44o;J>}eU2Zx!c+LCMVh{%Sws}aC5M8@(7Ab z$ti2-7@Ao-xOkT|xY~PX6y^D-%1Q|Haj~+nar28v$|m*iHise35!Zd%PRu|$i&jt z$t`Tt^$gF{va*um{3sJp0EvrBO3Nv!0=;KuW$)~fcHwQGcYG<(fa1JZ7kwo;Ss7V* zB~=X_0}~6N@xGm}e(j44Eh+~oD9DQUw>QyIQBl*>(Kj}?21an?j-UUYwfZKNf)x}M z=4GXXn`>(6>KmI`*#fmUJ^uIq*U^-KtTK>-lH%f`qI4&HJwszNOIrsQucQM%feGy6 zvapcM(z3Erkcxt6OG9H*b1R^ + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_g_f3dlite_BaubleGreen b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_g_f3dlite_BaubleGreen new file mode 100644 index 0000000000..8ba44c27bd --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_g_f3dlite_BaubleGreen @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_r_f3dlite_BaubleRed b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_r_f3dlite_BaubleRed new file mode 100644 index 0000000000..539187c2af --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_r_f3dlite_BaubleRed @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_s_f3dlite_BaubleSilver b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_s_f3dlite_BaubleSilver new file mode 100644 index 0000000000..2c5de1ab2f --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_bauble_s_f3dlite_BaubleSilver @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeBrown b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeBrown new file mode 100644 index 0000000000..e8215b8916 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeBrown @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeGreen b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeGreen new file mode 100644 index 0000000000..bb926c31e0 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_f3dlite_TreeGreen @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentBlue b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentBlue new file mode 100644 index 0000000000..95a98809cc --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentBlue @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentGreen b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentGreen new file mode 100644 index 0000000000..e6bea0b6c5 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentGreen @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentRed b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentRed new file mode 100644 index 0000000000..b42644ae81 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_presents_f3dlite_PresentRed @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_star_f3dlite_GoldStar b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_star_f3dlite_GoldStar new file mode 100644 index 0000000000..3d82334c6e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/mat_xmas_tree_star_f3dlite_GoldStar @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree b/soh/assets/custom/objects/gameplay_holiday/xmas_tree new file mode 100644 index 0000000000..2691067888 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b new file mode 100644 index 0000000000..4498e24fe7 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_tri_0 new file mode 100644 index 0000000000..792d47536e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_vtx_0 new file mode 100644 index 0000000000..db948f00be --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_b_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g new file mode 100644 index 0000000000..fbb02006b7 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_tri_0 new file mode 100644 index 0000000000..471f208c6e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_vtx_0 new file mode 100644 index 0000000000..3e9f85ec7f --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_g_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r new file mode 100644 index 0000000000..b93e0da35a --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_tri_0 new file mode 100644 index 0000000000..7aa1828a1b --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_vtx_0 new file mode 100644 index 0000000000..e8fc7a8dcd --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_r_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s new file mode 100644 index 0000000000..71f8877ae0 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_tri_0 new file mode 100644 index 0000000000..f88b6f2087 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_tri_0 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_vtx_0 new file mode 100644 index 0000000000..653d4a071c --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_bauble_s_vtx_0 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents new file mode 100644 index 0000000000..458e405750 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_0 new file mode 100644 index 0000000000..3e2b4441fc --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_0 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_1 new file mode 100644 index 0000000000..cecbe09a2b --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_1 @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_2 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_2 new file mode 100644 index 0000000000..efc528078e --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_tri_2 @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_0 new file mode 100644 index 0000000000..fd5885c08c --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_0 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_1 new file mode 100644 index 0000000000..fdc4bf6e8a --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_1 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_2 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_2 new file mode 100644 index 0000000000..3c4703e1b6 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_presents_vtx_2 @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star new file mode 100644 index 0000000000..4cefe078a1 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_tri_0 new file mode 100644 index 0000000000..73507855d1 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_tri_0 @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_vtx_0 new file mode 100644 index 0000000000..107d0a5c7d --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_star_vtx_0 @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_0 new file mode 100644 index 0000000000..688a578613 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_0 @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_1 new file mode 100644 index 0000000000..34c37bef70 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_tri_1 @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_0 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_0 new file mode 100644 index 0000000000..6b65e8a813 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_0 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_1 b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_1 new file mode 100644 index 0000000000..23934fa7f5 --- /dev/null +++ b/soh/assets/custom/objects/gameplay_holiday/xmas_tree_vtx_1 @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h index 2b193053c3..0eee73bb08 100644 --- a/soh/assets/soh_assets.h +++ b/soh/assets/soh_assets.h @@ -56,6 +56,27 @@ static const ALIGN_ASSET(2) char gTriforcePiece2DL[] = dgTriforcePiece2DL; #define dgTriforcePieceCompletedDL "__OTR__objects/object_triforce_completed/gTriforcePieceCompletedDL" static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCompletedDL; +#define dxmas_tree "__OTR__objects/gameplay_holiday/xmas_tree" +static const ALIGN_ASSET(2) char xmas_tree[] = dxmas_tree; + +#define dxmas_tree_presents "__OTR__objects/gameplay_holiday/xmas_tree_presents" +static const ALIGN_ASSET(2) char xmas_tree_presents[] = dxmas_tree_presents; + +#define dxmas_tree_star "__OTR__objects/gameplay_holiday/xmas_tree_star" +static const ALIGN_ASSET(2) char xmas_tree_star[] = dxmas_tree_star; + +#define dxmas_tree_bauble_r "__OTR__objects/gameplay_holiday/xmas_tree_bauble_r" +static const ALIGN_ASSET(2) char xmas_tree_bauble_r[] = dxmas_tree_bauble_r; + +#define dxmas_tree_bauble_g "__OTR__objects/gameplay_holiday/xmas_tree_bauble_g" +static const ALIGN_ASSET(2) char xmas_tree_bauble_g[] = dxmas_tree_bauble_g; + +#define dxmas_tree_bauble_b "__OTR__objects/gameplay_holiday/xmas_tree_bauble_b" +static const ALIGN_ASSET(2) char xmas_tree_bauble_b[] = dxmas_tree_bauble_b; + +#define dxmas_tree_bauble_s "__OTR__objects/gameplay_holiday/xmas_tree_bauble_s" +static const ALIGN_ASSET(2) char xmas_tree_bauble_s[] = dxmas_tree_bauble_s; + // overlays #define dgOptionsDividerChangeLangVtx "__OTR__overlays/ovl_file_choose/gOptionsDividerChangeLangVtx" static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx; diff --git a/soh/include/z64save.h b/soh/include/z64save.h index 9458f28c7b..24ad694487 100644 --- a/soh/include/z64save.h +++ b/soh/include/z64save.h @@ -324,6 +324,7 @@ typedef struct { /* */ u16 randomizerInf[10]; /* */ u16 adultTradeItems; /* */ u8 triforcePiecesCollected; + /* */ u8 grantBossKey; // #endregion } SaveContext; // size = 0x1428 diff --git a/soh/soh/ActorDB.cpp b/soh/soh/ActorDB.cpp index 2cf4d8fe77..4e36f5e51f 100644 --- a/soh/soh/ActorDB.cpp +++ b/soh/soh/ActorDB.cpp @@ -604,8 +604,25 @@ static ActorDBInit EnPartnerInit = { }; extern "C" s16 gEnPartnerId; +#include "src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h" +static ActorDBInit EnChristmasTreeInit = { + "En_ChristmasTree", + "Christmas Tree", + ACTORCAT_PROP, + (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY), + OBJECT_GAMEPLAY_KEEP, + sizeof(EnChristmasTree), + (ActorFunc)EnChristmasTree_Init, + (ActorFunc)EnChristmasTree_Destroy, + (ActorFunc)EnChristmasTree_Update, + (ActorFunc)EnChristmasTree_Draw, + nullptr, +}; +extern "C" s16 gEnChristmasTreeId; + void ActorDB::AddBuiltInCustomActors() { gEnPartnerId = ActorDB::Instance->AddEntry(EnPartnerInit).entry.id; + gEnChristmasTreeId = ActorDB::Instance->AddEntry(EnChristmasTreeInit).entry.id; } extern "C" ActorDBEntry* ActorDB_Retrieve(const int id) { diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp index cb16a99151..945a826042 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp @@ -517,6 +517,11 @@ void DrawInfoTab() { if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT)) { ImGui::InputScalar("Triforce Pieces", ImGuiDataType_U16, &gSaveContext.triforcePiecesCollected); UIWidgets::InsertHelpHoverText("Currently obtained Triforce Pieces. For Triforce Hunt."); + + bool thFlag = gSaveContext.grantBossKey != 0; + if (ImGui::Checkbox("Finished Triforce Hunt", &thFlag)) { + gSaveContext.grantBossKey = thFlag; + } } ImGui::PushItemWidth(ImGui::GetFontSize() * 10); diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index 2cab1a754a..849dbbb1d3 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -656,12 +656,9 @@ void RegisterTriforceHunt() { triforcePieceScale = 0.0f; GameInteractor::State::TriforceHuntPieceGiven = 0; } - - uint8_t currentPieces = gSaveContext.triforcePiecesCollected; - uint8_t requiredPieces = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); // Give Boss Key when player loads back into the savefile. - if (currentPieces >= requiredPieces && gPlayState->sceneLoadFlag != 0x14 && + if (gSaveContext.grantBossKey && (1 << 0 & gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER]) == 0) { GetItemEntry getItemEntry = ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); GiveItemEntryWithoutActor(gPlayState, getItemEntry); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 1a46b03907..955bfc17af 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -60,6 +60,7 @@ const std::string Randomizer::hintMessageTableID = "RandomizerHints"; const std::string Randomizer::merchantMessageTableID = "RandomizerMerchants"; const std::string Randomizer::rupeeMessageTableID = "RandomizerRupees"; const std::string Randomizer::triforcePieceMessageTableID = "RandomizerTriforcePiece"; +const std::string Randomizer::christmasTreeMessageTableID = "RandomizerChristmasTree"; const std::string Randomizer::NaviRandoMessageTableID = "RandomizerNavi"; const std::string Randomizer::IceTrapRandoMessageTableID = "RandomizerIceTrap"; const std::string Randomizer::randoMiscHintsTableID = "RandomizerMiscHints"; @@ -5515,27 +5516,27 @@ CustomMessage Randomizer::GetRupeeMessage(u16 rupeeTextId) { void CreateTriforcePieceMessages() { CustomMessage TriforcePieceMessages[NUM_TRIFORCE_PIECE_MESSAGES] = { - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. It's a start!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. It's a start!", "Ein %yTriforce-Splitter%w! Du hast&%g{{current}}%w von %c{{required}}%w gefunden. Es ist ein&Anfang!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. C'est un début!" }, - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Progress!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Progress!", "Ein %yTriforce-Splitter%w! Du hast&%g{{current}}%w von %c{{required}}%w gefunden. Es geht voran!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. Ça avance!" }, - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Over half-way&there!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Over half-way&there!", "Ein %yTriforce-Splitter%w! Du hast&schon %g{{current}}%w von %c{{required}}%w gefunden. Schon&über die Hälfte!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. Il en reste un&peu moins que la moitié!" }, - { "You found a %yTriforce Piece%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Almost done!", + { "You found a %yChristmas Ornament%w!&%g{{current}}%w down, %c{{remaining}}%w to go. Almost done!", "Ein %yTriforce-Splitter%w! Du hast&schon %g{{current}}%w von %c{{required}}%w gefunden. Fast&geschafft!", "Vous trouvez un %yFragment de la&Triforce%w! Vous en avez %g{{current}}%w, il en&reste %c{{remaining}}%w à trouver. C'est presque&terminé!" }, - { "You completed the %yTriforce of&Courage%w! %gGG%w!", + { "You found all of the %yChristmas&Ornaments%w! Visit the %gChristmas&tree%w in Kakariko Village!", "Das %yTriforce des Mutes%w! Du hast&alle Splitter gefunden. %gGut gemacht%w!", "Vous avez complété la %yTriforce&du Courage%w! %gFélicitations%w!" }, - { "You found a spare %yTriforce Piece%w!&You only needed %c{{required}}%w, but you have %g{{current}}%w!", + { "You found a spare %yChristmas Ornament%w!&You only needed %c{{required}}%w, but you have %g{{current}}%w!", "Ein übriger %yTriforce-Splitter%w! Du&hast nun %g{{current}}%w von %c{{required}}%w nötigen gefunden.", "Vous avez trouvé un %yFragment de&Triforce%w en plus! Vous n'aviez besoin&que de %c{{required}}%w, mais vous en avez %g{{current}}%w en&tout!" }, }; @@ -5575,6 +5576,39 @@ CustomMessage Randomizer::GetTriforcePieceMessage() { messageEntry.Replace("{{required}}", std::to_string(required), std::to_string(required), std::to_string(required)); return messageEntry; } +void CreateChristmasTreeMessages() { + CustomMessage ChristmasTreeMessages[2] = { + + { "The %yChristmas tree%w seems to be&missing some of %gits magic%w... Find all&ornaments to save %rChristmas%w!", + "The Christmas tree seems to be&missing some of its magic...", + "The Christmas tree seems to be&missing some of its magic..." }, + + { "The tree's magic has been fully&restored. %gMerry %rChristmas%w!", + "The tree's magic has been fully restored. Merry Christmas!", + "The tree's magic has been fully restored. Merry Christmas!" } + }; + 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. + uint16_t current = gSaveContext.triforcePiecesCollected; + uint16_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + uint8_t messageIndex; + + if (current < required) { + messageIndex = 0; + } else { + messageIndex = 1; + } + + CustomMessage messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::christmasTreeMessageTableID, messageIndex); + return messageEntry; +} void CreateNaviRandoMessages() { CustomMessage NaviMessages[NUM_NAVI_MESSAGES] = { @@ -6108,6 +6142,7 @@ void Randomizer::CreateCustomMessages() { CreateGetItemMessages(&getItemMessages); CreateRupeeMessages(); CreateTriforcePieceMessages(); + CreateChristmasTreeMessages(); CreateNaviRandoMessages(); CreateIceTrapRandoMessages(); CreateFireTempleGoronMessages(); diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index a726cecdee..3ad363d2a9 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -49,6 +49,7 @@ class Randomizer { static const std::string merchantMessageTableID; static const std::string rupeeMessageTableID; static const std::string triforcePieceMessageTableID; + static const std::string christmasTreeMessageTableID; static const std::string NaviRandoMessageTableID; static const std::string IceTrapRandoMessageTableID; static const std::string randoMiscHintsTableID; @@ -105,6 +106,7 @@ class Randomizer { static void CreateCustomMessages(); static CustomMessage GetRupeeMessage(u16 rupeeTextId); static CustomMessage GetTriforcePieceMessage(); + static CustomMessage GetChristmasTreeMessage(); bool CheckContainsVanillaItem(RandomizerCheck randoCheck); }; diff --git a/soh/soh/Enhancements/randomizer/savefile.cpp b/soh/soh/Enhancements/randomizer/savefile.cpp index 33278d0b75..fba89082a3 100644 --- a/soh/soh/Enhancements/randomizer/savefile.cpp +++ b/soh/soh/Enhancements/randomizer/savefile.cpp @@ -444,6 +444,7 @@ extern "C" void Randomizer_InitSaveFile() { // Reset triforce pieces collected gSaveContext.triforcePiecesCollected = 0; + gSaveContext.grantBossKey = 0; SetStartingItems(); } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index eee6a622a9..d977b6202a 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1968,7 +1968,9 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) { s16 actorParams = 0; if (IS_RANDO) { Player* player = GET_PLAYER(play); - if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) { + if (textId == 0x406B && play->sceneNum == SCENE_KAKARIKO_VILLAGE) { + messageEntry = Randomizer::GetChristmasTreeMessage(); + } else if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) { if (player->getItemEntry.getItemId == RG_ICE_TRAP) { u16 iceTrapTextId = Random(0, NUM_ICE_TRAP_MESSAGES); messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, iceTrapTextId); diff --git a/soh/soh/SaveManager.cpp b/soh/soh/SaveManager.cpp index bf1144b458..a2b3189d22 100644 --- a/soh/soh/SaveManager.cpp +++ b/soh/soh/SaveManager.cpp @@ -138,6 +138,8 @@ void SaveManager::LoadRandomizerVersion1() { SaveManager::Instance->LoadData("triforcePiecesCollected", gSaveContext.triforcePiecesCollected); + SaveManager::Instance->LoadData("grantBossKey", gSaveContext.grantBossKey); + SaveManager::Instance->LoadData("pendingIceTrapCount", gSaveContext.pendingIceTrapCount); std::shared_ptr randomizer = OTRGlobals::Instance->gRandomizer; @@ -240,6 +242,8 @@ void SaveManager::LoadRandomizerVersion2() { SaveManager::Instance->LoadData("triforcePiecesCollected", gSaveContext.triforcePiecesCollected); + SaveManager::Instance->LoadData("grantBossKey", gSaveContext.grantBossKey); + SaveManager::Instance->LoadData("pendingIceTrapCount", gSaveContext.pendingIceTrapCount); std::shared_ptr randomizer = OTRGlobals::Instance->gRandomizer; @@ -329,6 +333,8 @@ void SaveManager::SaveRandomizer(SaveContext* saveContext, int sectionID, bool f SaveManager::Instance->SaveData("triforcePiecesCollected", saveContext->triforcePiecesCollected); + SaveManager::Instance->SaveData("grantBossKey", saveContext->grantBossKey); + SaveManager::Instance->SaveData("pendingIceTrapCount", saveContext->pendingIceTrapCount); std::shared_ptr randomizer = OTRGlobals::Instance->gRandomizer; diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index cf3192c3d6..cbc317f14f 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -2585,14 +2585,6 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { gSaveContext.triforcePiecesCollected++; GameInteractor_SetTriforceHuntPieceGiven(true); - // Teleport to credits when goal is reached. - if (gSaveContext.triforcePiecesCollected == Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED)) { - gSaveContext.sohStats.itemTimestamp[TIMESTAMP_TRIFORCE_COMPLETED] = GAMEPLAYSTAT_TOTAL_TIME; - gSaveContext.sohStats.gameComplete = 1; - Play_PerformSave(play); - GameInteractor_SetTriforceHuntCreditsWarpActive(true); - } - return Return_Item_Entry(giEntry, RG_NONE); } diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index 112a71888f..de13f78e94 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -35,6 +35,7 @@ u64 D_801614D0[0xA00]; PlayState* gPlayState; s16 gEnPartnerId; +s16 gEnChristmasTreeId; void OTRPlay_SpawnScene(PlayState* play, s32 sceneNum, s32 spawn); @@ -759,6 +760,10 @@ void Play_Init(GameState* thisx) { GET_PLAYER(play)->actor.world.pos.y + Player_GetHeight(GET_PLAYER(play)) + 5.0f, GET_PLAYER(play)->actor.world.pos.z, 0, 0, 0, 1, true); } + + if (play->sceneNum == SCENE_KAKARIKO_VILLAGE && Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT)) { + Actor_Spawn(&play->actorCtx, play, gEnChristmasTreeId, -734, 0, 420, 0, 0, 0, 1, true); + } } void Play_Update(PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c new file mode 100644 index 0000000000..f67812fe6d --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c @@ -0,0 +1,134 @@ +/* + * File: z_en_christmastree.c + * Overlay: ovl_En_ChristmasTree + * Description: Custom Christmas Tree for Ornament Hunt + */ + +#include "z_en_christmastree.h" +#include "soh_assets.h" + +void EnChristmasTree_Init(Actor* thisx, PlayState* play); +void EnChristmasTree_Destroy(Actor* thisx, PlayState* play); +void EnChristmasTree_Update(Actor* thisx, PlayState* play); +void EnChristmasTree_Draw(Actor* thisx, PlayState* play); + +void EnChristmasTree_Wait(EnChristmasTree* this, PlayState* play); +void EnChristmasTree_Talk(EnChristmasTree* this, PlayState* play); + +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_NONE, + AT_NONE, + AC_NONE, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0x00000000, 0x00, 0x00 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_NONE, + BUMP_NONE, + OCELEM_ON, + }, + { 50, 150, 0, { 0, 0, 0 } }, +}; + +static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; + +void EnChristmasTree_Init(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 90.0f); + Collider_InitCylinder(play, &this->collider); + Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); + CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit); + Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, 4); + + this->actor.targetMode = 1; + this->actor.textId = 0x406B; // Hijacking bean seller text ID so I'm sure it doesn't clash + + this->actionFunc = EnChristmasTree_Wait; +} + +void EnChristmasTree_Destroy(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + + Collider_DestroyCylinder(play, &this->collider); +} + +void EnChristmasTree_Wait(EnChristmasTree* this, PlayState* play) { + if (Actor_ProcessTalkRequest(&this->actor, play)) { // if talk is initiated + this->actionFunc = EnChristmasTree_Talk; + } else if ((this->actor.xzDistToPlayer < 170.0f)) { // talk range + func_8002F2CC(&this->actor, play, 170.0f); + } +} + +void EnChristmasTree_Talk(EnChristmasTree* this, PlayState* play) { + u8 dialogState = Message_GetState(&play->msgCtx); + if (dialogState != TEXT_STATE_CHOICE) { + if ((dialogState == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { // advanced final textbox + this->actionFunc = EnChristmasTree_Wait; + + // Teleport to credits when goal is reached. + if (gSaveContext.triforcePiecesCollected >= Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED)) { + gSaveContext.sohStats.itemTimestamp[TIMESTAMP_TRIFORCE_COMPLETED] = GAMEPLAYSTAT_TOTAL_TIME; + gSaveContext.sohStats.gameComplete = 1; + gSaveContext.grantBossKey = 1; + Play_PerformSave(play); + GameInteractor_SetTriforceHuntCreditsWarpActive(true); + } + } + } + + +} + +void EnChristmasTree_Update(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + ColliderCylinder* collider = &this->collider; + + Collider_UpdateCylinder(thisx, collider); + CollisionCheck_SetOC(play, &play->colChkCtx, (Collider*)collider); + + Actor_SetFocus(&this->actor, 80.0f); + + this->actionFunc(this, play); +} + +void EnChristmasTree_Draw(Actor* thisx, PlayState* play) { + float percentageCompleted = (float)gSaveContext.triforcePiecesCollected / + (float)Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + float treeSize = 30.0f; + + OPEN_DISPS(play->state.gfxCtx); + + Gfx_SetupDL_25Xlu(play->state.gfxCtx); + + Matrix_Scale(treeSize, treeSize, treeSize, MTXMODE_APPLY); + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), + G_MTX_MODELVIEW | G_MTX_LOAD); + gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree); + if (percentageCompleted >= 0.17f) { + gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_presents); + } + if (percentageCompleted >= 0.34f) { + gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_r); + } + if (percentageCompleted >= 0.51f) { + gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_g); + } + if (percentageCompleted >= 0.68f) { + gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_b); + } + if (percentageCompleted >= 0.85f) { + gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_s); + } + if (percentageCompleted >= 1.0f) { + gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_star); + } + + CLOSE_DISPS(play->state.gfxCtx); +} diff --git a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h new file mode 100644 index 0000000000..1dbed3396b --- /dev/null +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h @@ -0,0 +1,28 @@ +#ifndef Z_EN_CHRISTMASTREE_H +#define Z_EN_CHRISTMASTREE_H + +#include +#include "global.h" + +struct EnChristmasTree; + +typedef void (*EnChristmasTreeActionFunc)(struct EnChristmasTree*, PlayState*); + +typedef struct EnChristmasTree { + Actor actor; + ColliderCylinder collider; + EnChristmasTreeActionFunc actionFunc; +} EnChristmasTree; + +#ifdef __cplusplus +extern "C" { +#endif +void EnChristmasTree_Init(Actor* thisx, PlayState* play); +void EnChristmasTree_Destroy(Actor* thisx, PlayState* play); +void EnChristmasTree_Update(Actor* thisx, PlayState* play); +void EnChristmasTree_Draw(Actor* thisx, PlayState* play); +#ifdef __cplusplus +} +#endif + +#endif From 6da79ea4c63a127f728f6d1c8b1762be606fe467 Mon Sep 17 00:00:00 2001 From: aMannus Date: Fri, 3 Nov 2023 23:36:18 +0100 Subject: [PATCH 2/7] Fix Triforce Count u16 mistakes --- .../Enhancements/debugger/debugSaveEditor.cpp | 2 +- soh/soh/Enhancements/randomizer/draw.cpp | 6 +++--- soh/soh/Enhancements/randomizer/randomizer.cpp | 18 +++++++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp index 945a826042..58e124b7a6 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp @@ -515,7 +515,7 @@ void DrawInfoTab() { UIWidgets::InsertHelpHoverText("Z-Targeting behavior"); if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT)) { - ImGui::InputScalar("Triforce Pieces", ImGuiDataType_U16, &gSaveContext.triforcePiecesCollected); + ImGui::InputScalar("Triforce Pieces", ImGuiDataType_U8, &gSaveContext.triforcePiecesCollected); UIWidgets::InsertHelpHoverText("Currently obtained Triforce Pieces. For Triforce Hunt."); bool thFlag = gSaveContext.grantBossKey != 0; diff --git a/soh/soh/Enhancements/randomizer/draw.cpp b/soh/soh/Enhancements/randomizer/draw.cpp index eacc62725b..570ac5801c 100644 --- a/soh/soh/Enhancements/randomizer/draw.cpp +++ b/soh/soh/Enhancements/randomizer/draw.cpp @@ -214,7 +214,7 @@ extern "C" void Randomizer_DrawTriforcePiece(PlayState* play, GetItemEntry getIt Gfx_SetupDL_25Xlu(play->state.gfxCtx); - uint16_t current = gSaveContext.triforcePiecesCollected; + uint8_t current = gSaveContext.triforcePiecesCollected; Matrix_Scale(0.035f, 0.035f, 0.035f, MTXMODE_APPLY); @@ -238,8 +238,8 @@ extern "C" void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry get Gfx_SetupDL_25Xlu(play->state.gfxCtx); - uint16_t current = gSaveContext.triforcePiecesCollected; - uint16_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + uint8_t current = gSaveContext.triforcePiecesCollected; + uint8_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); Matrix_Scale(triforcePieceScale, triforcePieceScale, triforcePieceScale, MTXMODE_APPLY); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 955bfc17af..549195d50f 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -5549,9 +5549,9 @@ void CreateTriforcePieceMessages() { CustomMessage Randomizer::GetTriforcePieceMessage() { // Item is only given after the textbox, so reflect that inside the textbox. - uint16_t current = gSaveContext.triforcePiecesCollected + 1; - uint16_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); - uint16_t remaining = required - current; + uint8_t current = gSaveContext.triforcePiecesCollected + 1; + uint8_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + uint8_t remaining = required - current; float percentageCollected = (float)current / (float)required; uint8_t messageIndex; @@ -5580,12 +5580,12 @@ 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 Christmas tree seems to be&missing some of its magic...", - "The Christmas tree seems to be&missing some of its magic..." }, + "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. Merry Christmas!", - "The tree's magic has been fully restored. Merry Christmas!" } + "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); @@ -5596,8 +5596,8 @@ void CreateChristmasTreeMessages() { CustomMessage Randomizer::GetChristmasTreeMessage() { // Item is only given after the textbox, so reflect that inside the textbox. - uint16_t current = gSaveContext.triforcePiecesCollected; - uint16_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); + uint8_t current = gSaveContext.triforcePiecesCollected; + uint8_t required = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); uint8_t messageIndex; if (current < required) { From cc79b2ab65cdd16ae60c51944d7acccd2ce9e2fe Mon Sep 17 00:00:00 2001 From: aMannus Date: Sat, 4 Nov 2023 11:01:43 +0100 Subject: [PATCH 3/7] Fix build --- .../overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c | 1 + 1 file changed, 1 insertion(+) 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 index f67812fe6d..b24aaf4d1c 100644 --- a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c @@ -6,6 +6,7 @@ #include "z_en_christmastree.h" #include "soh_assets.h" +#include "soh/Enhancements/game-interactor/GameInteractor.h" void EnChristmasTree_Init(Actor* thisx, PlayState* play); void EnChristmasTree_Destroy(Actor* thisx, PlayState* play); From 297540e8599e35dd31059f21148176928ce0b17d Mon Sep 17 00:00:00 2001 From: aMannus Date: Sat, 4 Nov 2023 11:54:18 +0100 Subject: [PATCH 4/7] Updated models & updated text --- .../object_triforce_completed/GlowAlpha_64 | Bin 0 -> 4188 bytes .../gTriforcePieceCompletedDL | 4 +- .../gTriforcePieceCompletedDL_tri_0 | 53 +-- .../gTriforcePieceCompletedDL_tri_1 | 385 +++++++++++++++- .../gTriforcePieceCompletedDL_vtx_0 | 56 +-- .../gTriforcePieceCompletedDL_vtx_1 | 351 ++++++++++++++- .../object_triforce_completed/hilite_melon | Bin 0 -> 2140 bytes ...mat_gTriforcePieceCompletedDL_f3dlite_Glow | 21 + ...orcePieceCompletedDL_f3dlite_OrnamentGold} | 6 +- ...rcePieceCompletedDL_f3dlite_triforce_edges | 21 - ...ePieceCompletedDL_f3dlite_triforce_surface | 21 - .../object_triforce_completed/noise_tex | Bin 2140 -> 0 bytes .../object_triforce_piece_0/gTriforcePiece0DL | 6 +- .../gTriforcePiece0DL_tri_0 | 62 ++- .../gTriforcePiece0DL_tri_1 | 95 +++- .../gTriforcePiece0DL_tri_2 | 51 --- .../gTriforcePiece0DL_vtx_0 | 86 +++- .../gTriforcePiece0DL_vtx_1 | 125 +++++- .../gTriforcePiece0DL_vtx_2 | 49 -- .../objects/object_triforce_piece_0/image | Bin 0 -> 1116 bytes .../mat_gTriforcePiece0DL_ball | 21 + .../mat_gTriforcePiece0DL_f3dlite_shard_edge | 21 - ...t_gTriforcePiece0DL_f3dlite_triforce_edges | 21 - ...gTriforcePiece0DL_f3dlite_triforce_surface | 21 - .../mat_gTriforcePiece0DL_silver | 21 + .../objects/object_triforce_piece_0/noise_tex | Bin 2140 -> 0 bytes .../object_triforce_piece_1/gTriforcePiece1DL | 4 +- .../gTriforcePiece1DL_tri_0 | 71 ++- .../gTriforcePiece1DL_tri_1 | 97 +++- .../gTriforcePiece1DL_vtx_0 | 91 +++- .../gTriforcePiece1DL_vtx_1 | 126 ++++-- .../objects/object_triforce_piece_1/image | Bin 0 -> 1116 bytes .../object_triforce_piece_1/image_copy | Bin 0 -> 1116 bytes .../mat_gTriforcePiece1DL_blue_mat | 21 + .../mat_gTriforcePiece1DL_f3dlite_shard_edge | 21 - .../mat_gTriforcePiece1DL_silver_002 | 21 + .../objects/object_triforce_piece_1/noise_tex | Bin 2140 -> 0 bytes .../object_triforce_piece_2/gTriforcePiece2DL | 6 +- .../gTriforcePiece2DL_tri_0 | 80 +++- .../gTriforcePiece2DL_tri_1 | 373 +++++++++++++++- .../gTriforcePiece2DL_tri_2 | 19 - .../gTriforcePiece2DL_vtx_0 | 104 +++-- .../gTriforcePiece2DL_vtx_1 | 418 +++++++++++++++++- .../gTriforcePiece2DL_vtx_2 | 18 - .../objects/object_triforce_piece_2/image | Bin 0 -> 1116 bytes .../object_triforce_piece_2/image_copy | Bin 0 -> 1116 bytes .../mat_gTriforcePiece2DL_Green_mat | 21 + .../mat_gTriforcePiece2DL_f3dlite_shard_edge | 21 - ...t_gTriforcePiece2DL_f3dlite_triforce_edges | 21 - ...gTriforcePiece2DL_f3dlite_triforce_surface | 21 - .../mat_gTriforcePiece2DL_silver_001 | 21 + .../objects/object_triforce_piece_2/noise_tex | Bin 2140 -> 0 bytes .../custom/objects/object_xmas_tree/Bark_64 | Bin 0 -> 8284 bytes .../objects/object_xmas_tree/LeavesAlpha_64 | Bin 0 -> 8284 bytes .../objects/object_xmas_tree/gXmasTreeDL | 13 + .../object_xmas_tree/gXmasTreeDL_tri_0 | 40 ++ .../object_xmas_tree/gXmasTreeDL_tri_1 | 145 ++++++ .../object_xmas_tree/gXmasTreeDL_vtx_0 | 66 +++ .../object_xmas_tree/gXmasTreeDL_vtx_1 | 177 ++++++++ .../mat_gXmasTreeDL_f3dlite_TreeBrown | 21 + .../mat_gXmasTreeDL_f3dlite_TreeGreen | 20 + soh/assets/soh_assets.h | 4 +- .../3drando/hint_list/hint_list_item.cpp | 8 +- .../randomizer/3drando/item_list.cpp | 2 +- .../Enhancements/randomizer/3drando/shops.cpp | 6 +- .../Enhancements/randomizer/randomizer.cpp | 17 +- .../randomizer/randomizer_item_tracker.cpp | 8 +- soh/soh/OTRGlobals.cpp | 7 +- .../ovl_En_ChristmasTree/z_en_christmastree.c | 19 +- 69 files changed, 2932 insertions(+), 693 deletions(-) create mode 100644 soh/assets/custom/objects/object_triforce_completed/GlowAlpha_64 create mode 100644 soh/assets/custom/objects/object_triforce_completed/hilite_melon create mode 100644 soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_Glow rename soh/assets/custom/objects/{object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_triforce_surface => object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold} (75%) delete mode 100644 soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_edges delete mode 100644 soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_surface delete mode 100644 soh/assets/custom/objects/object_triforce_completed/noise_tex delete mode 100644 soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_2 delete mode 100644 soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_2 create mode 100644 soh/assets/custom/objects/object_triforce_piece_0/image create mode 100644 soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_ball delete mode 100644 soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_shard_edge delete mode 100644 soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_edges delete mode 100644 soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_surface create mode 100644 soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver delete mode 100644 soh/assets/custom/objects/object_triforce_piece_0/noise_tex create mode 100644 soh/assets/custom/objects/object_triforce_piece_1/image create mode 100644 soh/assets/custom/objects/object_triforce_piece_1/image_copy create mode 100644 soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_blue_mat delete mode 100644 soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_shard_edge create mode 100644 soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 delete mode 100644 soh/assets/custom/objects/object_triforce_piece_1/noise_tex delete mode 100644 soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_2 delete mode 100644 soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_2 create mode 100644 soh/assets/custom/objects/object_triforce_piece_2/image create mode 100644 soh/assets/custom/objects/object_triforce_piece_2/image_copy create mode 100644 soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_Green_mat delete mode 100644 soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_shard_edge delete mode 100644 soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_edges delete mode 100644 soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_surface create mode 100644 soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 delete mode 100644 soh/assets/custom/objects/object_triforce_piece_2/noise_tex create mode 100644 soh/assets/custom/objects/object_xmas_tree/Bark_64 create mode 100644 soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_0 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_0 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 create mode 100644 soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeBrown create mode 100644 soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen 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 0000000000000000000000000000000000000000..1682d9e6f2f415e5fe43b2d7c3e3894a476f2ee1 GIT binary patch literal 4188 zcmd5;OP16y3=BJ#+z2+T*|6X^T!<@h6t2LxXPNsc{CZ!4-fL>b#=XWhV~>C@JNj2OaWsZGLBcsV zv8U51ZW{xq%?Juy5J0P8hs`}E1YFqPG~KNTRs!t4d6#ct^K?E-f|8(B0HO=9 zd*zPar5wnIG>f1F5-0^#fZ+;0;eq}`Ba0Y1f!81fjPB`Oz6JJ442)qa0Qktg+!y#? zT4-P*TLe`=b+6#*9Uy^y!V_blfV+|b2Qavo`Ud|;3k@JB5tPrM;Njlt>^Mco{w2!zq!M%cT-z2671%K;Tt*kdNpS4m1r6po0QuAO!$NJT6E-YY+Y@-|p?a z5GVo)D0mVGZoI=!ys(ctQ$WLe1zG}Ucm)sSBMnzYz$J77Si^gGE&eVZB@h+R7GUK+ z(x=p~{5yfS@ef!%r*ETw?mzS2@>lUppcimA{taFN2(&qU`}s>e*1y%yZ2dR&lLgf4 zM|c$=2w1*Zz}pW1iSPBhEg;oDNnkGDarwCqt??Ovzkp=$2b>Kc%eUft0)`J*%Rsb? zcWgj#Z~yfRkN|!{P|zDtwx8YrTlFyl5aBt#z*qtikOJ6%NBdI$TH^--wxE!ZXf^P? z{#^uQ4{`@*=eMc(M)%dn*RmG@Q~}z6Ab}cayjAP;9-RAEWUpqxO-M~#K@bV!4odNT z_ZZw~4?_w?pe?ZP-bPD&_I|>P`w0PJ&@L>`+Iv$x|AE%Pt5F2rCO<4dM)NIloz zrdOO}hE5@{d|!iy0!au41DkK7cf3=B6qul?09u-G^6OALzj#WcNMr+Fac;sO@c(Fo nx6!%RVYJQN-VF1uJZzB|xiWw9YDF=babSpEpXv7iYn}20J+4Pf literal 0 HcmV?d00001 diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL index 966bef2060..b7c7d8af02 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL @@ -1,7 +1,7 @@ - + - + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 index dea47708c1..f9d6420cc0 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_0 @@ -1,56 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 index 36be4333f2..b67adf06ef 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_tri_1 @@ -1,7 +1,390 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 index 6ca96db305..ca11ab1b3b 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_0 @@ -1,54 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + diff --git a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 index 3a653966d7..cc747f74a3 100644 --- a/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_completed/gTriforcePieceCompletedDL_vtx_1 @@ -1,8 +1,347 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_completed/hilite_melon b/soh/assets/custom/objects/object_triforce_completed/hilite_melon new file mode 100644 index 0000000000000000000000000000000000000000..df1d605b38e65151f7f23aa1a0bbcba40252a1c8 GIT binary patch literal 2140 zcma)+EsWzx5QTG#js}LUp`oGCN|BCaz)H!1lMM|UHZ(b4m|+RCp{`L{*-!Hq} z`{&QyZhnroT#ozG1v}r%rHwn+ubpe-TPt%$Z)#sI*@TyEt_5ecpPxfw8}MK|HzY&S z##LnUY&zd%*<|u6Qe0=Ms5lgdashuW9-TAi`{`nGXGS|(XUgS#Kkhe6-;&q(C3!tv z(AKX*f{)3|rHZO(NK6j%kdR63vnhQOHhsg;l}%_lUDCH~s(rtXwqLJ>ZA@-*+nn#H z5E?EFWq4)2p{`(BtSe?*5cy!l-iHl$2m*c)Ts7~;+X^wjoobT!-HNe7# zVmcmO8?zm-Y`V3)>feP+usm)ZpU z2ZG%MUiXS9qvcHVqZoYSCp`Xmfr59Nf2jy~vQXn;328y7{;~mtCpWM+wjE|;w@>MnIobY;rPzE7Fz{pEjHV-EKV%NDCLxfNb zd4wJZG*9IpG$?B+pwhfoEO^QJN7F7;1*KH^2GyaaQb&xBCM6phufVPdR1(h6qb-iG WoJf;Se#T3`d_vWDf(%%_7svl_`n}`; literal 0 HcmV?d00001 diff --git a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_Glow b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_Glow new file mode 100644 index 0000000000..6bed4d2744 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_Glow @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold similarity index 75% rename from soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_triforce_surface rename to soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold index 5f8dc51f90..65dfd4f560 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_triforce_surface +++ b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_OrnamentGold @@ -1,6 +1,6 @@ - + @@ -8,14 +8,14 @@ - + - + diff --git a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_edges b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_edges deleted file mode 100644 index 52591dfc85..0000000000 --- a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_edges +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_surface deleted file mode 100644 index 06193ae61a..0000000000 --- a/soh/assets/custom/objects/object_triforce_completed/mat_gTriforcePieceCompletedDL_f3dlite_triforce_surface +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_completed/noise_tex b/soh/assets/custom/objects/object_triforce_completed/noise_tex deleted file mode 100644 index a6d6cf945e1bd755148a4d4dcbb52a7547cff5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcma)-p;iK66oglkuRxQ?Q<%&agGb`VjYNupNF+ksxY6os*d%WB6=crmckY4&-2)5j zKXYg1-v6g*n&##4`RV3#|Na=h@;ZI|_uuVl<^Asq(Az`PoL+ZL(=FG>ZM*At{kGk< zoB8^f@B6V|^o#wtA9sD8b<1}4`pMPKy5;JSt6Sz1_+WFbkE_FGzU#q*&dPQML+cGs(0eCWBAFIAB+{qL)^;J{#(*^U779F9Cck7oMvyi7MiAz1X(~0sQ40!#}eYwJr z)w$3!#TWA08q`zmoX`3-iMlqu)Ut1KlNXALA#>#Hnt0flT_;zLs4+)eg_T-0z2Jv# z==wz%=q<_ft_t{={8V=eviFAWeF#3h{wM3p2TJs82JFS)hc4641%p29MHs>^6Wz%( z_P%H)*j`R&0VaIl)cQF&g7^Hu`S~RA&8l$%2Rru~ep=hPLVc9b!Em_yQawC50ZL_7 zkVWyC0UUWR_wL|gup?AW- - + - + - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 index 09e44f1b79..286a543842 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_0 @@ -1,17 +1,67 @@ - - - + + + - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 index 48001e3c39..a3c013e4ac 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_1 @@ -1,18 +1,91 @@ - - - - - - - - - - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_2 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_2 deleted file mode 100644 index e35e34492a..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_tri_2 +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 index a86fa98bf5..3637534b99 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_0 @@ -1,18 +1,72 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 index 230fbb7f88..ef51d7124c 100644 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_1 @@ -1,22 +1,107 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_2 b/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_2 deleted file mode 100644 index 86d1238254..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/gTriforcePiece0DL_vtx_2 +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/image b/soh/assets/custom/objects/object_triforce_piece_0/image new file mode 100644 index 0000000000000000000000000000000000000000..2a8a62348be3a83a33bc2ab4c4905ddac5a53351 GIT binary patch literal 1116 zcma))ds7-`6vpXHr=O$$_A<4$ndzj}s2Oj)Oi{;V)HdxHbtX}o)Cdx>#w)c^sTePK zM=pZgFAB?o!Y(YkEXytnq8K3}YE2+9;5X& z+&Q=5=t|7r*%UzC7#o6ZQIubjX%`! z{uWD?6Ige76}xW}_pXm{n(FK7>zg=2IS3hrZO#2t;>iO;UG+U}gf#cnmX(&2m6TjB z{IuZP9yN^VdOP|C2fXby{a7L>Z741+y;1b_H&t~FO}DCxep>K^J)%dPhuycIMpNWM z@fX*={ObD6#*Uuh(Xp}N#~rQnaFmn{aeo%l$I-R#cw)&ohkd7CvaV69l``p~s9T2a z9XggCxK4MsI^p!I%=sZSy8`SuZKe&STp^$8c7=}5;i=R<#t*#B<@1-h*T|d^1VNig zw=R>;a3zQIn-p}qJF3d&8T%refki8Nv(;j@=++h|1-;>9>PaT~7n$sla&Stj z)@^8YI+bMN2}gDszj%2#xWM2Hoy`yfe@sZEN`+jhQZ9&|aCqU=Kk38Yptt$Ud^Vds z({g%*qPeBz)m5o4jXN;HOlW*u$mehbkrVnUJCw`kuF{)${N@_=oz9`@RmHkS`D~cq1*Jl~ z3g5*g<7Zwha39^eSz5ytEh*F*y=H!t-|0RLaSNBz`CKNG!G+w8+Tt5OwhxJ!0Ih0v znA>HKlf9o;2#f?l?1=f?yERqil?~jHXDjk``O@Nw9B}W6KD+kuM`f)e;}fI2rtiy& zN^9>u9-U$Ss07`B!yQ+BQczIXC;?pNHDPO09sBlu!Jkv}i;_hZ1UYOwanFNae!Vl| zj2}IxAcJacRVvqLbt=V*-0byk+o5>SkCU(yIXF2>C-x&Gj(`?}MyE5GoLpvYc#qoCyZilr$0=i)P5qFK7XA(OYB7mj7e(JtJFr1AIAXL zM@ErAc<(ToIz2m19z-buM?8RDDzhPYzzzCQIz)L0IuhHD@5T0FG)bT^Xi~4q>?n=^ z2oj7^6z(A?GDHM%977QgXfx|IN`(nUojw#JcBA1i;tEiq0OEz+F2H6no6J_@h7opn z0|7i3i$GwJFI|@>1daxDT=0;_PoF*gBjF%qtyjDtQNh- IyzTe@3v^4aT>t<8 literal 0 HcmV?d00001 diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_ball b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_ball new file mode 100644 index 0000000000..214ad3df66 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_ball @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_shard_edge b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_shard_edge deleted file mode 100644 index f626317933..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_shard_edge +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_edges b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_edges deleted file mode 100644 index 9355e70943..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_edges +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_surface deleted file mode 100644 index e863b31c5a..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_f3dlite_triforce_surface +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver new file mode 100644 index 0000000000..d56781ad26 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_0/mat_gTriforcePiece0DL_silver @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_0/noise_tex b/soh/assets/custom/objects/object_triforce_piece_0/noise_tex deleted file mode 100644 index a6d6cf945e1bd755148a4d4dcbb52a7547cff5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcma)-p;iK66oglkuRxQ?Q<%&agGb`VjYNupNF+ksxY6os*d%WB6=crmckY4&-2)5j zKXYg1-v6g*n&##4`RV3#|Na=h@;ZI|_uuVl<^Asq(Az`PoL+ZL(=FG>ZM*At{kGk< zoB8^f@B6V|^o#wtA9sD8b<1}4`pMPKy5;JSt6Sz1_+WFbkE_FGzU#q*&dPQML+cGs(0eCWBAFIAB+{qL)^;J{#(*^U779F9Cck7oMvyi7MiAz1X(~0sQ40!#}eYwJr z)w$3!#TWA08q`zmoX`3-iMlqu)Ut1KlNXALA#>#Hnt0flT_;zLs4+)eg_T-0z2Jv# z==wz%=q<_ft_t{={8V=eviFAWeF#3h{wM3p2TJs82JFS)hc4641%p29MHs>^6Wz%( z_P%H)*j`R&0VaIl)cQF&g7^Hu`S~RA&8l$%2Rru~ep=hPLVc9b!Em_yQawC50ZL_7 zkVWyC0UUWR_wL|gup?AW- - + - + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 index 5f33f7347e..c9e63a8d96 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_0 @@ -1,20 +1,67 @@ - - - - - - + + + + + + + + - - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 index 43df6492b4..67f0ba8eb3 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_tri_1 @@ -1,25 +1,88 @@ - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 index e078b82461..d9a5075af2 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_0 @@ -1,23 +1,72 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 index e0460194da..8c2f954e7c 100644 --- a/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_piece_1/gTriforcePiece1DL_vtx_1 @@ -1,34 +1,96 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/image b/soh/assets/custom/objects/object_triforce_piece_1/image new file mode 100644 index 0000000000000000000000000000000000000000..2a8a62348be3a83a33bc2ab4c4905ddac5a53351 GIT binary patch literal 1116 zcma))ds7-`6vpXHr=O$$_A<4$ndzj}s2Oj)Oi{;V)HdxHbtX}o)Cdx>#w)c^sTePK zM=pZgFAB?o!Y(YkEXytnq8K3}YE2+9;5X& z+&Q=5=t|7r*%UzC7#o6ZQIubjX%`! z{uWD?6Ige76}xW}_pXm{n(FK7>zg=2IS3hrZO#2t;>iO;UG+U}gf#cnmX(&2m6TjB z{IuZP9yN^VdOP|C2fXby{a7L>Z741+y;1b_H&t~FO}DCxep>K^J)%dPhuycIMpNWM z@fX*={ObD6#*Uuh(Xp}N#~rQnaFmn{aeo%l$I-R#cw)&ohkd7CvaV69l``p~s9T2a z9XggCxK4MsI^p!I%=sZSy8`SuZKe&STp^$8c7=}5;i=R<#t*#B<@1-h*T|d^1VNig zw=R>;a3zQIn-p}qJF3d&8T%refki8Nv(;j@=++h|1-;>9>PaT~7n$sla&Stj z)@^8YI+bMN2}gDszj%2#xWM2Hoy`yfe@sZEN`+jhQZ9&|aCqU=Kk38Yptt$Ud^Vds z({g%*qPeBz)m5o4jXN;HOlW*u$mehbkrVnUJCw`kuF{)${N@_=oz9`@RmHkS`D~cq1*Jl~ z3g5*g<7Zwha39^eSz5ytEh*F*y=H!t-|0RLaSNBz`CKNG!G+w8+Tt5OwhxJ!0Ih0v znA>HKlf9o;2#f?l?1=f?yERqil?~jHXDjk``O@Nw9B}W6KD+kuM`f)e;}fI2rtiy& zN^9>u9-U$Ss07`B!yQ+BQczIXC;?pNHDPO09sBlu!Jkv}i;_hZ1UYOwanFNae!Vl| zj2}IxAcJacRVvqLbt=V*-0byk+o5>SkCU(yIXF2>C-x&Gj(`?}MyE5GoLpvYc#qoCyZilr$0=i)P5qFK7XA(OYB7mj7e(JtJFr1AIAXL zM@ErAc<(ToIz2m19z-buM?8RDDzhPYzzzCQIz)L0IuhHD@5T0FG)bT^Xi~4q>?n=^ z2oj7^6z(A?GDHM%977QgXfx|IN`(nUojw#JcBA1i;tEiq0OEz+F2H6no6J_@h7opn z0|7i3i$GwJFI|@>1daxDT=0;_PoF*gBjF%qtyjDtQNh- IyzTe@3v^4aT>t<8 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2a8a62348be3a83a33bc2ab4c4905ddac5a53351 GIT binary patch literal 1116 zcma))ds7-`6vpXHr=O$$_A<4$ndzj}s2Oj)Oi{;V)HdxHbtX}o)Cdx>#w)c^sTePK zM=pZgFAB?o!Y(YkEXytnq8K3}YE2+9;5X& z+&Q=5=t|7r*%UzC7#o6ZQIubjX%`! z{uWD?6Ige76}xW}_pXm{n(FK7>zg=2IS3hrZO#2t;>iO;UG+U}gf#cnmX(&2m6TjB z{IuZP9yN^VdOP|C2fXby{a7L>Z741+y;1b_H&t~FO}DCxep>K^J)%dPhuycIMpNWM z@fX*={ObD6#*Uuh(Xp}N#~rQnaFmn{aeo%l$I-R#cw)&ohkd7CvaV69l``p~s9T2a z9XggCxK4MsI^p!I%=sZSy8`SuZKe&STp^$8c7=}5;i=R<#t*#B<@1-h*T|d^1VNig zw=R>;a3zQIn-p}qJF3d&8T%refki8Nv(;j@=++h|1-;>9>PaT~7n$sla&Stj z)@^8YI+bMN2}gDszj%2#xWM2Hoy`yfe@sZEN`+jhQZ9&|aCqU=Kk38Yptt$Ud^Vds z({g%*qPeBz)m5o4jXN;HOlW*u$mehbkrVnUJCw`kuF{)${N@_=oz9`@RmHkS`D~cq1*Jl~ z3g5*g<7Zwha39^eSz5ytEh*F*y=H!t-|0RLaSNBz`CKNG!G+w8+Tt5OwhxJ!0Ih0v znA>HKlf9o;2#f?l?1=f?yERqil?~jHXDjk``O@Nw9B}W6KD+kuM`f)e;}fI2rtiy& zN^9>u9-U$Ss07`B!yQ+BQczIXC;?pNHDPO09sBlu!Jkv}i;_hZ1UYOwanFNae!Vl| zj2}IxAcJacRVvqLbt=V*-0byk+o5>SkCU(yIXF2>C-x&Gj(`?}MyE5GoLpvYc#qoCyZilr$0=i)P5qFK7XA(OYB7mj7e(JtJFr1AIAXL zM@ErAc<(ToIz2m19z-buM?8RDDzhPYzzzCQIz)L0IuhHD@5T0FG)bT^Xi~4q>?n=^ z2oj7^6z(A?GDHM%977QgXfx|IN`(nUojw#JcBA1i;tEiq0OEz+F2H6no6J_@h7opn z0|7i3i$GwJFI|@>1daxDT=0;_PoF*gBjF%qtyjDtQNh- IyzTe@3v^4aT>t<8 literal 0 HcmV?d00001 diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_blue_mat b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_blue_mat new file mode 100644 index 0000000000..18d8436b2b --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_blue_mat @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_shard_edge b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_shard_edge deleted file mode 100644 index b9e61293d1..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_f3dlite_shard_edge +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 new file mode 100644 index 0000000000..26f9a0b700 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_1/mat_gTriforcePiece1DL_silver_002 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_1/noise_tex b/soh/assets/custom/objects/object_triforce_piece_1/noise_tex deleted file mode 100644 index a6d6cf945e1bd755148a4d4dcbb52a7547cff5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcma)-p;iK66oglkuRxQ?Q<%&agGb`VjYNupNF+ksxY6os*d%WB6=crmckY4&-2)5j zKXYg1-v6g*n&##4`RV3#|Na=h@;ZI|_uuVl<^Asq(Az`PoL+ZL(=FG>ZM*At{kGk< zoB8^f@B6V|^o#wtA9sD8b<1}4`pMPKy5;JSt6Sz1_+WFbkE_FGzU#q*&dPQML+cGs(0eCWBAFIAB+{qL)^;J{#(*^U779F9Cck7oMvyi7MiAz1X(~0sQ40!#}eYwJr z)w$3!#TWA08q`zmoX`3-iMlqu)Ut1KlNXALA#>#Hnt0flT_;zLs4+)eg_T-0z2Jv# z==wz%=q<_ft_t{={8V=eviFAWeF#3h{wM3p2TJs82JFS)hc4641%p29MHs>^6Wz%( z_P%H)*j`R&0VaIl)cQF&g7^Hu`S~RA&8l$%2Rru~ep=hPLVc9b!Em_yQawC50ZL_7 zkVWyC0UUWR_wL|gup?AW- - + - + - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 index b54e182d5e..59d81883f1 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_0 @@ -1,29 +1,67 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 index 00a32bfd88..a15c641d7a 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_1 @@ -1,11 +1,378 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_2 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_2 deleted file mode 100644 index 0993c1c1ee..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_tri_2 +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 index bf7dfcac67..5122e29042 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_0 @@ -1,36 +1,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 index e3237ab215..988bfb6735 100644 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 +++ b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_1 @@ -1,12 +1,410 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_2 b/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_2 deleted file mode 100644 index ec4e737005..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/gTriforcePiece2DL_vtx_2 +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/image b/soh/assets/custom/objects/object_triforce_piece_2/image new file mode 100644 index 0000000000000000000000000000000000000000..2a8a62348be3a83a33bc2ab4c4905ddac5a53351 GIT binary patch literal 1116 zcma))ds7-`6vpXHr=O$$_A<4$ndzj}s2Oj)Oi{;V)HdxHbtX}o)Cdx>#w)c^sTePK zM=pZgFAB?o!Y(YkEXytnq8K3}YE2+9;5X& z+&Q=5=t|7r*%UzC7#o6ZQIubjX%`! z{uWD?6Ige76}xW}_pXm{n(FK7>zg=2IS3hrZO#2t;>iO;UG+U}gf#cnmX(&2m6TjB z{IuZP9yN^VdOP|C2fXby{a7L>Z741+y;1b_H&t~FO}DCxep>K^J)%dPhuycIMpNWM z@fX*={ObD6#*Uuh(Xp}N#~rQnaFmn{aeo%l$I-R#cw)&ohkd7CvaV69l``p~s9T2a z9XggCxK4MsI^p!I%=sZSy8`SuZKe&STp^$8c7=}5;i=R<#t*#B<@1-h*T|d^1VNig zw=R>;a3zQIn-p}qJF3d&8T%refki8Nv(;j@=++h|1-;>9>PaT~7n$sla&Stj z)@^8YI+bMN2}gDszj%2#xWM2Hoy`yfe@sZEN`+jhQZ9&|aCqU=Kk38Yptt$Ud^Vds z({g%*qPeBz)m5o4jXN;HOlW*u$mehbkrVnUJCw`kuF{)${N@_=oz9`@RmHkS`D~cq1*Jl~ z3g5*g<7Zwha39^eSz5ytEh*F*y=H!t-|0RLaSNBz`CKNG!G+w8+Tt5OwhxJ!0Ih0v znA>HKlf9o;2#f?l?1=f?yERqil?~jHXDjk``O@Nw9B}W6KD+kuM`f)e;}fI2rtiy& zN^9>u9-U$Ss07`B!yQ+BQczIXC;?pNHDPO09sBlu!Jkv}i;_hZ1UYOwanFNae!Vl| zj2}IxAcJacRVvqLbt=V*-0byk+o5>SkCU(yIXF2>C-x&Gj(`?}MyE5GoLpvYc#qoCyZilr$0=i)P5qFK7XA(OYB7mj7e(JtJFr1AIAXL zM@ErAc<(ToIz2m19z-buM?8RDDzhPYzzzCQIz)L0IuhHD@5T0FG)bT^Xi~4q>?n=^ z2oj7^6z(A?GDHM%977QgXfx|IN`(nUojw#JcBA1i;tEiq0OEz+F2H6no6J_@h7opn z0|7i3i$GwJFI|@>1daxDT=0;_PoF*gBjF%qtyjDtQNh- IyzTe@3v^4aT>t<8 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2a8a62348be3a83a33bc2ab4c4905ddac5a53351 GIT binary patch literal 1116 zcma))ds7-`6vpXHr=O$$_A<4$ndzj}s2Oj)Oi{;V)HdxHbtX}o)Cdx>#w)c^sTePK zM=pZgFAB?o!Y(YkEXytnq8K3}YE2+9;5X& z+&Q=5=t|7r*%UzC7#o6ZQIubjX%`! z{uWD?6Ige76}xW}_pXm{n(FK7>zg=2IS3hrZO#2t;>iO;UG+U}gf#cnmX(&2m6TjB z{IuZP9yN^VdOP|C2fXby{a7L>Z741+y;1b_H&t~FO}DCxep>K^J)%dPhuycIMpNWM z@fX*={ObD6#*Uuh(Xp}N#~rQnaFmn{aeo%l$I-R#cw)&ohkd7CvaV69l``p~s9T2a z9XggCxK4MsI^p!I%=sZSy8`SuZKe&STp^$8c7=}5;i=R<#t*#B<@1-h*T|d^1VNig zw=R>;a3zQIn-p}qJF3d&8T%refki8Nv(;j@=++h|1-;>9>PaT~7n$sla&Stj z)@^8YI+bMN2}gDszj%2#xWM2Hoy`yfe@sZEN`+jhQZ9&|aCqU=Kk38Yptt$Ud^Vds z({g%*qPeBz)m5o4jXN;HOlW*u$mehbkrVnUJCw`kuF{)${N@_=oz9`@RmHkS`D~cq1*Jl~ z3g5*g<7Zwha39^eSz5ytEh*F*y=H!t-|0RLaSNBz`CKNG!G+w8+Tt5OwhxJ!0Ih0v znA>HKlf9o;2#f?l?1=f?yERqil?~jHXDjk``O@Nw9B}W6KD+kuM`f)e;}fI2rtiy& zN^9>u9-U$Ss07`B!yQ+BQczIXC;?pNHDPO09sBlu!Jkv}i;_hZ1UYOwanFNae!Vl| zj2}IxAcJacRVvqLbt=V*-0byk+o5>SkCU(yIXF2>C-x&Gj(`?}MyE5GoLpvYc#qoCyZilr$0=i)P5qFK7XA(OYB7mj7e(JtJFr1AIAXL zM@ErAc<(ToIz2m19z-buM?8RDDzhPYzzzCQIz)L0IuhHD@5T0FG)bT^Xi~4q>?n=^ z2oj7^6z(A?GDHM%977QgXfx|IN`(nUojw#JcBA1i;tEiq0OEz+F2H6no6J_@h7opn z0|7i3i$GwJFI|@>1daxDT=0;_PoF*gBjF%qtyjDtQNh- IyzTe@3v^4aT>t<8 literal 0 HcmV?d00001 diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_Green_mat b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_Green_mat new file mode 100644 index 0000000000..35d57dfeae --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_Green_mat @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_shard_edge b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_shard_edge deleted file mode 100644 index c222fe68d5..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_shard_edge +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_edges b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_edges deleted file mode 100644 index 5968068f5f..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_edges +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_surface b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_surface deleted file mode 100644 index d903f00bbd..0000000000 --- a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_f3dlite_triforce_surface +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 new file mode 100644 index 0000000000..6a9be7bec4 --- /dev/null +++ b/soh/assets/custom/objects/object_triforce_piece_2/mat_gTriforcePiece2DL_silver_001 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_triforce_piece_2/noise_tex b/soh/assets/custom/objects/object_triforce_piece_2/noise_tex deleted file mode 100644 index a6d6cf945e1bd755148a4d4dcbb52a7547cff5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 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 JSEuLw{{SzE$8!Jx literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..47ca211a96b664bf352a1740c1e797501521ad57 GIT binary patch literal 8284 zcmc(jJ#yn#7KLTXB)f>r%m&F+A!Mk|rmO5gCQ8vH6L>ijNJ42bvxSL7qP&UOf_EUz z`R;iS|D-GjcB4cBct77g=ic`K_RY=B%`ZRy>!080`?vr8=YRa^^mqSTspn7W&x8K` z#y5GTh_(4*p_wK?Dbt}L_v?!Uiadx z-PgMqukX|9X?Nn2?^S%So+YC;t0;Ghe_tQkstr{-r=R~aKRF>S9be9c{_r8` zAMm9jX36}O#?JYQcKw4i2Vbt^WU#mBFKhF=Oe8*SisMwQaVPvIk54#j{dSKTs@nQ5 z@yqq!PWyGKJXPjD;oE*4?hW`+D-*u@O!%%Ebo#)Bp3l9p|LBKLoy_^TPEPpDeCn5Z z&`*^n{jNXt4E<`)$AnM+({Kd@Uv+xdDr)>kzoLpy@iks9e~zEn8bt<1`V+s8fc$%% z4EfyC;qfzmq5EE!OZsVzBW4)$)nC5hq5agVT$j>{|MblI;iKB|a~31p^r`#IgWD^r zm+z=Q?gXE)I-lsLU*Z!3QE0zdvtumqMe%rcE@xnY-;VjzdGc<;r-gW}zvow4BUJ;z z`>BuoJDq60p_dbaE_=L zoA&weTQOYF&yM{^`MGk! z^Anjh@62D|dquN~6(1{7^f^CfX$!@KgA=}#;gnhw@9Zqh9r_zwLpN_8eg{eX^zOpla5w4q{>zw={ucLm zQycK91l>!=(}*uR{OaZN{FE#2jZ#l#II1Z>VnUbKz(7Cm^1*Kw_;N!vDE+* z-RTF-qZV4DN7nCJv(~YGe8s&fKh_2gyzn0FsvGzpv#UnL=Utf@c!mdGN~unc0sp~y z9p~ROCq52z`V&7^p?Y~X;%sB)EuV{gypG=?!~mZaFa1NlbS2lKcgJV;RDb4c4$T%b zGF#6Vo1c``h;h0vF>Ml)KPsX z2>rSq^WoAm8Cp3H&s34v#+Dt+(mvp;QL(p50$#2 zD(wMh|Uo+!Ri;@{X;zdvJMPT%hPySgS&X?*>YdG;0 zL)OnK5A}*?$R}3|{Fb^*v8aFWH7mcq#(dT?clWjGy9xclXBFVVfX`Um3`cYR3*wsV z@A=W2)sN;2e6<9>UFPEsu`KbaOtr*&%)o!~Q!X+e`iRf|hZl|v{@t(eV+W`;T2yw= zw0^Gg`9E0RBhcvzgP(qvx`H}B?ZlFwU(_VM*{@K@Ta4Fq<|~GlJ4rvkGNq5Zj6;9s zkLJNL;6N~TgTfuxe;8~OYj=$C!^rzK%$Y)l+N3-va_~(wVKIqCcM@k0r zoeO+r$o%v!KIU)aOH&-#MOdFP+eRbKg<3Sb`R7<8Q+|yPGyd!DRr-(ND*DZjr$T7K zfybo(d~5!u*i_GqV8+{xs8jxtXcUtoz1<}Lm-w62qxi4E*O(FopvR#6O09McU>6Sq#yO@0qQ97XKK0QG+k8jz=Bv zUqj`we3t*>moayt7`ns$i(iiUo2Ui#6z@z#a)t~(Cq8P<;%m;tmm_Lh=7%Z~f*ks~ z2sApPG+!=g7DrczDfgrz@i&L(!@1)>!$(uhAntWOGv%2(^_suqOAFbzNAy6~gnzzE z{Qag>EabC1zQ4V{p?l>2J^s`3{-!?aH|M{;6uF&b-`8CY>UEjIZc4^FK@BbN$Ycc)R K{A;mYYx_Ss>nwl( literal 0 HcmV?d00001 diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL new file mode 100644 index 0000000000..2bac0e0983 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_0 new file mode 100644 index 0000000000..38cdbe014b --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_0 @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 new file mode 100644 index 0000000000..889e5aa4f5 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_0 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_0 new file mode 100644 index 0000000000..94e5e1fefc --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_0 @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 new file mode 100644 index 0000000000..bec46bbab6 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeBrown b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeBrown new file mode 100644 index 0000000000..37fdb10d29 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeBrown @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen new file mode 100644 index 0000000000..69c9c11e5f --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h index 0eee73bb08..a672b3663e 100644 --- a/soh/assets/soh_assets.h +++ b/soh/assets/soh_assets.h @@ -56,8 +56,8 @@ static const ALIGN_ASSET(2) char gTriforcePiece2DL[] = dgTriforcePiece2DL; #define dgTriforcePieceCompletedDL "__OTR__objects/object_triforce_completed/gTriforcePieceCompletedDL" static const ALIGN_ASSET(2) char gTriforcePieceCompletedDL[] = dgTriforcePieceCompletedDL; -#define dxmas_tree "__OTR__objects/gameplay_holiday/xmas_tree" -static const ALIGN_ASSET(2) char xmas_tree[] = dxmas_tree; +#define dgXmasTreeDL "__OTR__objects/object_xmas_tree/gXmasTreeDL" +static const ALIGN_ASSET(2) char gXmasTreeDL[] = dgXmasTreeDL; #define dxmas_tree_presents "__OTR__objects/gameplay_holiday/xmas_tree_presents" static const ALIGN_ASSET(2) char xmas_tree_presents[] = dxmas_tree_presents; diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index 9b9913c8c4..7d7a3cf428 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -1931,12 +1931,12 @@ void HintTable_Init_Item() { hintTable[TRIFORCE_PIECE] = HintText::Item({ //obscure text - Text{"a triumph fork", /*french*/"la Tribosse", /*spanish*/"un trígono del triunfo"}, - Text{"cheese", /*french*/"du fromage", /*spanish*/"un porción de queso"}, - Text{"a gold fragment", /*french*/"un fragment d'or", /*spanish*/"un fragmento dorado"}, + Text{"a Christmas Ornament", /*french*/"la Tribosse", /*spanish*/"un trígono del triunfo"}, + Text{"a Christmas Ornament", /*french*/"du fromage", /*spanish*/"un porción de queso"}, + Text{"a Christmas Ornament", /*french*/"un fragment d'or", /*spanish*/"un fragmento dorado"}, }, {}, //clear text - Text{"a Piece of the Triforce", /*french*/"un fragment de la Triforce", /*spanish*/"un fragmento de la Trifuerza"} + Text{"a Christmas Ornament", /*french*/"un fragment de la Triforce", /*spanish*/"un fragmento de la Trifuerza"} ); hintTable[EPONA] = HintText::Item({ diff --git a/soh/soh/Enhancements/randomizer/3drando/item_list.cpp b/soh/soh/Enhancements/randomizer/3drando/item_list.cpp index 34e9c779f7..6f61b9e126 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_list.cpp @@ -242,7 +242,7 @@ void ItemTable_Init() { // RandomizerGet itemTable[BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, Text{"Buy Red Potion [40]", "Acheter: Potion Rouge [40]", "Comprar poción roja [40]"}, ITEMTYPE_SHOP, 0x30, false, &noVariable, BOTTLE_WITH_RED_POTION, 40); itemTable[BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, Text{"Buy Red Potion [50]", "Acheter: Potion Rouge [50]", "Comprar poción roja [50]"}, ITEMTYPE_SHOP, 0x31, false, &noVariable, BOTTLE_WITH_RED_POTION, 50); - itemTable[TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{"Triforce Piece", "Triforce Piece", "Triforce Piece"}, ITEMTYPE_ITEM, 0xDF, true, &TriforcePieces, TRIFORCE_PIECE); + itemTable[TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{"Christmas Ornament", "Christmas Ornament", "Christmas Ornament"}, ITEMTYPE_ITEM, 0xDF, true, &TriforcePieces, TRIFORCE_PIECE); itemTable[TRIFORCE] = Item(RG_TRIFORCE, Text{"Triforce", "Triforce", "Trifuerza"}, ITEMTYPE_EVENT, GI_RUPEE_RED_LOSE, false, &noVariable, NONE); itemTable[HINT] = Item(RG_HINT, Text{"Hint", "Indice", "Pista"}, ITEMTYPE_EVENT, GI_RUPEE_BLUE_LOSE, false, &noVariable, NONE); diff --git a/soh/soh/Enhancements/randomizer/3drando/shops.cpp b/soh/soh/Enhancements/randomizer/3drando/shops.cpp index 85fb22c22d..7e94b8066d 100644 --- a/soh/soh/Enhancements/randomizer/3drando/shops.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/shops.cpp @@ -699,9 +699,9 @@ void InitTrickNames() { Text{"Life Heart", "Cœur de vie", "Vida Corazón"}, Text{"Lots of Love", "Beaucoup d'amour", "Mucho amor"}}; trickNameTable[0xDF] = { - Text{"Piece of Cheese", "Morceau de Fromage", "Piece of Cheese"}, - Text{"Triforce Shard", "Éclat de Triforce", "Triforce Shard"}, - Text{"Shiny Rock", "Caiiloux Brillant", "Shiny Rock"}}; + Text{"Glass Ball", "Morceau de Fromage", "Piece of Cheese"}, + Text{"Coal", "Éclat de Triforce", "Triforce Shard"}, + Text{"Ornamento", "Caiiloux Brillant", "Shiny Rock"}}; /* //Names for individual upgrades, in case progressive names are replaced diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 549195d50f..664c5659b3 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -3543,21 +3543,20 @@ void RandomizerSettingsWindow::DrawElement() { } // Triforce Hunt - UIWidgets::EnhancementCheckbox("Triforce Hunt", "gRandomizeTriforceHunt"); + UIWidgets::EnhancementCheckbox("Christmas Ornaments Hunt", "gRandomizeTriforceHunt"); UIWidgets::InsertHelpHoverText( - "Pieces of the Triforce of Courage have been scattered across the world. Find them all to finish the game!\n\n" - "When the required amount of pieces have been found, the game is saved and Ganon's Boss key is given " - "to you when you load back into the game if you desire to beat Ganon afterwards.\n\n" - "Keep in mind Ganon might not be logically beatable when \"All Locations Reachable\" is turned off." + "The Christmas ornnaments went missing from the tree in Kakariko Village! Find them back and restore the Christmas " + "magic. The tree will get more and more decorated as you find more of the ornaments. Interact with the completed tree " + "to finish the game! Your game will be saved and Ganon's Boss key will be granted once you load back into the save." ); if (CVarGetInteger("gRandomizeTriforceHunt", 0)) { // Triforce Hunt (total pieces) UIWidgets::Spacer(0); int totalPieces = CVarGetInteger("gRandomizeTriforceHuntTotalPieces", 30); - ImGui::Text("Triforce Pieces in the world: %d", totalPieces); + ImGui::Text("Ornaments in the world: %d", totalPieces); UIWidgets::InsertHelpHoverText( - "The amount of Triforce pieces that will be placed in the world. " + "The amount of Christmas ornaments that will be placed in the world. " "Keep in mind seed generation can fail if more pieces are placed than there are junk items in the item pool." ); ImGui::SameLine(); @@ -3565,9 +3564,9 @@ void RandomizerSettingsWindow::DrawElement() { // Triforce Hunt (required pieces) int requiredPieces = CVarGetInteger("gRandomizeTriforceHuntRequiredPieces", 20); - ImGui::Text("Triforce Pieces to win: %d", requiredPieces); + ImGui::Text("Ornaments to win: %d", requiredPieces); UIWidgets::InsertHelpHoverText( - "The amount of Triforce pieces required to win the game." + "The amount of Christmas ornaments required to win the game." ); ImGui::SameLine(); UIWidgets::EnhancementSliderInt("", "##TriforceHuntRequiredPieces", "gRandomizeTriforceHuntRequiredPieces", 1, totalPieces, "", 20); diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index f24ab818b9..33477b0c62 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -607,7 +607,7 @@ void DrawItem(ItemTrackerItem item) { case RG_TRIFORCE_PIECE: actualItemId = item.id; hasItem = IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT); - itemName = "Triforce Piece"; + itemName = "Christmas Ornament"; break; } @@ -1148,9 +1148,9 @@ void ItemTrackerSettingsWindow::DrawElement() { UIWidgets::Spacer(0); - ImGui::Text("Triforce Piece Count Tracking"); + ImGui::Text("Christmas ornament Count Tracking"); UIWidgets::EnhancementCombobox("gItemTrackerTriforcePieceTrack", itemTrackerTriforcePieceTrackOptions, TRIFORCE_PIECE_COLLECTED_REQUIRED_MAX); - UIWidgets::InsertHelpHoverText("Customize what numbers are shown for triforce piece tracking."); + UIWidgets::InsertHelpHoverText("Customize what numbers are shown for ornament tracking."); ImGui::TableNextColumn(); @@ -1191,7 +1191,7 @@ void ItemTrackerSettingsWindow::DrawElement() { shouldUpdateVectors = true; } - if (UIWidgets::LabeledRightAlignedEnhancementCombobox("Triforce Pieces", "gItemTrackerTriforcePiecesDisplayType", displayTypes, SECTION_DISPLAY_HIDDEN)) { + if (UIWidgets::LabeledRightAlignedEnhancementCombobox("Christmas Ornaments", "gItemTrackerTriforcePiecesDisplayType", displayTypes, SECTION_DISPLAY_HIDDEN)) { shouldUpdateVectors = true; } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index d977b6202a..26fecba815 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -784,11 +784,8 @@ extern "C" void InitOTR() { time_t now = time(NULL); tm *tm_now = localtime(&now); - if (tm_now->tm_mon == 11 && tm_now->tm_mday >= 24 && tm_now->tm_mday <= 25) { - CVarRegisterInteger("gLetItSnow", 1); - } else { - CVarClear("gLetItSnow"); - } + + CVarRegisterInteger("gLetItSnow", 1); srand(now); #ifdef ENABLE_CROWD_CONTROL 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 index b24aaf4d1c..fdc58fb27d 100644 --- a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c @@ -106,29 +106,28 @@ void EnChristmasTree_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - Gfx_SetupDL_25Xlu(play->state.gfxCtx); + Gfx_SetupDL_25Opa(play->state.gfxCtx); Matrix_Scale(treeSize, treeSize, treeSize, MTXMODE_APPLY); - gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), - G_MTX_MODELVIEW | G_MTX_LOAD); - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasTreeDL); if (percentageCompleted >= 0.17f) { - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_presents); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_presents); } if (percentageCompleted >= 0.34f) { - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_r); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_r); } if (percentageCompleted >= 0.51f) { - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_g); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_g); } if (percentageCompleted >= 0.68f) { - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_b); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_b); } if (percentageCompleted >= 0.85f) { - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_bauble_s); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_bauble_s); } if (percentageCompleted >= 1.0f) { - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)xmas_tree_star); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)xmas_tree_star); } CLOSE_DISPS(play->state.gfxCtx); From a494d21db63729af4f86530d48f02d0c3293ada2 Mon Sep 17 00:00:00 2001 From: aMannus Date: Sat, 4 Nov 2023 13:02:56 +0100 Subject: [PATCH 5/7] Don't grant ganon's boss key on ending --- soh/soh/Enhancements/mods.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index 28383ccd5d..9bb8aefb23 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -652,8 +652,6 @@ void RegisterTriforceHunt() { // Warp to credits if (GameInteractor::State::TriforceHuntCreditsWarpActive) { - GetItemEntry getItemEntry = ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); - GiveItemEntryWithoutActor(gPlayState, getItemEntry); eventTimer = 1; GameInteractor::State::TriforceHuntCreditsWarpActive = 0; } From 13474a2dcc2352dd6fda74e4bca39b74795d5509 Mon Sep 17 00:00:00 2001 From: aMannus Date: Sat, 4 Nov 2023 14:53:04 +0100 Subject: [PATCH 6/7] Updated tree & updated GBK --- .../objects/object_xmas_tree/LeavesAlpha_64 | Bin 8284 -> 8284 bytes .../object_xmas_tree/LeavesAlpha_shaded_64 | Bin 0 -> 8284 bytes .../objects/object_xmas_tree/gXmasTreeDL | 2 + .../object_xmas_tree/gXmasTreeDL_tri_1 | 188 ++++++++---------- .../object_xmas_tree/gXmasTreeDL_tri_2 | 16 ++ .../object_xmas_tree/gXmasTreeDL_vtx_1 | 47 +---- .../object_xmas_tree/gXmasTreeDL_vtx_2 | 29 +++ .../mat_gXmasTreeDL_f3dlite_TreeGreen | 7 +- .../mat_gXmasTreeDL_f3dlite_TreeTip | 21 ++ .../Enhancements/debugger/debugSaveEditor.cpp | 5 - .../Enhancements/debugger/debugSaveEditor.h | 1 + soh/soh/Enhancements/mods.cpp | 20 +- .../Enhancements/randomizer/randomizer_inf.h | 1 + .../ovl_En_ChristmasTree/z_en_christmastree.c | 2 +- 14 files changed, 184 insertions(+), 155 deletions(-) create mode 100644 soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_shaded_64 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 create mode 100644 soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 create mode 100644 soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip diff --git a/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 b/soh/assets/custom/objects/object_xmas_tree/LeavesAlpha_64 index 47ca211a96b664bf352a1740c1e797501521ad57..e33491d5af58d9b450ea8450096b392f2cdcba37 100644 GIT binary patch delta 623 zcmah{L2AP=5EM$Rn218aArv;yhUV5DLdY#Sp zmTkS8xAwxci!E&_S-hcSjCY0eEF@ddUbq#WPioEAdi#OI!BHhCe6cY0wE;4^#tp=; zVsNf;5e7ABEr^XU#s!V~hOEHXx5=Dq>3>>Y(uUgl8P ziwv&#ucX|-xD5={o2Po0J!2FFZ-+zgvto^<>#a|77WJNW3AL M(1-u%eVqo`FY+8rF8}}l delta 1065 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 + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 index 889e5aa4f5..ff4e066a5b 100644 --- a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_1 @@ -1,104 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -112,7 +14,7 @@ - + @@ -125,7 +27,93 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 new file mode 100644 index 0000000000..561d3ac5ef --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_tri_2 @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 index bec46bbab6..01ed88a145 100644 --- a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_1 @@ -1,39 +1,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -44,12 +15,12 @@ + + - - @@ -60,12 +31,12 @@ + + - - @@ -79,9 +50,7 @@ - - @@ -94,10 +63,10 @@ - - + + @@ -110,10 +79,10 @@ - - + + diff --git a/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 new file mode 100644 index 0000000000..fd03778f89 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/gXmasTreeDL_vtx_2 @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen index 69c9c11e5f..119341c701 100644 --- a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeGreen @@ -1,20 +1,21 @@ - + - + - + + diff --git a/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip new file mode 100644 index 0000000000..9baaadbf55 --- /dev/null +++ b/soh/assets/custom/objects/object_xmas_tree/mat_gXmasTreeDL_f3dlite_TreeTip @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp index 2762b5a1b0..b357363ac9 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp @@ -517,11 +517,6 @@ void DrawInfoTab() { if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_TRIFORCE_HUNT)) { ImGui::InputScalar("Triforce Pieces", ImGuiDataType_U8, &gSaveContext.triforcePiecesCollected); UIWidgets::InsertHelpHoverText("Currently obtained Triforce Pieces. For Triforce Hunt."); - - bool thFlag = gSaveContext.grantBossKey != 0; - if (ImGui::Checkbox("Finished Triforce Hunt", &thFlag)) { - gSaveContext.grantBossKey = thFlag; - } } ImGui::PushItemWidth(ImGui::GetFontSize() * 10); diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index 42c9c91c0f..01557efefe 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -505,6 +505,7 @@ const std::vector flagTables = { { RAND_INF_CHILD_FISHING, "RAND_INF_CHILD_FISHING" }, { RAND_INF_ADULT_FISHING, "RAND_INF_ADULT_FISHING" }, { RAND_INF_10_BIG_POES, "RAND_INF_10_BIG_POES" }, + { RAND_INF_GRANT_GANONS_BOSSKEY, "RAND_INF_GRANT_GANONS_BOSSKEY" }, } }, }; diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index 9bb8aefb23..f4b62363d4 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -665,13 +665,6 @@ void RegisterTriforceHunt() { triforcePieceScale = 0.0f; GameInteractor::State::TriforceHuntPieceGiven = 0; } - - // Give Boss Key when player loads back into the savefile. - if (gSaveContext.grantBossKey && - (1 << 0 & gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER]) == 0) { - GetItemEntry getItemEntry = ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); - GiveItemEntryWithoutActor(gPlayState, getItemEntry); - } } if (currentPieces >= requiredPieces && eventTimer >= 1 && eventTimer <= 30) { @@ -711,6 +704,18 @@ void RegisterTriforceHunt() { }); } +void RegisterGrantGanonsBossKey() { + GameInteractor::Instance->RegisterGameHook([]() { + // Triforce Hunt needs the check if the player isn't being teleported to the credits scene. + if (!GameInteractor::IsGameplayPaused() && Flags_GetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY) && + gPlayState->sceneLoadFlag != 0x14 && (1 << 0 & gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER]) == 0) { + GetItemEntry getItemEntry = + ItemTableManager::Instance->RetrieveItemEntry(MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY); + GiveItemEntryWithoutActor(gPlayState, getItemEntry); + } + }); +} + //this map is used for enemies that can be uniquely identified by their id //and that are always counted //enemies that can't be uniquely identified by their id @@ -1096,6 +1101,7 @@ void InitMods() { RegisterMenuPathFix(); RegisterMirrorModeHandler(); RegisterTriforceHunt(); + RegisterGrantGanonsBossKey(); RegisterEnemyDefeatCounts(); RegisterAltTrapTypes(); RegisterRandomizerSheikSpawn(); diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index 33c206b470..8d4ec98012 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -159,6 +159,7 @@ typedef enum { RAND_INF_CHILD_FISHING, RAND_INF_ADULT_FISHING, RAND_INF_10_BIG_POES, + RAND_INF_GRANT_GANONS_BOSSKEY, // If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16) diff --git a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c index fdc58fb27d..9d9f65190b 100644 --- a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.c @@ -77,7 +77,7 @@ void EnChristmasTree_Talk(EnChristmasTree* this, PlayState* play) { if (gSaveContext.triforcePiecesCollected >= Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED)) { gSaveContext.sohStats.itemTimestamp[TIMESTAMP_TRIFORCE_COMPLETED] = GAMEPLAYSTAT_TOTAL_TIME; gSaveContext.sohStats.gameComplete = 1; - gSaveContext.grantBossKey = 1; + Flags_SetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY); Play_PerformSave(play); GameInteractor_SetTriforceHuntCreditsWarpActive(true); } From 4c0365fa0ce7230ca5b840dc5553c4f85721594f Mon Sep 17 00:00:00 2001 From: aMannus Date: Sat, 4 Nov 2023 14:57:48 +0100 Subject: [PATCH 7/7] Remove old GBK stuff --- soh/include/z64save.h | 1 - soh/soh/Enhancements/randomizer/savefile.cpp | 1 - soh/soh/SaveManager.cpp | 6 ------ 3 files changed, 8 deletions(-) diff --git a/soh/include/z64save.h b/soh/include/z64save.h index 24ad694487..9458f28c7b 100644 --- a/soh/include/z64save.h +++ b/soh/include/z64save.h @@ -324,7 +324,6 @@ typedef struct { /* */ u16 randomizerInf[10]; /* */ u16 adultTradeItems; /* */ u8 triforcePiecesCollected; - /* */ u8 grantBossKey; // #endregion } SaveContext; // size = 0x1428 diff --git a/soh/soh/Enhancements/randomizer/savefile.cpp b/soh/soh/Enhancements/randomizer/savefile.cpp index fba89082a3..33278d0b75 100644 --- a/soh/soh/Enhancements/randomizer/savefile.cpp +++ b/soh/soh/Enhancements/randomizer/savefile.cpp @@ -444,7 +444,6 @@ extern "C" void Randomizer_InitSaveFile() { // Reset triforce pieces collected gSaveContext.triforcePiecesCollected = 0; - gSaveContext.grantBossKey = 0; SetStartingItems(); } diff --git a/soh/soh/SaveManager.cpp b/soh/soh/SaveManager.cpp index 478ab8d41f..235a7bd5f7 100644 --- a/soh/soh/SaveManager.cpp +++ b/soh/soh/SaveManager.cpp @@ -138,8 +138,6 @@ void SaveManager::LoadRandomizerVersion1() { SaveManager::Instance->LoadData("triforcePiecesCollected", gSaveContext.triforcePiecesCollected); - SaveManager::Instance->LoadData("grantBossKey", gSaveContext.grantBossKey); - SaveManager::Instance->LoadData("pendingIceTrapCount", gSaveContext.pendingIceTrapCount); std::shared_ptr randomizer = OTRGlobals::Instance->gRandomizer; @@ -242,8 +240,6 @@ void SaveManager::LoadRandomizerVersion2() { SaveManager::Instance->LoadData("triforcePiecesCollected", gSaveContext.triforcePiecesCollected); - SaveManager::Instance->LoadData("grantBossKey", gSaveContext.grantBossKey); - SaveManager::Instance->LoadData("pendingIceTrapCount", gSaveContext.pendingIceTrapCount); std::shared_ptr randomizer = OTRGlobals::Instance->gRandomizer; @@ -333,8 +329,6 @@ void SaveManager::SaveRandomizer(SaveContext* saveContext, int sectionID, bool f SaveManager::Instance->SaveData("triforcePiecesCollected", saveContext->triforcePiecesCollected); - SaveManager::Instance->SaveData("grantBossKey", saveContext->grantBossKey); - SaveManager::Instance->SaveData("pendingIceTrapCount", saveContext->pendingIceTrapCount); std::shared_ptr randomizer = OTRGlobals::Instance->gRandomizer;