/Engine/Plugins/Runtime/GameplayAbilities/Source/GameplayAbilities/Public/AttributeSet.h
This is called just before any modification happens to an attribute's base value when an attribute aggregator exists. This function should enforce clamping (presuming you wish to clamp the base value along with the final value in PreAttributeChange) This function should NOT invoke gameplay related events or callbacks. Do those inPreAttributeChange()which will be called prior to the final value of the attribute actually changing.
virtual void PreAttributeBaseChange ( const [FGameplayAttribute](API\Plugins\GameplayAbilities\FGameplayAttribute) & Attribute, float & NewValue ) const