예제 #1
0
        public static void HandleGameFightSpectatePlayerRequestMessage(WorldClient client, GameFightSpectatePlayerRequestMessage message)
        {
            if (client.Character.IsFighting())
            {
                return;
            }

            var player = World.Instance.GetCharacter((int)message.playerId);

            if (player == null)
            {
                return;
            }

            if (!client.Character.FriendsBook.IsFriend(player.Account.Id) && !client.Character.Guild.Members.Any(x => x.Character?.Id == player.Id))
            {
                return;
            }

            if (!player.IsFighting())
            {
                SendChallengeFightJoinRefusedMessage(client, client.Character, FighterRefusedReasonEnum.TOO_LATE);
                return;
            }

            var fight = FightManager.Instance.GetFight(player.Fight.Id);

            if (fight == null)
            {
                SendChallengeFightJoinRefusedMessage(client, client.Character, FighterRefusedReasonEnum.TOO_LATE);
                return;
            }

            if (!fight.IsStarted)
            {
                return;
            }

            if (!fight.CanSpectatorJoin(client.Character) || client.Character.IsInFight())
            {
                return;
            }

            ContextRoleplayHandler.SendCurrentMapMessage(client, fight.Map.Id);
            fight.AddSpectator(client.Character.CreateSpectator(fight));
        }
예제 #2
0
 private void GameFightSpectatePlayerRequestMessageHandler(DofusClient client,
                                                           GameFightSpectatePlayerRequestMessage message)
 {
     client.Logger.Log("Un spectateur a rejoint le combat.", LogMessageType.FightLog);
 }