Refactored ingredient tracking in The Elixir: removed scripts from ingredients, moved logic to player alias in FS_NQ05, replaced custom globals tracking with ModObjectiveGlobal, automatically toggling objective status
This commit is contained in:
parent
526342f179
commit
906c698b8a
BIN
Removed scripts from FS_NQ5 ingredients, added playerevents.esp
Normal file
BIN
Removed scripts from FS_NQ5 ingredients, added playerevents.esp
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
scripts/_00e_fs_nq05_playeralias.pex
Normal file
BIN
scripts/_00e_fs_nq05_playeralias.pex
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -22,21 +22,23 @@ EndFunction
|
|||||||
|
|
||||||
Function UpdateGlobals()
|
Function UpdateGlobals()
|
||||||
|
|
||||||
_00E_FS_NQ05_VynrootCountGlobal.SetValue(PlayerREF.GetItemCount(Vynroot))
|
_00E_FS_NQ05_VynrootCountGlobal.SetValue(0)
|
||||||
_00E_FS_NQ05_SkeeverTailCountGlobal.SetValue(PlayerREF.GetItemCount(SkeeverTail))
|
_00E_FS_NQ05_SkeeverTailCountGlobal.SetValue(0)
|
||||||
_00E_FS_NQ05_MothWingMonarchCountGlobal.SetValue(PlayerREF.GetItemCount(MothWingMonarch))
|
_00E_FS_NQ05_MothWingMonarchCountGlobal.SetValue(0)
|
||||||
_00E_FS_NQ05_GarlicCountGlobal.SetValue(PlayerREF.GetItemCount(Garlic))
|
_00E_FS_NQ05_GarlicCountGlobal.SetValue(0)
|
||||||
wait(0.9)
|
|
||||||
UpdateCurrentInstanceGlobal(_00E_FS_NQ05_VynrootCountGlobal)
|
|
||||||
UpdateCurrentInstanceGlobal(_00E_FS_NQ05_SkeeverTailCountGlobal)
|
|
||||||
UpdateCurrentInstanceGlobal(_00E_FS_NQ05_MothWingMonarchCountGlobal)
|
|
||||||
UpdateCurrentInstanceGlobal(_00E_FS_NQ05_GarlicCountGlobal)
|
|
||||||
wait(0.1)
|
|
||||||
SetObjectiveDisplayed(36)
|
SetObjectiveDisplayed(36)
|
||||||
SetObjectiveDisplayed(37)
|
SetObjectiveDisplayed(37)
|
||||||
SetObjectiveDisplayed(38)
|
SetObjectiveDisplayed(38)
|
||||||
SetObjectiveDisplayed(39)
|
SetObjectiveDisplayed(39)
|
||||||
|
|
||||||
|
Wait(1.5)
|
||||||
|
|
||||||
|
ModObjectiveGlobal(PlayerREF.GetItemCount(SkeeverTail), _00E_FS_NQ05_SkeeverTailCountGlobal, 36, 1, true, true, true)
|
||||||
|
ModObjectiveGlobal(PlayerREF.GetItemCount(Garlic), _00E_FS_NQ05_GarlicCountGlobal, 37, 1, true, true, true)
|
||||||
|
ModObjectiveGlobal(PlayerREF.GetItemCount(MothWingMonarch), _00E_FS_NQ05_MothWingMonarchCountGlobal, 38, 1, true, true, true)
|
||||||
|
ModObjectiveGlobal(PlayerREF.GetItemCount(Vynroot), _00E_FS_NQ05_VynrootCountGlobal, 39, 1, true, true, true)
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function TestFunction() ;DELETE FOR RELEASE
|
Function TestFunction() ;DELETE FOR RELEASE
|
||||||
|
@ -1,23 +1,6 @@
|
|||||||
Scriptname _00E_FS_NQ05_GarlicScript extends ObjectReference
|
Scriptname _00E_FS_NQ05_GarlicScript extends ObjectReference
|
||||||
|
|
||||||
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
|
; Replaced with OnItemAdded/OnItemRemoved in _00E_FS_NQ05_PlayerAlias
|
||||||
|
|
||||||
If FS_NQ05.GetStage() == 35
|
|
||||||
|
|
||||||
If akNewContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_GarlicCountGlobal.SetValue(PlayerREF.GetItemCount(Garlic))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_GarlicCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(37, true, true)
|
|
||||||
|
|
||||||
ElseIf akOldContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_GarlicCountGlobal.SetValue(PlayerREF.GetItemCount(Garlic))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_GarlicCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(37, true, true)
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndEvent
|
|
||||||
|
|
||||||
Actor Property PlayerREF Auto
|
Actor Property PlayerREF Auto
|
||||||
Quest Property FS_NQ05 Auto
|
Quest Property FS_NQ05 Auto
|
||||||
|
@ -1,23 +1,6 @@
|
|||||||
Scriptname _00E_FS_NQ05_MonarchScript extends ObjectReference
|
Scriptname _00E_FS_NQ05_MonarchScript extends ObjectReference
|
||||||
|
|
||||||
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
|
; Replaced with OnItemAdded/OnItemRemoved in _00E_FS_NQ05_PlayerAlias
|
||||||
|
|
||||||
If FS_NQ05.GetStage() == 35
|
|
||||||
|
|
||||||
If akNewContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_MothWingMonarchCountGlobal.SetValue(PlayerREF.GetItemCount(MothWingMonarch))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_MothWingMonarchCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(38, true, true)
|
|
||||||
|
|
||||||
ElseIf akOldContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_MothWingMonarchCountGlobal.SetValue(PlayerREF.GetItemCount(MothWingMonarch))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_MothWingMonarchCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(38, true, true)
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndEvent
|
|
||||||
|
|
||||||
Actor Property PlayerREF Auto
|
Actor Property PlayerREF Auto
|
||||||
Quest Property FS_NQ05 Auto
|
Quest Property FS_NQ05 Auto
|
||||||
|
90
source/scripts/_00e_fs_nq05_playeralias.psc
Normal file
90
source/scripts/_00e_fs_nq05_playeralias.psc
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
Scriptname _00E_FS_NQ05_PlayerAlias extends ReferenceAlias
|
||||||
|
|
||||||
|
Event OnInit()
|
||||||
|
AddInventoryEventFilter(SkeeverTail)
|
||||||
|
AddInventoryEventFilter(Garlic)
|
||||||
|
AddInventoryEventFilter(MothWingMonarch)
|
||||||
|
AddInventoryEventFilter(Vynroot)
|
||||||
|
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
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == Garlic
|
||||||
|
FS_NQ05.ModObjectiveGlobal(aiItemCount, _00E_FS_NQ05_GarlicCountGlobal, 37, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == MothWingMonarch
|
||||||
|
FS_NQ05.ModObjectiveGlobal(aiItemCount, _00E_FS_NQ05_MothWingMonarchCountGlobal, 38, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == SkeeverTail
|
||||||
|
FS_NQ05.ModObjectiveGlobal(aiItemCount, _00E_FS_NQ05_SkeeverTailCountGlobal, 36, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == Vynroot
|
||||||
|
FS_NQ05.ModObjectiveGlobal(aiItemCount, _00E_FS_NQ05_VynrootCountGlobal, 39, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
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
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == Garlic
|
||||||
|
FS_NQ05.ModObjectiveGlobal(0 - aiItemCount, _00E_FS_NQ05_GarlicCountGlobal, 37, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == MothWingMonarch
|
||||||
|
FS_NQ05.ModObjectiveGlobal(0 - aiItemCount, _00E_FS_NQ05_MothWingMonarchCountGlobal, 38, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == SkeeverTail
|
||||||
|
FS_NQ05.ModObjectiveGlobal(0 - aiItemCount, _00E_FS_NQ05_SkeeverTailCountGlobal, 36, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akBaseItem == Vynroot
|
||||||
|
FS_NQ05.ModObjectiveGlobal(0 - aiItemCount, _00E_FS_NQ05_VynrootCountGlobal, 39, 1, true, true, true)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
endEvent
|
||||||
|
|
||||||
|
Quest Property FS_NQ05 Auto
|
||||||
|
|
||||||
|
Ingredient Property Garlic Auto
|
||||||
|
Ingredient Property MothWingMonarch Auto
|
||||||
|
Ingredient Property Vynroot Auto
|
||||||
|
Ingredient Property SkeeverTail Auto
|
||||||
|
|
||||||
|
GlobalVariable Property _00E_FS_NQ05_GarlicCountGlobal Auto
|
||||||
|
GlobalVariable Property _00E_FS_NQ05_MothWingMonarchCountGlobal Auto
|
||||||
|
GlobalVariable Property _00E_FS_NQ05_SkeeverTailCountGlobal Auto
|
||||||
|
GlobalVariable Property _00E_FS_NQ05_VynrootCountGlobal Auto
|
@ -1,23 +1,6 @@
|
|||||||
Scriptname _00E_FS_NQ05_SkeeverScript extends ObjectReference
|
Scriptname _00E_FS_NQ05_SkeeverScript extends ObjectReference
|
||||||
|
|
||||||
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
|
; Replaced with OnItemAdded/OnItemRemoved in _00E_FS_NQ05_PlayerAlias
|
||||||
|
|
||||||
If FS_NQ05.GetStage() == 35
|
|
||||||
|
|
||||||
If akNewContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_SkeeverTailCountGlobal.SetValue(PlayerREF.GetItemCount(SkeeverTail))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_SkeeverTailCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(36, true, true)
|
|
||||||
|
|
||||||
ElseIf akOldContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_SkeeverTailCountGlobal.SetValue(PlayerREF.GetItemCount(SkeeverTail))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_SkeeverTailCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(36, true, true)
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndEvent
|
|
||||||
|
|
||||||
Actor Property PlayerREF Auto
|
Actor Property PlayerREF Auto
|
||||||
Quest Property FS_NQ05 Auto
|
Quest Property FS_NQ05 Auto
|
||||||
|
@ -1,23 +1,6 @@
|
|||||||
Scriptname _00E_FS_NQ05_VynrootScript extends ObjectReference
|
Scriptname _00E_FS_NQ05_VynrootScript extends ObjectReference
|
||||||
|
|
||||||
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
|
; Replaced with OnItemAdded/OnItemRemoved in _00E_FS_NQ05_PlayerAlias
|
||||||
|
|
||||||
If FS_NQ05.GetStage() == 35
|
|
||||||
|
|
||||||
If akNewContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_VynrootCountGlobal.SetValue(PlayerREF.GetItemCount(Vynroot))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_VynrootCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(39, true, true)
|
|
||||||
|
|
||||||
ElseIf akOldContainer == PlayerREF
|
|
||||||
_00E_FS_NQ05_VynrootCountGlobal.SetValue(PlayerREF.GetItemCount(Vynroot))
|
|
||||||
FS_NQ05.UpdateCurrentInstanceGlobal(_00E_FS_NQ05_VynrootCountGlobal)
|
|
||||||
FS_NQ05.SetObjectiveDisplayed(39, true, true)
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
EndEvent
|
|
||||||
|
|
||||||
Actor Property PlayerREF Auto
|
Actor Property PlayerREF Auto
|
||||||
Quest Property FS_NQ05 Auto
|
Quest Property FS_NQ05 Auto
|
||||||
|
Loading…
Reference in New Issue
Block a user