98 lines
2.9 KiB
Plaintext
98 lines
2.9 KiB
Plaintext
Scriptname _00E_MQ11c_PlayerAliasScript extends ReferenceAlias
|
|
|
|
Int iScriptVersion = 0
|
|
Int Property LATEST_SCRIPT_VERSION = 1 AutoReadOnly
|
|
|
|
Event OnPlayerLoadGame()
|
|
If iScriptVersion < LATEST_SCRIPT_VERSION
|
|
iScriptVersion = LATEST_SCRIPT_VERSION
|
|
|
|
UpdateWeatherTrackingState()
|
|
|
|
Int curStage = GetOwningQuest().GetCurrentStageID()
|
|
|
|
If curStage >= 260
|
|
_00E_MQ11c_SilvergroveMainMusic.SetValue(0)
|
|
EndIf
|
|
|
|
If curStage >= 260 && _00E_MQ12a_MQ11cCleared.GetValueInt() == 0
|
|
Location curLoc = GetActorReference().GetCurrentLocation()
|
|
If LocationIsInnerSilberhain(curLoc)
|
|
SetDeadWeather(False)
|
|
ElseIf curLoc != _00E_MQ11c_SilberhainExteriorBorder
|
|
ReleaseDeadWeather(False)
|
|
EndIf
|
|
Else
|
|
ReleaseDeadWeather(False)
|
|
EndIf
|
|
EndIf
|
|
EndEvent
|
|
|
|
Function UpdateWeatherTrackingState()
|
|
If _00E_MQ12a_MQ11cCleared.GetValueInt() == 0 && GetOwningQuest().GetCurrentStageID() >= 260
|
|
GoToState("TrackingWeather")
|
|
Else
|
|
GoToState("")
|
|
EndIf
|
|
EndFunction
|
|
|
|
State TrackingWeather
|
|
|
|
Event OnLocationChange(Location akOldLoc, Location akNewLoc)
|
|
; The black stone has been given to Lexyl? Time to stop changing the weather in Silberhain
|
|
If _00E_MQ12a_MQ11cCleared.GetValueInt() != 0
|
|
GoToState("")
|
|
ReleaseDeadWeather(False)
|
|
Return
|
|
EndIf
|
|
|
|
If LocationIsInnerSilberhain(akNewLoc) ; In inner Silberhain
|
|
If LocationIsInnerSilberhain(akOldLoc)
|
|
; Do nothing
|
|
ElseIf akOldLoc == _00E_MQ11c_SilberhainExteriorBorder
|
|
SetDeadWeather(True)
|
|
Else ; Fast travel?
|
|
SetDeadWeather(False)
|
|
EndIf
|
|
ElseIf akNewLoc != _00E_MQ11c_SilberhainExteriorBorder ; Not in inner Silberhain and not in transition zone
|
|
If LocationIsInnerSilberhain(akOldLoc)
|
|
ReleaseDeadWeather(False)
|
|
ElseIf akOldLoc == _00E_MQ11c_SilberhainExteriorBorder
|
|
Actor playerRef = GetActorReference()
|
|
If playerRef.GetWorldSpace() == Vyn && playerRef.GetDistance(SilberhainMapMarker) < 25000.0
|
|
ReleaseDeadWeather(True)
|
|
Else
|
|
ReleaseDeadWeather(False)
|
|
EndIf
|
|
EndIf
|
|
EndIf
|
|
EndEvent
|
|
|
|
EndState
|
|
|
|
Bool Function LocationIsInnerSilberhain(Location lc)
|
|
Return lc == SilberhaimLoc || lc == _00E_MQ11c_SilberhainExterior || lc == _00E_MQ11c_SilberhainInterior
|
|
EndFunction
|
|
|
|
Function SetDeadWeather(Bool bGradualTransition)
|
|
(GetOwningQuest() as _00E_MQ11c_Functions).SetSilberhainDeadWeatherFX(bGradualTransition)
|
|
EndFunction
|
|
|
|
Function ReleaseDeadWeather(Bool bGradualTransition)
|
|
(GetOwningQuest() as _00E_MQ11c_Functions).ResetSilberhainDeadWeatherFX(bGradualTransition)
|
|
EndFunction
|
|
|
|
|
|
Location Property SilberhaimLoc Auto
|
|
Location Property _00E_MQ11c_SilberhainExterior Auto
|
|
Location Property _00E_MQ11c_SilberhainInterior Auto
|
|
Location Property _00E_MQ11c_SilberhainExteriorBorder Auto
|
|
|
|
WorldSpace Property Vyn Auto
|
|
|
|
ObjectReference Property SilberhainMapMarker Auto
|
|
|
|
GlobalVariable Property _00E_MQ12a_MQ11cCleared Auto
|
|
GlobalVariable Property _00E_MQ11c_SilberhainDeadWeather Auto
|
|
GlobalVariable Property _00E_MQ11c_SilvergroveMainMusic Auto
|