133 lines
3.4 KiB
Plaintext
133 lines
3.4 KiB
Plaintext
scriptName trapSoulGemController extends objectReference
|
|
;
|
|
;
|
|
;=======================================================
|
|
|
|
objectReference property objSelf auto hidden
|
|
objectReference property myMagicTrap auto hidden
|
|
float idleRotateSpeed = 1.0
|
|
|
|
|
|
;/
|
|
event onAttachedToCell()
|
|
; ;debug.Trace(self + " is firing onCellLoad, activation should be blocked")
|
|
objSelf = self as objectReference
|
|
self.blockActivation()
|
|
endEvent
|
|
/;
|
|
|
|
|
|
auto state waiting
|
|
event onBeginState()
|
|
EndEvent
|
|
|
|
event onHit(objectReference akAggressor, form akWeapon, projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
|
|
endEvent
|
|
|
|
event onMagicEffectApply(ObjectReference akCaster, MagicEffect akEffect)
|
|
EndEvent
|
|
|
|
event onGrab()
|
|
endEvent
|
|
endState
|
|
|
|
|
|
state inMagicTrap
|
|
event onBeginState()
|
|
;USLEEP 3.08 Bug #14888
|
|
;(self as objectReference).SetMotionType(4)
|
|
; ;debug.Trace(self + " has begun inMagicTrap")
|
|
;self.TranslateTo(self.getpositionx(), self.getpositiony(), self.getpositionz(), self.getAngleX(), self.getAngleY() + 180, self.getAngleZ(), idleRotateSpeed)
|
|
endEvent
|
|
|
|
event onHit(objectReference akAggressor, form akWeapon, projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
|
|
|
|
;self.stopTranslation()
|
|
(self as objectReference).SetMotionType(1)
|
|
; ;debug.Trace(self + " has been hit")
|
|
goToState("disarmed")
|
|
endEvent
|
|
|
|
event onMagicEffectApply(ObjectReference akCaster, MagicEffect akEffect)
|
|
;self.stopTranslation()
|
|
(self as objectReference).SetMotionType(1)
|
|
; ;debug.Trace(akCaster + " has cast " + akEffect + " on " + self)
|
|
goToState("disarmed")
|
|
endEvent
|
|
|
|
event onGrab()
|
|
;self.stopTranslation()
|
|
(self as objectReference).SetMotionType(1)
|
|
; ;debug.Trace(self + " has been grabbed")
|
|
goToState("disarmed")
|
|
endEvent
|
|
|
|
endstate
|
|
|
|
state disarmed
|
|
event onBeginState()
|
|
magicTrap myTrap
|
|
myTrap = (getLinkedRef() as magicTrap)
|
|
myTrap.clearMySoulgem()
|
|
endEvent
|
|
endState
|
|
|
|
|
|
event OnActivate(objectReference akActivator)
|
|
; ;debug.Trace(self + " has recieved onActivate from " + akActivator)
|
|
; ;debug.Trace(self + " is checking if:" + akActivator + " == " + game.getPlayer())
|
|
if akActivator == game.getPlayer()
|
|
goToState("disarmed")
|
|
self.disable()
|
|
;self.delete()
|
|
objSelf = self as objectReference
|
|
if objSelf
|
|
(game.getPlayer() as actor).addItem(objSelf.getBaseObject(), 1, false)
|
|
else
|
|
; ;debug.Trace(self + ": objSelf was not set!")
|
|
endif
|
|
else
|
|
; ;debug.Trace(akActivator + " != " + game.getPlayer())
|
|
endif
|
|
endEvent
|
|
|
|
event onCellAttach()
|
|
; Debug.Trace(self + ": onCellAttach called")
|
|
objSelf = self as objectReference
|
|
self.blockActivation()
|
|
|
|
objSelf = self as objectReference
|
|
objectReference gemSelf = objSelf
|
|
|
|
magicTrap myTrap
|
|
myTrap = (getLinkedRef() as magicTrap)
|
|
|
|
|
|
if self.isEnabled()
|
|
; Debug.Trace(self + ": is enabled")
|
|
if myTrap ;&& !myTrap.gemTested
|
|
myTrap.CellAttachSetUp(gemSelf)
|
|
;elseif myTrap && myTrap.gemTested
|
|
; ; debug.Trace(self + ": myTrap has already resolved the gem")
|
|
else
|
|
; debug.Trace(self + ": has no linked ref. This is bad.")
|
|
endif
|
|
else
|
|
; Debug.Trace(self + ": is not enabled")
|
|
endif
|
|
endEvent
|
|
|
|
event onReset()
|
|
; debug.Trace(self + ": is running onReset")
|
|
; debug.Trace(self + ": onResetCalled")
|
|
self.enable(AbFadein = false)
|
|
self.reset()
|
|
objSelf = self as objectReference
|
|
objectReference gemSelf = objSelf
|
|
goToState("waiting")
|
|
|
|
endEvent
|
|
|
|
|
|
|