144 lines
4.1 KiB
Plaintext
144 lines
4.1 KiB
Plaintext
scriptName TrapDweFlamePillarHit extends trapHitBase
|
|
;
|
|
;
|
|
;
|
|
;=========================================
|
|
|
|
import utility
|
|
|
|
keyword property flameKeyword auto
|
|
|
|
explosion property placedExplosion auto hidden
|
|
bool property weaponResolved = false auto hidden
|
|
int Property TrapLevel = 1 auto
|
|
{Used to determine the difficulty of the trap, currently only tied to damage
|
|
0 = Easy
|
|
1 = Medium (DEFAULT)
|
|
2 = Hard
|
|
3 = VeryHard}
|
|
|
|
;================================================================
|
|
|
|
state CanHitLocal
|
|
event onBeginState()
|
|
; debug.Trace(self + ": has entered CanHitState")
|
|
if !weaponResolved
|
|
ResolveLeveledExplosion ()
|
|
endif
|
|
endEvent
|
|
|
|
|
|
event OnTrapHitStart(ObjectReference triggerRef, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, int aeMaterial, bool abInitialHit, int aeMotionType)
|
|
; debug.Trace(self + " has hit " + triggerRef)
|
|
actor myTarget
|
|
myTarget = triggerRef as actor
|
|
|
|
if !myTarget.hasSpell(ghostAbility)
|
|
;if !myTarget.HasMagicEffectWithKeyword(flameKeyword)
|
|
; debug.Trace(self + " has applied gas to " + triggerRef)
|
|
;(triggerRef as actor).addSpell(gasSpell01)
|
|
triggerRef.placeAtMe(placedExplosion)
|
|
;endif
|
|
if rumble
|
|
game.ShakeController(rumbleAmount, rumbleAmount, rumbleDuration)
|
|
EndIf
|
|
if cameraShake
|
|
game.ShakeCamera(afStrength = cameraShakeAmount)
|
|
endif
|
|
endif
|
|
endEvent
|
|
|
|
;/
|
|
event OnTrapHit(ObjectReference triggerRef, float afXVel, float afYVel, float afZVel, float afXPos, float afYPos, float afZPos, int aeMaterial, bool abInitialHit, int aeMotionType)
|
|
; debug.Trace(self + " has hit " + triggerRef)
|
|
actor myTarget
|
|
myTarget = triggerRef as actor
|
|
|
|
if !myTarget.hasSpell(ghostAbility)
|
|
;if !myTarget.HasMagicEffectWithKeyword(flameKeyword)
|
|
; debug.Trace(self + " has applied gas to " + triggerRef)
|
|
;(triggerRef as actor).addSpell(gasSpell01)
|
|
triggerRef.placeAtMe(placedExplosion)
|
|
;endif
|
|
if rumble
|
|
game.ShakeController(rumbleAmount, rumbleAmount, rumbleDuration)
|
|
EndIf
|
|
if cameraShake
|
|
game.ShakeCamera(afStrength = cameraShakeAmount)
|
|
endif
|
|
endif
|
|
endEvent
|
|
/;
|
|
endState
|
|
|
|
event onCellAttach()
|
|
if !weaponResolved
|
|
ResolveLeveledExplosion ()
|
|
endif
|
|
endEvent
|
|
|
|
|
|
;================================================================
|
|
|
|
int property LvlThreshold1 auto
|
|
int property LvlThreshold2 auto
|
|
int property LvlThreshold3 auto
|
|
int property LvlThreshold4 auto
|
|
int property LvlThreshold5 auto
|
|
Explosion property TrapDweFlamePillarExplosion01 auto
|
|
Explosion property TrapDweFlamePillarExplosion02 auto
|
|
Explosion property TrapDweFlamePillarExplosion03 auto
|
|
Explosion property TrapDweFlamePillarExplosion04 auto
|
|
Explosion property TrapDweFlamePillarExplosion05 auto
|
|
Explosion property TrapDweFlamePillarExplosion06 auto
|
|
|
|
Function ResolveLeveledExplosion ()
|
|
;Trace("ResolveLeveledWeapon")
|
|
int damageLevel
|
|
damageLevel = CalculateEncounterLevel(TrapLevel)
|
|
|
|
; weapon lvlWeaponM = LvlWeaponM1
|
|
; weapon lvlWeaponL = LvlWeaponL1
|
|
; weapon lvlWeaponR = LvlWeaponR1
|
|
explosion LvlExplosion = TrapDweFlamePillarExplosion01
|
|
|
|
if (damageLevel > LvlThreshold1 && damageLevel <= LvlThreshold2)
|
|
; lvlWeaponM = LvlWeaponM2
|
|
; lvlWeaponL = LvlWeaponL2
|
|
; lvlWeaponR = LvlWeaponR2
|
|
LvlExplosion = TrapDweFlamePillarExplosion02
|
|
;Trace("damage threshold =")
|
|
;Trace("2")
|
|
endif
|
|
if (damageLevel > LvlThreshold2 && damageLevel <= LvlThreshold3)
|
|
;lvlWeaponM = LvlWeapon3
|
|
LvlExplosion = TrapDweFlamePillarExplosion03
|
|
;Trace("damage threshold =")
|
|
;Trace("3")
|
|
endif
|
|
if (damageLevel > LvlThreshold3 && damageLevel <= LvlThreshold4)
|
|
;lvlWeaponM = LvlWeapon4
|
|
LvlExplosion = TrapDweFlamePillarExplosion04
|
|
;Trace("damage threshold =")
|
|
;Trace("4")
|
|
endif
|
|
if (damageLevel > LvlThreshold4 && damageLevel <= LvlThreshold5)
|
|
;lvlWeaponM = LvlWeapon5
|
|
LvlExplosion = TrapDweFlamePillarExplosion05
|
|
;Trace("damage threshold =")
|
|
;Trace("5")
|
|
endif
|
|
if (damageLevel > LvlThreshold5)
|
|
;lvlWeaponM = LvlWeapon6
|
|
LvlExplosion = TrapDweFlamePillarExplosion06
|
|
;Trace("damage threshold =")
|
|
;Trace("6")
|
|
endif
|
|
|
|
; ballistaWeaponM = lvlWeaponM
|
|
; ballistaWeaponL = lvlWeaponL
|
|
; ballistaWeaponR = lvlWeaponR
|
|
placedExplosion = LvlExplosion
|
|
weaponResolved = True
|
|
EndFunction
|