# Love Live! OCG: Rule Verification This is my understanding of the game logic, derived from reading `game_state.py` and `card.py`. ## 1. Win Condition * **Primary Goal**: Be the first player to successfully perform **3 Lives**. * **Tie-Breaker**: If both players reach 3 Lives in the same turn, the player with the higher **Total Score** (Sum of difficulty/score of completed Lives) wins? (Need to verify if score tie-breaker exists or if it's "Active Player Wins"). ## 2. Core Stats (The Numbers) * **Hearts**: The "color" resource. A card might have `[2 Pink, 1 Blue]`. * **Blade Power (BP)**: The "attack" stat. Used for: * Meeting "Total BP" requirements for some Lives? * Triggering abilities (e.g., "If you have a member with 400+ BP"). * Comparing against opponents (e.g., "Retire opponent's member with BP < 300"). * **Cost**: Energy required to play a Member. ## 3. The Turn Structure 1. **Draw Phase**: Draw 1 card. 2. **Energy Phase**: Gain 2 Energy (or more based on turn count?). 3. **Main Phase**: * Play Members to Stage (Max 3 slots). * Play "Live" cards (The goal). * Activate "Main" abilities. 4. **Live Phase**: * Select a Live card. * **Check**: Do my Stage Members have enough Hearts (Color & Count) to meet the Live's requirement? * **Bonus (Cheer)**: Flip top card of deck. Add its "Blade Icons" to the check. * **Success**: If (Member Hearts + Cheer Icons) >= Requirement -> **Live Success!** (Score +1). ## 4. Observations on AI Logic * **Reward Signal Correctness**: My reward function gives `+1.0` for winning. It also gives `+0.1` per point of Score Difference. This encourages the AI to pick "High Score" Lives, not just the easiest ones, which is good for tie-breaking. * **Critical Blind Spot**: "Effect Precedence." If a card says "You win instantly if you have 5 Honoka cards," my current engine might miss that if the `check_win_condition` function doesn't explicitly look for that specific flag. **Is this accurate to your physical game?** Specifically, does the "Cheer/Blade Icon" mechanic add to **Hearts** or **BP** for the Live check?