78 lines
2.3 KiB
Plaintext
78 lines
2.3 KiB
Plaintext
|
Scriptname _00E_ExplosiveBarrelsScript extends ObjectReference
|
||
|
|
||
|
Import Math
|
||
|
Import Utility
|
||
|
|
||
|
; This script is used to control the behaviour of gunpowder-barrels.
|
||
|
|
||
|
;=====================================================================================
|
||
|
; EVENTS
|
||
|
;=====================================================================================
|
||
|
|
||
|
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
|
||
|
|
||
|
If (akProjectile && _00E_ExplosiveBarrel_ValidProjectiles.HasForm(akProjectile)) || (akSource && _00E_ExplosiveBarrel_ValidSources.HasForm(akSource))
|
||
|
If bExploded == False
|
||
|
bExploded = True
|
||
|
If ExplosionMarkerRef == None
|
||
|
ExplosionMarkerRef = Self.PlaceAtMe(XMarker)
|
||
|
EndIf
|
||
|
Self.DamageObject(100) ; Damage the object to trigger the OnDestructionStageChanged events
|
||
|
RegisterForSingleUpdate(30.0)
|
||
|
EndIf
|
||
|
EndIf
|
||
|
|
||
|
EndEvent
|
||
|
|
||
|
Event OnDestructionStageChanged(Int aiOldStage, Int aiCurrentStage)
|
||
|
|
||
|
if aiCurrentStage == 1
|
||
|
UnregisterForUpdate()
|
||
|
|
||
|
Game.ShakeCamera(afStrength = 0.4)
|
||
|
; Place VFX and explosion
|
||
|
If ExplosionMarkerRef
|
||
|
ExplosionMarkerRef.PlaceAtMe(_00E_ExplosiveBarrelEXP_Damage)
|
||
|
Else
|
||
|
Self.PlaceAtMe(_00E_ExplosiveBarrelEXP_Damage)
|
||
|
EndIf
|
||
|
Wait(0.1)
|
||
|
If ExplosionMarkerRef
|
||
|
ExplosionMarkerRef.PlaceAtMe(_00E_ExplosiveBarrelEXP_VFX)
|
||
|
Else
|
||
|
Self.PlaceAtMe(_00E_ExplosiveBarrelEXP_VFX)
|
||
|
EndIf
|
||
|
|
||
|
DeleteExplosionMarker()
|
||
|
EndIf
|
||
|
|
||
|
EndEvent
|
||
|
|
||
|
Event OnUpdate()
|
||
|
; Failsafe cleanup
|
||
|
DeleteExplosionMarker()
|
||
|
EndEvent
|
||
|
|
||
|
Function DeleteExplosionMarker()
|
||
|
If ExplosionMarkerRef
|
||
|
ExplosionMarkerRef.Disable()
|
||
|
ExplosionMarkerRef.Delete()
|
||
|
ExplosionMarkerRef = None
|
||
|
EndIf
|
||
|
EndFunction
|
||
|
|
||
|
;=====================================================================================
|
||
|
; PROPERTIES
|
||
|
;=====================================================================================
|
||
|
|
||
|
|
||
|
Explosion Property _00E_ExplosiveBarrelEXP_VFX Auto
|
||
|
Explosion Property _00E_ExplosiveBarrelEXP_Damage Auto
|
||
|
|
||
|
Formlist Property _00E_ExplosiveBarrel_ValidSources Auto
|
||
|
Formlist Property _00E_ExplosiveBarrel_ValidProjectiles Auto
|
||
|
Static Property XMarker Auto
|
||
|
|
||
|
Bool bExploded = False
|
||
|
ObjectReference ExplosionMarkerRef
|