504 lines
13 KiB
Plaintext
504 lines
13 KiB
Plaintext
Scriptname _00E_MQ09_QuestFunctions Extends Quest Conditional
|
|
|
|
Import Utility
|
|
|
|
;=====================================================================================
|
|
; EVENTS
|
|
;=====================================================================================
|
|
|
|
Event OnUpdateGameTime()
|
|
|
|
Timescale.SetValue(0.001)
|
|
|
|
EndEvent
|
|
|
|
Event OnUpdate()
|
|
|
|
If GetCurrentStageID() >= 60 && (MQ10a.GetCurrentStageID() < 5 || !MQ10a.IsRunning())
|
|
|
|
MQ10a.SetCurrentStageID(5)
|
|
|
|
Wait(1)
|
|
|
|
if MQ10a.GetCurrentStageID() < 5
|
|
|
|
_00E_MQ09_MQ10a_Broken_Message.Show()
|
|
RegisterForSingleUpdate(6)
|
|
|
|
endif
|
|
ElseIf GetCurrentStageID() == 15 && _00E_MC_JesparREF.GetParentCell() != MQ09bSkelett.GetParentCell()
|
|
|
|
_00E_MC_JesparREF.MoveTo(MQ09_SC1_JesparTravelToREF)
|
|
|
|
EndIf
|
|
|
|
EndEvent
|
|
|
|
;=====================================================================================
|
|
; FUNCTIONS
|
|
;=====================================================================================
|
|
|
|
Function RemoveSilences()
|
|
|
|
_00E_PlayerFunctions.GetSoundControl().RemoveSilence()
|
|
|
|
EndFunction
|
|
|
|
Function AdjustGamehour()
|
|
|
|
Timescale.SetValue(20)
|
|
GameHour.SetValue(18.3) ; Minor correction of time after InitQuest
|
|
RegisterForSingleUpdateGameTime(3)
|
|
|
|
EndFunction
|
|
|
|
Function InitQuest()
|
|
|
|
; Restore player's health if it's damaged because we just "slept"
|
|
PlayerREF.RestoreActorValue("Health", 10000.0)
|
|
|
|
; Force the player to exit any furniture (the benches from MQ09a's scenes) before putting them to the bed
|
|
; Without this exiting the bed is glitchy
|
|
PlayerREF.MoveTo(MQ09JesparPortMarker)
|
|
Utility.Wait(1.0)
|
|
|
|
Timescale.SetValue(0.1)
|
|
_00E_TimeControl.SkipTimeToHour(18.3)
|
|
MQ09_LightParentREF.Disable()
|
|
FadeToBlackHoldIMOD.Apply()
|
|
PlayerREF.MoveTo(MQ09_SC01_PlayerBedREF)
|
|
_00E_MC_JesparREF.MoveTo(MQ09JesparPortMarker)
|
|
bBedFailsave = True
|
|
MQ09StaticDoor.disable()
|
|
MQ08_SoultrainDoorREF.SetOpen(True)
|
|
|
|
_00E_Func_AIWalk.PlayerAIWalk(True)
|
|
Game.ForceThirdPerson()
|
|
|
|
If MQ09_D1_SceneIsle == None
|
|
MQ09_D1_SceneIsle = Game.GetFormFromFile(0x000EA957, "Skyrim.esm") as Scene
|
|
EndIf
|
|
If !MQ09_D1_SceneIsle.IsPlaying()
|
|
MQ09_D1_SceneIsle.ForceStart()
|
|
EndIf
|
|
|
|
MQ09a.StopTrainSound()
|
|
Self.SetCurrentStageID(10)
|
|
|
|
EndFunction
|
|
|
|
Function StartSC01Failsave()
|
|
|
|
If MQ09_D1_SceneIsle == None
|
|
MQ09_D1_SceneIsle = Game.GetFormFromFile(0x000EA957, "Skyrim.esm") as Scene
|
|
EndIf
|
|
MQ09_D1_SceneIsle.ForceStart()
|
|
|
|
EndFunction
|
|
|
|
Function SC01JesparFailsafe()
|
|
|
|
RegisterForSingleUpdate(10)
|
|
|
|
EndFunction
|
|
|
|
Function PlayerStandUp()
|
|
|
|
UnlockDoor()
|
|
String facegen = "bUseFaceGenPreprocessedHeads:General"
|
|
SetINIBool(facegen, False)
|
|
Game.GetPlayer().QueueNiNodeUpdate()
|
|
SetINIBool(facegen, True)
|
|
ImagespaceModifier.RemoveCrossFade()
|
|
FadeToBlackHoldIMOD.Remove()
|
|
_00E_WakeUp.ApplyCrossFade(afFadeDuration = 0.5)
|
|
MQ09_SC01_PlayerBedREF.Activate(PlayerREF, true)
|
|
_00E_Func_AIWalk.PlayerAIWalkStop()
|
|
|
|
EndFunction
|
|
|
|
Function UnlockDoor()
|
|
|
|
String facegen = "bUseFaceGenPreprocessedHeads:General"
|
|
SetINIBool(facegen, False)
|
|
Game.GetPlayer().QueueNiNodeUpdate()
|
|
SetINIBool(facegen, True)
|
|
|
|
MQ08TrainDoorRef.DisableNoWait()
|
|
MQ09TrainDoorRef001.Lock(0)
|
|
|
|
if TimescaleContainer == 0
|
|
TimescaleContainer = Timescale.GetValue()
|
|
endif
|
|
wait(0.4)
|
|
|
|
EndFunction
|
|
|
|
Function PlayFX()
|
|
|
|
_FS_TheriantrophistControlQuest.TransformBackIfTransformed()
|
|
|
|
Actor Spinne = HoheSpinne.GetActorReference()
|
|
Actor Bear = HoherBear.GetActorReference()
|
|
Actor Tiger = HoherTiger.GetActorReference()
|
|
|
|
MS04MemoryFXBody01VFX.Play(Bear)
|
|
MS04MemoryFXBody01VFX.Play(Spinne)
|
|
MS04MemoryFXBody01VFX.Play(Tiger)
|
|
|
|
Bear.SetAlpha(0.5, True)
|
|
Spinne.SetAlpha(0.5, True)
|
|
Tiger.SetAlpha(0.5, True)
|
|
|
|
EndFunction
|
|
|
|
Function PlayZyklus()
|
|
|
|
AudioCategoryAMB.SetVolume(0.5)
|
|
AudioCategoryAMBr.SetVolume(0.5)
|
|
_00E_Music_Special_Zyklus_Looped.Add()
|
|
_00E_SilenceAbruptHighPriority.Add()
|
|
|
|
EndFunction
|
|
|
|
Function RemoveZyklus()
|
|
_00E_Music_Special_Zyklus_Looped.Remove()
|
|
EndFunction
|
|
|
|
Function PlayTealorTheme()
|
|
|
|
_00E_Music_Special_Character_Tealor.Add()
|
|
_00E_SilenceAbruptHighPriority.Add()
|
|
|
|
EndFunction
|
|
|
|
Function RemoveTealorTheme()
|
|
|
|
_00E_Music_Special_Character_Tealor.Remove()
|
|
|
|
EndFunction
|
|
|
|
Function HohenAufloesen()
|
|
|
|
ObjectReference Bear = HoherBear.GetReference()
|
|
ObjectReference Tiger = HoherTiger.GetReference()
|
|
ObjectReference Spinne = HoheSpinne.GetReference()
|
|
|
|
_00E_HighOnesDisintegrate.Play(Bear)
|
|
_00E_HighOnesDisintegrate.Play(Tiger)
|
|
_00E_HighOnesDisintegrate.Play(Spinne)
|
|
_00E_A2_Ghostwalk_TeleportDoneSound.Play(playerREF)
|
|
|
|
Game.DisablePlayerControls(1, 1, 1, 1, 1, 1, 1)
|
|
|
|
EndFunction
|
|
|
|
Function HohenDisable()
|
|
|
|
Actor Spinne = HoheSpinne.GetActorReference()
|
|
Actor Bear = HoherBear.GetActorReference()
|
|
Actor Tiger = HoherTiger.GetActorReference()
|
|
|
|
Spinne.SetAlpha(0.0)
|
|
Bear.SetAlpha(0.0)
|
|
Tiger.SetAlpha(0.0)
|
|
|
|
_00E_HighOnesDisintegrate.Stop(Spinne)
|
|
_00E_HighOnesDisintegrate.Stop(Bear)
|
|
_00E_HighOnesDisintegrate.Stop(Tiger)
|
|
|
|
; Move the hohen to the NPC dumpster instead of disabling because they are attached to an enable marker
|
|
Spinne.MoveTo(_00E_NPCDumpMarker)
|
|
Bear.MoveTo(_00E_NPCDumpMarker)
|
|
Tiger.MoveTo(_00E_NPCDumpMarker)
|
|
|
|
EndFunction
|
|
|
|
Function GameFadeOut()
|
|
|
|
Game.DisablePlayerControls()
|
|
Game.ForceFirstPerson()
|
|
WPNSwingUnarmedM.Play(PlayerREF)
|
|
HohenDisable()
|
|
AlmaRef.MoveTo(AlmaPortRef)
|
|
Wait(0.15)
|
|
PlayerREF.PlayIdle(TG05_KnockOut)
|
|
Game.ShakeCamera(None,8, 1)
|
|
|
|
if PlayerREF.GetActorBase().GetSex() == 0
|
|
_00E_Male_PlayerHitM.Play(PlayerREF)
|
|
Else
|
|
_00E_Female_PlayerHitM.Play(PlayerREF)
|
|
EndIf
|
|
|
|
WPNImpactBladeVsFlesh.Play(PlayerREF)
|
|
Game.TriggerScreenBlood(10)
|
|
Wait(3.2)
|
|
_00E_NPCKillBodyfall.Play(PlayerREF)
|
|
FadeToBlackHoldImod.Apply()
|
|
PlayerREF.RemoveItem(_00E_MQ09_Silverplate, 1, true, none)
|
|
SkyrimClear.ForceActive()
|
|
RemoveZyklus()
|
|
Wait(4)
|
|
|
|
Game.EnablePlayerControls()
|
|
Game.DisablePlayerControls(true, true, true, false, true, true, true)
|
|
|
|
_00E_MQ09_SamaelRef.Enable()
|
|
_00E_SC_AlmaREF.Enable()
|
|
_00E_MC_TaranorREF.Enable()
|
|
|
|
MQ09_TaranorScene_LinkMarkerREF.Enable()
|
|
_00E_MC_TaranorREF.MoveTo(MQ09_SC04_TaranorMarker)
|
|
_00E_MQ09_SamaelRef.MoveTo(MQ09_SC4_SamaelMarker)
|
|
If _00E_MC_TaranorREF.GetParentCell() != PlayerREF.GetParentCell()
|
|
_00E_MQ09_SamaelRef.MoveTo(MQ09_SC4_SamaelMarker)
|
|
EndIf
|
|
_00E_SC_AlmaREF.MoveTo(MQ09_SC04_AlmaMarkerREF)
|
|
If MQ09_MC_TealorREF.IsDisabled()
|
|
MQ09_MC_TealorREF.Enable()
|
|
EndIf
|
|
MQ09_MC_TealorREF.MoveTo(MQ09_SC06_TealorTurnAround)
|
|
_00E_SC_AlmaREF.SetOutfit(_00E_NehrimeseOutfit01NoHelmetNoShield)
|
|
PlayerRef.MoveTo(MQ09_SC04_ChairMarkerPlayer)
|
|
_00E_Func_AIWalk.PlayerAIWalk(True)
|
|
|
|
Wait(1)
|
|
MQ09_D4_TaranorScene.ForceStart()
|
|
GhostFXShader.Stop(MQ09_MC_TealorREF)
|
|
MQ09_MC_TealorREF.SetAlpha(0.0)
|
|
|
|
EndFunction
|
|
|
|
Function WakeUp()
|
|
|
|
GhostFXShader.Stop(MQ09_MC_TealorREF)
|
|
MQ09_MC_TealorREF.SetAlpha(0.0)
|
|
MQ09_SC06_SilverPlateRef.Enable()
|
|
; Move Samael to the player to "take blindfold off". The packages will return him to his actual place in the scene.
|
|
_00E_MQ09_SamaelRef.Disable()
|
|
_00E_MQ09_SamaelRef.MoveTo(MQ09_SC04_SamaelStunplayer)
|
|
_00E_MQ09_SamaelRef.Enable()
|
|
_00E_WakeUp.Apply()
|
|
FadeToBlackHoldImod.Remove()
|
|
Wait(2.5)
|
|
|
|
EndFunction
|
|
|
|
Function MQ09_D5_RepeatForceGreetSceneStart()
|
|
|
|
MQ09_D5_RepeatForceGreetScene.ForceStart()
|
|
|
|
EndFunction
|
|
|
|
Function MQ09_D6_SceneForceStart()
|
|
|
|
MQ09_D6_Scene.ForceStart()
|
|
|
|
EndFunction
|
|
|
|
Function KillPlayer()
|
|
|
|
WerewolfExtractVFX.Play(PlayerREF)
|
|
WerewolfExtractVFX.Play(_00E_MQ09_SamaelRef)
|
|
_00E_AMB_Mystic_Whispers02M.Play(PlayerREF)
|
|
PoisonDeath.Apply()
|
|
Wait(2.9)
|
|
Debug.SetGodMode(false)
|
|
FadeToBlackHoldIMOD.ApplyCrossFade(afFadeDuration = 0.5)
|
|
PlayerREF.DamageActorValue("Health", 1000)
|
|
PlayerREF.KillEssential(_00E_MQ09_SamaelRef)
|
|
Wait(3)
|
|
WerewolfExtractVFX.Stop(PlayerREF)
|
|
WerewolfExtractVFX.Stop(_00E_MQ09_SamaelRef)
|
|
Game.QuitToMainMenu()
|
|
|
|
EndFunction
|
|
|
|
Function DisablePlate()
|
|
|
|
MQ09_SC06_SilverPlateRef.Disable()
|
|
|
|
EndFunction
|
|
|
|
Function MovePlate()
|
|
|
|
MQ09_SC06_SilverPlateListenREF.Enable()
|
|
|
|
EndFunction
|
|
|
|
Function SamaelSalute()
|
|
|
|
_00E_MQ09_SamaelRef.PlayIdle(IdleSalute)
|
|
|
|
EndFunction
|
|
|
|
Function EnableSilverPlate()
|
|
|
|
SilberplatteRef.Enable()
|
|
SilberplatteRef.SetMotionType(4)
|
|
|
|
EndFunction
|
|
|
|
Function AppearTealor()
|
|
|
|
MAGShockExpImod.Apply()
|
|
_00E_MQ04_CrystalTouch.Play(PlayerREF)
|
|
MQ09_SC06_SilverPlateListenREF.PlaceAtMe(_00E_NPCOorbayaTeleportExplosionBlue, 1)
|
|
_00E_A2_Ghostwalk_TeleportDoneSound.Play(MQ09_MC_TealorREF)
|
|
GhostFXShader.Play(MQ09_MC_TealorREF)
|
|
|
|
EndFunction
|
|
|
|
Function TealorSetAlpha()
|
|
|
|
MQ09_MC_TealorREF.SetAlpha(0.0)
|
|
TimeFadeIn01FXS.Stop(MQ09_MC_TealorREF)
|
|
|
|
EndFunction
|
|
|
|
Function FadeInTealor()
|
|
|
|
MQ09_MC_TealorREF.MoveTo(MQ09_SC06_SilverPlateListenREF)
|
|
TimeFadeIn01FXS.Play(MQ09_MC_TealorREF)
|
|
Wait(1.5)
|
|
GhostFXShader.Play(MQ09_MC_TealorREF)
|
|
MQ09_MC_TealorREF.SetAlpha(0.5)
|
|
_00E_MC_TaranorREF.SetActorValue("speedMult", 65)
|
|
|
|
EndFunction
|
|
|
|
Function DisappearTealor()
|
|
|
|
ObjectReference TealorRef = Tealor.GetReference()
|
|
_00E_A2_Ghostwalk_TeleportDoneSound.Play(TealorRef)
|
|
TimeFadeOut01FXS.Play(TealorRef)
|
|
Wait(2)
|
|
TealorRef.Disable()
|
|
GhostFXShader.Stop(MQ09_MC_TealorREF)
|
|
Game.RequestAutoSave()
|
|
|
|
EndFunction
|
|
|
|
Function EndQuest()
|
|
|
|
_00E_Music_Special_Zyklus_Looped.Remove()
|
|
_00E_Music_Special_Zyklus_OneSelection.Remove() ; A remnant from 1.5.7.0 and older versions
|
|
_00E_Music_Special_Character_Tealor.Remove()
|
|
AudioCategoryAMB.SetVolume(1.0)
|
|
AudioCategoryAMBr.SetVolume(1.0)
|
|
Timescale.SetValue(0.1)
|
|
SpieluhrSwitcher.Enable()
|
|
MAGConjureReanimate.Play(PlayerREF)
|
|
Game.DisablePlayerControls(1, 1, 1, 1, 1, 1, 1)
|
|
_00E_MQ09KnockOutLong.Apply()
|
|
Wait(4.0)
|
|
FadeToBlackHoldImod.ApplyCrossFade()
|
|
Game.ShowFirstPersonGeometry(true)
|
|
_00E_MC_TaranorREF.SetActorValue("speedMult", 100)
|
|
RegisterForSingleUpdate(3)
|
|
MQ10a.SetCurrentStageID(5)
|
|
|
|
EndFunction
|
|
|
|
;=====================================================================================
|
|
; PROPERTIES
|
|
;=====================================================================================
|
|
|
|
Float TimescaleContainer = 0.00
|
|
Bool Done= False
|
|
|
|
Bool Property bBedFailsave Auto Conditional Hidden
|
|
|
|
_00E_MQ08_Questfunctions Property MQ09a Auto
|
|
|
|
Actor Property _00E_MC_JesparREF Auto
|
|
Actor Property PlayerREF Auto
|
|
Actor Property _00E_MC_TaranorREF Auto
|
|
Actor Property _00E_SC_AlmaREF Auto
|
|
Actor Property _00E_MQ09_SamaelRef Auto
|
|
Actor Property MQ09_MC_TealorREF Auto
|
|
Actor Property MQ09bSkelett Auto
|
|
|
|
MusicType Property _00E_Music_Special_Zyklus_OneSelection Auto
|
|
MusicType Property _00E_Music_Special_Zyklus_Looped Auto
|
|
MusicType Property _00E_SilenceTransitionLowPriority Auto
|
|
Explosion Property _00E_NPCOorbayaTeleportExplosionBlue Auto
|
|
MusicType Property _00E_SilenceAbruptHighPriority Auto
|
|
MusicType Property _00E_Music_Special_Character_Tealor Auto
|
|
|
|
Sound Property WPNSwingUnarmedM Auto
|
|
Sound Property _00E_A2_Ghostwalk_TeleportDoneSound Auto
|
|
Sound Property WPNImpactBladeVsFlesh Auto
|
|
Sound Property MAGConjureReanimate Auto
|
|
Sound Property _00E_Male_PlayerHitM Auto
|
|
Sound Property _00E_Female_PlayerHitM Auto
|
|
Sound Property _00E_NPCKillBodyfall Auto
|
|
Sound Property _00E_MQ04_CrystalTouch Auto
|
|
Sound Property _00E_AMB_Mystic_Whispers02M Auto
|
|
|
|
Outfit Property _00E_NehrimeseOutfit01NoHelmetNoShield Auto
|
|
|
|
EffectShader Property TimeFadeOut01FXS Auto
|
|
EffectShader Property TimeFadeIn01FXS Auto
|
|
EffectShader Property _00E_HighOnesDisintegrate Auto
|
|
EffectShader Property GhostFXShader Auto
|
|
|
|
VisualEffect Property MS04MemoryFXBody01VFX Auto
|
|
VisualEffect Property WerewolfExtractVFX Auto
|
|
|
|
ReferenceAlias Property HoherBear Auto
|
|
ReferenceAlias Property HoherTiger Auto
|
|
ReferenceAlias Property HoheSpinne Auto
|
|
ReferenceAlias Property Tealor Auto
|
|
|
|
Idle Property TG05_KnockOut Auto
|
|
Idle Property IdleSalute Auto
|
|
|
|
ObjectReference Property MQ09StaticDoor Auto
|
|
ObjectReference Property SpieluhrSwitcher Auto
|
|
ObjectReference Property MQ09JesparPortMarker Auto
|
|
ObjectReference Property MQ08TrainDoorRef Auto
|
|
ObjectReference Property MQ09TrainDoorRef001 Auto
|
|
ObjectReference Property MQ09_SC01_PlayerBedREF Auto
|
|
ObjectReference Property AlmaRef Auto
|
|
ObjectReference Property AlmaPortRef Auto
|
|
ObjectReference Property SilberplatteRef Auto
|
|
ObjectReference Property MQ09_LightParentREF Auto
|
|
ObjectReference Property MQ09_SC4_SamaelMarker Auto
|
|
ObjectReference Property MQ09_SC04_AlmaMarkerREF Auto
|
|
ObjectReference Property MQ09_SC04_TaranorMarker Auto
|
|
ObjectReference Property MQ09_SC04_ChairMarkerPlayer Auto
|
|
ObjectReference Property MQ09_TaranorScene_LinkMarkerREF Auto
|
|
ObjectReference Property MQ09_SC06_SilverPlateRef Auto
|
|
ObjectReference Property MQ09_SC06_SilverPlateListenREF Auto
|
|
ObjectReference Property MQ09_SC06_TealorTurnAround Auto
|
|
ObjectReference Property MQ08_SoultrainDoorREF Auto
|
|
ObjectReference Property MQ09_SC1_JesparTravelToREF Auto
|
|
ObjectReference Property MQ09_SC04_SamaelStunplayer Auto
|
|
ObjectReference Property _00E_NPCDumpMarker Auto
|
|
|
|
Quest Property MQ10a Auto
|
|
|
|
ImagespaceModifier Property _00E_MQ09KnockOutLong Auto
|
|
ImageSpaceModifier Property FadeToBlackHoldImod Auto
|
|
ImageSpaceModifier Property _00E_WakeUp Auto
|
|
ImageSpaceModifier Property MAGShockExpImod Auto
|
|
ImageSpaceModifier Property PoisonDeath Auto
|
|
|
|
Weather Property SkyrimClear Auto
|
|
|
|
GlobalVariable Property Gamehour Auto
|
|
GlobalVariable Property Timescale Auto
|
|
|
|
SoundCategory Property AudioCategoryAMB Auto
|
|
SoundCategory Property AudioCategoryAMBr Auto
|
|
|
|
Scene Property MQ09_D1_SceneIsle Auto
|
|
Scene Property MQ09_D4_TaranorScene Auto
|
|
Scene Property MQ09_D5_RepeatForceGreetScene Auto
|
|
Scene Property MQ09_D6_Scene Auto
|
|
|
|
MiscObject Property _00E_MQ09_Silverplate Auto
|
|
|
|
Message Property _00E_MQ09_MQ10a_Broken_Message Auto |