Spaces:
Sleeping
Sleeping
| # Debug Flags Content Audit Report | |
| ## 概要 | |
| `id="debug-flags-content"` で表示されている flags と conditions を、[`data/metadata.json`](data/metadata.json) とバックエンドの Rust 構造体と比較して、欠けているフィールドを特定しました。 | |
| --- | |
| ## data/metadata.json で定義されている Enums | |
| ### 1. Conditions (条件チェック) - 55種類 | |
| | Condition | Value | フロントエンド表示状態 | | |
| |-----------|-------|----------------------| | |
| | TURN_1 | 200 | ❌ 未表示 | | |
| | HAS_MEMBER | 201 | ❌ 未表示 | | |
| | HAS_COLOR | 202 | ❌ 未表示 | | |
| | COUNT_STAGE | 203 | ❌ 未表示 | | |
| | COUNT_HAND | 204 | ❌ 未表示 | | |
| | COUNT_DISCARD | 205 | ❌ 未表示 | | |
| | IS_CENTER | 206 | ❌ 未表示 | | |
| | LIFE_LEAD | 207 | ❌ 未表示 | | |
| | COUNT_GROUP | 208 | ❌ 未表示 | | |
| | GROUP_FILTER | 209 | ❌ 未表示 | | |
| | OPPONENT_HAS | 210 | ❌ 未表示 | | |
| | SELF_IS_GROUP | 211 | ❌ 未表示 | | |
| | MODAL_ANSWER | 212 | ❌ 未表示 | | |
| | COUNT_ENERGY | 213 | ❌ 未表示 | | |
| | HAS_LIVE_CARD | 214 | ❌ 未表示 | | |
| | COST_CHECK | 215 | ❌ 未表示 | | |
| | RARITY_CHECK | 216 | ❌ 未表示 | | |
| | HAND_HAS_NO_LIVE | 217 | ❌ 未表示 | | |
| | COUNT_SUCCESS_LIVE | 218 | ❌ 未表示 | | |
| | OPPONENT_HAND_DIFF | 219 | ❌ 未表示 | | |
| | SCORE_COMPARE | 220 | ❌ 未表示 | | |
| | HAS_CHOICE | 221 | ❌ 未表示 | | |
| | OPPONENT_CHOICE | 222 | ❌ 未表示 | | |
| | COUNT_HEARTS | 223 | ❌ 未表示 | | |
| | COUNT_BLADES | 224 | ❌ 未表示 | | |
| | OPPONENT_ENERGY_DIFF | 225 | ❌ 未表示 | | |
| | HAS_KEYWORD | 226 | ❌ 未表示 | | |
| | DECK_REFRESHED | 227 | ❌ 未表示 | | |
| | HAS_MOVED | 228 | ❌ 未表示 | | |
| | HAND_INCREASED | 229 | ❌ 未表示 | | |
| | COUNT_LIVE_ZONE | 230 | ❌ 未表示 | | |
| | BATON | 231 | ❌ 未表示 | | |
| | TYPE_CHECK | 232 | ❌ 未表示 | | |
| | IS_IN_DISCARD | 233 | ❌ 未表示 | | |
| | AREA_CHECK | 234 | ❌ 未表示 | | |
| | COST_LEAD | 235 | ❌ 未表示 | | |
| | SCORE_LEAD | 236 | ❌ 未表示 | | |
| | HEART_LEAD | 237 | ❌ 未表示 | | |
| | HAS_EXCESS_HEART | 238 | ❌ 未表示 | | |
| | NOT_HAS_EXCESS_HEART | 239 | ❌ 未表示 | | |
| | TOTAL_BLADES | 240 | ❌ 未表示 | | |
| | COST_COMPARE | 241 | ❌ 未表示 | | |
| | BLADE_COMPARE | 242 | ❌ 未表示 | | |
| | HEART_COMPARE | 243 | ❌ 未表示 | | |
| | OPPONENT_HAS_WAIT | 244 | ❌ 未表示 | | |
| | IS_TAPPED | 245 | ❌ 未表示 | | |
| | IS_ACTIVE | 246 | ❌ 未表示 | | |
| | LIVE_PERFORMED | 247 | ❌ 未表示 | | |
| | IS_PLAYER | 248 | ❌ 未表示 | | |
| | IS_OPPONENT | 249 | ❌ 未表示 | | |
| | COUNT_UNIQUE_COLORS | 250 | ❌ 未表示 | | |
| | COUNT_ENERGY_EXACT | 301 | ❌ 未表示 | | |
| | COUNT_BLADE_HEART_TYPES | 302 | ❌ 未表示 | | |
| | OPPONENT_HAS_EXCESS_HEART | 303 | ❌ 未表示 | | |
| | SCORE_TOTAL_CHECK | 304 | ❌ 未表示 | | |
| | MAIN_PHASE | 305 | ❌ 未表示 | | |
| | SELECT_MEMBER | 306 | ❌ 未表示 | | |
| | SUCCESS_PILE_COUNT | 307 | ❌ 未表示 | | |
| | IS_SELF_MOVE | 308 | ❌ 未表示 | | |
| | DISCARDED_CARDS | 309 | ❌ 未表示 | | |
| | YELL_REVEALED_UNIQUE_COLORS | 310 | ❌ 未表示 | | |
| | SYNC_COST | 311 | ❌ 未表示 | | |
| | SUM_VALUE | 312 | ❌ 未表示 | | |
| | IS_WAIT | 313 | ❌ 未表示 | | |
| **結論**: metadata.json で定義されている 55種類の conditions は、**すべて未表示**です。 | |
| --- | |
| ### 2. Extra Constants (Flags) - 70+ 種類 | |
| #### Ability Flags (効果タイプフラグ) | |
| | Flag | Value | フロントエンド表示状態 | | |
| |------|-------|----------------------| | |
| | FLAG_DRAW | 1 | ❌ 未表示 | | |
| | FLAG_SEARCH | 2 | ❌ 未表示 | | |
| | FLAG_RECOVER | 4 | ❌ 未表示 | | |
| | FLAG_BUFF | 8 | ❌ 未表示 | | |
| | FLAG_CHARGE | 16 | ❌ 未表示 | | |
| | FLAG_TEMPO | 32 | ❌ 未表示 | | |
| | FLAG_REDUCE | 64 | ❌ 未表示 | | |
| | FLAG_BOOST | 128 | ❌ 未表示 | | |
| | FLAG_TRANSFORM | 256 | ❌ 未表示 | | |
| | FLAG_WIN_COND | 512 | ❌ 未表示 | | |
| | FLAG_MOVE | 1024 | ❌ 未表示 | | |
| | FLAG_TAP | 2048 | ❌ 未表示 | | |
| #### Cost Flags | |
| | Flag | Value | フロントエンド表示状態 | | |
| |------|-------|----------------------| | |
| | COST_FLAG_DISCARD | 1 | ❌ 未表示 | | |
| | COST_FLAG_TAP | 2 | ❌ 未表示 | | |
| #### Choice Flags | |
| | Flag | Value | フロントエンド表示状態 | | |
| |------|-------|----------------------| | |
| | CHOICE_FLAG_LOOK | 1 | ❌ 未表示 | | |
| | CHOICE_FLAG_DISCARD | 2 | ❌ 未表示 | | |
| | CHOICE_FLAG_MODE | 4 | ❌ 未表示 | | |
| | CHOICE_FLAG_COLOR | 8 | ❌ 未表示 | | |
| | CHOICE_FLAG_ORDER | 16 | ❌ 未表示 | | |
| #### Synergy Flags | |
| | Flag | Value | フロントエンド表示状態 | | |
| |------|-------|----------------------| | |
| | SYN_FLAG_GROUP | 1 | ❌ 未表示 | | |
| | SYN_FLAG_COLOR | 2 | ❌ 未表示 | | |
| | SYN_FLAG_BATON | 4 | ❌ 未表示 | | |
| | SYN_FLAG_CENTER | 8 | ❌ 未表示 | | |
| | SYN_FLAG_LIFE_LEAD | 16 | ❌ 未表示 | | |
| #### Filter Flags (一部抜粋) | |
| | Flag | Value | フロントエンド表示状態 | | |
| |------|-------|----------------------| | |
| | FILTER_TYPE_MEMBER | 4 | ❌ 未表示 | | |
| | FILTER_TYPE_LIVE | 8 | ❌ 未表示 | | |
| | FILTER_GROUP_ENABLE | 16 | ❌ 未表示 | | |
| | FILTER_TAPPED | 4096 | ❌ 未表示 | | |
| | FILTER_HAS_BLADE_HEART | 8192 | ❌ 未表示 | | |
| | FILTER_NOT_HAS_BLADE_HEART | 16384 | ❌ 未表示 | | |
| | FILTER_UNIQUE_NAMES | 32768 | ❌ 未表示 | | |
| | FILTER_UNIT_ENABLE | 65536 | ❌ 未表示 | | |
| | FILTER_ZONE_STAGE | 9007199254740992 | ❌ 未表示 | | |
| | FILTER_ZONE_DISCARD | 18014398509481984 | ❌ 未表示 | | |
| | FILTER_ZONE_HAND | 36028797018963968 | ❌ 未表示 | | |
| | FILTER_SETSUNA | 576460752303423488 | ❌ 未表示 | | |
| | FILTER_IS_OPTIONAL | 2305843009213693952 | ❌ 未表示 | | |
| #### Keyword Flags | |
| | Flag | Value | フロントエンド表示状態 | | |
| |------|-------|----------------------| | |
| | KEYWORD_ACTIVATED_ENERGY_BY_GROUP | 4611686018427387904 | ❌ 未表示 | | |
| | KEYWORD_ACTIVATED_MEMBER_BY_GROUP | 9223372036854775808 | ❌ 未表示 | | |
| | KEYWORD_PLAYED_THIS_TURN | 17592186044416 | ❌ 未表示 | | |
| | KEYWORD_YELL_COUNT | 35184372088832 | ❌ 未表示 | | |
| | KEYWORD_HAS_LIVE_SET | 70368744177664 | ❌ 未表示 | | |
| #### Target/Behavior Flags | |
| | Flag | Value | フロントエンド表示状態 | | |
| |------|-------|----------------------| | |
| | FLAG_TARGET_OPPONENT | 16777216 | ❌ 未表示 | | |
| | FLAG_CAPTURE_VALUE | 33554432 | ❌ 未表示 | | |
| | FLAG_EMPTY_SLOT_ONLY | 67108864 | ❌ 未表示 | | |
| | FLAG_IS_WAIT | 134217728 | ❌ 未表示 | | |
| | FLAG_REVEAL_UNTIL_IS_LIVE | 33554432 | ❌ 未表示 | | |
| | DYNAMIC_VALUE | 1152921504606846976 | ❌ 未表示 | | |
| #### Area/Zone Constants | |
| | Constant | Value | フロントエンド表示状態 | | |
| |----------|-------|----------------------| | |
| | AREA_LEFT | 1 | ❌ 未表示 | | |
| | AREA_CENTER | 2 | ❌ 未表示 | | |
| | AREA_RIGHT | 3 | ❌ 未表示 | | |
| | ZONE_MASK_STAGE | 4 | ❌ 未表示 | | |
| | ZONE_MASK_HAND | 6 | ❌ 未表示 | | |
| | ZONE_MASK_DISCARD | 7 | ❌ 未表示 | | |
| | ZONE_LOOKED_CARDS | 90 | ❌ 未表示 | | |
| --- | |
| ## フロントエンドで現在表示されている項目 (DebugModal.js) | |
| ### システムレベル (GameState) | |
| | 項目名 | バックエンドフィールド | 状態 | | |
| |--------|----------------------|------| | |
| | Phase | `phase` | ✅ 表示中 | | |
| | Turn | `turn` | ✅ 表示中 | | |
| | Active | `current_player` | ✅ 表示中 | | |
| | Queue | `trigger_queue.len()` | ✅ 表示中 (推定) | | |
| | RPS | `rps_choices` | ✅ 表示中 | | |
| | Winner | `winner` | ✅ 表示中 | | |
| | FirstPl | `first_player` | ✅ 表示中 | | |
| | TrigDepth | `trigger_depth` | ✅ 表示中 | | |
| | InteractDepth | `interaction_stack.len()` | ✅ 表示中 (推定) | | |
| | LiveResPend | `live_result_selection_pending` | ✅ 表示中 | | |
| | NeedsDeck | `needs_deck` | ⚠️ 未確認 | | |
| | Spectators | `spectators` | ⚠️ 未確認 | | |
| ### プレイヤーレベル (PlayerState) | |
| | 項目名 | バックエンドフィールド | 状態 | | |
| |--------|----------------------|------| | |
| | Energy | `energy_zone.len()` / `energy_count` | ✅ 表示中 | | |
| | Hand | `hand.len()` | ✅ 表示中 | | |
| | Deck | `deck.len()` | ✅ 表示中 | | |
| | Discard | `discard.len()` | ✅ 表示中 | | |
| | EnergyDeck | `energy_deck.len()` | ✅ 表示中 | | |
| | SuccessLives | `success_lives.len()` | ✅ 表示中 | | |
| | LiveZone | `live_zone` (非 -1 カウント) | ✅ 表示中 | | |
| | YellCards | `yell_cards.len()` | ✅ 表示中 | | |
| | Exile | `exile.len()` | ✅ 表示中 | | |
| | LiveDeck | `live_deck.len()` | ✅ 表示中 | | |
| | CostReduction | `cost_reduction` | ✅ 表示中 | | |
| | BatonCount | `baton_touch_count` / `baton_touch_limit` | ✅ 表示中 | | |
| | PrevActivate | `prevent_activate` | ✅ 表示中 | | |
| | PrevBaton | `prevent_baton_touch` | ✅ 表示中 | | |
| | PrevSuccess | `prevent_success_pile_set` | ✅ 表示中 | | |
| | PrevPlaySlotMask | `prevent_play_to_slot_mask` | ✅ 表示中 | | |
| | SkipNextAct | `skip_next_activate` | ✅ 表示中 | | |
| | LiveScoreBonus | `live_score_bonus` | ✅ 表示中 | | |
| | YellReduction | `yell_count_reduction` | ✅ 表示中 | | |
| | CheerMod | `cheer_mod_count` | ✅ 表示中 | | |
| | PlayCount | `play_count_this_turn` | ✅ 表示中 | | |
| | HandIncrTurn | `hand_increased_this_turn` | ✅ 表示中 | | |
| | DiscardedTurn | `discarded_this_turn` | ✅ 表示中 | | |
| | TurnVolume | `current_turn_notes` | ✅ 表示中 | | |
| | ExcessHearts | `excess_hearts` | ✅ 表示中 | | |
| | FlagsBits | `flags` | ✅ 表示中 (16進数のみ) | | |
| | PlayedGrpMask | `played_group_mask` | ✅ 表示中 | | |
| | ActEnergyGrp | `activated_energy_group_mask` | ✅ 表示中 | | |
| | ActMemberGrp | `activated_member_group_mask` | ✅ 表示中 | | |
| | ColorXforms | `color_transforms.len()` | ✅ 表示中 | | |
| | NegatedTrigs | `negated_triggers.len()` | ✅ 表示中 | | |
| | GrantedAbs | `granted_abilities.len()` | ✅ 表示中 | | |
| | UsedAbs | `used_abilities.len()` | ✅ 表示中 | | |
| | Restrictions | `restrictions` | ✅ 表示中 | | |
| | MullSelection | `mulligan_selection` | ✅ 表示中 | | |
| | ObtSuccess | `obtained_success_live` | ✅ 表示中 | | |
| | LvRevealed | `live_zone_revealed` | ✅ 表示中 | | |
| | BladeBuffs | `blade_buffs[slot]` | ✅ 表示中 | | |
| | HeartBuffs | `heart_buffs[slot]` | ✅ 表示中 | | |
| | CostMod | `slot_cost_modifiers[slot]` | ✅ 表示中 | | |
| | StgEnergy | `stage_energy_count[slot]` | ✅ 表示中 | | |
| | Reductions | `heart_req_reductions` | ✅ 条件付き表示 | | |
| | Additions | `heart_req_additions` | ✅ 条件付き表示 | | |
| --- | |
| ## 欠けているフィールド(未表示) | |
| ### 🔴 CRITICAL: metadata.json Conditions (55種類) | |
| **すべて未表示** - アビリティ条件評価のデバッグに必須: | |
| - `TURN_1`, `HAS_MEMBER`, `HAS_COLOR`, `COUNT_STAGE`, `COUNT_HAND`, etc. | |
| - `IS_TAPPED`, `IS_ACTIVE`, `IS_WAIT`, `LIVE_PERFORMED` | |
| - `SCORE_COMPARE`, `COST_COMPARE`, `BLADE_COMPARE`, `HEART_COMPARE` | |
| - `DECK_REFRESHED`, `HAS_MOVED`, `HAND_INCREASED` | |
| ### 🔴 HIGH Priority(デバッグに重要) | |
| #### PlayerState Fields | |
| | フィールド | 型 | 説明 | | |
| |-----------|-----|------| | |
| | `tapped_energy_mask` | `u64` | Energy Zone のタップ状態(ビットマスク) | | |
| | `cost_modifiers` | `Vec<(Condition, i32)>` | コスト修正の詳細条件 | | |
| | `stage_energy` | `[SmallVec<[i32; 4]>; 3]` | ステージスロット下のエネルギーカード | | |
| #### GameState Fields | |
| | フィールド | 型 | 説明 | | |
| |-----------|-----|------| | |
| | `score_req_list` | `Vec<u8>` | スコア要求リスト | | |
| | `score_req_player` | `i8` | スコア要求プレイヤー | | |
| ### 🟡 MEDIUM Priority | |
| #### PlayerState Fields | |
| | フィールド | 型 | 説明 | | |
| |-----------|-----|------| | |
| | `used_abilities` | `SmallVec<[u32; 16]>` | 使用済みアビリティの詳細リスト | | |
| | `live_score_bonus_logs` | `SmallVec<[(i32, i32); 4]>` | スコアボーナスログ | | |
| | `blade_buff_logs` | `SmallVec<[(i32, i16, u8); 4]>` | ブレードバフログ | | |
| | `heart_buff_logs` | `SmallVec<[(i32, i32, u8, u8); 4]>` | ハートバフログ | | |
| | `color_transforms` | `SmallVec<[(i32, u8, u8); 4]>` | カラー変換の詳細 | | |
| | `perf_triggered_abilities` | `Vec<(i32, i16, TriggerType)>` | パフォーマンス中に発動したアビリティ | | |
| #### GameState Fields | |
| | フィールド | 型 | 説明 | | |
| |-----------|-----|------| | |
| | `prev_phase` | `Phase` | 前のフェーズ | | |
| | `prev_card_id` | `i32` | 前に使用されたカードID | | |
| | `live_set_pending_draws` | `[u8; 2]` | Live Set 待機ドロー | | |
| | `live_result_triggers_done` | `bool` | Live Result トリガー完了 | | |
| | `live_start_triggers_done` | `bool` | Live Start トリガー完了 | | |
| ### 🟢 LOW Priority | |
| - 各種処理済みマスク (`*_processed_mask`) | |
| - 各種ログフィールド (`*_logs`) | |
| - `turn_history`, `hand_added_turn`, `looked_cards` | |
| --- | |
| ## Flags ビットフィールド (`flags: u32`) の詳細 | |
| バックエンドコメントによると: | |
| ```rust | |
| pub flags: u32, // [cannot_live:1, deck_refreshed:1, immunity:1, tapped_m_0..3:3, moved_m_0..3:3, live_revealed_0..3:3] | |
| ``` | |
| フロントエンドでは現在 `FlagsBits` として16進数で表示のみ。 | |
| **個別ビットの展開表示を追加することを推奨**: | |
| | ビット | 名前 | 説明 | | |
| |--------|------|------| | |
| | 0 | `cannot_live` | Live不可フラグ | | |
| | 1 | `deck_refreshed` | デッキリフレッシュ済み | | |
| | 2 | `immunity` | 免疫状態 | | |
| | 3-5 | `tapped_m_0/1/2` | メンバータップ状態 | | |
| | 6-8 | `moved_m_0/1/2` | メンバー移動状態 | | |
| | 9-11 | `live_revealed_0/1/2` | Live公開状態 | | |
| --- | |
| ## 推奨追加項目(優先順) | |
| ### Phase 1: CRITICAL (即座に追加すべき) | |
| 1. **metadata.json の conditions 一覧表示** - 現在評価中の条件を確認できるように | |
| 2. **`tapped_energy_mask`** - Energy Zone のタップ状態を可視化 | |
| 3. **`cost_modifiers`** - コスト修正の詳細 | |
| 4. **`stage_energy`** - ステージ下のエネルギーカード | |
| ### Phase 2: HIGH Priority | |
| 5. **`score_req_list` / `score_req_player`** - スコア要求システム | |
| 6. **`flags` ビット展開** - 個別ビットの表示 | |
| ### Phase 3: MEDIUM Priority | |
| 7. `used_abilities` - どのアビリティが使用済みか | |
| 8. `*_logs` 系 - バフ/ボーナスの履歴 | |
| 9. `prev_phase`, `prev_card_id` - 前の状態 | |
| --- | |
| ## 実装ノート | |
| 追加時の参考: フロントエンドの [`DebugModal.js`](frontend/web_ui/js/modals/DebugModal.js:232) で `_flag` ヘルパー関数を使用: | |
| ```javascript | |
| ${F('FieldName', p.field_name ?? default_value)} | |
| ``` | |
| 複雑なデータ構造(配列や Vec)は `JSON.stringify()` を使用: | |
| ```javascript | |
| ${F('CostModifiers', JSON.stringify(p.cost_modifiers || []))} | |
| ``` | |
| --- | |
| *Source: data/metadata.json, engine_rust_src/src/core/logic/player.rs, engine_rust_src/src/core/logic/state.rs* | |
| *Generated by Architect mode audit* | |