When multiple duration GameplayEffects apply a GameplayCue with the same tag, the network authority game instance (standalone & servers) will remove all GameplayCues with that tag from the AbilitySystemComponent's FActiveGameplayCueContainer.
This affects executions of GameplayCueNotifies, as their OnRemove (5.5: OnCeaseRelevant) functions are executed too early, namely on the first cue expiring rather than on the individual cues expiring. The problem is caused by FActiveGameplayCueContainer::RemoveCue() matching multiple active cues to this check:
if (Cue.GameplayCueTag == Tag)
This problem seems to affect the server and standalone instances only, as clients that get their cue expirations triggered by replication will execute the GCN OnRemove with the correct timing. Still, this needs to be addressed so that GCNs work properly on servers and in standalone.
UnrealEditor-GameplayAbilities.dll!FActiveGameplayCueContainer::RemoveCue(const FGameplayTag & Tag) Line 376 C++
UnrealEditor-GameplayAbilities.dll!UAbilitySystemComponent::RemoveGameplayCue_Internal(const FGameplayTag GameplayCueTag, FActiveGameplayCueContainer & GameplayCueContainer) Line 1419 C++
UnrealEditor-GameplayAbilities.dll!UAbilitySystemComponent::RemoveGameplayCue_MinimalReplication(const FGameplayTag GameplayCueTag) Line 1407 C++
UnrealEditor-GameplayAbilities.dll!FActiveGameplayEffectsContainer::RemoveActiveGameplayEffectGrantedTagsAndModifiers(const FActiveGameplayEffect & Effect, bool bInvokeGameplayCueEvents) Line 4670 C++
UnrealEditor-GameplayAbilities.dll!FActiveGameplayEffectsContainer::InternalOnActiveGameplayEffectRemoved(FActiveGameplayEffect & Effect, bool bInvokeGameplayCueEvents, const FGameplayEffectRemovalInfo & GameplayEffectRemovalInfo) Line 4588 C++
UnrealEditor-GameplayAbilities.dll!FActiveGameplayEffectsContainer::InternalRemoveActiveGameplayEffect(int Idx, int StacksToRemove, bool bPrematureRemoval) Line 4519 C++
UnrealEditor-GameplayAbilities.dll!FActiveGameplayEffectsContainer::CheckDuration(FActiveGameplayEffectHandle Handle) Line 5097 C++
[Inline Frame] UnrealEditor-GameplayAbilities.dll!Invoke(void(UAbilitySystemComponent::*)(FActiveGameplayEffectHandle)) Line 66 C++
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-221997 in the post.
0 |
Component | UE - Gameplay - Gameplay Ability System |
---|---|
Target Fix | 5.6 |
Created | Aug 16, 2024 |
---|---|
Updated | Aug 19, 2024 |