Closed nptr closed 6 years ago
Elaboration on the baker fix:
The failjob
branch of the material-availability-checks jumped to the A_wait
action, being the end of the "take flour" act / begin of the "take water" act, effectively skipping "take flour". So despite missing flour, "take water" and "make bread" is executed, having the above mentioned effect of making bread just from water.
Furthermore, the drop location of the bread did not match the offerStack
location. Also the location for the "offer stack not full" check was wrong, meaning the baker produced bread endless despite the offer stack being full (wasting water and maybe flour).
With those problems fixed, new problems arose: failing unit/integration tests
testStacksAreNotBlockedButProtected()
veryHardShouldProduceCertainAmountOfSoldiersWithin90Minutes()
testReplay()
@nptr: Thansk for working on this. To ensure that the answers to your questions will be findable in the future, I wrote them in our wiki. Here the links to the answers and reasons:
testStacksAreNotBlockedButProtected
: Please mark the position as protected if it isn't too far away from the building. If it is, move the drop location to a better position. detailsveryHardShouldProduceCertainAmountOfSoldiersWithin90Minutes
: Your change is expected to break that test since it reduces the amount of produced food. I think we will simply adapt the expected value here. If something else needs balancing, this should be done in a different PR. The AI seems to produce 834 soldiers instead of the expected 920. So this looks reasonable to me. I suggest changing the expected value to 830.testReplay()
: see hereHere we go: [+] marked stack position + NPC path as protected, was just 4 nearby points. [+] increased the time limit for EASY vs. VERY_EASY because of the now delayed bread production [+] reduced soldier requirement. Got 865 tho, not 834. AI is very susceptible to some things..
Yes, i might add a PR which buffs the AI again if necessary.