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
- { what's the trigger range of the detonator }
- Weapon Property RDE_Mine Auto
- { the weapon object of the RDE which should be triggered }
- Projectile Property RDE_Projectile Auto
- { the projectile object of the RDE to blow up }
- bool ammoJustRemoved = false
- Function Detonate(ObjectReference RDE)
- RDE.DamageObject(100.0)
- EndFunction
- Function AmmoRemoved()
- ammoJustRemoved = true
- StartTimer(0.5, 100)
- EndFunction
- Event OnTimer(int aiTimerID)
- If (aiTimerID == 100)
- ammoJustRemoved = false
- EndIf
- EndEvent
- Event OnEquipped(Actor akActor)
- If (akActor == Game.GetPlayer())
- RegisterForAnimationEvent(akActor, "WeaponFire")
- RegisterForRemoteEvent(akActor, "OnItemRemoved")
- EndIf
- EndEvent
- Event OnUnequipped(Actor akActor)
- If (akActor == Game.GetPlayer())
- UnregisterForAnimationEvent(akActor, "WeaponFire")
- UnregisterForRemoteEvent(akActor, "OnItemRemoved")
- CancelTimer(100)
- EndIf
- EndEvent
- Event OnAnimationEvent(ObjectReference akSource, string asEventName)
- If (asEventName == "WeaponFire")
- Debug.Trace("Detonator triggered!")
- Wait(0.1) ; wait before next check in case removing ammo take some time
- If !(ammoJustRemoved)
- 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
- Event Actor.OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
- If (akBaseItem == RDE_Mine.GetAmmo())
- Debug.Trace("Ammo removed event received!")
- AmmoRemoved()
- EndIf
- EndEvent
Add Comment
Please, Sign In to add comment