Files
DS-Combat_analy/분석도구/verify_skills_detailed.py
2025-10-24 03:05:37 +09:00

87 lines
3.3 KiB
Python

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