Quick answer: Always Clear Timer by Handle before Set Timer by Event. On EndPlay, ClearAllTimersForObject(self).
You call Set Timer twice quickly. Now your callback fires twice per second instead of once. Two timers running; the variable just holds the latest handle.
The Fix
BP:
Function: ScheduleHeal
Clear Timer by Handle (HealHandle) // kill prior
Set Timer by Event (every 1 sec) -> HealHandle // fresh
EndPlay:
Get World → Get Timer Manager
→ ClearAllTimersForObject(self)
Clear-then-Set is the canonical pattern. Lifecycle cleanup catches anything you missed.
Verifying
Schedule heal twice in quick succession. Heal fires once per second, not twice. Without Clear: doubles up.
“Clear first. Set second. Single timer.”
Related Issues
For BP timer server-only, see timer server-only. For BP Add Unique, see Add Unique.
Clear. Set. One timer.