When creating a GameplayEffect, modifiers can tag requirements for the Source and Target tags. For Duration gameplay effects, these tag requirements are checked from FAggregatorMod::UpdateQualifies which ticks to update if the modifier should apply or not. However, these tag requirements are never checked for immediate modifier application for Instant or Periodic abilities as those just call InternalExecuteMod directly from ExecuteActiveEffectsFrom without checking the tag requirements. GE Executions go through a different code path and will correctly check the tag requirements from AttemptCalculateCapturedAttributeMagnitude.
This is confusing because tag requirements work in some situations but not others. Either immediate mod application should be changed to check tag requirements, or this issue should be communicated to users somehow. This is not a recent regression as it does not appear these tag requirements for immediate modifiers were properly checked in the past.
There are simpler ways to reproduce this with test content, but here is a repro using Lyra:
Expected Result:
The player's health should not decrease because the player's source tags do not match the required tags added in step 6
Actual/broken result:
The player's health is still decreased when grenade is thrown because the tag requirements are ignored
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-189065 in the post.
3 |
Component | UE - Gameplay - Gameplay Ability System |
---|---|
Affects Versions | 4.27, 5.3 |
Target Fix | 5.4 |
Fix Commit | 30823101 |
---|---|
Main Commit | 30823117 |
Created | Jun 19, 2023 |
---|---|
Resolved | Jan 29, 2024 |
Updated | Feb 12, 2024 |