I'd recommend having an auto-unload process that 'eats' the movement of the carrier.
Ie, each time you are attacked, the units in the transport are candidates. If you use a unit in a transport, that transport gets 1 less movement next turn. (you'd code this as giving the transport negative movement, then in the pass where you hand out fresh move to each unit you take negative movement into account as a 'movement debt').
This gets rid of the quite uninteresting "did I unload the transport" for both the player and the AI. I understand that "I ambushed the transports and defeated the units before they could deploy!" makes an interesting thought process, but given how simple it is and how annoying it is to have forgotten to hit the U key for the player, and how annoying it is for the AI...
Ie, each time you are attacked, the units in the transport are candidates. If you use a unit in a transport, that transport gets 1 less movement next turn. (you'd code this as giving the transport negative movement, then in the pass where you hand out fresh move to each unit you take negative movement into account as a 'movement debt').
This gets rid of the quite uninteresting "did I unload the transport" for both the player and the AI. I understand that "I ambushed the transports and defeated the units before they could deploy!" makes an interesting thought process, but given how simple it is and how annoying it is to have forgotten to hit the U key for the player, and how annoying it is for the AI...