98 lines
2.5 KiB
Plaintext
98 lines
2.5 KiB
Plaintext
Scriptname _00E_ScrollUnlockAlias extends ReferenceAlias Hidden
|
|
|
|
event OnPlayerLoadGame()
|
|
if UnlockScrollEquipped()
|
|
GotoState("Equipped")
|
|
endif
|
|
endevent
|
|
|
|
Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference)
|
|
if akBaseObject as Scroll && _00E_UnlockScrolls.HasForm(akBaseObject)
|
|
GotoState("Equipped")
|
|
endif
|
|
endEvent
|
|
|
|
bool function UnlockScrollEquipped()
|
|
Actor PlayerREF = GetReference() as Actor
|
|
if PlayerREF.IsEquipped(_00E_UnlockScrolls)
|
|
return true
|
|
endif
|
|
Form leftHand = PlayerREF.GetEquippedObject(0)
|
|
return leftHand && _00E_UnlockScrolls.HasForm(leftHand)
|
|
endfunction
|
|
|
|
Event OnUpdate()
|
|
if UnlockScrollAliases.IsStopped()
|
|
if ! UnlockScrollAliases.Start()
|
|
RegisterForSingleUpdate(0.1)
|
|
endif
|
|
elseif UnlockScrollAliases.IsStopping()
|
|
RegisterForSingleUpdate(0.01)
|
|
elseif UnlockScrollAliases.IsStarting()
|
|
RegisterForSingleUpdate(0.01)
|
|
endif
|
|
EndEvent
|
|
|
|
state Equipped
|
|
event OnPlayerLoadGame()
|
|
if ! UnlockScrollEquipped()
|
|
GotoState("")
|
|
endif
|
|
endevent
|
|
|
|
event OnBeginState()
|
|
ObjectReference actorRef = GetReference()
|
|
RegisterForAnimationEvent(actorRef, "BeginCastRight")
|
|
RegisterForAnimationEvent(actorRef, "BeginCastLeft")
|
|
endevent
|
|
|
|
event OnEndState()
|
|
ObjectReference actorRef = GetReference()
|
|
UnregisterForAnimationEvent(actorRef, "BeginCastRight")
|
|
UnregisterForAnimationEvent(actorRef, "BeginCastLeft")
|
|
endevent
|
|
|
|
Event OnUpdate()
|
|
if UnlockScrollAliases.IsStopped()
|
|
if ! UnlockScrollAliases.Start()
|
|
RegisterForSingleUpdate(0.1)
|
|
endif
|
|
elseif UnlockScrollAliases.IsStopping()
|
|
RegisterForSingleUpdate(0.01)
|
|
elseif UnlockScrollAliases.IsStarting()
|
|
RegisterForSingleUpdate(0.01)
|
|
endif
|
|
EndEvent
|
|
|
|
Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference)
|
|
; do nothing
|
|
endEvent
|
|
|
|
Event OnObjectUnequipped(Form akBaseObject, ObjectReference akReference)
|
|
if ! UnlockScrollEquipped()
|
|
GotoState("")
|
|
endif
|
|
endEvent
|
|
|
|
Event OnAnimationEvent(ObjectReference akSource, string asEventName)
|
|
ObjectReference crosshairRef = Game.GetCurrentCrosshairRef()
|
|
|
|
if crosshairRef
|
|
Form baseObject = crosshairRef.GetBaseObject()
|
|
if baseObject as Container || baseObject as Door
|
|
ScrollTarget.ForceRefTo(crosshairRef)
|
|
UnlockScrollAliases.Stop()
|
|
return
|
|
endif
|
|
endif
|
|
|
|
UnlockScrollAliases.Stop()
|
|
RegisterForSingleUpdate(0.01)
|
|
ScrollTarget.Clear()
|
|
endEvent
|
|
endstate
|
|
|
|
Quest Property UnlockScrollAliases Auto
|
|
FormList Property _00E_UnlockScrolls Auto
|
|
ReferenceAlias Property ScrollTarget Auto
|