diff --git a/EOLib/Domain/Login/LoginActions.cs b/EOLib/Domain/Login/LoginActions.cs index f22d6ea09..7c2883a13 100644 --- a/EOLib/Domain/Login/LoginActions.cs +++ b/EOLib/Domain/Login/LoginActions.cs @@ -134,7 +134,7 @@ public async Task RequestCharacterLogin(ICharacter character) public async Task CompleteCharacterLogin() { var packet = new PacketBuilder(PacketFamily.Welcome, PacketAction.Message) - .AddThree(_playerInfoRepository.PlayerID) + .AddThree((ushort)_playerInfoRepository.PlayerID) .AddInt(_characterRepository.MainCharacter.ID) .Build(); diff --git a/EOLib/Net/Translators/CharacterDisplayPacketTranslator.cs b/EOLib/Net/Translators/CharacterDisplayPacketTranslator.cs index bbd0c7bb6..e82d79afc 100644 --- a/EOLib/Net/Translators/CharacterDisplayPacketTranslator.cs +++ b/EOLib/Net/Translators/CharacterDisplayPacketTranslator.cs @@ -24,21 +24,17 @@ protected IEnumerable GetCharacters(IPacket packet) var numberOfCharacters = (int)packet.ReadChar(); - // EOSERV sends this byte unconditionally for CHARACTER_REPLY, but GameServer appears - // to not send it on delete packets - if (packet.PeekByte() == 1) - packet.ReadByte(); + // Optional AddByte call. EOSERV sends either 1 or 2, but GameServer appears + // to not send it on character delete + packet.ReadBreakString(); for (int i = 0; i < numberOfCharacters; ++i) { + characters.Add(GetNextCharacter(packet)); if (packet.ReadByte() != 255) throw new MalformedPacketException($"{packet.Family}_{packet.Action} packet missing character separator byte", packet); - characters.Add(GetNextCharacter(packet)); } - if (packet.ReadByte() != 255) - throw new MalformedPacketException($"{packet.Family}_{packet.Action} packet missing character separator byte", packet); - return characters; } diff --git a/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs b/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs index 6f15129ef..fb6a87365 100644 --- a/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs +++ b/EOLib/Net/Translators/LoginRequestGrantedPacketTranslator.cs @@ -4,20 +4,12 @@ using EOLib.Domain.Character; using EOLib.Domain.Login; using EOLib.IO; -using EOLib.IO.Services; namespace EOLib.Net.Translators { [AutoMappedType] public class LoginRequestGrantedPacketTranslator : IPacketTranslator { - private readonly INumberEncoderService _numberEncoderService; - - public LoginRequestGrantedPacketTranslator(INumberEncoderService numberEncoderService) - { - _numberEncoderService = numberEncoderService; - } - public ILoginRequestGrantedData TranslatePacket(IPacket packet) { var reply = (CharacterLoginReply)packet.ReadShort(); diff --git a/EndlessClient/Controllers/LoginController.cs b/EndlessClient/Controllers/LoginController.cs index 13d713aff..3ecb32e60 100644 --- a/EndlessClient/Controllers/LoginController.cs +++ b/EndlessClient/Controllers/LoginController.cs @@ -177,8 +177,8 @@ public async Task LoginToCharacter(ICharacter character) { // https://discord.com/channels/723989119503696013/787685796055482368/946634672295784509 // Sausage: 'I have WELCOME_REPLY 3 as returning a "server is busy" message if you send it and then disconnect the client' - _errorDisplayAction.ShowLoginError(LoginReply.Busy); _gameStateActions.ChangeToState(GameStates.Initial); + _errorDisplayAction.ShowLoginError(LoginReply.Busy); return; }