Predictable Armour and Resistance

The Problem With Armour and Resistance

I quite like the idea of how armour and elemental resistance work in the game. But I don’t quite like how it works out in practice.

The idea is that if you have x% armour (or elemental resistance), then every point of damage will be rolled against x% and be absorbed if successful.

I like this because it is a very simple idea, very easy to communicate and scales well with damage without using complicated formulae.

The problem is that it is extremely unreliable and random in practice. If you have 25% armour and take 4 damage, you may take 0,1,2,3 or 4 damage. It is both possible to block more than 25% and less than 25%. On average it will block 25% which also sounds good in theory. However, the reason it works badly in practice is:

  • TGGW is a short and focused game. The number of elemental attacks done in a game are typically not too many. An avarage of e.g. 25% lack meaning if it is about one or two hits.
  • 1 point of damage is a huge deal in TGGW (10% of starting Hp), so the difference between taking 0 and 4 points of damage (for example) is an extreme difference. In a game where damage hits were typically 100 points of damage I think the current system would have worked much better.

Making Absorption Predictable

I have come up with a more predictable armour/resistance scheme that is a little bit more complex, but still similar to how it used to work.

The idea now is that armour and resistance absorb the percentage flat. E.g. if you take 4 damage and have 25% armour you will always absorb 1 damage exactly. However, in most cases the percentage of the damage is not an integer but a fractional number. A fractional number (with non-zero decimals) represent a number lying in-between two integers. For example 25% of 7 is 1.75 which lies between 1 and 2. In the new system, if you have 25% armour and take 7 damage you will absorb 1 damage, but you also have a 75% (coming from the .75 part) to absorb a second point of damage.

Generally: if you have x% armour and take y damage, then the damage absorbed will be x%*y rounded down + a chance to absorb one more. This chance is determined by the fraction. I think this is simplest to explain with some examples:


35% armour, take 4 damage: 4*35% = 1.4 -> absorb 1 damage, with a 40% chance to absorb 2 damage.

10% armour, take 6 damage: 6*10% = 0.6 -> absorb 0 damage, with a 60% chance to absorb 1 damage.

50% armour, take 1 damage: 1*50% = 0.5 -> absorb 0 damage, with a 50% to chance absorb 1 damage (just like before).

As a consequence, the system works exactly like before if you only take 1 damage. The difference and predictability starts to show for higher damage hits.

The same principles is applied to resistances and weaknesses. As you can see, the randomness in how many points of damage to absorb is limited to one single point: either you absorb x damage or you absorb x+1 damage.


This makes armour and resistances more valuable as they give a guarantee to absorb some high damages. It also gives monster resistances more impact as they give similar guarantees.

Overall change makes armour and resistances more important both for monsters and the player and makes elemental damage more interesting and less random and arbitrary.





  1. Jeeeez, you are back!! This might help the hero to avoid crazy deaths. Right now, i die a lot against those fast cold damage bugs, snowball goblins and ice wolves. this might help there!

    Do you have any idea of the next release date? 😀

    1. Yes, it is exactly against those high damage monsters the resists will help better 🙂

      Not a release date yet, but I think I will make a smaller release fairly soon (a month or two). It will likely be a fairly small release (possibly a v2.2.5 rather than v2.3).

Comments are closed