forked from phenom/healer-man
Release Healer Man 0.1.21
This commit is contained in:
1 parent
699fc858c9
commit
f6f2375145
210 files changed
+976039
-6247
No files matched your search
@@ -460,6 +460,12 @@ function attacksFor(template, sourceSpells, spellCatalog, bossMechanics) {
|
||||
initialCooldownMs: [spell.runtime.cooldownMs, spell.runtime.cooldownMs],
|
||||
repeatCooldownMs: [spell.runtime.cooldownMs, spell.runtime.cooldownMs],
|
||||
damageMultiplier: spell.runtime.damageMultiplier,
|
||||
...(spell.runtime.formula ? {
|
||||
runewakerFormula: {
|
||||
...spell.runtime.formula,
|
||||
spellLevel: Number(sourceSpell.level ?? 0),
|
||||
},
|
||||
} : {}),
|
||||
}];
|
||||
});
|
||||
const recipeAttacks = Array.isArray(template.attacks)
|
||||
@@ -471,7 +477,34 @@ function attacksFor(template, sourceSpells, spellCatalog, bossMechanics) {
|
||||
const mechanics = authored?.mode === "replace"
|
||||
? authored.mechanics ?? []
|
||||
: [...(authored?.mechanics ?? []), ...recipeAttacks, ...sourceAttacks];
|
||||
const unique = [...new Map(mechanics.map((attack) => [attack.id, attack])).values()];
|
||||
const sourceSpellLevels = new Map(
|
||||
(sourceSpells ?? []).map((sourceSpell) => [Number(sourceSpell.id), Number(sourceSpell.level ?? 0)]),
|
||||
);
|
||||
for (const spellId of authored?.source?.spellIds ?? []) {
|
||||
if (!sourceSpellLevels.has(Number(spellId))) {
|
||||
// Script-derived spell evidence has no NPC assignment level in the packaged row.
|
||||
// Zero is the catalog's explicit unassigned-level sentinel and is not used by
|
||||
// the HealerMan baseline adapter.
|
||||
sourceSpellLevels.set(Number(spellId), 0);
|
||||
}
|
||||
}
|
||||
const withSourceFormula = mechanics.map((attack) => {
|
||||
const spellId = Number(attack.spellId ?? attack.source?.spellId ?? 0);
|
||||
const spell = spellCatalog.get(spellId);
|
||||
if (!sourceSpellLevels.has(spellId)
|
||||
|| spell?.mappingStatus !== "damage-family"
|
||||
|| !spell.runtime?.formula) {
|
||||
return attack;
|
||||
}
|
||||
return {
|
||||
...attack,
|
||||
runewakerFormula: {
|
||||
...spell.runtime.formula,
|
||||
spellLevel: sourceSpellLevels.get(spellId),
|
||||
},
|
||||
};
|
||||
});
|
||||
const unique = [...new Map(withSourceFormula.map((attack) => [attack.id, attack])).values()];
|
||||
return [basicAttack, ...unique];
|
||||
}
|
||||
|
||||
@@ -706,7 +739,7 @@ async function generatePopulation() {
|
||||
serverEntryPolicy: "RuneWaker numeric ids are never passed to AzerothCore serverEntry.",
|
||||
sourceSpellCatalog: projectPath(spellCatalogFile),
|
||||
sourceSpellCatalogSha256: await sha256(spellCatalogFile),
|
||||
sourceSpellPolicy: "Only positively classified direct-HP-damage families execute; coefficients remain conservative HealerMan values.",
|
||||
sourceSpellPolicy: "Only positively classified direct-HP-damage families execute; source fields are preserved and live damage uses the labeled HealerMan baseline adapter when native stats are unavailable.",
|
||||
};
|
||||
const reportFile = resolveProject(recipe.files.report);
|
||||
await mkdir(path.dirname(reportFile), { recursive: true });
|
||||
|
||||
Reference in new issue
Block a user