Hey guys, I put together an interactive Excel tool that calculates Damage and Surge probabilities for a set of dice (4 max. atm). It also allows the user to put in additional modifications such as surge modifiers from weapons, skills, etc as well as fixed modifiers that sometimes come with hero abilities, skills, traps, familiars etc.
Using it you can easily compare different weapons and determine the odds to hit an enemy at a certain range. No typing needed - all input via buttons.
Here is what it looks like:
It comes with a short user reference in the first tab of the Excel sheet and the calculator itself on the second tab.
Get it from here:
https://boardgamegeek.com/filepage/138365/sadgits-descent-damage-calc
Suggestions, bug reports, etc. are greatly appreciated!
Descent Damage Calculator
I am going to add this to the Index of Useful Links under Community Tools & Game Aids. Thanks for sharing !
EDIT: Added
Edited by any2cardsGlad it is useful for the community.
Very cool! Did you think about doing this for defense? It should be somewhat simpler because instead of juggling damage, range, and surges, you've just got shields.
I really would love to implement this. However, the way I did it, with four attack dice I am already at 1296 possibilities aka rows in the data table.
Add another 2 or 3 (defense) dice and it becomes very hard to handle it with the simple approach I used. There would be over 40000 rows in the respective data table.
I guess someone who is better in probabilty maths than me can point out a way to do the calculations with an elegant equation.
Edited by HavocDreamsI actually meant a separate calculator, not combining defense into this one. This would probably (pun intended) have a much simpler probability table.
Will look into it, but need some time to recover from this last job ... took a lot longer than anticipated.
I once wrote a python program to calculate average and max/min damage as well as surge probabilities and average, max/min range. This can be used to calculate chances to pass a certain ability test as well.
However, the front end is of course non existing and yours is very nice.
I shall download your version and take a look at it over the weekend. Maybe I have some suggestions of how to improve it. Would be cool to have something to compare weapons.
Thanks for all the effort.
Ok HavocDreams, I took a quick look at your hidden tables but I since I have almost no knowledge about exel macros, I cannot comments on your approach in detail. On top of that I opened the the file with libe office and it doesn't work with that program properly. But I found your hidden tables and some modules. It seems to be a bit messy and cumbersome, but maybe that's just because I don't know where the actual code is hidden.
But, given that my python scripts work well and can be expanded easily, I wonder if we should start from there. I know its possible to create an exe from python code that works both for windows and linux and these are also ways to create a graphical interface, but I haven't tried that yet. Another Idea would be to run these scripts online (maybe to integrate that tool into an existing platform). Of course we can also improve the exel version.
So, I'm happy to help to push this project, but the main question to the community is:
Is there a demand for such a tool?
If a lot of people would be interested, I'm on board.
Edited by ChaoticusYes, the "code" I used is really crappy. It is some advanced excel equations. The VB macros are mostly for the front end. I do not have a background in any programing language and never used VB before. So I just googled a lot and used what worked. I am not sure if I can help you with anything other than graphics for the front end. But I am happy to stumble along if you take me
I think, that the best way to do this project properly is to create a website with the calculator that is optimized for input and display on mobile devices.
There is a good example for Imperial Assault here . Maybe we should talk to this guy first.
Edited by HavocDreamsThis is extremely nice. In fact this guy made his code public on GitHub.
Should be possible to make an Descent Version using his code and maybe extend it to allow item comparisons.
Great!
My 2 cents...
As I have done something similar and with excel also (for Descent but Also IA, attack and defense ) and it seems I'm not alone to work on a 'personal' version.. it seems there is 'some' demand. ;-)
Mine is even more complex than HavocDreams' one, as I have made a 'generator' for all probabilities.. whatever the number of dices!
but it's takes more than 1h (on excel) if more than 5 dices.
But as Chaoticus.... it's only raw data, there is no nice front end ! no beautiful graphics ! ;-)
My next step was to input all weapons in order to provide global stats comparisons for my group of heroes... but work and personal maters take my time and my work it's yet unfinished...
HavocDreams, just a notice, not sure running sums are the right approach (but only from my point of view! .. perhaps I'm too 'rigid' on some points! ;-) ).
of course it's statistics and all sort of calculations can be done, but as we have all the true data why give something that is not 'really' correct..
Here a simple example to show you my point :
take a single blue dice, and display surges : for range 6 you will have 17% ok 'on the global' it's correct.. if you roll a 6 you will have a surge so it's 100%
for range 5 you will have also 17% ... but the 5 on the dice as no surges!
if you take the running total so we are looking for 5 and 6 on the dice.. in this case it's rather 50%.
If I where to make a graphic taking into account range by something else.. proably I would display it like vertical lines range 2 from X:V% to Y:W% but from memory I concede it's not an easy task with excel
again it's only my way of seen things... probably it depends on what every one is looking for?
To finish this doesn't impact the fact you have done a great job !
Good to know that people are interested. Excel seems to be the wrong tool for something like that, especially if you want it to be a bit more elegant.
Thanks also for your input Felin; your points about the fact that surges, range and damage are bound to a specific face of each dice is certainly important.
In fact, one could simply calculate the average damage of probabilities of dealing >= x damage directly using math, but if you want to add surge abilities of any sort and have to account for that nasty 'X' then it gets a lot more complicated. So what I did is that: just 'roll' a dice n=3000 times with a random number generator and collect the results. Do the same for all dice and you have the data to calculate averages and probabilities with all modifications. If n is large enough, then this approach works. Works in fractions of a second. I'll see what I can do to provide a front end.
I've built some matlab scripts (similar language to python) that do the calculations using matricies- it doesn't take more than a few seconds to run (I've programmed up to 4 dice) but there is really no UI other than the matlab program.
Let's just say you have 6 sided die a and 6 sided die b. each face of a is a1, a2, a3...a6, and for b it's b1...b6. You can treat each as a 6x1 and 1x6 vector, respctively. Summing them gives you a 6x6 matrix, where each element is the sum of an element of a and b. If this matrix is called s, then s(1,1) = a1+b1. s(2,3)= a2 + b3. Each element of s is a result of rolling a and b. To add a third die, just convert the 36 elements of s into a single column and repeat the process with die c. You'll end up with a 36x6 table of results (this is easier than passing around a 6x6x6 matrix).
Anyway, I did it by inputing each die as a 6x3 matrix. For example, the red die is:
0 1 0
0 2 0
0 2 0
0 2 0
0 3 0
0 3 1
Where the first column is the range, second is damage, and third is surges. Each row is a face. You can treat each row as an element, so when rolling two reds, you get elements [0 1 0] + [0 1 0]). Defense is much simpler.
That seems amazing! A long while ago, I made a simple table with average damage for any combination of dice and surges (up to three surge effects). I don't see average results on your preview, so I assume you're not using them. Take a look at mine, and tell me if you want to include this to your work (the formulas are rather long):
@Felin: It is late here and maybe I do not get your point, but I think the "question" I asked might be different from yours. Staying with your example, I was asking: "What are the chances of hitting a monster at range 6 and roll a surge". The result is 17% (side 6 of a blue die). With range 5 to 3 it is still 17% as side 2 is the only side with another surge. Therefore, if I ask "What are the chances of hitting a monster at range 2 and roll a surge" the result is 33% (side 2 or 6.). My tool displays these values. Maybe you can try to explain what you think is wrong again?
@Zaltyre: Yeah, I though matrices are the way to go. But school is 20 years away ... and I never was really good at maths.
@AndrewMM: I like to take a look, but cells are locked atm.
Thanks for all the positive feedback, guys!
You can absolutely give Python a graphical interface if that's the way you want to go. I have developed a full application for Descent working on Windows using Tkinter and py2exe. You can also make it an app on Android using Kivy, which I've also done in a different project. Obviously you can also port that on to the iOS if you're willing to pay the absurd fee Apple require.
The website approach is probably the simplest one by far, though.
Plus graphs could be tricky to render properly, although I have never tried that. There are powerful libraries handling it in Python, if you're willing to dig into this.
Edited by IndalecioI'm gonna try to modify the code that has been written for the Imperial Assault calculator HavocDreams has linked above. I took a look at the code and I found the files I'd have to modify. Since I don't have any background in Visual Studio, I'm gonna need a bit to get this running. In order to combine a nice GUI plus online availability for everyone, this seems to be the way to go and there is already this template I can use.
However, I'm about to finish painting my miniatures, so I'm a bit busy right now
I hope I can provide a first version by the end of the next week.
@Felin: It is late here and maybe I do not get your point, but I think the "question" I asked might be different from yours. Staying with your example, I was asking: "What are the chances of hitting a monster at range 6 and roll a surge". The result is 17% (side 6 of a blue die). With range 5 to 3 it is still 17% as side 2 is the only side with another surge. Therefore, if I ask "What are the chances of hitting a monster at range 2 and roll a surge" the result is 33% (side 2 or 6.). My tool displays these values. Maybe you can try to explain what you think is wrong again?
your stats and numbers are correct !
As I sayd it's only my vision .. It's about what everyone likes to see.. and I like to stay as close as possible to the original data.
So I perfer for example to see individual range stats (range 6, 17%, 1 damage, 1 surge ; range 5, 17%, 1 damage, 0 surges ; ... ) in place of running sums.
But probably most people will want the same display as yours! ;-)
@Chaoticus, I am rather used to work with Visual Studio .. so if you have some questions / need advice just ask !
I would have proposed myself for the switch IA to Descent.. but I'm not a good graphist, and above all, I have so many other topics on my waiting list that I don't have time for it before a long time !
Another link that could be helpfull / give ideas even if less complex than IA/Descent : http://game2.ca/eote/#proficiency=3&challenge=2&force=2
in yet another language ! this time javascript.
So the work is finally done. I have adapted Matt Yellen's Damage calculator for imperial assault
http://mattyellen.github.io/imperial-assault-calculator/
to create a damage calculator for Descent:
https://chaoschaoticus.github.io/Descent-Damage-Calculator/
It is not yet perfectly clean (some graphics and buttons need to be reshaped), but it works. The only thing that doesn't work right now is the attribute test. I'm on it and will hopefully be able to deliver something that works in a week or so.
You find all the info you need to use the calculator in the tooltips of each button.
Please check out my work and feel free to suggest any modifications, report bugs, etc.
(Tested with firefox and google chrome. You have to wait about 10s after clicking the link to be redirected to the calculator)
I hope you like it
Edited by Chaoticus
Fantastic work! Thank you very much for this!
Is was actually a really nice exercise for me since I didn't knew anything about JavaScript before doing that.
I hope you're not mad that I nicked your project
Anyway: some additional work I plan to do:
1) Fix the plot to show either cumulative or absolute probabilities
2) Get the attribute tests to work
3) Fix the appearance on mobile devices (Header too large)
And maybe:
4) Attribute test probabilities for 4 characters in a single plot?
5) Add the mean damage/surges/defence to the plots ?
6) Add a button to set the price of a weapon to be able to compare weapons easier (i.e. mean damage per gold)?
Any other features you'd like to see?
Edited by ChaoticusI added this version of the Descent Damage Calculator to the Index of Useful Links.
Do to both HavocDream and Chaoticus' efforts, we have both an offline and online solution.
Hello,
after more than a year I can finally release an update for my damage calculator. (Thanks go to Sadgit for reminding me)
Fixed Issues:
1) Prettier Icons for the melee and Ranged attack (thanks go to Sadgit for providing the icons)
2) Buttons for AP (absolute Probability) and CP (cumulative Probability) resized to fit the text
New Features:
1) The Attribute test finally works (sorry it took so long)
2) Re-roll on X for the blue die
3) Setting the Attack die to the face (2 damage, 2 range, 1 surge) on X (i.e. max Damage)
The latter two options are still a bit experimental. They work, but are not intuitive and prone errors by the user.
This is how they work:
1) Set an attack (o.e. blue red)
1b) click calculate if you want to see the graph
2) click "Re-roll" or "set Attack" once. The number indicated in the blue die is decreased by 1 (and a modified blue attack die that gets you the chances for "re-roll on X" is included; this is invisible to the user)
3) click calculate
4) Click the "x" next to the dice to reset!
I need to think of a better way to add re-rolls. Especially since there are also weapons/skills that allow for a re-roll of a power die. Also, re-rolls will be added to the defence dice. Coming soon... (less than a year).
Any other features you'd like to see? I'm thinking of a drop-down menu to get the attributes for each hero quickly. Maybe I can do this also for the attack and defence pages to quickly compare items.