Scriptname _00E_BardMarkerScript extends ObjectReference Import Utility ;IMPORTANT: EVERY BARD ACTOR NEEDS THE _00E_BardActorScript ;===================================================================================== ; EVENTS ;===================================================================================== Event OnInit() Self.BlockActivation(True) EndEvent Event OnActivate(ObjectReference akActionRef) if Self.IsActivationBlocked() if akActionRef == Game.GetPlayer() ; Do Nothing Else Self.Activate(akActionRef, True) EndIf EndIf EndEvent Event OnUpdate() If (BardREF.GetDistance(Self) < 100) && (Initiated == False) Debug.Trace("Close enough!") Initiated = True StartInstrumentalSong() Else RegisterForSingleUpdate(1) EndIf EndEvent ;===================================================================================== ; FUNCTIONS ;===================================================================================== Function WaitForBard(Actor Bard) {Accessed from: Package _00E_UseBardMarker, OnEnd} if Waiting == False BardREF = Bard RegisterForSingleUpdate(1) Waiting = True Else Return EndIf EndFunction Function StartInstrumentalSong() if Playing == False Wait(1.5) ; BardREF.GetLinkedRef(BardSongMarker).Enable() Playing = True Else Return EndIf EndFunction Function StopInstrumentalSong() {Accessed from: Package _00E_UseBardMarker, OnEnd} Playing = False Waiting = False Wait(1.5) BardREF.GetLinkedRef(BardSongMarker).Disable() ; Sound.StopInstance(CurrentSongInstance) EndFunction ;===================================================================================== ; PROPERTIES ;===================================================================================== int CurrentSongInstance bool Playing bool Waiting bool Initiated Actor BardREF Sound SongToPlay Keyword Property BardSongMarker Auto Package Property _00E_UseBardMarker Auto