From f6a7f3d13cf666318f471a6c1aa29126e384593e Mon Sep 17 00:00:00 2001 From: aMannus Date: Sat, 24 Dec 2022 04:27:01 +0100 Subject: [PATCH] Fix enemy rando flags (#2253) --- soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c | 4 +++- soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c index 80259df9a..4f9a898f5 100644 --- a/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/soh/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -656,7 +656,9 @@ void func_80A75A38(EnIk* this, PlayState* play) { } if (this->unk_2F9 == 0) { Item_DropCollectibleRandom(play, &this->actor, &this->actor.world.pos, 0xB0); - if (this->switchFlags != 0xFF) { + // Don't set flag when Iron Knuckle is spawned by Enemy Rando. + // Instead Iron Knuckles rely on the "clear room" flag when Enemy Rando is on. + if (this->switchFlags != 0xFF && !CVar_GetS32("gRandomizedEnemies",0)) { Flags_SetSwitch(play, this->switchFlags); } Actor_Kill(&this->actor); diff --git a/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c b/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c index d01d3c4e7..7aa37cedb 100644 --- a/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c +++ b/soh/src/overlays/actors/ovl_En_Rd/z_en_rd.c @@ -663,7 +663,8 @@ void func_80AE3C98(EnRd* this, PlayState* play) { if (SkelAnime_Update(&this->skelAnime)) { if (this->unk_30C == 0) { - if (!Flags_GetSwitch(play, this->unk_312 & 0x7F)) { + // Don't set this flag in Enemy Rando as it can overlap with other objects using the same flag. + if (!Flags_GetSwitch(play, this->unk_312 & 0x7F) && !CVar_GetS32("gRandomizedEnemies", 0)) { Flags_SetSwitch(play, this->unk_312 & 0x7F); } if (this->unk_314 != 0) {