Due to it being possible to sacrifice even after reaching the challenge target and player.chall11Bonus being a normal number (not a Decimal), it is possible to get e900000000000000 antimatter in Challenge 8.
How to replicate the issue:
- Do Challenge 8 rather early, without that many bonuses. As early as the second infinity should work. Turn off all autobuyers: they may cause problems.
- Reset five times as usual.
- Repeatedly do the following: hold m for a few seconds, press s
- After a few times doing the above steps, Big Crunch should come up while you are holding m. Do not press it.
- Check player.chall11Pow, either via the console or (without cheating) via a guess from dimension 8 power (I did a test and it weirdly didn't seem to be reflected in the shown dimension 8 power, though). When it reaches Infinity, press m several times to get enough antimatter to access the eighth dimension, again to buy some eighth dimensions, and enjoy your infinite antimatter!
Suggested fix: don't allow sacrificing, boosting, or getting galaxies (boosting and getting galaxies are included since they also seem like things you shouldn't be able to do in this type of situation) when antimatter is above the challenge target. I might try to make and test a PR for this, but from what I've seen of the source it can probably be fixed by adding
function playerOverTarget () {
return player.money.gte(player.challengeTarget) && !(player.currentChallenge === '' && player.break);
}
somewhere, adding
if (playerOverTarget()) {
return false;
}
at the start of a few functions (those for sacrificing, boosting, or getting (normal or replicanti) galaxies, both with and without an autobuyer:
document.getElementById("softReset").onclick
maxBuyDimBoosts
maxBuyGalaxies
replicantiGalaxy
document.getElementById("secondSoftReset").onclick
sacrifice
) and adding
&& !playerOverTarget()
to the if conditions:
player.autobuyers[10].ticks*100 >= player.autobuyers[10].interval && (player.currentChallenge == "challenge4" ? player.sixthAmount >= getGalaxyRequirement() : player.eightAmount >= getGalaxyRequirement())
(galaxy autobuyer)
player.autobuyers[9].isOn && dimBoolean()
(shift/boost autobuyer)
player[name + "Amount"] >= getShiftRequirement(0).amount
('press D' code)
I'm actually not sure that this issue is that bad, since if you have too many bonuses it seems impossible to exploit (you get to Infinity so quickly that first dimensions for sacrifice can't build up). One possible way to exploit the issue is to get the time study that gives you 1% of your crunch IP every second, since that time study doesn't seem to take into account being in a challenge. But I'm not sure if you can get that time study without getting too many bonuses from other time studies along the way. Of course it gives you Infinite total antimatter, but I'm not sure how bad this is, although it does seem to give you a powerful bonus when you break infinity (total antimatter bonus). If the issue doesn't turn out to be exploitable, I suggest not fixing it and adding an achievement for getting that much antimatter.