Scriptname defaultSetStageTrigOnLeaveSCRIPT extends ObjectReference {this is a generic script for one-shot quest stage updates} import game import debug quest property myQuest auto { quest to call SetStage on} int property stage auto { stage to set} bool property doOnce = True auto {Set the stage only once.} int property prereqStageOPT = -1 auto { OPTIONAL: stage that must be set for this trigger to fire } bool property disableWhenDone = true auto { disable myself after I've been triggered. Defaults to true } auto STATE waitingForPlayer EVENT onTriggerLeave(objectReference triggerRef) if triggerRef == getPlayer() as actor ; check to see if a pre-req stage was specificed and if it's been met if prereqStageOPT == -1 || MyQuest.IsStageDone(prereqStageOPT) == 1 ; Start the quest just in case it isn't already running. if myQuest.isRunning() == FALSE bool check = myQuest.start() ; do a quick check in case the quest could not be started if !check ; debug.trace("ERROR: "+myQuest+" not started by "+self) endif endif ; do the actual business of setting the stage we want myQuest.SetCurrentStageID(stage) if doOnce gotoState("hasBeenTriggered") endif if disableWhenDone Disable() endif endif endif endEVENT endSTATE STATE hasBeenTriggered ; this is an empty state. endSTATE