Stop auto-assigning the Captain when a ship is stolen
Completing Crew Objective 1 (Steal a Ship) no longer anoints the highest-ranked Pi-Rat as Captain (nor vacates the seat when the ship is lost). Captaincy is now earned: the crew chooses one via the Captaincy UI / set_captain and Crew Objective 2. Decoupled captaincy from crew_1 in toggle_objective, dropped the now-unused random import, and updated test_captaincy_and_hand_sizes accordingly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -357,20 +357,20 @@ def test_captaincy_and_hand_sizes(session):
|
||||
session.commit()
|
||||
assert crud.calculate_max_hand_size(p3, game.players, game.captain_player_id) == 4
|
||||
|
||||
# Completing Crew Objective 1 (Steal a Ship) makes the highest-ranked Pi-Rat the Captain
|
||||
# Stealing a ship does NOT auto-assign a Captain — the crew must earn and
|
||||
# choose one. Completing Crew Objective 1 leaves the captaincy vacant.
|
||||
crud.toggle_objective(session, game.id, p1.id, "crew_1", True)
|
||||
session.refresh(game)
|
||||
assert game.captain_player_id in (p2.id, p3.id)
|
||||
captain = crud.get_player(session, game.captain_player_id)
|
||||
assert crud.is_player_captain(captain, game)
|
||||
# Captain privilege: +1 hand size
|
||||
assert crud.calculate_max_hand_size(captain, game.players, game.captain_player_id) == 5
|
||||
|
||||
# Losing the ship vacates the Captaincy
|
||||
crud.toggle_objective(session, game.id, p1.id, "crew_1", False)
|
||||
session.refresh(game)
|
||||
assert game.captain_player_id is None
|
||||
|
||||
# The crew chooses a Captain explicitly (via the Captaincy UI / set_captain).
|
||||
crud.set_captain(session, game, p2.id)
|
||||
session.refresh(game)
|
||||
assert game.captain_player_id == p2.id
|
||||
assert crud.is_player_captain(p2, game)
|
||||
# Captain privilege: +1 hand size
|
||||
assert crud.calculate_max_hand_size(p2, game.players, game.captain_player_id) == 5
|
||||
|
||||
def test_captain_tax_on_failed_challenge(session):
|
||||
game, deep, (p2, p3) = make_scene_game(session, num_pirats=2)
|
||||
# p3 (rank 2) becomes captain
|
||||
|
||||
Reference in New Issue
Block a user