Example #1
0
    public static UtilityAbility FuseUtility(float points, ActiveAbility ability1, ActiveAbility ability2)
    {
        var cooldown   = ability1.cooldown;
        var mp         = ability1.mpUsage;
        var baseMp     = ability1.baseMpUsage;
        var targetType = ((UtilityAbility)ability1).targetType;
        var attributes = GetCombinedAttributes(ability1, ability2);
        var output     = AbilityScaler.ScaleUtilityAbility(points, cooldown, mp, baseMp, targetType, attributes, new AbilitySkillTree());

        output.skillTree = new AbilitySkillTree(output);
        return(output);
    }
    protected override void LevelUp(int originalLevel, int targetLevel)
    {
        LevelUp(targetLevel - originalLevel);
        float targetPoints = AbilityCalculator.GetPointsFromLevel(targetLevel);

        AbilityScaler.RemoveSkillTreeEnhancements(this);
        var newAbility = AbilityScaler.ScaleUtilityAbility(targetPoints, cooldown, mpUsage, baseMpUsage, targetType, attributes, skillTree);

        level       = targetLevel;
        points      = targetPoints;
        mpUsage     = newAbility.mpUsage;
        baseMpUsage = newAbility.baseMpUsage;
        attributes  = newAbility.attributes;
        AbilityScaler.AddSkillTreeEnhancements(this);
        description = AbilityDescriber.Describe(this);
    }