925 lines
28 KiB
Plaintext
925 lines
28 KiB
Plaintext
Scriptname _00E_MQ11c_Functions extends Quest
|
|
|
|
import Utility
|
|
Import Math
|
|
|
|
int function _GetScriptVersion() Global
|
|
return 1
|
|
endFunction
|
|
|
|
;=====================================================================================
|
|
; STATES
|
|
;=====================================================================================
|
|
|
|
State DefaultState
|
|
|
|
;Do Nothing
|
|
|
|
EndState
|
|
|
|
|
|
State DogMinigame
|
|
|
|
Event OnBeginState()
|
|
|
|
Game.RequestAutoSave()
|
|
MQ11c_IAmInTheWayDogREF.Disable()
|
|
_00E_MQ11c_DogMinigameMessagebox.Show()
|
|
RyneusDogA.SetActorValue("Speedmult", (PlayerREF.GetActorValue("SpeedMult") + 50.0))
|
|
RegisterForSingleUpdate(1.5)
|
|
|
|
EndEvent
|
|
|
|
Event OnUpdate()
|
|
|
|
if GetCurrentStageID() >= 110 && GetCurrentStageID() < 130
|
|
|
|
if (PlayerREF.GetDistance(RyneusDogA) >= DogMinigameWarningDistance) && (PlayerREF.GetDistance(RyneusDogA) < DogMinigameLosingDistance)
|
|
if (Utility.RandomFloat(0, 1) <= 0.5)
|
|
_00E_MQ11c_sThorusWarning.Show()
|
|
EndIf
|
|
RegisterForSingleUpdate(1)
|
|
ElseIf (PlayerREF.GetDistance(RyneusDogA) >= DogMinigameLosingDistance)
|
|
RyneusDogA.SetActorValue("Speedmult", (PlayerREF.GetActorValue("SpeedMult") + 150.0))
|
|
RegisterForSingleLOSLost(PlayerREF, RyneusDogA)
|
|
;Game.QuitToMainMenu()
|
|
Else
|
|
RegisterForSingleUpdate(1.5)
|
|
EndIf
|
|
|
|
EndIf
|
|
|
|
EndEvent
|
|
|
|
Event OnLostLOS(Actor akViewer, ObjectReference akTarget)
|
|
|
|
if akViewer == PlayerREF && akTarget == RyneusDogA
|
|
FailedDogMinigame()
|
|
endif
|
|
|
|
EndEvent
|
|
EndState
|
|
|
|
|
|
;=====================================================================================
|
|
; FUNCTIONS
|
|
;=====================================================================================
|
|
|
|
;------------------------------------------Miscellaneous------------------------------------
|
|
|
|
Function UnlockKetaronHouseDoor()
|
|
SC1_KetaronHouseDoor.Lock(False)
|
|
EndFunction
|
|
|
|
Function StartEscortScene()
|
|
MQ11c_SC1_KeshanEscortsPlayer.ForceStart()
|
|
EndFunction
|
|
|
|
Function MovePlayerInFrontOfHouse()
|
|
PlayerREF.MoveTo(SC1_PlayerMoveToMarker)
|
|
SC1_KetaronHouseDoor.Lock(True)
|
|
TimescaleDefault = Timescale.GetValue()
|
|
EndFunction
|
|
|
|
|
|
Function RemoveLetter()
|
|
PlayerREF.RemoveItem(_00E_MQ11c_RyneusDiscardLetter)
|
|
Wait(3)
|
|
PlayerREF.MoveTo(MQ11c_D0_PlayerSilberhainEntrymarker)
|
|
EndFunction
|
|
|
|
Function AddSilence()
|
|
|
|
_00E_SilenceTransitionLowPriority.Add()
|
|
|
|
EndFunction
|
|
|
|
Function RemoveSilences()
|
|
|
|
_00E_PlayerFunctions.GetSoundControl().RemoveSilence()
|
|
|
|
EndFunction
|
|
|
|
Function PrepareForLockingGate()
|
|
Game.DisablePlayerControls()
|
|
|
|
MQ11c_LeverREF.BlockActivation(False)
|
|
MQ11c_SilvergroveGateREF.BlockActivation(False)
|
|
|
|
; Move the player to the warden if the player is too far away.
|
|
; Move the warden into his proper position if he gets stuck on the way.
|
|
; If we're going to move the player, do this with fade-in/fade-out.
|
|
|
|
Bool bPlayerTooFar = False
|
|
If PlayerREF.GetDistance(MQ11c_D4_PlayerFailsafeMarker) > 400.0 || MQ11c_PlayerInSilvergroveRadius.GetValue() == 0
|
|
bPlayerTooFar = True
|
|
EndIf
|
|
|
|
If bPlayerTooFar
|
|
FadeToBlackImod.Apply()
|
|
Wait(1)
|
|
EndIf
|
|
|
|
If MQ11c_SilvergroveGateWardenREF.GetDistance(MQ11c_D4_GuardWaitMarker) >= 128.0
|
|
MQ11c_SilvergroveGateWardenREF.Disable()
|
|
MQ11c_SilvergroveGateWardenREF.MoveTo(MQ11c_D4_GuardWaitMarker)
|
|
MQ11c_SilvergroveGateWardenREF.Enable()
|
|
EndIf
|
|
|
|
If bPlayerTooFar
|
|
FadeToBlackHoldImod.Apply()
|
|
FadeToBlackImod.Remove()
|
|
PlayerREF.MoveTo(MQ11c_D4_PlayerFailsafeMarker)
|
|
Wait(1)
|
|
FadeToBlackBackImod.Apply()
|
|
FadeToBlackHoldImod.Remove()
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
Function LockGateFailsave()
|
|
MQ11c_LeverREF.BlockActivation(True)
|
|
MQ11c_SilvergroveGateREF.SetOpen(False)
|
|
MQ11c_SilvergroveGateREF.Lock(True)
|
|
MQ11c_SilvergroveGateREF.BlockActivation(True)
|
|
EndFunction
|
|
|
|
Function StartSC03()
|
|
|
|
SympathyRyneus.SetValueInt(0)
|
|
MQ11c_SilvergroveGateREF.SetOpen(True)
|
|
MQ11c_SilvergroveGateREF.BlockActivation(True)
|
|
|
|
MQ11c_SC3_WardenClosesGate.ForceStart()
|
|
|
|
EndFunction
|
|
|
|
Function RemoveTeddy()
|
|
|
|
PlayerREF.RemoveItem(_00E_MQ11c_RyneusTeddy, 1)
|
|
|
|
EndFunction
|
|
|
|
|
|
;----------------------------------Sphere minigame----------------------------------------------------
|
|
|
|
Function MoveRyneusAndFatherToStart()
|
|
Ryneus.GetReference().MoveTo(SC5_RyneusMoveMarker)
|
|
Alias_Ulbar.GetReference().MoveTo(SC5_FatherMoveMarker)
|
|
EndFunction
|
|
|
|
Function RyneusInitiateMinigame()
|
|
|
|
MQ11c_SC6_RyneusStartSphere.ForceStart()
|
|
|
|
EndFunction
|
|
|
|
Function ActivateSphere()
|
|
SC6_Sphere.Activate(SC6_SphereButton)
|
|
EndFunction
|
|
|
|
Function GiveEPForHits()
|
|
|
|
int RewardEPNormalHits = (_00E_MQ11c_Sphere_HitsLanded.GetValueInt()*30)
|
|
int RewardEPEOTSHits = (_00E_MQ11c_Sphere_HitsLandedEOTS.GetValueInt()*10)
|
|
_00E_EPHandler.GiveEP(RewardEPNormalHits+RewardEPEOTSHits)
|
|
|
|
EndFunction
|
|
|
|
;------------------------------------------Stealth minigame------------------------------------
|
|
|
|
Function StartStealthMinigame()
|
|
_00E_QuestshaderNew.Play(MQ11c_ScrollChest)
|
|
_00E_MQ11c_StealthMinigameMessagebox.Show()
|
|
_00E_MQ11c_StealthGame_Running.SetValue(1)
|
|
GuardsHouseDoor.SetLockLevel(255)
|
|
GuardsHouseDoor.Lock(True)
|
|
Guard01 = DalGeyssGuard01.GetActorReference()
|
|
Guard02 = DalGeyssGuard02.GetActorReference()
|
|
Guard03 = DalGeyssGuard03.GetActorReference()
|
|
Guard01.SetNotShowOnStealthMeter(True)
|
|
Guard02.SetNotShowOnStealthMeter(True)
|
|
Guard03.SetNotShowOnStealthMeter(True)
|
|
RegisterForSingleUpdate(7)
|
|
if !PlayerREF.IsSneaking()
|
|
PlayerREF.StartSneaking()
|
|
endif
|
|
Game.RequestAutoSave()
|
|
RegisterForLOS(Guard01, PlayerREF)
|
|
RegisterForLOS(Guard02, PlayerREF)
|
|
RegisterForLOS(Guard03, PlayerREF)
|
|
EndFunction
|
|
|
|
Function StopStealthMinigame()
|
|
|
|
Guard01.UnregisterForLOS(Guard01, PlayerREF)
|
|
Guard02.UnregisterForLOS(Guard02, PlayerREF)
|
|
Guard03.UnregisterForLOS(Guard03, PlayerREF)
|
|
Guard01.MoveTo(GuardsMoveToMarker)
|
|
Guard02.MoveTo(GuardsMoveToMarker)
|
|
Guard03.MoveTo(GuardsMoveToMarker)
|
|
UnregisterForUpdate()
|
|
Guard01.MoveTo(GuardsMoveToMarker)
|
|
DalGeyssGuard01.GetActorReference().EvaluatePackage()
|
|
DalGeyssGuard02.GetActorReference().EvaluatePackage()
|
|
DalGeyssGuard03.GetActorReference().EvaluatePackage()
|
|
_00E_MQ11c_StealthGame_Running.SetValue(0)
|
|
|
|
EndFunction
|
|
|
|
;------------------------------------------Dog minigame------------------------------------
|
|
|
|
Function StartDogChaseScene()
|
|
RyneusDog.GetActorReference().SetOutfit(_00E_MQ11c_RyneusDogToyOutfit)
|
|
NPCDogBark.Play(RyneusDog.GetReference())
|
|
MQ11c_SC4_DogStealsPuppet.Start()
|
|
EndFunction
|
|
|
|
Function SetUpDogMinigame()
|
|
RyneusDog.GetReference().MoveTo(SC4_DogChaseStartMarker)
|
|
Ryneus.GetActorReference().EvaluatePackage()
|
|
EndFunction
|
|
|
|
Function StartDogMinigame()
|
|
RyneusDogA = RyneusDog.GetActorReference()
|
|
RyneusDogA.EvaluatePackage()
|
|
GoToState("DogMinigame")
|
|
EndFunction
|
|
|
|
Function FailedDogMinigame()
|
|
_00E_MQ11c_sThorusGone.Show()
|
|
bDogMinigameFailed = true
|
|
UnregisterForUpdate()
|
|
UnregisterForLOS(PlayerREF, RyneusDogA)
|
|
SetObjectiveFailed(40)
|
|
SetObjectiveDisplayed(43)
|
|
RyneusDogA.MoveTo(MQ11c_DogChaseMarker027)
|
|
SetCurrentStageID(120)
|
|
EndFunction
|
|
|
|
Function EndDogMinigame()
|
|
_00E_NPCDogIdleWhineM.Play(RyneusDogA)
|
|
MQ11c_IAmInTheWayDogREF.Enable()
|
|
UnregisterForUpdate()
|
|
if bDogMinigameFailed == false
|
|
SetObjectiveCompleted(40)
|
|
endif
|
|
GoToState("DefaultState")
|
|
EndFunction
|
|
|
|
;---------------------------------------Butterfly minigame----------------------------------
|
|
Function SetUpMinigame()
|
|
PlayerRef.AddSpell(_00E_MQ11c_ChaosohrSpell)
|
|
PlayerRef.AddItem(_00E_MQ11cSchmetterlingsglas, 15)
|
|
PlaceCritter(_00E_MQ11_CritterSpawnmarkerList)
|
|
_00E_MQ11c_CrittersoundCategoryDontUse.Mute()
|
|
MQ11c.SetObjectiveDisplayed(45)
|
|
EndFunction
|
|
|
|
Function PlaceCritter(Formlist _00E_MQ11_CritterSpawnmarkerList)
|
|
Int iIndex = _00E_MQ11_CritterSpawnmarkerList.GetSize()
|
|
|
|
While iIndex
|
|
iIndex -= 1
|
|
ObjectReference kMarker = _00E_MQ11_CritterSpawnmarkerList.GetAt(IIndex) as ObjectReference
|
|
kMarker.PlaceAtMe(_00E_MQ11_critterSpawnInsects_Single)
|
|
endwhile
|
|
|
|
EndFunction
|
|
|
|
Function GiveEPForButterflies()
|
|
|
|
int RewardEPButterfly = PlayerREF.GetItemCount(_00E_MQ11cSchmetterling)
|
|
_00E_EPHandler.GiveEP(RewardEPButterfly*50)
|
|
|
|
if PlayerREF.GetItemCount(_00E_MQ11cSchmetterling) > 7
|
|
|
|
int iSympathyCount = (RewardEPButterfly - 7)*2
|
|
|
|
if iSympathyCount > 10
|
|
iSympathyCount = 10
|
|
endif
|
|
|
|
_00E_PlayerFunctions.GetSympathyControl().ModSympathyNG(Ryneus.GetActorReference(), iSympathyCount)
|
|
|
|
If PlayerREF.GetItemCount(_00E_MQ11cSchmetterling) >= 15
|
|
Steam.UnlockAchievement("END_BUTTERFLIES_01")
|
|
EndIf
|
|
|
|
EndIf
|
|
|
|
PlayerREF.RemoveItem(_00E_MQ11cSchmetterling, 15)
|
|
PlayerREF.RemoveItem(_00E_MQ11cSchmetterlingsglas, 15)
|
|
|
|
AudioCategoryMuteSubmerged.UnMute()
|
|
AudioCategoryAMB.UnMute()
|
|
AudioCategoryAMBr.UnMute()
|
|
AudioCategoryAMB2x.UnMute()
|
|
AudioCategoryPausedDuringMenuFade.UnMute()
|
|
|
|
EndFunction
|
|
|
|
Function FadeToBlackAndBack()
|
|
|
|
PlayerREF.RemoveSpell(_00E_MQ11c_ChaosohrSpell)
|
|
Game.DisablePlayerControls()
|
|
FadeToBlackImod.Apply()
|
|
Wait(2.8)
|
|
FadeToBlackImod.PopTo(FadeToBlackHoldImod)
|
|
Ryneus.GetReference().MoveTo(MQ11c_D10_RyneusSitLedgeMarker)
|
|
Wait(3)
|
|
FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
|
|
Ryneus.GetActorReference().EvaluatePackage()
|
|
SC7_RyneusButterflyHouseLinker.Disable()
|
|
Game.EnablePlayerControls()
|
|
|
|
EndFunction
|
|
|
|
;--------------------------------------------OORBAYA FIGHT----------------------------------------------------
|
|
|
|
Function MoveRyneusToCaveEntrance()
|
|
Ryneus.GetReference().MoveTo(MQ11c_D11_RyneusCaveEntrance)
|
|
|
|
if (PlayerREF.GetActorBase().GetSex() == 0)
|
|
MQ11c_SC10_PaintingMale.Enable()
|
|
Else ;If (PlayerREF.GetActorBase().GetSex() == 1)
|
|
MQ11c_SC10_PaintingFemale.Enable()
|
|
EndIf
|
|
EndFunction
|
|
|
|
Function DebugGetIntoPosition()
|
|
|
|
AudioCategoryMuteSubmerged.SetVolume(0.3)
|
|
|
|
EndFunction
|
|
|
|
|
|
Function PrepareTransformScene()
|
|
|
|
Actor RyneusActor = Ryneus.GetActorReference()
|
|
MQ11c_SC10_BarrierREF.MoveTo(MQ11c_SC10_BarrierMarker)
|
|
MQ11c_SC10_BarrierREF.PlayAnimation("playanim02")
|
|
MQ11c_SC10_BarrierColRef.Enable()
|
|
_00E_MQ11c_SpecialDialogueSad.Remove()
|
|
int WindLoop = AMBrWindMountainHeavyLP.Play(RyneusActor)
|
|
_00E_MQ11c_SpecialDialogueSad.Remove()
|
|
Sound.SetInstanceVolume(WindLoop, 1.5)
|
|
_00E_FXCameraAttachJUngleLeavesWindyUpEffect.Play(PlayerREF)
|
|
MQ11c_SC10_RyneusTransforms.ForceStart()
|
|
|
|
EndFunction
|
|
|
|
Function RyneusTransforms()
|
|
|
|
Actor RyneusActor = Ryneus.GetActorReference()
|
|
Debug.SendAnimationEvent(RyneusActor, "IdleReturnToDefault")
|
|
_00E_PlayerFunctions.GetSoundControl().RemoveSilence()
|
|
_00E_Music_Combat_Epic_Transition.Add()
|
|
Debug.SendAnimationEvent(RyneusActor, "IdleDA02BoethiahPostEnter")
|
|
Utility.Wait(1)
|
|
RyneusActor.Say(MQ11c_D12_RyneusTransformTopic)
|
|
EnchPurpleFXShader.Play(RyneusActor)
|
|
Wait(2)
|
|
_00E_MQ11c_RyneusTransformSoundM.Play(RyneusActor)
|
|
FXCameraAttachTurbulentFogEffect.Play(PlayerREF)
|
|
_00E_MQ11c_RyneusTransformsIMOD.Apply()
|
|
_00E_MQ11c_FXRyneusParticleAttach.Play(RyneusActor)
|
|
Wait(3)
|
|
_00E_MQ11c_RyneusChestVFX.Play(RyneusActor)
|
|
Utility.Wait(2)
|
|
RyneusActor.Say(MQ11c_D12_RyneusTransformTopic02)
|
|
Wait(2)
|
|
|
|
if (_00E_MQ11c_RyneusPeacefulSolution.GetValueInt() == 0)
|
|
AtronachUnsummonDeathFXS.Play(RyneusActor)
|
|
Wait(3.6)
|
|
Game.ShakeCamera(afStrength = 1)
|
|
RyneusActor.SetAlpha(0)
|
|
RyneusActor.PlaceAtMe(_00E_MQ11c_RyneusTransformExplosion, 1)
|
|
EnchPurpleFXShader.Stop(RyneusActor)
|
|
_00E_MQ11c_FXRyneusParticleAttach.Stop(RyneusActor)
|
|
_00E_MQ11c_RyneusChestVFX.Stop(RyneusActor)
|
|
RyneusActor.KillEssential(RyneusActor)
|
|
RyneusActor.Disable()
|
|
MQ11c_RyneusSoundBoxREF.RyneusDead = true ; disable coughing
|
|
RyneusOorbaya = RyneusActor.PlaceActorAtMe(_30E_MQ11c_RyneusOorbaya, 1)
|
|
ElseIf (_00E_MQ11c_RyneusPeacefulSolution.GetValueInt() == 1)
|
|
Wait(3.6)
|
|
Game.ShakeCamera(afStrength = 1)
|
|
MQ11c_SC10_RyneusTransformOriginMarker.PushActorAway(RyneusActor, 4.0)
|
|
RyneusActor.KillEssential(RyneusActor)
|
|
EnchPurpleFXShader.Stop(RyneusActor)
|
|
_00E_MQ11c_FXRyneusParticleAttach.Stop(RyneusActor)
|
|
_00E_MQ11c_RyneusChestVFX.Stop(RyneusActor)
|
|
RyneusActor.Disable()
|
|
RyneusActor.PlaceAtMe(_00E_MQ11c_RyneusTransformExplosion, 1)
|
|
RyneusOorbaya = RyneusActor.PlaceActorAtMe(_30E_MQ11c_RyneusOorbayaInkarnation, 1)
|
|
EndIf
|
|
|
|
RyneusOorbaya.SetAlpha(0.0)
|
|
RyneusOorbaya.MoveTo(MQ11c_SC10_OorbayaSpawnMarker)
|
|
RyneusOorbaya.SetAlpha(0.90)
|
|
|
|
Debug.SendAnimationEvent(PlayerREF, "StaggerPlayer")
|
|
Wait(0.5)
|
|
Debug.SendAnimationEvent(RyneusOorbaya, "summonStart")
|
|
Wait(1.8)
|
|
_00E_MQ11c_RyneusTransformsIMOD.PopTo(_00E_MQ11c_RyneusTransformsIMODLoop)
|
|
AudioCategoryMuteSubmerged.SetVolume(0.5)
|
|
FXCameraAttachTurbulentFogEffect.Stop(PlayerREF)
|
|
MQ11c.SetObjectiveDisplayed(100)
|
|
Wait(1)
|
|
Debug.SendAnimationEvent(RyneusOorbaya, "IdleForceDefaultState")
|
|
Debug.SendAnimationEvent(RyneusOorbaya, "returnToDefault")
|
|
RyneusOorbaya.StartCombat(PlayerREF)
|
|
|
|
EndFunction
|
|
|
|
Function StartMusic()
|
|
|
|
_00E_PlayerFunctions.GetSoundControl().RemoveSilence()
|
|
_00E_MQ11c_SpecialDialogueSad.Add()
|
|
|
|
EndFunction
|
|
|
|
Function StartTalkingScene()
|
|
MQ11c_SC9_RyneusTalks.Start()
|
|
EndFunction
|
|
|
|
;======================================EPILOGUE======================================
|
|
|
|
Function CrashDownEverything()
|
|
QSTGreybeardRumble.Play(PlayerREF)
|
|
Game.ShakeCamera(afstrength = 0.2)
|
|
Wait(2)
|
|
QSTGreybeardRumble.Play(PlayerREF)
|
|
Game.ShakeCamera(afstrength = 0.5)
|
|
Wait(2.3)
|
|
QSTTG09NocturnalFloorRumble.Play(PlayerREF)
|
|
Game.ShakeCamera(afstrength = 0.5)
|
|
PlayerREF.SetGhost(True)
|
|
MQ11c_SC10_RockStartMarker01.Activate(MQ11c_SC10_RockStartMarker01)
|
|
_00E_MQ11c_RyneusTransformSoundM.Play(PlayerREF)
|
|
MQ11c_SC10_RockStartMarker02.Activate(MQ11c_SC10_RockStartMarker02)
|
|
Wait(2)
|
|
_00E_MQ11c_DreamCollapseIMOD.Apply()
|
|
_00E_AMBHorrorVoicesNoLoopM.Play(PlayerREF)
|
|
Wait(1)
|
|
QSTDA10Rumble.Play(PlayerREF)
|
|
Wait(1.5)
|
|
QSTDA10Rumble.Play(PlayerREF)
|
|
Wait(1)
|
|
_00E_AMBHorrorVoicesNoLoopM.Play(PlayerREF)
|
|
Wait(2.5)
|
|
QSTDA10Rumble.Play(PlayerREF)
|
|
Wait(2)
|
|
QSTTG09NocturnalFloorRumble.Play(PlayerREF)
|
|
Wait(2)
|
|
_00E_MQ11c_DreamCollapseIMOD.PopTo(FadeToWhiteHoldImod)
|
|
Wait(2)
|
|
SetUpRealSilvergrove()
|
|
EndFunction
|
|
|
|
Function SetUpRealSilvergrove()
|
|
|
|
if (_00E_MQ11c_RyneusPeacefulSolution.GetValueInt() == 1)
|
|
MQ11c.SetObjectiveDisplayed(105)
|
|
Steam.UnlockAchievement("END_RYNEUS_SILVERGROVE_01")
|
|
Else
|
|
MQ11c.SetObjectiveDisplayed(110)
|
|
EndIf
|
|
|
|
If MQ11c_FatherREF.IsEnabled()
|
|
MQ11c_FatherREF.Disable()
|
|
EndIf
|
|
|
|
RyneusDog.GetReference().Disable()
|
|
_00E_TimeControl.SkipTimeToHour(13.3)
|
|
_00E_FXCameraAttachJUngleLeavesWindyUpEffect.Stop(PlayerREF)
|
|
MQ11_D12_SilberhainDeadLinker.Disable()
|
|
MQ11cSilberhainDestroyLinker.Disable()
|
|
_00E_MQ11c_SilvergroveMainMusic.SetValue(0)
|
|
|
|
; Prepare the gate to Powder Desert for the player
|
|
MQ11c_LeverREF.BlockActivation(False)
|
|
MQ11c_SilvergroveGateREF.Lock(False)
|
|
MQ11c_SilvergroveGateREF.BlockActivation(False)
|
|
|
|
_00E_MQ11c_SilberhainDeadWeather.SetValueInt(0)
|
|
SetSilberhainDeadWeatherFX(False)
|
|
PlayerREF.MoveTo(MQ11c_D12_SilberhainPlayerMarker)
|
|
PlayerREF.RemoveItem(_00E_MQ11c_SphereBow)
|
|
int SphereArrowCount = PlayerREF.GetItemCount(_00E_MQ11c_SphereArrow)
|
|
If SphereArrowCount > 0
|
|
PlayerREF.RemoveItem(_00E_MQ11c_SphereArrow, SphereArrowCount)
|
|
EndIf
|
|
_00E_SilenceAbruptHighPriority.Add()
|
|
FadeToWhiteHoldImod.PopTo(FadeToWhiteBackImod)
|
|
(Alias_Player as _00E_MQ11c_PlayerAliasScript).UpdateWeatherTrackingState()
|
|
PlayerREF.SetGhost(false)
|
|
|
|
EndFunction
|
|
|
|
Function ToggleHorseObjective()
|
|
if (_00E_MQ11c_RyneusPeacefulSolution.GetValueInt() == 1)
|
|
Mq11c.SetObjectiveCompleted(105)
|
|
Mq11c.SetObjectiveDisplayed(115)
|
|
EndIf
|
|
EndFunction
|
|
|
|
Function LaunchInvisibleRyneus()
|
|
|
|
if (_00E_MQ11c_RyneusPeacefulSolution.GetValueInt() == 1)
|
|
RyneusRealInvisible.GetReference().Activate(PlayerREF)
|
|
EndIf
|
|
EndFunction
|
|
|
|
Function AddDyingMusic()
|
|
_00E_MQ11c_SpecialDialogueRyneusDeath.Add()
|
|
EndFunction
|
|
|
|
Function AddAmulet()
|
|
|
|
PlayerREF.AddItem(_00E_MQ11_BlackStone_Ryneus, 1)
|
|
SetObjectiveCompleted(110)
|
|
SetObjectiveCompleted(115)
|
|
SetObjectiveCompleted(120)
|
|
SetObjectiveCompleted(105)
|
|
Timescale.SetValue(10)
|
|
MQ11cBlockMarker.disable()
|
|
_00E_TeleportGlobal.SetValue(0)
|
|
SetCurrentStageID(295)
|
|
PostTransformCleanup()
|
|
|
|
EndFunction
|
|
|
|
Function BuryRyneus()
|
|
|
|
If (_00E_MQ11c_RyneusBuried.GetValueInt() == 1)
|
|
If (PlayerREF.GetItemCount(_00E_MQ11_BlackStone_Ryneus) == 0)
|
|
PlayerREF.AddItem(_00E_MQ11_BlackStone_Ryneus, 1)
|
|
SetObjectiveCompleted(110)
|
|
SetObjectiveCompleted(115)
|
|
SetObjectiveCompleted(120)
|
|
SetObjectiveCompleted(105)
|
|
Timescale.SetValue(10)
|
|
MQ11cBlockMarker.disable()
|
|
_00E_TeleportGlobal.SetValue(0)
|
|
SetCurrentStageID(295)
|
|
EndIf
|
|
|
|
MQ11c_D13_RyneusBurialMarker.Disable()
|
|
_00E_FadeToBlackControl FadeToBlackControl = _00E_PlayerFunctions.GetFadeToBlackControl()
|
|
FadeToBlackControl.FadeToBlack()
|
|
PlayerREF.MoveTo(MQ11c_D13_RyneusBurialPlayerMarker)
|
|
MQ11c_RyneusRefReal.Disable()
|
|
FadeToBlackControl.FadeToBlackBack()
|
|
|
|
Wait(3)
|
|
PostTransformCleanup()
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
Function SetSilberhainDeadWeatherFX(Bool bGradualTransition)
|
|
|
|
If _00E_MQ11c_SilberhainDeadWeather.GetValueInt() > 0
|
|
Return
|
|
EndIf
|
|
_00E_MQ11c_SilberhainDeadWeather.SetValueInt(1)
|
|
|
|
If bGradualTransition
|
|
_00E_MQ11c_SilberhainRealWeather.SetActive(True)
|
|
Else
|
|
_00E_MQ11c_SilberhainRealWeather.ForceActive(True)
|
|
EndIf
|
|
AudioCategoryAMBr.Mute()
|
|
AudioCategoryAMB.Mute()
|
|
AudioCategoryAMB2x.SetVolume(0.5)
|
|
|
|
If bGradualTransition
|
|
_00E_MQ11c_RyneusTransformsIMODTo.Apply()
|
|
_00E_MQ11c_RyneusTransformsIMODLoop.Remove()
|
|
_00E_MQ11c_RyneusTransformsIMODFrom.Remove()
|
|
Wait(4.9)
|
|
If _00E_MQ11c_SilberhainDeadWeather.GetValueInt() == 1
|
|
_00E_MQ11c_RyneusTransformsIMODTo.PopTo(_00E_MQ11c_RyneusTransformsIMODLoop)
|
|
Else
|
|
_00E_MQ11c_RyneusTransformsIMODTo.Remove()
|
|
EndIf
|
|
Else
|
|
_00E_MQ11c_RyneusTransformsIMODLoop.Apply()
|
|
_00E_MQ11c_RyneusTransformsIMODTo.Remove()
|
|
_00E_MQ11c_RyneusTransformsIMODFrom.Remove()
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
Function ResetSilberhainDeadWeatherFX(Bool bGradualTransition)
|
|
|
|
If _00E_MQ11c_SilberhainDeadWeather.GetValueInt() <= 0
|
|
Return
|
|
EndIf
|
|
_00E_MQ11c_SilberhainDeadWeather.SetValueInt(0)
|
|
|
|
Weather.ReleaseOverride()
|
|
AudioCategoryAMBr.UnMute()
|
|
AudioCategoryAMB.UnMute()
|
|
AudioCategoryAMB2x.SetVolume(1)
|
|
|
|
If bGradualTransition
|
|
PostTransformCleanup()
|
|
|
|
_00E_MQ11c_RyneusTransformsIMODLoop.PopTo(_00E_MQ11c_RyneusTransformsIMODFrom)
|
|
_00E_MQ11c_RyneusTransformsIMODTo.Remove()
|
|
Wait(4.9)
|
|
_00E_MQ11c_RyneusTransformsIMODFrom.Remove()
|
|
Else
|
|
_00E_MQ11c_RyneusTransformsIMODLoop.Remove()
|
|
_00E_MQ11c_RyneusTransformsIMODTo.Remove()
|
|
_00E_MQ11c_RyneusTransformsIMODFrom.Remove()
|
|
|
|
PostTransformCleanup()
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
Bool bPostTransformCleanupDone = False
|
|
|
|
Function PostTransformCleanup()
|
|
If bPostTransformCleanupDone
|
|
Return
|
|
EndIf
|
|
|
|
bPostTransformCleanupDone = True
|
|
|
|
PlayerREF.SetGhost(false)
|
|
|
|
MUSTavernSILENCE.Remove()
|
|
_00E_MQ11c_SilberhainRealInterior.Remove()
|
|
_00E_PlayerFunctions.GetSoundControl().RemoveSilence()
|
|
_00E_FXCameraAttachJUngleLeavesWindyUpEffect.Stop(PlayerREF)
|
|
_00E_MQ11c_DreamCollapseIMOD.Remove()
|
|
FadeToWhiteHoldImod.Remove()
|
|
FadeToBlackHoldImod.Remove()
|
|
FadeToBlackBackImod.Remove()
|
|
_00E_MQ11c_RyneusTransformsIMOD.Remove()
|
|
EndFunction
|
|
|
|
Function ResetMusic()
|
|
|
|
_00E_PlayerFunctions.GetSoundControl().RemoveSilence()
|
|
|
|
EndFunction
|
|
|
|
Function StopCoughingSound()
|
|
|
|
If MQ11c_RyneusSoundBoxREF == None
|
|
MQ11c_RyneusSoundBoxREF = (Game.GetFormFromFile(0x00096D53, "Skyrim.esm") as ObjectReference) as _00E_MQ11c_RyneusSoundBoxSc
|
|
EndIf
|
|
|
|
MQ11c_RyneusSoundBoxREF.StopCoughing()
|
|
|
|
EndFunction
|
|
|
|
Function FlagRyneusAsDead()
|
|
|
|
If MQ11c_RyneusSoundBoxREF == None
|
|
MQ11c_RyneusSoundBoxREF = (Game.GetFormFromFile(0x00096D53, "Skyrim.esm") as ObjectReference) as _00E_MQ11c_RyneusSoundBoxSc
|
|
EndIf
|
|
|
|
MQ11c_RyneusSoundBoxREF.FlagRyneusAsDead()
|
|
|
|
EndFunction
|
|
|
|
Function MoveRyneusToTavern()
|
|
|
|
Ryneus.GetReference().MoveTo(MQ11cPortMarker)
|
|
|
|
EndFunction
|
|
|
|
Function SilvergroveTimeFailsave()
|
|
|
|
if Timescale.GetValue() > 0.1
|
|
Timescale.SetValue(0.1)
|
|
EndIf
|
|
|
|
if GameHour.GetValue() != 6.48
|
|
; Minor correction of the time. Normally, _00E_MQ11c_RyneusEntryHeadache must take care about proper jump to 6.48 for the first time in MQ11c.
|
|
GameHour.SetValue(6.48)
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
;=====================================================================================
|
|
; EVENTS
|
|
;=====================================================================================
|
|
|
|
Event OnGainLOS(Actor akViewer, ObjectReference akTarget)
|
|
;added a global as condition to prevent multiple resets when the player was detected by multiple guards at the same time
|
|
If (((akViewer == Guard01) || (akViewer == Guard02) || (akViewer == Guard03)) && (MQ11c.GetCurrentStageID() < 50) && (_00E_MQ11c_PlayerDetected.GetValueInt() == 0))
|
|
If !PlayerREF.HasMagicEffectWithKeyword(MagicInvisibility)
|
|
_00E_MQ11c_PlayerDetected.SetValueInt(1)
|
|
Self.UpdateCurrentInstanceGlobal(_00E_MQ11c_PlayerDetected)
|
|
UIActivateFailM.Play(PlayerREF)
|
|
_00E_MQ11c_StealthMinigame_PlayerCaught02.Show() ;Debug only
|
|
PlayerREF.MoveTo(DebugPlayerStartMarker)
|
|
If !PlayerREF.IsSneaking()
|
|
PlayerREF.StartSneaking()
|
|
EndIf
|
|
EndIf
|
|
Endif
|
|
|
|
EndEvent
|
|
|
|
Event OnUpdate()
|
|
|
|
If !(PlayerREF.IsSneaking()) && (MQ11c.GetCurrentStageID() < 50) && (PlayerREF.IsInLocation(_00E_MQ11c_KetaronsHouse))
|
|
UIActivateFailM.Play(PlayerREF)
|
|
_00E_MQ11c_StealthMinigame_PlayerCaught.Show()
|
|
PlayerREF.MoveTo(DebugPlayerStartMarker)
|
|
If !PlayerREF.IsSneaking()
|
|
PlayerREF.StartSneaking()
|
|
EndIf
|
|
RegisterForSingleUpdate(7)
|
|
Else
|
|
RegisterForSingleUpdate(7)
|
|
EndIf
|
|
|
|
EndEvent
|
|
|
|
;=====================================================================================
|
|
; PROPERTIES
|
|
;=====================================================================================
|
|
|
|
bool bDogMinigameFailed = false
|
|
float Property DogMinigameWarningDistance Auto
|
|
float Property DogMinigameLosingDistance Auto
|
|
|
|
Scene Property MQ11c_SC1_KeshanEscortsPlayer Auto
|
|
Scene Property MQ11c_SC3_WardenClosesGate Auto
|
|
Scene Property MQ11c_SC4_DogStealsPuppet Auto
|
|
Scene Property MQ11c_SC6_RyneusStartSphere Auto
|
|
Scene Property MQ11c_SC9_RyneusTalks Auto
|
|
Scene Property MQ11c_SC10_RyneusTransforms Auto
|
|
|
|
_00E_MQ11c_RyneusSoundBoxSc Property MQ11c_RyneusSoundBoxREF Auto
|
|
|
|
ObjectReference Property SC1_PlayerMoveToMarker Auto
|
|
ObjectReference Property SC1_KetaronHouseDoor Auto
|
|
ObjectReference Property GuardsMoveToMarker Auto
|
|
ObjectReference Property GuardsHouseDoor Auto
|
|
ObjectReference Property DebugPlayerStartMarker Auto
|
|
ObjectReference Property SC4_DogChaseStartMarker Auto
|
|
ObjectReference Property SC5_FatherMoveMarker Auto
|
|
ObjectReference Property SC5_RyneusMoveMarker Auto
|
|
ObjectReference Property SC6_Sphere Auto
|
|
ObjectReference Property SC6_SphereButton Auto
|
|
ObjectReference Property SC7_RyneusButterflyHouseLinker Auto
|
|
ObjectReference Property MQ11c_SC10_PaintingMale Auto
|
|
ObjectReference Property MQ11c_SC10_PaintingFemale Auto
|
|
ObjectReference Property MQ11c_D10_RyneusSitLedgeMarker Auto
|
|
ObjectReference Property MQ11c_D11_RyneusCaveEntrance Auto
|
|
ObjectReference Property MQ11c_SC10_OorbayaSpawnMarker Auto
|
|
ObjectReference Property MQ11c_SC10_BarrierREF Auto
|
|
ObjectReference Property MQ11c_SC10_BarrierColREF Auto
|
|
ObjectReference Property MQ11c_SC10_BarrierMarker Auto
|
|
ObjectReference Property MQ11c_SC10_RyneusTransformOriginMarker Auto
|
|
ObjectReference Property MQ11c_SC10_RockStartMarker01 Auto
|
|
ObjectReference Property MQ11c_SC10_RockStartMarker02 Auto
|
|
ObjectReference Property MQ11_D12_SilberhainDeadLinker Auto
|
|
ObjectReference Property MQ11cSilberhainDestroyLinker Auto
|
|
ObjectReference Property MQ11c_D12_SilberhainPlayerMarker Auto
|
|
ObjectReference Property MQ11c_D13_RyneusBurialMarker Auto
|
|
ObjectReference Property MQ11c_D13_RyneusBurialPlayerMarker Auto
|
|
ObjectReference Property MQ11c_D0_PlayerSilberhainEntrymarker Auto
|
|
ObjectReference Property MQ11c_ScrollChest Auto
|
|
ObjectReference Property MQ11cPortMarker Auto
|
|
ObjectReference Property MQ11c_SilvergroveGateREF Auto
|
|
ObjectReference Property MQ11c_D4_GuardWaitMarker Auto
|
|
ObjectReference Property MQ11c_D4_PlayerFailsafeMarker Auto
|
|
ObjectReference Property MQ11c_LeverREF Auto
|
|
ObjectReference Property MQ11c_DogChaseMarker027 Auto
|
|
|
|
Weapon Property _00E_MQ11c_SphereBow Auto
|
|
Ammo Property _00E_MQ11c_SphereArrow Auto
|
|
|
|
Activator Property _00E_MQ11_critterSpawnInsects_Single Auto
|
|
|
|
ReferenceAlias Property DalGeyssGuard01 Auto
|
|
ReferenceAlias Property DalGeyssGuard02 Auto
|
|
ReferenceAlias Property DalGeyssGuard03 Auto
|
|
ReferenceAlias Property RyneusDog Auto
|
|
ReferenceAlias Property Ryneus Auto
|
|
ReferenceAlias Property Alias_Ulbar Auto
|
|
ReferenceAlias Property RyneusRealInvisible Auto
|
|
ReferenceAlias Property Alias_Player Auto
|
|
|
|
Quest Property MQ11c Auto
|
|
GlobalVariable Property _00E_MQ11c_StealthGame_Running Auto
|
|
GlobalVariable Property _00E_MQ11c_PlayerDetected Auto
|
|
GlobalVariable Property _00E_MQ11c_Sphere_HitsLanded Auto
|
|
GlobalVariable Property _00E_MQ11c_Sphere_HitsLandedEOTS Auto
|
|
GlobalVariable Property _00E_MQ11c_RyneusPeacefulSolution Auto
|
|
GlobalVariable Property _00E_MQ11c_SilberhainDeadWeather Auto
|
|
GlobalVariable Property _00E_MQ11c_RyneusBuried Auto
|
|
GlobalVariable Property GameHour Auto
|
|
GLobalVariable Property Timescale Auto
|
|
float TimescaleDefault = 10.0
|
|
|
|
SoundCategory Property AudioCategoryMuteSubmerged Auto
|
|
SoundCategory Property AudioCategoryAMB Auto
|
|
SoundCategory Property AudioCategoryAMBr Auto
|
|
SoundCategory Property AudioCategoryAMB2x Auto
|
|
SoundCategory Property AudioCategoryPausedDuringMenuFade Auto
|
|
|
|
Armor Property _00E_MQ11_BlackStone_Ryneus Auto
|
|
|
|
Actor Property PlayerREF Auto
|
|
Actor Property MQ11c_FatherREF Auto
|
|
Actor Property Guard01 Auto
|
|
Actor Property Guard02 Auto
|
|
Actor Property Guard03 Auto
|
|
Actor Property MQ11c_RyneusRefReal Auto
|
|
Actor Property RyneusDogA Auto Hidden
|
|
Actor Property RyneusOorbaya Auto Hidden
|
|
Actor Property MQ11c_SilvergroveGateWardenREF Auto
|
|
Actor Property MQ11c_IAmInTheWayDogREF Auto
|
|
|
|
ActorBase Property _30E_MQ11c_RyneusOorbaya Auto
|
|
ActorBase Property _30E_MQ11c_RyneusOorbayaInkarnation Auto
|
|
|
|
Keyword Property MagicInvisibility Auto
|
|
|
|
Spell Property _00E_MQ11c_ChaosohrSpell Auto
|
|
SoundCategory Property _00E_MQ11c_CrittersoundCategoryDontUse Auto
|
|
Book Property _00E_MQ11c_RyneusDiscardLetter Auto
|
|
|
|
MiscObject Property _00E_MQ11cSchmetterlingsglas Auto
|
|
MiscObject Property _00E_MQ11c_RyneusTeddy Auto
|
|
MiscObject Property _00E_MQ11cSchmetterling Auto
|
|
|
|
Topic Property MQ11c_D12_RyneusTransformTopic Auto
|
|
Topic Property MQ11c_D12_RyneusTransformTopic02 Auto
|
|
|
|
Sound Property NPCDogBark Auto
|
|
Sound Property _00E_NPCDogIdleWhineM Auto
|
|
Sound Property _00E_MQ11c_RyneusTransformSoundM Auto
|
|
Sound Property AMBrWindMountainHeavyLP Auto
|
|
Sound Property QSTGreybeardRumble Auto
|
|
Sound Property QSTTG09NocturnalFloorRumble Auto
|
|
Sound Property QSTDA10Rumble Auto
|
|
Sound Property _00E_AMBHorrorVoicesNoLoopM Auto
|
|
Sound Property UIActivateFailM Auto
|
|
|
|
Location Property _00E_MQ11c_KetaronsHouse Auto
|
|
|
|
Outfit Property _00E_MQ11c_RyneusDogToyOutfit Auto
|
|
|
|
Message Property _00E_MQ11c_StealthMinigameMessagebox Auto
|
|
Message Property _00E_MQ11c_DogMinigameMessagebox Auto
|
|
Message Property _00E_MQ11c_StealthMinigame_PlayerCaught Auto
|
|
Message Property _00E_MQ11c_StealthMinigame_PlayerCaught02 Auto
|
|
Message Property _00E_MQ11c_sThorusWarning Auto
|
|
Message Property _00E_MQ11c_sThorusGone Auto
|
|
|
|
ImageSpaceModifier Property FadeToBlackImod Auto
|
|
ImageSpaceModifier Property FadeToBlackHoldImod Auto
|
|
ImageSpaceModifier Property FadeToBlackBackImod Auto
|
|
ImageSpaceModifier Property _00E_MQ11c_RyneusTransformsIMOD Auto
|
|
ImageSpaceModifier Property _00E_MQ11c_RyneusTransformsIMODLoop Auto
|
|
ImageSpaceModifier Property _00E_MQ11c_RyneusTransformsIMODTo Auto
|
|
ImageSpaceModifier Property _00E_MQ11c_RyneusTransformsIMODFrom Auto
|
|
ImageSpaceModifier Property _00E_MQ11c_DreamCollapseIMOD Auto
|
|
ImageSpaceModifier Property FadeToWhiteHoldImod Auto
|
|
ImageSpaceModifier Property FadeToWhiteBackImod Auto
|
|
ImageSpaceModifier Property _00E_MQ11c_SilberhainRealInterior Auto
|
|
|
|
FormList Property _00E_MQ11_CritterSpawnmarkerList Auto
|
|
|
|
Explosion Property _00E_MQ11c_RyneusTransformExplosion Auto
|
|
|
|
VisualEffect Property FXCameraAttachTurbulentFogEffect Auto
|
|
VisualEffect Property _00E_FXCameraAttachJUngleLeavesWindyUpEffect Auto
|
|
VisualEffect Property _00E_MQ11c_FXRyneusParticleAttach Auto
|
|
VisualEffect Property _00E_MQ11c_RyneusChestVFX Auto
|
|
|
|
EffectShader Property AtronachUnsummonDeathFXS Auto
|
|
EffectShader Property EnchPurpleFXShader Auto
|
|
EffectShader Property _00E_QuestshaderNew Auto
|
|
|
|
Weather Property _00E_MQ11c_SilberhainRealWeather Auto
|
|
|
|
MusicType Property _00E_MQ11c_SpecialDialogueRyneusDeath Auto
|
|
MusicType Property _00E_MQ11c_SpecialDialogueSad Auto
|
|
MusicType Property _00E_Music_Combat_Epic_Transition Auto
|
|
MusicType Property MUSTavernSILENCE Auto
|
|
MusicType Property _00E_SilenceTransitionLowPriority Auto
|
|
MusicType Property _00E_SilenceAbruptHighPriority Auto
|
|
|
|
ObjectReference Property MQ11cBlockMarker Auto
|
|
GlobalVariable Property _00E_TeleportGlobal Auto
|
|
GlobalVariable Property SympathyRyneus Auto
|
|
GlobalVariable Property MQ11c_PlayerInSilvergroveRadius Auto
|
|
GlobalVariable Property _00E_MQ11c_SilvergroveMainMusic Auto
|