This commit is contained in:
Your Name
2026-06-13 19:16:38 -04:00
parent d495e80209
commit 484a289112
11 changed files with 308516 additions and 10 deletions
+87
View File
@@ -0,0 +1,87 @@
#!/usr/bin/env python3
import json
from pathlib import Path
SOURCE = Path("source-bestiary/local-newserv/system/tables/battle-params.json")
OUT = Path("site/generated/bestiary/bb")
DIFFICULTY_ORDER = {
"Normal": 0,
"Hard": 1,
"Very Hard": 2,
"Ultimate": 3,
}
def label_episode(table_name):
ep, mode = table_name.split("-", 1)
return ep.replace("Episode", "Episode "), mode
def enemy_label(value):
return str(value).replace("_", " ").title()
def main():
data = json.loads(SOURCE.read_text())
OUT.mkdir(parents=True, exist_ok=True)
rows = []
for table_name, difficulties in data.items():
episode, mode = label_episode(table_name)
for difficulty, entries in difficulties.items():
for entry in entries:
stats = entry.get("Stats", {})
resist = entry.get("ResistData", {})
enemies = stats.get("Enemies") or []
for enemy in enemies:
rows.append({
"version": "bb",
"episode": episode,
"mode": mode,
"difficulty": difficulty,
"enemy": enemy_label(enemy),
"enemy_key": enemy,
"bp_index": entry.get("BPIndex"),
"hp": stats.get("HP", 0),
"atp": stats.get("ATP", 0),
"dfp": stats.get("DFP", 0),
"mst": stats.get("MST", 0),
"ata": stats.get("ATA", 0),
"evp": stats.get("EVP", 0),
"lck": stats.get("LCK", 0),
"esp": stats.get("ESP", 0),
"exp": stats.get("EXP", 0),
"meseta": stats.get("Meseta", 0),
"efr": resist.get("EFR", 0),
"eic": resist.get("EIC", 0),
"eth": resist.get("ETH", 0),
"elt": resist.get("ELT", 0),
"edk": resist.get("EDK", 0),
})
rows.sort(key=lambda row: (
row["episode"],
row["mode"],
DIFFICULTY_ORDER.get(row["difficulty"], 999),
row["enemy"],
row["bp_index"] if row["bp_index"] is not None else 9999,
))
(OUT / "bb.json").write_text(json.dumps(rows, indent=2, sort_keys=True) + "\n")
(OUT / "index.json").write_text(json.dumps({
"mode": "bestiary",
"label": "BB",
"tables": [{
"version": "bb",
"label": "BB",
"path": "bb.json",
"rows": len(rows),
}],
}, indent=2, sort_keys=True) + "\n")
print(f"bb: {len(rows)} rows -> {OUT / 'bb.json'}")
print(f"index -> {OUT / 'index.json'}")
if __name__ == "__main__":
main()