enderalse/source/scripts/_00e_tavern_lightfxswitchersc.psc

80 lines
2.2 KiB
Plaintext

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