Multi-elemental attacks in RPGs? Is there a cool way to do it?
Elemental attacks are a fairly standard idea in RPGs nowadays -- if your attack has an element attached to it, it goes against your foe's resistance to that element instead of their normal defense, so you have a chance of doing extra damage if you happen to hit them with the right element, or no damage at all (perhaps even healing them) if you hit them with an element they're resistant to.
Back when Chrono Trigger came out, I was every excited by their idea of combining elements into a single attack. When I learned how they implemented this, though, I was dissappointed. The way Chrono Trigger handled multiple elements is that it just called any attack with more than one element a "Shadow" element attack, which was struck me as kind of a cop-out solution.
Now, the most obvious "real" way to handle multiple elements is as follows:
- Assume actors have an elemental resistance stat for each element. 0% is "normal" resistance, or full damage. 100% is full resistance. 200% is absorbing full damage, or full negative damage. -100% is double damage. This is a linear scale, so you can easily extrapolate the amount of damage done for any resistance value.
- Your "damage multipler" for an element is simply (100% - resistance). You take your base damage and multiply it by the damage multiplier to calculate actual damage.
- For a multi-elemental attack, just add together the damage multipliers for all the elements in the attack, and multiply the total damage by that number.
The above idea works. It makes sense. Only trouble is, it's not very fun. An two-element attack against a typical enemy with 0% resistance to each elements results in a damage multiplier of 2, which sounds cool on the face of it. But, if the enemy has -100% resistance to both elements, the damage multiplier is 4, which means that you did twice as much damage as you would normally do with that attack. This sort of system as one advantage to the player: If you don't know an enemy's weaknesses, a multi-elemental attack will fairly reliably do *some* damage, even if it does less than a single-elemental attack that they aren't resistant against.
Increased reliability is nice and all, but it's not nearly as fun as a bigger risk with a bigger reward. Consider this: enemies already have a fairly low chance of being weak against a particular element. If we assume that chance is 1 in 4 (which is really high, honestly), then their chance to be weak against *two* random elements is 1 in 16. So while the probability of hitting a double weak spot scales down exponentially, the total damage scales up linearly. In this scenario, if you already know an enemy's weaknesses, there's never any reason to attack with more than one element, because hitting them with the single element that they're weakest against (or your choice of elements if they're equally weak against a a number of them) will always yield a at least as good a result as a multi-element attack.
(continued in my next post)
So, where we we? High risk, high reward for multi-element attacks.
Ideally, if the attacker happens to discover the defender's elemental weaknesses and hit more than one at once, you want to reward them for doing so by giving them extra damage above and beyond what would otherwise be possible. At the same time, if they make a bad choice and hit the enemy with two or more elements that they absorb, you want them to absorb *a lot* of HP, making it high risk.
Here's one way that might seem good at first glance.
In this case, your "typical" damage multiplier is one (assuming 0% resistance across the board). If you happen to hit the enemy with two attacks that they're weak against, your total damage multiplier is 4, which rewards you for managing to hit both.
The problem hits when you attack them with a multi-elemental attack where one of their resistances is very close to 100% (making their damage multiplier for that element around, say, .01). So even if they're weak against one element, multiplying that by .01 makes the total damage minuscule, whereas you would expect it to do, at the worst, normal damage.
So this system is broken in that it messes you up when the enemy has a single high resistance to one of the elements you're attacking with.
So, what else can you do? (continued in next post)
So here we are. We've come up with two not-so-good solutions. It's time to kick back for a bit and consider what mathematical properties we'd like this solution to have, rather than taking shots in the dark. So, without resorting to numbers, here's what we want:
So, let's try this:
What the above algorithm does is give you a number that's reasonable in the case when you have some high resistances, but scales up very quickly when you're hitting a lot of weaknesses. Plus, the function is continuous (I believe that's the term, anyway), so that a small variation in any of the elemental resistances will never result in a huge jump in damage.
At the moment this algorithm is untested, but I'm fairly satisfied that it's a good start. But, what if we want to do something other than math...? (continued)
Let's go back to the original idea where we just add all the damage multipliers together to get the total damage. Boring stuff, right? It doesn't have to be if we spice it up in some other way.
Why not consider having multi-elemental attacks inflict status effects? Now, coming up with all of the combinations will be time consuming, but it could net you something really cool. Maybe adding ice and electricity together will inflict Slow? Perhaps holy + fire has a chance of causing instant death to undead? There are all sorts of other things you could do with various elemental combinations if you move away from just the idea of pure damage. Plus, if you want, you can add these effects in addition to the high damage formula listed above.
The sky's the limit. :)
Anyway, I'd be interested in hearing comments and ideas from other people, so if this got your mind working, let me know what you think.
Bart
I limit myself here to the four "classical" elements, fire, water, earth and air. Additional elements have to be integrated in a fitting manner then. Also, I assume we have a special, complementary relation between fire and water and between air and earth.
___
Lets analyse the elements a little bit:
Fire (representation of energy):
is basically heat, what moves in a spherical falloff, heating up everything in its range, the bigger the distance gets the lower the heat gets. So, you can either initiate a "point of heat" somewhere, or have the point of heat in your hand and give it an initial speed vector (aka fireball), who will follow the law of heating up his surrounding during his travel.
Water (representation of fluids):
What water does, is cooling things down and when it comes with speed, it will have a physical impact. Also, water often appears in big volumes, so a water spell might be able to summon big volumes as well, what brings his own sideeffects. Also, water can be a heat carrier.
Air (representation of gas):
Air behaves similar to water, it also has a physical effect when it is in movement, the amount of it is even more volumonous, but also less clear defined. It is also a temperature carrier. A big difference is, that it is immune to gravitation effects.
Earth (representation of solid matter):
Is solid, shapeable, when accelerated, it has a good physical impact.
___
Examples of spells:
Fireball:
1) it is moving, usually the faster, the better
2) it is hot, it incites what it touches
That is a very basic fireball, we have seen steerable ones, or ones that travel through water as well as through air, or even are able to explode at some point, but I concentrate on the basic fireball here.
So, we need to give it a medium, what it can interact with, lets choose air here, we want it most likely travel through air, not through water or earth. Also it needs velocity, velocity is another form of energy, so we need to convert some heat energy to movement energy. And we need plenty of heat energy to make it hot.
To break this down into a pseudo-rule-system:
Carrier medium: Air (1)
Convert heat to velocity: Fire (2) (I assume a convertion loss here, 2 points of fire result in 1 point of velocity, what can be looked up in some table to get an actual speed)
Just be hot: Fire (4) (or 10, 20, depends if you wanna incite a barn or create a new volcano)
Fireshield:
- creates a sphere of flames around the caster for a certain time
Carrier media: Air (1) and water (2) ("2" because of fire-water relation)
Sperical, static appearance: Fire (1), to define the spherical shape via the falloff of heat, and Earth (1) for the static wall-like appearance
Lifetime: Fire (x), feeding the shield with Fire as kind of fuel.
Raining rocks:
- casts rocks in the air and let them fall to ground
Carrier media: Air (1) kind of casting target
Creating Rocks: Earth (4) as we want much of them, covering some area
The rest is done by the natural influence of gravity, so no further magic manipulations needed.
___
Okay, its quite trivial to invent spells and break them down into that kind of pseudo-system.
Following questions are a bit more interesting:
1)
Can there a kind of a "questionnaire" created, that gets filled out by the caster, and whatever he fills in, an algorithm behind the questionnaire will create a spell from that? The answers should be one or more elements, each combined with a value.
Examples:
Carrier medium? Element1/(desired value), (maybe) Element2/value, etc.
Heat energy? Fire (desired value) - here Fire is a fix answer, as it is the representation of energy
Movement energy? Fire (2:1 value) - means, you say 4 but will get just 2
...
As I see now, the examples are maybe not so trivial, as they work as a good base to refine questions out of.
2)
If the questionnaire wont work, can there be refined some "patterns" at least, that can be freely combined to a spell?
Like, we have a few transmission patterns, like "beam", "radial growing", "spherical wall", "cast and then follow law of nature", etc.)
Then we have the base elements the spell itself consists of, where every element is kind of a pattern, as much as dual-combinations of patterns (like fire+water give a steam styled spell, earth+water makes much dirt, air+fire gives the fire a pseudo-material appearance, etc.)
Then we have influence patterns (the caster itself, a certain victim, every being in sightrange, or law-of-nature influence, like with a fireball, that simply heats and incites everything in his way, until he is eaten up)
Now lets imagine more categories here and more patterns for every category and lets assume that we have a spell for every possible combination in the sleeve, or -even better- get it created (by combining some graphical effects, like let the "acting" element define the texture, the other patterns define some shapes and animations) plus, calculating the amount of damage (does it always have to make damage? what about a simple fly-spell?) and the cost.
Not sure what this leads me to now, just my 2 cents to the topic of elemental stuff ;)
I think a basic formula I would use to get an basic effective multi-elemental impact force would be:
force(resistance,effect) = f2( sum over i of f1(resistance_i * effect_i) )
where
Such functions are popular for calculating risks of heartattacks and the likes from individual risksfactors.
I would then again intermingle 'force' again to get some obscure result. These are maybe just barts thoughts with other words.
Just some thoughts.
No creature or player ever has zero (0) resistance to any 'element' it must have some or even an infinitesimal amount would leave them dead. That is to be able to survive in the "real" world and not die you have to have a 1 or better in any resistance. So since everyone has at least a little bit let us make it a factor. So any factor above 1 will increase damage received any below will reduce it.
enemy 1 has a factor of 1.2 against fire, a factor of 0.8 against wind so the bonus a wind & fire attack is able to receive is 0.96
enemy 2 has a factor of .75 against earth, a factor of 2.8 against water so the bonus a earth & water attack is able to receive is 2.1
enemy 3 has a factor of .61 against earth, a factor of .96 against water, a factor of 0.8 against wind so the bonus an attack of all three is able to receive is ~0.468
As long as factors don't be come overly large it will play well IMO. I have not solved for healing in this example but it seems cleaner than the other ways.
Usually I dont like element systems. I favor simple hack n slash/grind over tactics ;)
Ontopic:
I am not sure if someone allready mentioned this and I have overread it, but I suggest a simpler system: Lets say the player deals a certain amount of damage and this is the base (100% Damage). Now this damage is split into the single elements. i.E.
Total Weapon Damage: 120
Mods
Weapon1 = 1 Fire :: 100% Fire - Deal 120 Firedamage (modified by resitances +/-)
Weapon2 = 1 Fire, 1 Wind :: 50% Fire (modified by resistances) + 50% Wind Damage
Weapon3 = 2 Fire, 1 Ice, 1Wind :: 50% Fire(60dmg), 25% Ice(30dmg), 25% Wind(30dmg)
This Way you dont have Damage spikes but the player can specialize if he wants to. A Weapon with all Elements will deal always average damage. A weapon with just fire damage can deal really much damage against the right monster but really low/none damage against fire resitant monsters.
Technically you can just split the attack roll into 4 calculations:
Weapon: 100 Damage (1 Fire mod, 1 Wind mod)
Enemy: 30% Fire resitance, -20% Wind resitance
Damageroll: 50 Firedamage -> (-30% resitance) -> 35 Firedamage
Damageroll: 50 Winddamage -> (+20% weakness) -> 60 Winddamge
Total: 95 Damage
I liked the diablo II 's elemental damage system, similar to the system described in the first post (i.e. diablo II vangeance skill), excepts for the absorb.
However, if I had to design an elemental damage system, I would perhaps go with something like this :
Fire <-> Water
Earth <-> Air
Light <-> Dark
And a value between -100 and 100 (or -150 to 150 for abosrb possibility) for each couple. If you have -50 in fire <-> water, then you take 50 % of fire damage while you take 150% of water damage.
For weapon, I would allow only 1 element to deal full damage with spell like fire weapon (your weapon now does fire damage), and then add absolute values for other elemental damage (e.g. a sword that does 10 physical damage and 3 earth damage, if you use a fire weapon spell, then it does 10 fire damage and 3 earth damage)
Another idea :
Like Pfunked's PMOD system, you have a FWEA system :
Fire
Earth Air
Water
Fire + Earth : Meteor
Fire + Air : Fireball
Air + Water : Blizzard
Earth + water : Frozen boulder
I like both Scrittl's idea. I think it would be interesting to make something that allows the player to choose what elements improve. For example, in a fighting system based on weapons, you could use something that increases a weapon's element power (for example, a ruby might give a sword one point of firepower while a sapphire could give it one point of waterpower; this is quite obvious, is just to make an example...), and then calculate the damage as Scrittl was saying...
Of course you could improve different elements in a single weapon