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.