Files
healer-man/src/game/roguePoison.test.ts
T
2026-09-20 11:23:13 -04:00

34 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
rogueDeadlyPoisonTickDamage,
rogueEnvenomPreservationChance,
rogueEnvenomPreservesDeadlyPoison,
rogueInstantPoisonDamage,
roguePoisonApplicationChances,
} from "./roguePoison";
describe("Rogue weapon poisons", () => {
it("uses the learned poison ranks and attack-power scaling", () => {
expect(rogueInstantPoisonDamage(20, 0)).toBe(22);
expect(rogueInstantPoisonDamage(80, 1_000)).toBe(450);
expect(rogueDeadlyPoisonTickDamage(80, 1_000, 1)).toBe(104);
expect(rogueDeadlyPoisonTickDamage(80, 1_000, 5)).toBe(520);
});
it("applies Envenom's poison-frequency bonuses without exceeding the stack cap", () => {
expect(roguePoisonApplicationChances(false)).toEqual({ instant: 0.2, deadly: 0.3 });
expect(roguePoisonApplicationChances(true).instant).toBeCloseTo(0.35);
expect(roguePoisonApplicationChances(true).deadly).toBeCloseTo(0.45);
expect(rogueDeadlyPoisonTickDamage(80, 1_000, 99)).toBe(520);
});
it("honors Master Poisoner's Envenom dose-preservation ranks", () => {
expect(rogueEnvenomPreservationChance({})).toBe(0);
expect(rogueEnvenomPreservationChance({ "talent-1715": 1 })).toBe(0.33);
expect(rogueEnvenomPreservationChance({ "talent-1715": 2 })).toBe(0.66);
expect(rogueEnvenomPreservationChance({ "talent-1715": 3 })).toBe(1);
expect(rogueEnvenomPreservesDeadlyPoison({ "talent-1715": 3 }, "any-cast")).toBe(true);
expect(rogueEnvenomPreservesDeadlyPoison({}, "any-cast")).toBe(false);
});
});