GE Modifiers that Require Tags on Source or Target Don't Get Applied when Tags are Granted by Infinite, Passive GEs

If an infinite Gameplay Effect has a modifier that is controlled by a required tag on the source or target, it does not get applied if the tag is granted by another infinite, passive Gameplay Effect on the ASC of the source or target.

Steps to Reproduce

  1. Install the “Action RPG” sample project.
  2. Open the “Action RPG” sample project in UE 4.27 (I previously reproduced this issue in 4.26 as well).
  3. Create a new GameplayEffect blueprint called GE_BugCheckTag that has the following characteristics:
  • Duration Policy: Infinite
  • Modifiers
    • Attribute 0:
      • Attribute: RPGAttributeSet.DefensePower
      • Modifier Op: Add
      • Modifier Magnitude:
        • Magnitude Calculation Type: Scalable Float
        • Scalable Float Magnitude: 1000
      • Source Tags: (you will get the same behavior even if you use Target Tags instead).
        • Require Tags:
          • Status.DamageImmune
  1. Create a second new GameplayEffect blueprint called GE_BugGrantTag that has the following characteristics:
  • Duration Policy: Infinite
  • Granted Tags
    • Added: Status.DamageImmune
  1. Open “Content/Blueprints/BP_PlayerCharacter”.
  2. Add GE_BugGrantTag and GE_BugCheckTag (in that order) to “Abilities” → “Passive Gameplay Effects”.
  3. Launch the game via PIE.
  4. Skip the into by clicking or pressing ENTER.
  5. Open the UE console with the tilde key.
  6. Display the GAS debug interface using showdebug abilitysystem.
  7. Check the value of RPGAttributeSet.DefensePower.

Expected Results

RPGAttributeSet.DefensePower should be boosted by 1000.

Actual Results

RPGAttributeSet.DefensePower does not get boosted because it indicates that it requires the source to have the Status.DamageImmune tag (which, as indicated, it already has).

1 Like

As a workaround, I am using a top-level GE that has several Conditional GEs that are controlled by tags, and that appears to be working as intended – each referenced GE is only applied when the corresponding tag is applied.

I’m still experiencing this issue. Infinite GE ignores this, making conditional effects unusable. There isnt a way to make one infinite effect change an attribute on a condition now, as when using the Component field, it will not remember to remove it when the effect is removed.