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 | 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, }; }