(I first thought that video is your game, in wich case you dont need any advice

The cleanest way to have the different game modes, is
to have one main game-loop that acts as a state machine.
Depending on the case wich gamemode is running, the mainloop
executes the sub functions for each mode.
Any actions should observe if they are running in the
correct game-mode. If not, they should pause or delete the entity.
In case that your exploration and fighting area are different locations, you should use level-load to make a clean
new state for every fight / run-around.
All persistant data should not be stored in entity-skills,
but stored or saved to some global variables/fields.
After the level-load you can recreae the exploration-scene
from the stored data.
The fights usually dont need to save anything else than the
result to points and attributes.
The cuscenes could just pause the game and show the slides/video,
or when using the ingame-rendering, do the same as
the fights -> using a clean new level-load state.