Update Healer Man server

This commit is contained in:
phenom committed 2026-09-20 11:23:13 -04:00
1 parent 1fedb9368d
commit cc3b2fa4d5
27 files changed
+1988 -83

No files matched your search

+62 -1
View File
@@ -21,6 +21,10 @@ import type {
} from "./combatAuras";
import generatedData from "./wow335AbilityData.generated.json";
import { playerCombatPower } from "./progression";
import {
ROGUE_DEADLY_POISON_DOSE_TAG,
ROGUE_ENVENOM_BUFF_TAG,
} from "./roguePoison";
import { talentNodeById } from "./talentCatalog";
import { baseResourcesFor } from "./wotlkStats";
@@ -796,6 +800,25 @@ function classScriptEffects(
// Mutilate triggers separate main-hand and off-hand child attacks that are
// not player-facing SkillLine records. The DBC combo award remains intact.
case "rogue:Mutilate": return [{ kind: "damage", coefficient: 2 }];
case "rogue:Envenom": return [{
kind: "apply-aura",
recipient: "caster",
aura: {
id: "wow335:rogue:envenom-poison-buff",
name: abilityName,
description: "Increases Deadly Poison application chance by 15% and Instant Poison application frequency by 75%.",
disposition: "buff",
// Runtime shortens this to one second plus one second per combo point.
durationMs: rank.durationMs > 0 ? rank.durationMs : 6_000,
maxStacks: 1,
stackBehavior: "refresh",
utilityTags: [ROGUE_ENVENOM_BUFF_TAG],
},
sourceEffectType: 6,
sourceAuraType: 108,
miscValue: 26,
triggerSpellId: 0,
}];
case "rogue:Garrote": return [{ kind: "status", status: "silence", durationMs: 3_000 }];
case "rogue:Cold Blood": return [{
kind: "apply-aura",
@@ -842,6 +865,10 @@ function classScriptEffects(
triggerSpellId: 0,
},
];
case "rogue:Vanish": return [
{ kind: "threat", mode: "percent", amount: -100 },
{ kind: "movement", movement: "leap", toward: "away" },
];
// Both spells place a channel aura whose actual pulses live in non-player
// trigger spells. Keep the imported cast/cost/rank data and supply only the
// missing executable payload.
@@ -851,6 +878,23 @@ function classScriptEffects(
{ kind: "summon", creatureId: 19668, coefficient: 0.5, durationMs: 15_000 },
{ kind: "resource", resource: "mana", amount: 30, percentage: true },
];
case "priest:Inner Focus": return [{
kind: "apply-aura",
recipient: "caster",
aura: {
id: "wow335:priest:inner-focus",
name: abilityName,
disposition: "buff",
durationMs: 30_000,
maxStacks: 1,
stackBehavior: "refresh",
utilityTags: ["next-heal-free-critical"],
},
sourceEffectType: 6,
sourceAuraType: 107,
miscValue: 0,
triggerSpellId: 0,
}];
case "priest:Prayer of Mending": return [{
kind: "apply-aura",
aura: {
@@ -1241,6 +1285,9 @@ function effectsForRank(classId: BaseClassId, rank: Wow335Rank, abilityName: str
|| (classId === "druid" && abilityName === "Swiftmend" && effect.kind === "heal")
|| (classId === "warrior" && abilityName === "Bloodrage"
&& (effect.kind === "resource" || effect.kind === "heal"))
|| (classId === "priest" && abilityName === "Inner Focus" && effect.kind === "apply-aura")
|| (classId === "rogue" && abilityName === "Envenom" && effect.kind === "apply-aura")
|| (classId === "rogue" && abilityName === "Vanish" && effect.kind === "movement")
))
.map((effect) => effect.kind === "utility" ? effect : effect);
const result = scriptedFallbacks.length
@@ -1248,9 +1295,23 @@ function effectsForRank(classId: BaseClassId, rank: Wow335Rank, abilityName: str
: executable;
let finalized = result;
if (DIRECT_COMBO_FINISHERS.has(abilityName)) {
const directDamage = rank.effects.find((effect) => effect.effectType === 2);
const finisher: Extract<AbilityEffect, { kind: "finisher-damage" }> = abilityName === "Envenom"
? {
kind: "finisher-damage",
baseCoefficient: 0,
perComboCoefficient: 0,
poison: {
doseAuraTag: ROGUE_DEADLY_POISON_DOSE_TAG,
maximumDoses: 5,
basePointsPerDose: Math.max(1, directDamage?.basePoints ?? 1),
attackPowerCoefficientPerDose: 0.09,
},
}
: { kind: "finisher-damage", baseCoefficient: 0.55, perComboCoefficient: 0.45 };
finalized = [
...result.filter((effect) => effect.kind !== "damage" && effect.kind !== "finisher-damage"),
{ kind: "finisher-damage", baseCoefficient: 0.55, perComboCoefficient: 0.45 },
finisher,
];
}
if (COMBO_FINISHERS.has(abilityName) && !finalized.some((effect) => effect.kind === "finisher-damage")) {