#!/usr/bin/env python3
"""
특정 스토커들의 스킬 정보를 DT_Skill에서 정확히 추출
"""

import json
import sys
from pathlib import Path

# 문제가 있는 스토커들
STALKERS = ['nave', 'baran', 'rio', 'clad', 'rene', 'sinobu', 'lian']

def main():
    if len(sys.argv) < 2:
        print("사용법: python verify_skills_detailed.py <DataTable.json 경로>")
        sys.exit(1)

    json_path = Path(sys.argv[1])

    with open(json_path, 'r', encoding='utf-8') as f:
        data = json.load(f)

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

    # DT_CharacterStat에서 스킬 ID 추출
    dt_char_stat = next((dt for dt in assets if dt.get('AssetName') == 'DT_CharacterStat'), None)
    stalker_skills = {}
    for row in dt_char_stat.get('Rows', []):
        row_name = row['RowName']
        if row_name in STALKERS:
            data_field = row['Data']
            stalker_skills[row_name] = {
                'defaultSkills': data_field.get('defaultSkills', []),
                'subSkill': data_field.get('subSkill', ''),
                'ultimateSkill': data_field.get('ultimateSkill', '')
            }

    # DT_Skill에서 스킬 상세 정보 추출
    dt_skill = next((dt for dt in assets if dt.get('AssetName') == 'DT_Skill'), None)

    for stalker in STALKERS:
        skill_ids = stalker_skills.get(stalker, {})

        print(f"\n{'='*120}")
        print(f"【{stalker.upper()}】")
        print(f"{'='*120}")

        # 기본 스킬들
        print(f"\n[기본 스킬]")
        for skill_id in skill_ids.get('defaultSkills', []):
            skill_row = next((row for row in dt_skill['Rows'] if row['RowName'] == skill_id), None)
            if skill_row:
                d = skill_row['Data']
                print(f"\n  {skill_id} - {d.get('name', 'N/A')}")
                print(f"    설명: {d.get('simpleDesc', 'N/A')}")
                print(f"    타입: {d.get('skillAttackType', 'N/A')}")
                print(f"    속성: {d.get('skillElementType', 'N/A')}")
                print(f"    피해배율: {d.get('skillDamageRate', 0)}")
                print(f"    쿨타임: {d.get('coolTime', 0)}초")
                print(f"    마나: {d.get('manaCost', 0)}")

        # 서브 스킬
        sub_skill_id = skill_ids.get('subSkill', '')
        if sub_skill_id:
            skill_row = next((row for row in dt_skill['Rows'] if row['RowName'] == sub_skill_id), None)
            if skill_row:
                d = skill_row['Data']
                print(f"\n[서브 스킬]")
                print(f"\n  {sub_skill_id} - {d.get('name', 'N/A')}")
                print(f"    설명: {d.get('simpleDesc', 'N/A')}")
                print(f"    타입: {d.get('skillAttackType', 'N/A')}")
                print(f"    쿨타임: {d.get('coolTime', 0)}초")

        # 궁극기
        ult_skill_id = skill_ids.get('ultimateSkill', '')
        if ult_skill_id:
            skill_row = next((row for row in dt_skill['Rows'] if row['RowName'] == ult_skill_id), None)
            if skill_row:
                d = skill_row['Data']
                print(f"\n[궁극기]")
                print(f"\n  {ult_skill_id} - {d.get('name', 'N/A')}")
                print(f"    설명: {d.get('simpleDesc', 'N/A')}")
                print(f"    타입: {d.get('skillAttackType', 'N/A')}")

if __name__ == "__main__":
    main()
