|
|
@ -20,12 +20,18 @@ Event OnEffectStart(Actor akTarget, Actor akCaster) |
|
|
|
EndEvent |
|
|
|
EndEvent |
|
|
|
|
|
|
|
|
|
|
|
Event OnUpdate() |
|
|
|
Event OnUpdate() |
|
|
|
|
|
|
|
if bIsFinished |
|
|
|
|
|
|
|
UnregisterForUpdate() |
|
|
|
|
|
|
|
UnregisterForSleep() |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
_LockAnimationUpdates() |
|
|
|
_LockAnimationUpdates() |
|
|
|
|
|
|
|
|
|
|
|
If AnimationStage == 0 && Target.GetSitState() != 3 |
|
|
|
If AnimationStage == 0 && Target.GetSitState() != 3 |
|
|
|
; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage + ", waiting...") |
|
|
|
; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage + ", waiting...") |
|
|
|
RegisterForSingleUpdate(1.0) |
|
|
|
RegisterForSingleUpdate(1.0) |
|
|
|
ElseIf bIsFinished == False |
|
|
|
Else |
|
|
|
AnimationStage += 1 |
|
|
|
AnimationStage += 1 |
|
|
|
|
|
|
|
|
|
|
|
; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage) |
|
|
|
; Debug.Trace(self + ": OnUpdate, " + Target + ", stage " + AnimationStage) |
|
|
@ -57,27 +63,21 @@ EndEvent |
|
|
|
Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime) |
|
|
|
Event OnSleepStart(float afSleepStartTime, float afDesiredSleepEndTime) |
|
|
|
; Debug.Trace(self + ": OnSleepStart, " + Target) |
|
|
|
; 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). |
|
|
|
; 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. |
|
|
|
; Fixes NPCs creeping away from the furniture while the player is sleeping in the same location. |
|
|
|
_LockAnimationUpdates() |
|
|
|
_LockAnimationUpdates() |
|
|
|
|
|
|
|
UnregisterForUpdate() |
|
|
|
If bIsFinished == False |
|
|
|
StopAnimations(True) |
|
|
|
UnregisterForUpdate() |
|
|
|
Target.RemoveSpell(_00E_Smoking_WallMarkerSP) |
|
|
|
StopAnimations(True) |
|
|
|
|
|
|
|
Target.RemoveSpell(_00E_Smoking_WallMarkerSP) |
|
|
|
|
|
|
|
EndIf |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_UnlockAnimationUpdates() |
|
|
|
_UnlockAnimationUpdates() |
|
|
|
EndEvent |
|
|
|
EndEvent |
|
|
|
|
|
|
|
|
|
|
|
Event OnCellDetach() |
|
|
|
|
|
|
|
UnregisterForSleep() |
|
|
|
|
|
|
|
endEvent |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Event OnCellAttach() |
|
|
|
|
|
|
|
RegisterForSleep() |
|
|
|
|
|
|
|
endEvent |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Event OnEffectFinish(Actor akTarget, Actor akCaster) |
|
|
|
Event OnEffectFinish(Actor akTarget, Actor akCaster) |
|
|
|
; Debug.Trace(self + ": OnEffectFinish, " + Target) |
|
|
|
; Debug.Trace(self + ": OnEffectFinish, " + Target) |
|
|
|
|
|
|
|
|
|
|
@ -85,24 +85,23 @@ Event OnEffectFinish(Actor akTarget, Actor akCaster) |
|
|
|
Target.RemoveSpell(_00E_Smoking_WallMarkerSP) |
|
|
|
Target.RemoveSpell(_00E_Smoking_WallMarkerSP) |
|
|
|
|
|
|
|
|
|
|
|
_LockAnimationUpdates() |
|
|
|
_LockAnimationUpdates() |
|
|
|
StopAnimations(False) |
|
|
|
StopAnimations(Target.GetParentCell() != (Game.GetForm(0x14) as Actor).GetParentCell()) |
|
|
|
_UnlockAnimationUpdates() |
|
|
|
_UnlockAnimationUpdates() |
|
|
|
|
|
|
|
Target = None |
|
|
|
|
|
|
|
|
|
|
|
EndEvent |
|
|
|
EndEvent |
|
|
|
|
|
|
|
|
|
|
|
Function StopAnimations(Bool bQuickStop) |
|
|
|
Function StopAnimations(Bool bQuickStop) |
|
|
|
If AnimationStage > 0 |
|
|
|
If AnimationStage > 0 |
|
|
|
If bQuickStop |
|
|
|
|
|
|
|
Debug.SendAnimationEvent(Target, "IdleForceDefaultState") |
|
|
|
|
|
|
|
Else |
|
|
|
|
|
|
|
Debug.SendAnimationEvent(Target, "WallPipeSmokingExit") |
|
|
|
|
|
|
|
EndIf |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If AnimationStage > 1 |
|
|
|
If AnimationStage > 1 |
|
|
|
_00E_Smoking_PipeSmokingSmokeExhaleEffect.Stop(Target) |
|
|
|
_00E_Smoking_PipeSmokingSmokeExhaleEffect.Stop(Target) |
|
|
|
EndIf |
|
|
|
EndIf |
|
|
|
Target.SetHeadtracking(True) |
|
|
|
Target.SetHeadtracking(True) |
|
|
|
|
|
|
|
|
|
|
|
If bQuickStop == False |
|
|
|
If bQuickStop |
|
|
|
|
|
|
|
Debug.SendAnimationEvent(Target, "IdleForceDefaultState") |
|
|
|
|
|
|
|
Else |
|
|
|
|
|
|
|
Debug.SendAnimationEvent(Target, "WallPipeSmokingExit") |
|
|
|
Utility.Wait(1.75) |
|
|
|
Utility.Wait(1.75) |
|
|
|
Debug.SendAnimationEvent(Target, "IdleForceDefaultState") |
|
|
|
Debug.SendAnimationEvent(Target, "IdleForceDefaultState") |
|
|
|
EndIf |
|
|
|
EndIf |
|
|
|