User:DanR/Agony Damage Ranges

From Guild Wars 2 Wiki
Jump to navigationJump to search


This is the minimum and maximum Agony damage that can be taken for each amount of Agony Resistance deficit, at any Fractal scale between 20 and 100. A "deficit" means having less AR than the official "Suggested Agony Resistance" amount for a particular scale. All damage in these tables represents a percentage of the characters maximum health.

Damage percent range at AR deficit (rounded to one decimal place)[edit]

Deficit: 0, Minimum damage: 1, Maximum damage: 1.2
Deficit: 1, Minimum damage: 1, Maximum damage: 2.4
Deficit: 2, Minimum damage: 1.5, Maximum damage: 3.6
Deficit: 3, Minimum damage: 2.7, Maximum damage: 4.8
Deficit: 4, Minimum damage: 3.9, Maximum damage: 6
Deficit: 5, Minimum damage: 5.1, Maximum damage: 7.2
Deficit: 6, Minimum damage: 6.3, Maximum damage: 8.4
Deficit: 7, Minimum damage: 7.5, Maximum damage: 9.6
Deficit: 8, Minimum damage: 8.7, Maximum damage: 10.8
Deficit: 9, Minimum damage: 9.9, Maximum damage: 12
Deficit: 10, Minimum damage: 11.1, Maximum damage: 13.2
Deficit: 11, Minimum damage: 12.3, Maximum damage: 14.4
Deficit: 12, Minimum damage: 13.5, Maximum damage: 15.6
Deficit: 13, Minimum damage: 14.7, Maximum damage: 16.8
Deficit: 14, Minimum damage: 15.9, Maximum damage: 18
Deficit: 15, Minimum damage: 17.1, Maximum damage: 19.2
Deficit: 16, Minimum damage: 18.3, Maximum damage: 20.4
Deficit: 17, Minimum damage: 19.5, Maximum damage: 21.6
Deficit: 18, Minimum damage: 20.7, Maximum damage: 22.8
Deficit: 19, Minimum damage: 21.9, Maximum damage: 24
Deficit: 20, Minimum damage: 23.1, Maximum damage: 25.2
Deficit: 21, Minimum damage: 24.3, Maximum damage: 26.4
Deficit: 22, Minimum damage: 25.5, Maximum damage: 27.6
Deficit: 23, Minimum damage: 26.7, Maximum damage: 28.8
Deficit: 24, Minimum damage: 27.9, Maximum damage: 30
Deficit: 25, Minimum damage: 29.1, Maximum damage: 31.2
Deficit: 26, Minimum damage: 30.3, Maximum damage: 32.4
Deficit: 27, Minimum damage: 31.5, Maximum damage: 33.6
Deficit: 28, Minimum damage: 32.7, Maximum damage: 34.8
Deficit: 29, Minimum damage: 33.9, Maximum damage: 36
Deficit: 30, Minimum damage: 35.1, Maximum damage: 37.2
Deficit: 31, Minimum damage: 36.3, Maximum damage: 38.4
Deficit: 32, Minimum damage: 37.5, Maximum damage: 39.6
Deficit: 33, Minimum damage: 38.7, Maximum damage: 40.8
Deficit: 34, Minimum damage: 39.9, Maximum damage: 42
Deficit: 35, Minimum damage: 41.1, Maximum damage: 43.2
Deficit: 36, Minimum damage: 42.3, Maximum damage: 44.4
Deficit: 37, Minimum damage: 43.5, Maximum damage: 45.6
Deficit: 38, Minimum damage: 44.7, Maximum damage: 46.8
Deficit: 39, Minimum damage: 45.9, Maximum damage: 48
Deficit: 40, Minimum damage: 47.1, Maximum damage: 49.2
Deficit: 41, Minimum damage: 48.3, Maximum damage: 50.4
Deficit: 42, Minimum damage: 49.5, Maximum damage: 51.6
Deficit: 43, Minimum damage: 50.7, Maximum damage: 52.8
Deficit: 44, Minimum damage: 51.9, Maximum damage: 54
Deficit: 45, Minimum damage: 53.1, Maximum damage: 55.2
Deficit: 46, Minimum damage: 54.3, Maximum damage: 56.4
Deficit: 47, Minimum damage: 55.5, Maximum damage: 57.6
Deficit: 48, Minimum damage: 56.7, Maximum damage: 58.8
Deficit: 49, Minimum damage: 57.9, Maximum damage: 60
Deficit: 50, Minimum damage: 59.1, Maximum damage: 61.2
Deficit: 51, Minimum damage: 60.3, Maximum damage: 62.4
Deficit: 52, Minimum damage: 61.5, Maximum damage: 63.6
Deficit: 53, Minimum damage: 62.7, Maximum damage: 64.8
Deficit: 54, Minimum damage: 63.9, Maximum damage: 66
Deficit: 55, Minimum damage: 65.1, Maximum damage: 67.2
Deficit: 56, Minimum damage: 66.3, Maximum damage: 68.4
Deficit: 57, Minimum damage: 67.5, Maximum damage: 69.6
Deficit: 58, Minimum damage: 68.7, Maximum damage: 70.8
Deficit: 59, Minimum damage: 69.9, Maximum damage: 72
Deficit: 60, Minimum damage: 71.1, Maximum damage: 73.2
Deficit: 61, Minimum damage: 72.3, Maximum damage: 74.4
Deficit: 62, Minimum damage: 73.5, Maximum damage: 75.6
Deficit: 63, Minimum damage: 74.7, Maximum damage: 76.8
Deficit: 64, Minimum damage: 75.9, Maximum damage: 78
Deficit: 65, Minimum damage: 77.1, Maximum damage: 79.2
Deficit: 66, Minimum damage: 78.3, Maximum damage: 80.4
Deficit: 67, Minimum damage: 79.5, Maximum damage: 81.6
Deficit: 68, Minimum damage: 80.7, Maximum damage: 82.8
Deficit: 69, Minimum damage: 81.9, Maximum damage: 84
Deficit: 70, Minimum damage: 83.1, Maximum damage: 85.2
Deficit: 71, Minimum damage: 84.3, Maximum damage: 86.4
Deficit: 72, Minimum damage: 85.5, Maximum damage: 87.6
Deficit: 73, Minimum damage: 86.7, Maximum damage: 88.8
Deficit: 74, Minimum damage: 87.9, Maximum damage: 90
Deficit: 75, Minimum damage: 89.1, Maximum damage: 91.2
Deficit: 76, Minimum damage: 90.3, Maximum damage: 92.4
Deficit: 77, Minimum damage: 91.5, Maximum damage: 93.6
Deficit: 78, Minimum damage: 92.7, Maximum damage: 94.8
Deficit: 79, Minimum damage: 93.9, Maximum damage: 96
Deficit: 80, Minimum damage: 95.1, Maximum damage: 97.2
Deficit: 81, Minimum damage: 96.3, Maximum damage: 98.4
Deficit: 82, Minimum damage: 97.5, Maximum damage: 99.6
Deficit: 83, Minimum damage: 98.7, Maximum damage: 100
Deficit: 84, Minimum damage: 99.9, Maximum damage: 100
Deficit: 85, Minimum damage: 100, Maximum damage: 100
Deficit: 86, Minimum damage: 100, Maximum damage: 100
Deficit: 87, Minimum damage: 100, Maximum damage: 100
Deficit: 88, Minimum damage: 100, Maximum damage: 100
Deficit: 89, Minimum damage: 100, Maximum damage: 100
Deficit: 90, Minimum damage: 100, Maximum damage: 100

Damage percent range at AR deficit (rounded to two decimal places)[edit]

Deficit: 0, Minimum damage: 1, Maximum damage: 1.22
Deficit: 1, Minimum damage: 1, Maximum damage: 2.42
Deficit: 2, Minimum damage: 1.49, Maximum damage: 3.62
Deficit: 3, Minimum damage: 2.69, Maximum damage: 4.82
Deficit: 4, Minimum damage: 3.89, Maximum damage: 6.02
Deficit: 5, Minimum damage: 5.09, Maximum damage: 7.22
Deficit: 6, Minimum damage: 6.29, Maximum damage: 8.42
Deficit: 7, Minimum damage: 7.49, Maximum damage: 9.62
Deficit: 8, Minimum damage: 8.69, Maximum damage: 10.82
Deficit: 9, Minimum damage: 9.89, Maximum damage: 12.02
Deficit: 10, Minimum damage: 11.09, Maximum damage: 13.22
Deficit: 11, Minimum damage: 12.29, Maximum damage: 14.42
Deficit: 12, Minimum damage: 13.49, Maximum damage: 15.62
Deficit: 13, Minimum damage: 14.69, Maximum damage: 16.82
Deficit: 14, Minimum damage: 15.89, Maximum damage: 18.02
Deficit: 15, Minimum damage: 17.09, Maximum damage: 19.22
Deficit: 16, Minimum damage: 18.29, Maximum damage: 20.42
Deficit: 17, Minimum damage: 19.49, Maximum damage: 21.62
Deficit: 18, Minimum damage: 20.69, Maximum damage: 22.82
Deficit: 19, Minimum damage: 21.89, Maximum damage: 24.02
Deficit: 20, Minimum damage: 23.09, Maximum damage: 25.22
Deficit: 21, Minimum damage: 24.29, Maximum damage: 26.42
Deficit: 22, Minimum damage: 25.49, Maximum damage: 27.62
Deficit: 23, Minimum damage: 26.69, Maximum damage: 28.82
Deficit: 24, Minimum damage: 27.89, Maximum damage: 30.02
Deficit: 25, Minimum damage: 29.09, Maximum damage: 31.22
Deficit: 26, Minimum damage: 30.29, Maximum damage: 32.42
Deficit: 27, Minimum damage: 31.49, Maximum damage: 33.62
Deficit: 28, Minimum damage: 32.69, Maximum damage: 34.82
Deficit: 29, Minimum damage: 33.89, Maximum damage: 36.02
Deficit: 30, Minimum damage: 35.09, Maximum damage: 37.22
Deficit: 31, Minimum damage: 36.29, Maximum damage: 38.42
Deficit: 32, Minimum damage: 37.49, Maximum damage: 39.62
Deficit: 33, Minimum damage: 38.69, Maximum damage: 40.82
Deficit: 34, Minimum damage: 39.89, Maximum damage: 42.02
Deficit: 35, Minimum damage: 41.09, Maximum damage: 43.22
Deficit: 36, Minimum damage: 42.29, Maximum damage: 44.42
Deficit: 37, Minimum damage: 43.49, Maximum damage: 45.62
Deficit: 38, Minimum damage: 44.69, Maximum damage: 46.82
Deficit: 39, Minimum damage: 45.89, Maximum damage: 48.02
Deficit: 40, Minimum damage: 47.09, Maximum damage: 49.22
Deficit: 41, Minimum damage: 48.29, Maximum damage: 50.42
Deficit: 42, Minimum damage: 49.49, Maximum damage: 51.62
Deficit: 43, Minimum damage: 50.69, Maximum damage: 52.82
Deficit: 44, Minimum damage: 51.89, Maximum damage: 54.02
Deficit: 45, Minimum damage: 53.09, Maximum damage: 55.22
Deficit: 46, Minimum damage: 54.29, Maximum damage: 56.42
Deficit: 47, Minimum damage: 55.49, Maximum damage: 57.62
Deficit: 48, Minimum damage: 56.69, Maximum damage: 58.82
Deficit: 49, Minimum damage: 57.89, Maximum damage: 60.02
Deficit: 50, Minimum damage: 59.09, Maximum damage: 61.22
Deficit: 51, Minimum damage: 60.29, Maximum damage: 62.42
Deficit: 52, Minimum damage: 61.49, Maximum damage: 63.62
Deficit: 53, Minimum damage: 62.69, Maximum damage: 64.82
Deficit: 54, Minimum damage: 63.89, Maximum damage: 66.02
Deficit: 55, Minimum damage: 65.09, Maximum damage: 67.22
Deficit: 56, Minimum damage: 66.29, Maximum damage: 68.42
Deficit: 57, Minimum damage: 67.49, Maximum damage: 69.62
Deficit: 58, Minimum damage: 68.69, Maximum damage: 70.82
Deficit: 59, Minimum damage: 69.89, Maximum damage: 72.02
Deficit: 60, Minimum damage: 71.09, Maximum damage: 73.22
Deficit: 61, Minimum damage: 72.29, Maximum damage: 74.42
Deficit: 62, Minimum damage: 73.49, Maximum damage: 75.62
Deficit: 63, Minimum damage: 74.69, Maximum damage: 76.82
Deficit: 64, Minimum damage: 75.89, Maximum damage: 78.02
Deficit: 65, Minimum damage: 77.09, Maximum damage: 79.22
Deficit: 66, Minimum damage: 78.29, Maximum damage: 80.42
Deficit: 67, Minimum damage: 79.49, Maximum damage: 81.62
Deficit: 68, Minimum damage: 80.69, Maximum damage: 82.82
Deficit: 69, Minimum damage: 81.89, Maximum damage: 84.02
Deficit: 70, Minimum damage: 83.09, Maximum damage: 85.22
Deficit: 71, Minimum damage: 84.29, Maximum damage: 86.42
Deficit: 72, Minimum damage: 85.49, Maximum damage: 87.62
Deficit: 73, Minimum damage: 86.69, Maximum damage: 88.82
Deficit: 74, Minimum damage: 87.89, Maximum damage: 90.02
Deficit: 75, Minimum damage: 89.09, Maximum damage: 91.22
Deficit: 76, Minimum damage: 90.29, Maximum damage: 92.42
Deficit: 77, Minimum damage: 91.49, Maximum damage: 93.62
Deficit: 78, Minimum damage: 92.69, Maximum damage: 94.82
Deficit: 79, Minimum damage: 93.89, Maximum damage: 96.02
Deficit: 80, Minimum damage: 95.09, Maximum damage: 97.22
Deficit: 81, Minimum damage: 96.29, Maximum damage: 98.42
Deficit: 82, Minimum damage: 97.49, Maximum damage: 99.62
Deficit: 83, Minimum damage: 98.69, Maximum damage: 100
Deficit: 84, Minimum damage: 99.89, Maximum damage: 100
Deficit: 85, Minimum damage: 100, Maximum damage: 100
Deficit: 86, Minimum damage: 100, Maximum damage: 100
Deficit: 87, Minimum damage: 100, Maximum damage: 100
Deficit: 88, Minimum damage: 100, Maximum damage: 100
Deficit: 89, Minimum damage: 100, Maximum damage: 100
Deficit: 90, Minimum damage: 100, Maximum damage: 100

Java source code used to generate the above tables[edit]

Note that this entire program is contained in a single Java class called "Start.java". The package name is "agonydamageranges", but that could be changed to any desired name.

package agonydamageranges;

import java.math.RoundingMode;
import java.text.DecimalFormat;

public class Start {

    public static void main(String[] args) {
        // Create an array containing the suggested agony resistance values
        // at each fractal scale. The index value represents the fractal scale.
        // The indexes go from 0 to 100. Ignore index zero.
        int[] suggestedAR = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 8, 10, 11, 13, 15, 17, 18, 20, 22, 24, 26, 27, 29,
            31, 33, 35, 36, 38, 40, 42, 43, 45, 47, 49, 50, 52, 54, 56, 57, 59,
            61, 63, 65, 67, 69, 70, 72, 74, 75, 77, 79, 81, 83, 85, 86, 88, 89,
            91, 93, 95, 97, 98, 100, 102, 104, 106, 107, 109, 111, 113, 115,
            116, 118, 121, 121, 124, 125, 127, 129, 130, 132, 134, 137, 138,
            140, 141, 143, 145, 146, 148, 150};
        // Create arrays for holding the minimum and maximum damage values.
        // Each index represents the minimum or maximum damage at a particular 
        // AR deficit. A deficit of zero means that a player has the official 
        // suggested AR. The arrays are initialized to a size of 151, to 
        // properly hold a range of deficits from 0-150.
        double[] minimumDamageAtDeficit = new double[151];
        double[] maximumDamageAtDeficit = new double[151];
        // Initialize each array with edge values.
        for (int deficit = 0; deficit <= 150; ++deficit) {
            minimumDamageAtDeficit[deficit] = 100;
            maximumDamageAtDeficit[deficit] = 1;
        }
        // Loop through each player agony resistance value from 0 to 150.
        for (int AR = 0; AR <= 150; ++AR) {
            // Loop through each fractal scale from 20 to 100.
            // (Scales 1-19 don't give any agony damage.)
            for (int scale = 20; scale <= 100; ++scale) {
                // Calculate the damage for the current AR at the current scale.
                double damage = CalculateDamagePercent(scale, AR);
                // Calculate the current deficit.
                int deficit = suggestedAR[scale] - AR;
                // Ignore negative values, because they represent an AR surplus.
                deficit = (deficit < 0) ? 0 : deficit;
                // Record the minimum damage at the current deficit.
                double previousLowest = minimumDamageAtDeficit[deficit];
                minimumDamageAtDeficit[deficit]
                        = (damage < previousLowest) ? damage : previousLowest;
                // Record the maximum damage at the current deficit.
                double previousHighest = maximumDamageAtDeficit[deficit];
                maximumDamageAtDeficit[deficit]
                        = (damage > previousHighest) ? damage : previousHighest;
            } // End: Scale loop.
        } // End: AR loop.
        // Print out all the minimum and maximum damage values.
        // Repeat the print out rounded to one and two decimal places.
        String[] formats = new String[]{"#.#", "#.##"};
        for (int formatIndex = 0; formatIndex <= 1; ++formatIndex) {
            DecimalFormat df = new DecimalFormat(formats[formatIndex]);
            df.setRoundingMode(RoundingMode.HALF_UP);
            System.out.println("Damage range at deficit:");
            for (int deficit = 0; deficit <= 90; ++deficit) {
                String min = df.format(minimumDamageAtDeficit[deficit]);
                String max = df.format(maximumDamageAtDeficit[deficit]);
                System.out.println("Deficit: " + deficit
                        + ", Minimum damage: " + min
                        + ", Maximum damage: " + max
                );
            }
        }
    }

    /**
     * CalculateDamagePercent, Calculates the amount of agony damage given to a
     * player per tick, for a particular fractal scale and particular amount of
     * agony resistance. Agony damage is reported as a percentage of a players
     * maximum health
     */
    public static double CalculateDamagePercent(
            double scale, double agonyResistance) {
        if (scale < 20 || scale > 150) {
            return 0;
        }
        double damage = (((scale * 2.136) - 33.0) - (agonyResistance * 1.2));
        damage = (damage < 1) ? 1 : damage;
        damage = (damage > 100) ? 100 : damage;
        return damage;
    }

}