Combat system in my WiP (and in general)

I’m trying to implement a system in which we can, basically, hit people and get hit.

The stats in play here here are
“Brute Force” & “Strength” & “Weapon Damage” (for physical damage dealt)
“Gentle Touch” (for accuracy bonus)
Dexterity (dodgin shizzle)
“Magic” + “Staff Damage” + “Artefacts” + (round(HighMag/2) OR round(LowMag/2) depending on which is greater to get total magic damage.

Accuracy is rolled from 1-100 for physical damage, + Gentle touch, - enemy armour -enemy dexterity.

if x <= 20, miss
if 20< x <= 97 normalhit
97< x <= 110 Critical hit (damage *1.5, with gentle touch of 0 chances is 2/100)
110+ is completely random magic territory, from attacking again to turning your enemy into solid gold or making all your teams hits for the rest of the game criticals.

Physical Damage =
Weapon Damage + (Strength + (round(brute/2)

Magic Damage =
Staff Damage + Artifacts + Magic + (round(HighMag/2) OR round(LowMag/2) depending on which is greater

If we assume a strength build at the start can get roughly 20 strength, 15 brute force, 10 gentle touch, and a weapon base damage of 6 is like average/ common, does this sound about right?

Oh and just to add the average health will be 100, with the average fight with 4 teammates against 3 (strong) - 6 enemies. (Any more than 6 I’ll just treat as a hoard with like bonuses to some stuff) Without going over 15 rounds (too repetitive) or under 4 rounds (so not super easy or super hard)

So the general layout will be us with 5 teammates, with roughly medium armour (which makes us harder to hit!) and 100 health points, against 4 enemies.

I do want to add 1) All of these should allow us to win if we’re not completely stupid. 2) We aren’t supposed to be super strong. In fact, I kinda want us to be carried by our team mates in the first few battles to make it easier to stat.

And to recap, I want help with 1) Whether the methods for calculating damage and accuracy are good, and 2) How I could change it (e.g. less teammates, less enemies, shorter/ longer fights)

Before going details w number, I want to approach your game design first.


Quoting you here, especially this one

So, does the player build their stats as the fight goes on, or do they build their character first? If latter, I don’t think this 2nd scenario can be achieved consistently.

Now, for damage, I can see that you’re using 2 types of damage: physical & magical. Balancing both of them can be a challenge, but for the best result, you need to consider the average TTK and the length of the overall session.

In case you don’t know, TTK = Time to kill. It’s like “time to arrival,” but kill instead.
I’d recommend you to plot a nice curve of difficulty for increasing round, without making longer rounds boring. This can be done by “quick encounter” for early rounds, and “phased encounter” for later rounds.

1 Like

So at the start you can have a general background (and if focus all in one stat at most get a bit below average skill level in that particular stats.

After each level up (which is roughly 1st fight, 2nd, 4th, 7th, next boss, etc…)
you get another 5 points to spend between

*create Strength 0
*create Magic 0
*create Charm 0
*create Knowledge 0

(I’m lazy so I Crtl-c-v it)

and

*create Brute 0
*comment damage
*create Gentle 0
*comment accuracy
*create Dexterity 0
*comment ^^ = dodging shizzle
*create Finesse 0
*comment ^^ = thieving
*create HighMag 0
*create LowMag 0
*comment types of magic damage.

So if you start off as a thief like build, then level up and add points to brute and strength, you can still do well on guard quests (which’ll mainly involve fighty stuff)

Magic ignores armour, oh and each different spell has a different accuracy range (meaning some can never miss, some can never crit) than 1-100 normal range, however you cannot have anything (except from a staff) in your hand if you want to cast magic.

(Should I add more limitations to magic?)

And I’m not sure if it helps but at least 1/5 fights will be planned/ scripted, so maybe 3-4 random fights between more fleshed out fights which’ll involve specific enemies, flavour text by our teammates, abilities used by enemy, etc.
Random fights will be easier and an opportunity to gain exp if you’re finding battles hard.

Random fights should be easier and have a lower TTK (am I using that right? I’m not used to being confused with slang haha), whereas planned fights should be longer, and require some strategy (although I’m looking into coding a defensive/ neutral/ aggressive nature for team mates!)

Oh and this is probably relevant too, depending on your difficulty if you lose a fight you’ll either respawn with 100% health but minus some gold (or just 100% health if you have no gold), 50% health, relationship losses and lose a lot (50%) of money, or when you die you have to restart (as in, entire party dies-- if you die they continue to fight valiantly and either all die or win and then revive you. )

I would advice building this system so it works for a single fight scene, but instead of flavor text have just the descriptors (what round it is, how much damage people are taking and so on). Then do randomtests of the scene with full text enabled. That way you can see how long the fights take, how many rounds, and how changing things changes the outcome.

In a numbers based fighting system, statistics and testing is everything, and fortunately randomtest is great for that!

2 Likes

That’s a good idea! I’m not at the point to make a fight scene yet (need to write another 5k words first, but as a student I can do prolly 1-2k a day) I just didn’t want to get halfway through coding and realise “Damn this is OP” (or even worse, “this stat does nothing”)

But I shall do that! I’m in a coding mood so I’ll take your suggestion and see if it works, for later, thanks!

And is there anything you think I should add? Like do you think people will want to control how their teammates fight (e.g. AI methods of fighting) or is random fine?
At higher difficulties should I change.damage you deal and take, and accuracy / dodge, just one, just the other, or neither.
Will it be worth coding in options to increase the stats of your teammates? And allow them to change classes too?

Honestly, that depends on what the focus of the game will be. Since this sounds like it will be heavily fight based, but also with a bit of random, I would give the players some sort of control over the companions. Not detailed, but maybe the MC can ask them for specific things in order to fill in the gaps in their own skills? Like ‘protect me’, or ‘take point’ or something general.

That being said, I would advice to get one on one combat working rules wise before going to group on group. The more variables you add, the harder you will have to balance/control what really goes on.

As for your other questions, that depends entirely how much work you want to put into it, focus on making it work for one, single case (no class variation, fixed stats) before you start thinking of variants. Otherwise you can’t know how much effort it will take, and thus will be unable to decide whether it’s worth it.

1 Like

Yeah I know what you mean, about the focus and scope issues.

FWIW I know (from coding something similar in class) that I can do a group vs group combat system, the only problem I’ll have is making them dumb.
Like I can easily make em target Wizard, then Medic, then soldier, from lowest to highest health, but the thought of having to make teammates aim ‘accidentally’ badly seems like it’ll be annoying. Or at least, hella boring.

I could just make another random stat about how well they choose enemies.
Like 1-20 just random hit, 21- 60 hit based upon class or health, 60+ hit based upon health and class

I have tons of time and I don’t mind if it takes ages-- after all this is (right now) more to show what CS can do and have fun