コード例 #1
0
ファイル: ItemStatService.cs プロジェクト: hallgeirl/iagd
        private void ApplyMythicalBonuses(List <PlayerHeldItem> items)
        {
            var itemsWithXpacStat = items.Where(m => m.Tags.Any(s => s.Stat == "modifiedSkillName1"));

            foreach (var item in itemsWithXpacStat)
            {
                var affectedSkill  = item.Tags.FirstOrDefault(m => m.Stat == "modifiedSkillName1");
                var recordForStats = item.Tags.FirstOrDefault(m => m.Stat == "modifierSkillName1")?.TextValue;

                if (recordForStats == null || !_xpacSkills.ContainsKey(recordForStats))
                {
                    Logger.Warn($"Could not find stats for the skill {recordForStats}");
                    continue;
                }

                var name = affectedSkill?.TextValue;
                if (!string.IsNullOrEmpty(name))
                {
                    name = _databaseItemStatDao.GetSkillName(name);
                }
                item.ModifiedSkills.Add(new SkillModifierStat {
                    Tags = _xpacSkills[recordForStats],
                    Name = name
                });
            }
        }
コード例 #2
0
 public string GetSkillName(string skillRecord)
 {
     return(ThreadExecuter.Execute(
                () => repo.GetSkillName(skillRecord)
                ));
 }
コード例 #3
0
        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
                    });
                }
            }
        }