forked from phenom/healer-man
Release Healer Man 0.1.6
This commit is contained in:
1 parent
55cfd43d66
commit
b12fb84859
96 files changed
+10874
-609
No files matched your search
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user