It did help!
A few clarification points Pierre:
1. The targets are called tgt# while the soldiers are called tgtR#. The soldiers have an additional R (in my mind, the R stands for Rifleman). It makes for easy reference, at least to me. So _this refers to _tgt4 while _tgtR4 was the soldier. Its one character difference, no worries, its an easy mistake to make.
2. I spawn the soldiers with createUnit, not createVehicle (though using createVehicle can lead to some funny moments when the AI is just brain dead
). I would use BIS_fnc_spawnGroup. I have used that function in the past, but in order to get the name for the units for later reference, I have to use createUnit so I can place in their init that 'theirName' = this;
I had a whole long post typed up to give more info and then a solution dawned on me.
I was looking at how you used BIS_fnc_spawnGroup and I realized I had never tried it on a unit directly placed in the editor. I placed an AAF dude and an unarmed nato dude in the editor. I tested the suppression script trying to get the AAF dude to fire at the unarmed nato dude. He kept playing the animation, so it wasn't how I was spawning in the unit. I changed the suppression script to use the code below and it worked.
_logic action ["UseWeapon", _unit, _unit, 0];
I spawn a gameLogic at the start of the script called _logic. for that first variable. I guess the key is to make sure that whatever you call it on at the beginning of the line (in the case above, _logic), is not the same as the unit that you define in the array (in the case above _unit). It also appears that it won't work when you swap _logic of a non player unit. If you use the player, the player plays the pickup animation.
Thank you for your help Pierre and JShock.