4
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

248 lines
6.8 KiB

Scriptname _00E_MQ10a_Functions extends Quest
Import Utility
Import _00E_QuestFunctions
;=====================================================================================
; FUNCTIONS
;=====================================================================================
Function SetUpScene()
; Prepare for scene MQ10a_SC1_DreamSequencePart01, part 1 of 3.
; This is called from the result script of MQ10a stage 5.
_00E_QuestFunctions.UnsummonApparitionIfExists()
MQ10a_SC1_HeartParentREF.Enable()
Levelsystem.RemoveSilence()
PlayerREF.MoveTo(PlayerStartMarkerNew)
fPlayerScale = _00E_SetActorScale.Change(PlayerREF, 0.85)
Levelsystem.SkipTimeToHour(18.4)
Game.ForceFirstPerson()
_00E_QuestFunctions.PlayerAIWalkStop() ; workaround for the "uncompiled scripts bug" of patch 1.5.8.0
;Game.EnablePlayerControls()
Game.DisablePlayerControls(false, true, true, false, true, true, true, true, 0)
Game.RequestAutoSave()
PlayerREF.PlayIdle(TG05_GetUp)
if GetStage() >= 5
FadeToBlackBackImod2SecPause.Apply()
endif
Game.ShowFirstPersonGeometry(false)
Utility.Wait(1)
FadeToBlackHoldImod.Remove()
SetUpSceneForReal()
EndFunction
Function SetUpSceneForReal()
; Prepare for scene MQ10a_SC1_DreamSequencePart01, part 2 of 3.
; ; This is called when the player enters triggerbox
; ; _00E_MQ10a_SetUpTGBX, on their way to Father.
; This is called from function SetUpScene().
; ; This used to be in the SetUpScene() function, but it overcrowded
; ; the function, leading to difficulties starting the quest
; ; (might be part of the reason for the infamous MQ09 blackscreen
; ; bug).
int iIndex = _00E_Dreams_ObjectList01.GetSize()
while iIndex > 0
iIndex -= 1
ObjectReference objToDelete = _00E_Dreams_ObjectList01.GetAt(iIndex) as ObjectReference
objToDelete.Disable()
EndWhile
MQ10a_SC1_FatherREF.Enable()
MQ10a_SC1_FatherREF.SetOutfit(_00E_Father_Outfit_Decayed)
MQP01_DreamDoorREF.Lock(True)
MQP01_DreamDoorREF.SetLockLevel(255)
;MQ10a_SC1_DreamSequencePart01.ForceStart() starts with the begin of the quest anyway, this only causes a papyrus error
EnableSisterAndMother()
Levelsystem.RemoveSilence()
EndFunction
Function UnlockDoor()
MQP01_DreamDoorREF.Lock(False)
MQP01_DreamDoorREF.SetOpen(True)
EndFunction
Function EnableSisterAndMother()
; Prepare for scene MQ10a_SC1_DreamSequencePart01, part 3 of 3.
; This is called from function SetUpSceneForReal().
; Apparently this function is also called again when the player
; talks to father.
MQ10a_SC1_SisterREF.Enable()
MQ10a_SC1_MotherREF.Enable()
MQ10a_SC1_SisterREF.SetAlpha(1.0)
MQ10a_SC1_MotherREF.SetAlpha(1.0)
MQ10a_SC1_MotherREF.MoveTo(MQ10a_SC1_MotherChairREF)
MQ10a_SC1_SisterREF.MoveTo(MQ10a_SC1_SisterChairREF)
EndFunction
Function SetTime()
MQ10a_SC1_MotherREF.Enable()
MQ10a_SC1_SisterREF.Enable()
TimeScale.SetValue(450)
RegisterForSingleUpdate(1)
EndFunction
Function AdvanceTime()
FXCameraAttachEmbersEffect.Play(PlayerREF)
_00E_MAGFXFireOilIgniteLow.Play(MQ10a_SC1_FatherREF)
_00E_MAGFXFireOilIgniteLow.Play(MQ10a_SC1_SisterREF)
_00E_MAGFXFireOilIgniteLow.Play(MQ10a_SC1_MotherREF)
FireFXShader.Play(MQ10a_SC1_MotherREF)
FireFXShader.Play(MQ10a_SC1_SisterREF)
FireFXShader.Play(MQ10a_SC1_FatherREF)
_00E_Music_Special_MQP01_BuildUp.Add()
EndFunction
Function CollapseDream()
_00E_MQ10a_HeartbeatM.Play(PlayerREF)
_00E_MQ10a_DreamCollapseIMOD.Apply()
EndFunction
Function FadeToBlack()
FadeToBlackHoldImod.ApplyCrossFade(0.5)
EndFunction
Function AddSilence()
_00E_SilenceAbruptHighPriority.Add()
SetStage(25)
EndFunction
Function FireStage01()
MAGFireBallExpImod.Apply()
MQ10a_SC1_FireREF_01.EnableNoWait()
MQ10a_SC1_FireREF_02.EnableNoWait()
Game.ShakeCamera(afStrength = 0.3)
MAGDestructionFireStormExplosionM.Play(PlayerREF)
EndFunction
Function FireStage02()
MAGFireBallExpImod.Apply()
MQ10a_SC1_FireREF_03.EnableNoWait()
MQ10a_SC1_FireREF_04.EnableNoWait()
Game.ShakeCamera(afStrength = 0.6)
MAGDestructionFireStormExplosionM.Play(PlayerREF)
EndFunction
Function CleanUp()
_00E_SilenceAbruptHighPriority.Remove()
Timescale.SetValue(10)
PlayerREF.SetScale(fPlayerScale)
Game.ShowFirstPersonGeometry(true)
MQ10a_SC1_HeartParentREF.Disable()
FXCameraAttachEmbersEffect.Stop(PlayerREF)
MQ10a_SC1_FireREF_01.Disable()
MQ10a_SC1_FireREF_02.Disable()
MQ10a_SC1_FireREF_03.Disable()
MQ10a_SC1_FireREF_04.Disable()
MQ10a_SC1_MotherREF.Disable()
MQ10a_SC1_SisterREF.Disable()
MQ10a_SC1_FatherREF.Disable()
If MQ10a_SC1_DreamSequencePart01.IsPlaying()
MQ10a_SC1_DreamSequencePart01.Stop()
EndIf
MQ10b.SetStage(5)
EndFunction
;=====================================================================================
; STATES
;=====================================================================================
Event OnUpdate()
If GetStage() < 25
If GameHour.GetValue() >= 22
Timescale.SetValue(0.01)
Else
RegisterForSingleUpdate(1)
EndIf
EndIf
EndEvent
;=====================================================================================
; PROPERTIES
;=====================================================================================
float fPlayerScale
_00E_QuestFunctions Property Levelsystem Auto
Actor Property MQ10a_SC1_FatherREF Auto
Actor Property MQ10a_SC1_MotherREF Auto
Actor Property MQ10a_SC1_SisterREF Auto
Actor Property PlayerREF Auto
Formlist Property _00E_Dreams_ObjectList01 Auto
ImageSpaceModifier Property _00E_MQ10a_DreamCollapseIMOD Auto
MusicType Property _00E_SilenceAbruptHighPriority Auto
MusicType Property _00E_Music_Special_MQP01_BuildUp Auto
EffectShader Property FireFXShader Auto
GlobalVariable Property Timescale Auto
GlobalVariable Property GameHour Auto
Outfit Property _00E_Father_Outfit_Decayed Auto
VisualEffect Property FXCameraAttachEmbersEffect Auto
Quest Property MQ10b Auto
ObjectReference Property PlayerStartMarkerNew Auto
ObjectReference Property MQP01_DreamDoorREF Auto
ObjectReference Property MQ10a_SC1_FireREF_01 Auto
ObjectReference Property MQ10a_SC1_FireREF_02 Auto
ObjectReference Property MQ10a_SC1_FireREF_03 Auto
ObjectReference Property MQ10a_SC1_FireREF_04 Auto
ObjectReference Property MQ10a_SC1_HeartParentREF Auto
ObjectReference Property MQ10a_SC1_MotherChairREF Auto
ObjectReference Property MQ10a_SC1_SisterChairREF Auto
Scene Property MQ10a_SC1_DreamSequencePart01 Auto
Sound Property _00E_MQ10a_HeartbeatM Auto
Sound Property _00E_MAGFXFireOilIgniteLow Auto
Sound Property MAGDestructionFireStormExplosionM Auto
Float TimescaleBefore
Idle Property TG05_GetUp Auto
ImageSpaceModifier Property FadeToBlackHoldImod Auto
ImageSpaceModifier Property FadeToBlackBackImod Auto
ImageSpaceModifier Property FadeToBlackBackImod2SecPause Auto
ImageSpaceModifier Property MAGFireBallExpImod Auto