public Dictionary <string, float> GetSkillTiers() { return(ThreadExecuter.Execute( () => repo.GetSkillTiers() )); }
private void ApplyMythicalBonuses(List <PlayerHeldItem> items) { if (_xpacSkills == null) { Logger.Warn("Not applying mythical bonuses, still loading stats."); return; } var skillTiers = _databaseItemStatDao.GetSkillTiers(); var itemsWithXpacStat = items.Where(m => m.Tags != null && m.Tags.Any(s => s.Stat == "modifiedSkillName1")); foreach (var item in itemsWithXpacStat) { for (int i = 0; i < 5; i++) { var affectedSkill = item.Tags.FirstOrDefault(m => m.Stat == $"modifiedSkillName{i}"); var recordForStats = item.Tags.FirstOrDefault(m => m.Stat == $"modifierSkillName{i}")?.TextValue; if (recordForStats == null || !_xpacSkills.ContainsKey(recordForStats)) { continue; } var name = affectedSkill?.TextValue; if (!string.IsNullOrEmpty(name)) { name = _databaseItemStatDao.GetSkillName(name); } // For pet skills we got _xpacSkills layer to hop trough var petSkillRecord = _xpacSkills[recordForStats].Where(s => s.Stat == "petSkillName") .Select(s => s.TextValue).FirstOrDefault(); float?tier = null; if (skillTiers.ContainsKey(affectedSkill?.TextValue)) { tier = skillTiers[affectedSkill?.TextValue]; } // TODO: Mark monster infrequents /* * if (recordForStats.IndexOf("/mi/") != -1) { * * }*/ if (petSkillRecord != null) { if (_xpacSkills.ContainsKey(petSkillRecord)) { item.ModifiedSkills.Add(new SkillModifierStat { Class = ArzParser.ExtractClassFromRecord(petSkillRecord), Tags = _xpacSkills[petSkillRecord], Name = name, Tier = tier, IsMonsterInfrequent = recordForStats?.IndexOf("/mi/") != -1 }); } } // TODO: What's this? May be the cause of all the "no stats found" shit.. does it ever DO anything? item.ModifiedSkills.Add(new SkillModifierStat { Tags = _xpacSkills[recordForStats], Name = name }); } } }