Recon caps at the threat's total; leads kept once fully scouted

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-19 15:39:02 +01:00
parent b248a030ea
commit 43b7a3a193
3 changed files with 23 additions and 6 deletions

View file

@ -364,6 +364,20 @@ class EventTest(unittest.TestCase):
self.assertEqual(view["exact"], raid["fire_at"])
self.assertTrue(view["camp"])
def test_scouting_stops_counting_once_the_threat_is_fully_scouted(self):
world = world_with(("sam", "scout"))
raid = self.announce(world)
full = game.intel_costs(raid)[-1]
raid["recon"] = full - 1
world["city"]["recon_boost"] = 30
p = world["players"]["sam"]
game.start_action(world, p, "recon_roads", T0)
game.process_player(world, p, T0 + 48 * 3 + 1, random.Random(1))
self.assertEqual(raid["recon"], full)
self.assertEqual(world["city"]["recon_boost"], 29) # leads only spent while there's something to learn
self.assertIsNotNone(p["action"]) # still trains the skill
self.assertEqual(game.event_view(world, raid, T0)["recon"], full)
def test_bigger_bands_take_more_scouting(self):
small = {"kind": "raid", "strength": 20}
huge = {"kind": "raid", "strength": 150}