mirror of
https://github.com/HackerN64/HackerOoT.git
synced 2026-01-21 10:37:37 -08:00
Add ACTOR_FLAG_FREEZE_EXCEPTION support (#170)
* Add ACTOR_FLAG_FREEZE_EXCEPTION support * format * fixed * fix cutscene manager issue --------- Co-authored-by: Yanis002 <35189056+Yanis002@users.noreply.github.com>
This commit is contained in:
@@ -186,7 +186,7 @@ s16 CutsceneManager_MarkNextCutscenes(void) {
|
||||
s32 j;
|
||||
s32 count = 0;
|
||||
s16 csIdMax = CS_ID_NONE;
|
||||
s16 priorityMax = SDC_MAX; // lower number means higher priority
|
||||
s16 priorityMax = SHT_MAX; // lower number means higher priority
|
||||
s16 csId;
|
||||
s16 priority;
|
||||
|
||||
@@ -540,12 +540,14 @@ s16 CutsceneManager_FindEntranceCsId(void) {
|
||||
s32 csId;
|
||||
|
||||
for (csId = 0; csId < sSceneCutsceneCount; csId++) {
|
||||
//! FAKE:
|
||||
if ((sSceneCutsceneList[csId].scriptIndex != CS_SCRIPT_ID_NONE) &&
|
||||
(sSceneCutsceneList[csId].scriptIndex < (play = sCutsceneMgr.play)->csCtx.scriptListCount) &&
|
||||
(sCutsceneMgr.play->spawn ==
|
||||
sCutsceneMgr.play->csCtx.scriptList[sSceneCutsceneList[csId].scriptIndex].spawn)) {
|
||||
return csId;
|
||||
if (sSceneCutsceneList[csId].scriptIndex != CS_SCRIPT_ID_NONE) {
|
||||
PlayState* play = sCutsceneMgr.play;
|
||||
|
||||
if ((sSceneCutsceneList[csId].scriptIndex < play->csCtx.scriptListCount) &&
|
||||
(sCutsceneMgr.play->spawn ==
|
||||
sCutsceneMgr.play->csCtx.scriptList[sSceneCutsceneList[csId].scriptIndex].spawn)) {
|
||||
return csId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2479,10 +2479,20 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) {
|
||||
} else if (!Object_IsLoaded(&play->objectCtx, actor->objectSlot)) {
|
||||
Actor_Kill(actor);
|
||||
actor = actor->next;
|
||||
} else if ((freezeExceptionFlag != 0 && !(actor->flags & freezeExceptionFlag)) ||
|
||||
(freezeExceptionFlag == 0 && canFreezeCategory &&
|
||||
!((sp74 == actor) || (player->naviActor == actor) || (player->heldActor == actor) ||
|
||||
(actor->parent == &player->actor)))) {
|
||||
} else if
|
||||
#if ENABLE_CUTSCENE_IMPROVEMENTS
|
||||
((freezeExceptionFlag && !(actor->flags & freezeExceptionFlag)) ||
|
||||
((!freezeExceptionFlag) && (!(actor->flags & ACTOR_FLAG_FREEZE_EXCEPTION)) && canFreezeCategory &&
|
||||
(actor != sp74) && (actor != player->heldActor) && (actor != player->naviActor) &&
|
||||
(actor->parent != &player->actor)))
|
||||
|
||||
#else
|
||||
((freezeExceptionFlag != 0 && !(actor->flags & freezeExceptionFlag)) ||
|
||||
(freezeExceptionFlag == 0 && canFreezeCategory &&
|
||||
!((sp74 == actor) || (player->naviActor == actor) || (player->heldActor == actor) ||
|
||||
(actor->parent == &player->actor))))
|
||||
#endif
|
||||
{
|
||||
CollisionCheck_ResetDamage(&actor->colChkInfo);
|
||||
actor = actor->next;
|
||||
} else if (actor->update == NULL) {
|
||||
|
||||
Reference in New Issue
Block a user