Page 2 of 3 FirstFirst 123 LastLast
Results 31 to 60 of 70
  1. - Top - End - #31
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Outcast_Shadow View Post
    Is this something I'm going to need to go in and correct manually on my particular version of the calculator or am I "good" now?
    The calculator has been updated to v2.1. If your version was created from a copy of version 2.0, then you would have to make a new copy in order to get the update.

  2. - Top - End - #32
    Pixie in the Playground
    Join Date
    Aug 2018
    Gender
    Male

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by LudicSavant View Post
    The calculator has been updated to v2.1. If your version was created from a copy of version 2.0, then you would have to make a new copy in order to get the update.
    No changes to the Save Calculator though, right?

  3. - Top - End - #33
    Pixie in the Playground
     
    DruidGuy

    Join Date
    Feb 2019
    Location
    Toronto

    Default Re: Comprehensive DPR Calculator (v2.0!)

    I want to say first that I love everything about this. Really appreciate the effort that's been put into this.

    It seems like everyone else is having no issues with the spreadsheet, wish I could say the same. I've opened the sheet and re-copied it multiple times, made sure the sheet I was copying to had both the attack and save sheets, opened the sheet in Chrome and in Firefox, and every single time all the outputs have been filled with errors.

    The input boxes seems to work perfectly. However the outputs are all #NAME? and when I put my cursor over them I get a Error Unknown Function:

    Most of the time the unknown function is TotalProb, but there are some critChance and maxDamage errors as well.

    Every single output box below row 100 are also filled exclusively with the same #NAME? errors, except for the GWM Crit Adjustment, which are just 0

    If anyone else has had this problem, or more importantly, knows how to fix this, I'd love to hear it

  4. - Top - End - #34
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Outcast_Shadow View Post
    No changes to the Save Calculator though, right?
    That's right!

    Quote Originally Posted by Shadhael View Post
    I want to say first that I love everything about this. Really appreciate the effort that's been put into this.

    It seems like everyone else is having no issues with the spreadsheet, wish I could say the same. I've opened the sheet and re-copied it multiple times, made sure the sheet I was copying to had both the attack and save sheets, opened the sheet in Chrome and in Firefox, and every single time all the outputs have been filled with errors.

    The input boxes seems to work perfectly. However the outputs are all #NAME? and when I put my cursor over them I get a Error Unknown Function:

    Most of the time the unknown function is TotalProb, but there are some critChance and maxDamage errors as well.

    Every single output box below row 100 are also filled exclusively with the same #NAME? errors, except for the GWM Crit Adjustment, which are just 0

    If anyone else has had this problem, or more importantly, knows how to fix this, I'd love to hear it
    I don't seem to be able to replicate this error, so I can only speculate as to the cause.

    The "#NAME" error messages mean that you're referencing functions which don't exist... and those functions (totalProb, etc) definitely exist, so there must be something blocking your access to them somehow.

    Is there anything on your end that blocks the use of scripts in webpages? Can you use other Google Spreadsheets with custom scripts? Are you able to reproduce this error on multiple devices?

  5. - Top - End - #35
    Pixie in the Playground
     
    DruidGuy

    Join Date
    Feb 2019
    Location
    Toronto

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by LudicSavant View Post
    I don't seem to be able to replicate this error, so I can only speculate as to the cause.

    The "#NAME" error messages mean that you're referencing functions which don't exist... and those functions (totalProb, etc) definitely exist, so there must be something blocking your access to them somehow.

    Is there anything on your end that blocks the use of scripts in webpages? Can you use other Google Spreadsheets with custom scripts? Are you able to reproduce this error on multiple devices?
    Fair enough. I'm glad this isn't an issue for most people.

    I figured that at least totalprob was an existing function, making why I can't access it all the more confusing. I can't find anything one way or the other about having scripts blocked. I uninstalled, reinstalled Java, no change. Tried opening the file on my old laptop, nothing new.

    Unfortunately I've used Excel much more than I have Sheets so I'm not terribly familiar with it. Looking at Sheets' Tool>Script Editor, there is nothing there. Any chance I just need to install a library of some kind? Maybe in the form of an Add-on (of which I also have none)?

    Google yields very little, but one nugget I found was how to write your own script. A sample was creating a DOUBLE function, and when I made that script it worked fine.

  6. - Top - End - #36
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Shadhael View Post
    Fair enough. I'm glad this isn't an issue for most people.

    I figured that at least totalprob was an existing function, making why I can't access it all the more confusing. I can't find anything one way or the other about having scripts blocked. I uninstalled, reinstalled Java, no change. Tried opening the file on my old laptop, nothing new.

    Unfortunately I've used Excel much more than I have Sheets so I'm not terribly familiar with it. Looking at Sheets' Tool>Script Editor, there is nothing there. Any chance I just need to install a library of some kind? Maybe in the form of an Add-on (of which I also have none)?

    Google yields very little, but one nugget I found was how to write your own script. A sample was creating a DOUBLE function, and when I made that script it worked fine.
    That's really strange. When you go to Tool>Script Editor you should see something like this this:

    Code:
    // Base probability of hitting a given AC with a given attack bonus.
    function toHit(atk, ac) {
    	return Math.max(Math.min(21-ac+atk,19),1)/20;
    }
    
    // Probability of a hit with the Halfling Luck feature:
    // that is, the probability of a hit, or a 1 becoming a hit.
    function luckP(p, isLucky) {
        if (isLucky) {
            return p*(1+1/20);
        }
        return p;
    }
    
    // Transform a base hit probability to include disadvantage
    // and (if applicable) Halfling Luck.
    function disadvP(p, isLucky) {
        // Disadvantage transform:
        // You have to hit with both dice.
    	var d = p*p;
        
        // Lucky transform:
        // If you get a 1 on either die, you missed, but you get
        // another shot.
        if (isLucky) {
            d += 2*p*p/20;
        }
        return d;
    }
    
    // Transform a base hit probability to include advantage
    // and (if applicable) Halfling Luck.
    function advanP(p, isLucky) {
        var a = 2*p - p*p;
        if (isLucky) {
            a += (2/20*(1-p)-1/400)*p;
        }
        return a;
    }
    
    // Transform a base hit probability to include Elven Accuracy
    // and (if applicable, though it's difficult to imagine why it
    // would be) Halfling Luck.
    function elvenP(p, isLucky) {
        var e = p*p*p + 3*p - 3*p*p;
        if (isLucky) {
            e += (3*(1-p)*(1-p)/20-3*(1-p)/400+1/8000)*p;
        }
        return e;
    }
    
    // Utility function: takes the probability distribution of a value X
    // and computes the probability distribution of X + D (for a single
    // die of size D).
    function convolve(arr, die) {
    	for (var i=1; i <= die; i += 1) {
    		arr.push(0);
    	}
    	
    	for (var j=arr.length-1; j >=0; j -= 1) {
    		arr[j] = 0;
    		for (var k=j-1; k>=j-die && k >=0; k -= 1) {
    			arr[j] += arr[k];
    		}
    		arr[j] /= die;
    	}
    	
    }
    
    // Compute the probability distribution of a pile of
    // d4, d6, d8, d10, and d12 rolls.
    function buffDist(four,six,eight,ten,twelve) {
    	var arr = [1];
        for (var i = 0; i < four; i++) {
        	convolve(arr, 4);
        }
        for (var i = 0; i < six; i++) {
        	convolve(arr, 6);
        }
        for (var i = 0; i < eight; i++) {
        	convolve(arr, 8);
        }
        for (var i = 0; i < ten; i++) {
        	convolve(arr, 10);
        }
        for (var i = 0; i < twelve; i++) {
        	convolve(arr, 12);
        }
        
        return arr;
    }
    
    // Compute the attack probability taking all variables into account:
    // attack bonus, AC, advantage, Elven Accuracy, and bonus dice (e.g. Bless).
    function totalProb(atk, ac, isAdvan, isElven, isLucky, four, six, eight, ten, twelve, mfour, msix, meight, mten, mtwelve) {
        var arr = buffDist(four, six, eight, ten, twelve);
        var negArr = buffDist(mfour, msix, meight, mten, mtwelve);
        
        var blessed = 0;
    	
        if (isAdvan == "No Advantage") {
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < negArr.length; j++) {
                    blessed += (arr[i]*negArr[j]*luckP(toHit(atk + i - j, ac),isLucky));
                }
            }
        }
        if (isAdvan == "Advantage" && isElven) {
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < negArr.length; j++) {
                    blessed += (arr[i]*negArr[j]*elvenP(toHit(atk + i - j, ac),isLucky));
                }
            }
        }
        if (isAdvan == "Advantage" && !isElven) {
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < negArr.length; j++) {
                    blessed += (arr[i]*negArr[j]*advanP(toHit(atk + i - j, ac),isLucky));
                }
            }
        }
        if (isAdvan == "Disadvantage") {
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < negArr.length; j++) {
                    blessed += (arr[i]*negArr[j]*disadvP(toHit(atk + i - j, ac),isLucky));
                }
            }
        }
        
        return blessed;
    }
    
    // Calculate the probability of a hit without any bonus dice.
    // (Simplified version of totalProb)
    // To add: Lucky
    function atkProb(atk, ac, isAdvan, isElven) {
        if (isAdvan == "No Advantage") {
        	return toHit(atk, ac);
        }
        if (isAdvan == "Advantage" && isElven) {
        	return elvenHit(atk, ac);
        }
        if (isAdvan == "Advantage" && !isElven) {
        	return advanHit(atk, ac);
        }
        if (isAdvan == "Disadvantage") {
        	return disadvHit(atk, ac);
        }
    }
    
    // Compute the crit chance given the relevant parameters:
    // the crit threshold (should normally be 20, except for things
    // like Champion features), and the presence of Advantage,
    // Elven Accuracy, and Halfling Luck.
    function critChance(threshold, isAdvan, isElven, isLucky) {
        if (threshold > 20 || threshold < 1) {
            return 0;
        }
        var p = (21-threshold)/20;
        if (isAdvan == "No Advantage") {
            c = luckP(p,isLucky);
        }
        if (isAdvan == "Advantage" && !isElven) {
            c = advanP(p,isLucky);
        }
        if (isAdvan == "Advantage" && isElven) {
            c = elvenP(p,isLucky);
        }
        if (isAdvan == "Disadvantage") {
            c = disadvP(p,isLucky);
        }
        
        return c;
    }
    
    // **********************************************************************
    // The following section focuses on computing SAVE probabilities,
    // which have the notable difference that there are no crits.
    
    // Compute the base save probability based on bonus and DC.
    function toSave(bonus, dc) {
    	return Math.max(Math.min(21-dc+bonus,20),0)/20;
    }
    
    // Probability of a hit with the Halfling Luck feature:
    // that is, the probability of a hit, or a 1 becoming a hit.
    function luckS(p, isLucky) {
        if (isLucky) {
            if (p == 1) {
                return p;
            } else {
                return p*(1+1/20);
            }
        }
        return p;
    }
    
    // Transform a base hit probability to include disadvantage
    // and (if applicable) Halfling Luck.
    function disadvS(p, isLucky) {
        // Disadvantage transform:
        // You have to hit with both dice.
    	var d = p*p;
        
        // Lucky transform:
        // If you get a 1 on either die and you missed,
        // you get another shot.
        if (isLucky) {
            if (p == 1) {
                return p;
            } else {
                d += 2*p*p/20;
            }
        }
        return d;
    }
    
    // Transform a base hit probability to include advantage
    // and (if applicable) Halfling Luck.
    function advanS(p, isLucky) {
        var a = 2*p - p*p;
        if (isLucky) {
            if (p == 1) {
                return p;
            } else {
                a += (2/20*(1-p)-1/400)*p;
            }
        }
        return a;
    }
    
    
    // Compute the save probability taking all variables into account:
    // save bonus, DC, advantage, and bonus dice (e.g. Bless).
    function saveProb(bonus, dc, isAdvan, isLucky, four, six, eight, ten, twelve, mfour, msix, meight, mten, mtwelve) {
        var arr = buffDist(four, six, eight, ten, twelve);
        var negArr = buffDist(mfour, msix, meight, mten, mtwelve);
        
        var blessed = 0;
    	
        if (isAdvan == "No Advantage") {
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < negArr.length; j++) {
                    blessed += (arr[i]*negArr[j]*luckS(toSave(bonus + i - j, dc),isLucky));
                }
            }
        }
        if (isAdvan == "Advantage") {
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < negArr.length; j++) {
                    blessed += (arr[i]*negArr[j]*advanS(toSave(bonus + i - j, dc),isLucky));
                }
            }
        }
        if (isAdvan == "Disadvantage") {
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < negArr.length; j++) {
                    blessed += (arr[i]*negArr[j]*disadvS(toSave(bonus + i - j, dc),isLucky));
                }
            }
        }
        
        return blessed;
    }
    
    // Compute the average DPR of a single attack.
    // Takes into account the chance of a hit, the damage from a hit,
    // the chance of a crit, and the damage on a crit (INCLUDING the damage
    // already dealt by an ordinary hit).
    function attackDPR(hitChance, hitDamage, critChance, critDamage) {
        return (hitChance - critChance)*hitDamage + critChance*critDamage;
    }
    
    // Compute the average output of a series of dice with a bonus.
    // The last two arguments are booleans to indicate whether the features
    // Great Weapon Fighting (Fighting Style) and Elemental Adept (Feat)
    // are active.
    function averageDamage(four, six, eight, ten, twelve, bonus, isGWF, isEA) {
        if (isGWF) {
            if (isEA) {
                return (3.125*four + (38/9)*six + (169/32)*eight + 6.32*ten + (529/72)*twelve + bonus);
            } else {
                return (3*four + (25/6)*six + 5.25*eight + 6.3*ten + (22/3)*twelve + bonus);
            }
        } else {
            if (isEA) {
                return (2.75*four + (11/3)*six + 4.625*eight + 5.6*ten + (79/12)*twelve + bonus);
            } else {
                return (2.5*four + 3.5*six + 4.5*eight + 5.5*ten + 6.5*twelve + bonus);
            }
        }
    }
    
    function minDamage(four, six, eight, ten, twelve, bonus) {
        return (four + six + eight + ten + twelve + bonus);
    }
    
    function maxDamage(four, six, eight, ten, twelve, bonus) {
        return (4*four + 6*six + 8*eight + 10*ten + 12*twelve + bonus);
    }

  7. - Top - End - #37
    Pixie in the Playground
     
    DruidGuy

    Join Date
    Feb 2019
    Location
    Toronto

    Default Re: Comprehensive DPR Calculator (v2.0!)

    There we go! Was a tense couple minutes while everything was LOADING! but it's all there now.

    Thanks a ton for the assist!

  8. - Top - End - #38
    Pixie in the Playground
    Join Date
    Apr 2019

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by LudicSavant View Post
    That's right!



    I don't seem to be able to replicate this error, so I can only speculate as to the cause.

    The "#NAME" error messages mean that you're referencing functions which don't exist... and those functions (totalProb, etc) definitely exist, so there must be something blocking your access to them somehow.

    Is there anything on your end that blocks the use of scripts in webpages? Can you use other Google Spreadsheets with custom scripts? Are you able to reproduce this error on multiple devices?
    Hi there. The calculator is excellent, so kudos! I was able to replicate the error yesterday by duplicating the DPR sheet several times (as if you wanted to calculate the each party member's DPR and send it all to one graph :D), close the page, and reopen it. I also did it by copying the sheet to a new document. It seems to be very hit or miss. Basically though, I think you're making too many calls to the script server, so it kicks you out. When you then go to the script editor, its empty.

    I messed around yesterday, and managed to get it to "half load". I got a bunch of #NAME? errors as well as a #ERROR!

    The error:

    "Service invoked too many times in a short time: exec qps. Try Utilities.sleep(1000) between calls. (line 0).'"

    Using google-fu, second result leads to StackOverflow, leading us to Google's app script help guide:

    "Each time a custom function is used in a spreadsheet, Google Sheets makes a separate call to the Apps Script server. If your spreadsheet contains dozens (or hundreds, or thousands!) of custom function calls, this process can be quite slow."

    Source: https://developers.google.com/apps-script/guides/sheets/functions#optimization

    I fixed mine by adding a column in each broken sheet. Worked yesterday, but not today. :/ Anyway, I hope this fills in some of the missing information for this problem!

    Regards. And thanks again for this great tool!

    edit: named the second error.
    Last edited by El_Magnifico; 2019-04-04 at 11:52 AM.

  9. - Top - End - #39
    Pixie in the Playground
    Join Date
    Feb 2019
    Location
    Fresno, CA
    Gender
    Male

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Amazing calculator, is there a way you could add damage types and the chance of enemies resisting them?

  10. - Top - End - #40
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by El_Magnifico View Post
    Hi there. The calculator is excellent, so kudos! I was able to replicate the error yesterday by duplicating the DPR sheet several times (as if you wanted to calculate the each party member's DPR and send it all to one graph :D), close the page, and reopen it. I also did it by copying the sheet to a new document. It seems to be very hit or miss. Basically though, I think you're making too many calls to the script server, so it kicks you out. When you then go to the script editor, its empty.

    I messed around yesterday, and managed to get it to "half load". I got a bunch of #NAME? errors as well as a #ERROR!

    The error:

    "Service invoked too many times in a short time: exec qps. Try Utilities.sleep(1000) between calls. (line 0).'"

    Using google-fu, second result leads to StackOverflow, leading us to Google's app script help guide:

    "Each time a custom function is used in a spreadsheet, Google Sheets makes a separate call to the Apps Script server. If your spreadsheet contains dozens (or hundreds, or thousands!) of custom function calls, this process can be quite slow."

    Source: https://developers.google.com/apps-s...s#optimization

    I fixed mine by adding a column in each broken sheet. Worked yesterday, but not today. :/ Anyway, I hope this fills in some of the missing information for this problem!

    Regards. And thanks again for this great tool!

    edit: named the second error.
    Wow, thanks for figuring this out! Our sheet does indeed use a great deal of custom function calls (mostly because we have to call our DPR functions for every single AC on the DPR by AC graphs).

    We'll look into it and see if we can find a workaround for this little idiosyncracy of Google's server setup.

  11. - Top - End - #41
    Dwarf in the Playground
     
    RangerGuy

    Join Date
    Apr 2018
    Location
    The Far Realm
    Gender
    Male

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by LudicSavant View Post
    The calculator has been updated to v2.1. If your version was created from a copy of version 2.0, then you would have to make a new copy in order to get the update.

    Thanks for the update fellas. Keep up the good work!

  12. - Top - End - #42
    Pixie in the Playground
    Join Date
    Aug 2018

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Great resource here, thanks for all the work to make this happen!

  13. - Top - End - #43
    Pixie in the Playground
    Join Date
    Aug 2018

    Default Re: Comprehensive DPR Calculator (v2.0!)

    This calculator is absolutely amazing!


    Would it be able to perhaps give the ability to show advantage for a single attack while still showing the total?

    For example a character with a familiar that provides the help action on my EK fighter, thus only giving advantage for the first attack.

    Thanks in advance!

  14. - Top - End - #44
    Dwarf in the Playground
     
    Planetar

    Join Date
    Jan 2018
    Location
    Roshar
    Gender
    Male

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by XZlayeD View Post
    This calculator is absolutely amazing!


    Would it be able to perhaps give the ability to show advantage for a single attack while still showing the total?

    For example a character with a familiar that provides the help action on my EK fighter, thus only giving advantage for the first attack.

    Thanks in advance!
    Hey, sorry for the delay!

    So, allowing this amount of granularity in the calculator (e.g. different effects on different attacks in a single-round routine) is a feature we noodled with a bit during development, but did not manage to implement; the only UI's we came up with were nightmarish, and there were other features we had prioritized putting our time into finishing.

    I think that would be on our to-do list if we ever build a v3.0. Though such a project would be a long way in the future.
    Spreading noble, cheerful insanity since [BIRTH DATE REDACTED]. Responds to Aureus, Mr. Fulgens, Brightlord Radiant, and That Nut Over There.

    Things I've worked on:
    Comprehensive DPR Calculator v2.0 (with LudicSavant)

    My expansive and highly professional homebrew portfolio currently contains:
    Art Cleric
    Lanayru Marsh Druid

  15. - Top - End - #45
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Telesphoros View Post
    Thanks for the update fellas. Keep up the good work!
    Quote Originally Posted by Skemo View Post
    Great resource here, thanks for all the work to make this happen!
    Quote Originally Posted by XZlayeD View Post
    This calculator is absolutely amazing!
    Quote Originally Posted by Mind's Eye View Post
    Amazing calculator, is there a way you could add damage types and the chance of enemies resisting them?
    Quote Originally Posted by El_Magnifico View Post
    Hi there. The calculator is excellent, so kudos!
    Thank you all for the kind words! It really does help to hear all the support.

    Quote Originally Posted by XZlayeD View Post
    Would it be able to perhaps give the ability to show advantage for a single attack while still showing the total?
    As is you'd have to do such calculations piecemeal. We fiddled with an interface that would let you do it all at once, but it didn't make it into 2.0 (mostly for reasons of keeping the UI inviting / prioritizing the time we spent on different features). Something like that may feature in a future update though.

    Quote Originally Posted by Mind's Eye View Post
    Amazing calculator, is there a way you could add damage types and the chance of enemies resisting them?
    What exactly do you mean by a chance of resisting? Enemies either have a damage resistance, or they do not.

    Anyways, we decided not to add elemental damage types for UI reasons. Basically, imagine if instead of having 1 line to input all your damage dice of each die size, you had to have separate lines saying "2 of these d6s are Acid, 3 are Fire," etc etc. It would really bulk up the interface. And while I'm cool with doing that when it will be very informative, I think people basically already have an intuitive idea of how Resistance impacts their damage (it approximately halves it for any source that has Resistance).

    Quote Originally Posted by Shadhael View Post
    There we go! Was a tense couple minutes while everything was LOADING! but it's all there now.

    Thanks a ton for the assist!
    Glad I could help!

  16. - Top - End - #46
    Pixie in the Playground
    Join Date
    Aug 2018

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by AureusFulgens View Post
    Hey, sorry for the delay!

    So, allowing this amount of granularity in the calculator (e.g. different effects on different attacks in a single-round routine) is a feature we noodled with a bit during development, but did not manage to implement; the only UI's we came up with were nightmarish, and there were other features we had prioritized putting our time into finishing.

    I think that would be on our to-do list if we ever build a v3.0. Though such a project would be a long way in the future.
    Thanks for the answer!

    Would it be possible to put it in like with "bonus action" attacks? that way one could give the "main attack" advantage, and not the rest?

    I really love this calc by the way! I got my DM convinced that my EK could get hex without the numbers spiraling out of control (still do less damage than our barbarian, which I could easily demonstrate with this)

  17. - Top - End - #47
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by XZlayeD View Post
    I really love this calc by the way! I got my DM convinced that my EK could get hex without the numbers spiraling out of control (still do less damage than our barbarian, which I could easily demonstrate with this)
    It warms my heart to hear stories like this. It's exactly what I was hoping this would contribute to the community; people making judgments based on tests and data instead of knee-jerk reactions and assumptions. So thank you for sharing!

    Quote Originally Posted by XZlayeD View Post
    Thanks for the answer!

    Would it be possible to put it in like with "bonus action" attacks? that way one could give the "main attack" advantage, and not the rest?
    It shouldn't be too hard to patch something like that in. I'll look into adding it for the next update (no promises when that will be).

  18. - Top - End - #48
    Halfling in the Playground
     
    DwarfClericGuy

    Join Date
    Apr 2019

    Default Re: Comprehensive DPR Calculator (v2.0!)

    This is my favorite resource that I have ever used for 5th Edition. Thanks so much for making this, nothing I've seen compares. Saw on the other thread that a new version had been made and decided to make an account just to say thanks. Been using it to test all sorts of homebrew and houserules (even an attempted 3d6 conversion, way more math than I'm used to doing. some real mad science.) and this has been insanely helpful.

  19. - Top - End - #49
    Halfling in the Playground
     
    DwarfClericGuy

    Join Date
    Apr 2019

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Sorry for the double reply, but I've got a question that I'd like clarified and I am neither good enough with math nor good enough with Google Sheets to figure out the answer for myself.


    How exactly is crit chance handled when dealing with multiple attacks in conjunction with "Bonus on First Hit" effects such as Zealot's Divine Fury, Sneak Attack, Divine Strike, etc? Does it always assume that the attacker uses these effects whenever possible?

    The reason I ask is, I noticed that some of these effects are actually worded differently from each other. For instance, Divine Fury and Colossus Slayer are worded to the effect of "the creature takes extra damage", but Sneak Attack and Divine Strike are worded to the effect of "you can deal extra damage".

    This latter case got me thinking. I was fiddling around with a Champion11/Rogue9 with Elven Accuracy, and was wondering if he might actually be wiser not to commit his Sneak Attack to his first hit if he thought he was likely to score a crit later in the round. According to the calculator, a Champion who crits on 19 and attacks 4 times in a round (CBE) with Elven Accuracy has roughly a 72% chance of landing at least one crit. So it seems to me that there might be some wisdom to this, but doing the math was starting to make my head spin.

    Similarly there are also cases where extra attackers with "bonus on first hit" are better off not power-attacking until after they land their first hit, but I don't know if any of this is within the scope of this project

  20. - Top - End - #50
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Zigludo View Post
    This is my favorite resource that I have ever used for 5th Edition. Thanks so much for making this, nothing I've seen compares. Saw on the other thread that a new version had been made and decided to make an account just to say thanks. Been using it to test all sorts of homebrew and houserules (even an attempted 3d6 conversion, way more math than I'm used to doing. some real mad science.) and this has been insanely helpful.
    You're welcome! And thank you for the kind words

    Quote Originally Posted by Zigludo View Post
    Sorry for the double reply, but I've got a question that I'd like clarified and I am neither good enough with math nor good enough with Google Sheets to figure out the answer for myself.

    How exactly is crit chance handled when dealing with multiple attacks in conjunction with "Bonus on First Hit" effects such as Zealot's Divine Fury, Sneak Attack, Divine Strike, etc? Does it always assume that the attacker uses these effects whenever possible?
    The function assumes that the attacker uses the effect at the first opportunity, as noted in the popup tooltip for the "damage on first hit" section (pretty much every function on the sheet has a pop-up tooltip, and we are extra careful to try to clear up ambiguities of this sort).

    Which means that we have to do a little extra work to solve your Champion/Rogue conundrum. So let's see if I can do that.

    Quote Originally Posted by Zigludo View Post
    This latter case got me thinking. I was fiddling around with a Champion11/Rogue9 with Elven Accuracy, and was wondering if he might actually be wiser not to commit his Sneak Attack to his first hit if he thought he was likely to score a crit later in the round. According to the calculator, a Champion who crits on 19 and attacks 4 times in a round (CBE) with Elven Accuracy has roughly a 72% chance of landing at least one crit. So it seems to me that there might be some wisdom to this, but doing the math was starting to make my head spin.
    Alright, so our goal here is to determine, upon landing any given hit, whether or not we should sneak attack right now or gamble on doing it later. Let's call it a "a bird in hand" option vs "gambler" option.

    So we can calculate two numbers, then see which one is bigger. Thankfully the calculator makes this a lot easier than it otherwise would be, but we still have to do a little bit of math ourselves.

    Bird in Hand option = (Damage on hit w/ Sneak Attack) + (DPR calculation for remaining hits, with the sneak attack option on the calculator turned off)
    Gambler option = (Damage on hit w/o Sneak Attack) + (DPR calculation for remaining hits, with the 5d6 sneak attack option on the calculator turned on)

    Note that the formula is the same whether this is attack 1, 2, 3, whatever. It's the damage on hit (not DPR) of the current hit + DPR of remaining hits to determine which one will have a greater DPR; you don't need to know past hits. You basically repeat the comparison on each successful hit until the Bird in Hand option is superior (which it always eventually will be). This is called a recursive algorithm.

    In the case of a 20 Dex Crossbow Expert / Sharpshooter Rogue 9 / Champion 11 with Elven Accuracy Advantage and the Archery fighting style using -5/+10 against AC 19, those numbers work out to...
    Bird in Hand option = (36) + (51.408) = 87.408
    Gambler option = (18.5) + (74.28323438) = 92.78323438

    In other words, gambling will provide a higher average DPR in this case.

    There is one additional factor to consider. Namely, that even if the average DPR is higher, you're making the distribution of your damage less bell-curved by gambling.

  21. - Top - End - #51
    Halfling in the Playground
     
    DwarfClericGuy

    Join Date
    Apr 2019

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Pretty happy to see my hunch validated by the math! Also kicking myself for not realizing how to work it out myself - yet another situation where your calculator comes in handy.

    Experimentation with the calculator has revealed some strange insights to me; for instance, I'm now under the impression that Fighters should very rarely continue to take Fighter levels past 11 in the interest of DPR. Kind of counterintuitive; you'd probably think that taking more Fighter levels would be the best way to get better at fighting with weapons. But it seems they're generally better off putting levels into Barbarian for Reckless Attack and Rage uptime, or levels in Rogue for Sneak Attack - or even both, for melee DEX Fighters. It helps with defense, too, since Barbarian has damage reduction via Rage and a larger hit die, and Rogue eventually gets Uncanny Dodge.

  22. - Top - End - #52
    Pixie in the Playground
    Join Date
    Aug 2018
    Gender
    Male

    biggrin Re: Comprehensive DPR Calculator (v2.0!)

    I'm going to have to look into what Zigludo brought up. That looks interesting.

    Once I found a few minutes of uninterrupted time (and a PM from Aureus) I was able to successfully alter my version of the DPRcalc to v 2.11. This has enabled us to really do all the calculations necessary for some legacy/crossover items from earlier 3.5 incarnations of D&D.

    Thanks again to you both.

    The next thing to put it to work on is a comparison of how a homebrew version of the Axe of Dwarven Lords will compare in its *whole* form to a couple of different prototypes in which it will break down into two "lesser" weapons (b/c I run a Dwarven Ranger that decided to go for TWF and a STR build!). Once we get it all tweaked out I'll throw an update this way again.

  23. - Top - End - #53
    Pixie in the Playground
    Join Date
    Aug 2018
    Gender
    Male

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Just noticed something a bit odd. Maybe Iím the only one getting this result and maybe *that* is due to my mucking with the sheet, BUT...

    Under the Outputs section, shouldnít minimum damage per hit reflect the minimum damage output from the least of all possible hits INCLUDING the bonus action attack?

    When Iím running the sheet (on my phone) the min damage per hit is basing solely off of the standard attack. That seems somehow odd.

  24. - Top - End - #54
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Outcast_Shadow View Post
    Just noticed something a bit odd. Maybe Iím the only one getting this result and maybe *that* is due to my mucking with the sheet, BUT...

    Under the Outputs section, shouldnít minimum damage per hit reflect the minimum damage output from the least of all possible hits INCLUDING the bonus action attack?

    When Iím running the sheet (on my phone) the min damage per hit is basing solely off of the standard attack. That seems somehow odd.
    That section is meant to be listing the damage on a single hit from your 'normal' attacks, rather than your 'bonus action' attacks. It's working as intended.

    Updated the tooltip to make this more clear.

  25. - Top - End - #55
    Pixie in the Playground
    Join Date
    Aug 2018
    Gender
    Male

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by LudicSavant View Post
    That section is meant to be listing the damage on a single hit from your 'normal' attacks, rather than your 'bonus action' attacks. It's working as intended.

    Updated the tooltip to make this more clear.
    The average dpr reflects the probabilities involved with an ďonly hitĒ in full routine being one of the bonus action attacks though, right?

  26. - Top - End - #56
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Outcast_Shadow View Post
    The average dpr reflects the probabilities involved with an ďonly hitĒ in full routine being one of the bonus action attacks though, right?
    The average DPR section factors in absolutely everything, yes. It's only the "damage on a single hit" section that reflects the damage of a specific attack.

    Incidentally, while I was checking up on this I made a small QoL update to the user interface:
    2.2 update: Input sections for dice now change color when there's a die entered into them, so it's easier to see all of your variables. Also added a fifth graph.

  27. - Top - End - #57
    Pixie in the Playground
    Join Date
    Aug 2018
    Gender
    Male

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by LudicSavant View Post
    Incidentally, while I was checking up on this I made a small QoL update to the user interface:
    2.2 update: Input sections for dice now change color when there's a die entered into them, so it's easier to see all of your variables. Also added a fifth graph.
    Arg... would like to ask how to update my version of the sheet to reflect these updates. Since Iím running a personally revised version itís not as simple for me to just d/l the updated revision.

    Thank you!

  28. - Top - End - #58
    Halfling in the Playground
     
    DwarfClericGuy

    Join Date
    Apr 2019

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by LudicSavant View Post
    Incidentally, while I was checking up on this I made a small QoL update to the user interface:
    2.2 update: Input sections for dice now change color when there's a die entered into them, so it's easier to see all of your variables. Also added a fifth graph.
    Well how about that. I was just about to make a post complaining about not being able to quickly discern if I had successfully emptied out all of the fields I wasn't using, so I pull up the thread and find this. You're a pro, LudicSavant.

  29. - Top - End - #59
    Ogre in the Playground
     
    MindFlayer

    Join Date
    Jun 2014
    Location
    Los Angeles

    Thumbs up Re: Comprehensive DPR Calculator (v2.0!)

    Quote Originally Posted by Zigludo View Post
    Well how about that. I was just about to make a post complaining about not being able to quickly discern if I had successfully emptied out all of the fields I wasn't using, so I pull up the thread and find this. You're a pro, LudicSavant.


    Stuff on the docket for future updates:
    - Implementing a workaround for the Google server calls thing that El Magnifico pointed out. This should make the entire sheet run faster.
    - Adding a function for stacking rerolls (Lucky/Indomitable/etc) to the saving throw sheet.
    - Adding the ability to set Advantage/Disadvantage separately for different attacks (e.g. you could make it so that only your first attack has Advantage, for instance). Per XZlayed's feature request.
    - Adding skill contests (such as for shoving/grappling).

    Let us know if there's anything else you'd like to see added.

    Quote Originally Posted by Outcast_Shadow View Post
    Arg... would like to ask how to update my version of the sheet to reflect these updates. Since Iím running a personally revised version itís not as simple for me to just d/l the updated revision.

    Thank you!
    Either you could re-implement your homebrew mods on the new sheet, or...

    - For the color changing thing, you would need to copy the conditional formatting from any of the dice input sections (on my sheet) to all of your modded sheet's input sections for dice or number of attacks (on your sheet). Relevant: https://stackoverflow.com/questions/...ent-to-another
    - For the graph, you would need to create a graph on your modded sheet and copy all the variables in the "Series" sections (both under the "Graph" and "Customize" tabs) from the graph in my sheet. That'll work as long as your mod hasn't changed anything under Row 104.

  30. - Top - End - #60
    Halfling in the Playground
     
    DwarfClericGuy

    Join Date
    Apr 2019

    Default Re: Comprehensive DPR Calculator (v2.0!)

    Just a little thing, but the green field thingy isn't showing up for the "Bonus on Crit" fields for the normal attack? It is on the bonus action attack, though. Seems like an oversight.
    See image: https://i.imgur.com/RgZl8cy.png

    I also feel like maybe it should be on the "Crits on" field as well? Maybe not.
    See image: https://i.imgur.com/jOpr9PJ.png

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •