public void UpdateAbilityLevel(int level) { abilityLevel = level; if (LinkedAbility != null) { LinkedAbility.UpdateAbilityLevel(level); } }
public virtual void UpdateAbilityStats(EnemyData data) { IsUsable = true; IEnumerable <GroupType> tags = data.GroupTypes.Union(abilityBase.GetGroupTypes()); UpdateAbilityBonusProperties(tags); UpdateDamage(data, abilityBase.damageLevels, tags); UpdateTypeParameters(data, tags); UpdateShotParameters(data, tags); UpdateOnHitDataBonuses(data, tags); UpdateAbilityBuffData(data, tags); if (abilityCollider != null) { abilityCollider.abilityCollider.radius = TargetRange; } if (LinkedAbility != null) { LinkedAbility.UpdateAbilityStats(data, tags); } }
public virtual void UpdateAbilityStats(HeroData data) { IEnumerable <GroupType> tags = data.GroupTypes.Union(abilityBase.GetGroupTypes()); if (abilityBase.requiredRestrictions.Count > 0) { if (tags.Intersect(abilityBase.requiredRestrictions).Count() != abilityBase.requiredRestrictions.Count) { IsUsable = false; return; } } if (abilityBase.singleRequireRestrictions.Count > 0) { if (!tags.Intersect(abilityBase.singleRequireRestrictions).Any()) { IsUsable = false; return; } } IsUsable = true; UpdateAbilityBonusProperties(tags); UpdateDamage(data, abilityBase.damageLevels, tags); UpdateTypeParameters(data, tags); UpdateShotParameters(data, tags); UpdateOnHitDataBonuses(data, tags); UpdateAbilityBuffData(data, tags); if (abilityCollider != null) { abilityCollider.abilityCollider.radius = TargetRange; } if (LinkedAbility != null) { LinkedAbility.UpdateAbilityStats(data, tags); } }