Damage Types

Hey all, I’m still working out an RPG engine in my spare time and I think I finally nailed the Damage Types. I wanted each damage type to have a very specific flavor and effect and put them into neat categories.

Tell me what you think of these:

PHYSICAL DAMAGE

Slash - Causes additional bleed damage over time, but is 1/2 effective against armor.
Bash - Staggers.
Pierce - Twice as effective against armor.
Poison - Ignores armor, but does damage over time. Is more effective when health is low.

MAGIC DAMAGE

Fire - Causes additional burn damage over time.
Ice - Slows. Is more effective against smaller targets and less effective on larger ones.
Lightning - Twice as effective against armor and stuns.
Arcane - Ignores armor.

In addition there are several situation nuances:
Bleed heals poison.
Fire ignites oils and gases.
Ice freezes water and makes bash more effective.
Ice on a burning target stops the burning, but does instant damage from thermal shock.
Fire on a frozen target stops the freezing, but does instant damage from thermal shock.
Using fire on a frozen target also makes the target “wet”.
Wet targets are resistant to fire, but weak against ice, and are lightning now ignores their armor.
However, a target in a body of water takes half damage from lightning and even less from fire, but more from Ice.

The basic math would be:
damageTaken = damageGiven * (damageGiven / (targetArmor + damageGiven))

So lets say that a target has an armor of 40 and there’s an attack of 10, then damageTaken would be 2.
10 * (10 / (40 + 10)) = 2

But lets say that damage is pierce, so now that damage is twice as effective on armor.

Now the formula is:

damageTaken = damageGiven * ((damageGiven * damagePenetration) / (targetArmor + damageGiven))

OR

10 * ((10 * 2) / (40 + 10) = 4

With me so far?

As for the attacks themselves I’d want to compose multiple damages to go into one attack. Lets say you have a mace.

The Mace does 10 damage. But it’s a mix between penetration and bash damage. So 50% is bash and 50% is pierce.

Now to modify damagePenetration we average the two.
Bash has a penetration of 1 and Pierce has a penetration of 2.
With a 50-50 split, the new damagePenetration is x1.5.

SO

10 * ((10 * 1.5) / (40 + 10) = 3 damage.

To recap.

With an armor of 40.
An arrow with 10 damage would do 4 damage.
An mace with 10 damage would do 3 damage.
And a hammer with 10 damage would do 2 damage.

Then resistances would modify that number on top of everything else, but that’s a topic for another thread.

What do you all think?

Any suggestions?

5 Likes

The secondary effects are the most interesting part to me – fire/ice, lightning/water, etc. Double damage is significant, but it might feel even more rewarding to use triple damage or more. It gives the player additional incentive to really think about what equipment to use in each situation. But even more than that, I like the special effects such as staggering opponents or lighting oil on fire.

1 Like

It makes sense ( except lightning vs armor, metal has less resistance so the current drains through it instead of the armored creature)

But do you need such complexity? It also reminds me very much of warframe. Google warframe and damage 2.0.
It has very similar formulas and attacks also deal mixed damage.

But i dont like Warframe’s system very much. Damage Types are for RockPaperScissors Mechanics. I always prefer gearselections where your choices are driven by preference, not by must have combinations or enemy type.

Bleed and poisen is neat in your system, bleed is bad vs armor but poison makes up for it. But bleed cancels poison. What do attacks that have both do?

And some have no drawbacks on first glance. Ice>fire>lightning pls nerf.

2 Likes


And some have no drawbacks on first glance. Ice>fire>lightning pls nerf.
I’m trying to strike a balance, but I think that in the end Magic>Physical.

As far as Ice>Fire>Lighting goes, how so?

Fire essentially does double damage, half on impact and half over a period of time.

Ice has a debuff that is equal to that, while being more effective on smaller targets and less on larger ones balances its self out.

And lightning having a momentary stun and cutting through enemies armor sounds about right. Also, note I said being wet ignores armor, not that it does double damage.


Bleed and poisen is neat in your system, bleed is bad vs armor but poison makes up for it. But bleed cancels poison. What do attacks that have both do?
Well, I mainly wanted bleed to cancel poison to avoid allowing a triple stack of damage output (fire + bleed + poison). I’m also toying with making poison more effective with the less life you have. Maybe have fire be more effective with the more life you have too.

As far as a poisonous blade that slashes I’d simply have it be counter intuitive, much like fiery ice.

<Fire on a frozen target stops the freezing, but does instant damage from thermal shock.>
-So depending on how thermal shock is scaling by fire dmg, you get instant dmg instead of spread dmg from fire, something you want for a dmg spike
<Using fire on a frozen target also makes the target “wet”.>
<Wet targets are resistant to fire, but weak against ice, and are lightning now ignores their armor.>

  • Resistance to fire doesn’t matter in this case since the thermal shock is all you get from casting fire onto the frozen target and additionally the target is now awaiting an armor ignoring lightning blow for insane spike dmg.

Also the circle:
<Wet targets are resistant to fire, but weak against ice, and are lightning now ignores their armor.>
<Ice freezes water and makes bash more effective.> (this is the frozen condition, right?)
<Fire on a frozen target stops the freezing, but does instant damage from thermal shock.>
<Using fire on a frozen target also makes the target “wet”.>

  1. Make target “wet” ONCE at start
  • than alternate between casting ice and fire on it starting with ice
  1. ice does now additional dmg vs wet and freezes the target
  2. fire now mutates into thermal shock and target is left wet: go to 2.
1 Like

How slow is your gameplay? Often the subtleties of various damage types get lost in fast paced action.

None of this stuff is useful if you can’t effectively communicate it to your player, and your player can’t make effective choices about it in combat.

So if you are building an action RPG I’d actually reccomend simplifying the system.

1 Like

It’s more like a skeleton for multiple games that I’ll tweak as needed. I could use it for a first person action RPG, a top down action RPG, or a turn based RPG.

As for being overly complicated, I can see that if I have a player that absolutely feels the need to get into the math. But I feel like most players don’t need to understand everything to be fun. I think a lot of fun would be in discovering the system, but also common sense would go a long way. Like, don’t use a blade on a Stone Golem.

I’m not so much worried that players won’t understand the system. More that they will ignore most of it.

1 Like

True.

You’d want to make sure that it’s tilted enough to matter and would not be ignores, but not tipped to where you can’t hammer through it with some effort.

I think it looks great and balanced, don’t forget that enum is your friend… :slight_smile: In my RPG i am not using Armour as in traditional rpg but shield value. I feel its better to work with percentage than values when it comes to damage reduction. Put the concept in to a spreadsheet so you always have the overview.

It looks like your concept is very environment based, i have made a similar concept where i placed a interface script on every physical object, this is much better than doing collision test vs string tags, and gives allot better mechanics
towards your damage types.

Gl…

1 Like

Sorry, I just realized that I never answered this.

I’m thinking I’d start with a top down action game, but I definitely wouldn’t want to just make a Diablo clone. Love Diablo, but I think they have their own thing nailed and I couldn’t improve on what it is. So I would most likely slow it down a lot, but add a lot of tactics to the game play.

Things like making a larger emphasis on fighting larger numbers of enemies, positioning, environment, equipment, and skill choice.

1 Like

Damage types are usually about half of the strategy in rpgs. It’s perhaps the most widely used set of mechanics that there are aside from hit points. How the formulas work or what the effects are borders on totally irrelevant.

Power gamers will just look for the most abusive combination, fluff gamers will use whatever looks coolest and everyone else will ignore it.

In terms of combos and stuff, obviously check out Divinity Original Sin. But honestly I don’t think it really matters what it does - just make the elements somewhat distinct and somewhat consistent. By far, the most important difference is in visual effects. The effects need to be visually distinct from eachother. For 90% of gamers, if the stat effects were exactly the same but the animations and visuals are still different - it works as an experience.

3 Likes

I’ve really only thought that having multiple physical damage types AND multiple elemental damage types is significant in turn-based games (Shin Megumi Tensei/Persona). Even then, it often feels like too much to think about, and it ends up turning into homework.

I feel that the effects of the attack types are way more significant than the damage; if you must have so many attack types, perhaps focus on your ideas that adhere to this philosophy.

Another suggestion: Physical attack types don’t have that same “element” quality as magic (obviously) and seem harder to remember damage tables for sometimes. Maybe physical and magic could have high levels of self-interactivity, but limited interactivity with each other (fire attack beats ice baddie, pierce attack cancels slash attacks, etc).

1 Like

Oh, I’ve given this more thought. I think I want bleed damage to do more damage the % health you have and I want poison to do more damage the less % health you have.

So:
Target has 100/100 health.
Poison does 50% damage.
Bleed does 200% damage.

Target has 75/100 health.
Poison does 75% damage.
Bleed does 150% damage.

Target has 50/100 health.
Poison does 100% damage.
Bleed does 100% damage.

Target has 25/100 health.
Poison does 150% damage.
Bleed does 75% damage.

Target has 1/100 health.
Poison does 198% damage.
Bleed does 50.5% damage.

It makes sense. The more damage you take the less blood you have and the less blood to bleed out. But being weak makes poison easier to hurt you.

Meanwhile bleed still heals poison so you need to plan your attack wisely.

You would need to hit them with some bleed effects and wait for the right moment to hit them with poison.

The real question is would a poison chainsaw heal you? :wink:

No, but I bet the poison wouldn’t kill you.

Could you make a small mockup game where you can show those effects in action? It is so hard to tell if you don’t see the transient flow of such things.

Maybe a small story from my humble experience:

  1. I planned a complete small system with HitPoints, StaminaPoints(block and dash), CastPoints(casting spells) including skills that affect recharge times and max amounts of them.
  2. I implemented i.
  3. I let people try it.

The response i got was: “Why does dashing not work anymore?” and “I think your casting is broken” as soon as they ran out of those slow recharging resources (yeah i didn’t really teach anything in that mockup). So i scrapped Stamina and Castpoints and tested a new System where You can cast and dash as much as you want.

To balance cast/dash-spammin implemented these changes:
Spells: You can cast all spells instantly yielding a quick but weak spell or charge them for a larger Version of it (e.g. Flare that charges into Fireball)
Dash: You can Dash all you want but if you chain dashes within 0.5s their range decreases in 2 steps. After 1.2s of not dashing, your Dash is at full range again

I implemented it, tested it, i liked it, they liked it. And
-only after that i was able to scrap ~20 Skills i planned and implemented affecting Stamina and Castpoints (That made my whole Skilltree next to useless so i reworked it into a kind of Spellbook)
-only after that i was able i remove functions showing and updating Stamina- and CastPoints
-only after that i knew that my first approach sucked

3 Likes

Yeah, one day.

This RPG engine is sort of a side project that I can work on during my lunch breaks.

I need to finish my current project before I get into coding this.

sounds like a Magicka meets Gauntlet. that would be pretty cool.

" damageTaken = damageGiven * ((damageGiven * damagePenetration) / (targetArmor + damageGiven)) "

Your damagePenetration in this formula doesn’t have anything to do with armor. A damagePenetration of 2 will always deal twice the damage of something with damagePenetration of 1, even if the target has absolutely no armor what so ever.

This is embarrassing, frankly.

How about something like:

damageTaken = damageGiven * (damageGiven / (targetArmor / damagePenetration + damageGiven))

2 Likes