forked from phenom/healer-man
Release Healer Man 0.1.21
This commit is contained in:
1 parent
699fc858c9
commit
f6f2375145
210 files changed
+976039
-6247
No files matched your search
@@ -1,3 +1,8 @@
|
||||
import {
|
||||
normalizeRunewakerDamageFormula,
|
||||
type RunewakerDamageFormulaSource,
|
||||
} from "./runewakerCombatFormula";
|
||||
|
||||
export type EnemyAttackAnimation = "attack" | "cast";
|
||||
export type EnemyAttackDelivery = "melee" | "projectile" | "area";
|
||||
export type EnemyAttackTarget =
|
||||
@@ -52,7 +57,15 @@ export type EnemyAbilityEffect =
|
||||
readonly durationMs: number;
|
||||
}
|
||||
| { readonly kind: "transform"; readonly form: string }
|
||||
| { readonly kind: "summon"; readonly creatureEntry: number; readonly count: number }
|
||||
| {
|
||||
readonly kind: "summon";
|
||||
readonly creatureEntry: number;
|
||||
readonly count: number;
|
||||
/** Optional stable namespace for content-authored summoned entities. */
|
||||
readonly entityId?: string;
|
||||
/** Optional owner group used by encounter counters and reset cleanup. */
|
||||
readonly spawnGroupId?: string;
|
||||
}
|
||||
| { readonly kind: "call-for-help"; readonly radius: number }
|
||||
| { readonly kind: "encounter-event"; readonly eventId: string };
|
||||
|
||||
@@ -102,6 +115,8 @@ export interface EnemyAttackDefinition {
|
||||
readonly repeatCooldownMs?: readonly [minimum: number, maximum: number];
|
||||
readonly maximumCasts?: number;
|
||||
readonly damageMultiplier: number;
|
||||
/** Source-shaped RuneWaker formula evidence for imported damage mechanics. */
|
||||
readonly runewakerFormula?: RunewakerDamageFormulaSource;
|
||||
readonly radius?: number;
|
||||
readonly telegraph?: EnemyAttackTelegraph;
|
||||
readonly effect?: EnemyAbilityEffect;
|
||||
@@ -236,6 +251,7 @@ export function normalizeEnemyAttack(
|
||||
Math.round(finiteAtLeast(value.castTimeMs, inferredCastTimeMs, 0)),
|
||||
telegraph?.warningMs ?? 0,
|
||||
);
|
||||
const runewakerFormula = normalizeRunewakerDamageFormula(value.runewakerFormula);
|
||||
return Object.freeze({
|
||||
id: value.id.trim() || fallback.id,
|
||||
name: value.name.trim() || fallback.name,
|
||||
@@ -260,6 +276,7 @@ export function normalizeEnemyAttack(
|
||||
? { maximumCasts: value.maximumCasts }
|
||||
: {}),
|
||||
damageMultiplier: finiteAtLeast(value.damageMultiplier, fallback.damageMultiplier, 0),
|
||||
...(runewakerFormula ? { runewakerFormula } : {}),
|
||||
...(value.radius !== undefined
|
||||
? { radius: finiteAtLeast(value.radius, 0, 0) }
|
||||
: {}),
|
||||
|
||||
Reference in new issue
Block a user