Esempio n. 1
0
        /// <summary>
        /// 刷新buff影响属性
        /// </summary>
        /// <param name="type"></param>
        public void RefreshAffectValue(eBuffEffectType type)
        {
            float tempValue = 0;

            foreach (var buff in mBuffers.Values)
            {
                if (buff.LogicType == eBuffLogicType.Fixed)
                {
                    tempValue += buff.GetEffectValue(type);
                }
            }
            switch (type)
            {
            case eBuffEffectType.影响生命百分比:
                mOwner.SetAttrBasePer(eValueType.Buff, eSkillAttrIndex.HPRate, tempValue);
                break;

            case eBuffEffectType.影响生命上限百分比:
                mOwner.SetAttrBasePer(eValueType.Buff, eSkillAttrIndex.MaxHPRate, tempValue);
                break;

            case eBuffEffectType.影响移动速度百分比:
                mOwner.SetAttrBasePer(eValueType.Buff, eSkillAttrIndex.SpeedRate, tempValue);
                break;

            case eBuffEffectType.影响攻击力百分比:
                mOwner.SetAttrBasePer(eValueType.Buff, eSkillAttrIndex.AtkRate, tempValue);
                break;

            case eBuffEffectType.影响闪避百分比:
                mOwner.SetAttrBasePer(eValueType.Buff, eSkillAttrIndex.DodgeRate, tempValue);
                break;

            case eBuffEffectType.影响命中百分比:
                mOwner.SetAttrBasePer(eValueType.Buff, eSkillAttrIndex.HitRate, tempValue);
                break;

            case eBuffEffectType.影响防御百分比:
                mOwner.SetAttrBasePer(eValueType.Buff, eSkillAttrIndex.Def_All, tempValue);
                break;
            }
            mOwner.UpdateAttr();
        }