Looking at just the loop:
#FlareReDirect
_PosFlare = getPos _Flare
_missile setdir _PosFlare
~0.0001
?(alive _missile):goto "FlareReDirect"
One problem is that the getpos command returns an array: [xcoord,ycoord,zcoord].
SetDir needs a single number from 0-359.
if you use a dirtoobj function (look it up in the editor depot's function section and insert required line in the init.sqs) and change the loop as such:
#FlareReDirect
_DirFlare = [_missile,_Flare] call DirToObj
_missile setdir _DirFlare
~0.0001
?(alive _missile):goto "FlareReDirect"
You might have some luck with this...I'd have to test it myself to see if it would work to know for sure. You might need to use SetVelocity instead of SetDir...this is much more complicated to get things moving in the right direction, however.
-Grendel