Scriptname _00E_FS_NQR_SQ_01_Functions extends Quest ;===================================================================================== ; FUNCTIONS ;===================================================================================== Function SetUp() FS_NQR_SQ_01_ScionGustavREF.Enable() if !FS_NQR_SQ_01_Scene_01.IsPlaying() FS_NQR_SQ_01_Scene_01.ForceStart() endif EndFunction ;Old Function ;Function GiveReward() ; ; int iTotalReward ; Int NumItems = PlayerREF.GetNumItems() ; Int i = 0 ; ; int[] elementCountToRemoveForEachItem = Utility.CreateIntArray(_00E_FS_PyreanItems.getSize()) ; ; While (i < NumItems) ; ; Form Entry = PlayerREF.GetNthForm(i) ; ; If Entry as MiscObject ; ; if _00E_FS_PyreanItems.HasForm(Entry) ; ; Int itemIndexInFormlist = _00E_FS_PyreanItems.Find(Entry) ; float fValue = (Entry.GetGoldValue() + Entry.GetGoldValue()*0.33)*PlayerREF.GetItemCount(Entry) ; ; iTotalReward = iTotalReward + fValue as Int ; elementCountToRemoveForEachItem[itemIndexInFormlist] = PlayerREF.GetItemCount(Entry) ; ; EndIf ; EndIf ; ; i += 1 ; ; EndWhile ; ; i = 0 ; ; While (i < _00E_FS_PyreanItems.GetSize()) ; PlayerREF.RemoveItem(_00E_FS_PyreanItems.GetAt(i), elementCountToRemoveForEachItem[i]) ; i += 1 ; Endwhile ; ; PlayerREF.AddItem(Gold001, iTotalReward) ; ;EndFunction Function OpenGiftmenu() RegisterForMenu("GiftMenu") FS_NQR05_SQ_01_FakeREF.AddInventoryEventFilter(_00E_FS_PyreanItems) FS_NQR05_SQ_01_FakeREF.ShowGiftMenu(True, _00E_FS_PyreanItems, True, False) FS_NQR05_SQ_01_FakeREF.RemoveAllInventoryEventFilters() EndFunction Event OnMenuClose(String MenuName) UnregisterForMenu("GiftMenu") If MenuName == "GiftMenu" && FS_NQR05_SQ_01_FakeREF.GetNumItems() > 0 GiveRewardNEW() EndIf EndEvent Function GiveRewardNEW() int iTotalReward Int NumItems = FS_NQR05_SQ_01_FakeREF.GetNumItems() Int i = 0 int[] elementCountToRemoveForEachItem = Utility.CreateIntArray(_00E_FS_PyreanItems.getSize()) While (i < NumItems) Form Entry = FS_NQR05_SQ_01_FakeREF.GetNthForm(i) If Entry as MiscObject if _00E_FS_PyreanItems.HasForm(Entry) Int itemIndexInFormlist = _00E_FS_PyreanItems.Find(Entry) float fValue = (Entry.GetGoldValue() + Entry.GetGoldValue()*0.33)*FS_NQR05_SQ_01_FakeREF.GetItemCount(Entry) iTotalReward = iTotalReward + fValue as Int elementCountToRemoveForEachItem[itemIndexInFormlist] = FS_NQR05_SQ_01_FakeREF.GetItemCount(Entry) EndIf EndIf i += 1 EndWhile i = 0 While (i < _00E_FS_PyreanItems.GetSize()) FS_NQR05_SQ_01_FakeREF.RemoveItem(_00E_FS_PyreanItems.GetAt(i), elementCountToRemoveForEachItem[i]) i += 1 Endwhile PlayerREF.AddItem(Gold001, iTotalReward) EndFunction ;===================================================================================== ; PROPERTIES ;===================================================================================== Actor Property FS_NQR_SQ_01_ScionGustavREF Auto Actor Property PlayerREF Auto Actor Property FS_NQR05_SQ_01_FakeREF Auto Scene Property FS_NQR_SQ_01_Scene_01 Auto Formlist Property _00E_FS_PyreanItems Auto MiscObject Property Gold001 Auto