forked from phenom/healer-man
Release Healer Man 0.1.49
This commit is contained in:
1 parent
39425f2494
commit
612170afd0
91 files changed
+2278
-263
No files matched your search
@@ -1,6 +1,7 @@
|
||||
import { baseClassFor, type BaseClassId, type ClassId } from "../app/characterCatalog";
|
||||
import type { AbilityDefinition } from "./abilityCatalog";
|
||||
import { abilityAnimationById } from "./abilityAnimationLookup";
|
||||
import type { CombatPresentationEvent } from "./combatPresentation";
|
||||
import type { CharacterVerticalMotion } from "./playerJump";
|
||||
|
||||
export type CharacterCombatAnimationKind =
|
||||
@@ -53,8 +54,8 @@ const MELEE_CLASSES = new Set<ClassId>([
|
||||
]);
|
||||
|
||||
const CLASS_ATTACK_IDS: Readonly<Record<BaseClassId, readonly number[]>> = {
|
||||
warrior: [57, 17, 58, 18, 16, 118],
|
||||
paladin: [57, 17, 59, 16, 118],
|
||||
warrior: [17, 18, 16, 118, 57, 58],
|
||||
paladin: [17, 18, 16, 118, 59, 57],
|
||||
hunter: [46, 47, 49, 107, 16],
|
||||
rogue: [85, 88, 87, 117, 57, 17, 95, 16],
|
||||
priest: [53, 54, 32, 2, 16],
|
||||
@@ -65,6 +66,24 @@ const CLASS_ATTACK_IDS: Readonly<Record<BaseClassId, readonly number[]>> = {
|
||||
druid: [53, 54, 32, 118, 16],
|
||||
};
|
||||
|
||||
/** Convert authoritative party combat presentation into one render event. */
|
||||
export function characterCombatAnimationForPresentation(
|
||||
event: CombatPresentationEvent,
|
||||
revision: number,
|
||||
): CharacterCombatAnimationEvent | null {
|
||||
if (event.actorGroup !== "party") return null;
|
||||
if (event.phase === "cast-start") {
|
||||
return { revision, kind: "ability-start", abilityId: event.abilityId };
|
||||
}
|
||||
if (event.phase === "cast-cancel") {
|
||||
return { revision, kind: "ability-cancel", abilityId: event.abilityId };
|
||||
}
|
||||
if (event.phase !== "release") return null;
|
||||
return event.abilityId === "party-auto-attack"
|
||||
? { revision, kind: "attack" }
|
||||
: { revision, kind: "ability-release", abilityId: event.abilityId };
|
||||
}
|
||||
|
||||
/** Parse the names emitted by wow.export without depending on Three.js. */
|
||||
export function parseWoWAnimationName(name: string): ParsedWoWAnimationName {
|
||||
const match = name.match(/^\s*(.*?)\s*\(ID\s+(\d+)\s+variation\s+(\d+)\)\s*$/i);
|
||||
|
||||
Reference in new issue
Block a user