+ Hero: On collision between Hero and BibleDrop
-> System: Add 1 to global variable 'BookCount'
-> BibleDrop: Destroy
+ System: Is global variable 'BookCount' Equal to 66
-> System: Add 2000 to global variable 'Score'
-> System: Set global variable 'BookCount' to 0
-> Hero: Set animation frame to 2
+ Hero: Animation frame Equal to 2
+ System: Every 5000 milliseconds
-> Hero: Set animation frame to 1
Okay, according to my logic what should happen with this is:
When 'BookCount' is 66 the animation frame will be changed to 2. (note animation frame is not another animation, but the second frame of the current animation)
Then in Event 73, Every 5 seconds, we set animation frame to 1. (note again, not the animation, but the frame of the current animation)
What we should see with this code, is the animation "frame" changing to the second frame one time, once 'BookCount' is 66, and then never change back to frame 1.
Because Event 73 is only run every time if in the same frame/tick: "Hero Collides with BibleDrop AND BookCount = 66 AND Hero Animation Frame = 2. However in the next tick, the Event check already can't get down to Event 73, because Hero must still be colliding with Bible Drop and BookCount must be equal to 66.
From my understanding, You should better use the Every X ms as a main Event, combined with a constantly true condition (or at least true for longer than the 'Every X ms' You entered), like a variable.
7Souls way is a good suggestion.