Example #1
0
        public static void HandleGuildGetInformationsMessage(WorldClient client, GuildGetInformationsMessage message)
        {
            if (client.Character.Guild != null)
            {
                switch (message.infoType)
                {
                case 1:
                    GuildHandler.SendGuildInformationsGeneralMessage(client, client.Character.Guild);
                    break;

                case 2:
                    GuildHandler.SendGuildInformationsMembersMessage(client, client.Character.Guild);
                    break;

                case 3:
                    GuildHandler.SendGuildInfosUpgradeMessage(client, client.Character.Guild);
                    break;

                case 4:
                    GuildHandler.SendGuildInformationsPaddocksMessage(client);
                    break;

                case 5:
                    GuildHandler.SendGuildHousesInformationMessage(client);
                    break;

                case 6:
                    TaxCollectorHandler.SendTaxCollectorListMessage(client, client.Character.Guild);
                    break;
                }
            }
        }
Example #2
0
        protected override void OnWinnersDetermined(FightTeam winners, FightTeam losers, bool draw)
        {
            TaxCollectorHandler.SendTaxCollectorAttackedResultMessage(TaxCollector.TaxCollectorNpc.Guild.Clients,
                                                                      Winners != DefendersTeam && !draw, TaxCollector.TaxCollectorNpc);

            if (Winners == DefendersTeam || draw)
            {
                TaxCollector.TaxCollectorNpc.RejoinMap();
            }
            else
            {
                TaxCollector.TaxCollectorNpc.Delete();
            }

            foreach (var defender in DefendersTeam.Fighters.Where(defender => m_defendersMaps.ContainsKey(defender)).OfType <CharacterFighter>())
            {
                defender.Character.NextMap = m_defendersMaps[defender];
            }

            foreach (var defender in DefendersQueue)
            {
                defender.ResetDefender();
            }

            base.OnWinnersDetermined(winners, losers, draw);
        }
Example #3
0
 public override void StartPlacement()
 {
     base.StartPlacement();
     this.m_isAttackersPlacementPhase = true;
     this.m_placementTimer            = base.Map.Area.CallDelayed(FightPvT.PvTAttackersPlacementPhaseTime, new Action(this.StartDefendersPlacement));
     TaxCollectorHandler.SendTaxCollectorAttackedMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, this.TaxCollector.TaxCollectorNpc);
 }
Example #4
0
        protected override void OnFighterAdded(FightTeam team, FightActor actor)
        {
            if (actor is TaxCollectorFighter)
            {
                if (TaxCollector != null)
                {
                    logger.Error("There is already a tax collector in this fight !");
                }
                else
                {
                    TaxCollector       = (TaxCollectorFighter)actor;
                    TaxCollector.Dead += OnTaxCollectorDeath;
                }
            }

            if (State == FightState.Placement && team == ChallengersTeam)
            {
                TaxCollectorHandler.SendGuildFightPlayersEnemiesListMessage(
                    TaxCollector.TaxCollectorNpc.Guild.Clients, TaxCollector.TaxCollectorNpc,
                    ChallengersTeam.Fighters.OfType <CharacterFighter>().Select(x => x.Character));
            }


            base.OnFighterAdded(team, actor);
        }
Example #5
0
        public void RemoveTaxCollector(TaxCollectorNpc taxCollector)
        {
            this.m_taxCollectors.Remove(taxCollector);
            Singleton <TaxCollectorManager> .Instance.RemoveTaxCollectorSpawn(taxCollector, true);

            TaxCollectorHandler.SendTaxCollectorMovementRemoveMessage(taxCollector.Guild.Clients, taxCollector);
        }
 public override void Close()
 {
     base.Close();
     InventoryHandler.SendExchangeLeaveMessage(this.Character.Client, base.DialogType, false);
     this.Character.CloseDialog(this);
     this.TaxCollector.OnDialogClosed(this);
     this.TaxCollector.Guild.AddXP((long)this.TaxCollector.GatheredExperience);
     TaxCollectorHandler.SendTaxCollectorMovementMessage(this.TaxCollector.Guild.Clients, false, this.TaxCollector, this.Character.Name);
     this.TaxCollector.Delete();
 }
Example #7
0
        public bool AddTaxCollectorSpawn(Character character)
        {
            if (!character.GuildMember.HasRight(GuildRightsBitEnum.GUILD_RIGHT_HIRE_TAX_COLLECTOR))
            {
                character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_NO_RIGHTS));
                return(false);
            }

            if (character.Guild.TaxCollectors.Count >= character.Guild.MaxTaxCollectors)
            {
                character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_MAX_REACHED));
                return(false);
            }

            if (character.Position.Map.TaxCollector != null)
            {
                character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ALREADY_ONE));
                return(false);
            }

            m_lastRemovedTaxCollectors.Clean();
            if (m_lastRemovedTaxCollectors.FirstOrDefault(x => x.First.GuildId == character.Guild.Id && x.First.MapId == character.Map.Id) != null)
            {
                character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_YET));
                return(false);
            }

            if (!character.Position.Map.AllowCollector)
            {
                character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_HERE));
                return(false);
            }

            if (character.IsInFight())
            {
                character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ERROR_UNKNOWN));
                return(false);
            }

            var position = character.Position.Clone();

            var taxCollectorNpc = new TaxCollectorNpc(m_idProvider.Pop(), position.Map.GetNextContextualId(), position, character.Guild, character);

            WorldServer.Instance.IOTaskPool.AddMessage(() => Database.Insert(taxCollectorNpc.Record));

            m_taxCollectorSpawns.Add(taxCollectorNpc.GlobalId, taxCollectorNpc.Record);
            m_activeTaxCollectors.Add(taxCollectorNpc);

            taxCollectorNpc.Map.Enter(taxCollectorNpc);
            character.Guild.AddTaxCollector(taxCollectorNpc);

            TaxCollectorHandler.SendTaxCollectorMovementMessage(taxCollectorNpc.Guild.Clients, TaxCollectorMovementTypeEnum.TAX_COLLECTOR_HIRED, taxCollectorNpc, character.Id, character.Name);

            return(true);
        }
Example #8
0
        public override void StartPlacement()
        {
            base.StartPlacement();

            m_isAttackersPlacementPhase = true;
            m_placementTimer            = Map.Area.CallDelayed(PvTAttackersPlacementPhaseTime, StartDefendersPlacement);

            // warn guild
            TaxCollectorHandler.SendTaxCollectorAttackedMessage(TaxCollector.TaxCollectorNpc.Guild.Clients,
                                                                TaxCollector.TaxCollectorNpc);
        }
Example #9
0
 protected override void OnFighterRemoved(FightTeam team, FightActor actor)
 {
     if (base.State == FightState.Placement && team == this.AttackersTeam && actor is CharacterFighter)
     {
         TaxCollectorHandler.SendGuildFightPlayersEnemyRemoveMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, this.TaxCollector.TaxCollectorNpc, (actor as CharacterFighter).Character);
     }
     if (actor is TaxCollectorFighter && actor.IsAlive())
     {
         (actor as TaxCollectorFighter).TaxCollectorNpc.RejoinMap();
     }
     base.OnFighterRemoved(team, actor);
 }
Example #10
0
        public bool RemoveDefender(Character character)
        {
            if (!m_defendersQueue.Remove(character))
            {
                return(false);
            }

            character.ResetDefender();
            TaxCollectorHandler.SendGuildFightPlayersHelpersLeaveMessage(character.Guild.Clients, TaxCollector.TaxCollectorNpc, character);

            return(true);
        }
Example #11
0
        public FighterRefusedReasonEnum AddDefender(Character character)
        {
            FighterRefusedReasonEnum result;

            if (character.TaxCollectorDefendFight != null)
            {
                result = FighterRefusedReasonEnum.IM_OCCUPIED;
            }
            else
            {
                if (!this.IsAttackersPlacementPhase)
                {
                    result = FighterRefusedReasonEnum.TOO_LATE;
                }
                else
                {
                    if (character.Guild == null || character.Guild != this.TaxCollector.TaxCollectorNpc.Guild)
                    {
                        result = FighterRefusedReasonEnum.WRONG_GUILD;
                    }
                    else
                    {
                        if (this.m_defendersQueue.Count >= 7)
                        {
                            result = FighterRefusedReasonEnum.TEAM_FULL;
                        }
                        else
                        {
                            if (this.m_defendersQueue.Any((Character x) => x.Client.IP == character.Client.IP))
                            {
                                result = FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED;
                            }
                            else
                            {
                                if (this.m_defendersQueue.Contains(character))
                                {
                                    result = FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED;
                                }
                                else
                                {
                                    this.m_defendersQueue.Add(character);
                                    character.SetDefender(this);
                                    TaxCollectorHandler.SendGuildFightPlayersHelpersJoinMessage(character.Guild.Clients, this.TaxCollector.TaxCollectorNpc, character);
                                    result = FighterRefusedReasonEnum.FIGHTER_ACCEPTED;
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }
Example #12
0
        protected override void OnFighterRemoved(FightTeam team, FightActor actor)
        {
            if (State == FightState.Placement && team == ChallengersTeam && actor is CharacterFighter characterFighter)
            {
                TaxCollectorHandler.SendGuildFightPlayersEnemyRemoveMessage(
                    TaxCollector.TaxCollectorNpc.Guild.Clients, TaxCollector.TaxCollectorNpc, characterFighter.Character);
            }

            if (actor is TaxCollectorFighter taxCollector && taxCollector.IsAlive())
            {
                taxCollector.TaxCollectorNpc.RejoinMap();
            }

            base.OnFighterRemoved(team, actor);
        }
Example #13
0
        public bool RemoveDefender(Character character)
        {
            bool result;

            if (!this.m_defendersQueue.Remove(character))
            {
                result = false;
            }
            else
            {
                character.ResetDefender();
                TaxCollectorHandler.SendGuildFightPlayersHelpersLeaveMessage(character.Guild.Clients, this.TaxCollector.TaxCollectorNpc, character);
                result = true;
            }
            return(result);
        }
Example #14
0
        public void Close()
        {
            Character.Area.UnregisterTimer(Timer);

            Character.CloseDialog(this);
            TaxCollector.OnDialogClosed(this);

            if (TaxCollector.IsDisposed)
            {
                return;
            }

            TaxCollectorHandler.SendGetExchangeGuildTaxCollectorMessage(TaxCollector.Guild.Clients, GetExchangeGuildTaxCollector());
            InventoryHandler.SendExchangeLeaveMessage(Character.Client, DialogType, false);

            TaxCollector.Guild.AddXP(TaxCollector.GatheredExperience);
            TaxCollector.Delete();
        }
Example #15
0
 protected override void OnFighterAdded(FightTeam team, FightActor actor)
 {
     if (actor is TaxCollectorFighter)
     {
         if (this.TaxCollector != null)
         {
             FightPvT.logger.Error("There is already a tax collector in this fight !");
         }
         else
         {
             this.TaxCollector = (actor as TaxCollectorFighter);
         }
     }
     if (base.State == FightState.Placement && team == this.AttackersTeam)
     {
         TaxCollectorHandler.SendGuildFightPlayersEnemiesListMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, this.TaxCollector.TaxCollectorNpc,
                                                                     from x in this.AttackersTeam.Fighters.OfType <CharacterFighter>()
                                                                     select x.Character);
     }
     base.OnFighterAdded(team, actor);
 }
Example #16
0
        public FighterRefusedReasonEnum AddDefender(Character character)
        {
            if (character.TaxCollectorDefendFight != null || character.IsBusy() || character.IsInFight() || character.IsInJail())
            {
                return(FighterRefusedReasonEnum.IM_OCCUPIED);
            }

            if (!IsAttackersPlacementPhase)
            {
                return(FighterRefusedReasonEnum.TOO_LATE);
            }

            if (character.Guild == null || character.Guild.Id != TaxCollector.TaxCollectorNpc.Guild.Id)
            {
                return(FighterRefusedReasonEnum.WRONG_GUILD);
            }

            if (m_defendersQueue.Count >= PvTMaxFightersSlots)
            {
                return(FighterRefusedReasonEnum.TEAM_FULL);
            }

            if (m_defendersQueue.Any(x => x.Client.IP == character.Client.IP))
            {
                return(FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED);
            }

            if (m_defendersQueue.Contains(character))
            {
                return(FighterRefusedReasonEnum.MULTIACCOUNT_NOT_ALLOWED);
            }

            m_defendersQueue.Add(character);
            character.SetDefender(this);

            TaxCollectorHandler.SendGuildFightPlayersHelpersJoinMessage(character.Guild.Clients, TaxCollector.TaxCollectorNpc, character);

            return(FighterRefusedReasonEnum.FIGHTER_ACCEPTED);
        }
Example #17
0
        public static void HandleGuildGetInformationsMessage(WorldClient client, GuildGetInformationsMessage message)
        {
            if (client.Character.Guild == null)
            {
                return;
            }

            switch (message.infoType)
            {
            case (sbyte)GuildInformationsTypeEnum.INFO_GENERAL:
                SendGuildInformationsGeneralMessage(client, client.Character.Guild);
                break;

            case (sbyte)GuildInformationsTypeEnum.INFO_MEMBERS:
                SendGuildInformationsMembersMessage(client, client.Character.Guild);
                break;

            case (sbyte)GuildInformationsTypeEnum.INFO_BOOSTS:
                SendGuildInfosUpgradeMessage(client, client.Character.Guild);
                break;

            case (sbyte)GuildInformationsTypeEnum.INFO_PADDOCKS:
                SendGuildInformationsPaddocksMessage(client);
                break;

            case (sbyte)GuildInformationsTypeEnum.INFO_HOUSES:
                SendGuildHousesInformationMessage(client);
                break;

            case (sbyte)GuildInformationsTypeEnum.INFO_TAX_COLLECTOR_GUILD_ONLY:
                TaxCollectorHandler.SendTaxCollectorListMessage(client, client.Character.Guild);
                break;

            case (sbyte)GuildInformationsTypeEnum.INFO_TAX_COLLECTOR_LEAVE:
                TaxCollectorHandler.SendTaxCollectorListMessage(client, client.Character.Guild);
                break;
            }
        }
Example #18
0
        protected override void OnWinnersDetermined(FightTeam winners, FightTeam losers, bool draw)
        {
            TaxCollectorHandler.SendTaxCollectorAttackedResultMessage(this.TaxCollector.TaxCollectorNpc.Guild.Clients, base.Winners != this.DefendersTeam && !draw, this.TaxCollector.TaxCollectorNpc);
            if (base.Winners == this.DefendersTeam || draw)
            {
                this.TaxCollector.TaxCollectorNpc.RejoinMap();
                using (System.Collections.Generic.List <Character> .Enumerator enumerator = this.m_defendersQueue.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        Character current = enumerator.Current;
                        if (this.m_defendersMaps.ContainsKey(current))
                        {
                            current.NextMap = this.m_defendersMaps[current];
                        }
                    }
                    goto IL_C4;
                }
            }
            this.TaxCollector.TaxCollectorNpc.Delete();
IL_C4:
            base.OnWinnersDetermined(winners, losers, draw);
        }
Example #19
0
 public void AddTaxCollector(TaxCollectorNpc taxCollector)
 {
     this.m_taxCollectors.Add(taxCollector);
     TaxCollectorHandler.SendTaxCollectorMovementAddMessage(taxCollector.Guild.Clients, taxCollector);
 }
Example #20
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);
        }
Example #21
0
 public void RemoveTaxCollector(TaxCollectorNpc taxCollector)
 {
     m_taxCollectors.Remove(taxCollector);
     TaxCollectorManager.Instance.RemoveTaxCollectorSpawn(taxCollector);
     TaxCollectorHandler.SendTaxCollectorMovementRemoveMessage(taxCollector.Guild.Clients, taxCollector);
 }