Spaces:
Running
Running
| import pytest | |
| from engine.game.enums import Phase | |
| from engine.game.game_state import initialize_game | |
| class TestVerificationBatch26: | |
| 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 | |