Instant Gameplay Effect with Backing Attribute set in same Effect leads to 'unexpected results'

With Gameplay Ability System, having an Attribute Based modifier with a Backing Attribute that is set in the same chain of modifiers with Instanced Gameplay Effects leads to ‘unexpected’ results.
Here’s a simple screenshot trying to explain what I mean:

The calculation in such case is expected to return 6.4375, but with instant GE, the Armor in this case is simply skipped and BlockChance is calculated wrong, at least in what one would expect as a result from a logical point of view. Sure, setting Infinite solves this, but…

Either do some better handing of Attribute Backed modifiers, or at least have the editor maybe throw some warning in case of having such dependencies in a modifier chain in an Instant GE.

Quite some time with no response. But in the meantime, here’s a solution of how to use an Instant effect for this. Credits go to @mss10001 who did point this out at another place on Discord.

Lets have these effects

Resilience
    Armor
        BlockChance
        CriticalHitResistance

    ArmorPenetration
        CriticalHitDamage
        CriticalHitChance

The 4 modifiers Blockchance, CriticalHitresistance, CriticalHitDamage and CriticalHitChance are those depending on Armor respectively ArmorPenetration, which rely on Resilience - causing the trouble with these interdependencies.

Solution: Create a separate Instant GameplayEffect, e.g. GE_Dependencies_Level1.

Move these 4 depending Modifiers from the Original Effect into this new effect.

Add an Additional Effects Gameplay Effect Component into to the original GE, here referencing the Dependencies Effect, thus replacing the 4 modifiers.

image

All calculations are now done perfectly.

I’ll need to experiment more to test, if this can even make up a hierarchy.

Just a TIP: Moving modifiers is really easy, because of the nice Cut&Paste feature, so just copy complete Modifiers and paste into another Gameplay Effect. Just in case, because this is a huge timesaver and avoids errors.