private void UpdateCharDynamic(BattleResult battle, CharacterDynamic cd, string mapId, bool addExp = true) { cd.BattleTotalWait += battle.Wait; if (this._isDungeon) { cd.BattleDungeonTotalCount++; cd.BattleDungeonLevelTotalCount++; cd.BattleDungeonLevelTotalWait += battle.Wait; } else { cd.BattleTotalCount++; cd.BattleLevelTotalCount++; cd.BattleLevelTotalWait += battle.Wait; } if (addExp) { cd.BattleTotalExp += battle.DropExp; if (this.IsDungeon) { cd.BattleDungeonLevelTotalExp += battle.DropExp; } else { cd.BattleLevelTotalExp += battle.DropExp; } CharacterActivityCache.ClearCache(cd.CharId); if (battle.UpgradeLev == true) { CharacterCache.ClearCache(cd.CharId); } } if (battle.Success == true) { if (this._isDungeon) { cd.BattleDungeonWinCount++; cd.BattleDungeonLevelWinCount++; } else { cd.BattleWinCount++; cd.BattleLevelWinCount++; } } if (battle.GameItemsList != null) { var allMaps = this._site.InitAllMaps(); if (!string.IsNullOrEmpty(mapId)) { Map map = allMaps.FirstOrDefault(p => p.MapId == mapId); foreach (var item in battle.GameItemsList) { MapItem mi = MapItem.FromItem(item); cd.AppendItem(mapId, mi); if (map != null)//&& !map.ItemsVoList.ContainsKey(mi.ItemId)) { map.ItemsVoList[mi.ItemId] = mi; } } } } CharacterDynamicCache.SaveDynamic(cd); }