| 
  
 | 
//武将突破:武将升级后需要突破才能继续升级,突破可获得潜能 
 | 
using System.Collections.Generic; 
 | 
  
 | 
public partial class HeroInfo 
 | 
{ 
 | 
    //  突破配置 
 | 
    public HeroBreakConfig breakConfig { get; private set;} 
 | 
  
 | 
    //  品质突破配置 
 | 
    public HeroQualityBreakConfig qualityBreakConfig { get; private set;} 
 | 
  
 | 
    //  武将突破等级 
 | 
    public int breakLevel 
 | 
    { 
 | 
        get 
 | 
        { 
 | 
            if (itemHero == null) 
 | 
                return 0; 
 | 
            return itemHero.GetUseDataFirstValue(74); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    Dictionary<int, int> breakAttrs = new Dictionary<int, int>();   //潜能属性id:潜能值 
 | 
    //计算潜能属性 
 | 
    public void RefreshBreakAttr() 
 | 
    { 
 | 
        breakAttrs.Clear(); 
 | 
        for (int i = 0; i < breakLevel; i++) 
 | 
        { 
 | 
            var tmpBreakConfig = HeroBreakConfig.GetHeroBreakConfig(heroId, i); 
 | 
            if (tmpBreakConfig == null) 
 | 
                continue; 
 | 
            for(int j = 0; j < tmpBreakConfig.AttrIDList.Length; j++) 
 | 
            { 
 | 
                int id = tmpBreakConfig.AttrIDList[j]; 
 | 
                if (id == 0) 
 | 
                    continue; 
 | 
                if (!breakAttrs.ContainsKey(id)) 
 | 
                { 
 | 
                    breakAttrs.Add(id, tmpBreakConfig.AttrValueList[j]); 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    breakAttrs[id] += tmpBreakConfig.AttrValueList[j]; 
 | 
                } 
 | 
            } 
 | 
  
 | 
            if (tmpBreakConfig.SkillID != 0) 
 | 
            { 
 | 
                var skillConfig = SkillConfig.Get(tmpBreakConfig.SkillID); 
 | 
                if (skillConfig == null) continue; 
 | 
                if (allSkillTypeIDToID.ContainsKey(skillConfig.SkillTypeID)) 
 | 
                { 
 | 
                    var tmpSkillConfig = SkillConfig.Get(allSkillTypeIDToID[skillConfig.SkillTypeID]); 
 | 
                    if (skillConfig.SkillLV > tmpSkillConfig.SkillLV) 
 | 
                    { 
 | 
                        //取最大技能 
 | 
                        allSkillTypeIDToID[skillConfig.SkillTypeID] = tmpBreakConfig.SkillID; 
 | 
                    } 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    allSkillTypeIDToID[skillConfig.SkillTypeID] = tmpBreakConfig.SkillID; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public int GetBreakAttrValue(int attrType) 
 | 
    { 
 | 
        int value = 0; 
 | 
        breakAttrs.TryGetValue(attrType, out value); 
 | 
        return value; 
 | 
    } 
 | 
  
 | 
    public int GetBreakAttrPer(int attrType) 
 | 
    {  
 | 
        if (PlayerPropertyConfig.baseAttr2perDict.ContainsKey(attrType)) 
 | 
        { 
 | 
            var pertype = PlayerPropertyConfig.baseAttr2perDict[attrType]; 
 | 
            return breakAttrs.ContainsKey(pertype) ? breakAttrs[pertype] : 0; 
 | 
        } 
 | 
        return 0; 
 | 
    } 
 | 
} 
 |