Scriptname _00E_NQ26_Questfunctions  extends Quest

Import Utility

Function PortPhatira()

	Phatira.Enable()
	Phatira.SetAlpha(1)
	Phatira.MoveTo(NQ26PortMarker01)
	NQ26_SC2.ForceStart()
	StartNQ26Explosion()

EndFunction

Function StartNQ26Explosion()
	NQ26Explosion.PlayGamebryoAnimation("AnimIdle02")
EndFunction

Function DisableGenerator()
	
	NQ26CoreRef.Enable()
	_00E_QuestFunctions.WaitForReferenceToLoad(NQ26CoreRef)
	NQ26CoreRef.SetMotionType(4) ; Motion_Keyframed = 4: The object will NOT be simulated by Havok (will only move if forced to, through SetPosition() or TranslateTo())
	NQ26CoreRef.MoveToMyEditorLocation()

	NQ26Explosion.PlayGamebryoAnimation("AnimTrans02")
	QSTMG07MagnusStormSaarthalMediumReleaseSD.Play(NQ26Explosion)
	
	if !NQ26_SC2.IsPlaying()
		NQ26_SC2.ForceStart()
	EndIf
	
EndFunction

Function Reactivate()

	Game.ShakeCamera(None,4,4)
	QSTMS06PotemaBanishSD.Play(NQ26Explosion)
	NQ26Explosion.PlayGamebryoAnimation("AnimTrans01")
	Wait(2.9)
	NQ26Explosion.PlayGamebryoAnimation("AnimTrans02", true, 0)
	NQ26Explosion.PlaceAtMe(ExplosionRuneShock01)
	MAGShockExpImod.Apply()
	Game.ShakeCamera(None,5,5)
	PlayerREF.PlayIdle(TG05_KnockOut)
	Game.SetPlayerAIDriven(false)
	Wait(0.5)
	FadeToBlackImod.Apply()
	Wait(2)
	FadeToBlackHoldImod.ApplyCrossFade()
	Wait(4)
	NQ26CoreRef.Disable()
	PlayerREF.MoveTo(NQ26PlayerPortPosition)
	Phatira.MoveTo(NQ26PortPosition)
	PlayerREF.PlayIdle(TG05_KnockOut)
	Wait(4)
	_00E_MQP02_HeadacheAnimated.Apply()
	FadeToBlackHoldImod.Remove()
	NQ26_SC3.ForceStart()
	_00E_Music_Special_Event_Dark.Add()
	
EndFunction

Function SC02Failsave()

	If !NQ26_SC2.IsPlaying()
		NQ26_SC2.ForceStart()
	EndIf

EndFunction

Function Rumble()
	Game.ShakeCamera(None,2,2)
	AMBRumbleShakeGreybeards.Play(PlayerREF)
EndFunction

Function PortPahtira()
	Game.ShakeCamera(None,1.5,10)
	AMBRumbleShakeGreybeards.Play(PlayerREF)
	Levelsystem.TeleportNPC(Phatira, NQ23PortMarker)
	_00E_BlackFadeSleepy.ApplyCrossFade()
	Wait(8)
	Phatira.Disable()
	FadeToBlackHoldImod.Apply()
	Wait(1)
	SetObjectiveCompleted(40)
	SetObjectiveDisplayed(55)
	EnableSwitcher.Enable()
	Wait(4)
	PlayerREF.PlayIdle(TG05_GetUp)
	Wait(1.5)
	AMBRumbleShakeGreybeards.Play(PlayerREF)
	Game.ShakeCamera(None,1,35)
	_00E_MQP02_HeadacheAnimated.Apply()
	_00E_BlackFadeSleepy.Remove()
	FadeToBlackHoldImod.Remove()
	NQ26WaterPlane.TranslateTo(NQ26WaterPlane.GetPositionX(), NQ26WaterPlane.GetPositionY(), NQ26WaterPlane.GetPositionZ() + 2090, 0, 0, 0, 20, 0)
	NQ26Splash.TranslateTo(NQ26Splash.GetPositionX(), NQ26Splash.GetPositionY(), NQ26Splash.GetPositionZ() + 2090, 0, 0, 0, 20, 0)
	Wait(2)
	AMBRumbleShakeGreybeards.Play(PlayerREF)
	Game.EnablePlayerControls()
	Game.SetPlayerAIDriven(False)
	Game.ShowFirstPersonGeometry(true)
	Wait(2)
	Message.ResetHelpMessage("Empty")
	_00E_NQ26_DisplayTextGenerator.ShowAsHelpMessage("Empty", 7, 1, 1)
	NQ26Zenturio.Enable()
	NQ26_SC4.ForceStart()
	YeraiRef.MoveTo(NQ26YeraiPortMarker)
	Phatira.Disable()
EndFunction

Function PahtiraStartCombat()

	_00E_Music_Combat_Epic.Add()
	NQ26Zenturio.SetGhost(0)
	NQ26Zenturio.StartCombat(PlayerREF)
	
EndFunction

Function PathiraRemoveMusic()

	_00E_Music_Combat_Epic.Remove()

EndFunction

Function ClearPlayerAlias()

	Player.Clear()

EndFunction

ReferenceAlias Property Player Auto

Actor Property PlayerREF Auto
Actor Property Phatira Auto
Actor Property YeraiRef Auto
ObjectReference Property NQ26PortMarker01 Auto
Actor Property NQ26Zenturio Auto
Scene Property NQ26_SC2 Auto
Scene Property NQ26_SC3 Auto
Scene Property NQ26_SC4 Auto
ObjectReference Property NQ26Explosion Auto
Sound Property QSTMG07MagnusStormSaarthalMediumReleaseSD Auto
Sound Property QSTMS06PotemaBanishSD Auto
Idle Property TG05_KnockOut Auto
Idle Property TG05_GetUp Auto
ImageSpaceModifier Property FadeToBlackImod Auto
ImageSpaceModifier Property FadeToBlackHoldImod Auto
ImageSpaceModifier Property _00E_MQP02_HeadacheAnimated Auto
ImageSpaceModifier Property MAGShockExpImod Auto

Explosion Property ExplosionRuneShock01 Auto

MusicType Property _00E_Music_Special_Event_Dark Auto
MusicType Property _00E_Music_Combat_Epic Auto

ObjectReference Property NQ26PlayerPortPosition Auto
ObjectReference Property NQ26PortPosition Auto
ObjectReference Property NQ23PortMarker Auto
ObjectReference Property EnableSwitcher Auto
ObjectReference Property NQ26WaterPlane Auto
ObjectReference Property NQ26Splash Auto
ObjectReference Property NQ26YeraiPortMarker Auto
ObjectReference Property NQ26CoreRef Auto

_00E_Questfunctions Property Levelsystem Auto
Sound Property AMBRumbleShakeGreybeards Auto
Message Property _00E_NQ26_DisplayTextGenerator Auto
ImageSpaceModifier Property _00E_BlackFadeSleepy Auto