Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ScriptName RDE_DetonationScript extends ObjectReference
- { Detonation Script for RDE. Attached to detonator }
- float Property WorkingRadius = 10000.0 Auto
- Projectile Property RDE_Projectile Auto
- { the projectile object of the RDE to blow up }
- bool blockTrigger = false
- float safetyDelay = 0.5
- Function Detonate(ObjectReference RDE)
- RDE.DamageObject(100.0)
- EndFunction
- Event OnEquipped(Actor akActor)
- If (akActor == Game.GetPlayer())
- RegisterForAnimationEvent(akActor, "WeaponFire")
- RegisterForAnimationEvent(akActor, "MineThrowStart")
- EndIf
- EndEvent
- Event OnUnequipped(Actor akActor)
- If (akActor == Game.GetPlayer())
- UnregisterForAnimationEvent(akActor, "WeaponFire")
- UnregisterForAnimationEvent(akActor, "MineThrowStart")
- CancelTimer(0)
- EndIf
- EndEvent
- Event OnTimer(int aiTimerID)
- If (aiTimerID == 0)
- blockTrigger = false
- GoToState("Waiting")
- ElseIf
- EndEvent
- State Waiting Auto
- Event OnAnimationEvent(ObjectReference akSource, string asEventName)
- If (asEventName == "MineThrowStart")
- GoToState("Busy")
- blockTrigger = true
- Debug.Trace("Mine thrown, tried blocking boom.")
- StartTimer(safetyDelay, 0)
- ElseIf (asEventName == "WeaponFire")
- Debug.Trace("Detonator triggered!")
- Wait(0.1) ; wait before next check in case both WeaponFire and MineThrowStart are triggered simultainously, so blockTrigger can be set
- If (!blockTrigger)
- Debug.Trace("Blowing up RDEs")
- ObjectReference[] RDEsToExplode = akSource.FindAllReferencesOfType(RDE_Projectile as Form, WorkingRadius)
- int i = 0
- While (i < RDEsToExplode.Length)
- Detonate(RDEsToExplode[i])
- i += 1
- EndWhile
- Else
- Debug.Trace("Boom blocked!")
- EndIf
- EndIf
- EndEvent
- EndState
- State Busy
- Event OnAnimationEvent(ObjectReference akSource, string asEventName)
- Debug.Trace(asEventName + " prevented from running.")
- EndEvent
- EndState
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement