1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

[BTS] 3.19 Queued orders and end of movement

Discussion in 'Civ4 - Bug Reports' started by Pep, Jun 29, 2009.

  1. Pep

    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.
     
  2. TheMeInTeam

    TheMeInTeam Top Logic

    Joined:
    Jan 26, 2008
    Messages:
    25,523
    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.
     
  3. PieceOfMind

    PieceOfMind Drill IV Defender Retired Moderator

    Joined:
    Jan 15, 2006
    Messages:
    9,319
    Location:
    Australia
    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.
     
  4. Pep

    Pep King

    Joined:
    May 28, 2002
    Messages:
    688
    Location:
    Spain
    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.
     

Share This Page