This issue makes BP BT decorators not being able to run condition checking every tick.

The core issue is here:

bool UBTDecorator_BlueprintBase::GetShouldAbort(UBehaviorTreeComponent& OwnerComp) const 
	// if there's no condition-checking function implemented we always want to abort on any change
	if (PerformConditionCheckImplementations == 0)
		return true;

	const bool bIsOnActiveBranch = OwnerComp.IsExecutingBranch(GetMyNode(), GetChildIndex());

	bool bShouldAbort = false;
	if (bIsOnActiveBranch)
		bShouldAbort = (FlowAbortMode == EBTFlowAbortMode::Self || FlowAbortMode == EBTFlowAbortMode::Both) && CalculateRawConditionValueImpl(OwnerComp) == IsInversed();
		bShouldAbort = (FlowAbortMode == EBTFlowAbortMode::LowerPriority || FlowAbortMode == EBTFlowAbortMode::Both) && CalculateRawConditionValueImpl(OwnerComp) != IsInversed();

	return bShouldAbort;

bIsOnActiveBranch ends up being false when there are more then one BP decorator on BT's first level

Steps to Reproduce

1. open a project containing AI
2. make an AI use the BT that has been attached to the ticket

Is: BT prints debug info on screen every 5 seconds
Should be: printing every frame.

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

Login to Vote

ComponentUE - AI
Affects Versions4.7.2
Target Fix4.7.3
Fix Commit2478439
CreatedMar 13, 2015
ResolvedMar 13, 2015
UpdatedApr 27, 2018