diff --git a/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 b/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32
new file mode 100644
index 000000000..68187fbf5
Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/CuccoBedding_32 differ
diff --git a/soh/assets/custom/objects/object_kakariko_decor/String_BYBY_32 b/soh/assets/custom/objects/object_kakariko_decor/String_BYBY_32
new file mode 100644
index 000000000..62efcb10a
Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/String_BYBY_32 differ
diff --git a/soh/assets/custom/objects/object_kakariko_decor/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 000000000..454876ed0
Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01AB98 differ
diff --git a/soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01B398 b/soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01B398
new file mode 100644
index 000000000..9170dfd6b
Binary files /dev/null and b/soh/assets/custom/objects/object_kakariko_decor/spot00_sceneTex_01B398 differ
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