Well let me start... you leak some regions, you can even avoid using the by using something like: Units in range... that's also better since regions is "square shaped", range is circular
And here's your mistake and I should have noticed it even before you posted the triggers...
What' have we said about global variables? add the udg_...
So here what it should like:
call RemoveLocation(udg_CM_TargetPoint[udg_CM_Int])
isnt' CM_Int a variable after all?
same applies for Groups and everything that needs to be destroyed...
There are alot of Waits, and if it's a spell which you're going to post eventually, well get rid of them
if you want me to PM you how (I've got a small tutorial on that) just let me know!
Enjoy and goodluck!