[Investigating] Weapons that destroy all armor do not do full damage to troops that gain 5 armor when taking damage

iPhone 11 Pro Max iOS 13.3.1

Screenshot or image:

What you were expecting to happen, and what actually happened:
When I use Mang or Rope Dart, it’s supposed to eliminate all armor and do x damage. When used against troops that gain 5 armor when taking damage, only x-5 damage is delivered. The 5 armor gained when the troop takes damage shouldn’t affect the amount of damage incurred. The troop can’t gain the armor back until damage is done, so full damage should be dealt. The way it’s functioning now, all armor gets eliminated, the troop gets 5 armor, then x damage is delivered (resulting in x-5 damage), then the troop is left with the 5 armor. The troop should either be left with 0 armor and x-5 damage incurred (which still doesn’t make sense), or with 5 armor and x damage incurred.

Example where this becomes extremely annoying:
Fist of Zorn has 5 armor and 30 health left with mana full (there are yellow gems all around the skulls). I have Mang delivering 32 damage. I hit FoZ with Mang, thinking it will eliminate the armor and kill him. FoZ is left with 5 armor and 3 health, then proceeds to cast his spell and kill me.

How often does this happen? When did it begin happening?
All the time, every time. Since I started playing ~2 years ago.

Steps to make it happen again
No special steps needed.


This is one of those things that is very common in a lot of games, where health and damage is calculated all at the same time. This is how it worked in Hearthstone and I believe Magic the Gathering as well (sadly I used to know all the rules but I haven’t played in ages).

Now I completely agree that it is bugged if the damage being dealt should have been lethal but isn’t because of a trait, but the reason is because the game is essentially resolving it all at once on a stack, and in this particular case, the armor being stripped is counted as damage. So now you just resolve it based on order of operations in the game:

Target has X health and Y armor. You attack it and strip Y armor from it. Enemy trait says “We received Y damage, now we gain 5 Armor.” But before that armor is applied, you deal Z damage. The Z damage is applied to the target’s health. So now the enemy has X-Z health, and (Y-Y)+5 Armor.

The problem which I believe you’re describing is that the game is “double dipping” of sorts, and that’s again because the weapons you’re talking about are dealing TWO sets of damage. Let’s continue the stack…

We left off with the enemy having X-Z health and (Y-Y)+5 Armor. But the Z damage also triggered the enemy’s trait, which means the game now applies a full 5 Armor again. But remember, the damage is dealt separately, and the traits proc separately.

Enemy has X health and Y armor.
Y damage is dealt.
Trait is procced.
Enemy now has (Y-Y)+5 Armor.
You deal Z damage.
Enemy’s health is now (X+5)-Z.
Trait is procced.
Enemy’s armor is now 5.

Does that make sense?


Yeah, that makes sense I suppose. I know that programming isn’t always easy and straightforward (if ever). I wasn’t considering “eliminates all armor” as inflicting damage. If I think about it that way, with two sets of damage incurred, I can see what’s happening. Thanks for the explanation.