/// <summary>
        /// Runs the script event with the given input.
        /// </summary>
        /// <param name="prio">The priority to run with.</param>
        /// <param name="oevt">The details of the script to be ran.</param>
        /// <returns>The event details after firing.</returns>
        public void Run(int prio, BarricadeDestroyedEventArgs oevt)
        {
            BarricadeDestroyedScriptEvent evt = (BarricadeDestroyedScriptEvent)Duplicate();

            evt.Cancelled = oevt.Cancelled;
            evt.Barricade = oevt.Barricade;
            evt.Amount    = oevt.Amount;
            evt.Call(prio);
            oevt.Amount    = evt.Amount;
            oevt.Cancelled = evt.Cancelled;
        }
 public static bool BarricadeDamaged(Barricade barricade, ref ushort amount)
 {
     // TODO: causes?
     BarricadeTag barricadeTag = new BarricadeTag(barricade);
     if (amount >= barricade.health)
     {
         BarricadeDestroyedEventArgs deathevt = new BarricadeDestroyedEventArgs();
         deathevt.Barricade = barricadeTag;
         deathevt.Amount = new NumberTag(amount);
         UnturnedFreneticEvents.OnBarricadeDestroyed.Fire(deathevt);
         amount = (ushort)deathevt.Amount.Internal;
         return deathevt.Cancelled || EntityDestroyed(barricadeTag, ref amount);
     }
     BarricadeDamagedEventArgs evt = new BarricadeDamagedEventArgs();
     evt.Barricade = barricadeTag;
     evt.Amount = new NumberTag(amount);
     UnturnedFreneticEvents.OnBarricadeDamaged.Fire(evt);
     amount = (ushort)evt.Amount.Internal;
     return evt.Cancelled || EntityDamaged(barricadeTag, ref amount);
 }
 /// <summary>
 /// Runs the script event with the given input.
 /// </summary>
 /// <param name="prio">The priority to run with.</param>
 /// <param name="oevt">The details of the script to be ran.</param>
 /// <returns>The event details after firing.</returns>
 public void Run(int prio, BarricadeDestroyedEventArgs oevt)
 {
     BarricadeDestroyedScriptEvent evt = (BarricadeDestroyedScriptEvent)Duplicate();
     evt.Cancelled = oevt.Cancelled;
     evt.Barricade = oevt.Barricade;
     evt.Amount = oevt.Amount;
     evt.Call(prio);
     oevt.Amount = evt.Amount;
     oevt.Cancelled = evt.Cancelled;
 }