Advertisement
Guest User

RDE - Test 1

a guest
Jul 10th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. ScriptName RDE_DetonationScript extends ObjectReference
  2. { Detonation Script for RDE. Attached to detonator }
  3.  
  4. float Property WorkingRadius = 10000.0 Auto
  5. Projectile Property RDE_Projectile Auto
  6. { the projectile object of the RDE to blow up }
  7.  
  8. bool blockTrigger = false
  9. float safetyDelay = 0.5
  10.  
  11. Function Detonate(ObjectReference RDE)
  12. RDE.DamageObject(100.0)
  13. EndFunction
  14.  
  15. Event OnEquipped(Actor akActor)
  16. If (akActor == Game.GetPlayer())
  17. RegisterForAnimationEvent(akActor, "WeaponFire")
  18. RegisterForAnimationEvent(akActor, "MineThrowStart")
  19. EndIf
  20. EndEvent
  21.  
  22. Event OnUnequipped(Actor akActor)
  23. If (akActor == Game.GetPlayer())
  24. UnregisterForAnimationEvent(akActor, "WeaponFire")
  25. UnregisterForAnimationEvent(akActor, "MineThrowStart")
  26. CancelTimer(0)
  27. EndIf
  28. EndEvent
  29.  
  30. Event OnTimer(int aiTimerID)
  31. If (aiTimerID == 0)
  32. blockTrigger = false
  33. GoToState("Waiting")
  34. ElseIf
  35. EndEvent
  36.  
  37. State Waiting Auto
  38. Event OnAnimationEvent(ObjectReference akSource, string asEventName)
  39. If (asEventName == "MineThrowStart")
  40. GoToState("Busy")
  41. blockTrigger = true
  42. Debug.Trace("Mine thrown, tried blocking boom.")
  43. StartTimer(safetyDelay, 0)
  44. ElseIf (asEventName == "WeaponFire")
  45. Debug.Trace("Detonator triggered!")
  46. Wait(0.1) ; wait before next check in case both WeaponFire and MineThrowStart are triggered simultainously, so blockTrigger can be set
  47. If (!blockTrigger)
  48. Debug.Trace("Blowing up RDEs")
  49. ObjectReference[] RDEsToExplode = akSource.FindAllReferencesOfType(RDE_Projectile as Form, WorkingRadius)
  50. int i = 0
  51. While (i < RDEsToExplode.Length)
  52. Detonate(RDEsToExplode[i])
  53. i += 1
  54. EndWhile
  55. Else
  56. Debug.Trace("Boom blocked!")
  57. EndIf
  58. EndIf
  59. EndEvent
  60. EndState
  61.  
  62. State Busy
  63. Event OnAnimationEvent(ObjectReference akSource, string asEventName)
  64. Debug.Trace(asEventName + " prevented from running.")
  65. EndEvent
  66. EndState
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement