D20 Style Combat in RPG Maker

UPDATE: While the logic below is sound, a recent comment drew my attention to testing what I posted here to find a number of small but crucial JavaScript syntax errors that may cause the formula to result in always returning 0 (the universal RPG Maker sign that something broke). Here is the corrected formula for use in the Damage Formula:

b.def <= (Math.randomInt(20) + 1 + (Math.floor((MOD – 10)/2)) + (Math.floor(a.level/2))) ? Math.random(X*Y) + 1 + (Math.floor((a.atk – 10)/2)) : 0;

Substitute MOD for a.atk or a.mat or whatever parameter you want to use for the attack.  Substitute X for the number of dice. Substitute Y for the dice size (4,6,8,10,12,20).

Something I’ve often toyed with aside from my own game FateStone was the idea of re-creating a Dungeons & Dragons campaign in something like RPG Maker.  Seems easy right? You’ve got dungeons, monsters, characters all there and ready to go!  However, the big hurdle is quite simply that the way combat works does not overlap. Like at all.  RPG Maker’s combat calculations are more inspired by Final Fantasy or Dragon Quest than anything you’d find in a Pen & Paper RPG tome. So I recently put my mind to work on figuring out how exactly you would be able to bring a d20 or D&D Style of combat to a RPG Maker game.

Now take in mind that this is a very basic version of what I started working with.  While I have started working on versions to incorporate all the different D&D ability scores, I haven’t hammered out all the nitty gritty of using them.  So for now I strictly went for Attack Roll (Attack) vs AC (Defense) and Spell Attack (Magic Attack) vs Saving Throw (Magic Defense).

First is the dice roll:

1dX = Math.randomInt(X)+1

YdX = Math.randomInt((X*Y), Y) + 1

For the YdX formula, it’s important to note that you’ll be setting the range of the random numbers, when it says X*Y you should replace that with the actual value of X * Y.  In other words, for 3d6 don’t put (6 * 3) just put (18).  These formulas will be used for everything from determining the attack to the damage, so they are pretty much the cornerstone of this whole thing.  But another important one would be how to you get the Ability Modifier from the Ability Score.  For that you’ll want to use the following calculation:

Math.Floor((A – 10)/2) = M

A = Ability Score.  M = Ability Modifier.

In simple terms, you subtract 10 from the Score, divide that by 2 and round down (because you always round down in D&D) and that will give you the modifier.  So an Attack (Strength) of 14 would result in a modifier of 2.

So how would this work for an actual skill?  Well, let’s take a look at one.  First, you’ll want to set the Skill in RPG Maker to be a ‘Certain Hit’.  We are just going to skip the whole Accuracy/Evade cycle of the attack in favor of our own math.  Then our damage formula will look something like this:

If (b.def <= (Math.randomInt(20) + 1 + (Math.Floor((a.atk – 10)/2) + (Math.Floor(a.lvl / 2)) )) Math.random((X*Y), X) + 1 + (MOD – Math.Floor(a.level/2)); else 0

Kind of crazy, right?  Let’s break it down.

If (b.def <=: This First bit is essentially starting an ‘If-then’ clause that says if the following math results in something equal to or higher than our target’s defense (AC).

(Math.randomInt(20) + 1: This is our d20 roll.

+ (Math.Floor((a.atk – 10)/2): This is adding our attack modifier

+ (Math.Floor(a.lvl / 2)) )): This adds half our level to the math and finishes our If condition.  So it’s a random number between 1-20, plus the modifier, plus half our level.

Math.random((X*Y), X) + 1 + (Math.Floor((a.atk – 10)/2))This part is our damage calculation. Essentially, do this much damage (a random XdY dice amount) plus our Attack modifier damage.

else 0 And if the math DIDN’T equal or beat the Target’s Defense(AC), then deal zero damage due to it being a miss.

To summarize, the formula is basically:

If (Target AC) <= 1d20 + Attack Modifier + Half Level; Deal XdY + Attack Modifier damage; else deal no damage.

Naturally, you can probably imagine how this basic formula can be applied to a lot of different things.  It forms the basic idea for skill checks, saving throws, and pretty much any Difficulty Check based roll. You could replace the target defense with a d20 roll on the enemy side as well and have an opposed check.

As I said at the top, this isn’t perfect.  It doesn’t quite yet take into account D&D’s Ability Scores, which I’m still working on.  Mostly just stuck on thinking of a way to make the Target Defense side of things work when b.def would simply be their Constitution score or something.

If I ever figure out a good solution to it, I will let you know.

In the mean time, you might find the following plug ins for RPG Maker MV to be handy when it comes to recreating the D&D experience:

Yanfly’s Weapon Unleash: Allows you to reassign a different attack skill to different weapons, thus being able to give daggers a different damage formula than a great axe.

Yanfly’s Limited Skill Usages: For those interested in bringing D&D 4th Edition’s system of At-Will, Encounter and Daily abilities to the game, this plugin can help.  However, you might want to create a common event for sleeping that gets called when using an item like ‘Camping Set’ or something to reset the Daily uses.

Photo Fun: Hipster Cultists

There’s a bit of a running joke in our D&D group.  See in 4th Edition, The Chained God Tharizdun, is kind of portrayed as the long lost evil deity whose name has been lost to the ages because he was imprisoned at the dawn of time.  His true name is rarely if ever spoken, and most don’t even know he exists.  However, he is described as having “a few scattered cults of demented followers”.  Needless to say, while we were all shooting the breeze about stuff like the Dawn War, the difference between Devils and Demons, and various other lore related topics during a game a few weeks back, I couldn’t help but burst out laughing when the following image popped into my head.  It was too perfect. Why didn’t see it before?

What Doesn't Kill Ya: My D&D Injury System

Recently I had a new Dungeons & Dragons 4e campaign start, my first in over 6 months that I was DMing and the first time I had DMed a game since actually getting to sit on the player side of the screen.  Needless to say it made a big difference.  One thing I really wanted to do was patch up some of the holes that my last campaign had as well as some that observed in my gaming experiences.

A big one was going unconscious mid-battle should be a bigger deal than “Oh, I have to start making Death Saves”  So I got to searching for a good way to raise the stakes.  That’s when I stumbled upon this article on RoleplayingTips.com.  It describes a system in which a player sustains an injury when they get knocked out in battle, mostly taken from Dragon Age.   This was my starting point for coming up with my system and it doesn’t change too much from this except for a few minor things.

First of all, I’m not a big fan of unnecesary book keeping and taking a straight minus to an ability score creates just that.  Every skill associated with that ability score gets temporarily changed, the attacks and damage have to be altered, and if you want to be really mean it can alter your hit point total and number of healing surges as well.  Ultimately it just sounded like a big hassle and I wanted to really make it easy.  So I built a system around taking a loss that get tacked on to the end of roll instead of the beginning and having to rework a lot because of it.

My second change was I shortened up the list, but doubled up the results.  Essentially the list got halved and each injury gives minuses to two things.  Some are worse injuries to have than others to be sure, and to get some reprieve I inserted a chance that you would not receive an injury at all.  Also, a player can only suffer a maximum of three injuries at a time. I ended up with this chart:

Roll 1d6.
1 Injured Arm -1 to Attack and Damage Rolls
2 Injured Leg -1 to Speed and Initiative Rolls
3 Sore Skull -1 to Perception and Saving Throws
4 Bruised Rib Gain Vulnerable 2 to all damage
5 Stomach Wound Healing Surge Value is Reduced by 1/4
6 No Injury Sustained

Granted, that’s just for the Heroic tier.  I haven’t decided if it will scale in the other tiers of play but I have a good while to decide that.  The next task was to figure out how they can cure their injuries.  The easiest answer was that the next time they are in a non-hostile town (I call them Points of Civilization, which I explain to my players as “Somewhere that has a warm bed, a fluffy pillow, and they aren’t trying to kill you.”) however I wanted to get them a quicker solution.  So I came up with two ways to cure the injury: Rest at a point of civilization or make a Hard DC heal check.

The Hard DC heal check was in hopes that only someone trained in healing would be able to fix the injuries, but even those who aren’t can stand a chance.  The downside to the immediate gratification of healing it through a check is that there is a chance to flub it and make it worse.  A failed check will complicate the injury and make it worse, causing the effects to double (or in the case of a ‘Complicated Bruised Rib’ Vulnerable 5 instead of 2) and a complicated injury can ONLY be healed a point of a civilization.  Still not a complete show stopper, but it does give it a bit of gamble.

So that’s my current system that I’m using to handle injuries when they go unconscious.  It’s a quick and easy system that gives players a few options and still encourages them to not shrug off going unconscious.  Thanks for reading!