Thanks for that crazymanrb... I knew i should have paid more attention in maths..
Given that the thundering blazing starfall is now burst 2 which is a 5x5 grid, that could include some considerable damage...
Each target has a chance of adding yet more crit triggered thundering blazing starfalls, thus the DPR would go up even more. I take it the curve of the graph would curve steeper?
What other AOE DPR builds could I compare it with?
Anything else anyone can add?
Anyone with good math sense can tell how quickly the build explodes at more targets.
To be a bit more precise, my guesstimate was that at 10 targets, since each target has a 10% chance to generate an attack, each attack generates on average 1 more attack. However, eventually you will have a run of bad luck, and it will end. Expected DPR should be some very very large number.
Then at 11 targets, each attack generates 1.1 attacks, so the expected value becomes infinite.
I wrote a program to test my hypothesis:
Spoiler:
Show
#include
#include
#include
#define TRIALS 50000
#define DEFENSE 28
#define TO_HIT 23
#define HIT_DMG 30.0
#define CRIT_DMG 30.0
#define TARGETS 25
#define CRIT_RANGE 2
int d20(void);
int TwoD20_Drop_Lowest(void);
int main(void){
int i, j, k, attacks, roll;
double DPR;
srand((unsigned)time(NULL));
for(j=1;j<=TARGETS;j++){
DPR=0;
for(k=0;k attacks=1;
while(attacks>0){
for(i=0;i roll=d20();
if(21-roll<=CRIT_RANGE){attacks++;DPR+=CRIT_DMG;}
if(21-roll>CRIT_RANGE&&roll+TO_HIT>=DEFENSE) DPR+=HIT_DMG;
}
attacks--;
}
}
printf("Targets - %d, DPR - %lf\n", j, DPR/TRIALS);
}
while(1);
return(0);
}
int d20(void){
return(rand()%20+1);
}
int TwoD20_Drop_Lowest(void){
int i=d20(),j=d20();
if(i>j) return(i);
else return(j);
}
The program simulates your attack by rolling virtual dice many times (50000 at the moment) and spits out the average result.
For the output to accurately model your sorc, I would need a few variables.
1) HIT_DMG - Your average damage to a single target on a single hit (I input this as 30)
2) CRIT_DMG - Your average damage to a single target on a single crit (I input this as 60)
3) TO_HIT - Your bonus to hit (I input this as 23)
Here is the output with those numbers:
Targets - 1, DPR - 26.465400
Targets - 2, DPR - 59.989800
Targets - 3, DPR - 102.345000
Targets - 4, DPR - 160.113600
Targets - 5, DPR - 240.427200
Targets - 6, DPR - 359.103600
Targets - 7, DPR - 557.165400
Targets - 8, DPR - 948.451800
Targets - 9, DPR - 2163.465600
Targets - 10, DPR - 996188.122800
The margin of error with 1-9 targets is quite small. The value for number 10 however is very unpredictable and to obtain an accurate result you'd really have to compute it rather than simulate it.
The program takes a very, very long time to compute #10, and forever to compute #11. This is because #11 is infinite. If you watch the number of attacks it has remaining to evaluate with 11 targets the number just goes up and up and up.
Of course, real targets would eventually die. I simply assumed them all to have infinite HP. It would not be difficult to make a more realistic model which takes the HP of each target into consideration, but I don't see the point.
edit - Someone tell me how to stop the forums from eating parts of my code.