Odd wish: a digital dice roller for 4th ed

I had an idea for cool thing for 4th ed...
There have been a few digital dice rollers over the years. However the tech has improved, so why not a small PDA like device, into which you can input your favourite attacks, Fort, Ref, WIll saves (maybe skill checks)

Then, have a row of buttons, which are assigned to these, easily seen:

Attk #1, Attk #2, Fort , Ref, Will

or the like.

Screen to display what the attack is and totals:
ATTK #1 FLaming Longsword +1, 1d20 (14) +8 = Hits AC 22
DAMAGE 1d8 (6)+4+1+1d6 (3) =Total of 14


Bracket numbers being the rolls.

Normal algorithims for random functions suck, IMHO, often very streaky. iirc, digital gambling and other systems that need *true* random functions, uses radioactive decay to provide a true random input for the maths. Lot of natural elements that DON'T pose any danger I'm sure could be used for that? (radioactive != dangerous, we're full of radioactive carbon 14, for example)

tad controverisal or not useable but something to think about for those of us who laothe the bad randomness seen in many games.
Unsure of any other systems viable for true randoms?

An audio effect when a Natural 20 is rolled would rock, hey imagine being able to put in say, a Micro SD card, so it plays an mp3 when a 20 is rolled:
*We are the Champions by Queen plays, or "There can be only One!" said by Kurgan from Highlander film * :p

backlighting/key lighting for dark rooms...hey, why not? :)
Dice are fun, but for osme speeding up play, having a electronic device etc maybe preffered.
 

log in or register to remove this ad

Well, if you're playing online, that DDI thing has a built in dicebox!

(And BTW, fort/ref/will saves are "flipped" now, so they work like AC. Mages use attack rolls for their spells.)
 

On my pda I have a device exactly like the one you are wishing for. You can program certain die rolls into it, and name them whatever you want (sword attack, sword damage, will save, etc). You can have it make a beep on a natural 20. It also works with non-d20 games, calculates success counts, "exploding" dice, THAC0, etc. It is called "dice roller" ironically enough and I use it on my clie all the time.
 

Zombie,
ah! I didn't know that about the saves :)

Well when playing at pal's house it be cool to pull out a digital dice device, rather than lose me bloody d20 under the table, lol ;)
While the DDI may have that built in, not much use round many folk's tables.
Though haveing a laptop with apps just for D&D...hm...
*Evil DM (tm) thoughts brew up*

Epochrpg,
hm, interesting :)
A dedicated D&D device though, I think maybe an attractive idea *hint hint WOTC*
 



I built a C# class a while back that handles normal dice notation (e.g. "2d6", "14d10+27", etc.). It doesn't do things like "4d6, drop lowest", but I'll see if I can dig up the source code for anyone who cares. It wouldn't be hard to drop into a small application that maintained a keyed list of some sort (Dictionary<string, string>) for named, stored rolls.
 

Mercule said:
I built a C# class a while back that handles normal dice notation (e.g. "2d6", "14d10+27", etc.). It doesn't do things like "4d6, drop lowest", but I'll see if I can dig up the source code for anyone who cares. It wouldn't be hard to drop into a small application that maintained a keyed list of some sort (Dictionary<string, string>) for named, stored rolls.
I'd like to view the source. Sounds cool to me.

There's also Dice Tool: http://rptools.net/doku.php?id=dicetool:intro
 

I took the easy way out and did it in perl, myself. It's adaptable to different systems, because it takes XdYkZ[+-]M as an argument on the command line. d20 works, as does 4d6k3+2 (four six-sided dice, keep the highest three, and add 2).

Now that I think about it, I should add an option -L or something, to specify that lower is better when keeping the best dice, and have higher is better as a default.

And I'm seconding the request - you put it in a C# class? That's awesome, I'd also like to see the source for that.
 

Here goes:

Code:
using System;

namespace GameMath
{
    public class Dice
    {
        private readonly int _count;
        private readonly int _type;
        private readonly int _modifier;

        public Dice(string formula)
        {
            int dSpot = formula.IndexOf("d");
            int opPlus = formula.IndexOf("+");
            int opMinus = formula.IndexOf("-");
            int opMod = Math.Max(opPlus, opMinus);

            if ((dSpot == -1)||((opPlus != -1)&&(opMinus!=-1))||(opMod!=-1)&&(dSpot>opMod))
            {
                throw new Exception("Incorrect formula for dice.");
            }

            string dieCount = formula.Substring(0, dSpot);
            _count = Convert.ToInt32(dieCount);
            if (opMod != -1)
            {
                string dieType = formula.Substring(dSpot + 1, opMod - dSpot - 1);
                string dieMod = formula.Substring(opMod + 1);
                _type = Convert.ToInt32(dieType);
                _modifier = Convert.ToInt32(dieMod);
            }
            else
            {
                string dieType = formula.Substring(dSpot + 1);
                _type = Convert.ToInt32(dieType);
                _modifier = 0;
            }
        }

        public int Roll()
        {
            int result = _modifier;
            Random iRoller = new Random();
            for(int i=1 ; i<=_count ; i++)
            {
                int iRoll = iRoller.Next(1, _type+1);
                result += iRoll;
            }

            return result;
        }
    }
}

Here's the code from a button that calls it:

Code:
        private void btnRoll_Click(object sender, EventArgs e)
        {
            Dice roller = new Dice(txtFormula.Text);
            lblResult.Text = roller.Roll().ToString();
        }

Pretty short and simple, but it works. At least, it works as far as I got it.... It did come off my stack of unfinished stuff, remember.
 

Remove ads

Top