Raid replay plays like a fight; fight-once can be joined

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-25 20:54:37 +00:00
parent 4f2d113abd
commit 387f4c201b
4 changed files with 513 additions and 112 deletions

View file

@ -2868,6 +2868,22 @@ class PartyTest(unittest.TestCase):
self.assertIsNone(game.join_fight(world, kay, "wil", T0))
self.assertEqual(game.join_fight(world, wil, "kay", T0), "Already fighting together")
def test_a_boss_fought_once_can_be_joined(self):
world, wil, kay = self.pair(level=30)
for p in (wil, kay):
p["equip"].update(weapon="steel_sword", shield="steel_shield", helmet="steel_helmet", body="steel_body",
legs="steel_legs")
p["bank"] = {"cooked_salmon": 5000}
game.start_action(world, wil, "mine_stone", T0)
self.assertIsNone(game.start_action(world, wil, "fight_ruins", T0, once=True))
self.assertTrue(game.joinable(world, wil))
self.assertIsNone(game.join_fight(world, kay, "wil", T0))
self.online(world, T0 + 3600, random.Random(6))
self.assertEqual(wil["away"]["with"], {"Kay": 1})
self.assertEqual(wil["action"]["id"], "mine_stone") # one kill, then back to mining
self.assertEqual(kay["action"]["id"], "fight_ruins") # waiting for the next group
self.assertEqual(world["parties"], {})
def test_bosses_give_everyone_their_own_loot(self):
world, wil, kay = self.pair(level=30)
for p in (wil, kay):