Without seeing your events I cant be sure, but you could have conflicting movement demands as the enemy moves in and out of range.
I like to use boolean instance variables that control what state the enemy is in. You can set them with your events.
eg.
If Enemy distance to player is less than 50 - set instance variable "Kite" to true
If Enemy is Kite - (insert your custom kiting movement here and attacks here)
- sub event - if Enemy distance to player is greater than (whatever you want) set Kite to False