#!/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 ") 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()