aidenleekor/innerworld-rpg
1
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 