enderalse/source/scripts/trapdweflamepillarhit.psc

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