Files
dockipelago/worlds/cat_quest/export.py
Jonathan Tinney 7971961166
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
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

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}")