Unregister events on smokers
This commit is contained in:
parent
eb34dda08b
commit
fb97078ce5
Binary file not shown.
Binary file not shown.
@ -25,6 +25,13 @@ state Smoking
|
||||
endevent
|
||||
|
||||
Event OnUpdate()
|
||||
if bIsFinished
|
||||
UnregisterForUpdate()
|
||||
UnregisterForSleep()
|
||||
GotoState("")
|
||||
return
|
||||
endif
|
||||
|
||||
_LockAnimationUpdates()
|
||||
|
||||
If AnimationStage == 0 && Target.GetSitState() != 3
|
||||
@ -52,6 +59,13 @@ state Smoking
|
||||
|
||||
Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime)
|
||||
; Debug.Trace(self + ": OnSleepStart, " + Target)
|
||||
|
||||
if bIsFinished
|
||||
UnregisterForSleep()
|
||||
UnregisterForUpdate()
|
||||
GotoState("")
|
||||
return
|
||||
endif
|
||||
|
||||
; Force reset of the animations to make the NPC re-enter the furniture (if it wishes).
|
||||
; Fixes NPCs creeping away from the furniture while the player is sleeping in the same location.
|
||||
@ -70,12 +84,6 @@ state Smoking
|
||||
GotoState("")
|
||||
endEvent
|
||||
|
||||
event OnEndState()
|
||||
; Debug.Trace(self + ": Unregistering for updates, " + Target)
|
||||
UnregisterForUpdate()
|
||||
UnregisterForSleep()
|
||||
endevent
|
||||
|
||||
endstate
|
||||
|
||||
Event OnCellAttach()
|
||||
@ -100,6 +108,8 @@ Event OnEffectFinish(Actor akTarget, Actor akCaster)
|
||||
_LockAnimationUpdates()
|
||||
StopAnimations(False)
|
||||
_UnlockAnimationUpdates()
|
||||
|
||||
Target = None
|
||||
EndEvent
|
||||
|
||||
Function StopAnimations(Bool bQuickStop)
|
||||
|
@ -20,12 +20,18 @@ Event OnEffectStart(Actor akTarget, Actor akCaster)
|
||||
EndEvent
|
||||
|
||||
Event OnUpdate()
|
||||
if bIsFinished
|
||||
UnregisterForUpdate()
|
||||
UnregisterForSleep()
|
||||
return
|
||||
endif
|
||||
|
||||
_LockAnimationUpdates()
|
||||
|
||||
If AnimationStage == 0 && Target.GetSitState() != 3
|
||||
; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage + ", waiting...")
|
||||
RegisterForSingleUpdate(1.0)
|
||||
ElseIf bIsFinished == False
|
||||
Else
|
||||
AnimationStage += 1
|
||||
|
||||
; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage)
|
||||
@ -57,27 +63,21 @@ EndEvent
|
||||
Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime)
|
||||
; Debug.Trace(self + ": OnSleepStart, " + Target)
|
||||
|
||||
if bIsFinished
|
||||
UnregisterForSleep()
|
||||
UnregisterForUpdate()
|
||||
return
|
||||
endif
|
||||
|
||||
; Force reset of the animations to make the NPC re-enter the furniture (if it wishes).
|
||||
; Fixes NPCs creeping away from the furniture while the player is sleeping in the same location.
|
||||
_LockAnimationUpdates()
|
||||
|
||||
If bIsFinished == False
|
||||
UnregisterForUpdate()
|
||||
StopAnimations(True)
|
||||
Target.RemoveSpell(_00E_Smoking_WallMarkerSP)
|
||||
EndIf
|
||||
|
||||
UnregisterForUpdate()
|
||||
StopAnimations(True)
|
||||
Target.RemoveSpell(_00E_Smoking_WallMarkerSP)
|
||||
_UnlockAnimationUpdates()
|
||||
EndEvent
|
||||
|
||||
Event OnCellDetach()
|
||||
UnregisterForSleep()
|
||||
endEvent
|
||||
|
||||
Event OnCellAttach()
|
||||
RegisterForSleep()
|
||||
endEvent
|
||||
|
||||
Event OnEffectFinish(Actor akTarget, Actor akCaster)
|
||||
; Debug.Trace(self + ": OnEffectFinish, " + Target)
|
||||
|
||||
@ -85,24 +85,23 @@ Event OnEffectFinish(Actor akTarget, Actor akCaster)
|
||||
Target.RemoveSpell(_00E_Smoking_WallMarkerSP)
|
||||
|
||||
_LockAnimationUpdates()
|
||||
StopAnimations(False)
|
||||
StopAnimations(Target.GetParentCell() != (Game.GetForm(0x14) as Actor).GetParentCell())
|
||||
_UnlockAnimationUpdates()
|
||||
Target = None
|
||||
|
||||
EndEvent
|
||||
|
||||
Function StopAnimations(Bool bQuickStop)
|
||||
If AnimationStage > 0
|
||||
If bQuickStop
|
||||
Debug.SendAnimationEvent(Target, "IdleForceDefaultState")
|
||||
Else
|
||||
Debug.SendAnimationEvent(Target, "WallPipeSmokingExit")
|
||||
EndIf
|
||||
|
||||
If AnimationStage > 1
|
||||
_00E_Smoking_PipeSmokingSmokeExhaleEffect.Stop(Target)
|
||||
EndIf
|
||||
Target.SetHeadtracking(True)
|
||||
|
||||
If bQuickStop == False
|
||||
If bQuickStop
|
||||
Debug.SendAnimationEvent(Target, "IdleForceDefaultState")
|
||||
Else
|
||||
Debug.SendAnimationEvent(Target, "WallPipeSmokingExit")
|
||||
Utility.Wait(1.75)
|
||||
Debug.SendAnimationEvent(Target, "IdleForceDefaultState")
|
||||
EndIf
|
||||
|
Loading…
Reference in New Issue
Block a user