Update Healer Man server
This commit is contained in:
1 parent
6114a2295f
commit
69809f7228
593 files changed
+903643
-40774
No files matched your search
+16
-1
@@ -8,6 +8,7 @@ import {
|
||||
type EnemyAttackTelegraph,
|
||||
} from "./enemyAttacks";
|
||||
import type { PopulationEntityDefinition } from "./mobPopulation";
|
||||
import { enemyTriggeredShoutContract } from "./enemyTriggeredShouts";
|
||||
|
||||
export type BossGuideFidelity = "source" | "fallback" | "authored";
|
||||
|
||||
@@ -85,6 +86,9 @@ function describeCondition(condition: EnemyAbilityCondition | undefined): string
|
||||
if (condition.kind === "friendly-missing-health") {
|
||||
return `When an ally within ${condition.range}m is missing ${Math.round(condition.amount)} health`;
|
||||
}
|
||||
if (condition.kind === "friendly-missing-aura") {
|
||||
return `When an ally within ${condition.range}m is missing this buff`;
|
||||
}
|
||||
return `While encounter ${condition.encounterId} is in: ${condition.states.join(", ")}`;
|
||||
}
|
||||
|
||||
@@ -102,8 +106,10 @@ const TARGET_LABELS: Readonly<Record<EnemyAttackTarget, string>> = {
|
||||
primary: "the boss's current target",
|
||||
"random-party": "a random party member",
|
||||
"nearby-party": "party members in the affected area",
|
||||
"nearby-friendly": "the boss and nearby enemy allies",
|
||||
self: "the boss",
|
||||
"lowest-health-friendly": "the lowest-health enemy ally",
|
||||
"selected-friendly": "the boss's selected ally",
|
||||
};
|
||||
|
||||
function describeEffect(effect: EnemyAbilityEffect | undefined, attack: EnemyAttackDefinition): string {
|
||||
@@ -113,7 +119,7 @@ function describeEffect(effect: EnemyAbilityEffect | undefined, attack: EnemyAtt
|
||||
return `${titleCase(attack.school)} damage to ${target} (${Number(multiplier.toFixed(2))}× boss power)`;
|
||||
}
|
||||
if (effect.kind === "heal") return `Heals ${target} for ${effect.multiplier}× boss power`;
|
||||
if (effect.kind === "dot") return `${titleCase(attack.school)} damage to ${target} every ${seconds(effect.intervalMs)} for ${effect.ticks} ticks; dispellable`;
|
||||
if (effect.kind === "dot") return `${titleCase(attack.school)} ${effect.wowPeriodicSource ? "bleed " : ""}damage to ${target} every ${seconds(effect.intervalMs)} for ${effect.ticks} ticks${effect.wowPeriodicSource ? "; ignores armor" : "; dispellable"}`;
|
||||
if (effect.kind === "leech") {
|
||||
return `Drains ${target} for ${effect.damageMultiplier}× boss power and heals the caster for ${effect.healMultiplier}× boss power`;
|
||||
}
|
||||
@@ -138,6 +144,14 @@ function describeEffect(effect: EnemyAbilityEffect | undefined, attack: EnemyAtt
|
||||
return `${damage}${titleCase(effect.mechanic)} controls ${target} for ${seconds(effect.durationMs)}`;
|
||||
}
|
||||
if (effect.kind === "transform") return `Transforms ${target} into ${titleCase(effect.form)}`;
|
||||
if (effect.kind === "triggered-shout") {
|
||||
const contract = enemyTriggeredShoutContract(effect.sourceSpellId, effect.sourceProfile);
|
||||
if (!contract) return "Controls the cast victim and nearby party members";
|
||||
const child = contract.childEffects.find((entry) => entry.kind === "control");
|
||||
return `${child?.kind === "control" ? titleCase(child.mechanic) : "Control"} on the cast victim for ${seconds(contract.childSignature.durationMs)}; fear within ${contract.targeting.parentArea.radiusYards}m of the boss for ${seconds(contract.parentSignature.durationMs)}${contract.targeting.parentArea.maximumTargets ? ` (up to ${contract.targeting.parentArea.maximumTargets} party members)` : ""}${contract.childEffects.some((entry) => entry.kind === "damage-taken") ? "; cast victim takes 15% more physical damage" : ""}`;
|
||||
}
|
||||
if (effect.kind === "weapon-capability") return `Allows ${target} to dual wield`;
|
||||
if (effect.kind === "extra-attacks") return `Grants ${effect.count} extra attacks to ${target}`;
|
||||
if (effect.kind === "pull") return `Pulls ${target} to the boss`;
|
||||
if (effect.kind === "summon") return `Summons ${effect.count} add${effect.count === 1 ? "" : "s"} (creature ${effect.creatureEntry})`;
|
||||
if (effect.kind === "call-for-help") return `Calls hostile allies within ${effect.radius}m into combat`;
|
||||
@@ -178,6 +192,7 @@ function effectFollowup(effect: EnemyAbilityEffect | undefined): string {
|
||||
}
|
||||
if (effect.kind === "leech") return "Limit the drain with mitigation and recover the health it steals.";
|
||||
if (effect.kind === "control") return "Stabilize the controlled player and remove the control if an available ability allows it.";
|
||||
if (effect.kind === "triggered-shout") return "Keep vulnerable party members beyond 8m of the boss and stabilize the cast victim through the control.";
|
||||
if (effect.kind === "target-aura") return "Watch the affected player's debuff and respond with healing or removal if the effect permits it.";
|
||||
if (effect.kind === "summon") return "Swap damage to the summoned adds and keep them away from vulnerable party members.";
|
||||
if (effect.kind === "heal") return "Interrupt the heal when possible; otherwise plan for the boss to recover health.";
|
||||
|
||||
Reference in new issue
Block a user