ugh
This commit is contained in:
Executable
+87
@@ -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()
|
||||
Reference in New Issue
Block a user