import pytest from engine.game.enums import Phase from engine.game.game_state import initialize_game class TestVerificationBatch26: @pytest.fixture def game_state(self): gs = initialize_game(use_real_data=True) if not gs.member_db: pytest.skip("Card data not loaded") gs.active_player.tapped_energy.fill(False) return gs def get_card_id(self, gs, card_no): for cid, card in gs.member_db.items(): if card.card_no == card_no: return cid for cid, card in gs.live_db.items(): if card.card_no == card_no: return cid pytest.fail(f"Card {card_no} not found") def test_pln_bp4_005_p_smoke(self, game_state): gs = game_state card_id = self.get_card_id(gs, "PL!N-bp4-005-P") p1 = gs.players[0] p2 = gs.players[1] fodder_id = self.get_card_id(gs, "PL!-sd1-001-SD") p1.hand = [card_id, fodder_id] target_id = self.get_card_id(gs, "PL!-sd1-001-SD") gs.member_db[target_id].cost = 4 p2.stage[0] = target_id p2.stage[1] = target_id p2.tapped_members[0] = False p2.tapped_members[1] = False gs.current_player = 0 gs.phase = Phase.MAIN gs.step(1, check_legality=False, in_place=True) # Play if gs.pending_choices: gs.step(500, check_legality=False, in_place=True) # Discard fodder if gs.pending_choices: gs.step(560, check_legality=False, in_place=True) # Target 1 if gs.pending_choices: gs.step(561, check_legality=False, in_place=True) # Target 2 assert bool(p2.tapped_members[0]) == True assert bool(p2.tapped_members[1]) == True def test_pln_bp4_005_r_smoke(self, game_state): self.test_pln_bp4_005_p_smoke(game_state) def test_pln_bp4_006_p_smoke(self, game_state): gs = game_state card_id = self.get_card_id(gs, "PL!N-bp4-006-P") p1 = gs.players[0] niji_id = self.get_card_id(gs, "PL!N-sd1-001-SD") gs.member_db[niji_id].cost = 4 p1.hand = [card_id, niji_id] p1.energy_zone = [fodder_id := self.get_card_id(gs, "PL!-sd1-001-SD")] * 10 p1.tapped_energy.fill(False) gs.current_player = 0 gs.phase = Phase.MAIN gs.step(1, check_legality=False, in_place=True) # Play # Trigger energy cost if gs.pending_choices: gs.step(600, check_legality=False, in_place=True) if gs.pending_choices: gs.step(601, check_legality=False, in_place=True) # Effect: Play from hand if gs.pending_choices: choice_type, params = gs.pending_choices[0] if niji_id in params["cards"]: idx = params["cards"].index(niji_id) gs.step(500 + idx, check_legality=False, in_place=True) # Slot selection if gs.pending_choices: gs.step(1, check_legality=False, in_place=True) assert niji_id in p1.stage def test_pln_bp4_006_r_smoke(self, game_state): pass def test_pln_bp4_007_p_smoke(self, game_state): pass