Description

When using infinite or duration-based effects, required and ignored tags will have no effect on attribute modifiers. This appears to be caused by OnAttributeAggregatorDirty (GameplayEffect.cpp:2917) not populationg the FAggregatorEvaluateParameters structure with source or target tags prior to evaluating the aggregator. The lack of tags later results the checks in UpdateQualifies (GameplayEffectAggregator:10) being performed with an empty tag container.

This issue is similar to, but not fixed by, [Link Removed] and [Link Removed].

Steps to Reproduce
  • Create a Gameplay Effect with an attribute modifier
  • Set to infinite duration with no period
  • Add a required tag to this
  • When applied, the effect will no check the tags of the source nor target

Callstack:
FAggregatorMod::UpdateQualifies(const FAggregatorEvaluateParameters &) GameplayEffectAggregator.cpp:15
FAggregatorModChannel::UpdateQualifiesOnAllMods(const FAggregatorEvaluateParameters &) GameplayEffectAggregator.cpp:156
FAggregatorModChannelContainer::EvaluateQualificationForAllMods(const FAggregatorEvaluateParameters &) GameplayEffectAggregator.cpp:291
[Inlined] FAggregator::EvaluateQualificationForAllMods(const FAggregatorEvaluateParameters &) GameplayEffectAggregator.cpp:402
[Inlined] FAggregator::Evaluate(const FAggregatorEvaluateParameters &) GameplayEffectAggregator.cpp:359
FActiveGameplayEffectsContainer::OnAttributeAggregatorDirty(FAggregator *, FGameplayAttribute, bool) GameplayEffect.cpp:2968
UAbilitySystemComponent::OnAttributeAggregatorDirty(FAggregator *, FGameplayAttribute, bool) AbilitySystemComponent.cpp:1794
[Inlined] Invoke(void (UAbilitySystemComponent::*)(FAggregator *, FGameplayAttribute, bool), UAbilitySystemComponent *&, FAggregator *&&, const FGameplayAttribute &, const bool &) Invoke.h:66
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (UAbilitySystemComponent::*&)(FAggregator *, FGameplayAttribute, bool), UAbilitySystemComponent *&, FAggregator *&&) Tuple.h:311
TBaseUObjectMethodDelegateInstance::ExecuteIfSafe(FAggregator *) DelegateInstancesImpl.h:665
[Inlined] TMulticastDelegateBase::Broadcast(FAggregator *) MulticastDelegateBase.h:254
TMulticastDelegate::Broadcast(FAggregator *) DelegateSignatureImpl.inl:956
FAggregator::BroadcastOnDirty() GameplayEffectAggregator.cpp:605
FScopedAggregatorOnDirtyBatch::EndLock() GameplayEffectAggregator.cpp:671
FScopedAggregatorOnDirtyBatch::~FScopedAggregatorOnDirtyBatch() GameplayEffectAggregator.cpp:656
UAbilitySystemComponent::InhibitActiveGameplayEffect(FActiveGameplayEffectHandle, bool, bool) AbilitySystemComponent.cpp:304
FActiveGameplayEffectsContainer::InternalOnActiveGameplayEffectAdded(FActiveGameplayEffect &) GameplayEffect.cpp:3903
FActiveGameplayEffectsContainer::ApplyGameplayEffectSpec(const FGameplayEffectSpec &, FPredictionKey &, bool &) GameplayEffect.cpp:3871
UAbilitySystemComponent::ApplyGameplayEffectSpecToSelf(const FGameplayEffectSpec &, FPredictionKey) AbilitySystemComponent.cpp:842
UAbilitySystemComponent::ApplyGameplayEffectSpecToTarget(const FGameplayEffectSpec &, UAbilitySystemComponent *, FPredictionKey) AbilitySystemComponent.cpp:756
UAbilitySystemComponent::ApplyGameplayEffectToTarget(UGameplayEffect *, UAbilitySystemComponent *, float, FGameplayEffectContextHandle, FPredictionKey) AbilitySystemComponent.cpp:535

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-207719 in the post.

3
Login to Vote

Unresolved
ComponentUE - Gameplay
Affects Versions5.3.2
Target Fix5.5
CreatedFeb 21, 2024
UpdatedFeb 26, 2024