public float GetAbilityValue(int casterLevel, BattleProperty casterProperty, BattleProperty targetProperty) { float abilityValue = baseValue + baseValueGrow * casterLevel; // additionSourceValue 附加值 if (m_AdditionSourceValues.Count > 0) { for (int i = 0; i < m_AdditionSourceValues.Count; i++) { AdditionSourceValue data = m_AdditionSourceValues[i]; AbilityValueSourceType abilityValueSourceType = data.abilityValueSourceType; int sourceValueCoefficient = data.sourceValueCoefficient; int sourceValueCoefficientGrow = data.sourceValueCoefficientGrow; int limitBasicValue = data.limitBasicValue; int limitBasicVlimitBasicValueGrowalue = data.limitBasicValueGrow; float coefficient = sourceValueCoefficient * 0.0001f + casterLevel * sourceValueCoefficientGrow * 0.0001f; int additionSourceValue = GetAdditionSourceValueFuncMap[abilityValueSourceType](casterProperty, targetProperty); float addition = additionSourceValue * coefficient; abilityValue += addition; } } return(abilityValue); }
public void AddAdditionValueParams(AbilityValueSourceType abilityValueSourceType, int sourceValueCoefficient, int sourceValueCoefficientGrow, int limitBasicValue, int limitBasicValueGrow) { AdditionSourceValue additionSourceValue = new AdditionSourceValue(abilityValueSourceType, sourceValueCoefficient, sourceValueCoefficientGrow, limitBasicValue, limitBasicValueGrow); m_AdditionSourceValues.Add(additionSourceValue); }