Is OnRep Scoped to a specific replication call?

So yeah what you are doing ain’t gonna work reliably because nothing guarantees BattleBegin ever happens on clients since you are changing to Deployment quickly after.

A quick solution to the bug would be to change your check for removing loading screen.
Enums are convertible to byte (which are small integers), so instead of doing this :

//OnRep_State
if (State == BattleBegin)
    RemoveLoadingScreen()

You could do the following instead (maybe need to convert to byte type in blueprint) :

//OnRep_State
if (State >= BattleBegin)
    RemoveLoadingScreen()

Now this should handle players joining late and even in the middle of the game if necessary.