Block tags are not working correctly in version 5.5.2, it was working in 5.5.1. This is caused by a change done in version 5.5.2. The exact CL is: CL 35930696
With repro project:
1- Play in the ThirdPersonMap
2- Click E to execute GA_Attack
3- Click F to execute GA_Deffend
4- You will see that the ability GA_Defend has not been blocked even including the necessary Block tags.
Without a Repro Project:
1- Create a ThirdPerson template project
2- Create the following Gameplay Tags: Ability.Type.Combat.Defend and Ability.Type.Combat.Attack.
3- Create two Gameplay Abilities: GA_Attack and GA_Defend. 4- For GA_Attack add Ability.Type.Combat.Attack tag, and for GA_Defend add Ability.Type.Combat.Defend tag. Also, add the Ability.Type.Combat tag as a block tag.
5- Open the ThirdPersonCharacter and create an Ability System Component.
6- On BeginPlay, Give the player the two abilities.
7- Add two input entries and execute each GameplayAbility in a different input key.
8- Run the application and try to execute both. You will see that the second ability will not be blocked, even though it has the block tag set correctly.
This is a regression, as not happening in 5.5.1.
UGameplayAbility::DoesAbilitySatisfyTagRequirements(const UAbilitySystemComponent &, const FGameplayTagContainer *, const FGameplayTagContainer *, FGameplayTagContainer *) GameplayAbility.cpp:319
UGameplayAbility::CanActivateAbility(FGameplayAbilitySpecHandle, const FGameplayAbilityActorInfo *, const FGameplayTagContainer *, const FGameplayTagContainer *, FGameplayTagContainer *) GameplayAbility.cpp:483
UAbilitySystemComponent::InternalTryActivateAbility(FGameplayAbilitySpecHandle, FPredictionKey, UGameplayAbility **, TDelegate<…> *, const FGameplayEventData *) AbilitySystemComponent_Abilities.cpp:1788
UAbilitySystemComponent::TryActivateAbility(FGameplayAbilitySpecHandle, bool) AbilitySystemComponent_Abilities.cpp:1653
UFunction::Invoke(UObject *, FFrame &, void *const) Class.cpp:7192
UObject::CallFunction(FFrame &, void *const, UFunction *) ScriptCore.cpp:1147
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
UObject::ProcessContextOpcode(FFrame &, void *const, bool) ScriptCore.cpp:3114
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
UObject::execLetBool(UObject *, FFrame &, void *const) ScriptCore.cpp:3008
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
[Blueprint] BP_ThirdPersonCharacter: Event BeginPlay Event Graph
ProcessLocalScriptFunction(UObject *, FFrame &, void *const) ScriptCore.cpp:1241
ProcessScriptFunction<…>(UObject *, UFunction *, FFrame &, void *const, void [Image Removed](UObject *, FFrame &, void *)) ScriptCore.cpp:1040
`ProcessLocalFunction'::`2'::<lambda_1>::operator()() ScriptCore.cpp:1286
ProcessLocalFunction(UObject *, UFunction *, FFrame &, void *const) ScriptCore.cpp:1302
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
[Blueprint] BP_ThirdPersonCharacter: F Function /Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C:InpActEvt_F_K2Node_InputKeyEvent_0
ProcessLocalScriptFunction(UObject *, FFrame &, void *const) ScriptCore.cpp:1241
UObject::ProcessInternal(UObject *, FFrame &, void *const) ScriptCore.cpp:1329
UFunction::Invoke(UObject *, FFrame &, void *const) Class.cpp:7192
UObject::ProcessEvent(UFunction *, void *) ScriptCore.cpp:2173
AActor::ProcessEvent(UFunction *, void *) Actor.cpp:1160
TScriptDelegate::ProcessDelegate<…>(void *) ScriptDelegates.h:448
[Inlined] FInputActionHandlerDynamicSignature::Execute(FKey) InputComponent.h:127
FInputActionUnifiedDelegate::Execute(FKey) InputComponent.h:302
UPlayerInput::EvaluateInputDelegates(const TArray<…> &, const float, const bool, const TArray<…> &) PlayerInput.cpp:1553
UEnhancedPlayerInput::EvaluateInputDelegates(const TArray<…> &, const float, const bool, const TArray<…> &) EnhancedPlayerInput.cpp:776
UPlayerInput::ProcessInputStack(const TArray<…> &, const float, const bool) PlayerInput.cpp:1172
APlayerController::ProcessPlayerInput(const float, const bool) PlayerController.cpp:2776
APlayerController::TickPlayerInput(const float, const bool) PlayerController.cpp:5123
APlayerController::PlayerTick(float) PlayerController.cpp:2378
APlayerController::TickActor(float, ELevelTick, FActorTickFunction &) PlayerController.cpp:5276
FActorTickFunction::ExecuteTick(float, ELevelTick, Type, const TRefCountPtr<…> &) Actor.cpp:284
[Inlined] FTickFunctionTask::DoTask(Type, const TRefCountPtr<…> &) TickTaskManager.cpp:306
TGraphTask::ExecuteTask() TaskGraphInterfaces.h:634
UE::Tasks::Private::FTaskBase::TryExecuteTask() TaskPrivate.h:504
[Inlined] FBaseGraphTask::Execute(TArray<…> &, Type, bool) TaskGraphInterfaces.h:482
FNamedTaskThread::ProcessTasksNamedThread(int, bool) TaskGraph.cpp:779
FNamedTaskThread::ProcessTasksUntilQuit(int) TaskGraph.cpp:667
[Inlined] FTaskGraphCompatibilityImplementation::ProcessThreadUntilRequestReturn(Type) TaskGraph.cpp:1453
FTaskGraphCompatibilityImplementation::WaitUntilTasksComplete(const TArray<…> &, Type) TaskGraph.cpp:1526
FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool) TickTaskManager.cpp:814
FTickTaskManager::RunTickGroup(ETickingGroup, bool) TickTaskManager.cpp:1865
UWorld::RunTickGroup(ETickingGroup, bool) LevelTick.cpp:773
UWorld::Tick(ELevelTick, float) LevelTick.cpp:1496
UEditorEngine::Tick(float, bool) EditorEngine.cpp:2138
UUnrealEdEngine::Tick(float, bool) UnrealEdEngine.cpp:547
FEngineLoop::Tick() LaunchEngineLoop.cpp:5871
[Inlined] EngineTick() Launch.cpp:69
GuardedMain(const wchar_t *) Launch.cpp:190
LaunchWindowsStartup(HINSTANCE__ *, HINSTANCE__ *, char *, int, const wchar_t *) LaunchWindows.cpp:266
WinMain(HINSTANCE__ *, HINSTANCE__ *, char *, int) LaunchWindows.cpp:317
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-243505 in the post.
0 |
Component | UE - Gameplay - Gameplay Ability System |
---|---|
Affects Versions | 5.5.2 |
Target Fix | 5.6 |
Created | Feb 5, 2025 |
---|---|
Updated | Feb 20, 2025 |