#!/usr/bin/env python3
"""Blueprint 변수 상세 조사"""
import json
from pathlib import Path

# Blueprint.json 로드
bp_file = Path("D:/Work/WorldStalker/DS-전투분석_저장소/원본데이터/Blueprint.json")
with open(bp_file, 'r', encoding='utf-8') as f:
    bp_data = json.load(f)

# DataTable.json 로드
dt_file = Path("D:/Work/WorldStalker/DS-전투분석_저장소/원본데이터/DataTable.json")
with open(dt_file, 'r', encoding='utf-8') as f:
    dt_data = json.load(f)

assets = bp_data.get('Assets', [])

# GA_Skill_Knight_Counter 찾기
counter_bp = [a for a in assets if a.get('AssetName') == 'GA_Skill_Knight_Counter']

print("=" * 80)
print("GA_Skill_Knight_Counter Blueprint 분석")
print("=" * 80)

if counter_bp:
    bp = counter_bp[0]
    print(f"\nAssetName: {bp.get('AssetName')}")
    print(f"ParentClass: {bp.get('ParentClass')}")

    vars = bp.get('Variables', [])
    print(f"\nTotal Variables: {len(vars)}")

    # 숫자 타입 변수만
    numeric_types = ['Float', 'Int', 'Double', 'Byte', 'int', 'float', 'double']
    numeric_vars = []

    for v in vars:
        var_type = str(v.get('VarType', ''))
        if any(t in var_type for t in numeric_types):
            numeric_vars.append(v)

    print(f"\nNumeric Variables ({len(numeric_vars)}개):")
    for v in numeric_vars[:15]:
        print(f"  {v.get('VarName')}: {v.get('DefaultValue')} (type: {v.get('VarType')})")

    # 모든 변수 출력 (참고용)
    print(f"\nAll Variables:")
    for v in vars[:20]:
        print(f"  {v.get('VarName')} ({v.get('VarType')}): {v.get('DefaultValue')}")
else:
    print("GA_Skill_Knight_Counter를 찾을 수 없음!")

# DT_Skill에서 SK100202 정보
print("\n" + "=" * 80)
print("SK100202 DT_Skill 데이터")
print("=" * 80)

dt_assets = dt_data.get('Assets', [])
dt_skill = [a for a in dt_assets if a.get('AssetName') == 'DT_Skill'][0]
rows = dt_skill.get('Rows', [])
sk_row = [r for r in rows if r.get('RowName') == 'SK100202'][0]
sk_data = sk_row.get('Data', {})

print(f"스킬 이름: {sk_data.get('name')}")
print(f"Desc: {sk_data.get('desc')}")
print(f"DescValues: {sk_data.get('descValues')}")

# desc에서 {0}, {1} 위치 찾기
desc = sk_data.get('desc', '')
desc_values = sk_data.get('descValues', [])

print(f"\n변수 매칭:")
for i, value in enumerate(desc_values):
    print(f"  {{{i}}} = {value}")

print(f"\n추론: Hilda 반격 스킬은")
print(f"  - {{{0}}}초 = {desc_values[0]}초 (반격 지속 시간)")
print(f"  - {{{1}}}% = {desc_values[1]}% (반격 피해 배율)")

# 다른 스킬도 조사
print("\n" + "=" * 80)
print("다른 스킬 Blueprint 변수 조사")
print("=" * 80)

test_skills = [
    ('SK100201', 'GA_Skill_Hilda_SwordStrike', '칼날 격돌'),
    ('SK110205', 'GA_Skill_Urud_MultiShot_Quick', '다발 화살'),
]

for skill_id, bp_name, skill_name in test_skills:
    print(f"\n=== {skill_name} ({skill_id}) ===")

    # DT_Skill
    sk_row = [r for r in rows if r.get('RowName') == skill_id]
    if sk_row:
        sk_data = sk_row[0].get('Data', {})
        print(f"DescValues: {sk_data.get('descValues')}")

    # Blueprint
    bp_match = [a for a in assets if a.get('AssetName') == bp_name]
    if bp_match:
        vars = bp_match[0].get('Variables', [])
        numeric_vars = [v for v in vars if any(t in str(v.get('VarType', '')) for t in numeric_types)]
        print(f"Blueprint 변수 총 {len(vars)}개, 숫자형 {len(numeric_vars)}개")
        if numeric_vars:
            print("  숫자형 변수:")
            for v in numeric_vars[:5]:
                print(f"    {v.get('VarName')}: {v.get('DefaultValue')}")
    else:
        print(f"  Blueprint '{bp_name}' 없음")
