diff --git a/OnItemAdded Optimization.esp b/OnItemAdded Optimization.esp new file mode 100644 index 00000000..d6c946b1 Binary files /dev/null and b/OnItemAdded Optimization.esp differ diff --git a/scripts/_00e_fs_nq05_functions.pex b/scripts/_00e_fs_nq05_functions.pex index 2912944a..e3236303 100644 Binary files a/scripts/_00e_fs_nq05_functions.pex and b/scripts/_00e_fs_nq05_functions.pex differ diff --git a/scripts/_00e_fs_nq05_playeralias.pex b/scripts/_00e_fs_nq05_playeralias.pex index b13ed596..c6da6237 100644 Binary files a/scripts/_00e_fs_nq05_playeralias.pex and b/scripts/_00e_fs_nq05_playeralias.pex differ diff --git a/source/scripts/_00e_fs_nq05_functions.psc b/source/scripts/_00e_fs_nq05_functions.psc index 8df7da06..b4c98e85 100644 --- a/source/scripts/_00e_fs_nq05_functions.psc +++ b/source/scripts/_00e_fs_nq05_functions.psc @@ -48,6 +48,13 @@ Function UpdateGlobals() ModObjectiveGlobal(0, _00E_FS_NQ05_MothWingMonarchCountGlobal, 38, 1, true, true, false) ModObjectiveGlobal(0, _00E_FS_NQ05_VynrootCountGlobal, 39, 1, true, true, false) + ReferenceAlias PlayerAlias = Self.GetAlias(6) as ReferenceAlias + PlayerAlias.ForceRefTo(PlayerREF) + PlayerAlias.AddInventoryEventFilter(SkeeverTail) + PlayerAlias.AddInventoryEventFilter(Garlic) + PlayerAlias.AddInventoryEventFilter(MothWingMonarch) + PlayerAlias.AddInventoryEventFilter(Vynroot) + EndFunction Function TestFunction() ;DELETE FOR RELEASE diff --git a/source/scripts/_00e_fs_nq05_playeralias.psc b/source/scripts/_00e_fs_nq05_playeralias.psc index d29758e3..8853b7ea 100644 --- a/source/scripts/_00e_fs_nq05_playeralias.psc +++ b/source/scripts/_00e_fs_nq05_playeralias.psc @@ -1,10 +1,14 @@ Scriptname _00E_FS_NQ05_PlayerAlias extends ReferenceAlias Event OnInit() - AddInventoryEventFilter(SkeeverTail) - AddInventoryEventFilter(Garlic) - AddInventoryEventFilter(MothWingMonarch) - AddInventoryEventFilter(Vynroot) + AddInventoryEventFilter(_00E_EmptyFormlist) + + If FS_NQ05.GetStage() == 35 ; version update + AddInventoryEventFilter(SkeeverTail) + AddInventoryEventFilter(Garlic) + AddInventoryEventFilter(MothWingMonarch) + AddInventoryEventFilter(Vynroot) + endif _00E_FS_NQ05_GarlicCountGlobal.Value = PlayerREF.GetItemCount(Garlic) _00E_FS_NQ05_MothWingMonarchCountGlobal.Value = PlayerREF.GetItemCount(MothWingMonarch) @@ -20,13 +24,12 @@ EndEvent Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) If FS_NQ05.GetStage() != 35 - If FS_NQ05.GetStage() > 35 - if akBaseItem != SkeeverTail ; keep the rarest item as filter - RemoveInventoryEventFilter(Garlic) - RemoveInventoryEventFilter(MothWingMonarch) - RemoveInventoryEventFilter(Vynroot) - endif - endif + AddInventoryEventFilter(_00E_EmptyFormlist) ; in case clearing fails + RemoveInventoryEventFilter(Garlic) + RemoveInventoryEventFilter(MothWingMonarch) + RemoveInventoryEventFilter(Vynroot) + RemoveInventoryEventFilter(SkeeverTail) + Self.Clear() return endif @@ -55,13 +58,12 @@ EndEvent Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) If FS_NQ05.GetStage() != 35 - If FS_NQ05.GetStage() > 35 - if akBaseItem != SkeeverTail - RemoveInventoryEventFilter(Garlic) - RemoveInventoryEventFilter(MothWingMonarch) - RemoveInventoryEventFilter(Vynroot) - endif - endif + AddInventoryEventFilter(_00E_EmptyFormlist) ; in case clearing fails + RemoveInventoryEventFilter(Garlic) + RemoveInventoryEventFilter(MothWingMonarch) + RemoveInventoryEventFilter(Vynroot) + RemoveInventoryEventFilter(SkeeverTail) + Self.Clear() return endif @@ -132,3 +134,5 @@ GlobalVariable Property _00E_FS_NQ05_SkeeverTailCountGlobal Auto GlobalVariable Property _00E_FS_NQ05_VynrootCountGlobal Auto Actor Property PlayerREF Auto + +FormList Property _00E_EmptyFormlist Auto