Inheritance: Codebreak.Service.World.Game.Fight.AI.AIFighter, IDisposable
        /// <summary>
        /// 
        /// </summary>
        public TaxCollectorFight(MapInstance map, long id, CharacterEntity attacker, TaxCollectorEntity taxCollector)
            : base(FightTypeEnum.TYPE_PVT, map, id, attacker.Id, 0, attacker.CellId, taxCollector.Id, 0, taxCollector.CellId, WorldConfig.PVT_START_TIMEOUT, WorldConfig.PVT_TURN_TIME)
        {
            CanDefend = true;
            Attacker = attacker;
            TaxCollector = taxCollector;

            JoinFight(Attacker, Team0);
            JoinFight(TaxCollector, Team1);

            AddTimer(WorldConfig.PVT_TELEPORT_DEFENDERS_TIMEOUT, TeleportDefenders, true);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="taxCollector"></param>
        public void ExchangeTaxCollector(TaxCollectorEntity taxCollector)
        {
            CurrentAction = new GameTaxCollectorExchangeAction(this, taxCollector);
            taxCollector.CurrentAction = CurrentAction;

            StartAction(GameActionTypeEnum.EXCHANGE);
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="character"></param>
 /// <param name="taxCollector"></param>
 public TaxCollectorExchange(CharacterEntity character, TaxCollectorEntity taxCollector)
     : base(character, taxCollector.Storage, ExchangeTypeEnum.EXCHANGE_TAXCOLLECTOR)
 {
     TaxCollector = taxCollector;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="character"></param>
 /// <param name="taxCollector"></param>
 public GameTaxCollectorExchangeAction(CharacterEntity character, TaxCollectorEntity taxCollector)
     : base(new TaxCollectorExchange(character, taxCollector), character, taxCollector)
 {
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="taxCollector"></param>
 public void RemoveTaxCollector(TaxCollectorEntity taxCollector)
 {
     TaxCollectorRepository.Instance.Removed(taxCollector.DatabaseRecord);
     InventoryItemRepository.Instance.EntityRemoved((int)EntityTypeEnum.TYPE_TAX_COLLECTOR, taxCollector.Id);
     EntityManager.Instance.RemoveTaxCollector(taxCollector);
     m_taxCollectors.Remove(taxCollector);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="taxCollector"></param>
        public void RemoveTaxCollector(GuildMember member, TaxCollectorEntity taxCollector)
        {
            if (taxCollector.Guild != this)
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!member.HasRight(GuildRightEnum.COLLECT_TAXCOLLECTOR))
            {
                member.SendHasNotEnoughRights();
                return;
            }

            taxCollector.AddMessage(() =>
                {
                    if (!taxCollector.HasGameAction(GameActionTypeEnum.MAP))
                    {
                        member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                        return;
                    }

                    taxCollector.Map.SubArea.TaxCollector = null;
                    taxCollector.StopAction(GameActionTypeEnum.MAP);

                    AddMessage(() =>
                        {
                            RemoveTaxCollector(taxCollector);

                            SafeDispatch(WorldMessage.GUILD_TAXCOLLECTOR_REMOVED(taxCollector, member.Name));
                        });
                });
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="taxCollector"></param>
        public void FarmTaxCollector(GuildMember member, TaxCollectorEntity taxCollector)
        {
            taxCollector.Map.SubArea.TaxCollector = null;
            taxCollector.StopAction(GameActionTypeEnum.MAP);

            AddMessage(() =>
            {
                RemoveTaxCollector(taxCollector);

                AddExperience(taxCollector.ExperienceGathered);

                SafeDispatch(WorldMessage.GUILD_TAXCOLLECTOR_FARMED(taxCollector, member.Name));
            });
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="taxCollector"></param>
 public void AddTaxCollector(TaxCollectorEntity taxCollector)
 {
     m_taxCollectors.Add(taxCollector);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="taxCollector"></param>
        public bool StartTaxCollectorAggression(CharacterEntity attacker, TaxCollectorEntity taxCollector)
        {
            if (!CanStartFight(attacker))
                return false;

            Add(new TaxCollectorFight(m_map, m_fightId++, attacker, taxCollector));

            return true;
        }
        /// <summary>
        /// 
        /// </summary>
        public override void Dispose()
        {
            Attacker = null;
            TaxCollector = null;

            m_serializedFlag.Clear();
            m_serializedFlag = null;

            base.Dispose();
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="taxCollector"></param>
 public void RemoveTaxCollector(TaxCollectorEntity taxCollector)
 {
     Guild.AddMessage(() =>
         {
             Guild.RemoveTaxCollector(this, taxCollector);
         });
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="taxCollector"></param>
 public void FarmTaxCollector(TaxCollectorEntity taxCollector)
 {
     Guild.FarmTaxCollector(this, taxCollector);
 }