Going to suggest this again, as it's been a while:
Make it so that when you move ships around between task groups, the task group speed isn't automatically set to the max for the task group.
I keep lots of task groups at speed 1 kps at colonies, for holding new ship construction or for overhaul or whatever. I am generally trying to hide the performance of these vessels from other player races, but any time a new ship is added to a TG (or a ship removed from one for that matter), the speed of all TGs involved in the transfer is set to the maximum, rather than keeping it at what I have it set at.
So basically, it looks like this right now (Pseudocode):
TransferShips()
{
for each (Ship ship in GetShipsToTransfer())
{
SourceTaskGroup.RemoveShip(ship);
DestTaskGroup.AddShip(ship);
}
SourceTaskGroup.Speed = CalculateMaxSpeedForTaskGroup(SouceTaskGroup);
DestTaskGroup.Speed = CalculateMaxSpeedForTaskGroup(DestTaskGroup);
}
Where it should look like this, ideally:
TransferShips()
{
sourceOriginalSpeed = SourceTaskGroup.Speed;
destOriginalSpeed = DestTaskGroup.Speed;
for each (Ship ship in GetShipsToTransfer())
{
SourceTaskGroup.RemoveShip(ship);
DestTaskGroup.AddShip(ship);
}
SourceTaskGroup.Speed = Math.Minimum(sourceOriginalSpeed, CalculateMaxSpeedForTaskGroup(SouceTaskGroup));
DestTaskGroup.Speed = Math.Minimum(destOriginalSpeed, CalculateMaxSpeedForTaskGroup(DestTaskGroup);
}