First of all, if this is not a subevent of a taking damage function/event you should put a "trigger once" on it, otherwise it will run a whole bunch of times.
To make sure everything is saved you need to move the wait 5 seconds and everything below that to when the "item set" is triggered (though in general 5 second should be more than enough to save everything, which is a bit strange).
You can loop your saving, meaning once the first is set run the second and when that is set run the third, then do the rest.
You can put them all in one event with a "wait for previous action to complete" after each set item action.
But I would recommend to just push all your save data into a dictionary and just save that once with the dictionary.asJson expression.
You can read the values directly from it too without using globals and you can clear it - same as resetting globals.