#!/usr/bin/env python3 """ 캐릭터 스탯 분석 스크립트 DT_CharacterStat 테이블에서 스토커들의 기본 스탯을 추출하고 비교 분석합니다. 사용법: python analyze_character_stats.py """ import json import sys from pathlib import Path def find_character_stat_table(datatables): """DT_CharacterStat 테이블 찾기""" for dt in datatables: if dt.get('AssetName') == 'DT_CharacterStat': return dt return None def analyze_stats(json_path): """캐릭터 스탯 분석""" with open(json_path, 'r', encoding='utf-8') as f: datatables = json.load(f) char_stat_table = find_character_stat_table(datatables) if not char_stat_table: print("오류: DT_CharacterStat 테이블을 찾을 수 없습니다.") return stalkers = [] for row in char_stat_table.get('Rows', []): data = row['Data'] stalker_info = { 'id': row['RowName'], 'name': data.get('name', ''), 'job': data.get('jobName', ''), 'str': data.get('str', 0), 'dex': data.get('dex', 0), 'int': data.get('int', 0), 'con': data.get('con', 0), 'wis': data.get('wis', 0), 'hp': data.get('hP', 0), 'mp': data.get('mP', 0) } stalkers.append(stalker_info) return stalkers def print_stat_table(stalkers): """스탯 테이블 출력""" print("\n스토커별 기본 스탯") print("=" * 100) print(f"{'이름':<10} {'직업':<10} {'STR':>5} {'DEX':>5} {'INT':>5} {'CON':>5} {'WIS':>5} {'HP':>5} {'MP':>5}") print("-" * 100) for s in stalkers: print(f"{s['name']:<10} {s['job']:<10} {s['str']:>5} {s['dex']:>5} {s['int']:>5} {s['con']:>5} {s['wis']:>5} {s['hp']:>5} {s['mp']:>5}") def print_stat_rankings(stalkers): """스탯별 랭킹 출력""" print("\n\n스탯별 랭킹") print("=" * 100) stats = ['str', 'dex', 'int', 'con', 'wis'] stat_names = {'str': 'STR', 'dex': 'DEX', 'int': 'INT', 'con': 'CON', 'wis': 'WIS'} for stat in stats: sorted_stalkers = sorted(stalkers, key=lambda x: x[stat], reverse=True) top3 = sorted_stalkers[:3] print(f"\n{stat_names[stat]} 순위:") for i, s in enumerate(top3, 1): print(f" {i}위: {s['name']} ({s[stat]})") def main(): if len(sys.argv) < 2: print("사용법: python analyze_character_stats.py ") sys.exit(1) json_path = Path(sys.argv[1]) if not json_path.exists(): print(f"오류: 파일을 찾을 수 없습니다: {json_path}") sys.exit(1) print(f"분석 중: {json_path}") stalkers = analyze_stats(json_path) if stalkers: print(f"\n총 {len(stalkers)}명의 스토커 발견") print_stat_table(stalkers) print_stat_rankings(stalkers) if __name__ == "__main__": main()