It leaks 2 positions each loop (40 loops = 80 position leaks each cast) and is not mui (not sure about mpi) because of the wait inside the loop. You need 2 Point variables (or a Point array) where you store the location of the target and the caster and in the end of the trigger you put in a custom script for each location (2 in this trigger) sayning "Call RemoveLocation(udg_TempLoc[1])" and the other one with [2] (this is an example for a point array named TempLoc)