Beispiel #1
0
        void OnFightDenied(ArenaWaitingCharacter obj)
        {
            ArenaManager.Instance.ArenaTaskPool.ExecuteInContext(() =>
            {
                ContextHandler.SendGameRolePlayArenaFighterStatusMessage(m_clients, Id, obj.Character, false);
                obj.Character.ToggleArenaWaitTime();

                // %1 a refusé le combat en Kolizéum.
                BasicHandler.SendTextInformationMessage(Clients, TextInformationTypeEnum.TEXT_INFORMATION_MESSAGE, 275, obj.Character.Name);

                if (obj.Character.ArenaParty != null)
                {
                    foreach (var character in obj.Team.Members.ToArray())
                    {
                        obj.Team.RemoveCharacter(character);

                        // Combat de Kolizéum annulé/non validé par votre équipe
                        character.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_MESSAGE, 273);
                    }

                    obj.Character.ArenaParty.RemoveMember(obj.Character);
                }
                else
                {
                    obj.Team.RemoveCharacter(obj);
                }

                var opposedTeam = obj.Team == DefendersTeam ? ChallengersTeam : DefendersTeam;
                foreach (var character in opposedTeam.Members)
                {
                    // Combat de Kolizéum annulé/non validé par l'autre équipe.
                    character.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_MESSAGE, 274);
                }

                foreach (var character in DefendersTeam.Members.Concat(ChallengersTeam.Members).Where(character => character.Character.ArenaPopup != null))
                {
                    character.Character.ArenaPopup.Cancel();
                }

                foreach (var character in obj.Team.Members.Where(character => character.Character.ArenaParty == null))
                {
                    ArenaManager.Instance.AddToQueue(character.Character);
                }

                var once = false;
                foreach (var character in opposedTeam.Members)
                {
                    if (character.Character.ArenaParty == null)
                    {
                        ArenaManager.Instance.AddToQueue(character.Character);
                    }
                    else if (!once)
                    {
                        ArenaManager.Instance.AddToQueue(character.Character.ArenaParty);
                        once = true;
                    }
                }
            });
        }
Beispiel #2
0
        void OnReadyChanged(ArenaWaitingCharacter character, bool ready)
        {
            ArenaManager.Instance.ArenaTaskPool.ExecuteInContext(() =>
            {
                ContextHandler.SendGameRolePlayArenaFighterStatusMessage(m_clients, Id, character.Character, ready);

                if (DefendersTeam.MissingMembers != 0 || ChallengersTeam.MissingMembers != 0 ||
                    !DefendersTeam.Members.All(x => x.Ready) || !ChallengersTeam.Members.All(x => x.Ready))
                {
                    return;
                }

                m_fight = FightManager.Instance.CreateArenaFight(this);

                TeleportFighters();
            });
        }