# Ability Pattern Catalog (from 50-card Manual Review) ## Pattern Groups Identified ### 1. **Recovery from Discard** (10+ cards) **Pattern**: "控え室から○○を手札に加える" **Examples**: - Card #1 (高坂 穂乃果): "控え室からライブカードを1枚手札に加える" - Card #2 (絢瀬 絵里): "控え室からメンバーカードを1枚手札に加える" - Card #10 (絢瀬絵里): "控え室から『μ's』のライブカードを1枚手札に加える" - Card #15 (星空 凛): "控え室からコスト2以下のメンバーカードを1枚手札に加える" - Card #42 (高海千歌): "控え室からライブカードを1枚手札に加える" **Implementation Needed**: - `RECOVER_MEMBER` - with cost filter - `RECOVER_LIVE` - basic - `GROUP_FILTER` - for group-specific recovery (e.g., "『μ's』のライブカード") - `COST_FILTER` - for cost restrictions (e.g., "コスト2以下") --- ### 2. **Opponent Interaction** (12+ cards) **Pattern**: "相手の○○" / "対戦相手" #### 2a. Tap/Wait Opponent Members - Card #17 (東條 希): "相手のステージにいるコスト4以下のメンバー1人をウェイトにする" - Card #5, #6, #8 (Multiple): "相手のステージにいるすべてのコスト2以下のメンバーをウェイトにする" **Implementation**: `TAP_OPPONENT` with target selection and cost filtering #### 2b. Opponent Choice/Interaction - Card #38 (鬼塚冬毬): "相手はそれらのカードのうち1枚を選ぶ" - Card #44 (桜内梨子): "相手は手札からライブカードを1枚控え室に置いてもよい" - Card #48 (津島善子): "相手は手札を1枚控え室に置いてもよい" **Implementation**: New choice type `OPPONENT_CHOICE` with optional/mandatory flags #### 2c. Opponent State Checks - Card #46 (渡辺 曜): "相手のエネルギーが自分より多い場合" - Card #42 (高海千歌): "相手の手札の枚数が自分より2枚以上多い場合" - Card #32 (高海千歌): "相手の成功ライブカード置き場にカードが1枚以上ある場合" **Implementation**: New conditions `OPPONENT_ENERGY`, `OPPONENT_HAND_COUNT`, `OPPONENT_SUCCESS_COUNT` --- ### 3. **Position Manipulation** (6+ cards) **Pattern**: "ポジションチェンジ" / "エリアに移動" - Card #14 (星空 凛): "このメンバーはセンターエリア以外にポジションチェンジする" - Card #27/28 (嵐 千砂都): "センターエリアのメンバーを左サイドエリアに..." (全体回転) - Card #29/30 (桜小路きな子): "このメンバーが登場か、エリアを移動するたび" (trigger on move) **Implementation**: - `FORMATION_CHANGE` - bulk repositioning - `MOVE_MEMBER` - self-move - New trigger: `ON_POSITION_CHANGE` for Card #29 --- ### 4. **Conditional Buffs/Effects** (15+ cards) **Pattern**: "○○の場合、~" #### 4a. Success Pile Conditions - Card #1: "成功ライブカード置き場にカードが2枚以上ある場合" - Card #10: "成功ライブカード置き場にあるカードのスコアの合計が6以上の場合" - Card #32: "成功ライブカード置き場のカードが0枚で、かつ相手の成功ライブカード置き場にカードが1枚以上ある場合" **Implementation**: `COUNT_SUCCESS_PILE`, `SCORE_TOTAL_CHECK` #### 4b. Group/Name Filters - Card #8: "ステージと控え室に名前の異なる『Liella!』のメンバーが5人以上いる場合" - Card #27: "ステージにいるメンバーが『5yncri5e!』のみの場合" - Card #63: "ステージに『蓮ノ空』のメンバーがいる場合" **Implementation**: Enhanced `GROUP_FILTER` with "only" logic and location checks #### 4c. Live Card Conditions - Card #10: "ライブ中のライブカードに、{{live_start}}能力も{{live_success}}能力も持たないカードがあるかぎり" **Implementation**: `LIVE_CARD_CHECK` for ability presence #### 4d. Member Cost Checks - Card #14: "ステージに{{blade}}を5つ以上持つ『μ's』のメンバーがいない場合" - Card #20-22: "自分か相手のステージにコスト13以上のメンバーがいる場合" **Implementation**: `HAS_MEMBER_WITH_STAT` condition --- ### 5. **Unique/Special Mechanics** (8+ cards) #### 5a. Flavor/Interactive - Card #23 (愛♡スクリーム!): "相手に何が好き?と聞く" → 複数分岐 **Implementation**: Already done (`FLAVOR_ACTION`) #### 5b. Reveal/Public Information - Card #48: "手札のライブカードを1枚公開する" - Card #50: "そのプレイヤーのデッキの上からカードを2枚見る" **Implementation**: `REVEAL_CARDS` + player targeting #### 5c. Dynamic Requirements - Card #8: "このカードを使用するためのコストは..." (変更) - Card #4: "必要ハートは○○少なくなる/多くなる" **Implementation**: `REDUCE_COST`, `MODIFY_HEARTS_REQUIRED` #### 5d. Yell Manipulation - Card #5 (VIVID WORLD): "エールによって公開される自分のカードが持つ[桃ブレード]、[赤ブレード]...は、すべて[青ブレード]になる" - Card #34-37 (ウィーン): "エールによって公開される自分のカードの枚数が8枚減る" **Implementation**: `TRANSFORM_COLOR`, `MODIFY_YELL_COUNT` #### 5e. Score Manipulation - Card #24 (Poppin' Up!): "ライブの合計スコアが相手より高い場合" - Card #40/41: "カードのスコアを+1する" **Implementation**: `BOOST_SCORE` (exists), `COMPARE_SCORE` condition --- ## Implementation Priority ### Phase 2A: Recovery (HIGH - affects ~200 cards) 1. ✅ Basic `RECOVER_LIVE` 2. ✅ Basic `RECOVER_MEMBER` 3. 🆕 `COST_FILTER` condition 4. 🆕 `SELECT_FROM_DISCARD` choice handler ### Phase 2B: Opponent Interaction (MEDIUM-HIGH - ~150 cards) 1. 🆕 `TAP_OPPONENT` with cost filtering 2. 🆕 `OPPONENT_CHOICE` (May/Must structure) 3. 🆕 Opponent state conditions ### Phase 2C: Conditional Logic (HIGH - ~180 cards) 1. 🆕 `COUNT_SUCCESS_PILE` 2. 🆕 `SCORE_TOTAL_CHECK` 3. 🆕 Enhanced `GROUP_FILTER` (only, multi-location) 4. 🆕 `HAS_MEMBER_WITH_STAT` ### Phase 2D: Position/Movement (MEDIUM - ~80 cards) 1. ✅ `MOVE_MEMBER` (basic exists) 2. 🆕 `FORMATION_CHANGE` 3. 🆕 `ON_POSITION_CHANGE` trigger ### Phase 3: Unique Mechanics (LOW-MEDIUM - edge cases) 1. 🆕 `REVEAL_CARDS` 2. 🆕 `TRANSFORM_COLOR` 3. 🆕 `MODIFY_YELL_COUNT` 4. 🆕 `MODIFY_HEARTS_REQUIRED` ## Next Steps Start with **Phase 2A** (Recovery) as it has the highest card coverage and builds naturally on Phase 1 work.