Monday, February 8, 2016

Ability: Elemental Rock Scissors Paper

Something Like This.
In a lot of Video Game RPGs, and presumably table top games, characters typically have elemental strengths and weaknesses. At a minimum, there are usually 4 elements for European themed games and 5 for Asian flair. Games like Pokemon that have a bajillion elements have several cycles built into the system. Final Fantasy has multiple levels of injury tolerance and resistance. Several systems have a neutral "null" element that doesn't interact with the elemental system, and thus has neither strengths nor weaknesses. GURPS has something like this in the form of Injury Tolerances and Crushing, Cutting, and Impaling damage types, but no intrinsic system for "fire beats plant, beats water, beats fire." Let's play around with how to put an elemental weakness system together, and see if we can come up with a quick way of evaluating the fair value of a particular elemental typing in GURPS.

Useful Books For This Discussion

Questions That Should Be Answered

  • How many elements exist in the system? The more elements that exist, the thinner we spread the points, the bigger a limitation discount we can apply to an elemental susceptibility meta-trait.
  • Are elements compulsory? Can a being opt out of being strong and weak against anything? Does everyone need to have a strength and weakness? Elements might be especially mandatory in a game where players all play non-human races. Elements might be especially optional in a game with mundane races.
  • Are Elements Balanced? Do all x elemental types have y weaknesses and z resistances? Are particular elements more susceptible to more types than others?
  • Should elemental types multiplex? An important consideration in Pokemon means that some characters can have extraordinary resistances or weaknesses if they have multiple elemental typings.
  • Is resistance tiered? In some games, elemental resistances can come in levels like doubled damage, halved damage, zero damage, and absorption.
Let's take a look at some architectures of various complexities.

Simple Rock Paper Scissors

Let's make up a system of 3 elements. Let's use the Pokemon illustration for inspiration. Fire beats Plants; Plants beat Water; Water beats fire. To answer the earlier questions.
  • We have three elements
  • Elements are compulsory
  • Elements are balanced
  • Resistance is not tiered
Let's also assume that each element is strong against itself as well; that is, something that likes fire isn't particularly susceptible to fire. So each of these three types has one weakness and two resistances. As a percentage, we could say that each is especially susceptible 1/3 of the time, and especially resistant 2/3 of the time (assuming a perfectly balanced world where ratios of beings of each element are 1:1:1.) 
If we look at the modifier table for accessibility on p. 99 of powers, we see that something that is in effect 1/3 of the time gets a 25% discount, and something that is in effect 2/3 of the time gets a 15% discount.
Using simple "Resistance means 50% damage; Weakness means double damage" We can make this meta-trait from some extra versions Injury Tolerance described in GURPS Powers, and Vulnerability from the basic set.
Vulnerability is tricky though because it uses "bucket" categorizations instead of percentage categorizations with tiers like "very common" "common" "rare," etc. Looking at the definitions of these buckets, I feel like each element is best described as an "occasional" damage source. However, for large counts of elements, this isn't scale-able. If you have over 10 elemental weaknesses, this adds up to some serious negative points.
To address the above, considering very common vulnerability is -40 points, Vulnerability to "everything" is... just playing around with some guesses, 4/3 of -40, which I round to an even -50. Now we can more easily apply our vulnerability modifier.
In this simple rock scissors paper model, it looks like an elemental weakness/advantage meta-trait can be calculated by:
  • Looking up the discount amount for Resistances/Total Elements and Weaknesses/Total Elements. Let's call the first value Resistance discount, and the second Weakness discount.
  • Using the following formula:
(1-Resistance Discount) * 50 - (1-Weakness Discount) *50

In our symmetrical example we have
(.85*50) - (.75*50) = 42.5-37.5 = 5
Altogether, it is a small advantage. We might consider something like this part of the racial template as well so it doesn't interfere with our disadvantage limits.

Wrench: Null Element

If we add to our rock scissors paper a fourth element of "normal" that changes things a bit.
First off normal is weak against nothing, and it is strong against nothing. It is a 0 point meta-trait.
But now it changes the calculations of the amount of elements someone is resistant and weak against.
There are now 4 elements. The three first elements are still weak against one type and strong against two, but now the odds of accessibility are 50% and 25% each. 50% is a 20% discount, and 25% is a 30% discount. As a matter of fact we can still use the same formula. It now costs:
(.75*50) - (.70*50) = 37.5-35 = 2.5, round up to 3.
So as a matter of fact, this doesn't make things much harder to calculate.

Wrench: Asymmetric Elements

This is actually a variation of the above. Taking our four elements of Fire, Plant, Water, and Normal, let's add an overpowered "Deity" element. It is strong against the first three elements, weak against normal.
This actually means that Normal is now no longer a 0 point feature meta-trait.
We now have 5 total elements. Normal is strong against one, and weak against none. that is 20% and 0%. 20% is a discount of 30%, and 0% is a discount of 100%. (That is, if you don't have a weakness, you don't pay for a weakness.) So that looks like normal costs:
(.70*50)-(0*50) = 35.
Normal is now a 35 point meta-trait, that solely contains elemental resistance to "deity."
The other pretty symmetric elements have 2/5 weaknesses, and 2/5  resistances. 40% is a 25% discount for both... which interestingly means:
(.75*50)-(.75*50) = 37.5-37.5 = 0
Our nominal elements have turned into 0 point meta-traits. Finally, our "deity" element that is strong against 3/5 (15% discount) and weak against 1/5 (30% discount) we get:
(.85*50)-(.70*50) = 42.5-35 = 7.5, rounded up to 8.
Interestingly, with these asymmetric elements, our conventional rock scissors paper group is the cheapest, and normal turns into our strongest.

Wrench: Multiplexing

The cost of receiving 1/4 damage is exactly double the cost of receiving 1/2 damage, so this syncs up fine. The cost of receiving quadruple damage for mixed elements is also double. and something that is 1/2 * 2 = 1 is -50 + 50 = 0, so that cancels out as well. Mathematically speaking, we do not break down if we give a character two different elemental meta-traits. So for example, using our five element system from before, a character with all the benefits/drawbacks of being a fire element [0] and all the benefits/drawbacks of being normal [35] would cost 0+35 = 35 points. A hybrid deity/normal would be 43 points.

Wrench: Multi-Tier

 This does not work easily in GURPS without extra math. The math is actually a pretty simple extrapolation of the existing equation, but some important differences. First we need to add an absorption factor (Number of elements absorbed/Number of existent elements in the system) and multiply that by the cost of absorptive DR that can only be used for that element... let's try to get close to our 50 point benchmark like the other two factors, just for symmetry's sake. absorptive DR that can only heal HP is an 80% enhancement. Meaning we can have 5 absorption DR for 45 points. We can add this number times the accessibility discount for the amount of elements absorbed. It's not 100% absorption, but 5 DR that recovers is substantial.
The other category is 0 damage, which similarly we do with DR limited by elemental source. Because I like the number 50, again we are going to go with 10 DR.
So the adjusted algorithm for this level of complexity is:

  • Find the number of total elements.
  • For each element:
    • Calculate the ratio of Elements Resisted, Elemental Weaknesses, Elements Absorbed, and Elements nullified to the total number of elements
    • Look up the discounts for each ratio. Let's call them the Resistance Discount, Weakness Discount, Absorption Discount, and Nullification Discount
    • Run through the following formula:

(1-Resistance Discount) * 50 + (1-Absorption Discount)*45 + (1-Nullification Discount)*50  - (1-Weakness Discount) *50
This formula is probably annoying to type run over and over, but it is simple enough that it is easy to run with a spreadsheet program if you want to get into a complex 15 or so elemental system with multiple tiers of damage. For one worked example of the above formula, let's go back to our five element system: Fire, Plant, Water, Normal, Deity. Let's change Fire to instead nullify Fire instead of just being resistant to fire. That means it is resistant to 1/5, weak to 2/5, absorbs 0/5, and nullifies 1/5. The discount for 1/5 is 30%, the discount for 2/5 is 25%. The worked formula would look like:
 0.70* 50 + 0*45 + 0.70*50  - .75*50 = 35+0+35-37.5 = 32.5, rounded up to 33.
The math for multiplexing elements becomes a little complicated. So it is kinda easier to choose between having a multi-elemental typing system, or a multi-tier elemental typing system, but there is one slightly easy band-aid that allows both. It is easier to create a brand new element in the element list for a multi-typed element, and then calculate the advantage cost as if this is a brand new element. So, for example, if we went with our five element system from before, Fire, Plant, Water, Normal, Deity, and wanted to add in a Plant/Deity hybrid character, it would be easiest to just make "Plant/Deity" a sixth type, and count overlapping weaknesses or strengths twice. So since a plant/Deity would be strong against water for being a plant, and strong against water for being a deity, we would count that twice. This means we can get a wonky ratio of greater than 100%. As long as the ratio stays below 100%, this math coincidentally gets us the right number of points.
What if somehow we get above 100%? The multiplier is a little complicated, but basically, you do a bit of modulo division. Say we got a ratio of 120%; This divides by 100% once, with a remainder of 20%. If this were for resistance which is multiplied by 50 points, we would then need 1* 50 points + 50 * (1-Discount factor for 20%), so for every complete 100% we get, we add 100% of the base cost to the total for the modifier, and you will get a reasonable approximation for the complicated interaction of quadruple weaknesses or quadruple resistances. Absorptive DR and Nullfying DR will be additive though, however.
This is, indeed, a bit complicated, so I'd recommend not going this far if you don't like crunching complicated numbers. It might be trivial to automate this though with a bit of simple code, but at this point, it stops being simple enough for a spreadsheet.


It doesn't look especially difficult to create a system of racial meta-traits for elemental weaknesses and resistances, if we don't go too far. Math gets a little complicated if we have triple elemental typing, or if we try to combine multi-tier with multi typing, but symmetrical resistances can be solved with a single short equation, and asymmetrical weaknesses, multi-typed, or (not and!) multi-tiered can be easily solved with a pretty simple spreadsheet. It's a little surprising how simple the math is to me to implement. It is simple, but a little tedious, but it could be easily solved with a spreadsheet that counts how many elements are in one column, and asks for the number of weaknesses, resistances (and absorbed and nullified elements for the more complex formula) and just does the math for you. That way you can easily just type out more elements as you think them up.
A weakness is that this system kinda hopes you know all the elements that will exist ahead of time. If you want to add more elements later, then it can have a big impact on player characters which might suddenly have a point surplus or point deficiency as their meta-trait become proportionally more or less valuable.
Another weakness is it assumes that all elements are given equal billing. The first generation of Pokemon has 151 entities. Around 30 are water. There are 15 elements. It basically has three times the fair allotment of entities, making entities that are strong against water objectively more valuable, and those weak against water objectively less valuable. I think this is too much math, so I didn't include this.
Altogether, I just got this idea in my head and wanted to put it down on paper.

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...