your event 63 picks all the Ally_Troop that has line of sight to an enemy, but you should then do a for each Ally_Troop (like the event above to get them each to shoot rather than just an random instance the way it stands now, but that is not how I would approach this
there are several problems with the events...
event 62 will pick the nearest enemy and check if it has line of sight to it. if it doesn't, it wont look for other enemies that it does have line of sight to.
having event 63 do all the line of sight work again is adding a lot of work for the device playing the game. it would be better to have event 62 pick an appropriate enemy and save that enemy in an instance variable of the Ally_Troop so it knows which enemy to fire at in event 63.
you might want to have the Ally_Troop check for a new target less than every tick as well (depending on how many troops are in action - as I assume you are having the enemy doing basically the same thing somewhere else).
you also might want to put both the Ally_Troop and Enemies in a family that has all the instance variables to handle targeting and firing so one block of code and efficiently do all the work. The instance variable can be different for Ally and enemy - like range, accuracy, ammo, strength, hitpoints, etc...