Problem overriding c++ function in blueprints

Hey, Hi, Hello!

I’m currently having issues overriding a couple of C++ functions in a child blueprint class.
No matter what I do I can’t get the function to override in the child BP.

Here is the code:

(.h)

//Level Up Overideable Events
	UFUNCTION(BlueprintNativeEvent, BlueprintCallable, meta = (Category = "Basic|Level|Misc"))
		void LevelUp(LevelType level, const FString& name);

	UFUNCTION()
		virtual void LevelUp_Implementation(LevelType level, const FString& name);

(.cpp)

void UBasicLevelComponent::LevelUp_Implementation(LevelType level, const FString& name)
{
//Code here..
}

The function gets called within another function when an XP thershold is hit and works perfectly, your also able to call the function in the BP graph:

But anything you add to this chain never fires, you can also remove the parent call and it will still increase your level even though it’s not supposed to.
Giving me the impression it’s not being overriden, which is weird because I have a health system that uses the overridable events in the exact same way, but actually works:

(.h)

//Deal Damage-
	//
	//Starts with Shield and overflows to Health, Also checks for Death.
	//
	//CAN OVERRIDE TO ADD YOUR OWN FUNCTIONALITY FOR WIDGETS & ETC, MAKE SURE YOU CALL TO PARENT IF YOU STILL WANT THE BUILT IN FUNCTIONALITY!
	UFUNCTION(BlueprintNativeEvent, BlueprintCallable, meta = (DisplayName = "Deal Damage", AdvancedDisplay = 1, Category = "Basic|Health|Damage"))
		void DealDamage(float Amount, bool Debug);

	UFUNCTION()
		virtual	void DealDamage_Implementation(float Amount, bool Debug);

(.cpp)

void UBasicHealthComponent::DealDamage_Implementation(float Amount, bool Debug)
{
//Code Here..
}

Working overriden function:

So I’m confused on why one works and the other don’t, even though they’re set up in the same way…

The only difference is the “LevelUp” event gets called within another function called “ModifyXP” if our XP reaches a declared threshold.

Whereas the health system node you call directly, and I’m starting to think this is the issue.
(and if so, how would I create a workaround?)

Any help on the situation would be great!
Many thanks, Lewis.