Release Healer Man 0.1.6

This commit is contained in:
phenom committed 2026-08-20 14:05:50 -04:00
1 parent 55cfd43d66
commit b12fb84859
96 files changed
+10874 -609

No files matched your search

+86 -6
View File
@@ -6,11 +6,68 @@ import {
import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog";
import { ROM_ALL_ABILITIES, ROM_ELITE_ABILITIES, ROM_ORDINARY_ABILITIES_BY_CLASS, type RomSkillGroup } from "./romAbilityCatalog";
import { registerAbilityAnimationLookup } from "./abilityAnimationLookup";
import type { AuraDefinition, DispelCategory } from "./combatAuras";
import type { AuraDefinition, DamageSchool, DispelCategory } from "./combatAuras";
export type ResourceType = "mana" | "rage" | "energy" | "runic-power" | "focus" | "nature-power" | "psi" | "health";
export type AbilityTarget = "hostile" | "friendly" | "self";
export type ResourceType =
| "mana"
| "rage"
| "energy"
| "runic-power"
| "focus"
| "nature-power"
| "psi"
| "health"
| "holy-power"
| "chi"
| "soul-power"
| `custom:${string}`;
export type AbilityTarget = "hostile" | "friendly" | "any" | "self";
export type AbilityCastMode = "instant" | "cast" | "channel";
export type AbilityTargetShape = "unit" | "circle" | "cone" | "chain" | "ground";
export interface AbilityTargetingRules {
readonly shape: AbilityTargetShape;
readonly requiresLineOfSight?: boolean;
readonly requiresFacing?: boolean;
readonly requiresBehindTarget?: boolean;
readonly attackArcRadians?: number;
readonly radius?: number;
readonly maximumTargets?: number;
readonly jumpRange?: number;
readonly groundRange?: number;
}
export interface AbilityCastRules {
readonly school?: DamageSchool;
readonly canCastWhileMoving?: boolean;
readonly pushbackImmune?: boolean;
/** A fraction from zero to one, applied independently to each pushback hit. */
readonly pushbackResistance?: number;
}
export interface AbilityRuneCost {
readonly blood?: number;
readonly frost?: number;
readonly unholy?: number;
}
export interface AbilityAiHints {
readonly categories: readonly (
| "damage"
| "execute"
| "heal"
| "emergency-heal"
| "area-heal"
| "mitigation"
| "taunt"
| "interrupt"
| "dispel"
| "resurrection"
| "control"
| "debuff"
)[];
readonly priority?: number;
}
export type MobStatusKind =
| "slow"
| "stun"
@@ -63,6 +120,8 @@ export interface AbilityAmountScaling {
readonly basePoints?: number;
readonly dieSides?: number;
readonly pointsPerLevel?: number;
/** Additional power coefficient gained per source skill level. */
readonly coefficientPerLevel?: number;
readonly bonusPowerCoefficient?: number;
readonly sourceLevel?: number;
readonly maxScalingLevel?: number;
@@ -77,15 +136,17 @@ export type AbilityEffect =
| ({ readonly kind: "hot"; readonly coefficient: number; readonly ticks: number; readonly intervalMs: number } & AbilityAmountScaling)
| { readonly kind: "resurrection"; readonly percentMaxHealth: number }
| { readonly kind: "summon"; readonly creatureId: number; readonly coefficient: number; readonly durationMs: number }
| { readonly kind: "resource"; readonly amount: number; readonly resource?: ResourceType }
| { readonly kind: "resource"; readonly amount: number; readonly resource?: ResourceType; readonly percentage?: boolean }
| { readonly kind: "combo"; readonly amount: number }
| { readonly kind: "taunt"; readonly durationMs: number; readonly maxTargets?: number }
| { readonly kind: "status"; readonly status: MobStatusKind; readonly durationMs: number; readonly magnitude?: number; readonly maxTargets?: number }
| { readonly kind: "status"; readonly status: MobStatusKind; readonly durationMs: number; readonly magnitude?: number; readonly maxTargets?: number; readonly breakOnDamage?: boolean }
| {
readonly kind: "apply-aura";
readonly aura: AuraDefinition;
/** Some hostile spells apply their beneficial rider to the caster. */
readonly recipient?: "ability-target" | "caster";
/** Party/raid area auras are applied to the player and every active party member. */
readonly scope?: "target" | "party";
readonly control?: AbilityAuraControl;
readonly sourceEffectType: number;
readonly sourceAuraType: number;
@@ -109,6 +170,7 @@ export type AbilityEffect =
readonly kind: "threat";
readonly mode: "flat" | "percent" | "redirect";
readonly amount: number;
readonly recipient?: "caster" | "ability-target";
}
| {
readonly kind: "movement";
@@ -119,7 +181,14 @@ export type AbilityEffect =
| { readonly kind: "pet"; readonly action: "summon" | "call" | "recall" | "dismiss" | "resurrect" | "feed" | "tame"; readonly creatureId?: number }
| { readonly kind: "totem"; readonly action: "destroy-all" }
| { readonly kind: "rune"; readonly action: "activate"; readonly count: number }
| { readonly kind: "cooldown-reset"; readonly mode: "reset" | "reduce"; readonly abilityName?: string; readonly amountMs?: number }
| {
readonly kind: "cooldown-reset";
readonly mode: "reset" | "reduce";
readonly abilityName?: string;
readonly amountMs?: number;
/** Fraction of the target ability's remaining cooldown removed at execution time. */
readonly amountPercent?: number;
}
| { readonly kind: "trigger-spell"; readonly spellId: number; readonly withValue?: number }
| {
/** A known combat-side DBC script hook that requires a spell-specific handler. */
@@ -140,6 +209,7 @@ export type AbilityEffect =
}
| {
readonly kind: "utility";
readonly action?: "create-item" | "open-lock" | "portal" | "weapon-enchant" | "pickpocket" | "farsight" | "class-script";
readonly effectType: number;
readonly auraType: number;
readonly miscValue: number;
@@ -165,6 +235,9 @@ export interface AbilityRankDefinition {
readonly cost: AbilityCost;
readonly costs?: readonly AbilityCost[];
readonly effects: readonly AbilityEffect[];
readonly targeting?: AbilityTargetingRules;
readonly castRules?: AbilityCastRules;
readonly runeCost?: AbilityRuneCost;
}
export interface AbilityDefinition {
@@ -188,6 +261,10 @@ export interface AbilityDefinition {
readonly cost: AbilityCost;
readonly costs?: readonly AbilityCost[];
readonly effects: readonly AbilityEffect[];
readonly targeting?: AbilityTargetingRules;
readonly castRules?: AbilityCastRules;
readonly runeCost?: AbilityRuneCost;
readonly ai?: AbilityAiHints;
readonly passive?: boolean;
readonly source?: "core" | "wow335-progression" | "ascension-progression" | "coa-starter" | "coa-progression" | "coa-tree" | "runewaker";
readonly romSkillGroup?: RomSkillGroup;
@@ -793,6 +870,9 @@ export function abilityAtLevel(
cost: rank.cost,
costs: rank.costs ?? [rank.cost],
effects: rank.effects,
targeting: rank.targeting ?? ability.targeting,
castRules: rank.castRules ?? ability.castRules,
runeCost: rank.runeCost ?? ability.runeCost,
};
}