diff --git a/Vision fix.esp b/Vision fix.esp new file mode 100644 index 00000000..52d1b741 Binary files /dev/null and b/Vision fix.esp differ diff --git a/scripts/_00E_VisionControl.pex b/scripts/_00E_VisionControl.pex index bc2ab3d6..5c2b7107 100644 Binary files a/scripts/_00E_VisionControl.pex and b/scripts/_00E_VisionControl.pex differ diff --git a/scripts/_00e_mq16_functions.pex b/scripts/_00e_mq16_functions.pex index c766a902..14abfd26 100644 Binary files a/scripts/_00e_mq16_functions.pex and b/scripts/_00e_mq16_functions.pex differ diff --git a/source/scripts/_00E_VisionControl.psc b/source/scripts/_00E_VisionControl.psc index 376fb2d8..668dec87 100644 --- a/source/scripts/_00E_VisionControl.psc +++ b/source/scripts/_00E_VisionControl.psc @@ -98,7 +98,7 @@ Function VisionEffectTimestopStop(bool bMovementHasBeenLocked = False) EndFunction -Function VisionEffectNoTimestop(Formlist RefsInvolved, Formlist ActorsToFreeze, bool bCustomMusic = False) +Function VisionEffectNoTimestop(Formlist RefsInvolved, Formlist ActorsToFreeze = None, bool bCustomMusic = False) Game.ShowFirstPersonGeometry(False) PlayerREF.SetAlpha(0.1) @@ -122,16 +122,16 @@ Function VisionEffectNoTimestop(Formlist RefsInvolved, Formlist ActorsToFreeze, EndIf if RefsInvolved != None - int iIndex = RefsInvolved.GetSize() - - while iIndex > 0 - iIndex -= 1 - Actor VisionREF = RefsInvolved.GetAt(iIndex) as Actor + Int iIndex = 0 + Form[] actors = RefsInvolved.ToArray() + While iIndex < actors.Length + Actor VisionREF = actors[iIndex] as Actor if VisionREF.IsDisabled() VisionREF.EnableNoWait() EndIf VisionRef.SetAlpha(0.5) MS04MemoryFXBody01VFX.Play(VisionREF) + iIndex += 1 EndWhile endif @@ -150,7 +150,7 @@ Function VisionEffectNoTimestop(Formlist RefsInvolved, Formlist ActorsToFreeze, EndFunction -Function VisionEffectNoTimestopStop(Formlist RefsInvolved, Formlist ActorsToFreeze, bool bHasBeenRestrained = False) +Function VisionEffectNoTimestopStop(Formlist RefsInvolved, Formlist ActorsToFreeze = None, bool bHasBeenRestrained = False) PlayerREF.SetAlpha(1.0) Game.ShowFirstPersonGeometry(True) @@ -169,14 +169,14 @@ Function VisionEffectNoTimestopStop(Formlist RefsInvolved, Formlist ActorsToFree EndIf if RefsInvolved != None - int iIndex = RefsInvolved.GetSize() - - while iIndex > 0 - iIndex -= 1 - Actor VisionREF = RefsInvolved.GetAt(iIndex) as Actor + Int iIndex = 0 + Form[] actors = RefsInvolved.ToArray() + While iIndex < actors.Length + Actor VisionREF = actors[iIndex] as Actor MS04MemoryFXBody01VFX.Stop(VisionREF) - VisionRef.SetAlpha(1) - EndWhile + VisionRef.SetAlpha(1) + iIndex += 1 + EndWhile endif if ActorsToFreeze != None diff --git a/source/scripts/_00e_mq16_functions.psc b/source/scripts/_00e_mq16_functions.psc index ccb27835..e67d8829 100644 --- a/source/scripts/_00e_mq16_functions.psc +++ b/source/scripts/_00e_mq16_functions.psc @@ -494,31 +494,23 @@ EndFunction Function StartVision_SC09() - int iSize = MQ16_SC09_VisionNPCs.GetSize() - _00E_MQ16_VisionIMOD.Apply() - - while iSize > 0 - iSize -= 1 - _00E_VisionFX_NPC_SC visionNPC = MQ16_SC09_VisionNPCs.GetAt(iSize) as _00E_VisionFX_NPC_SC - visionNPC.SetAlphaAndFX() - endwhile - + iVisionIntenseSound = _00E_MQ16_BattlefieldVisionM.Play(PlayerREF) MQ16_SC09_VisionLinkREF.Enable() - _00E_PlayerFunctions.GetVisionControl().VisionEffectTimestop(True, True) - Wait(3) + _00E_PlayerFunctions.GetVisionControl().VisionEffectNoTimestop(MQ16_SC09_VisionNPCs) + MQ16_SC09_Vision_EnemyREF.PlayIdleWithTarget(pa_2HMKillMoveDecapSlash, MQ16_SC09_Vision_SoldierREF) - Wait(5) + + Wait(5.5) StopVision_SC09() EndFunction Function StopVision_SC09() - _00E_PlayerFunctions.GetVisionControl().VisionEffectTimestopStop(False) + _00E_PlayerFunctions.GetVisionControl().VisionEffectNoTimestopStop(MQ16_SC09_VisionNPCs) MQ16_SC09_VisionLinkREF.Disable() - MQ16_SC09_VisionNPCLinkREF.Disable() Sound.StopInstance(iVisionIntenseSound) ImageSpaceModifier.RemoveCrossFade() SetCurrentStageID(100)