public override async Task Enter(GameStageUser user) { await base.Enter(user); var field = await FieldRepository.Retrieve(user.Character.FieldID); var fieldUser = new FieldObjUser(user); var guildLoadResponse = await GuildService.LoadByCharacter(new GuildLoadByCharacterRequest { Character = user.Character.ID }); var partyLoadResponse = await PartyService.LoadByCharacter(new PartyLoadByCharacterRequest { Character = user.Character.ID }); if (guildLoadResponse.Guild != null) { fieldUser.Guild = new Guild(guildLoadResponse.Guild); } if (partyLoadResponse.Party != null) { fieldUser.Party = new Party(partyLoadResponse.Party); } user.FieldUser = fieldUser; await field.Enter(fieldUser); var functionKeyPacket = new UnstructuredOutgoingPacket(PacketSendOperations.FuncKeyMappedInit); var quickSlotKeyPacket = new UnstructuredOutgoingPacket(PacketSendOperations.QuickslotMappedInit); functionKeyPacket.WriteBool(false); for (var i = 0; i < 90; i++) { var key = user.Character.FunctionKeys[i]; functionKeyPacket.WriteByte(key?.Type ?? 0); functionKeyPacket.WriteInt(key?.Action ?? 0); } quickSlotKeyPacket.WriteBool(false); for (var i = 0; i < 8; i++) { quickSlotKeyPacket.WriteInt(user.Character.QuickSlotKeys[i].Key); } _ = user.Dispatch(functionKeyPacket); _ = user.Dispatch(quickSlotKeyPacket); }