Frame Rate
After a bit of semi-cursed code later, I got the game to now run at 30 FPS. This matches Undertale's frame rate. As a result of this, the correct amount of damage is applied per second.
Attacks
In the last update, I got attacks working. The game would run through a list of times and functions that would be ran every frame during that time. While this worked to make some simple moving sprites, this is far from what's needed to replicate the game.
There are two important stages of the game loop: update, and draw. The update stage is for all the code that doesn't draw anything to the screen. An example would be updating the player's position. The draw stage is where all the drawing functions are called like sprite rendering.
Right now steps of an attack are only ran during the update stage. After some refactoring, I added a second function inside a step. The first one is called during the update stage, and the second one is called during the draw stage. This not only allows the update code to change with the attacks, but also drawing functions to be dynamic.
Now that the drawing functions can be modified, I'm able to spawn and despawn entities on the screen. As can be seen in the animation above, the bones aren't always rendered to the screen.
The attack system is far from complete. Currently, there is no way to exit an attack and load the next one for later. At the moment, I'm avoiding the issue all together by exiting the game. This issue will be my next focus.
As the attack system is maturing, the possibility of recreating the first attack is looking more likely…