forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
e284f4fc76
commit
15a5254380
52 files changed
+637
-80
No files matched your search
@@ -21,6 +21,12 @@ npm run effects:audit
|
||||
npm run effects:test
|
||||
```
|
||||
|
||||
`npm run effects:meteor` packages the Ascension Mage Meteor release and impact
|
||||
models used by Falling Stars. It reads the additional Ascension models from the
|
||||
extracted `patch-N` directory and attaches browser-ready graphs to spell
|
||||
`ascension:500135`. The full `effects:generate` command runs this step after
|
||||
the WoW package step so a regenerated manifest keeps the affix visuals.
|
||||
|
||||
`effects:generate` rebuilds the DBC/audio mappings before packaging all WoW
|
||||
visuals. `effects:priest` remains a compatibility alias for `effects:wow` so it
|
||||
cannot accidentally revert the main manifest to Priest-only coverage. The old
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env node
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { packageWowOriginalEffects } from "./package-wow-original.mjs";
|
||||
|
||||
const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
|
||||
const manifestPath = path.join(projectRoot, "public/assets/game/combat-effects/manifest.json");
|
||||
const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8"));
|
||||
const entryIndex = manifest.entries.findIndex((entry) => entry.key === "ascension:500135");
|
||||
if (entryIndex < 0) throw new Error("Mage Meteor is absent from the combat effect manifest.");
|
||||
|
||||
const entry = manifest.entries[entryIndex];
|
||||
const phases = {
|
||||
release: entry.phases.release,
|
||||
impact: entry.phases.impact,
|
||||
};
|
||||
const roots = ["patch-N", "common-2.mpq", "patch-3", "patch-2", "patch", "expansion", "lichking", "common"]
|
||||
.map((name) => path.resolve(projectRoot, "../LadiksMPQEditor", name));
|
||||
const packaged = packageWowOriginalEffects({ entries: [{ ...entry, source: "wow335", phases }], coverage: {} }, {
|
||||
roots,
|
||||
catalog: { classes: {} },
|
||||
});
|
||||
if (packaged.report.failures.length) {
|
||||
throw new Error(`Meteor packaging failed: ${JSON.stringify(packaged.report.failures)}`);
|
||||
}
|
||||
|
||||
const packagedPhases = packaged.manifest.entries[0].phases;
|
||||
for (const phase of Object.keys(phases)) {
|
||||
if (packagedPhases[phase].some((asset) => !asset.effectGraphUrl)) {
|
||||
throw new Error(`Meteor ${phase} has an unrenderable model.`);
|
||||
}
|
||||
}
|
||||
manifest.entries[entryIndex] = { ...entry, phases: { ...entry.phases, ...packagedPhases } };
|
||||
fs.writeFileSync(manifestPath, `${JSON.stringify(manifest)}\n`);
|
||||
console.log(JSON.stringify({ key: entry.key, phases: packagedPhases, report: packaged.report }, null, 2));
|
||||
Reference in new issue
Block a user