67 lines
1.6 KiB
Plaintext
67 lines
1.6 KiB
Plaintext
Scriptname _00E_DayTimeControlScript extends Quest
|
|
|
|
ObjectReference Property NightLightsMarker Auto
|
|
ObjectReference Property TradeHoursMarker Auto
|
|
|
|
GlobalVariable Property GameHour Auto
|
|
|
|
Float Property NIGHT_LIGHTS_ON_TIME = 18.9 AutoReadOnly
|
|
Float Property NIGHT_LIGHTS_OFF_TIME = 6.25 AutoReadOnly
|
|
|
|
Float Property TRADE_ON_TIME = 8.1 AutoReadOnly
|
|
Float Property TRADE_OFF_TIME = 20.0 AutoReadOnly
|
|
|
|
Event OnInit()
|
|
RegisterForSingleUpdate(3.0) ; Give a few seconds for the game to warm up at the start
|
|
EndEvent
|
|
|
|
Event OnUpdate()
|
|
UpdateMarkers()
|
|
EndEvent
|
|
|
|
Event OnUpdateGameTime()
|
|
UpdateMarkers()
|
|
EndEvent
|
|
|
|
Function UpdateMarkers()
|
|
Float nextUpdateHour = 24.0
|
|
|
|
nextUpdateHour = _UpdateMarker(NightLightsMarker, NIGHT_LIGHTS_ON_TIME, NIGHT_LIGHTS_OFF_TIME, nextUpdateHour)
|
|
nextUpdateHour = _UpdateMarker(TradeHoursMarker, TRADE_ON_TIME, TRADE_OFF_TIME, nextUpdateHour)
|
|
|
|
RegisterForSingleUpdateGameTime(nextUpdateHour + 0.025)
|
|
EndFunction
|
|
|
|
Float Function _UpdateMarker(ObjectReference markerRef, Float onTime, Float offTime, Float questUpdateHour)
|
|
Float nextUpdateHour
|
|
Float curHour = GameHour.GetValue()
|
|
|
|
If onTime > offTime
|
|
If curHour >= offTime && curHour < onTime
|
|
markerRef.Disable()
|
|
nextUpdateHour = onTime
|
|
Else
|
|
markerRef.Enable()
|
|
nextUpdateHour = offTime
|
|
EndIf
|
|
Else ; onTime < offTime
|
|
If curHour >= onTime && curHour < offTime
|
|
markerRef.Enable()
|
|
nextUpdateHour = offTime
|
|
Else
|
|
markerRef.Disable()
|
|
nextUpdateHour = onTime
|
|
EndIf
|
|
EndIf
|
|
|
|
If nextUpdateHour < curHour
|
|
nextUpdateHour += 24.0
|
|
EndIf
|
|
nextUpdateHour -= curHour
|
|
|
|
If nextUpdateHour < questUpdateHour
|
|
Return nextUpdateHour
|
|
Else
|
|
Return questUpdateHour
|
|
EndIf
|
|
EndFunction |