CoolFace
Apppublic

aidenleekor/innerworld-rpg

sourceHugging Faceupdated 1y agoView on Hugging Face
1likes
parser.py84 linesDownload Raw Back to root
1import re2import json3from data_handler import DataHandler4 5data_handler = DataHandler()6 7# system_command 추출8def extract_system_command(response_text):9    pattern = r"<system_command>(.*?)</system_command>"10    match = re.search(pattern, response_text, re.DOTALL)11    if match:12        return match.group(1).strip()13    return None14 15# system_command 파싱 및 반영16def apply_system_command(system_command_str):17    try:18        command = json.loads(system_command_str)19    except json.JSONDecodeError:20        print("system_command JSON 파싱 실패")21        return22 23    data = data_handler.load_all()24 25    # 상태 업데이트26    if "update_state" in command:27        for key, value in command["update_state"].items():28            if key in data["state"]:29                data["state"][key] = value30            elif key == "stats":31                data["state"]["stats"].update(value)32            elif key == "hp":33                data["state"]["hp"].update(value)34            elif key == "mp":35                data["state"]["mp"].update(value)36 37    # 직업 업데이트38    if "update_job" in command:39        data["job"].update(command["update_job"])40 41    # 칭호 업데이트42    if "update_titles" in command:43        data["titles"]["titles"] = command["update_titles"]44 45    # 소비아이템 추가46    if "add_consumables" in command:47        for item_name, item_data in command["add_consumables"].items():48            if item_name in data["inventory"]["consumables"]:49                data["inventory"]["consumables"][item_name]["quantity"] += item_data["quantity"]50            else:51                data["inventory"]["consumables"][item_name] = item_data52 53    # 장비아이템 추가54    if "add_equipments" in command:55        data["inventory"]["equipments"].extend(command["add_equipments"])56 57    # 장착 장비 변경58    if "update_equipment" in command:59        for slot, item in command["update_equipment"].items():60            data["equipment"][slot] = item61 62    # 스킬 추가63    if "update_skills" in command:64        data["skills"] = command["update_skills"]65 66    # 퀘스트 업데이트 (v1.4 확장)67    if "update_quests" in command:68        if "daily" in command["update_quests"]:69            for updated_daily in command["update_quests"]["daily"]:70                for q in data["quests"]["daily"]:71                    if q["name"] == updated_daily["name"]:72                        q.update(updated_daily)73        if "reality" in command["update_quests"]:74            data["quests"]["reality"] = command["update_quests"]["reality"]75        if "main" in command["update_quests"]:76            data["quests"]["main"] = command["update_quests"]["main"]77 78    # 던전 업데이트79    if "update_dungeon" in command:80        data["dungeons"] = command["update_dungeon"]81 82    data_handler.save_all(data)83    print("system_command 적용 완료!")84