Just mentioning that this discussion helped me solve a similar problem.
In the War Battles tutorial, when I moved past the initial setup and did the extra suggestions, I had missile-tank explosions not finishing. The missile would hit the tank and then the explosion wouldn’t finish for either the missile or the tank.
Notably, the score would count up like crazy.
Turns out it was the collisions of the tank & missile. They were continuing to happen during the explosion animations and caused the animations to not finish (sort of like the update_animation problem here).
Disabling the collision object on the rocket immediately solved it.
function on_message(self, message_id, message, sender)
if message_id == hash("animation_done") then
go.delete()
elseif message_id == hash("collision_response") then
explode(self)
msg.post("#collisionobject", "disable") -- Disable here ends the collision overloads
msg.post(message.other_id, "explode")
msg.post("/gui#ui", "add_score", {score = 100})
end
end