bitburner-official / bitburner-src

Bitburner source code.
Other
688 stars 232 forks source link

GANG: Fix wrong wanted gain rate #1415

Closed catloversg closed 2 weeks ago

catloversg commented 2 weeks ago

Test code:

if (this.wanted !== 1 || wantedLevelGainPerCycle >= 0) {
  const oldWanted = this.wanted;
  const newWanted = oldWanted + wantedLevelGainPerCycle * numCycles;
  // Allows recovery when wanted / respect ratio is too high
  this.wanted = newWanted * (1 - justice * 0.001);
  const expectedWantedGainRate = this.wantedGainRate;
  const wrong = this.wantedGainRate - (newWanted - this.wanted);
  this.wantedGainRate = (this.wanted - oldWanted) / numCycles;
  console.log(
    `${new Date().toISOString().substring(14)},`,
    `Old wanted: ${oldWanted.toFixed(3)},`,
    `temp newWanted: ${newWanted.toFixed(3)},`,
    `New wanted: ${this.wanted.toFixed(3)},`,
    `expectedWantedGainRate: ${expectedWantedGainRate.toFixed(3)},`,
    `wantedGainRate: ${this.wantedGainRate.toFixed(3)},`,
    `wrong wantedGainRate: ${wrong.toFixed(3)}`,
  );
  console.log(
    `recovery: newWanted - this.wanted: ${(newWanted - this.wanted).toFixed(3)},`,
    `newWanted - oldWanted: ${(newWanted - oldWanted).toFixed(3)},`,
    `Final change: this.wanted - oldWanted: ${(this.wanted - oldWanted).toFixed(3)},`,
    `justice reduction mult: ${(1 - justice * 0.001).toFixed(3)}`,
  );
  // Prevent overflow
  if (this.wanted < 1 || (wantedLevelGainPerCycle <= 0 && this.wanted > oldWanted)) {
    this.wanted = 1;
  }
}

Log 1:

46:09.200Z, Old wanted: 324.116, temp newWanted: 323.765, New wanted: 322.794, expectedWantedGainRate: -0.035, wantedGainRate: -0.132, wrong wantedGainRate: -1.006
recovery: newWanted - this.wanted: 0.971, newWanted - oldWanted: -0.351, Final change: this.wanted - oldWanted: -1.322, justice reduction mult: 0.997

46:11.190Z, Old wanted: 322.794, temp newWanted: 320.680, New wanted: 319.397, expectedWantedGainRate: -0.211, wantedGainRate: -0.340, wrong wantedGainRate: -1.494
recovery: newWanted - this.wanted: 1.283, newWanted - oldWanted: -2.114, Final change: this.wanted - oldWanted: -3.397, justice reduction mult: 0.996

46:13.189Z, Old wanted: 319.397, temp newWanted: 317.283, New wanted: 316.014, expectedWantedGainRate: -0.211, wantedGainRate: -0.338, wrong wantedGainRate: -1.481
recovery: newWanted - this.wanted: 1.269, newWanted - oldWanted: -2.114, Final change: this.wanted - oldWanted: -3.383, justice reduction mult: 0.996

Log 2:

46:19.185Z, Old wanted: 309.288, temp newWanted: 310.075, New wanted: 309.454, expectedWantedGainRate: 0.079, wantedGainRate: 0.017, wrong wantedGainRate: -0.541
recovery: newWanted - this.wanted: 0.620, newWanted - oldWanted: 0.787, Final change: this.wanted - oldWanted: 0.167, justice reduction mult: 0.998

46:21.188Z, Old wanted: 309.454, temp newWanted: 310.241, New wanted: 309.621, expectedWantedGainRate: 0.079, wantedGainRate: 0.017, wrong wantedGainRate: -0.542
recovery: newWanted - this.wanted: 0.620, newWanted - oldWanted: 0.787, Final change: this.wanted - oldWanted: 0.166, justice reduction mult: 0.998

46:23.178Z, Old wanted: 309.621, temp newWanted: 310.407, New wanted: 309.786, expectedWantedGainRate: 0.079, wantedGainRate: 0.017, wrong wantedGainRate: -0.542
recovery: newWanted - this.wanted: 0.621, newWanted - oldWanted: 0.786, Final change: this.wanted - oldWanted: 0.165, justice reduction mult: 0.998

Fixes #1403.