Loading

Paste #pgvyt0l3p

  1.     if (this->elem >= PFE_AI0 && this->elem <= PFE_AI14) {
  2.         uint active_ais = 0;
  3.         Company *c;
  4.         FOR_ALL_COMPANIES(c) {
  5.             if (Company::IsValidAiID(c->index) && Company::Get(c->index)->ai_instance != NULL && !Company::Get(c->index)->ai_instance->IsDead()) {
  6.                 active_ais++;
  7.             }
  8.         }
  9.         if (active_ais != 0) {
  10.             uint opcodes = AI::GetMaxOpCodes((CompanyID)(this->elem - PFE_AI0));
  11.             uint value = opcodes;
  12.             double avg = min(9999.99, _pf_data[this->elem].GetAverageDurationMilliseconds(8));
  13.             if (avg * active_ais > GL_RATE) {
  14.                 value = Clamp(opcodes - (avg * active_ais - GL_RATE) * (avg * active_ais - GL_RATE), 500, 250000);
  15.             } else if (avg * active_ais > 0 && avg < GL_RATE / 3) {
  16.                 value = Clamp(opcodes + GL_RATE / 3 - avg * active_ais, 500, 250000);
  17.             }
  18.             if (value != opcodes) AI::SetMaxOpCodes((CompanyID)(this->elem - PFE_AI0), value);
  19.         }
  20.     }

Comments