Пример #1
0
bool Debug::execute(aithread &thread) const
{
  // Perform independant behaviours
  if ( this->getOpcode() == AISCRIPT::Enum::FATAL_ERROR )
  {
    // Message
    Broodwar->sendText("Illegal AI script executed.");

    // Debug
    thread.saveDebug(Text::Green, this->getOpcode());
    
    // Kill the script
    thread.killThread();
    thread.noretry();
    return false;
  }
  else if ( this->getOpcode() == AISCRIPT::Enum::DEBUG )
  {
    // Read parameters
    WORD wJump;
    thread.readTuple( std::tie( wJump) );

    // Send the message
    Broodwar->sendText("%s", &pbAIScriptBinary[thread.getScriptOffset()] );

    // Jump to offset
    thread.setScriptOffset(wJump);
    thread.saveDebug(Text::Green, this->getOpcode(), "p_%X %s", wJump, &pbAIScriptBinary[thread.getScriptOffset()]);
  }
  return true;
}
Пример #2
0
bool Harass_Factor::execute(aithread &thread) const
{
  // Parameters
  WORD wUnknown;
  thread.readTuple( std::tie( wUnknown ) );

  // HarassFactor(wUnk);

  // Save debug info and return
  thread.saveDebug(Text::Red, this->getOpcode(), "%u", wUnknown);
  return true;
}
Пример #3
0
bool Allies_Watch::execute(aithread &thread) const
{
  // Params
  BYTE bExpansionId;
  WORD wBlock;
  thread.readTuple( std::tie(bExpansionId, wBlock) );
  
  // @TODO

  // Save debug info and return
  thread.saveDebug(Text::Red, this->getOpcode(), "%u %04X", bExpansionId, wBlock);
  return true;
}
Пример #4
0
bool Panic::execute(aithread &thread) const
{
  // Retrieve parameters
  WORD wOffset;
  thread.readTuple( std::tie(wOffset) );

  // Set panic block
  MainController.wPanicBlock = wOffset;

  // Save debug info and return
  thread.saveDebug(Text::Green, this->getOpcode(), "p_%04X", wOffset);
  return true;
}
Пример #5
0
bool DefenseUse::execute(aithread &thread) const
{
  // Parameters
  BYTE bCount;
  WORD wUnitType;
  thread.readTuple( std::tie(bCount, wUnitType) );

  MainController.DefenseUse(this->getOpcode() - AISCRIPT::Enum::DEFENSEUSE_GG, bCount, wUnitType);

  // Debug and return
  thread.saveDebug(Text::Green, this->getOpcode(), "%u %s", bCount, AISCRIPT::getUnitName(wUnitType) );
  return true;
}
Пример #6
0
bool Nuke_Rate::execute(aithread &thread) const
{
  // Parameters
  BYTE bNukeRate;
  thread.readTuple( std::tie( bNukeRate ) );

  // Assign to controller
  MainController.bNukeRate = bNukeRate;

  // Save debug info and return
  thread.saveDebug(Text::Green, this->getOpcode());
  return true;
}
Пример #7
0
bool Default_Min::execute(aithread &thread) const
{
  // Parameters
  BYTE bDefaultMin;
  thread.readTuple( std::tie( bDefaultMin ) );

  // Assign to controller
  MainController.bDefaultMin = bDefaultMin;

  // Save debug info and return
  thread.saveDebug(Text::Green, this->getOpcode());
  return true;
}
Пример #8
0
bool Guard_Resources::execute(aithread &thread) const
{
  // Retrieve parameters
  WORD wUnitType;
  thread.readTuple( std::tie(wUnitType) );

  // Execution
  // GuardResources(wType);

  // Save debug info and return
  thread.saveDebug(Text::Red, this->getOpcode(), "%s", AISCRIPT::getUnitName(wUnitType));
  return true;
}
Пример #9
0
bool Define_Max::execute(aithread &thread) const
{
  // Retrieve parameters
  BYTE bCount;
  WORD wType;
  thread.readTuple( std::tie(bCount, wType) );

  if ( wType < UnitTypes::None )
    MainController.bDefineMax[wType] = bCount;

  // Save debug info and return
  thread.saveDebug(Text::Green, this->getOpcode(), "%u %s", bCount, AISCRIPT::getUnitName(wType) );
  return true;
}
Пример #10
0
bool Build::execute(aithread &thread) const
{
  // Retrieve parameters
  BYTE bBuildCount, bPriority;
  WORD wUnitType;
  thread.readTuple( std::tie(bBuildCount, wUnitType, bPriority) );

  //if ( bBuildCount <= 30 && wBuildType < UnitTypes::None )
  //  this->pTown->MacroManagerSet(MACRO_BUILD, bBuildCount, wBuildType, bPriority, false);

  // Save debug info and return
  thread.saveDebug(Text::Red, this->getOpcode(), "%u %s %u", bBuildCount, AISCRIPT::getUnitName(wUnitType), bPriority);
  return true;
}
Пример #11
0
bool Place_Guard::execute(aithread &thread) const
{
  // Retrieve parameters
  WORD wUnitType;
  BYTE bGuardType;
  thread.readTuple( std::tie(wUnitType, bGuardType) );

  // Execution
  // this->pTown->PlaceGuard(bGuardType, wUnitType);

  // Save debug info and return
  thread.saveDebug(Text::Red, this->getOpcode(), "%s %u", AISCRIPT::getUnitName(wUnitType), bGuardType);
  return true;
}
Пример #12
0
bool Random_Jump::execute(aithread &thread) const
{
  // Retrieve parameters
  BYTE bChance;
  WORD wOffset;
  thread.readTuple( std::tie(bChance, wOffset) );

  /// Set the new script offset
  if ( (BYTE)rand() <= bChance )
    thread.setScriptOffset( wOffset );

  // Save debug info and return
  thread.saveDebug(Text::Green, this->getOpcode(), "%u p_%04X", bChance, wOffset);
  return true;
}
Пример #13
0
bool Wait_Train::execute(aithread &thread) const
{
  // Parameters
  BYTE bCount;
  WORD wUnitType;
  thread.readTuple( std::tie(bCount, wUnitType) );

  // Debug
  thread.saveDebug(Text::Green, this->getOpcode(), "%u %s", bCount, AISCRIPT::getUnitName(wUnitType) );

  // Perform actions
  if ( GetStandardUnitCount(wUnitType) < bCount )
    return thread.retry();
  return thread.noretry();
}
Пример #14
0
bool If_Dif::execute(aithread &thread) const
{
    // Parameters
    BYTE bModifier, bValue;
    WORD wBlock;
    thread.readTuple( std::tie( bModifier, bValue, wBlock ) );

    // Compare diff value
    BYTE bDiff = MainController.bIfDif;
    if ( bModifier ? (bDiff > bValue) : (bDiff < bValue) )
        thread.setScriptOffset( wBlock );

    // Save debug info and return
    thread.saveDebug(Text::Green, this->getOpcode(), "%u %u %04X", bModifier, bValue, wBlock);
    return true;
}
Пример #15
0
bool Prep_Down::execute(aithread &thread) const
{
  // Retrieve parameters
  BYTE bSaveCount, bMinCount;
  WORD wUnitType;
  thread.readTuple( std::tie(bSaveCount, bMinCount, wUnitType) );

  // Get count
  int count = GetStandardUnitCount(wUnitType, false) - bSaveCount;
  if ( count < bMinCount )
    count = bMinCount;
  
  // Add to attack group
  // AI_AttackAdd(count, wUnitType);

  // Save debug info and return
  thread.saveDebug(Text::Red, this->getOpcode(), "%u %u %s", bSaveCount, bMinCount, AISCRIPT::getUnitName(wUnitType));
  return true;
}
Пример #16
0
bool Train::execute(aithread &thread) const
{
  // Parameters
  BYTE bCount;
  WORD wUnitType;
  thread.readTuple( std::tie(bCount, wUnitType) );

  // Debug
  thread.saveDebug(Text::Green, this->getOpcode(), "%u %s", bCount, AISCRIPT::getUnitName(wUnitType) );

  // Perform actions
  if ( GetStandardUnitCount(wUnitType, this->getOpcode() != AISCRIPT::Enum::TRAIN) < bCount )
  {
    MainController.wWaitForType = (int)wUnitType + 1;
    if ( this->getOpcode() != AISCRIPT::Enum::DO_MORPH )
      return thread.retry();
  }
  return thread.noretry();
}
Пример #17
0
bool Wait_Build::execute(aithread &thread) const
{
  // Parameters
  BYTE bCount;
  WORD wType;
  thread.readTuple( std::tie(bCount, wType) );

  // debug
  thread.saveDebug(Text::Red, this->getOpcode(), "%u %s", bCount, AISCRIPT::getUnitName(wType) );

  // stuff
  if ( wType == Broodwar->self()->getRace().getWorker() )
  {
    // TOWN STUFF
  }

  //if ( // AI_BuildSomething >= bCount )
    //return thread.noretry();
  
  // Debug and return
  return thread.retry();
}