Fires: everyone keeps their own pile
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
a02a81dffd
commit
b4ecacf96c
4 changed files with 91 additions and 54 deletions
|
|
@ -1875,28 +1875,47 @@ class FirekeepingTest(unittest.TestCase):
|
|||
def test_a_full_fire_stops_tending_and_pays_nothing(self):
|
||||
self.kai["bank"] = {"logs": 100}
|
||||
summary = self.tend(self.kai, "forge", "logs", T0, 3000)
|
||||
self.assertEqual(summary["stopped"], "The forge is full")
|
||||
self.assertEqual(summary["stopped"], "Your pile in the forge is full")
|
||||
left = sum(chunk["left"] for chunk in self.fires["forge"]["fuel"])
|
||||
self.assertGreater(left + game.fire_minutes(1) * 60, game.fire_bank(1) * 60) # no room for another log
|
||||
xp = self.kai["xp"]["firekeeping"]
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_forge_logs", T0 + 3000), "The forge is full")
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_forge_logs", T0 + 3000), "Your pile in the forge is full")
|
||||
self.assertEqual(self.kai["xp"]["firekeeping"], xp)
|
||||
|
||||
def test_a_better_log_pushes_cheaper_fuel_out_but_not_the_reverse(self):
|
||||
def test_a_better_log_pushes_your_cheaper_fuel_out_but_not_the_reverse(self):
|
||||
bank = game.fire_bank(15) * 60
|
||||
self.fires["kiln"].update(fuel=[{"tier": 0, "left": bank, "by": "sam"}], at=T0) # full of plain logs
|
||||
self.fires["kiln"].update(fuel=[{"tier": 0, "left": bank, "by": "kai"}], at=T0) # kai's pile: full of plain logs
|
||||
self.kai["xp"]["firekeeping"] = game.XP_TABLE[15]
|
||||
self.kai["bank"] = {"oak_logs": 1, "logs": 1}
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_kiln_logs", T0), "The kiln is full")
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_kiln_logs", T0), "Your pile in the kiln is full")
|
||||
self.assertIsNone(game.start_action(self.world, self.kai, "tend_kiln_oak_logs", T0)) # a better log still fits
|
||||
game.feed_fire(self.world, self.kai, "kiln", 1)
|
||||
self.assertEqual(game.heat(self.world, "kiln"), 1)
|
||||
self.assertAlmostEqual(sum(chunk["left"] for chunk in self.fires["kiln"]["fuel"]), bank)
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_kiln_logs", T0), "The kiln is full")
|
||||
self.assertEqual(game.start_action(self.world, self.kai, "tend_kiln_logs", T0), "Your pile in the kiln is full")
|
||||
|
||||
def test_fuel_burns_hottest_first_on_game_time(self):
|
||||
def test_a_beginner_can_always_feed_a_fire_a_veteran_filled(self):
|
||||
self.fires["forge"].update(fuel=[{"tier": 5, "left": 100 * 3600, "by": "kai"}], at=T0)
|
||||
self.sam["bank"] = {"logs": 5}
|
||||
self.tend(self.sam, "forge", "logs", T0, 95)
|
||||
self.assertEqual(self.sam["bank"]["logs"], 2)
|
||||
self.assertGreater(self.sam["xp"]["firekeeping"], 0)
|
||||
self.assertEqual(game.heat(self.world, "forge"), 5)
|
||||
|
||||
def test_piles_share_the_burn_and_the_time_adds_up(self):
|
||||
fire = self.fires["forge"]
|
||||
fire.update(fuel=[{"tier": 5, "left": 600, "by": "kai"}, {"tier": 0, "left": 600, "by": "sam"}], at=T0)
|
||||
game.burn_fires(self.world, T0 + 600) # half each
|
||||
self.assertEqual([round(chunk["left"]) for chunk in fire["fuel"]], [300, 300])
|
||||
self.assertEqual(game.heat(self.world, "forge"), 5) # the beginner's logs keep the violet going longer
|
||||
game.burn_fires(self.world, T0 + 1199)
|
||||
self.assertEqual(game.heat(self.world, "forge"), 5)
|
||||
game.burn_fires(self.world, T0 + 1200) # 20 minutes of fuel, 20 minutes of fire
|
||||
self.assertEqual(fire["fuel"], [])
|
||||
|
||||
def test_a_pile_burns_its_hottest_fuel_first_on_game_time(self):
|
||||
fire = self.fires["still"]
|
||||
fire["fuel"] = [{"tier": 0, "left": 600, "by": "sam"}, {"tier": 2, "left": 300, "by": "kai"}]
|
||||
fire["fuel"] = [{"tier": 0, "left": 600, "by": "kai"}, {"tier": 2, "left": 300, "by": "kai"}]
|
||||
fire["at"] = T0
|
||||
game.burn_fires(self.world, T0 + 200)
|
||||
self.assertEqual(game.heat(self.world, "still"), 2)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue