Release Healer Man 0.1.14

This commit is contained in:
phenom committed 2026-09-05 11:40:50 -04:00
1 parent 67d7a8ebe7
commit 7b41b102fa
147 files changed
+169892 -1342

No files matched your search

@@ -63,6 +63,7 @@ const khronosValidator = path.join(
"manastorm-assets",
"validate-package-glbs.cjs",
);
const bossMechanicsFile = path.join(projectRoot, "dungeon-pipeline", "boss-mechanics.json");
function run(executable, argumentsList, label) {
return new Promise((resolve, reject) => {
@@ -286,21 +287,8 @@ function distanceSquared(a, b) {
}
function attackFor(template) {
if (template.id === 100074 || template.id === 100070) {
return {
id: "rw-fa-shadow-bolt",
name: "Shadow Bolt",
delivery: "projectile",
target: "primary",
school: "shadow",
animation: "cast",
range: 18,
cooldownMs: 4200,
damageMultiplier: 1.08,
};
}
return {
id: "rw-fa-basic-attack",
id: "basic-attack",
name: template.archetype === "ooze" ? "Corrosive Slam" : "Basic Attack",
delivery: "melee",
target: "primary",
@@ -312,8 +300,9 @@ function attackFor(template) {
};
}
function entityFor(template, actor) {
function entityFor(template, actor, bossMechanics) {
const boss = template.classification === "boss";
const mechanics = bossMechanics?.bosses?.["rw-fa-" + template.id]?.mechanics ?? [];
return {
id: "rw-fa-" + template.id,
name: template.name,
@@ -326,7 +315,8 @@ function entityFor(template, actor) {
damageMultiplier: boss ? 1.3 : 1,
moveSpeed: boss ? 2.25 : 2.15,
leashRange: boss ? 32 : 24,
attacks: [attackFor(template)],
...(boss ? { mechanicIds: mechanics.map((attack) => attack.id) } : {}),
attacks: [attackFor(template), ...mechanics],
},
visual: {
primaryColor: template.primaryColor,
@@ -384,11 +374,16 @@ async function generatePopulation() {
manifestFile,
"Run node scripts/runewaker-pipeline/build-forsaken-population.mjs --actors-only to package the creature models.",
),
requireFile(
bossMechanicsFile,
"Run npm run runewaker:bosses:refresh to create the boss mechanic catalog.",
),
]);
const [snapshot, manifest, environment] = await Promise.all([
const [snapshot, manifest, environment, bossMechanics] = await Promise.all([
readFile(snapshotFile, "utf8").then(JSON.parse),
readFile(manifestFile, "utf8").then(JSON.parse),
readFile(resolveProject(recipe.files.environmentMetadata), "utf8").then(JSON.parse),
readFile(bossMechanicsFile, "utf8").then(JSON.parse),
]);
const templates = new Map(recipe.templates.map((template) => [template.id, template]));
const actors = new Map(manifest.assets.map((actor) => [actor.id, actor]));
@@ -438,7 +433,7 @@ async function generatePopulation() {
const entityId = "rw-fa-" + row.templateId;
if (!entities[entityId]) {
entities[entityId] = entityFor(template, actors.get(template.actor));
entities[entityId] = entityFor(template, actors.get(template.actor), bossMechanics);
}
const spawn = {
id: "rw-fa-spawn-" + row.spawnId,