Gameplay Ability Plugin: Cannot derive gameplay effect stats from Source actor attributes for cooldown

For those lost souls, I found the answer.

The function FGameplayEffectContext::AddInstigator(class AActor *InInstigator, class AActor *InEffectCauser) in gameplay effect types takes the Instigator, in this case MyCharacter and saves it. This is considered the source in future calculations for the ability. However, during this process it attempts to cast the instigator to the Interface IAbilitySystemInterface and use the one built-in function “GetAbilitySystemComponent” to get a reference to the component. In my case, MyCharacter didn’t implement that interface! So nothing happened and it failed silently.

Yet when MyCharacter is evaluated as the Target of the effect, it doesn’t matter that the class doesn’t implement IAbilitySystemInterface.

This seems like odd behavior, but at least I know the reason.