summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaladius <Caladius@users.noreply.github.com>2023-10-30 12:00:24 -0400
committerGitHub <noreply@github.com>2023-10-30 11:00:24 -0500
commitff7fa7742707574fc19dd8d930367d09f2c61424 (patch)
treef722b68dcb057cb4be4c6974707f8fd5899f17c8
parent2810996475fc304edda86b3fb411b6e7f6e59f13 (diff)
Addresses Forest Temple Poes and NPC Dialogue issues. (#3334)
-rw-r--r--soh/soh/Enhancements/mods.cpp15
-rw-r--r--soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c6
2 files changed, 16 insertions, 5 deletions
diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp
index fa4b65470..c0bbb3806 100644
--- a/soh/soh/Enhancements/mods.cpp
+++ b/soh/soh/Enhancements/mods.cpp
@@ -387,11 +387,18 @@ void RegisterShadowTag() {
if (!CVarGetInteger("gShadowTag", 0)) {
return;
}
- if (shouldSpawn && (delayTimer <= 0)) {
- Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_EN_WALLMAS, 0, 0, 0, 0, 0, 0, 3, false);
- shouldSpawn = false;
+ if (gPlayState->sceneNum == SCENE_FOREST_TEMPLE && // Forest Temple Scene
+ gPlayState->roomCtx.curRoom.num == 16 || // Green Poe Room
+ gPlayState->roomCtx.curRoom.num == 13 || // Blue Poe Room
+ gPlayState->roomCtx.curRoom.num == 12) { // Red Poe Room
+ return;
} else {
- delayTimer--;
+ if (shouldSpawn && (delayTimer <= 0)) {
+ Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_EN_WALLMAS, 0, 0, 0, 0, 0, 0, 3, false);
+ shouldSpawn = false;
+ } else {
+ delayTimer--;
+ }
}
});
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSceneSpawnActors>([]() {
diff --git a/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c b/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c
index 9991f20eb..69c33f5f5 100644
--- a/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c
+++ b/soh/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c
@@ -328,7 +328,11 @@ void EnWallmas_WaitToDrop(EnWallmas* this, PlayState* play) {
}
if (this->timer == 0) {
- EnWallmas_SetupDrop(this, play);
+ if (this->actor.params == WMT_SHADOWTAG && (player->stateFlags1 & PLAYER_STATE1_IN_CUTSCENE)) {
+ this->timer = 0x82; // Prevents Shadow Tag Hand from dropping when talking to an NPC or Signpost.
+ } else {
+ EnWallmas_SetupDrop(this, play);
+ }
}
}