enderalse/source/scripts/defaultsetstageonhitaliasscript.psc

71 lines
1.9 KiB
Plaintext
Raw Permalink Normal View History

Scriptname defaultsetStageOnHitAliasScript extends ReferenceAlias
{generic script for one-shot quest stage update}
import game
import debug
int property stage auto
{ stage to set}
int property prereqStageOPT = -1 auto
{ OPTIONAL: stage that must be set for this trigger to fire }
int testState ; for debugging
bool property playerOnly = True auto
auto STATE waitingForPlayer
Event OnHit(ObjectReference akAggressor, Form akWeapon, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
;trace(self + " OnHit in waitingForPlayer")
testForTrigger(akAggressor, 2)
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(self + " OnHit in hasBeenTriggered")
endEvent
EVENT onTriggerEnter(objectReference triggerRef)
endEvent
Event OnEquipped(Actor akActor)
endEvent
endSTATE
EVENT onActivate(objectReference triggerRef)
endEvent
function testForTrigger(objectReference triggerRef, int pTestTriggerType)
; debug.trace(self + " testForTrigger, triggerRef=" + triggerRef + ", triggerType=" + pTestTriggerType)
if TriggerType == pTestTriggerType
if (triggerRef == getPlayer() || !playerOnly)
if prereqStageOPT == -1 || GetOwningQuest().IsStageDone(prereqStageOPT) == 1
; debug.trace(self + " testforTrigger SUCCEEDED")
GetOwningQuest().SetCurrentStageID(stage)
gotoState("hasBeenTriggered")
endif
endif
endif
endFunction
int Property TriggerType = 2 Auto hidden
{0 = OnActivate
1 = OnDeath
2 = OnHit
3 = OnTriggerEnter
4 = OnEquipped
5 = OnCombatBegin
6 = OnCellLoad
7 = Added to player inventory
8 = Removed from player inventory
... etc...
TODO: Convert to enum when we have them
}