Skip to content

Commit

Permalink
Merge pull request wowsims#430 from wowsims/raid-vis-fixes
Browse files Browse the repository at this point in the history
Resistance Cap update and Raid visualisations fixes
  • Loading branch information
rosenrusinov authored May 12, 2024
2 parents 986b6c9 + 7f05c1b commit d1da337
Show file tree
Hide file tree
Showing 20 changed files with 143 additions and 63 deletions.
Binary file modified assets/database/db.bin
Binary file not shown.
8 changes: 4 additions & 4 deletions assets/database/db.json
Original file line number Diff line number Diff line change
Expand Up @@ -10127,10 +10127,10 @@
],
"encounters":[
{"path":"Default/Raid Target","targets":[{"path":"Default/Raid Target","target":{"id":31146,"name":"Raid Target","level":88,"mobType":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,120016403,0,0,0,0,0,0,0],"minBaseDamage":210000,"damageSpread":0.4,"swingSpeed":2.5}}]},
{"path":"Blackwings Descent/Magmaw 10","targets":[{"path":"Blackwings Descent/Magmaw 10","target":{"id":41570,"name":"Magmaw 10","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,26798304,0,0,0,0,0,0,0],"minBaseDamage":110000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]},
{"path":"Blackwings Descent/Magmaw 25","targets":[{"path":"Blackwings Descent/Magmaw 25","target":{"id":41571,"name":"Magmaw 25","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,81082048,0,0,0,0,0,0,0],"minBaseDamage":150000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]},
{"path":"Blackwings Descent/Magmaw 10 H","targets":[{"path":"Blackwings Descent/Magmaw 10 H","target":{"id":41572,"name":"Magmaw 10 H","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,39200000,0,0,0,0,0,0,0],"minBaseDamage":150000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]},
{"path":"Blackwings Descent/Magmaw 25 H","targets":[{"path":"Blackwings Descent/Magmaw 25 H","target":{"id":41573,"name":"Magmaw 25 H","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,120016403,0,0,0,0,0,0,0],"minBaseDamage":210000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]}
{"path":"Blackwing Descent/Magmaw 10","targets":[{"path":"Blackwing Descent/Magmaw 10","target":{"id":41570,"name":"Magmaw 10","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,26798304,0,0,0,0,0,0,0],"minBaseDamage":110000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]},
{"path":"Blackwing Descent/Magmaw 25","targets":[{"path":"Blackwing Descent/Magmaw 25","target":{"id":41571,"name":"Magmaw 25","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,81082048,0,0,0,0,0,0,0],"minBaseDamage":150000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]},
{"path":"Blackwing Descent/Magmaw 10 H","targets":[{"path":"Blackwing Descent/Magmaw 10 H","target":{"id":41572,"name":"Magmaw 10 H","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,39200000,0,0,0,0,0,0,0],"minBaseDamage":150000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]},
{"path":"Blackwing Descent/Magmaw 25 H","targets":[{"path":"Blackwing Descent/Magmaw 25 H","target":{"id":41573,"name":"Magmaw 25 H","level":88,"mobType":1,"stats":[0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,11977,0,0,0,0,0,0,120016403,0,0,0,0,0,0,0],"minBaseDamage":210000,"damageSpread":0.4,"swingSpeed":2.5,"targetInputs":[{"inputType":1,"label":"Impale Reaction Time","tooltip":"How long will the Raid take to Impale Head in Seconds. (After the initial 10s)","numberValue":5}]}}]}
],
"glyphIds":[
{"itemId":40919,"spellId":54830},
Expand Down
7 changes: 2 additions & 5 deletions sim/core/spell_resistances.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,16 +91,13 @@ func (at *AttackTable) GetArmorDamageModifier(spell *Spell) float64 {
func (unit *Unit) averageResist(school SpellSchool, attacker *Unit) float64 {
resistance := unit.GetStat(school.ResistanceStat()) - attacker.stats[stats.SpellPenetration]
if resistance <= 0 {

// https://wowpedia.fandom.com/wiki/Resistance?oldid=6512353
// With the release of cataclysm, level based resistances seem to have been removed
return 0
}

c := 5 * float64(attacker.Level)
if attacker.Type == EnemyUnit && attacker.Level-unit.Level >= 3 {
c = 510 // other values TBD, but not very useful in practice
}
level := float64(unit.Level)
c := 150 + (level-60)*(level-67.5)

return resistance / (c + resistance)
}
Expand Down
12 changes: 6 additions & 6 deletions sim/core/spell_resistances_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import (
func Test_PartialResistsVsPlayer(t *testing.T) {
attacker := &Unit{
Type: EnemyUnit,
Level: 83,
Level: 88,
stats: stats.Stats{},
}
defender := &Unit{
Type: PlayerUnit,
Level: 80,
Level: 85,
stats: stats.Stats{},
}

Expand Down Expand Up @@ -49,7 +49,7 @@ func Test_PartialResistsVsPlayer(t *testing.T) {
chance = th.cumulativeChance
}

expectedAr := float64(resist) / (510 + float64(resist))
expectedAr := float64(resist) / (587.5 + float64(resist))

if math.Abs(resultingAr-expectedAr) > 1e-9 {
t.Errorf("resist = %d, thresholds = %s, resultingAr = %.2f%%, expectedAr = %.2f%%", resist, thresholds, resultingAr, expectedAr)
Expand Down Expand Up @@ -81,12 +81,12 @@ func Test_PartialResistsVsPlayer(t *testing.T) {
func Test_PartialResistsVsBoss(t *testing.T) {
attacker := &Unit{
Type: PlayerUnit,
Level: 80,
Level: 85,
stats: stats.Stats{},
}
defender := &Unit{
Type: EnemyUnit,
Level: 83,
Level: 88,
stats: stats.Stats{},
}

Expand Down Expand Up @@ -120,7 +120,7 @@ func Test_PartialResistsVsBoss(t *testing.T) {
}

// no more level based resists
expectedAr := resist / (400 + resist)
expectedAr := resist / (724 + resist)

if math.Abs(resultingAr-expectedAr) > 1e-9 {
t.Errorf("resist = %.2f, thresholds = %s, resultingAr = %.2f%%, expectedAr = %.2f%%", resist, thresholds, resultingAr, expectedAr)
Expand Down
2 changes: 1 addition & 1 deletion sim/encounters/bwd/bwd.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package bwd

func Register() {
addMagmaw("Blackwings Descent")
addMagmaw("Blackwing Descent")
}
9 changes: 5 additions & 4 deletions sim/encounters/bwd/magmaw_ai.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,8 @@ func makeMagmawAI(raidSize int, isHeroic bool) core.TargetAI {
type MagmawAI struct {
Target *core.Target

canAct bool
canAct bool
lastMangleTarget *core.Unit

raidSize int
isHeroic bool
Expand Down Expand Up @@ -467,11 +468,11 @@ func (ai *MagmawAI) registerSpells() {
// 25080,
// }[scalingIndex]

var lastMangleTarget *core.Unit
ai.mangle = ai.Target.GetOrRegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 89773},
SpellSchool: core.SpellSchoolPhysical,
ProcMask: core.ProcMaskEmpty,
Flags: core.SpellFlagApplyArmorReduction,

DamageMultiplier: 1,

Expand All @@ -496,7 +497,7 @@ func (ai *MagmawAI) registerSpells() {

doDamage := !isIndividualSim || ai.Target.Env.Raid.Parties[0].Players[0].GetCharacter().Unit.Metrics.IsTanking()
if doDamage {
ai.swelteringArmor.Get(lastMangleTarget).Activate(sim)
ai.swelteringArmor.Get(ai.lastMangleTarget).Activate(sim)
}
},
},
Expand All @@ -514,7 +515,7 @@ func (ai *MagmawAI) registerSpells() {
},

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
lastMangleTarget = target
ai.lastMangleTarget = target
doDamage := !isIndividualSim || ai.Target.Env.Raid.Parties[0].Players[0].GetCharacter().Unit.Metrics.IsTanking()
if doDamage {
baseDamage := spell.Unit.MHWeaponDamage(sim, spell.MeleeAttackPower()) * 1.5
Expand Down
2 changes: 1 addition & 1 deletion ui/core/components/detailed_results/aura_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export class AuraMetricsTable extends MetricsTable<AuraMetrics> {
if (this.useDebuffs) {
return AuraMetrics.groupById(resultData.result.getDebuffMetrics(resultData.filter));
} else {
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
Expand Down
2 changes: 1 addition & 1 deletion ui/core/components/detailed_results/cast_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class CastMetricsTable extends MetricsTable<ActionMetrics> {

getGroupedMetrics(resultData: SimResultData): Array<Array<ActionMetrics>> {
//const actionMetrics = resultData.result.getActionMetrics(resultData.filter);
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
Expand Down
4 changes: 2 additions & 2 deletions ui/core/components/detailed_results/dtps_melee_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,14 @@ export class DtpsMeleeMetricsTable extends MetricsTable<ActionMetrics> {
}

getGroupedMetrics(resultData: SimResultData): Array<Array<ActionMetrics>> {
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
const player = players[0];

const targets = resultData.result.getTargets(resultData.filter);
const targetActions = targets.map(target => target.getMeleeActions().map(action => action.forTarget(resultData.filter))).flat();
const targetActions = targets.map(target => target.getMeleeActions().map(action => action.forTarget({player: player.unitIndex}))).flat();
const actionGroups = ActionMetrics.groupById(targetActions);

return actionGroups;
Expand Down
4 changes: 2 additions & 2 deletions ui/core/components/detailed_results/dtps_spell_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@ export class DtpsSpellMetricsTable extends MetricsTable<ActionMetrics> {
}

getGroupedMetrics(resultData: SimResultData): Array<Array<ActionMetrics>> {
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
const player = players[0];

const targets = resultData.result.getTargets(resultData.filter);
const targetActions = targets.map(target => target.getSpellActions().map(action => action.forTarget(resultData.filter))).flat();
const targetActions = targets.map(target => target.getSpellActions().map(action => action.forTarget({player: player.unitIndex}))).flat();
const actionGroups = ActionMetrics.groupById(targetActions);

return actionGroups;
Expand Down
2 changes: 1 addition & 1 deletion ui/core/components/detailed_results/healing_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export class HealingMetricsTable extends MetricsTable<ActionMetrics> {
}

getGroupedMetrics(resultData: SimResultData): Array<Array<ActionMetrics>> {
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
Expand Down
2 changes: 1 addition & 1 deletion ui/core/components/detailed_results/melee_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ export class MeleeMetricsTable extends MetricsTable<ActionMetrics> {
}

getGroupedMetrics(resultData: SimResultData): Array<Array<ActionMetrics>> {
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
Expand Down
41 changes: 31 additions & 10 deletions ui/core/components/detailed_results/player_damage.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import tippy from 'tippy.js';

import { SimResult, SimResultFilter,UnitMetrics } from '../../proto_utils/sim_result.js';
import { maxIndex } from '../../utils.js';
import { maxIndex, sum } from '../../utils.js';
import { ColumnSortType, MetricsTable } from './metrics_table.js';
import { ResultComponent, ResultComponentConfig, SimResultData } from './result_component.js';
import { ResultsFilter } from './results_filter.js';
Expand Down Expand Up @@ -45,15 +45,17 @@ export class PlayerDamageMetricsTable extends MetricsTable<UnitMetrics> {
},
});

const playerActions = player.getPlayerAndPetActions().map(action => action.forTarget(this.resultsFilter.getFilter())).flat();
const playerDps = sum(playerActions.map(action => action.dps))
cellElem.innerHTML = `
<div class="player-damage-percent">
<span>${(player.dps.avg / this.raidDps * 100).toFixed(2)}%</span>
<span>${(playerDps / this.raidDps * 100).toFixed(2)}%</span>
</div>
<div class="player-damage-bar-container">
<div class="player-damage-bar bg-${player.classColor}" style="width:${player.dps.avg / this.maxDps * 100}%"></div>
<div class="player-damage-bar bg-${player.classColor}" style="width:${playerDps / this.maxDps * 100}%"></div>
</div>
<div class="player-damage-total">
<span>${(player.totalDamage / 1000).toFixed(1)}k</span>
<span>${(playerDps * this.getLastSimResult().result.duration / 1000).toFixed(1)}k</span>
</div>
`;
},
Expand All @@ -63,8 +65,16 @@ export class PlayerDamageMetricsTable extends MetricsTable<UnitMetrics> {
tooltip: 'Damage / Encounter Duration',
columnClass: 'dps-cell',
sort: ColumnSortType.Descending,
getValue: (metric: UnitMetrics) => metric.dps.avg,
getDisplayString: (metric: UnitMetrics) => metric.dps.avg.toFixed(1),
getValue: (player: UnitMetrics) => {
const playerActions = player.getPlayerAndPetActions().map(action => action.forTarget(this.resultsFilter.getFilter())).flat();
const playerDps = sum(playerActions.map(action => action.dps))
return playerDps
},
getDisplayString: (player: UnitMetrics) => {
const playerActions = player.getPlayerAndPetActions().map(action => action.forTarget(this.resultsFilter.getFilter())).flat();
const playerDps = sum(playerActions.map(action => action.dps))
return playerDps.toFixed(1)
},
},
]);
this.resultsFilter = resultsFilter;
Expand All @@ -75,16 +85,27 @@ export class PlayerDamageMetricsTable extends MetricsTable<UnitMetrics> {
customizeRowElem(player: UnitMetrics, rowElem: HTMLElement) {
rowElem.classList.add('player-damage-row');
rowElem.addEventListener('click', event => {
this.resultsFilter.setPlayer(this.getLastSimResult().eventID, player.unitIndex);
this.resultsFilter.setPlayer(this.getLastSimResult().eventID, player.index);
});
}

getGroupedMetrics(resultData: SimResultData): Array<Array<UnitMetrics>> {
const players = resultData.result.getPlayers(resultData.filter);

this.raidDps = resultData.result.raidMetrics.dps.avg;
const maxDpsIndex = maxIndex(players.map(player => player.dps.avg))!;
this.maxDps = players[maxDpsIndex].dps.avg;
//this.raidDps = resultData.result.raidMetrics.dps.avg;
//const maxDpsIndex = maxIndex(players.map(player => player.dps.avg))!;
//this.maxDps = players[maxDpsIndex].dps.avg;

const targetActions = players.map(player => player.getPlayerAndPetActions().map(action => action.forTarget(resultData.filter))).flat();

this.raidDps = sum(targetActions.map(action => action.dps));
const maxDpsIndex = maxIndex(players.map(player => {
const targetActions = player.getPlayerAndPetActions().map(action => action.forTarget(resultData.filter)).flat();
return sum(targetActions.map(action => action.dps));
}))!;

const maxDpsTargetActions = players[maxDpsIndex].getPlayerAndPetActions().map(action => action.forTarget(resultData.filter)).flat();
this.maxDps = sum(maxDpsTargetActions.map(action => action.dps));

return players.map(player => [player]);
}
Expand Down
43 changes: 34 additions & 9 deletions ui/core/components/detailed_results/player_damage_taken.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,18 @@ export class PlayerDamageTakenMetricsTable extends MetricsTable<UnitMetrics> {
},
});

const targets = this.resultData!.result.getTargets(this.resultData!.filter);
const targetActions = targets.map(target => target.getMeleeActions().concat(target.getSpellActions()).map(action => action.forTarget({ player: player.unitIndex }))).flat();
const playerDtps = sum(targetActions.map(action => action.dps))
cellElem.innerHTML = `
<div class="player-damage-percent">
<span>${(player.dtps.avg / this.raidDtps * 100).toFixed(2)}%</span>
<span>${(playerDtps / this.raidDtps * 100).toFixed(2)}%</span>
</div>
<div class="player-damage-bar-container">
<div class="player-damage-bar bg-${player.classColor}" style="width:${player.dtps.avg / this.maxDtps * 100}%"></div>
<div class="player-damage-bar bg-${player.classColor}" style="width:${playerDtps / this.maxDtps * 100}%"></div>
</div>
<div class="player-damage-total">
<span>${(player.totalDamageTaken / 1000).toFixed(1)}k</span>
<span>${(playerDtps * this.resultData!.result.duration / 1000).toFixed(1)}k</span>
</div>
`;
},
Expand All @@ -71,8 +74,18 @@ export class PlayerDamageTakenMetricsTable extends MetricsTable<UnitMetrics> {
tooltip: 'Damage Taken / Encounter Duration',
columnClass: 'dps-cell',
sort: ColumnSortType.Descending,
getValue: (metric: UnitMetrics) => metric.dtps.avg,
getDisplayString: (metric: UnitMetrics) => metric.dtps.avg.toFixed(1),
getValue: (player: UnitMetrics) => {
const targets = this.resultData!.result.getTargets(this.resultData!.filter);
const targetActions = targets.map(target => target.getMeleeActions().concat(target.getSpellActions()).map(action => action.forTarget({ player: player.unitIndex }))).flat();
const playerDtps = sum(targetActions.map(action => action.dps))
return playerDtps
},
getDisplayString: (player: UnitMetrics) => {
const targets = this.resultData!.result.getTargets(this.resultData!.filter);
const targetActions = targets.map(target => target.getMeleeActions().concat(target.getSpellActions()).map(action => action.forTarget({ player: player.unitIndex }))).flat();
const playerDtps = sum(targetActions.map(action => action.dps))
return playerDtps.toFixed(1)
},
},
]);
this.resultsFilter = resultsFilter;
Expand All @@ -83,17 +96,29 @@ export class PlayerDamageTakenMetricsTable extends MetricsTable<UnitMetrics> {
customizeRowElem(player: UnitMetrics, rowElem: HTMLElement) {
rowElem.classList.add('player-damage-row');
rowElem.addEventListener('click', event => {
this.resultsFilter.setPlayer(this.getLastSimResult().eventID, player.unitIndex);
this.resultsFilter.setPlayer(this.getLastSimResult().eventID, player.index);
});
}

getGroupedMetrics(resultData: SimResultData): Array<Array<UnitMetrics>> {
this.resultData = resultData;
const players = resultData.result.getPlayers(resultData.filter);

this.raidDtps = sum(players.map(player => player.dtps.avg));
const maxDpsIndex = maxIndex(players.map(player => player.dtps.avg))!;
this.maxDtps = players[maxDpsIndex].dtps.avg;
//this.raidDtps = sum(players.map(player => player.dtps.avg));
//const maxDpsIndex = maxIndex(players.map(player => player.dtps.avg))!;
//this.maxDtps = players[maxDpsIndex].dtps.avg;

const targets = resultData.result.getTargets(resultData.filter);
const targetActions = targets.map(target => target.getMeleeActions().concat(target.getSpellActions()).map(action => action.forTarget(resultData.filter))).flat();

this.raidDtps = sum(targetActions.map(action => action.dps));
const maxDpsIndex = maxIndex(players.map(player => {
const targetActions = targets.map(target => target.getMeleeActions().concat(target.getSpellActions()).map(action => action.forTarget({ player: player.unitIndex }))).flat();
return sum(targetActions.map(action => action.dps))
}))!;

const maxDtpsTargetActions = targets.map(target => target.getMeleeActions().concat(target.getSpellActions()).map(action => action.forTarget({ player: players[maxDpsIndex].unitIndex }))).flat();
this.maxDtps = sum(maxDtpsTargetActions.map(action => action.dps));

return players.map(player => [player]);
}
Expand Down
2 changes: 1 addition & 1 deletion ui/core/components/detailed_results/resource_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export class TypedResourceMetricsTable extends MetricsTable<ResourceMetrics> {
}

getGroupedMetrics(resultData: SimResultData): Array<Array<ResourceMetrics>> {
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
Expand Down
2 changes: 1 addition & 1 deletion ui/core/components/detailed_results/spell_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export class SpellMetricsTable extends MetricsTable<ActionMetrics> {
}

getGroupedMetrics(resultData: SimResultData): Array<Array<ActionMetrics>> {
const players = resultData.result.getPlayers(resultData.filter);
const players = resultData.result.getRaidIndexedPlayers(resultData.filter);
if (players.length != 1) {
return [];
}
Expand Down
Loading

0 comments on commit d1da337

Please sign in to comment.