""" Author: PH01L Email: phoil@osrsbox.com Website: https://www.osrsbox.com Description: Generate summary of item, npc and object cache definition files. Copyright (c) 2020, PH01L ############################################################################### This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. ############################################################################### """ import json import os from pathlib import Path import config from scripts.cache import cache_constants def process(): """Main function to extract item/npc/object summary (ID and name).""" for cache_name in cache_constants.CACHE_DUMP_TYPES: summary_data = dict() if cache_name == "items": definitions = cache_constants.ITEM_DEFINITIONS elif cache_name == "npcs": definitions = cache_constants.NPC_DEFINITIONS elif cache_name == "objects": definitions = cache_constants.OBJECT_DEFINITIONS # Loop all entries in the decompressed and loaded definition file for id_number in definitions: json_data = definitions[id_number] id = json_data["id"] name = json_data["name"] # Check if there is a non-valid name if "<col" in json_data["name"]: continue if "null" in json_data["name"].lower(): continue summary_data[id] = { "id": id, "name": name } # Save all extracted entries to a JSON file if cache_name == "items": out_fi = Path(config.DOCS_PATH / "items-summary.json") elif cache_name == "npcs": out_fi = Path(config.DOCS_PATH / "npcs-summary.json") elif cache_name == "objects": out_fi = Path(config.DOCS_PATH / "objects-summary.json") os.makedirs(os.path.dirname(out_fi), exist_ok=True) with open(out_fi, "w") as f: json.dump(summary_data, f, indent=4) if __name__ == "__main__": process()