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.

My 5e D&D Injury System

So a while back I made a post detailing my “Injury System” for Dungeons & Dragons 4th Edition.  It was roughly modeled after the Dragon Age: Origins injuries but without all the unruly book keeping that came with the ups and downs of temporarily changing ability scores.   Well, now a new edition of the game is upon us and I figured why the heck not update that old chart for the newest edition of the game.  It’s something to work with right?  While the new Dungeon Master’s Guide DOES have an Injury chart, it feels a bit severe and well – permanent – than some of my injuries. My injuries are things you see happening to inconvenience someone that they would sustain in a fight.  The official table in the book is like…  OH BAHAMUT YOU ARE #$%&ED UP!  I mean, losing body parts? Yeuch!  So here’s MY chart:

Roll 1d6
Roll Result Normal Effect Complicated Effect
1 Injured Arm Disadvantage on Strength Checks & Saves Disadvantage on Strength checks & saves. Disadvantage on Melee & Ranged attack rolls.
2 Injured Leg Disadvantage on Dexterity Checks & Saves. Speed reduced by 5 feet. Disadvantage on Dexterity check & saves. Speed reduced by 15 feet.
3 Cracked Skull Disadvantage on Wisdom and Intelligence Checks & Saves Disadvantage on Wisdom and Intelligence rolls. Including spell attack rolls. Can’t use spells that use concentration.
4 Cracked Rib Disadvantage on Constitution Checks & Saves.  Disadvantage on Constitution rolls. Vulnerable to Piercing, Slashing, and Bludgeoning damage.
5 Stomach Wound No CON modifier when you roll hit dice. No CON modifier when you roll hit dice. Hit dice roll is halved (round down.)
6 No Injury Sustained

As before, falling unconscious will result in one injury from the normal effect column (unless they roll a 6.) This injury can be treated in a town or city (DM Tip: feel free to charge a physician’s fee, or have a doctor ask a favor for treatment. Great story hook!) or by a DC 15 Wisdom (Medicine) check in the field and outside of combat.  However, if the players opt for the Wisdom (Medicine) check, a failure will result in the injury becoming complicated, and become the corresponded complicated effect.  A complicated injury MUST be treated in a town or city.

There’s also an alternate rule with these that I came up with after playing some test games of 5th edition and found that especially at low level things can be particularly deadly for players.   I’m sure that’s great for a lot of DMs and Players out there.  Lethal, deadly, and  risky – Yay.  Yea, that’s how a dungeon crawl SHOULD be.  But for me?  I prefer a good story.  So do my players.  So having characters drop like flies isn’t exactly a great feature for me and mine.  So I also added this:

Alternate Death Rules:  In the event that a character dies (by failing 3 death saves or taking lethal damage) they can try to be resuscitated after combat is over.  By making a Wisdom (Medicine) check with a DC 20, they can be brought back from the brink but automatically sustain 2 complicated injuries.  Roll against the injury chart above with 2d6 instead of 1.  The PC will sustain both injuries.  If one of the dice is a 6, reroll it until you get a 1-5.  If BOTH dice end up being rolled as 6s, then the PC has complications during the resuscitation and dies permanently.

Naturally you can play around with these making them worse or easier by switching around the DCs. Like a DC 10 to treat an injury and a DC 15 to resuscitate using those alternate dying rules. Or crank them up with you wanna get edgy with it.