[BTS] 3.19 Queued orders and end of movement

Pep

King
Joined
May 28, 2002
Messages
688
Location
Spain
I have made the following test: Select a unit, press shift (to queue orders) and select move to a tile (first order) and then fortify (second order). After the end of the movement order:
  • If the unit has remaining move points, it fortifies.
  • If the unit has depleted its movement points, the next turn the unit awakes (instead of fortify).

For example, select a settler and order it to move it 3 tiles (with no movement penalty, like grasslands or plains) away and then sleep: The settler reachs the destination in the second turn and sleeps.

Instead, select a settler and order it to move it 4 tiles away and then sleep: The settler reachs the destination in the second turn and then awakes in the third turn. I think this is a bug: The settler should have to sleep at the beggining of the third turn.
 
The unit movement controls are pretty broken. If you want to do anything except move units one by one, you might as well just report the entire broken control thing as a bug :p.

I'll therefore add mention that alt-clicking prevents you from shift-clicking unless you click on the stack multiple times to unselect everything then reselect it. Control click does not always work (can have similar problems) and can be especially annoying when you have troops or air units at sea.

Units will also sometimes auto move at turn start before you can redirect them. Units are *supposed* to get interrupted if there is an attacking threat to them, but I've seen workers move (automated or just on orders from a previous turn) into a tile adjacent to a barbarian that was IN SIGHT BEFORE IT MOVED. The AI deliberately moved the worker to its death before I could interrupt it.

Of these, the selection bug is the most annoying.

And yes, the OP isn't isn't just for queue orders either. If you tell a unit to fortify, it will instead wake the next turn if you just moved it. Moving units into a city then instructing them to heal when they run out of moves also prompts you to move them again the next turn.

There are things I put up with since this is such a great game, but when you think about it they're actually major flaws...few games can get away with faulty controls and that is exactly what civ IV has.
 
A workaround: While you're still holding shift, press the fortiy button twice. On the next turn the unit will not wake because of the 2nd fortify order. I haven't tried it myself but I'm assuming that'd work.
 
I have revised the source code to track the bug:
If the actual mission is a "move to" mission at its destination plot and there are no moves left, the next mission starts with no movement points and sets activity type to ACTIVITY_HOLD in the beginning of the function startMission(). This causes canStartMission() to return false for several mission types.

A quick fix I have found is writing the following code at the end of the function ContinueMission:

if (bDone)
{
...
if (!isHuman() || (headMissionQueueNode()->m_data.eMissionType !=
MISSION_MOVE_TO))
{
deleteMissionQueueNode(headMissionQueueNode());
}
else
{
if (canAllMove() || (nextMissionQueueNode(headMissionQueueNode()) == NULL))
{
deleteMissionQueueNode(headMissionQueueNode());
}
}

...
}

With this code, a move order with a following order queued, is cleared at the beggining of the next turn. This way, the new order begins with enough move points so that activity type is not set to ACTIVITY_HOLD.

I have tried this fix in my own mod and it seems to work.
 
Back
Top Bottom