Scriptname _00E_FS_NQR02_Functions extends Quest  

Import _00E_QuestFunctions

;=====================================================================================
;              							EVENTS                    					 
;=====================================================================================

;=====================================================================================
;              							FUNCTIONS                    					 
;=====================================================================================

Function SetUpSC01()

	SetObjectiveDisplayed(5)
	FS_NQR02_TharaelREF.Enable()
	FS_NQR02_TharaelREF.RemoveItem(_00E_FS_NQR_TharaelsBow, 1, true)
	FS_NQR02_TharaelREF.RemoveItem(_00E_FS_NQR_TharaelsArrows, 55, true)
	FS_NQR02_DummyToDisableREF.Disable()
	FS_NQR02_IAmInTheWayDogREF.Disable()
	FS_NQR02_TharaelREF.AddToFaction(PlayerAlliesFaction)
	FS_NQR02_TharaelREF.MoveTo(FS_NQR02_SC01_TharaelMarker)
	FS_NQR02_TharaelREF.SetAlpha(1.0)
	FS_NQR02_TharaelREF.SetOutfit(_00E_FeinlederrstungCowl)
	FS_NQR02_TharaelREF.EquipItemEx(_00E_FS_NQR05_Tharael_Dagger, 1, true)
	
EndFunction

Function SetUpSC02()
	
	SetObjectiveCompleted(5)
	SetObjectiveDisplayed(10)
	FS_NQR02_QalianREF.Enable()
	FS_NQR02_QalianREF.BlockActivation(True)
	FS_NQR02_SC02_WhoreREF.Enable()
	FS_NQR02_SC02_MeetingQalian.ForceStart()

EndFunction

Function BlockBedrollActivation()

	FS_NQR02_QalianBedrollREF.BlockActivation(True)

EndFunction

Function UnblockActivationQalian()

	FS_NQR02_QalianREF.BlockActivation(False)

EndFunction

Function SetUpSC03()

	SetObjectiveCompleted(11)
	SetObjectiveDisplayed(15)
	FS_NQR02_SC02_WhoreREF.Disable()
	FS_NQR02_SC03_DisableMarker.Disable()
	FS_NQR02_SC03_QalianLeadsGroupToPit.ForceStart()
	FS_NQR02_Banditparent.Enable()
	
EndFunction

Function SetUpSC04()
	
	_00E_QuestFunctions.SetNPCAsCompanion(FS_NQR02_TharaelREF, True, 550, 400, 400)
	FS_NQR02_SC04_TarPit.ForceStart()

EndFunction

Function MoveGroup()

	FadeToBlackIMOD.Apply()
	Utility.Wait(2)
	FadeToBlackHoldIMOD.ApplyCrossFade(2)
	PlayerREF.MoveTo(FS_NQR02_SC04_PlayerMarker)
	FS_NQR02_TharaelREF.MoveTo(FS_NQR02_SC04_TharaelMarker)
	FS_NQR02_QalianREF.MoveTo(FS_NQR02_SC04_QalianMarker)
	FadeToBlackBackIMOD.ApplyCrossFade(1)

EndFunction

;Removed this function since it's pretty unnecessary - Till
;Function PortIfNotNear()
;
;	If FS_NQR02_TharaelREF.GetDistance(PlayerREF) >= 750
;		FS_NQR02_TharaelREF.MoveTo(PlayerREF)
;	EndIf
;		
;	If FS_NQR02_QalianREF.GetDistance(PlayerREF) >= 750
;		FS_NQR02_QalianREF.MoveTo(PlayerREF)
;	EndIf
;
;EndFunction

Function SetUpSC05()

	SetObjectiveCompleted(15)
	SetObjectiveDisplayed(20)
	FS_NQR02_SC05_CorpseDiscovery.ForceStart()

EndFunction

Function UpdateObjectivesSkeleton()

	SetObjectiveCompleted(20)
	SetObjectiveDisplayed(25)

EndFunction

Function TharaelResetAnimation()

	; Debug.SendAnimationEvent(FS_NQR02_TharaelREF, "IdleForceDefaultState")

EndFunction

Function Dig()

	FS_NQR02_TharaelREF.SetGhost(True)
	FS_NQR02_QalianREF.SetGhost(True)
	FadeToBlackIMOD.Apply()
	Utility.Wait(2)
	FadeToBlackHoldIMOD.ApplyCrossFade(2)
	
	If FS_NQR02_SC05_OilPoolREF.IsEnabled()
		FS_NQR02_SC05_OilPoolREF.Disable()
	EndIf
	
	FS_NQR02_SC05_DirtPilEREF.Enable()
	FS_NQR02_SC05CollisionREF.Enable()
	FS_NQR02_OpenLidREF.BlockActivation(True)
	FS_NQR02_TharaelREF.MoveTo(FS_NQR02_SC05_QalianMarker)
	PlayerREF.MoveTo(FS_NQR02_SC05_PlayerMarker)
	FadeToBlackBackIMOD.ApplyCrossFade(1)
	
EndFunction

Function OpenLid()

	SetObjectiveDisplayed(27)
	FS_NQR02_OpenLidREF.BlockActivation(False)

	; FS_NQR02_OpenLidREF.SetOpen(True)

EndFunction

Function UpdateObjectivesCorpse()

	if FS_NQR02_OpenLidREF.GetOpenState() != 1
		FS_NQR02_OpenLidREF.SetOpen(True)
	EndIf

	if FS_NQR02_OpenLidREF.GetOpenState() != 1 || FS_NQR02_OpenLidREF.GetOpenState() == 2
		FS_NQR02_OpenLidREF.Disable()
	EndIf
	
	SetObjectiveCompleted(27)
	SetObjectiveCompleted(25)
	SetObjectiveDisplayed(30)

EndFunction

Function SetUpSC06()

	_00E_QuestFunctions.SetNPCAsCompanion(FS_NQR02_TharaelREF, False)
	FS_NQR02_TharaelREF.EquipItemEx(_00E_FS_NQR05_Tharael_Dagger, 1, true)
	SetObjectiveCompleted(30)
	SetObjectiveDisplayed(35)
	FS_NQR02_SC06_QalianConfrontation.ForceStart()


EndFunction

Function TharaelKillQalian()

	FS_NQR02_QalianREF.SetGhost(False)
	FS_NQR02_QalianREF.GetActorBase().SetEssential(False)
	FS_NQR02_TharaelREF.PlayIdleWithTarget(pa_1HMKillMoveDualWieldA, FS_NQR02_QalianREF)
	;FS_NQR02_TharaelREF.PlayIdleWithTarget(pa_1HMKillMoveShortJ, FS_NQR02_QalianREF)
	Utility.Wait(5)
	; FS_NQR02_QalianREF.Kill(FS_NQR02_TharaelREF)

EndFunction

Function FinishUp()

	SetObjectiveCompleted(35)
	_00E_QuestFunctions.SetNPCAsCompanion(FS_NQR02_TharaelREF, False)
	Levelsystem.RemoveSilence()
	Levelsystem.RemoveCombatSoundtracks()
	Levelsystem.SetAllowIdleChatter(True)
	Levelsystem.GiveEP(__Config_iRewardEXP)
	FS_NQR03.SetStage(5)
	Self.CompleteQuest()
	Levelsystem.TeleportNPC(FS_NQR02_TharaelREF, _00E_NPCDumpMarker)
	FS_NQR02_TharaelREF.Disable()
	FS_NQR02_DummyToDisableREF.Enable()
	FS_NQR02_IAmInTheWayDogREF.Enable()
	FS_NQR02_SC03_DisableMarker.Enable()
	FS_TharaelDialogue.SetStage(5)
	FS_EnvironmentScene04.SetStage(5)
	
	If _00E_AchievementsEnabled.GetValueInt() == 1 
		If _00E_FS_NQR02_SparedQalian.GetValueInt() == 0
			Steam.UnlockAchievement("END_QALIAN_01")
		Else
			Steam.UnlockAchievement("END_QALIAN_02")
		EndIf
	EndIf

EndFunction

;=====================================================================================
;              							PROPERTIES                    					 
;=====================================================================================

int __Config_iRewardEXP = 500

_00E_QuestFunctions Property Levelsystem Auto

Actor Property FS_NQR02_TharaelREF Auto
Actor Property FS_NQR02_QalianREF Auto
Actor Property FS_NQR02_SC02_WhoreREF Auto
Actor Property FS_NQR02_DummyToDisableREF Auto
Actor Property FS_NQR02_IAmInTheWayDogREF Auto
Actor Property PlayerREF Auto
Actor Property FS_NQR02_Banditparent Auto

ObjectReference Property FS_NQR02_SC01_TharaelMarker Auto
ObjectReference Property FS_NQR02_SC04_TharaelMarker Auto
ObjectReference Property FS_NQR02_SC04_QalianMarker Auto
ObjectReference Property FS_NQR02_SC04_PlayerMarker Auto
ObjectReference Property FS_NQR02_SC05_OilPoolREF Auto
ObjectReference Property FS_NQR02_SC05_DirtPilEREF Auto
ObjectReference Property FS_NQR02_SC05CollisionREF Auto
ObjectReference Property FS_NQR02_SC05_PlayerMarker Auto
ObjectReference Property FS_NQR02_SC05_QalianMarker Auto
ObjectReference Property FS_NQR02_OpenLidREF Auto
ObjectReference Property _00E_NPCDumpMarker Auto
ObjectReference Property FS_NQR02_QalianBedrollREF Auto
ObjectReference Property FS_NQR02_SC03_DisableMarker Auto

Idle Property pa_1HMKillMoveShortJ Auto
Idle Property pa_1HMKillMoveShortD Auto
Idle Property pa_1HMKillMoveShortK Auto
Idle Property pa_1HMKillMoveShortA Auto
Idle Property pa_1HMKillMoveShortC Auto
Idle Property pa_1HMKillMoveDualWieldA Auto
Idle Property pa_1HMKillMoveShortB Auto
Idle Property KillMoveDualWield Auto
Idle Property KillMoveDualWield00 Auto
Idle Property KillMoveDualWieldDecap00 Auto

Scene Property FS_NQR02_SC01_TharaelBarracksSC Auto
Scene Property FS_NQR02_SC02_MeetingQalian Auto
Scene Property FS_NQR02_SC03_QalianLeadsGroupToPit Auto
Scene Property FS_NQR02_SC04_TarPit Auto
Scene Property FS_NQR02_SC05_CorpseDiscovery Auto
Scene Property FS_NQR02_SC06_QalianConfrontation Auto

Faction Property PlayerAlliesFaction Auto

Quest Property FS_NQR03 Auto
Quest Property FS_TharaelDialogue Auto
Quest Property FS_EnvironmentScene04 Auto

Weapon Property _00E_FS_NQR05_Tharael_Dagger Auto

Outfit Property _00E_FeinlederrstungCowl Auto
Outfit Property _00E_FS_NQR_Rhalata_Voice_OutfitMask Auto

ImageSpaceModifier Property FadeToBlackIMOD Auto
ImageSpaceModifier Property FadeToBlackHoldIMOD Auto
ImageSpaceModifier Property FadeToBlackBackIMOD Auto

Weapon Property _00E_FS_NQR_TharaelsBow Auto
Ammo Property _00E_FS_NQR_TharaelsArrows Auto

GlobalVariable Property _00E_FS_NQR02_SparedQalian Auto
GlobalVariable Property _00E_AchievementsEnabled Auto