Well, first of all, I just realized, that if your Firebat is "equipped", there is no trigger that centers the location on it. By your current method in Trigger 1, loc(testing) will center on the Marine at loc(testing), but if there is no Marine present, it will center itself at loc(testing), effectively remaining in the same place.
You would need to use death counters to keep track of which unit the player is using. Set P1 deaths of "Data Disc" (or some other unkillable unit) to 1 if you just switched to a Marine, and this same counter to 2 if you just switched to a Firebat.
When P1 deaths of "Data Disc" is 1 (== you are using a Marine), center the loc on the Marine. When it's 2, center it on the Firebat.
Also, I noticed that the Center Location actions you have in Triggers 2 and 3 are redundant... especially since you wish to remove the unit it has been centering on previously, if you move it onto the newly-teleported unit, it increases the chances of the old unit being stuck outside of the loc(testing)...
If you are dissatisfied with its speed, you might need hypercheck (or "hyper triggers"). Just goto an active player that uses no waits, and create a trigger with
Cond: Always
Act: Wait 0, and copy this 62 times to make a total of 63. Then put a "Preserve Trigger" at the end.
Copy the entire trigger two times to make three.
And you can enlarge the location. This was one of the first things I meant to say, but it got overwritten during the typing up of this reply. Da-Darkfire's post reminded me of this

UED77