コード例 #1
0
        public static bool DeleteCharacter(Player player)
        {
            using (DatabaseContext context = new DatabaseContext())
            {
                Player             character     = context.Characters.Find(player.CharacterId);
                List <Item>        items         = context.Items.Where(x => x.Owner.CharacterId == player.CharacterId).ToList();
                List <Buddy>       buddies       = context.Buddies.Where(x => x.Player.AccountId == player.CharacterId).ToList();
                List <QuestStatus> quests        = context.Quests.Where(x => x.Player.CharacterId == player.CharacterId).ToList();
                List <SkillTab>    skilltabs     = context.SkillTabs.Where(x => x.Player.CharacterId == player.CharacterId).ToList();
                List <Mail>        mails         = context.Mails.Where(x => x.PlayerId == player.CharacterId).ToList();
                List <Inventory>   inventories   = context.Inventories.Where(x => x.Id == player.Inventory.Id).ToList();
                BankInventory      bankInventory = context.BankInventories.First(x => x.Id == player.BankInventory.Id);
                Wallet             wallet        = context.Wallets.First(x => x.Id == player.Wallet.Id);
                Levels             level         = context.Levels.First(x => x.Id == player.Levels.Id);
                GameOptions        gameOptions   = context.GameOptions.First(x => x.Id == player.GameOptions.Id);
                Mailbox            mailBox       = context.MailBoxes.First(x => x.Id == player.Mailbox.Id);

                items.ForEach(x => context.Entry(x).State       = EntityState.Deleted);
                buddies.ForEach(x => context.Entry(x).State     = EntityState.Deleted);
                quests.ForEach(x => context.Entry(x).State      = EntityState.Deleted);
                skilltabs.ForEach(x => context.Entry(x).State   = EntityState.Deleted);
                inventories.ForEach(x => context.Entry(x).State = EntityState.Deleted);
                mails.ForEach(x => context.Entry(x).State       = EntityState.Deleted);
                context.Entry(wallet).State        = EntityState.Deleted;
                context.Entry(bankInventory).State = EntityState.Deleted;
                context.Entry(level).State         = EntityState.Deleted;
                context.Entry(gameOptions).State   = EntityState.Deleted;
                context.Entry(mailBox).State       = EntityState.Deleted;
                context.Entry(character).State     = EntityState.Deleted;

                return(SaveChanges(context));
            }
        }
コード例 #2
0
    private static void HandleMesos(GameSession session, PacketReader packet)
    {
        packet.ReadLong();
        byte          mode          = packet.ReadByte();
        long          amount        = packet.ReadLong();
        Wallet        wallet        = session.Player.Wallet;
        BankInventory bankInventory = session.Player.Account.BankInventory;

        if (mode == 1) // add mesos
        {
            if (wallet.Meso.Modify(-amount))
            {
                bankInventory.Mesos.Modify(amount);
            }
            return;
        }

        if (mode == 0) // remove mesos
        {
            if (bankInventory.Mesos.Modify(-amount))
            {
                wallet.Meso.Modify(amount);
            }
        }
    }
コード例 #3
0
ファイル: Account.cs プロジェクト: Zintixx/MapleServer2
 public Account(long accountId, dynamic data, BankInventory bankInventory, MushkingRoyaleStats royaleStats, List <Medal> medals, AuthData authData, GameSession gameSession)
 {
     Id                         = accountId;
     Username                   = data.username;
     PasswordHash               = data.password_hash;
     CreationTime               = data.creation_time;
     LastLoginTime              = data.last_login_time;
     CharacterSlots             = data.character_slots;
     Meret                      = new(CurrencyType.Meret, data.meret, gameSession);
     GameMeret                  = new(CurrencyType.GameMeret, data.game_meret, gameSession);
     EventMeret                 = new(CurrencyType.EventMeret, data.event_meret, gameSession);
     MesoToken                  = new(CurrencyType.MesoToken, data.meso_token, gameSession);
     BankInventory              = bankInventory;
     MushkingRoyaleStats        = royaleStats;
     VIPExpiration              = data.vip_expiration;
     HomeId                     = data.home_id ?? 0;
     MesoMarketDailyListings    = data.meso_market_daily_listings;
     MesoMarketMonthlyPurchases = data.meso_market_monthly_purchases;
     AuthData                   = authData;
     EquippedMedals             = new()
     {
         {
             MedalSlot.Tail,
             null
         },
         {
             MedalSlot.GroundMount,
             null
         },
コード例 #4
0
 public Account(long accountId, string username, string passwordHash,
                long creationTime, long lastLoginTime, int characterSlots, long meretAmount,
                long gameMeretAmount, long eventMeretAmount, long mesoTokens, long homeId, long vipExpiration, int mesoMarketDailyListings, int mesoMarketMonthlyPurchases,
                BankInventory bankInventory, MushkingRoyaleStats royaleStats, List <Medal> medals, AuthData authData, GameSession gameSession)
 {
     Id                         = accountId;
     Username                   = username;
     PasswordHash               = passwordHash;
     CreationTime               = creationTime;
     LastLoginTime              = lastLoginTime;
     CharacterSlots             = characterSlots;
     Meret                      = new(CurrencyType.Meret, meretAmount, gameSession);
     GameMeret                  = new(CurrencyType.GameMeret, gameMeretAmount, gameSession);
     EventMeret                 = new(CurrencyType.EventMeret, eventMeretAmount, gameSession);
     MesoToken                  = new(CurrencyType.MesoToken, mesoTokens, gameSession);
     BankInventory              = bankInventory;
     MushkingRoyaleStats        = royaleStats;
     VIPExpiration              = vipExpiration;
     HomeId                     = homeId;
     MesoMarketDailyListings    = mesoMarketDailyListings;
     MesoMarketMonthlyPurchases = mesoMarketMonthlyPurchases;
     AuthData                   = authData;
     EquippedMedals             = new()
     {
         { MedalSlot.Tail, null },
         { MedalSlot.GroundMount, null },
コード例 #5
0
 public long Insert(BankInventory bankInventory)
 {
     return(QueryFactory.Query(TableName).InsertGetId <long>(new
     {
         mesos = bankInventory.Mesos.Amount,
         extra_size = bankInventory.ExtraSize,
     }));
 }
コード例 #6
0
    private static Account ReadAccount(dynamic data)
    {
        BankInventory       bankInventory = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);
        MushkingRoyaleStats royaleStats   = DatabaseManager.MushkingRoyaleStats.FindById(data.mushking_royale_id);
        List <Medal>        medals        = DatabaseManager.MushkingRoyaleMedals.FindAllByAccountId(data.id);

        return(new(data.id, data, bankInventory, royaleStats, medals, null, null));
    }
コード例 #7
0
        private static Account ReadAccount(dynamic data)
        {
            BankInventory bankInventory = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);

            return(new Account(data.id, data.username, data.password_hash, data.creation_time, data.last_login_time,
                               data.character_slots, data.meret, data.game_meret, data.event_meret, data.meso_token, data.home_id ?? 0,
                               data.vip_expiration, bankInventory));
        }
コード例 #8
0
ファイル: BankManager.cs プロジェクト: Urthawen/codebreak
 /// <summary>
 ///
 /// </summary>
 /// <param name="accountId"></param>
 /// <returns></returns>
 public BankInventory GetBankByAccountId(long accountId)
 {
     if (!m_bankByAccountId.ContainsKey(accountId))
     {
         var bank = new BankInventory(BankRepository.Instance.GetByAccountId(accountId));
         m_bankByAccountId.Add(accountId, bank);
         return(bank);
     }
     return(m_bankByAccountId[accountId]);
 }
コード例 #9
0
 public Player()
 {
     Type      |= ObjectTypes.Player;
     inventory  = new PlayerInventory(this, (UpdateFields.PLAYER_FARSIGHT - UpdateFields.PLAYER_FIELD_INV_SLOT_HEAD) / 2);
     _equipment = new EquipmentInventory(this);
     _backPack  = new BackPackInventory(this);
     _bank      = new BankInventory(this);
     _bankBags  = new BankBagsInventory(this);
     _keyRing   = new KeyRingInventory(this);
 }
コード例 #10
0
    private static Account ReadAccount(dynamic data)
    {
        BankInventory       bankInventory = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);
        MushkingRoyaleStats royaleStats   = DatabaseManager.MushkingRoyaleStats.FindById(data.mushking_royale_id);
        List <Medal>        medals        = DatabaseManager.MushkingRoyaleMedals.FindAllByAccountId(data.id);

        return(new Account(data.id, data.username, data.password_hash, data.creation_time, data.last_login_time,
                           data.character_slots, data.meret, data.game_meret, data.event_meret, data.meso_token, data.home_id ?? 0,
                           data.vip_expiration, data.meso_market_daily_listings, data.meso_market_monthly_purchases, bankInventory, royaleStats, medals, null));
    }
コード例 #11
0
        /// <summary>
        /// Sends OpenBank to creature's client.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="bank"></param>
        /// <param name="race"></param>
        public static void OpenBank(Creature creature, BankInventory bank, BankTabRace race, string bankId, string bankTitle)
        {
            var packet = new Packet(Op.OpenBank, creature.EntityId);

            packet.PutByte(1);
            packet.PutByte((byte)race);
            packet.PutLong(DateTime.Now);
            packet.PutByte(0);
            packet.PutString(creature.Client.Account.Id);
            packet.PutString(bankId);
            packet.PutString(bankTitle);
            packet.PutInt(bank.Gold);

            var server = creature.Client.Account.Characters.FirstOrDefault(c => c.EntityId == packet.Id).Server;

            var tabList = bank.GetTabList(server, race);

            packet.PutInt(tabList.Count);
            foreach (var tab in tabList)
            {
                packet.PutString(tab.Name);
                packet.PutByte((byte)tab.Race);

                // [190200, NA204 (2015-05-19)] ?
                // Haven't opened a bank in a while, could've been
                // added earlier. -- exec
                {
                    packet.PutInt(0);
                }

                packet.PutInt(tab.Width);
                packet.PutInt(tab.Height);

                var itemList = tab.GetItemList();
                packet.PutInt(itemList.Count);
                foreach (var item in itemList)
                {
                    packet.PutString(item.Bank);
                    packet.PutLong(item.BankTransferRemaining);
                    packet.PutLong(item.BankTransferStart);
                    packet.AddItemInfo(item, ItemPacketType.Private);
                }
            }

            creature.Client.Send(packet);
        }
コード例 #12
0
ファイル: Send.NPCs.cs プロジェクト: cryptic-alt/aura
        /// <summary>
        /// Sends OpenBank to creature's client.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="bank"></param>
        /// <param name="race"></param>
        public static void OpenBank(Creature creature, BankInventory bank, BankTabRace race)
        {
            var packet = new Packet(Op.OpenBank, creature.EntityId);

            packet.PutByte(1);
            packet.PutByte((byte)race);
            packet.PutLong(DateTime.Now);
            packet.PutByte(0);
            packet.PutString(creature.Client.Account.Id);
            packet.PutString("Global");           // Current bank id
            packet.PutString("Bank");             // Current bank title
            packet.PutInt(bank.Gold);

            var tabList = bank.GetTabList(race);

            packet.PutInt(tabList.Count);
            foreach (var tab in tabList)
            {
                packet.PutString(tab.Name);
                packet.PutByte((byte)tab.Race);

                // [190200, NA204 (2015-05-19)] ?
                // Haven't opened a bank in a while, could've been
                // added earlier. -- exec
                {
                    packet.PutInt(0);
                }

                packet.PutInt(tab.Width);
                packet.PutInt(tab.Height);

                var itemList = tab.GetItemList();
                packet.PutInt(itemList.Count);
                foreach (var item in itemList)
                {
                    packet.PutString("Global");                     // Bank id
                    packet.PutULong(18446744017659355058);
                    packet.PutULong(0);
                    packet.AddItemInfo(item, ItemPacketType.Private);
                }
            }

            creature.Client.Send(packet);
        }
コード例 #13
0
        public static void UpdateItems(Player player)
        {
            Inventory inventory = player.Inventory;

            inventory.DB_Items = inventory.Items.Values.Where(x => x != null).ToList();
            inventory.DB_Items.AddRange(inventory.Equips.Values.Where(x => x != null).ToList());
            inventory.DB_Items.AddRange(inventory.Cosmetics.Values.Where(x => x != null).ToList());

            BankInventory bankInventory = player.BankInventory;

            bankInventory.DB_Items = bankInventory.Items.Where(x => x != null).ToList();

            using (DatabaseContext context = new DatabaseContext())
            {
                foreach (Item item in inventory.DB_Items)
                {
                    Item dbItem = context.Items.Include(x => x.Inventory).Include(x => x.BankInventory).FirstOrDefault(x => x.Uid == item.Uid);
                    if (dbItem == null)
                    {
                        item.Inventory            = inventory;
                        context.Entry(item).State = EntityState.Added;
                        continue;
                    }
                    item.BankInventory   = null;
                    dbItem.BankInventory = null;
                    context.Entry(dbItem).CurrentValues.SetValues(item);
                }

                foreach (Item item in bankInventory.DB_Items)
                {
                    Item dbItem = context.Items.Include(x => x.Inventory).Include(x => x.BankInventory).FirstOrDefault(x => x.Uid == item.Uid);
                    if (dbItem == null)
                    {
                        item.BankInventory        = bankInventory;
                        context.Entry(item).State = EntityState.Added;
                        continue;
                    }
                    item.Inventory   = null;
                    dbItem.Inventory = null;
                    context.Entry(dbItem).CurrentValues.SetValues(item);
                }
                SaveChanges(context);
            }
        }
コード例 #14
0
        public void Update(BankInventory bankInventory)
        {
            QueryFactory.Query(TableName).Where("id", bankInventory.Id).Update(new
            {
                mesos      = bankInventory.Mesos.Amount,
                extra_size = bankInventory.ExtraSize,
            });

            List <Item> items = new List <Item>();

            items.AddRange(bankInventory.Items.Where(item => item != null).ToList());
            foreach (Item item in items)
            {
                item.BankInventoryId = bankInventory.Id;
                item.InventoryId     = 0;
                item.HomeId          = 0;
                DatabaseManager.Items.Update(item);
            }
        }
コード例 #15
0
 private static void HandleClose(BankInventory bankInventory)
 {
     DatabaseManager.BankInventories.Update(bankInventory);
 }
コード例 #16
0
    /// <summary>
    /// Return the full player with the given id, with Hotbars, SkillTabs, Inventories, etc.
    /// </summary>
    /// <returns>Player</returns>
    public Player FindPlayerById(long characterId, GameSession session)
    {
        dynamic data = QueryFactory.Query(TableName).Where("character_id", characterId)
                       .Join("levels", "levels.id", "characters.levels_id")
                       .Join("accounts", "accounts.id", "characters.account_id")
                       .Join("game_options", "game_options.id", "characters.game_options_id")
                       .Join("wallets", "wallets.id", "characters.wallet_id")
                       .Join("auth_data", "auth_data.account_id", "characters.account_id")
                       .LeftJoin("homes", "homes.account_id", "accounts.id")
                       .Select(
            "characters.{*}",
            "levels.{level, exp, rest_exp, prestige_level, prestige_exp, mastery_exp}",
            "accounts.{username, password_hash, creation_time, last_log_time, character_slots, meret, game_meret, event_meret, meso_token, bank_inventory_id, mushking_royale_id, vip_expiration, meso_market_daily_listings, meso_market_monthly_purchases}",
            "game_options.{keybinds, active_hotbar_id}",
            "wallets.{meso, valor_token, treva, rue, havi_fruit}",
            "homes.id as home_id",
            "auth_data.{token_a, token_b, online_character_id}")
                       .FirstOrDefault();

        List <Hotbar>            hotbars         = DatabaseManager.Hotbars.FindAllByGameOptionsId(data.game_options_id);
        List <Macro>             macros          = DatabaseManager.Macros.FindAllByCharacterId(data.character_id);
        List <SkillTab>          skillTabs       = DatabaseManager.SkillTabs.FindAllByCharacterId(data.character_id, data.job);
        IInventory               inventory       = DatabaseManager.Inventories.FindById(data.inventory_id);
        BankInventory            bankInventory   = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);
        MushkingRoyaleStats      royaleStats     = DatabaseManager.MushkingRoyaleStats.FindById(data.mushking_royale_id);
        List <Medal>             medals          = DatabaseManager.MushkingRoyaleMedals.FindAllByAccountId(data.account_id);
        Dictionary <int, Trophy> trophies        = DatabaseManager.Trophies.FindAllByCharacterId(data.character_id);
        List <ClubMember>        clubMemberships = DatabaseManager.ClubMembers.FindAllClubIdsByCharacterId(data.character_id);

        foreach (KeyValuePair <int, Trophy> trophy in DatabaseManager.Trophies.FindAllByAccountId(data.account_id))
        {
            trophies.Add(trophy.Key, trophy.Value);
        }

        Dictionary <int, QuestStatus> questList = DatabaseManager.Quests.FindAllByCharacterId(data.character_id);
        AuthData authData = new(data.token_a, data.token_b, data.account_id, data.online_character_id ?? 0);

        return(new()
        {
            Session = session,
            CharacterId = data.character_id,
            AccountId = data.account_id,
            Account = new(data.account_id, data, bankInventory, royaleStats, medals, authData, session),
            CreationTime = data.creation_time,
            Birthday = data.birthday,
            Name = data.name,
            Gender = (Gender)data.gender,
            Awakened = data.awakened,
            ChannelId = data.channel_id,
            InstanceId = data.instance_id,
            IsMigrating = data.is_migrating,
            Job = (Job)data.job,
            Levels = new(data.level, data.exp, data.rest_exp, data.prestige_level, data.prestige_exp,
                         JsonConvert.DeserializeObject <List <MasteryExp> >(data.mastery_exp), session, data.levels_id),
            MapId = data.map_id,
            TitleId = data.title_id,
            InsigniaId = data.insignia_id,
            Titles = JsonConvert.DeserializeObject <List <int> >(data.titles),
            PrestigeRewardsClaimed = JsonConvert.DeserializeObject <List <int> >(data.prestige_rewards_claimed),
            PrestigeMissions = JsonConvert.DeserializeObject <List <PrestigeMission> >(data.prestige_missions),
            GearScore = data.gear_score,
            MaxSkillTabs = data.max_skill_tabs,
            ActiveSkillTabId = data.active_skill_tab_id,
            GameOptions = new GameOptions(JsonConvert.DeserializeObject <Dictionary <int, KeyBind> >(data.keybinds),
                                          hotbars, data.active_hotbar_id, data.game_options_id),
            Macros = macros,
            Wallet = new Wallet(data.meso, data.valor_token, data.treva, data.rue, data.havi_fruit, session, data.wallet_id),
            Inventory = inventory,
            ChatSticker = JsonConvert.DeserializeObject <List <ChatSticker> >(data.chat_sticker),
            SavedCoord = JsonConvert.DeserializeObject <CoordF>(data.coord),
            Emotes = JsonConvert.DeserializeObject <List <int> >(data.emotes),
            FavoriteStickers = JsonConvert.DeserializeObject <List <int> >(data.favorite_stickers),
            GuildApplications = JsonConvert.DeserializeObject <List <GuildApplication> >(data.guild_applications),
            GuildId = data.guild_id ?? 0,
            ClubMembers = clubMemberships,
            IsDeleted = data.is_deleted,
            Motto = data.motto,
            ProfileUrl = data.profile_url,
            ReturnCoord = JsonConvert.DeserializeObject <CoordF>(data.return_coord),
            ReturnMapId = data.return_map_id,
            SkinColor = JsonConvert.DeserializeObject <SkinColor>(data.skin_color),
            StatPointDistribution = JsonConvert.DeserializeObject <StatDistribution>(data.statpoint_distribution),
            Stats = JsonConvert.DeserializeObject <Stats>(data.stats),
            TrophyCount = JsonConvert.DeserializeObject <int[]>(data.trophy_count),
            UnlockedMaps = JsonConvert.DeserializeObject <List <int> >(data.unlocked_maps),
            UnlockedTaxis = JsonConvert.DeserializeObject <List <int> >(data.unlocked_taxis),
            VisitingHomeId = data.visiting_home_id,
            SkillTabs = skillTabs,
            TrophyData = trophies,
            QuestData = questList,
            GatheringCount = JsonConvert.DeserializeObject <List <GatheringCount> >(data.gathering_count),
            ActivePet = DatabaseManager.Items.FindByUid(data.active_pet_item_uid)
        });
    }
コード例 #17
0
        /// <summary>
        /// Return the full player with the given id, with Hotbars, SkillTabs, Inventories, etc.
        /// </summary>
        /// <returns>Player</returns>
        public Player FindPlayerById(long characterId)
        {
            dynamic data = QueryFactory.Query(TableName).Where("character_id", characterId)
                           .Join("levels", "levels.id", "characters.levels_id")
                           .Join("accounts", "accounts.id", "characters.account_id")
                           .Join("game_options", "game_options.id", "characters.game_options_id")
                           .Join("wallets", "wallets.id", "characters.wallet_id")
                           .LeftJoin("homes", "homes.account_id", "accounts.id")
                           .Select(
                "characters.{*}",
                "levels.{level, exp, rest_exp, prestige_level, prestige_exp, mastery_exp}",
                "accounts.{username, password_hash, creation_time, last_login_time, character_slots, meret, game_meret, event_meret, meso_token, bank_inventory_id, vip_expiration}",
                "game_options.{keybinds, active_hotbar_id}",
                "wallets.{meso, valor_token, treva, rue, havi_fruit}",
                "homes.id as home_id")
                           .FirstOrDefault();

            List <Hotbar>            hotbars       = DatabaseManager.Hotbars.FindAllByGameOptionsId(data.game_options_id);
            List <SkillTab>          skillTabs     = DatabaseManager.SkillTabs.FindAllByCharacterId(data.character_id, data.job);
            Inventory                inventory     = DatabaseManager.Inventories.FindById(data.inventory_id);
            BankInventory            bankInventory = DatabaseManager.BankInventories.FindById(data.bank_inventory_id);
            Dictionary <int, Trophy> trophies      = DatabaseManager.Trophies.FindAllByCharacterId(data.character_id);

            foreach (KeyValuePair <int, Trophy> trophy in DatabaseManager.Trophies.FindAllByAccountId(data.account_id))
            {
                trophies.Add(trophy.Key, trophy.Value);
            }
            List <QuestStatus> questList = DatabaseManager.Quests.FindAllByCharacterId(data.character_id);

            return(new Player()
            {
                CharacterId = data.character_id,
                AccountId = data.account_id,
                Account = new Account(data.account_id, data.username, data.password_hash, data.creation_time, data.last_login_time, data.character_slots,
                                      data.meret, data.game_meret, data.event_meret, data.meso_token, data.home_id ?? 0, data.vip_expiration, bankInventory),
                CreationTime = data.creation_time,
                Name = data.name,
                Gender = data.gender,
                Awakened = data.awakened,
                Job = (Job)data.job,
                Levels = new Levels(data.level, data.exp, data.rest_exp, data.prestige_level, data.prestige_exp, JsonConvert.DeserializeObject <List <MasteryExp> >(data.mastery_exp), data.levels_id),
                MapId = data.map_id,
                TitleId = data.title_id,
                InsigniaId = data.insignia_id,
                Titles = JsonConvert.DeserializeObject <List <int> >(data.titles),
                PrestigeRewardsClaimed = JsonConvert.DeserializeObject <List <int> >(data.prestige_rewards_claimed),
                MaxSkillTabs = data.max_skill_tabs,
                ActiveSkillTabId = data.active_skill_tab_id,
                GameOptions = new GameOptions(JsonConvert.DeserializeObject <Dictionary <int, KeyBind> >(data.keybinds), hotbars, data.active_hotbar_id, data.game_options_id),
                Wallet = new Wallet(data.meso, data.valor_token, data.treva, data.rue, data.havi_fruit, data.wallet_id),
                Inventory = inventory,
                ChatSticker = JsonConvert.DeserializeObject <List <ChatSticker> >(data.chat_sticker),
                ClubId = data.club_id,
                Coord = JsonConvert.DeserializeObject <CoordF>(data.coord),
                Emotes = JsonConvert.DeserializeObject <List <int> >(data.emotes),
                FavoriteStickers = JsonConvert.DeserializeObject <List <int> >(data.favorite_stickers),
                GroupChatId = JsonConvert.DeserializeObject <int[]>(data.group_chat_id),
                GuildApplications = JsonConvert.DeserializeObject <List <GuildApplication> >(data.guild_applications),
                GuildId = data.guild_id ?? 0,
                IsDeleted = data.is_deleted,
                Mapleopoly = JsonConvert.DeserializeObject <Mapleopoly>(data.mapleopoly),
                Motto = data.motto,
                ProfileUrl = data.profile_url,
                ReturnCoord = JsonConvert.DeserializeObject <CoordF>(data.return_coord),
                ReturnMapId = data.return_map_id,
                SkinColor = JsonConvert.DeserializeObject <SkinColor>(data.skin_color),
                StatPointDistribution = JsonConvert.DeserializeObject <StatDistribution>(data.statpoint_distribution),
                Stats = JsonConvert.DeserializeObject <PlayerStats>(data.stats),
                TrophyCount = JsonConvert.DeserializeObject <int[]>(data.trophy_count),
                UnlockedMaps = JsonConvert.DeserializeObject <List <int> >(data.unlocked_maps),
                UnlockedTaxis = JsonConvert.DeserializeObject <List <int> >(data.unlocked_taxis),
                VisitingHomeId = data.visiting_home_id,
                SkillTabs = skillTabs,
                TrophyData = trophies,
                QuestList = questList
            });
        }