So I’ve found a solution. For some reason, calling the level within a blueprint directly doesn’t work. Instead, I had to create a function in the game instance and call that in my blueprint. Between the level unloading and loading the next one, the blueprint code got lost and so it just reloaded the same level. Using the game instance fixed it.
Dammit.