Example #1
0
 private void OutOfAreaDecay()
 {
     _outofAreaCount++;
     if (_outofAreaCount > 5)
     {
         SiegeInterface.RemoveAllPlayers();
         Destroy();
     }
 }
Example #2
0
        protected override void SetDeath(Unit killer)
        {
            base.SetDeath(killer);

            Pet    pet      = killer as Pet;
            Player credited = (pet != null) ? pet.Owner : (killer as Player);

            if (killer is Player)
            {
                (killer as Player).SendClientMessage($"{(killer as Player).Name} has killed a siege item!");
            }


            if (this.SiegeInterface.Creator != null)
            {
                this.SiegeInterface.Creator.SendClientMessage($"Your siege has been destroyed!");
            }

            if (credited != null)
            {
                // Contribution for Siege kill
                credited.UpdatePlayerBountyEvent((byte)ContributionDefinitions.DESTROY_SIEGE);
                HandleXPRenown(credited);
            }

            SiegeInterface.RemoveAllPlayers();

            Health = 0;

            States.Add((byte)CreatureState.Dead); // Death State

            PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECT_DEATH, 12);

            Out.WriteUInt16(Oid);
            Out.WriteByte(1);
            Out.WriteByte(0);
            Out.WriteUInt16(killer.IsPet() ? killer.GetPet().Owner.Oid : killer.Oid);
            Out.Fill(0, 6);
            DispatchPacket(Out, true);

            switch (_type)
            {
            case SiegeType.OIL:
                EvtInterface.AddEvent(Destroy, 180000, 1);     // Oil is replacable after 180 seconds
                break;

            case SiegeType.GTAOE:
            case SiegeType.SNIPER:
                EvtInterface.AddEvent(Destroy, 30000, 1);
                break;

            case SiegeType.RAM:
                EvtInterface.AddEvent(Destroy, 30000, 1);
                break;
            }
        }
Example #3
0
        public override void Dispose()
        {
            SiegeInterface.RemoveAllPlayers();

            base.Dispose();
        }