Release v0.1.11 2026-07-13
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { BOSS_HAZARD_VFX, bossHazardVfxProfile, bossHazardVfxSeed } from "./bossHazardVisuals";
|
||||
import type { CircleHazardKind } from "./types";
|
||||
|
||||
const HAZARD_KINDS: readonly CircleHazardKind[] = [
|
||||
"venom_pool",
|
||||
"skyfall",
|
||||
"quake",
|
||||
"lava_pool",
|
||||
"stinger_eruption",
|
||||
"hourglass",
|
||||
"tidal_burst",
|
||||
"soul_rift",
|
||||
"crownfall",
|
||||
"royal_shockwave",
|
||||
];
|
||||
|
||||
describe("boss hazard visuals", () => {
|
||||
it("defines a bounded effect profile for every circular hazard kind", () => {
|
||||
expect(Object.keys(BOSS_HAZARD_VFX).sort()).toEqual([...HAZARD_KINDS].sort());
|
||||
for (const kind of HAZARD_KINDS) {
|
||||
const profile = bossHazardVfxProfile(kind);
|
||||
expect(profile.particleCount).toBeGreaterThanOrEqual(6);
|
||||
expect(profile.particleCount).toBeLessThanOrEqual(9);
|
||||
expect(profile.height).toBeGreaterThan(0);
|
||||
expect(profile.warningColor).not.toBe(profile.highlightColor);
|
||||
}
|
||||
});
|
||||
|
||||
it("uses shape and motion, not color alone, to distinguish common attacks", () => {
|
||||
expect(bossHazardVfxProfile("venom_pool")).toMatchObject({ motion: "bubble", shape: "orb" });
|
||||
expect(bossHazardVfxProfile("stinger_eruption")).toMatchObject({ motion: "spike", shape: "spike" });
|
||||
expect(bossHazardVfxProfile("royal_shockwave")).toMatchObject({ motion: "shockwave", shape: "crystal" });
|
||||
expect(bossHazardVfxProfile("soul_rift")).toMatchObject({ motion: "orbit", shape: "orb" });
|
||||
});
|
||||
|
||||
it("creates stable normalized seeds without runtime randomness", () => {
|
||||
expect(bossHazardVfxSeed("meteor-12")).toBe(bossHazardVfxSeed("meteor-12"));
|
||||
expect(bossHazardVfxSeed("meteor-12")).not.toBe(bossHazardVfxSeed("meteor-13"));
|
||||
expect(bossHazardVfxSeed("meteor-12")).toBeGreaterThanOrEqual(0);
|
||||
expect(bossHazardVfxSeed("meteor-12")).toBeLessThanOrEqual(1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user