64 lines
2.3 KiB
Plaintext
64 lines
2.3 KiB
Plaintext
|
Scriptname DefaultAddItemAliasScript extends ReferenceAlias
|
||
|
{Script to attach to quest alias that sets a stage in the owning quest when the item is added. NOTE: The stage will only be set once, even if the item is added to the container more than once.}
|
||
|
|
||
|
Int Property StageToSet Auto
|
||
|
{Mandatory: This is the stage that will be set when the item is added}
|
||
|
|
||
|
Int Property MinStageToCheck = 0 Auto
|
||
|
{Optional: The quest must be this stage or higher to set the stage when OnAdd is fired. Default: 0 = no minimum}
|
||
|
|
||
|
Int Property MaxStageToCheck = 0 Auto
|
||
|
{Optional: The quest must be this stage or lower to set the stage when OnAdd is fired. Default: 0 = no maximum}
|
||
|
|
||
|
bool Property CheckPlayerInventory = True Auto
|
||
|
{Optional: True = set stage when item is added to the player's inventory. Default: true}
|
||
|
|
||
|
ObjectReference Property CheckThisInventory Auto
|
||
|
{Optional: Set stage when item is added to this object reference's inventory. Default: None}
|
||
|
|
||
|
ReferenceAlias Property CheckThisAliasInventory Auto
|
||
|
{Optional: Set stage when item is added to the inventory of the object reference in this alias. Default: None}
|
||
|
|
||
|
Bool Property TraceEvent = false Auto
|
||
|
{Optional: Do you want to generate a trace to the logs OnContainerChanged event? Default: False}
|
||
|
|
||
|
Event OnInit()
|
||
|
if TraceEvent
|
||
|
; debug.trace(self + "OnInit()")
|
||
|
EndIf
|
||
|
|
||
|
EndEvent
|
||
|
|
||
|
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
|
||
|
if TraceEvent
|
||
|
; debug.trace(self + "OnContainerChanged(akNewContainer[" + akNewContainer + "], akOldContainer[" + akOldContainer + "])" )
|
||
|
EndIf
|
||
|
|
||
|
Quest myQuest = GetOwningQuest()
|
||
|
int myStage = myQuest.GetCurrentStageID()
|
||
|
|
||
|
bool DoSetStage = false
|
||
|
|
||
|
if myQuest.IsStageDone(StageToSet) == 0 && myStage >= MinStageToCheck
|
||
|
if (MaxStageToCheck > 0 && myStage <= MaxStageToCheck) || MaxStageToCheck <= 0
|
||
|
if CheckPlayerInventory && (Game.GetForm(0x14) as Actor) == akNewContainer
|
||
|
DoSetStage = true
|
||
|
EndIf
|
||
|
if CheckThisInventory && CheckThisInventory == akNewContainer
|
||
|
DoSetStage = true
|
||
|
EndIf
|
||
|
if CheckThisAliasInventory && CheckThisAliasInventory.GetReference() == akNewContainer
|
||
|
DoSetStage = true
|
||
|
EndIf
|
||
|
EndIf
|
||
|
EndIf
|
||
|
|
||
|
if DoSetStage
|
||
|
if TraceEvent
|
||
|
; debug.trace(self + "OnContainerChanged() setting myQuest " + myQuest + " stage to " + StageToSet )
|
||
|
EndIf
|
||
|
myQuest.SetCurrentStageID(stageToSet)
|
||
|
EndIf
|
||
|
|
||
|
EndEvent
|