Work orders: fill a reagent slot after posting; no auto-reload while writing an order

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-20 18:46:39 +01:00
parent 326437ddf9
commit 1488692463
4 changed files with 39 additions and 3 deletions

View file

@ -1580,3 +1580,16 @@ class WorkOrderTest(unittest.TestCase):
game.expire_orders(self.world, T0 + 4 * game.DAY)
self.assertEqual(self.mike["gold"], 200)
self.assertEqual(self.mike["bank"]["iron_bar"], 3)
def test_requester_can_fill_a_slot_after_posting(self):
self.mike["gold"] = 200
self.mike["bank"] = {"iron_bar": 3, "clay_core": 3}
game.post_order(self.world, self.mike, "craft", "iron_warhammer", 1, [], 140, T0)
order = self.world["orders"][0]
self.assertIsNone(game.provide_reagent(self.world, self.mike, order["id"], "iron_bar"))
self.assertEqual(order["provided"], {"iron_bar": 3})
self.fred["bank"] = {"oak_plank": 1, "clay_core": 3}
self.assertIsNone(game.work_order(self.world, self.fred, order["id"], T0))
game.process_player(self.world, self.fred, T0 + 600, random.Random(1))
self.assertEqual(self.mike["bank"].get("iron_warhammer"), 1)
self.assertEqual(self.fred["bank"], {}) # used his own plank and cores, never needed bars