/// <inheritdoc /> public async Task <Character> LoadPlayer(int characterId, WorldClient client) { var newPlayer = await _characterFactory.CreateCharacter(characterId, client); if (newPlayer is null) { return(null); } Players.TryAdd(newPlayer.Id, newPlayer); TradeManagers.TryAdd(newPlayer.Id, new TradeManager(this, newPlayer)); PartyManagers.TryAdd(newPlayer.Id, new PartyManager(this, newPlayer)); DuelManagers.TryAdd(newPlayer.Id, new DuelManager(this, newPlayer)); _logger.LogDebug($"Player {newPlayer.Id} connected to game world"); newPlayer.Client.OnPacketArrived += Client_OnPacketArrived; return(newPlayer); }