Scriptname defaultsetMultiStageAliasScript extends ReferenceAlias {generic script for one-shot quest stage update} import game import debug int Property TriggerType = 0 Auto {0 = OnActivate 1 = OnDeath 2 = OnHit 3 = OnTriggerEnter ... etc... TODO: Convert to enum when we have them } int property prereqStage1 auto {If this stage is active, resultStage1 will be set} int property resultStage1 auto { Stage to set if prereqStage1 is true } int property prereqStage2 auto {If this stage is active, resultStage2 will be set} int property resultStage2 auto { Stage to set if prereqStage2 is true } int testState ; for debugging auto STATE waitingForPlayer EVENT onActivate(objectReference triggerRef) if TriggerType == 0 if triggerRef == getPlayer() if GetOwningQuest().IsStageDone(prereqStage1) == 1 GetOwningQuest().SetCurrentStageID(resultStage1) gotoState("hasBeenTriggered") endif if GetOwningQuest().IsStageDone(prereqStage2) == 1 GetOwningQuest().SetCurrentStageID(resultStage2) gotoState("hasBeenTriggered") endif endif endif endEVENT Event OnDeath(Actor akKiller) if TriggerType == 1 if GetOwningQuest().IsStageDone(prereqStage1) == 1 GetOwningQuest().SetCurrentStageID(resultStage1) gotoState("hasBeenTriggered") endif if GetOwningQuest().IsStageDone(prereqStage2) == 1 GetOwningQuest().SetCurrentStageID(resultStage2) gotoState("hasBeenTriggered") endif endif endEvent Event OnHit(ObjectReference akAggressor, Form akWeapon, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) ;trace("OnHit in waitingForPlayer") if TriggerType == 2 if GetOwningQuest().IsStageDone(prereqStage1) == 1 GetOwningQuest().SetCurrentStageID(resultStage1) gotoState("hasBeenTriggered") endif if GetOwningQuest().IsStageDone(prereqStage2) == 1 GetOwningQuest().SetCurrentStageID(resultStage2) gotoState("hasBeenTriggered") endif endif endEvent EVENT OnTriggerEnter(objectReference triggerRef) if TriggerType == 3 if GetOwningQuest().IsStageDone(prereqStage1) == 1 GetOwningQuest().SetCurrentStageID(resultStage1) gotoState("hasBeenTriggered") endif if GetOwningQuest().IsStageDone(prereqStage2) == 1 GetOwningQuest().SetCurrentStageID(resultStage2) gotoState("hasBeenTriggered") endif endif endEVENT endSTATE STATE hasBeenTriggered ; this state doesn't do anything EVENT onActivate(objectReference triggerRef) endEvent Event OnHit(ObjectReference akAggressor, Form akWeapon, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) ;trace("OnHit in hasBeenTriggered") endEvent EVENT onTriggerEnter(objectReference triggerRef) endEvent endSTATE EVENT onActivate(objectReference triggerRef) endEvent