Scriptname _00E_StopBardDialogueOnLocChange extends ReferenceAlias

LocationAlias Property Location_Alias Auto

Location Property _00E_DunehomeInteriorLocation Auto
Location Property _00E_FlusshaimTaverneLocation Auto
Location Property _00E_SuntempleQuarters Auto
Location Property _00E_UEEntr_FalseDog_Location Auto
Location Property BauernkuesteRoterOchseLocation Auto
Location Property CapitalCityTheFatLeoranLocation Auto
Location Property SchneefelstaverneInteriorLocation Auto

Quest Property BardAudience Auto 

Event OnLocationChange(Location akOldLoc, Location akNewLoc)
	If Location_Alias ; Try the new way first
		Location bardLoc = Location_Alias.GetLocation()
		If bardLoc
			If akNewLoc != bardLoc
				TerminateParentQuest()
			EndIf
			Return
		EndIf
	EndIf

	If akNewLoc != akOldLoc ; Old way, mostly for version compatibility
		If akOldLoc == _00E_FlusshaimTaverneLocation
			TerminateParentQuest()
		ElseIf akOldLoc == _00E_UEEntr_FalseDog_Location
			TerminateParentQuest()
		ElseIf akOldLoc == _00E_DunehomeInteriorLocation
			TerminateParentQuest()
		ElseIf akOldLoc == CapitalCityTheFatLeoranLocation
			TerminateParentQuest()
		ElseIf akOldLoc == BauernkuesteRoterOchseLocation
			TerminateParentQuest()
		ElseIf akOldLoc == _00E_SuntempleQuarters
			TerminateParentQuest()
		ElseIf akOldLoc == SchneefelstaverneInteriorLocation
			TerminateParentQuest()
		EndIf
	EndIf
EndEvent

Function TerminateParentQuest()
	GetOwningQuest().Stop()
	BardAudience.Stop()
EndFunction