public void LoadExpensions() { var backpack = StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.BackPack); var backpackticket = StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.InventoryTicketUpgrade); var expension = (byte)((backpack ? 12 : 0) + (backpackticket ? 60 : 0)); InventoryService.Expensions[NoscorePocketType.Main] += expension; InventoryService.Expensions[NoscorePocketType.Equipment] += expension; InventoryService.Expensions[NoscorePocketType.Etc] += expension; }
public async Task SaveAsync() { try { var account = Session.Account; await _accountDao.TryInsertOrUpdateAsync(account).ConfigureAwait(false); CharacterDto character = (Character)MemberwiseClone(); await _characterDao.TryInsertOrUpdateAsync(character).ConfigureAwait(false); var quicklistEntriesToDelete = _quicklistEntriesDao .Where(i => i.CharacterId == CharacterId) !.ToList() .Where(i => QuicklistEntries.All(o => o.Id != i.Id)).ToList(); await _quicklistEntriesDao.TryDeleteAsync(quicklistEntriesToDelete.Select(s => s.Id).ToArray()).ConfigureAwait(false); await _quicklistEntriesDao.TryInsertOrUpdateAsync(QuicklistEntries).ConfigureAwait(false); // load and concat inventory with equipment var itemsToDelete = _inventoryItemInstanceDao .Where(i => i.CharacterId == CharacterId) !.ToList() .Where(i => InventoryService.Values.All(o => o.Id != i.Id)).ToList(); await _inventoryItemInstanceDao.TryDeleteAsync(itemsToDelete.Select(s => s.Id).ToArray()).ConfigureAwait(false); await _itemInstanceDao.TryDeleteAsync(itemsToDelete.Select(s => s.ItemInstanceId).ToArray()).ConfigureAwait(false); await _itemInstanceDao.TryInsertOrUpdateAsync(InventoryService.Values.Select(s => s.ItemInstance !).ToArray()).ConfigureAwait(false); await _inventoryItemInstanceDao.TryInsertOrUpdateAsync(InventoryService.Values.ToArray()).ConfigureAwait(false); var staticBonusToDelete = _staticBonusDao .Where(i => i.CharacterId == CharacterId) !.ToList() .Where(i => StaticBonusList.All(o => o.StaticBonusId != i.StaticBonusId)).ToList(); await _staticBonusDao.TryDeleteAsync(staticBonusToDelete.Select(s => s.StaticBonusId)).ConfigureAwait(false); await _staticBonusDao.TryInsertOrUpdateAsync(StaticBonusList).ConfigureAwait(false); await _titleDao.TryInsertOrUpdateAsync(Titles).ConfigureAwait(false); var minilandDto = (MinilandDto)_minilandProvider.GetMiniland(CharacterId); await _minilandDao.TryInsertOrUpdateAsync(minilandDto).ConfigureAwait(false); var questsToDelete = _characterQuestsDao .Where(i => i.CharacterId == CharacterId) !.ToList() .Where(i => Quests.Values.All(o => o.QuestId != i.QuestId)).ToList(); await _characterQuestsDao.TryDeleteAsync(questsToDelete.Select(s => s.Id)).ConfigureAwait(false); await _characterQuestsDao.TryInsertOrUpdateAsync(Quests.Values).ConfigureAwait(false); } catch (Exception e) { _logger.Error("Save Character failed. SessionId: " + Session.SessionId, e); } }