forked from mirror/Archipelago
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
770 lines
19 KiB
Python
770 lines
19 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
royal_arts = [
|
|
{"name": "Royal Art of Water Walking", "inGameId": "art.water"},
|
|
{"name": "Royal Art of Flight", "inGameId": "art.flight"},
|
|
]
|
|
|
|
skills = [
|
|
{"name": "Flamepurr", "inGameId": "skill.flamepurr"},
|
|
{"name": "Healing Paw", "inGameId": "skill.healing_paw"},
|
|
{"name": "Lightnyan", "inGameId": "skill.lightnyan"},
|
|
{"name": "Cattrap", "inGameId": "skill.cattrap"},
|
|
{"name": "Purrserk", "inGameId": "skill.purrserk"},
|
|
{"name": "Astropaw", "inGameId": "skill.astropaw"},
|
|
{"name": "Freezepaw", "inGameId": "skill.freezepaw"},
|
|
]
|
|
|
|
prog_skills = [
|
|
{"name": "Progressive Flamepurr", "inGameId": "skill.flamepurr"},
|
|
{"name": "Progressive Healing Paw", "inGameId": "skill.healing_paw"},
|
|
{"name": "Progressive Lightnyan", "inGameId": "skill.lightnyan"},
|
|
{"name": "Progressive Cattrap", "inGameId": "skill.cattrap"},
|
|
{"name": "Progressive Purrserk", "inGameId": "skill.purrserk"},
|
|
{"name": "Progressive Astropaw", "inGameId": "skill.astropaw"},
|
|
{"name": "Progressive Freezepaw", "inGameId": "skill.freezepaw"},
|
|
]
|
|
|
|
prog_skill_uprades = [
|
|
{"name": "Progressive Flamepurr Upgrade", "inGameId": "skillupgrade.flamepurr"},
|
|
{"name": "Progressive Healing Paw Upgrade", "inGameId": "skillupgrade.healing_paw"},
|
|
{"name": "Progressive Lightnyan Upgrade", "inGameId": "skillupgrade.lightnyan"},
|
|
{"name": "Progressive Cattrap Upgrade", "inGameId": "skillupgrade.cattrap"},
|
|
{"name": "Progressive Purrserk Upgrade", "inGameId": "skillupgrade.purrserk"},
|
|
{"name": "Progressive Astropaw Upgrade", "inGameId": "skillupgrade.astropaw"},
|
|
{"name": "Progressive Freezepaw Upgrade", "inGameId": "skillupgrade.freezepaw"},
|
|
]
|
|
|
|
prog_magic_levels = [
|
|
{"name": "Progressive Magic Level", "inGameId": "magiclevel.magiclevel"},
|
|
]
|
|
|
|
misc = [
|
|
# Golden Key
|
|
{"name": "Golden Key", "inGameId": "key.golden"},
|
|
]
|
|
|
|
fillers = [
|
|
# Gold
|
|
{"name": "50 Gold", "inGameId": "gold.50"},
|
|
{"name": "500 Gold", "inGameId": "gold.500"},
|
|
{"name": "750 Gold", "inGameId": "gold.750"},
|
|
{"name": "1000 Gold", "inGameId": "gold.1000"},
|
|
{"name": "5000 Gold", "inGameId": "gold.5000"},
|
|
|
|
# Exp
|
|
{"name": "500 Exp", "inGameId": "exp.500"},
|
|
{"name": "1000 Exp", "inGameId": "exp.1000"},
|
|
{"name": "5000 Exp", "inGameId": "exp.5000"},
|
|
{"name": "7500 Exp", "inGameId": "exp.7500"},
|
|
{"name": "10K Exp", "inGameId": "exp.10000"},
|
|
{"name": "20K Exp", "inGameId": "exp.20000"},
|
|
]
|
|
|
|
|
|
monumentLocations = [
|
|
{
|
|
"inGameId": "MonumentTrigger_Catpital",
|
|
"name": "Monument by The Catpital",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_PussPlains",
|
|
"name": "Monument in Puss Plains",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_TwinPeaks",
|
|
"name": "Monument below The Furbidden Fields",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_SouthPoint",
|
|
"name": "Monument at South Point",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_EastPawt",
|
|
"name": "Monument along East Pawt River",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_HillyHills_01",
|
|
"name": "Monument by Hilly Hills Coast",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_HillyHills_02",
|
|
"name": "Monument by The Unknown Head",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_MountainPass",
|
|
"name": "Monument above Mountain Pass",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_Windmew",
|
|
"name": "Monument by Windmew Lake",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_NorthPoint",
|
|
"name": "Monument at North Point",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_Purrning",
|
|
"name": "Monument by Winters Edge",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_OldMaster",
|
|
"name": "Monument on Old Master's Island",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_KeyIsland",
|
|
"name": "Monument on Key Island",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_MonsterIsle",
|
|
"name": "Monument on Monster Isle",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MonumentTrigger_DeathIsle",
|
|
"name": "Monument on Death Isle",
|
|
"art": "either",
|
|
"hasFist": False
|
|
}
|
|
]
|
|
|
|
templeLocations = [
|
|
{
|
|
"inGameId": "flamepurr",
|
|
"name": "The Catpital Temple (Flamepurr)",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "healing_paw",
|
|
"name": "Bermewda's Triangle Temple (Healing Paw)",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "lightnyan",
|
|
"name": "East Pawt Temple (Lightnyan)",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "cattrap",
|
|
"name": "Windmew City Temple (Cattrap)",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "purrserk",
|
|
"name": "South Pawt Temple (Purrserk)",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "astropaw",
|
|
"name": "Death Isle Temple (Astropaw)",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "freezepaw",
|
|
"name": "Felingard Lake Temple (Freezepaw)",
|
|
"art": "none",
|
|
"hasFist": False
|
|
}
|
|
]
|
|
|
|
questLocations = [
|
|
# Main Quests
|
|
{
|
|
"inGameId": "MainQuest_001_PC",
|
|
"name": "A Whole New World",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_002",
|
|
"name": "The Catpital (1)",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_003",
|
|
"name": "The Catpital (2)",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_004",
|
|
"name": "The Dragon and the Cat",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_005",
|
|
"name": "The Old Ruins",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_006",
|
|
"name": "Of Sea and Rock (1)",
|
|
"art": "water",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_007",
|
|
"name": "Of Sea and Rock (2)",
|
|
"art": "both",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_008",
|
|
"name": "The Old Friend",
|
|
"art": "both",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_009",
|
|
"name": "The Dragonblood",
|
|
"art": "both",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_010",
|
|
"name": "The Dragonsbane",
|
|
"art": "both",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_011",
|
|
"name": "The Dragons Void",
|
|
"art": "both",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "MainQuest_012",
|
|
"name": "Epilogue",
|
|
"art": "both",
|
|
"hasFist": True
|
|
},
|
|
|
|
# Sanctuary Quests
|
|
{
|
|
"inGameId": "sanctuary_one",
|
|
"name": "I. The Strange Charm",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "sanctuary_two",
|
|
"name": "II. The Escape",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "sanctuary_three",
|
|
"name": "III. The Sacrifice",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "sanctuary_four",
|
|
"name": "IV. The Sanctuary",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
|
|
# Great Spirit Quests
|
|
{
|
|
"inGameId": "greatspirit_one",
|
|
"name": "I. The Servant of God",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "greatspirit_two",
|
|
"name": "II. The Offerings",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "greatspirit_three",
|
|
"name": "III. The Prayer",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "greatspirit_four",
|
|
"name": "IV. The Godcat, Mauth",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
|
|
# Kitmas Quests
|
|
{
|
|
"inGameId": "kitmas_one",
|
|
"name": "The First Day of Kitmas",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "kitmas_two",
|
|
"name": "The Second Day of Kitmas",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "kitmas_three",
|
|
"name": "The Third Day of Kitmas",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "kitmas_four",
|
|
"name": "The Fourth Day of Kitmas",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "kitmas_five",
|
|
"name": "Mewry Kitmas!",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
|
|
# Missing Quests
|
|
{
|
|
"inGameId": "missing_one",
|
|
"name": "I. The Missing Soldiers",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "missing_two",
|
|
"name": "II. The Rescue",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
|
|
# Faded King Quests
|
|
{
|
|
"inGameId": "faded_king_one",
|
|
"name": "I. The King's Mage",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "faded_king_three",
|
|
"name": "II. The Mage Search",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "faded_king_four",
|
|
"name": "III. The Spirits",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "faded_king_five",
|
|
"name": "IV. The Lion King",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
|
|
# East Quests
|
|
{
|
|
"inGameId": "east_one",
|
|
"name": "I. The East Suspicion",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "east_two",
|
|
"name": "II. The East Shipment",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "east_three",
|
|
"name": "III. The East Escort",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "east_four",
|
|
"name": "IV. The East Catfrontation",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
|
|
# Meat Quests
|
|
{
|
|
"inGameId": "meatmeatmeat",
|
|
"name": "I. Meat Meat Meat!",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "red_riding_kitty",
|
|
"name": "II. Meatmeatmeatmeat!!",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "distraction",
|
|
"name": "III. Meat Disposal Crew",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "crafty_merchant",
|
|
"name": "IV. The Meat Seller",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
|
|
# Whisperer Quests
|
|
{
|
|
"inGameId": "the_whisperer_one",
|
|
"name": "I. The Growling Peasant",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "the_whisperer_two",
|
|
"name": "II. The Catnip Ritual",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "the_whisperer_three",
|
|
"name": "III. The Circle",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "the_whisperer_four",
|
|
"name": "IV. Fur-reedom!",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "the_whisperer_five",
|
|
"name": "V. The Whispurrer",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
|
|
# Waters Quests
|
|
{
|
|
"inGameId": "waters_one",
|
|
"name": "I. Path to Water Walking",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "waters_three",
|
|
"name": "II. The Fusion",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "waters_four",
|
|
"name": "III. Rogue Mages",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "waters_five",
|
|
"name": "IV. The Miracle",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
|
|
# West Quests
|
|
{
|
|
"inGameId": "west_one",
|
|
"name": "I. The West Investigation",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "west_two",
|
|
"name": "II. The West Heist",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "west_three",
|
|
"name": "III. The Magic Lock",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "west_four",
|
|
"name": "IV. The Revelation",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
|
|
# Flight Quests
|
|
{
|
|
"inGameId": "magesold_one",
|
|
"name": "I. The Flying Bush",
|
|
"art": "either",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "magesold_two",
|
|
"name": "II. The Magic Tree",
|
|
"art": "either",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "magesold_three",
|
|
"name": "III. The Cult",
|
|
"art": "either",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "magesold_four",
|
|
"name": "IV. Dragonflight",
|
|
"art": "either",
|
|
"hasFist": True
|
|
},
|
|
|
|
# Dark Past Quests
|
|
{
|
|
"inGameId": "darkpast_one",
|
|
"name": "I. The Missing Pages",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "darkpast_two",
|
|
"name": "II. The Protected Pages",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "darkpast_three",
|
|
"name": "III. The Runaway Archeologist",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "darkpast_four",
|
|
"name": "IV. The Treasure",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
|
|
# Blacksmith Quests
|
|
{
|
|
"inGameId": "blacksmith_assistance",
|
|
"name": "I. Blacksmith Assistance",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "blacksmith_apprentice",
|
|
"name": "II. Blacksmith Apprentice",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "blacksmith_journeyman",
|
|
"name": "III. Blacksmith Journeyman",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "blacksmith_master",
|
|
"name": "IV. Blacksmith Master",
|
|
"art": "none",
|
|
"hasFist": True
|
|
},
|
|
|
|
# Misc Quests
|
|
{
|
|
"inGameId": "wyvern_attack",
|
|
"name": "The Dragon Worshippers",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "the_heirloom",
|
|
"name": "The Heirloom Armor",
|
|
"art": "water",
|
|
"hasFist": True
|
|
},
|
|
{
|
|
"inGameId": "furbidden_mystery",
|
|
"name": "The Furbidden History",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "golden_key",
|
|
"name": "The Golden Key",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "ultimate_dragonsbane",
|
|
"name": "The Ultimate Dragonsbane",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "pawtato_one",
|
|
"name": "The Pawtato Mystery",
|
|
"art": "water",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "advertising_one",
|
|
"name": "Everyone's invited!",
|
|
"art": "flight",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "slashy_one",
|
|
"name": "The Forgotten Hero",
|
|
"art": "either",
|
|
"hasFist": False
|
|
},
|
|
|
|
# Catnip Cure Quests
|
|
{
|
|
"inGameId": "catnip_cure_A",
|
|
"name": "I. The Catnip Cure",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "catnip_cure_B",
|
|
"name": "I. The Catnip Cure...again",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "knightmare_A",
|
|
"name": "II. The Knightmare",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "knightmare_B",
|
|
"name": "II. The Knightmare... again",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "book_A",
|
|
"name": "III. The Book",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "book_B",
|
|
"name": "III. The Book...again",
|
|
"art": "none",
|
|
"hasFist": False
|
|
},
|
|
{
|
|
"inGameId": "resolution_A",
|
|
"name": "IV. The Twin Resolution",
|
|
"art": "none",
|
|
"hasFist": False
|
|
}
|
|
]
|
|
|
|
# All items in the exact order they should be loaded
|
|
all_items = fillers + royal_arts + skills + prog_skills + prog_skill_uprades + prog_magic_levels + misc
|
|
all_locations = questLocations + templeLocations + monumentLocations
|
|
|
|
# Map: numeric ID → item
|
|
|
|
item_id_dict = {}
|
|
current_id = 1
|
|
|
|
for item in all_items:
|
|
item_id_dict[item["name"]] = current_id
|
|
current_id += 1
|
|
|
|
location_id_dict = {}
|
|
current_id = 1
|
|
|
|
for location in all_locations:
|
|
location_id_dict[location["name"]] = current_id
|
|
current_id += 1
|
|
|
|
|
|
item_data = [
|
|
{"name": item["name"], "id": item["inGameId"]}
|
|
for item in all_items
|
|
]
|
|
|
|
location_data = [
|
|
{"name": location["name"], "id": location["inGameId"]}
|
|
for location in all_locations
|
|
]
|
|
|
|
# Output path (same folder as this script)
|
|
location_output_file = Path(__file__).parent / "location_to_ids.json"
|
|
item_output_file = Path(__file__).parent / "items_to_ids.json"
|
|
locationdata_output_file = Path(__file__).parent / "location_data.json"
|
|
itemdata_output_file = Path(__file__).parent / "item_data.json"
|
|
|
|
# Write JSON with indentation
|
|
with location_output_file.open("w", encoding="utf-8") as f:
|
|
json.dump(location_id_dict, f, indent=2, ensure_ascii=False)
|
|
|
|
print(f"JSON file created at {location_output_file}")
|
|
|
|
with item_output_file.open("w", encoding="utf-8") as f:
|
|
json.dump(item_id_dict, f, indent=2, ensure_ascii=False)
|
|
|
|
print(f"JSON file created at {item_output_file}")
|
|
|
|
|
|
|
|
with locationdata_output_file.open("w", encoding="utf-8") as f:
|
|
json.dump(location_data, f, indent=2, ensure_ascii=False)
|
|
|
|
print(f"JSON file created at {locationdata_output_file}")
|
|
|
|
with itemdata_output_file.open("w", encoding="utf-8") as f:
|
|
json.dump(item_data, f, indent=2, ensure_ascii=False)
|
|
|
|
print(f"JSON file created at {itemdata_output_file}") |