diff --git a/Skyrim.esm b/Skyrim.esm index 3ecb799d..f2e946dc 100644 Binary files a/Skyrim.esm and b/Skyrim.esm differ diff --git a/scripts/_00E_MQ12b_NPCControl.pex b/scripts/_00E_MQ12b_NPCControl.pex index 3e890cf0..d5cec804 100644 Binary files a/scripts/_00E_MQ12b_NPCControl.pex and b/scripts/_00E_MQ12b_NPCControl.pex differ diff --git a/scripts/_00e_mq12b_functions.pex b/scripts/_00e_mq12b_functions.pex index c4516e95..84d5bf6b 100644 Binary files a/scripts/_00e_mq12b_functions.pex and b/scripts/_00e_mq12b_functions.pex differ diff --git a/source/scripts/_00E_MQ12b_NPCControl.psc b/source/scripts/_00E_MQ12b_NPCControl.psc index 326c8cd3..a5edd814 100644 --- a/source/scripts/_00E_MQ12b_NPCControl.psc +++ b/source/scripts/_00E_MQ12b_NPCControl.psc @@ -54,11 +54,12 @@ Function PrepareNPC(Actor akMoveActor, Bool bOnlyGhost = False) EndFunction Function _RegisterDisabledNPC(Actor akMoveActor) - int iSlot = nRegisteredDisabledNPCs - if iSlot + 1 <= 128 - nRegisteredDisabledNPCs += 1 + nRegisteredDisabledNPCs += 1 + ; In case an actor slips in here, RegisteredDisabledNPCs may have an empty slot in the middle, and it's fine + int iSlot = nRegisteredDisabledNPCs - 1 + if iSlot <= 127 RegisteredDisabledNPCs[iSlot] = akMoveActor - Debug.Trace("Registered disabled " + akMoveActor.GetBaseObject().GetName() + " " + (akMoveActor as String)) + ;Debug.Trace("Registered disabled " + akMoveActor.GetBaseObject().GetName() + " " + (akMoveActor as String)) else ; Added overflow to the ghosted _RegisterGhostedNPC(akMoveActor) @@ -66,11 +67,11 @@ Function _RegisterDisabledNPC(Actor akMoveActor) EndFunction Function _RegisterGhostedNPC(Actor akMoveActor) - int iSlot = nRegisteredGhostedNPCs - if iSlot + 1 <= 128 - nRegisteredGhostedNPCs += 1 + nRegisteredGhostedNPCs += 1 + int iSlot = nRegisteredGhostedNPCs - 1 + if iSlot <= 127 RegisteredGhostedNPCs[iSlot] = akMoveActor - Debug.Trace("Registered ghosted " + akMoveActor.GetBaseObject().GetName() + " " + (akMoveActor as String)) + ;Debug.Trace("Registered ghosted " + akMoveActor.GetBaseObject().GetName() + " " + (akMoveActor as String)) else ; oh well endif @@ -86,7 +87,7 @@ Function ReEnableNPCs() Actor akActor = RegisteredDisabledNPCs[Index] if akActor != None && ( ! bSKSE || akActor.GetEnableParent() == None ) akActor.EnableNoWait() - Debug.Trace("Re-enabled: " + akActor.GetActorBase().GetName()) + ;Debug.Trace("Re-enabled: " + akActor.GetActorBase().GetName()) RegisteredDisabledNPCs[Index] = None endif EndWhile @@ -102,7 +103,7 @@ Function ReEnableNPCs() akActor.EnableNoWait() endif akActor.SetGhost(False) - Debug.Trace("Unghosted: " + akActor.GetActorBase().GetName()) + ;Debug.Trace("Unghosted: " + akActor.GetActorBase().GetName()) RegisteredGhostedNPCs[Index] = None endif EndWhile diff --git a/source/scripts/_00e_mq12b_functions.psc b/source/scripts/_00e_mq12b_functions.psc index 6ae7a374..03ac0980 100644 --- a/source/scripts/_00e_mq12b_functions.psc +++ b/source/scripts/_00e_mq12b_functions.psc @@ -325,8 +325,6 @@ EndFunction Function StartSC07() - bArkUnderAttackPrelude = False ; stop disabling NPCs - _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, False) SetObjectiveCompleted(10) @@ -369,6 +367,8 @@ EndFunction Function StartSC09() + bArkUnderAttackPrelude = False ; stop disabling NPCs + _00E_Func_SetNPCAsCompanion.SetNPCAsCompanion(_00E_MC_TealorREF, False) MQ12b_SC9_PlayerRepairsMechanism.ForceStart()