osrsbox-db/osrsbox/items_api_examples/generate_chunktracker_data.py

98 lines
3.4 KiB
Python

"""
Author: PH01L
Email: phoil@osrsbox.com
Website: https://www.osrsbox.com
Description:
A script to parse the osrsbox item database and export the data to
the format needed by the ChuckTracker project:
https://github.com/Little0smit/ChunkTracker
Specified format:
{
"id": 35,
"name": "Excalibur",
"equipable": true,
"members": true,
"stats": {
"offensive": [20,29,-2,0,0],
"defensive": [0,3,2,1,0],
"other": [25,0,0,0,5]
},
"slot": "weapon",
"skill_reqs": {
"attack": 20
}
}
Copyright (c) 2019, 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
from osrsbox import items_api
if __name__ == "__main__":
# Load the database
all_db_items = items_api.load()
# Setup output dictionary
chunk_tracker_data = list()
# Loop through all items in the database
for item in all_db_items:
# Convert stats if item is equipable
if item.equipable_by_player:
offensive = [item.equipment.attack_stab,
item.equipment.attack_slash,
item.equipment.attack_crush,
item.equipment.attack_magic,
item.equipment.attack_ranged]
defensive = [item.equipment.defence_stab,
item.equipment.defence_slash,
item.equipment.defence_crush,
item.equipment.defence_magic,
item.equipment.defence_ranged]
other = [item.equipment.melee_strength,
item.equipment.ranged_strength,
item.equipment.magic_damage,
item.equipment.prayer,
item.equipment.attack_speed]
# Append extracted data to a dictionary
stats_dict = dict()
stats_dict["offensive"] = offensive
stats_dict["defensive"] = defensive
stats_dict["other"] = other
# Set properties for the item dictionary
item_dict = dict()
item_dict["id"] = item.id
item_dict["name"] = item.name
item_dict["equipable"] = item.equipable
item_dict["members"] = item.members
item_dict["stats"] = stats_dict
item_dict["slot"] = item.equipment.slot
item_dict["skill_reqs"] = item.equipment.requirements
# Add equipable item data to list of all equipable items
chunk_tracker_data.append(item_dict)
# Export extracted data
out_file_name = "EquippableItems.json"
with open(out_file_name, "w", newline="\n") as out_file:
json.dump(chunk_tracker_data, out_file, indent=4)