public override void Delete()
        {
            base.Delete();

            if (Beacon != null && !Beacon.Deleted)
            {
                Beacon.Delete();
            }

            for (var index = 0; index < Crew.Count; index++)
            {
                BaseCreature bc = Crew[index];

                if (bc != null && !bc.Deleted)
                {
                    bc.Kill();
                }
            }

            foreach (BaseCreature sp in Spawn.Keys)
            {
                if (sp != null && !sp.Deleted)
                {
                    sp.Kill();
                }
            }

            for (var index = 0; index < Cannons.Count; index++)
            {
                MannedCannon cannon = Cannons[index];

                cannon.Delete();
            }

            if (PlunderBeaconSpawner.Spawner != null)
            {
                PlunderBeaconSpawner.Spawner.RemovePlunderBeacon(this);
            }
        }