Scriptname Tsc_ThrowingWeapons_PlayerScript extends ReferenceAlias  

GlobalVariable Property ModVersion  Auto
Tsc_ThrowingWeapons_QuestScript Property QuestScript Auto
FormList Property AmmoItemList  Auto
FormList Property ScrollList  Auto
Actor Property PlayerRef  Auto
Keyword Property ActorTypeNPC  Auto

Event OnPlayerLoadGame()
	
	if (ModVersion.GetValue() < 3.0)
		QuestScript.version3Update()
		ModVersion.SetValue(3.0)
		Debug.Notification("True Spear Combat updated to V0.7")
	endIf

	QuestScript.fnisUpdate()
EndEvent

Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
	if (AmmoItemList.HasForm(akBaseItem))
		int index = AmmoItemList.Find(akBaseItem)
		form wpn = ScrollList.GetAt(index)
		PlayerRef.AddItem(wpn, aiItemCount, true)
		if (akSourceContainer)
			int scrollCount = akSourceContainer.GetItemCount(wpn)
			int ammoCount = akSourceContainer.GetItemCount(akBaseItem)
			if (scrollCount > ammoCount)
				scrollCount = scrollCount - ammoCount
				akSourceContainer.RemoveItem(wpn, scrollCount, true)
			endIf
		endIf
	endIf
endEvent

Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
	if (AmmoItemList.HasForm(akBaseItem))
		int index = AmmoItemList.Find(akBaseItem)
		form wpn = ScrollList.GetAt(index)
		int ammoCount = PlayerRef.GetItemCount(akBaseItem)
		int scrollCount = PlayerRef.GetItemCount(wpn)
		if (ammoCount < scrollCount)
			scrollCount = scrollCount - ammoCount
			PlayerRef.RemoveItem(wpn, scrollCount, true)
		endIf
		if (akDestContainer.HasKeyword(ActorTypeNPC))
			akDestContainer.RemoveItem(akBaseItem, aiItemCount, true)
			akDestContainer.AddItem(wpn, aiItemCount, true)
		endIf
	endIf
endEvent

Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference)
	int index
	form wpn
	if (AmmoItemList.HasForm(akBaseObject))
		index = AmmoItemList.Find(akBaseObject)
		wpn = ScrollList.GetAt(index)
		PlayerRef.EquipItem(wpn, false, true)
	elseIf (ScrollList.HasForm(akBaseObject))
		index = ScrollList.Find(akBaseObject)
		wpn = AmmoItemList.GetAt(index)
		PlayerRef.EquipItem(wpn, false, true)
	endIf
endEvent

Event OnObjectUnequipped(Form akBaseObject, ObjectReference akReference)
	int index
	form wpn
	if (AmmoItemList.HasForm(akBaseObject))
		index = AmmoItemList.Find(akBaseObject)
		wpn = ScrollList.GetAt(index)
		PlayerRef.UnequipItem(wpn, false, true)
	elseIf (ScrollList.HasForm(akBaseObject))
		index = ScrollList.Find(akBaseObject)
		wpn = AmmoItemList.GetAt(index)
		PlayerRef.UnequipItem(wpn, false, true)
	endIf
endEvent