I’m developing a similar game so it was very interesting to see how to build levels around a few basic moves!
Overall it’s nicely done, the mood is clear, platforms well contrasted with background (one of the things I was studying for my game).
I had issues with my enemies spamming attacks and the soldiers with their heavy lagging attack really do the job here. Unfortunately most enemies use the same pattern with slight time variations (Level 2 boss has more lag before hit, which means you can chain two hits before dashing, making it easier to beat than Level 1 boss - and above all, we expect a wizard to use spells not just melee - but I get the point of reusing the same code for enemy behaviour esp. for a jam).
The hardest for me was platforming though. There is a forced momentum at the end of an air dash which made me fall from many platforms. When I landed just on the edge, physics made me slip and fall anyway (better use snappy physics for this kind of game).
So I restarted the levels over and over, and since killing enemies doesn’t bring a bonus I just dashed through them, making it a pure platformer. In the end, I couldn’t get past Level 3. I could probably by trying again and again, but I’d rather spend more time on combat. cpwebmarketing’s last suggestions would probably make the combat more rewarding and platforming easier.
You could also never require the player to chain jumps on many platforms high in the air: if they fall, they just reach the “lower path” (as in Sonic) which is filled with more enemies, so a skilled warrior can always finish the level, while someone good at platforming could avoid a few enemies and speedrun.
Even if you don’t update the jam game further, I learned a lot from it already! I wish you good luck on your future projects!