#!/usr/bin/env python3 """ 궁극기 정보 추출 스크립트 모든 스토커의 궁극기 정보를 DT_Skill에서 추출합니다. """ import json import sys from pathlib import Path STALKERS = ['hilda', 'urud', 'nave', 'baran', 'rio', 'clad', 'rene', 'sinobu', 'lian', 'cazimord'] def load_json(file_path): """JSON 파일 로드""" with open(file_path, 'r', encoding='utf-8') as f: data = json.load(f) return data.get('Assets', []) def find_table(datatables, table_name): """특정 테이블 찾기""" for dt in datatables: if dt.get('AssetName') == table_name: return dt return None def main(): if len(sys.argv) < 2: print("사용법: python extract_ultimate_skills.py ") sys.exit(1) json_path = Path(sys.argv[1]) datatables = load_json(json_path) # DT_CharacterStat에서 궁극기 ID 추출 char_stat_table = find_table(datatables, 'DT_CharacterStat') stalker_ultimates = {} for row in char_stat_table.get('Rows', []): row_name = row['RowName'] if row_name in STALKERS: stalker_ultimates[row_name] = row['Data'].get('ultimateSkill', '') # DT_Skill에서 궁극기 상세 정보 추출 skill_table = find_table(datatables, 'DT_Skill') print("=" * 100) print("스토커별 궁극기 정보") print("=" * 100) for stalker in STALKERS: ult_id = stalker_ultimates.get(stalker, '') if not ult_id: continue # 스킬 정보 찾기 skill_row = next((row for row in skill_table['Rows'] if row['RowName'] == ult_id), None) if not skill_row: print(f"\n{stalker}: 궁극기 {ult_id} 정보를 찾을 수 없습니다") continue data = skill_row['Data'] print(f"\n【{stalker.upper()}】") print(f" ID: {ult_id}") print(f" 이름: {data.get('name', 'N/A')}") print(f" 간단 설명: {data.get('simpleDesc', 'N/A')}") print(f" bIsUltimate: {data.get('bIsUltimate', False)}") print(f" skillDamageRate: {data.get('skillDamageRate', 0)}") print(f" skillAttackType: {data.get('skillAttackType', 'N/A')}") print(f" skillElementType: {data.get('skillElementType', 'N/A')}") print(f" castingTime: {data.get('castingTime', 0)}초") print(f" activeDuration: {data.get('activeDuration', 0)}초") print(f" manaCost: {data.get('manaCost', 0)}") print(f" coolTime: {data.get('coolTime', 0)}") if __name__ == "__main__": main()