Hi, it's because in your event, as long as enemy has LOS of the player, it will loop the action, you need a condition to stop the loop, for example checking the animation :
-if enemy has LOS to player
-"spikesout" isn't playing
-"spikeidle" isn't playing
-> Set animation to "spikeout"
Also instead of using "wait" action :
-On "spikeout" finished
-> Set animation to "spikeidle"