public static void HandleGameFightJoinRequestMessage(WorldClient client, GameFightJoinRequestMessage message) { if (!client.Character.IsFighting()) { Fight fight = Singleton <FightManager> .Instance.GetFight(message.fightId); if (fight == null) { ContextHandler.SendChallengeFightJoinRefusedMessage(client, client.Character, FighterRefusedReasonEnum.TOO_LATE); } else { if (fight.Map != client.Character.Map) { ContextHandler.SendChallengeFightJoinRefusedMessage(client, client.Character, FighterRefusedReasonEnum.WRONG_MAP); } else { if (fight.IsStarted) { if (message.fighterId == 0 && fight.CanSpectatorJoin(client.Character)) { fight.AddSpectator(client.Character.CreateSpectator(fight)); } } else { FightTeam fightTeam; if (fight.RedTeam.Leader.Id == message.fighterId) { fightTeam = fight.RedTeam; } else { if (fight.BlueTeam.Leader.Id != message.fighterId) { ContextHandler.SendChallengeFightJoinRefusedMessage(client, client.Character, FighterRefusedReasonEnum.WRONG_MAP); return; } fightTeam = fight.BlueTeam; } FighterRefusedReasonEnum reason; if ((reason = fightTeam.CanJoin(client.Character)) != FighterRefusedReasonEnum.FIGHTER_ACCEPTED) { ContextHandler.SendChallengeFightJoinRefusedMessage(client, client.Character, reason); } else { fightTeam.AddFighter(client.Character.CreateFighter(fightTeam)); } } } } } }