4
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

103 lines
2.8 KiB

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