From 6ba73171dace0d2daf80ccec82a4836fe909606f Mon Sep 17 00:00:00 2001 From: Caladius Date: Thu, 16 Nov 2023 13:55:37 -0500 Subject: [PATCH] Big boi commit, v2 Dana overlay DLs, un-unaliving Kak NPCs and moving them to better locations. Added Melons Wonder Item for the star and cleaned up their code for it. among other changes... --- .../object_kakariko_decor/CuccoBedding_32 | Bin 0 -> 2140 bytes .../object_kakariko_decor/String_BYBY_32 | Bin 0 -> 2140 bytes .../object_kakariko_decor/gKakarikoDecorDL | 22 + .../gKakarikoDecorDL_tri_0 | 27 + .../gKakarikoDecorDL_tri_1 | 186 +++++ .../gKakarikoDecorDL_tri_2 | 19 + .../gKakarikoDecorDL_tri_3 | 8 + .../gKakarikoDecorDL_tri_4 | 6 + .../gKakarikoDecorDL_vtx_0 | 82 +++ .../gKakarikoDecorDL_vtx_1 | 646 ++++++++++++++++++ .../gKakarikoDecorDL_vtx_2 | 54 ++ .../gKakarikoDecorDL_vtx_3 | 14 + .../gKakarikoDecorDL_vtx_4 | 6 + .../gKakarikoDecorDL_vtx_cull | 10 + .../mat_gKakarikoDecorDL_f3dlite_CuccoBedding | 21 + .../mat_gKakarikoDecorDL_f3dlite_SnowBuildup | 21 + .../mat_gKakarikoDecorDL_f3dlite_StringBYBY | 21 + .../mat_gKakarikoDecorDL_f3dlite_StringGRGR | 21 + .../mat_gKakarikoDecorDL_f3dlite_material_004 | 29 + .../spot00_sceneTex_01AB98 | Bin 0 -> 2140 bytes .../spot00_sceneTex_01B398 | Bin 0 -> 604 bytes soh/assets/soh_assets.h | 3 + soh/soh/ActorDB.cpp | 2 +- soh/soh/Enhancements/mods.cpp | 12 + .../ovl_En_ChristmasDeco/z_en_christmasdeco.c | 13 +- .../ovl_En_ChristmasTree/z_en_christmastree.c | 20 +- .../ovl_En_ChristmasTree/z_en_christmastree.h | 1 + soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c | 5 +- soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c | 15 +- .../overlays/actors/ovl_En_Kusa/z_en_kusa.c | 9 +- .../overlays/actors/ovl_En_Toryo/z_en_toryo.c | 7 +- .../actors/ovl_En_Wood02/z_en_wood02.c | 16 +- 32 files changed, 1263 insertions(+), 33 deletions(-) create mode 100644 soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/String_BYBY_32 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_0 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_1 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_2 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_3 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_4 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_0 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_1 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_2 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_3 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_4 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_cull create mode 100644 soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_CuccoBedding create mode 100644 soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_SnowBuildup create mode 100644 soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringBYBY create mode 100644 soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringGRGR create mode 100644 soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_material_004 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01AB98 create mode 100644 soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01B398 diff --git a/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 b/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 new file mode 100644 index 0000000000000000000000000000000000000000..68187fbf5f4ebad4d955b9855ee047253e07957e GIT binary patch literal 2140 zcma)7QD`Dd7R~P04nr7%NLECgAQHk5!h9?tUrQb=kLe*u+7;Ipk#quZ72u9)j3GBprez5{4j;5afM4dav`|{%=clOIOvs zx6e8E)XdDx%-{a<*VymiIsOlGrvv`}-`DS9<;&m3ubY1O^UMs4Kg`Tb1g-LIy>xa{ zDAJHwGpi(H1W-cnv#_XJwZbJ%poAO~*+N(E)2h9%_t6}g7pLye4tMrPtLGzYsQ2|U z37A(_!+wQJMo^k1TeMc_i2x6pCH)x3&C+=v`FO-$K}nKP4@kgXp>^>v5sr3#&v*5K zvu8DVPPA}p?Zf(k+QVgfV~s?Xrq1t;K>o{l1s{=2XW0n7{;>WTC7nGIBxz6F{bW|1 z6>$oCbF_w2`oIXz6d+?D8=3MU3%DD~!?WFbq5E$~z8-hMUtgv&U= zqBINDgm{>y**)@^o)5FhYUATOnUBlqRv1UnvaA4 z(XgsWCEI3E(F6=@o@Wllsd6~guQZDi zM!?xa2~h4=Bj{-QWub31<(SiU+PJKC)eBnV+mHj40c%6_#PeWoPw$I+7C{M=q{F*M zsC$UZ)<``tPe@uH=vPLTMN!fm8iDU-kzX&-Ym!xurd)WQy~iTr)Py%|hh*Khy(}Nn zTi#${*ncBER}PJ^c}oE+9M}7WfqH=w&PVZ}9H~9cKYk}#dMSU7i}Z@5`EDbs7S-Np zRWzWQ1S;WUQX|{?mGYJZCiWXn6qi5IBtlo3~r4L4{M!2!44*&tsAL!>=IRp+ijS$Jun%cd40!1fS zEqm_U!Z?auQ1Fk56% zec(R1PvWZ-6JMP@dR^#4zEgR_NPC|9#G;LexaUo05626A&A0x~_0Q1d^|c?hr29B! zRP#GOStDFVzHjlJ$aVa&UabZCP=k5=s! zTrqEG1s@whnzkCWqL(@=EC&b-J+BdEQCxZ-G_nx8Tjoc;vB|QUAd!b&)ZxK{6RkIOPinMM{e?ub+ z3Te?gNkN1geIS8)jezIzZ8A^NXG4-jo491JnAdN9T>GFFSyc0@#XP8$Y@yU0pvS^| z8@zDKj@Xg&A*}s)HUR!I`la5J-$F;8Y6(1`NzE@8l_PU#JwWdqBR_977I{vN8S^A* zgaCsw&#-S=Qx2!~qfL6!2!ms1rkduvJV&c)7nchIvL%DA%xe_4UkShs#nm1-=(XN0 z^vp6%;v>(ab+zbzv==oW^w9-Mf!p5W5_of;E#fkCWd!>3+Z+4u)=1uf2noHn?FYpi zYIB}&@wc()R#x3IKJh(Xh7~$BkoG)9cf+^Wg?c-Rc$T+FSNY za(*NK9(nY|z^YkxbeF{5i1punGN_q`5DPxEm-}a+R|)^%$^YCz-Q=b=zq3sC#X^ey z@Qn-)=5JM_j75(=q`;(_i+><{0F~!g; z&mh8;xEDYIK9@sR_qYk-=ua)D<-`<3_yK;9n*tJFFSA=P`ByGNFb)wx6;z0T1km&l z)2om7=Qgl293LGjD+JddjAI-oT2}l3Ky=qw6u%C=Oa%_^FcvM{xpe}r;JAu-jNTF| zQ#tF;ilZgi8TQd%9Xv=FHv~7@Xv8YzwQ8`kXB`-e=s_9rxg1z7+|i12(MlCMZ7+?|Ir60{KwZ9X)SuyCbakf-86fI+>PoV)KGfS*T5_K=0#wzFdpY`XQ zvBz9|*u*Mt3YFP+YMnZ+w_#jR6ZQL(ZjZRORH^KBjUPiK8=fl1Dt*-@Ucw#=Vx5m6 z{zR}&l=AAyvC~FE9P6@>H+y;^OQ_Nb=Fzb(^Yj?gSldag5|2%fTPo{?M4?B}DRU}Y K+oxXiargsgG<&B2 literal 0 HcmV?d00001 diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL new file mode 100644 index 000000000..3451b3004 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_0 new file mode 100644 index 000000000..450d4ad7b --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_0 @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_1 new file mode 100644 index 000000000..701018d7e --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_1 @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_2 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_2 new file mode 100644 index 000000000..a8f0d1205 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_2 @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_3 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_3 new file mode 100644 index 000000000..5e89bfd9c --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_3 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_4 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_4 new file mode 100644 index 000000000..e0d376897 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_tri_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_0 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_0 new file mode 100644 index 000000000..844aa0f3c --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_0 @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_1 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_1 new file mode 100644 index 000000000..3c1ca09b4 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_1 @@ -0,0 +1,646 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_2 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_2 new file mode 100644 index 000000000..cd5e7a3d0 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_2 @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_3 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_3 new file mode 100644 index 000000000..fb8c029cd --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_3 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_4 b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_4 new file mode 100644 index 000000000..043452939 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_4 @@ -0,0 +1,6 @@ + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_cull b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_cull new file mode 100644 index 000000000..c096976aa --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/gKakarikoDecorDL_vtx_cull @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_CuccoBedding b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_CuccoBedding new file mode 100644 index 000000000..520258210 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_CuccoBedding @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_SnowBuildup b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_SnowBuildup new file mode 100644 index 000000000..a79cca54f --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_SnowBuildup @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringBYBY b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringBYBY new file mode 100644 index 000000000..5c85eb88f --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringBYBY @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringGRGR b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringGRGR new file mode 100644 index 000000000..b8478fa90 --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_StringGRGR @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_material_004 b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_material_004 new file mode 100644 index 000000000..0a479d70a --- /dev/null +++ b/soh/assets/custom/objects/object_kakariko_decor/mat_gKakarikoDecorDL_f3dlite_material_004 @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01AB98 b/soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01AB98 new file mode 100644 index 0000000000000000000000000000000000000000..454876ed0463d2061a6e06b14cc82324f9ceac02 GIT binary patch literal 2140 zcma)-y>8n;5QLdjd5pY=a7dLpO^UqC0ePXgWFs6)s-rrxBTJSlT@VL&z8#+I04d@H zC5qhHpV`@S*LB^m?>~Qh()VNdvvTS7zyChV^XqvT^!r=a>H5-jTi)}Qx3t#vm@B5c zIv@LGJ@zEaOS-4A-t@U7yydT_VP(_Xsq$Oi+5Yh+&BuB?@@sj7&pid6OjwfTUGMh7 z{hl5X?~xyR7EcwIsJhRK?5^z2f1({hDA3@Ie8)F`s&B?U_~o>y1H9spt69`YUipvJ zHdT69!j}kCV{<%L>)MSMH~E(OI)shFpEaE|I6E<5-Tg9)Giu(-lE>PY7g=9E;N|0r z>3$P>k~so(!L%$`3w(ab;K@K`A3G%iXyaSIL%k`=Esd(&`3HH>dt=Donr>G1VmuWz zw#*xy_lnRL@K1)GQC`a~{E&w{7R9*|p~bo<^VZm#>z<^si!$f;Y43R|;HR?cz4=%V zGdL-`jO=AP)S(o4PMQcZv_QTQ59%XBT%IZYgO3Q;`IuFqIH3N_q&D&F90L)Gl_)h9 zD?2LCn=tXz@N5P6o6yQp`saj*5JvRu%1(S_pi6I+s#o@ge#zFzrnh@S6LbKc-oj3n z*ZLY;86C)D$h|ByrfwIV19KTq-#M6pUz?_Mg+p&E+7o+4@00oYP2dJOONn693%HL@N|$(y4HngTpn^=MBWD^FxnET3k4 zN~6I(6+Q97f)-b~DTaQ~;<;C4Qok5|b3XosSAH~bYO0{+kv!y(Mqo#|1G!xyj_^#- z^~XNy9^XefcR|@FAssW&738T*@GzL2nK+7~Uw#r>Cp=olG)u9k>q-?;pCSo=u{Ya> zM%qc{(<#^zk9>QUOadH}Akuy@XMBq9V4ci99nprTIA+gYlgl$zXf8Zkg`z_%l>Ni} z|7Ay;;A4vK+EEu}v@Qx+IgLJ=ySOVV`VYmV$d-rD9+hjd>O}nh0}ltBu+e?7+NGjv z(=sTgZ&um_*-@%sQ(++XEh-+yZRow)Po zb!g*$Y-chrdr#5xx)%Ejyza<|?C8X=9^*AGXDG}fiG$TaL6o1_*#&@%cOvJ=dXTUx5uual#@*7!^^^qqr;8RmCJO)g nnB11>acX=}Xw0~3kW2_nr4h)PIg1=4;BLm1_@o6c<7K=7R+;+P literal 0 HcmV?d00001 diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h index b31e3f388..62ac078b4 100644 --- a/soh/assets/soh_assets.h +++ b/soh/assets/soh_assets.h @@ -95,6 +95,9 @@ static const ALIGN_ASSET(2) char gXmasStarDL[] = dgXmasStarDL; #define dgFrontGateDecorDL "__OTR__objects/object_kakariko_decor/gFrontGateDecorDL" static const ALIGN_ASSET(2) char gFrontGateDecorDL[] = dgFrontGateDecorDL; +#define dgKakarikoDecorDL "__OTR__objects/object_kakariko_decor/gKakarikoDecorDL" +static const ALIGN_ASSET(2) char gKakarikoDecorDL[] = dgKakarikoDecorDL; + // overlays #define dgOptionsDividerChangeLangVtx "__OTR__overlays/ovl_file_choose/gOptionsDividerChangeLangVtx" static const ALIGN_ASSET(2) char gOptionsDividerChangeLangVtx[] = dgOptionsDividerChangeLangVtx; diff --git a/soh/soh/ActorDB.cpp b/soh/soh/ActorDB.cpp index fe7d87a25..f143e1723 100644 --- a/soh/soh/ActorDB.cpp +++ b/soh/soh/ActorDB.cpp @@ -609,7 +609,7 @@ static ActorDBInit EnChristmasTreeInit = { "En_ChristmasTree", "Christmas Tree", ACTORCAT_PROP, - (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY), + (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED), OBJECT_GAMEPLAY_KEEP, sizeof(EnChristmasTree), (ActorFunc)EnChristmasTree_Init, diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index 6234fbab6..237378f0d 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -1077,6 +1077,17 @@ void RegisterRandomizedEnemySizes() { }); } +void RegisterChristmas() { + GameInteractor::Instance->RegisterGameHook([]() { + Actor* player = &GET_PLAYER(gPlayState)->actor; + Actor* nearbyEndTitle = Actor_FindNearby(gPlayState, player, ACTOR_END_TITLE, ACTORCAT_ITEMACTION, 3000.0f); + + if (gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER] > 0 && nearbyEndTitle) { + Camera_ChangeMode(Play_GetCamera(gPlayState, gPlayState->mainCamera.thisIdx), CAM_MODE_STILL); + } + }); +} + void InitMods() { RegisterTTS(); RegisterInfiniteMoney(); @@ -1107,4 +1118,5 @@ void InitMods() { RegisterRandomizerSheikSpawn(); RegisterRandomizedEnemySizes(); NameTag_RegisterHooks(); + RegisterChristmas(); } diff --git a/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.c b/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.c index 49059b6bc..976aa4a4b 100644 --- a/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.c +++ b/soh/src/overlays/actors/ovl_En_ChristmasDeco/z_en_christmasdeco.c @@ -13,7 +13,6 @@ void EnChristmasDeco_Update(Actor* thisx, PlayState* play); void EnChristmasDeco_Draw(Actor* thisx, PlayState* play); void EnChristmasDeco_Init(Actor* thisx, PlayState* play) { - } void EnChristmasDeco_Destroy(Actor* thisx, PlayState* play) { @@ -25,17 +24,19 @@ void EnChristmasDeco_Update(Actor* thisx, PlayState* play) { } void EnChristmasDeco_Draw(Actor* thisx, PlayState* play) { - float decoSize = 1000.0f; + float decoSize = 10.0f; OPEN_DISPS(play->state.gfxCtx); - Gfx_SetupDL_25Opa(play->state.gfxCtx); - + Matrix_Translate(0, 0, 0, MTXMODE_APPLY); + Matrix_RotateZYX(0, 0, 0, MTXMODE_APPLY); Matrix_Scale(decoSize, decoSize, decoSize, MTXMODE_APPLY); - gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD); + + gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) { - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gFrontGateDecorDL); + gSPDisplayList(POLY_OPA_DISP++, gFrontGateDecorDL); + gSPDisplayList(POLY_OPA_DISP++, gKakarikoDecorDL); //Assertion Halt in Debug mode, switch to Release when testing. } CLOSE_DISPS(play->state.gfxCtx); 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 3ce1e1125..2687704e2 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 @@ -34,7 +34,7 @@ static ColliderCylinderInit sCylinderInit = { BUMP_NONE, OCELEM_ON, }, - { 50, 150, 0, { 0, 0, 0 } }, + { 100, 330, 0, { 0, 0, 0 } }, }; static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; @@ -42,7 +42,7 @@ 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); + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 160.0f); Collider_InitCylinder(play, &this->collider); Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit); @@ -91,13 +91,6 @@ void EnChristmasTree_Talk(EnChristmasTree* this, PlayState* play) { void EnChristmasTree_SetupEndTitle(EnChristmasTree* this, PlayState* play) { Player* player = GET_PLAYER(play); - player->actor.world.pos.x = -929.336; - player->actor.world.pos.y = 0; - player->actor.world.pos.z = 446.178; - player->actor.shape.rot.x = 0; - player->actor.shape.rot.y = 17537; - player->actor.shape.rot.z = 0; - GameInteractor_SetNoUIActive(1); Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_END_TITLE, 0, 0, 0, 0, 0, 0, 2, false); @@ -122,9 +115,11 @@ void EnChristmasTree_Update(Actor* thisx, PlayState* play) { } void EnChristmasTree_Draw(Actor* thisx, PlayState* play) { + EnChristmasTree* this = (EnChristmasTree*)thisx; + float percentageCompleted = (float)gSaveContext.triforcePiecesCollected / (float)Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED); - float treeSize = 30.0f; + float treeSize = 55.0f; OPEN_DISPS(play->state.gfxCtx); @@ -166,6 +161,11 @@ void EnChristmasTree_Draw(Actor* thisx, PlayState* play) { gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasDecor100DL); gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gXmasStarDL); } + if (percentageCompleted >= 1.0f && this->spawnedRupee == 0) { + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_WONDER_ITEM, this->actor.world.pos.x, this->actor.world.pos.y + 280, + this->actor.world.pos.z, 0, 0, LINK_IS_ADULT ? 1 : 4, 0x1ABF, false); + this->spawnedRupee = 1; + } 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 index 1dbed3396..fd580ac71 100644 --- a/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h +++ b/soh/src/overlays/actors/ovl_En_ChristmasTree/z_en_christmastree.h @@ -12,6 +12,7 @@ typedef struct EnChristmasTree { Actor actor; ColliderCylinder collider; EnChristmasTreeActionFunc actionFunc; + u8 spawnedRupee; } EnChristmasTree; #ifdef __cplusplus diff --git a/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c b/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c index e2f16a611..a8536e62f 100644 --- a/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c +++ b/soh/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c @@ -66,7 +66,10 @@ void EnHs2_Init(Actor* thisx, PlayState* play) { this->unk_2A8 = 0; this->actor.targetMode = 6; - Actor_Kill(this); + this->actor.world.pos.x = 756.0; + this->actor.world.pos.y = 80.0; + this->actor.world.pos.z = 1378.0; + this->actor.shape.rot.y = 32534; } void EnHs2_Destroy(Actor* thisx, PlayState* play) { diff --git a/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c index b790351e4..ef2438acd 100644 --- a/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c +++ b/soh/src/overlays/actors/ovl_En_Hy/z_en_hy.c @@ -829,7 +829,7 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) { } else if ((this->actor.params & 0x7F) != ENHY_TYPE_BOJ_12 && IS_NIGHT) { return false; } else { - return false; + return true; } case SCENE_IMPAS_HOUSE: if ((this->actor.params & 0x7F) != ENHY_TYPE_BOJ_10) { @@ -898,6 +898,19 @@ void EnHy_Init(Actor* thisx, PlayState* play) { Actor_Kill(&this->actor); } + if (this->actor.params == 1929) { + this->actor.world.pos.x = 261.826; + this->actor.world.pos.y = 240.0; + this->actor.world.pos.z = 1669.660; + this->actor.shape.rot.y = 23784; + } + if (this->actor.params == 1930) { + this->actor.world.pos.x = 262.224; + this->actor.world.pos.y = 240.0; + this->actor.world.pos.z = 1594.390; + this->actor.shape.rot.y = 7728; + } + this->getItemEntry = (GetItemEntry)GET_ITEM_NONE; this->actionFunc = EnHy_InitImpl; } diff --git a/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index 9f8af9c7b..5b743c7e1 100644 --- a/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/soh/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -267,11 +267,12 @@ void EnKusa_Init(Actor* thisx, PlayState* play) { } if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.world.pos.z < 600.0) { - Actor_Kill(this); - } else { - EnKusa_SetupWaitObject(this); + this->actor.world.pos.x += 1620.672; + this->actor.world.pos.y += 80; + this->actor.world.pos.z += 900.884; } - + + EnKusa_SetupWaitObject(this); } void EnKusa_Destroy(Actor* thisx, PlayState* play2) { diff --git a/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c b/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c index 929028fdd..9979c161a 100644 --- a/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c +++ b/soh/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c @@ -105,7 +105,12 @@ void EnToryo_Init(Actor* thisx, PlayState* play) { break; case SCENE_KAKARIKO_VILLAGE: if ((LINK_AGE_IN_YEARS == YEARS_CHILD) && IS_DAY) { - Actor_Kill(this); + this->actor.world.pos.x = 756.0; + this->actor.world.pos.y = 80.0; + this->actor.world.pos.z = 1378.0; + this->actor.shape.rot.y = 32534; + + this->stateFlags |= 2; } break; case SCENE_KAKARIKO_CENTER_GUEST_HOUSE: diff --git a/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c b/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c index 13c1b3edf..e257a184d 100644 --- a/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c +++ b/soh/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c @@ -173,16 +173,14 @@ void EnWood02_Init(Actor* thisx, PlayState* play2) { f32 floorY; s16 extraRot; - if (Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT) == 1) { - if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.params <= WOOD_TREE_KAKARIKO_ADULT) { - Actor_Kill(this); - } + if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.params <= WOOD_TREE_KAKARIKO_ADULT) { + Actor_Kill(this); + } - if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.params >= 0) { - this->actor.world.pos.x = 754.051; - this->actor.world.pos.y = 80.0; - this->actor.world.pos.z = 1429.908; - } + if (gPlayState->sceneNum == SCENE_KAKARIKO_VILLAGE && this->actor.params >= 0) { + this->actor.world.pos.x = 754.051; + this->actor.world.pos.y = 80.0; + this->actor.world.pos.z = 1429.908; } // The tree in Kakariko's day scene does not have the same params to spawn the GS