no your problem is in the bullet_hole function.
you're getting a delay of time between when the script in that function is executed, so this line:
vec_set(my.skill5,YOU.skill5);
isn't always valid. and is why its not always working
because in 1 frame ( or even less) YOU might point to something totaly different
you nee to use the event function to handle such data to be sure what is stored based on what triggers it.