Example #1
0
        public bool TryAddTaxCollectorSpawn(Character character, bool lazySave = true)
        {
            bool result;

            if (!character.GuildMember.HasRight(GuildRightsBitEnum.GUILD_RIGHT_HIRE_TAX_COLLECTOR))
            {
                TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_NO_RIGHTS);
                result = false;
            }
            else
            {
                if (character.Guild.TaxCollectors.Count <TaxCollectorNpc>() >= character.Guild.MaxTaxCollectors)
                {
                    TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_MAX_REACHED);
                    result = false;
                }
                else
                {
                    if (character.Position.Map.TaxCollector != null)
                    {
                        TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ALREADY_ONE);
                        result = false;
                    }
                    else
                    {
                        if (!character.Position.Map.AllowCollector)
                        {
                            TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_HERE);
                            result = false;
                        }
                        else
                        {
                            if (character.IsInFight())
                            {
                                TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ERROR_UNKNOWN);
                                result = false;
                            }
                            else
                            {
                                //var basePlayerItem = character.Inventory.TryGetItem(Singleton<ItemManager>.Instance.TryGetTemplate(AllianceManager.ALLIOGEMME_ID));
                                //character.Inventory.RemoveItem(basePlayerItem, 1, true);

                                ObjectPosition  objectPosition  = character.Position.Clone();
                                TaxCollectorNpc taxCollectorNpc = new TaxCollectorNpc(this.m_idProvider.Pop(), objectPosition.Map.GetNextContextualId(), objectPosition, character.Guild, character.Name);
                                if (lazySave)
                                {
                                    ServerBase <WorldServer> .Instance.IOTaskPool.AddMessage(delegate
                                    {
                                        this.Database.Insert(taxCollectorNpc.Record);
                                    });
                                }
                                else
                                {
                                    base.Database.Insert(taxCollectorNpc.Record);
                                }
                                this.m_taxCollectorSpawns.Add(taxCollectorNpc.GlobalId, taxCollectorNpc.Record);
                                this.m_activeTaxCollectors.Add(taxCollectorNpc);
                                taxCollectorNpc.Map.Enter(taxCollectorNpc);
                                character.Guild.AddTaxCollector(taxCollectorNpc);

                                result = true;
                            }
                        }
                    }
                }
            }
            return(result);
        }