Files
healer-man/src/game/wow335RogueTalentRuntime.ts
T
2026-10-02 10:38:12 -04:00

52 lines
2.2 KiB
TypeScript

import type { AbilityEffect } from "./abilityCatalog";
import type { AuraDefinition } from "./combatAuras";
export const WOW335_ROGUE_IMPROVED_KICK_TAG = "wow335-rogue-improved-kick";
export const WOW335_ROGUE_IMPROVED_KICK_TALENT_ID = "talent-206";
export const WOW335_ROGUE_UNFAIR_ADVANTAGE_COOLDOWN_TAG = "wow335-rogue-unfair-advantage-cooldown";
export const WOW335_ROGUE_UNFAIR_ADVANTAGE_DAMAGE_ID = "wow335-rogue-unfair-advantage";
/** Generated talent 2073 returns 50%/100% main-hand weapon damage at ranks 1/2. */
export function wow335RogueUnfairAdvantageDamageMultiplierForRank(rank: number): number {
const safeRank = Math.max(0, Math.min(2, Math.trunc(Number.isFinite(rank) ? rank : 0)));
return safeRank / 2;
}
const IMPROVED_KICK_CAPSTONE_AURA: AuraDefinition = {
id: WOW335_ROGUE_IMPROVED_KICK_TAG,
name: "Improved Kick",
description: "A successful Kick interrupt restores 40 Energy and increases attack speed by 35% for 6 seconds.",
disposition: "buff",
durationMs: 6_000,
stackBehavior: "refresh",
utilityTags: [WOW335_ROGUE_IMPROVED_KICK_TAG],
modifiers: [
{ kind: "stat", stat: "melee-haste", operation: "flat", value: 35 },
{ kind: "stat", stat: "ranged-haste", operation: "flat", value: 35 },
],
};
/** Improved Kick silences on a 50%/100% rank chance for the stock two-rank talent. */
export function wow335RogueImprovedKickSilenceDurationMs(rank: number, roll: number): number {
const safeRank = Math.max(0, Math.min(2, Math.trunc(Number.isFinite(rank) ? rank : 0)));
const safeRoll = Number.isFinite(roll) ? Math.max(0, Math.min(1, roll)) : 1;
const chance = [0, 0.5, 1][safeRank] ?? 0;
return chance > 0 && safeRoll < chance ? 2_000 : 0;
}
/** Generated talent 206 has a two-rank capstone with this success-only rider. */
export function wow335RogueImprovedKickAuraEffectForRank(
rank: number,
): Extract<AbilityEffect, { kind: "apply-aura" }> | null {
if (Math.max(0, Math.min(2, Math.trunc(Number.isFinite(rank) ? rank : 0))) < 2) return null;
return {
kind: "apply-aura",
recipient: "caster",
aura: IMPROVED_KICK_CAPSTONE_AURA,
sourceEffectType: -1,
sourceAuraType: -1,
miscValue: 0,
triggerSpellId: 0,
};
}