public static void HandlePlayerLogin(ref PacketReader packet, WorldClass session) { byte[] guidMask = { 4, 2, 7, 1, 0, 5, 6, 3 }; byte[] guidBytes = { 5, 0, 1, 6, 7, 2, 3, 4 }; BitUnpack GuidUnpacker = new BitUnpack(packet); packet.Skip(4); var guid = GuidUnpacker.GetPackedValue(guidMask, guidBytes); Log.Message(LogType.Debug, "Character with Guid: {0}, AccountId: {1} tried to enter the world.", guid, session.Account.Id); session.Character = new Character(guid); if (!WorldMgr.AddSession(guid, ref session)) { Log.Message(LogType.Error, "A Character with Guid: {0} is already logged in", guid); return; } WorldMgr.WriteAccountDataTimes(AccountDataMasks.CharacterCacheMask, ref session); MiscHandler.HandleMessageOfTheDay(ref session); TimeHandler.HandleLoginSetTimeSpeed(ref session); SpecializationHandler.HandleUpdateTalentData(ref session); SpellHandler.HandleSendKnownSpells(ref session); MiscHandler.HandleUpdateActionButtons(ref session); if (session.Character.LoginCinematic) { CinematicHandler.HandleStartCinematic(ref session); } ObjectHandler.HandleUpdateObjectCreate(ref session); }