Regenerate health overtime and after a delay

Is there a way to do this outside of
Tick.

Why you dont want to use Tick, because of performance concerns? If yes, you can always decrease the ticking period of tick event.
On the other hand you can use TimerHandle

FTimerHandle ActiveTimerHandle
FTimerDelegate TimerDelegate;
TimerDelegate.BindUFunction(this, FName("<DepleteFunction>"));
GetWorldTimerManager().SetTimer(ActiveTimerHandle, TimerDelegate, 0.01f, true);


DepleteFunction is your function name that you can harm player.

0.01f is the ticking time of function.
You can add if clause inside of function to have delay like
if counter>5 secs start hurt

Reference about timers