Scriptname _00E_Tavern_LightFXSwitcherSC extends ObjectReference ;===================================================================================== ; EVENTS ;===================================================================================== Event OnCellAttach() ; Debug.Trace(self + ", OnCellAttach: start") LightLinkerRef = GetLinkedRef() ; To speed up things in UpdateLightLinker a bit EndEvent Event OnTriggerEnter(ObjectReference akActionRef) If akActionRef == PlayerREF ; Debug.Trace(self + ", OnTriggerEnter") RegisterForSleep() RegisterForModEvent("TimeSkip", "OnTimeSkip") UpdateLightLinker() EndIf EndEvent Event OnTriggerLeave(ObjectReference akActionRef) If akActionRef == PlayerREF UnregisterForSleep() UnregisterForAllModEvents() LightLinkerRef = None ; To not keep it persistent EndIf EndEvent Event OnSleepStop(bool abInterrupted) UpdateLightLinker() EndEvent Event OnTimeSkip(String eventName, String strArg, Float numArg, Form sender) UpdateLightLinker() EndEvent ;===================================================================================== ; FUNCTIONS ;===================================================================================== float Function GetCurrentHourOfDay() float Time = Utility.GetCurrentGameTime() Time -= Math.Floor(Time) ; Remove "previous in-game days passed" bit Time *= 24 ; Convert from fraction of a day to number of hours Return Time EndFunction Function UpdateLightLinker() ; Debug.Trace(self + ", UpdateLightLinker") If LightLinkerRef == None LightLinkerRef = GetLinkedRef() EndIf Float fCurHour = GameHour.GetValue() If fCurHour >= 18.5 || fCurHour < 5.9 If LightLinkerRef.IsEnabled() LightLinkerRef.Disable() EndIf Else If LightLinkerRef.IsDisabled() LightLinkerRef.Enable() EndIf EndIf EndFunction ;===================================================================================== ; PROPERTIES ;===================================================================================== ObjectReference LightLinkerRef Actor Property PlayerREF Auto GlobalVariable Property GameHour Auto