Looking for folks' favorite combat systems!

Hi everybody,

I’m working on a game prototype right now that’s mostly meant to push my working knowledge of Twine and especially JavaScript. It’s going to feature some procedurally generated content and a combat system.

I’ve already got a bare bones combat system fleshed out, but want to kick it up a notch. Does anyone have any favorite TTRPG or other combat systems that are simple but have a unique twist? I’m looking to expand my palate a bit and get some inspiration.

Right now I’m really intrigued by Lancer, but I’m absolutely happy to consider anything and everything!


Thanks for posting the link to Lancer. That looks to be an interesting read.

When I was at school, none of us had the proper D&D games so we made our own. The combat system was a derivative of the Steve Livingstone CYOA. I can’t even remember exactly but it was simple. Add your skill to a D6, and if it beats Defence, you roll for Luck. Critical damage (+?) if so. Deduct from the opponent’s stamina that plus your weapon strength, minus their shield strength.

The thing that occurs to me is that whatever your combat system, it has to make sense to the player. So if it’s complicated you are necessarily going to have to display lots of stats, explain buffs, damage, etc.

Otherwise it needs to be simple so that it doesn’t get in the way of your story.


I have a soft spot for Eamon where the combat is very simple from the player’s perspective. It allows for weapons to be dropped, damaged or broken by accident and also hits can be normal or critical. Your ability to use specific weapon types increases when you use a specific type and the same is the case for fighting while wearing armor so the most protective armor is not recommended to begin with.

Some good examples where Eamon is used well are “Leadlight” and “A Runcible Cargo”. However, ARC requires a decent character, though a well chosen new character can be used to beat the game. In contrast, in Leadlight you always start out with the same stats so you know you stand a chance against the game.

Some links: A Runcible Cargo and Leadlight


Thank you both for your thoughts! Good stuff to start with.

I also want to shout out something a friend showed me: the Cypher System, which seems extraordinarily transmutable to a Twine system.


I like two TTRPG combat systems: Harnmaster and Wushu (the RPG not the martial art).

Harnmaster divides the body into hit zones (left arm, chest, belly, etc.) But I fear that is not very usable in IF.

Wushu (which can be downloaded for free) takes the players description of the action and determines the number of dice to roll.

For example the player says: “I strongly jump into the air, turn around like lightning and place a horse-like kick on the enemy” makes three described action in a cool and unique way which means “Roll three dice” to determine success. This could be implemented some way in an IF piece I think.

Edit: Only typo fix.


There’s also the idea that combat is not always physical.

In other words you have an adversary. They draw some cards. You draw some cards.

On the basis of that you decide whether to mug them, or befriend them, or become a treacherous lover.

So then your system is Tarot, or I Ching, or something similar.

By the way, I recently hit upon a system for generating Gua/Hexagrams (including strength of lines) from throws of dice using 5D6. I wrote some Python code to test that it’s a fairer system than the 3-coin method.

I’ll have to dig it out, but I’ll share it to whoever’s interested.


Off course, it can be a car race, a staring context[edit: contest], a wizard duel, a public debate, whatever.
I don’t understand why you quoted me about martial art in this context.
Here is the RPG http://danielbayn.com/wushu/

Your concept about oracle-style cards sounds cool. Both I Ging and Tarot.


I didn’t mean to make any particular point by it. It was just the key phrase in your post which motivated my reply :slightly_smiling_face:

1 Like

Ah ok. BTW I once trained Kungfu. So “Wushu” always causes a memory flash in my brain. :slight_smile:


I’ve a year or two of Wing Chun and some occasional Tai Chi Chuan. I was a hack at the first and a complete duffer at the other :laughing:


For what it’s worth, I am looking explicitly for a combat system. I adore non-combat TTRPG systems (even things like Fate’s “conflict” concept) but you’re gonna be beatin’ robots and stuff up in this one, I think.


There’s also the concept that a player decides how offensive or defensive he/she will fight. If I remember correctly this is the case in Harnmaster and MERP. And in some RPGs (for example Dark Eye) the defender has to roll a die for defense. While in many systems only the attacker rolls a die (I think D&D does it this way?).

And Rolemaster has a table for fights, which is actually a formula turned into something analog. Each weapon type gets its own table/formula. Such a formula usually is a Gauss function. You know this bell-shaped type of function where there is a likely “middle” and rare extremes (high and low).

Edit add: 2d6 is an example of a Gauss function.


That is not my recollection. Rolemaster is a d100 system, so linear, not a bell curve, and the higher you roll, the better. Criticals are a bit different because 66 is general as good as a very high roll, but otherwise linear, d100, higher the better.

1 Like

The bell curve is in the lookup table, not in the dice roll.

Adaption for Twine would not mean to use a table, but instead a function which should be simple in Javascript.

1 Like

I know this is simple, but I think Beyond Zork’s fighting style is easy and helpful. I can look into the code to see how it works.


So, I am right now writing a small IF thingy in vanilla JS, to brush up my JS skills a bit and for fun. It features procedural content, that’s another reason why I went the JS route.

Sounds pretty familiar so far, I guess :slight_smile:

To your question about favourite combat systems, I really like the one I came up with for my game (maximum bias disclaimer here).

Basically it goes like that, each opponent has some base strength value (2-5 would be the normal range, roughly) and a health point value (in similar range). Each round, a D10 roll gets added to each base strength. You see the enemies base strength, but not their dice roll. Then you have a decision to make whether you think your end result is higher or lower than the enemies’ (I call these “act offensive” and “act defensive”). I also threw in an advantage value that is usually zero, but in certain conditions can be 1 and that may affect the outcome of the next round.

I have a big if-structure handling all the different cases (I tried to be smart and optimize in first attempt, but then it turned out the reality didn’t fit to the constraints of my optimization, so I kept it unrolled on my 2nd attempt). It looks a bit like this:

    if (a.guessInput === "o" && b.guessInput === "o") {
      if (a.result === b.result) {
        if (a.advantage === b.advantage) {

I put the actual logic into a bunch of small functions, because almost all of them get used twice (in exactly mirrored cases), they look like this:

function off_def_offHigher_offAdv (off, def) {
  const baseStrengthDiff = Math.max(1, Math.abs(off.baseStrength - def.baseStrength))
  const adj = getHitAdjective(baseStrengthDiff)
  const message = `The ${off.name} aims for a strong blow and hits the ${def.name}, dealing a ${adj} wound.`
  def.health -= baseStrengthDiff
  off.advantage = 0
  return [off, def, capitalizeFirst(message)]

That’s a neat idea, I really like that!


I had to create a combat system for The Cursèd Pickle of Shireton and while it was very simplified, what I came up with was a timed-clickybox system.

Timed events are often the bane of players’ existence, but this seemed like the best way to go. Essentially the player was told they were being attacked, and then got a screen listing all their skills with buttons. They had a certain amount of time to both defend, attack, and prepare spells before the creature then attacked them.

If you wanted to defend, you would hit that button, then you got a couple of extra buttons to click to “reinforce” the attack. Fighter types got extra and that basically determined how many points of damage the player would deflect. This took time to click all the buttons of course, so that was the tradeoff of defense vs offense.

There was an automatic “Wallop” button which was a free attack doing one damage that always hit as long as the player’s level wasn’t too low compared to the aggressor’s. Depending on the player’s class and weapons, they could similarly power-up their weapons by clicking extra buttons to make them more powerful, again, costing time. Casting a spell required clicking on a grid of magic syllables to create a magic word. The bard had to click on the right strings to play on the lute to cast basically a spell.

The player could also hire NPCs which basically increased the number of attack and damage buttons they had access too, again requiring more time management to figure out which attacks worked best in any situation. If you were against a weak enemy, it might be better to concentrate on bigger attacks to finish them off quickly and not worry about them dinking you with one HP each round. The NPC basically also offered a layer of shield - if you hit 0 HP during a fight, it killed off the NPC first instead of you and you got an extra bit of health to hold out or flee the combat.

My strategy playing was always DEFEND TO THE MAX FIRST then click everything else you possibly can.

When the time ran out, all this built up damage was thrown at the aggressor who might deflect some of it.

I put in an easily-findable cheat knowing that some users aren’t good at fast-clicky mouse action that slowed combat way down for them, and there was a way to run from any combat as there were only a few required fights in the game. In most cases, battle was grinding for loot.

If I’d had more time, I would have played more with the attack timing being adjusted more based on the player’s level and spells in effect. As it was, you had normal combat or really slow combat if you used the cheat code the game provided.