Sure no problem.
In 4.1 you have the ability to override CanJump() (note CanJumpInternal_Implementation() is not available in 4.1), so in you character class you could do something like this:
// .H:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Character Movement")
int32 MaxJumpCount;
UPROPERTY()
int32 CurrentJumpCount;
bool CanJump() const OVERRIDE;
// .CPP:
bool AMyCharacter::CanJump() const
{
return Super::CanJump() || (CharacterMovement->MovementMode == MOVE_Falling && CurrentJumpCount > 0 && CurrentJumpCount < MaxJumpCount);
}
You could override DoJump() to increment this CurrentJumpCount counter, as well as resetting it in an overridden version of OnLanded(). Make sure you call the Super:: versions where needed.
As I say, 4.2 makes this nicer & more robust by supplying new events & functions