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
- Install the “Action RPG” sample project.
- Open the “Action RPG” sample project in UE 4.27 (I previously reproduced this issue in 4.26 as well).
- 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
-
Require Tags:
-
Attribute:
-
Attribute 0:
- Create a second new GameplayEffect blueprint called
GE_BugGrantTag
that has the following characteristics:
- Duration Policy: Infinite
-
Granted Tags
- Added: Status.DamageImmune
- Open “Content/Blueprints/BP_PlayerCharacter”.
- Add
GE_BugGrantTag
andGE_BugCheckTag
(in that order) to “Abilities” → “Passive Gameplay Effects”. - Launch the game via PIE.
- Skip the into by clicking or pressing ENTER.
- Open the UE console with the tilde key.
- Display the GAS debug interface using
showdebug abilitysystem
. - 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).