Hi there,
I think whats going is the while loop is never being terminated, at least not as fast as unreal would like if at all. There is a much simpler way to implement this using the same timers you have without a while loop. The timer will run independent of the while loop, even if the condition is false, so you really only need to set it once.
I’ve recreated some of your functions in the first person template, but it should still work for yours.
Try implementing it like this:
I’ve tested out and gotten this result: When the player overlaps the object, it immediately does 10 damage, and then does 10 damage every second after that until the overlap is ended. By clearing and invalidating the time using its handle, we can stop it from executing. All without a loop. I think this is what you were going for, but let me know if I missed something.
Hope this helps!