Queue: tend all until full
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e981e89e6c
commit
9daa648017
3 changed files with 43 additions and 12 deletions
|
|
@ -142,7 +142,7 @@ class ActionTest(unittest.TestCase):
|
|||
|
||||
def test_queue_rules(self):
|
||||
world, p = self._smith(4)
|
||||
self.assertEqual(game.queue_add(world, p, "bury_bones", 1, T0), "Only crafting and gathering can be queued")
|
||||
self.assertEqual(game.queue_add(world, p, "bury_bones", 1, T0), "Only crafting, gathering and tending can be queued")
|
||||
self.assertIsNone(game.queue_add(world, p, "smith_copper_helmet", 1, T0))
|
||||
self.assertEqual(p["action"]["id"], "smith_copper_helmet") # nothing being made: it just starts
|
||||
self.assertEqual(p["action"]["resume"], "mine_stone")
|
||||
|
|
@ -3012,6 +3012,21 @@ class FirekeepingTest(unittest.TestCase):
|
|||
self.fires[key].update(fuel=[{"tier": 0, "left": game.fire_bank(1) * 60, "by": "kai"}], at=T0 + 35)
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_all_logs", T0 + 35), "Your piles are all full")
|
||||
|
||||
def test_queued_tending_runs_until_full_then_on_with_the_queue(self):
|
||||
self.kai["bank"] = {"logs": 500}
|
||||
game.start_action(self.world, self.kai, "mine_stone", T0)
|
||||
self.assertIsNone(game.queue_add(self.world, self.kai, "tend_all_logs", 1, T0)) # starts it, mining comes after
|
||||
self.assertIsNone(game.queue_add(self.world, self.kai, "split_logs", 2, T0))
|
||||
self.assertEqual(self.kai["action"]["left"], 1)
|
||||
game.process_player(self.world, self.kai, T0 + 600, random.Random(1))
|
||||
self.assertEqual(self.kai["action"]["id"], "tend_all_logs") # past one log: no count, still tending
|
||||
summary = game.process_player(self.world, self.kai, T0 + 4 * 3600, random.Random(1))
|
||||
self.assertEqual(summary["skipped"], [])
|
||||
self.assertEqual(self.kai["bank"]["kindling"], 2 * game.KINDLING_YIELD[0])
|
||||
self.assertEqual((self.kai["action"]["id"], summary["resumed"]), ("mine_stone", "mine_stone"))
|
||||
tended = 500 - 2 - self.kai["bank"]["logs"]
|
||||
self.assertGreater(tended, 4 * game.fire_bank(1) / game.fire_minutes(1)) # every pile filled
|
||||
|
||||
def test_better_logs_need_the_level(self):
|
||||
self.kai["bank"] = {"maple_logs": 3}
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_forge_maple_logs", T0), "Needs level 45")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue