Need Blueprint logic advice for Conditional Checks before creating Objects

Are you fine with using C++?

If so, make a static function in the Perk class that takes a TSubclassOf<UPerk>, as well as a target object (AActor*)

Then in the function, you get the DefaultObject of the Perk class, and you run the IsUsable function on it, pass the target actor as well, do the relevant calculations and return appropriately

This is how GAS checks for if abilities can activate