Ticket #2580: command.js.diff

File command.js.diff, 1.2 KB (added by s0600204, 10 years ago)

A check to prevent a technology from being researched more than once.

  • Commands.js

     
    252252        if (CanControlUnit(cmd.entity, player, controlAllUnits))
    253253        {
    254254            var cmpTechnologyManager = QueryOwnerInterface(cmd.entity, IID_TechnologyManager);
    255             if (cmpTechnologyManager.CanResearch(cmd.template))
     255            if (!cmpTechnologyManager.IsTechnologyResearched(cmd.template))
    256256            {
    257                 var queue = Engine.QueryInterface(cmd.entity, IID_ProductionQueue);
    258                 if (queue)
    259                     queue.AddBatch(cmd.template, "technology");
     257                if (cmpTechnologyManager.CanResearch(cmd.template))
     258                {
     259                    var queue = Engine.QueryInterface(cmd.entity, IID_ProductionQueue);
     260                    if (queue)
     261                        queue.AddBatch(cmd.template, "technology");
     262                }
     263                else if (g_DebugCommands)
     264                {
     265                    warn("Invalid command: Requirements to research technology are not met: " + uneval(cmd));
     266                }
    260267            }
    261268            else if (g_DebugCommands)
    262269            {
    263                 warn("Invalid command: Requirements to research technology are not met: " + uneval(cmd));
     270                warn("Invalid command: Player "+player+" has already researched " + cmd.template.genericName);
    264271            }
    265272        }
    266273        else if (g_DebugCommands)