Update Healer Man server
This commit is contained in:
1 parent
4c768fbec6
commit
b16821e92e
330 files changed
+35406
-1760
No files matched your search
@@ -0,0 +1,36 @@
|
||||
import { WOW335_TALENT_NODES } from "./wow335Talents.generated";
|
||||
|
||||
export const WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID = "talent-1893";
|
||||
export const WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID = "talent-2195";
|
||||
|
||||
const CRITICAL_BLOCK_SOURCE = WOW335_TALENT_NODES.find((node) => (
|
||||
node.id === WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID
|
||||
));
|
||||
|
||||
function normalizedRank(rank: number): number {
|
||||
return Number.isFinite(rank) ? Math.max(0, Math.min(3, Math.trunc(rank))) : 0;
|
||||
}
|
||||
|
||||
/** Reads the generated tooltip's rank-specific extra reduction on a blocked hit. */
|
||||
export function wow335WarriorCriticalBlockReductionPercent(rank: number): number {
|
||||
const safeRank = normalizedRank(rank);
|
||||
if (safeRank === 0) return 0;
|
||||
const description = CRITICAL_BLOCK_SOURCE?.rankDescriptions[safeRank - 1];
|
||||
const value = Number(description?.match(/reduce the damage you take from the blocked hit by (\d+)%/i)?.[1]);
|
||||
return Number.isFinite(value) ? value : 0;
|
||||
}
|
||||
|
||||
/** Applies the generated reduction to post-block damage when source exclusions allow it. */
|
||||
export function wow335WarriorCriticalBlockDamage(
|
||||
postBlockDamage: number,
|
||||
rank: number,
|
||||
blocked: boolean,
|
||||
attackerIsPlayer: boolean,
|
||||
touchedByTheLightRank: number,
|
||||
): number {
|
||||
if (!Number.isFinite(postBlockDamage)) return 0;
|
||||
const damage = Math.max(0, postBlockDamage);
|
||||
if (!blocked || attackerIsPlayer || normalizedRank(touchedByTheLightRank) > 0) return Math.round(damage);
|
||||
const reductionPercent = wow335WarriorCriticalBlockReductionPercent(rank);
|
||||
return Math.round(damage * (1 - reductionPercent / 100));
|
||||
}
|
||||
Reference in new issue
Block a user