Release Healer Man 0.1.41

This commit is contained in:
phenom committed 2026-09-13 15:09:35 -04:00
1 parent 197a64117c
commit c3f8a69b51
42 files changed
+886 -127

No files matched your search

+11 -3
View File
@@ -35,6 +35,8 @@ export async function runDungeonBossBenchmark(
let now = 1_000_000;
const restoreClock = installCombatClock(() => now);
let playerDamage = 0; let partyDamage = 0; let incomingDamage = 0; let healing = 0; let casts = 0;
let selfHealing = 0; let allyHealing = 0;
const healingByAbility: Record<string, number> = {};
const damageByAbility: Record<string, number> = {};
const stop = subscribeCombatEvents((event) => {
if (event.kind === "damage" && event.targetActorId === bossId) {
@@ -44,7 +46,13 @@ export async function runDungeonBossBenchmark(
damageByAbility[key] = (damageByAbility[key] ?? 0) + event.effectiveAmount;
}
if (event.kind === "damage" && event.sourceActorId === bossId) incomingDamage += event.effectiveAmount;
if (event.kind === "healing") healing += event.effectiveAmount;
if (event.kind === "healing") {
healing += event.effectiveAmount;
if (event.targetActorId === PLAYER_AGGRO_ID) selfHealing += event.effectiveAmount;
else allyHealing += event.effectiveAmount;
const key = `${event.sourceActorId}:${event.abilityId ?? "unknown"}:${event.targetActorId}`;
healingByAbility[key] = (healingByAbility[key] ?? 0) + event.effectiveAmount;
}
});
try {
const combat = useCombatStore.getState();
@@ -78,7 +86,7 @@ export async function runDungeonBossBenchmark(
if (mob.dead || (mechanics && state.health <= 0)) {
return { seconds: mob.dead ? ((mob.diedAt ?? now) - 1_000_000) / 1000 : null,
elapsedSeconds: elapsed / 1000, outcome: mob.dead ? "defeated" : "player-death",
maxHealth: scaling.maxHealth, playerDamage, partyDamage, incomingDamage, healing, casts, damageByAbility,
maxHealth: scaling.maxHealth, playerDamage, partyDamage, incomingDamage, healing, selfHealing, allyHealing, healingByAbility, casts, damageByAbility,
playerAlive: state.health > 0, deaths: usePartyStore.getState().members.filter((member) => member.health <= 0).length,
attacks: mob.attackRevision, specialization: specialization?.displayName,
party: usePartyStore.getState().members.map((member) => `${member.classId}:${member.specialization}`) };
@@ -86,7 +94,7 @@ export async function runDungeonBossBenchmark(
}
return { seconds: null, elapsedSeconds: scenario.durationMs / 1000, outcome: "timeout",
maxHealth: scaling.maxHealth, remainingHealth: useCombatStore.getState().mobs[bossId].health,
playerDamage, partyDamage, incomingDamage, healing, casts, damageByAbility,
playerDamage, partyDamage, incomingDamage, healing, selfHealing, allyHealing, healingByAbility, casts, damageByAbility,
playerAlive: useCombatStore.getState().health > 0,
deaths: usePartyStore.getState().members.filter((member) => member.health <= 0).length,
attacks: useCombatStore.getState().mobs[bossId].attackRevision,