167 lines
4.4 KiB
Plaintext
167 lines
4.4 KiB
Plaintext
scriptName TrapBear extends objectReference
|
|
;
|
|
;
|
|
;==========================================
|
|
|
|
TrapHitBase hitBase
|
|
bool property StartOpen = True Auto
|
|
perk property LightFoot auto
|
|
bool property checkForLightFootPerk = true Auto
|
|
{default == true}
|
|
globalVariable property LightFootTriggerPercent auto
|
|
bool BeenReset = False ; USKP 2.0.1 - Used along with StartOpen to open them once on cell reset if necessary.
|
|
|
|
Event onReset()
|
|
goToState("Closed")
|
|
self.reset()
|
|
|
|
BeenReset = False
|
|
endEvent
|
|
|
|
event onLoad()
|
|
hitBase = (self as objectReference) as TrapHitBase
|
|
ResolveLeveledDamage()
|
|
if StartOpen && !BeenReset
|
|
BeenReset = True
|
|
playAnimation("StartOpen")
|
|
goToState("Open")
|
|
endif
|
|
endEvent
|
|
|
|
auto state Closed
|
|
Event OnBeginState()
|
|
; debug.Trace(self + " has entered state Closed")
|
|
endEvent
|
|
|
|
event OnTriggerEnter(objectReference TriggerRef)
|
|
; debug.Trace(self + " has been entered by " + TriggerRef)
|
|
; debug.Trace(self + " is in state Closed")
|
|
endEvent
|
|
|
|
event OnActivate(objectReference TriggerRef)
|
|
; debug.Trace(self + " has been activated by " + TriggerRef)
|
|
; debug.Trace(self + " is in state Closed")
|
|
playAnimationAndWait("Reset01","Trans02")
|
|
goToState("Open")
|
|
endEvent
|
|
|
|
endState
|
|
|
|
state Open
|
|
Event OnBeginState()
|
|
; debug.Trace(self + " has entered state Open")
|
|
endEvent
|
|
|
|
event OnTriggerEnter(objectReference TriggerRef)
|
|
if checkPerks(TriggerRef)
|
|
; debug.Trace(self + " has been entered by " + TriggerRef)
|
|
; debug.Trace(self + " is in state Open")
|
|
playAnimation("Trigger01")
|
|
hitBase.goToState("CanHit")
|
|
GoToState("Busy")
|
|
WaitForAnimationEvent("Trans01")
|
|
hitBase.goToState("CannotHit")
|
|
GoToState("Closed")
|
|
endif
|
|
endEvent
|
|
|
|
event OnActivate(objectReference TriggerRef)
|
|
; debug.Trace(self + " has been activated by " + TriggerRef)
|
|
; debug.Trace(self + " is in state Open")
|
|
GoToState("Busy")
|
|
hitBase.goToState("CannotHit")
|
|
playAnimationAndWait("Trigger01","Trans01")
|
|
goToState("Closed")
|
|
endEvent
|
|
endState
|
|
|
|
State Busy ;Dummy state to prevent interaction while animating
|
|
Event OnBeginState()
|
|
; debug.Trace(self + " has entered state Open")
|
|
endEvent
|
|
EndState
|
|
|
|
event OnTriggerEnter(objectReference TriggerRef)
|
|
; debug.Trace(self + " has been entered by " + TriggerRef)
|
|
; debug.Trace(self + " default onEnter")
|
|
endEvent
|
|
|
|
event OnActivate(objectReference TriggerRef)
|
|
; debug.Trace(self + " has been activated by " + TriggerRef)
|
|
; debug.Trace(self + " default onTrigger")
|
|
endEvent
|
|
|
|
Bool function checkPerks(objectReference triggerRef)
|
|
if checkForLightFootPerk && triggerRef as actor
|
|
; ;debug.Trace(self + " is checking if " + triggerRef + " has LightFoot Perk")
|
|
if (triggerRef as actor).hasPerk(LightFoot)
|
|
; ;debug.Trace(self + " has found that " + triggerRef + " has LightFoot Perk")
|
|
if utility.randomFloat(0.0,100.00) <= LightFootTriggerPercent.getValue()
|
|
; ;debug.Trace(self + " is returning false due to failed lightfoot roll")
|
|
return False
|
|
else
|
|
; ;debug.Trace(self + " is returning true due to successful lightfoot roll")
|
|
return True
|
|
endif
|
|
Else
|
|
; debug.Trace(self + " has found that " + triggerRef + " doesn't have the LightFoot Perk")
|
|
Return True
|
|
EndIf
|
|
else
|
|
return True
|
|
endif
|
|
endFunction
|
|
|
|
;==========================================================
|
|
int property LvlThreshold1 auto
|
|
int property LvlDamage1 auto
|
|
int property LvlThreshold2 auto
|
|
int property LvlDamage2 auto
|
|
int property LvlThreshold3 auto
|
|
int property LvlDamage3 auto
|
|
int property LvlThreshold4 auto
|
|
int property LvlDamage4 auto
|
|
int property LvlThreshold5 auto
|
|
int property LvlDamage5 auto
|
|
int property LvlDamage6 auto
|
|
int property TrapLevel = 2 auto
|
|
|
|
Function ResolveLeveledDamage()
|
|
int damageLevel
|
|
int damage
|
|
damageLevel = CalculateEncounterLevel(TrapLevel)
|
|
|
|
damage = LvlDamage1
|
|
|
|
if (damageLevel > LvlThreshold1 && damageLevel <= LvlThreshold2)
|
|
damage = LvlDamage2
|
|
;Trace("damage threshold =")
|
|
;Trace("2")
|
|
endif
|
|
if (damageLevel > LvlThreshold2 && damageLevel <= LvlThreshold3)
|
|
damage = LvlDamage3
|
|
;Trace("damage threshold =")
|
|
;Trace("3")
|
|
endif
|
|
if (damageLevel > LvlThreshold3 && damageLevel <= LvlThreshold4)
|
|
damage = LvlDamage4
|
|
;Trace("damage threshold =")
|
|
;Trace("4")
|
|
endif
|
|
if (damageLevel > LvlThreshold4 && damageLevel <= LvlThreshold5)
|
|
damage = LvlDamage5
|
|
;Trace("damage threshold =")
|
|
;Trace("5")
|
|
endif
|
|
if (damageLevel > LvlThreshold5)
|
|
damage = LvlDamage6
|
|
;Trace("damage threshold =")
|
|
;Trace("6")
|
|
endif
|
|
|
|
;Trace("damage =")
|
|
;Trace(damage)
|
|
|
|
;return damage
|
|
hitBase.damage = damage
|
|
EndFunction |