Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/wowsims/wotlk into master
Browse files Browse the repository at this point in the history
  • Loading branch information
generalwrex committed Oct 5, 2022
2 parents 50d5780 + b960d10 commit 0713d86
Show file tree
Hide file tree
Showing 40 changed files with 505 additions and 485 deletions.
4 changes: 2 additions & 2 deletions sim/core/buffs.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ func RetributionAura(character *Character, sanctifiedRetribution bool) *Aura {
ThreatMultiplier: 1,

ApplyEffects: func(sim *Simulation, target *Unit, spell *Spell) {
spell.CalcAndDealDamageMagicHitBinary(sim, target, baseDamage)
spell.CalcAndDealDamageMagicHit(sim, target, baseDamage)
},
})

Expand Down Expand Up @@ -418,7 +418,7 @@ func ThornsAura(character *Character, points int32) *Aura {
ThreatMultiplier: 1,

ApplyEffects: func(sim *Simulation, target *Unit, spell *Spell) {
spell.CalcAndDealDamageMagicHitBinary(sim, target, baseDamage)
spell.CalcAndDealDamageMagicHit(sim, target, baseDamage)
},
})

Expand Down
3 changes: 3 additions & 0 deletions sim/core/items/all_items.go
Original file line number Diff line number Diff line change
Expand Up @@ -1865,6 +1865,7 @@ var Items = []Item{
{Name: "Deadly Gladiator's Wyrmhide Spaulders", ID: 41280, ClassAllowlist: []proto.Class{proto.Class_ClassDruid}, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 213, Stats: stats.Stats{stats.Stamina: 85, stats.Intellect: 37, stats.SpellPower: 78, stats.SpellCrit: 42, stats.MeleeCrit: 42, stats.Armor: 434, stats.Resilience: 50}, GemSockets: []proto.GemColor{proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Spirit: 4}, SetName: "Gladiator's Wildhide"},
{Name: "Deadly Razordarts", ID: 39138, Type: proto.ItemType_ItemTypeRanged, RangedWeaponType: proto.RangedWeaponType_RangedWeaponTypeThrown, WeaponDamageMin: 176.0, WeaponDamageMax: 328.0, SwingSpeed: 1.90, Phase: 1, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 174, Stats: stats.Stats{stats.Agility: 17, stats.SpellCrit: 16, stats.MeleeCrit: 16, stats.Dodge: 14}},
{Name: "Deadly Saronite Dirk", ID: 41245, Type: proto.ItemType_ItemTypeRanged, RangedWeaponType: proto.RangedWeaponType_RangedWeaponTypeThrown, WeaponDamageMin: 168.0, WeaponDamageMax: 314.0, SwingSpeed: 1.70, Phase: 1, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 171, Stats: stats.Stats{stats.SpellHit: 17, stats.MeleeHit: 17, stats.Expertise: 27}},
{Name: "Death Knight's Anguish", ID: 38212, Type: proto.ItemType_ItemTypeTrinket, Phase: 0, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 138, Stats: stats.Stats{stats.SpellCrit: 31, stats.MeleeCrit: 31}},
{Name: "Death Surgeon's Sleeves", ID: 50032, Type: proto.ItemType_ItemTypeWrist, ArmorType: proto.ArmorType_ArmorTypeCloth, Phase: 4, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 264, Stats: stats.Stats{stats.Stamina: 69, stats.Intellect: 69, stats.Spirit: 60, stats.SpellPower: 106, stats.SpellCrit: 60, stats.MeleeCrit: 60, stats.Armor: 155}, GemSockets: []proto.GemColor{proto.GemColor_GemColorBlue}, SocketBonus: stats.Stats{stats.SpellPower: 5}},
{Name: "Death Surgeon's Sleeves", ID: 50686, Type: proto.ItemType_ItemTypeWrist, ArmorType: proto.ArmorType_ArmorTypeCloth, Phase: 4, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 277, Stats: stats.Stats{stats.Stamina: 78, stats.Intellect: 78, stats.Spirit: 68, stats.SpellPower: 119, stats.SpellCrit: 68, stats.MeleeCrit: 68, stats.Armor: 162}, GemSockets: []proto.GemColor{proto.GemColor_GemColorBlue}, SocketBonus: stats.Stats{stats.SpellPower: 5}, Heroic: true},
{Name: "Death's Bite", ID: 39417, Type: proto.ItemType_ItemTypeWeapon, WeaponType: proto.WeaponType_WeaponTypeAxe, HandType: proto.HandType_HandTypeTwoHand, WeaponDamageMin: 554.0, WeaponDamageMax: 831.0, SwingSpeed: 3.40, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 213, Stats: stats.Stats{stats.Strength: 101, stats.Stamina: 114, stats.SpellHit: 62, stats.SpellCrit: 90, stats.MeleeHit: 62, stats.MeleeCrit: 90}},
Expand Down Expand Up @@ -6931,6 +6932,7 @@ var Items = []Item{
{Name: "Terrorblade Legplates", ID: 46291, ClassAllowlist: []proto.Class{proto.Class_ClassRogue}, Type: proto.ItemType_ItemTypeLegs, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 2, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Agility: 94, stats.Stamina: 83, stats.SpellCrit: 62, stats.SpellHaste: 66, stats.AttackPower: 152, stats.MeleeCrit: 62, stats.MeleeHaste: 66, stats.Armor: 511, stats.RangedAttackPower: 152}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Agility: 6}, SetName: "Terrorblade Battlegear"},
{Name: "Terrorblade Pauldrons", ID: 46292, ClassAllowlist: []proto.Class{proto.Class_ClassRogue}, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 2, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Agility: 79, stats.Stamina: 69, stats.SpellHit: 52, stats.SpellCrit: 36, stats.AttackPower: 114, stats.MeleeHit: 52, stats.MeleeCrit: 36, stats.Armor: 438, stats.RangedAttackPower: 114}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed}, SocketBonus: stats.Stats{stats.AttackPower: 8, stats.RangedAttackPower: 8}, SetName: "Terrorblade Battlegear"},
{Name: "Thalassian Ranger Gauntlets", ID: 34343, Type: proto.ItemType_ItemTypeHands, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 164, Stats: stats.Stats{stats.Agility: 40, stats.Stamina: 43, stats.Intellect: 27, stats.SpellCrit: 23, stats.AttackPower: 80, stats.MeleeCrit: 23, stats.ArmorPenetration: 26, stats.Armor: 715, stats.RangedAttackPower: 80}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Agility: 3}},
{Name: "Thalassian Wildercloak", ID: 29994, Type: proto.ItemType_ItemTypeBack, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 138, Stats: stats.Stats{stats.Agility: 28, stats.Stamina: 28, stats.AttackPower: 68, stats.Armor: 116, stats.RangedAttackPower: 68}},
{Name: "Thane's Restraints", ID: 43980, Type: proto.ItemType_ItemTypeWrist, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 1, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 174, Stats: stats.Stats{stats.Agility: 10, stats.Stamina: 30, stats.AttackPower: 78, stats.Armor: 387, stats.RangedAttackPower: 78}, GemSockets: []proto.GemColor{proto.GemColor_GemColorRed}, SocketBonus: stats.Stats{stats.Agility: 4}},
{Name: "Thane's Tainted Greathelm", ID: 39395, Type: proto.ItemType_ItemTypeHead, ArmorType: proto.ArmorType_ArmorTypePlate, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 200, Stats: stats.Stats{stats.Strength: 73, stats.Stamina: 111, stats.Armor: 1821, stats.Defense: 40, stats.Dodge: 39, stats.Parry: 44}, GemSockets: []proto.GemColor{proto.GemColor_GemColorMeta, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.Defense: 8}},
{Name: "Thane-Reaper's Signet", ID: 38749, Type: proto.ItemType_ItemTypeFinger, Phase: 0, Quality: proto.ItemQuality_ItemQualityUncommon, Ilvl: 154, Stats: stats.Stats{stats.Stamina: 33, stats.SpellHit: 22, stats.AttackPower: 62, stats.MeleeHit: 22, stats.RangedAttackPower: 62}},
Expand Down Expand Up @@ -7368,6 +7370,7 @@ var Items = []Item{
{Name: "True-aim Long Rifle", ID: 47568, Type: proto.ItemType_ItemTypeRanged, RangedWeaponType: proto.RangedWeaponType_RangedWeaponTypeGun, WeaponDamageMin: 309.0, WeaponDamageMax: 575.0, SwingSpeed: 3.00, Phase: 3, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Agility: 106, stats.Stamina: 111, stats.AttackPower: 131, stats.ArmorPenetration: 106, stats.RangedAttackPower: 131}},
{Name: "Trueheart Girdle", ID: 47510, Type: proto.ItemType_ItemTypeWaist, ArmorType: proto.ArmorType_ArmorTypePlate, Phase: 3, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 219, Stats: stats.Stats{stats.Stamina: 60, stats.Intellect: 60, stats.SpellPower: 92, stats.SpellCrit: 56, stats.SpellHaste: 46, stats.MeleeCrit: 56, stats.MeleeHaste: 46, stats.Armor: 1306}, GemSockets: []proto.GemColor{proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.SpellHaste: 4, stats.MeleeHaste: 4}},
{Name: "Truesight Ice Blinders", ID: 42551, Type: proto.ItemType_ItemTypeHead, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Ilvl: 200, Stats: stats.Stats{stats.Agility: 74, stats.Stamina: 90, stats.Intellect: 42, stats.SpellCrit: 44, stats.AttackPower: 120, stats.MeleeCrit: 44, stats.Armor: 1019, stats.RangedAttackPower: 120}, GemSockets: []proto.GemColor{proto.GemColor_GemColorMeta, proto.GemColor_GemColorYellow}, SocketBonus: stats.Stats{stats.SpellCrit: 8, stats.MeleeCrit: 8}},
{Name: "Tsunami Talisman", ID: 30627, Type: proto.ItemType_ItemTypeTrinket, Phase: 1, Quality: proto.ItemQuality_ItemQualityEpic, Unique: true, Ilvl: 128, Stats: stats.Stats{stats.SpellHit: 10, stats.SpellCrit: 38, stats.MeleeHit: 10, stats.MeleeCrit: 38}},
{Name: "Tundra Pauldrons", ID: 43184, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypePlate, Phase: 0, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 155, Stats: stats.Stats{stats.Strength: 37, stats.Stamina: 56, stats.Armor: 1315, stats.Defense: 24, stats.BlockValue: 51, stats.Dodge: 25}},
{Name: "Tundra Tracker's Shoulderguards", ID: 43183, Type: proto.ItemType_ItemTypeShoulder, ArmorType: proto.ArmorType_ArmorTypeMail, Phase: 0, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 155, Stats: stats.Stats{stats.Agility: 37, stats.Stamina: 36, stats.SpellHaste: 24, stats.AttackPower: 72, stats.MeleeHaste: 24, stats.Armor: 736, stats.RangedAttackPower: 72}},
{Name: "Tundra Wolf Boots", ID: 37070, Type: proto.ItemType_ItemTypeFeet, ArmorType: proto.ArmorType_ArmorTypeLeather, Phase: 1, Quality: proto.ItemQuality_ItemQualityRare, Ilvl: 187, Stats: stats.Stats{stats.Stamina: 39, stats.Intellect: 38, stats.SpellPower: 60, stats.SpellCrit: 51, stats.MeleeCrit: 51, stats.Armor: 362}},
Expand Down
53 changes: 0 additions & 53 deletions sim/core/spell_outcome.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,30 +124,6 @@ func (unit *Unit) OutcomeFuncMagicCrit() OutcomeApplier {
}
}

func (spell *Spell) OutcomeMagicHitAndCritBinary(sim *Simulation, result *SpellEffect, attackTable *AttackTable) {
if spell.CritMultiplier == 0 {
panic("Spell " + spell.ActionID.String() + " missing CritMultiplier")
}
if spell.MagicHitCheckBinary(sim, attackTable) {
if result.MagicCritCheck(sim, spell, attackTable) {
result.Outcome = OutcomeCrit
result.Damage *= spell.CritMultiplier
spell.SpellMetrics[result.Target.UnitIndex].Crits++
} else {
result.Outcome = OutcomeHit
spell.SpellMetrics[result.Target.UnitIndex].Hits++
}
} else {
result.Outcome = OutcomeMiss
result.Damage = 0
spell.SpellMetrics[result.Target.UnitIndex].Misses++
}
}
func (spell *Spell) CalcAndDealDamageMagicHitAndCritBinary(sim *Simulation, target *Unit, baseDamage float64) {
result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMagicHitAndCritBinary)
spell.DealDamage(sim, &result)
}

func (spell *Spell) OutcomeHealingCrit(sim *Simulation, result *SpellEffect, attackTable *AttackTable) {
if spell.CritMultiplier == 0 {
panic("Spell " + spell.ActionID.String() + " missing CritMultiplier")
Expand Down Expand Up @@ -218,26 +194,6 @@ func (unit *Unit) OutcomeFuncMagicHit() OutcomeApplier {
}
}

func (spell *Spell) OutcomeMagicHitBinary(sim *Simulation, result *SpellEffect, attackTable *AttackTable) {
if spell.MagicHitCheckBinary(sim, attackTable) {
result.Outcome = OutcomeHit
spell.SpellMetrics[result.Target.UnitIndex].Hits++
} else {
result.Outcome = OutcomeMiss
result.Damage = 0
spell.SpellMetrics[result.Target.UnitIndex].Misses++
}
}
func (spell *Spell) CalcAndDealDamageMagicHitBinary(sim *Simulation, target *Unit, baseDamage float64) {
result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMagicHitBinary)
spell.DealDamage(sim, &result)
}
func (unit *Unit) OutcomeFuncMagicHitBinary() OutcomeApplier {
return func(sim *Simulation, spell *Spell, spellEffect *SpellEffect, attackTable *AttackTable) {
spell.OutcomeMagicHitBinary(sim, spellEffect, attackTable)
}
}

func (spell *Spell) OutcomeMeleeWhite(sim *Simulation, result *SpellEffect, attackTable *AttackTable) {
unit := spell.Unit
roll := sim.RandomFloat("White Hit Table")
Expand Down Expand Up @@ -502,15 +458,6 @@ func (spell *Spell) MagicHitCheck(sim *Simulation, attackTable *AttackTable) boo
return sim.RandomFloat("Magical Hit Roll") > missChance
}

// TODO if a binary spell misses, it's logged as "resist" (similar to "dodge", "miss", etc.), so it's treated
// as just another HitOutcome.
// TODO research the few remaining binary spells (Thorns, Retribution Aura, and Holy Shield).
func (spell *Spell) MagicHitCheckBinary(sim *Simulation, attackTable *AttackTable) bool {
baseHitChance := (1 - attackTable.BaseSpellMissChance) * attackTable.GetBinaryHitChance(spell.SpellSchool)
missChance := 1 - baseHitChance - spell.SpellHitChance(attackTable.Defender)
return sim.RandomFloat("Magical Hit Roll") > missChance
}

func (spell *Spell) fixedCritCheck(sim *Simulation, critChance float64) bool {
return sim.RandomFloat("Fixed Crit Roll") < critChance
}
Expand Down
40 changes: 11 additions & 29 deletions sim/core/spell_resistances.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func (spellEffect *SpellEffect) applyResistances(sim *Simulation, spell *Spell,
return
}

// CHECKME spellEffect.Outcome isn't updated with resists anymore - why?
// TODO check why spellEffect.Outcome isn't updated with resists anymore
resistanceMult := spell.ResistanceMultiplier(sim, spellEffect.IsPeriodic, attackTable)
spellEffect.Damage *= resistanceMult
}
Expand Down Expand Up @@ -63,12 +63,12 @@ func (at *AttackTable) GetArmorDamageModifier(spell *Spell) float64 {
}

func (at *AttackTable) UpdatePartialResists() {
at.PartialResistArcaneThresholds, at.BinaryArcaneHitChance = at.Defender.partialResistRollThresholds(SpellSchoolArcane, at.Attacker)
at.PartialResistHolyThresholds, at.BinaryHolyHitChance = at.Defender.partialResistRollThresholds(SpellSchoolHoly, at.Attacker)
at.PartialResistFireThresholds, at.BinaryFireHitChance = at.Defender.partialResistRollThresholds(SpellSchoolFire, at.Attacker)
at.PartialResistFrostThresholds, at.BinaryFrostHitChance = at.Defender.partialResistRollThresholds(SpellSchoolFrost, at.Attacker)
at.PartialResistNatureThresholds, at.BinaryNatureHitChance = at.Defender.partialResistRollThresholds(SpellSchoolNature, at.Attacker)
at.PartialResistShadowThresholds, at.BinaryShadowHitChance = at.Defender.partialResistRollThresholds(SpellSchoolShadow, at.Attacker)
at.PartialResistArcaneThresholds = at.Defender.partialResistRollThresholds(SpellSchoolArcane, at.Attacker)
at.PartialResistHolyThresholds = at.Defender.partialResistRollThresholds(SpellSchoolHoly, at.Attacker)
at.PartialResistFireThresholds = at.Defender.partialResistRollThresholds(SpellSchoolFire, at.Attacker)
at.PartialResistFrostThresholds = at.Defender.partialResistRollThresholds(SpellSchoolFrost, at.Attacker)
at.PartialResistNatureThresholds = at.Defender.partialResistRollThresholds(SpellSchoolNature, at.Attacker)
at.PartialResistShadowThresholds = at.Defender.partialResistRollThresholds(SpellSchoolShadow, at.Attacker)
}

func (at *AttackTable) GetPartialResistThresholds(ss SpellSchool) Thresholds {
Expand All @@ -89,24 +89,6 @@ func (at *AttackTable) GetPartialResistThresholds(ss SpellSchool) Thresholds {
return Thresholds{{cumulativeChance: 1, bracket: 0}}
}

func (at *AttackTable) GetBinaryHitChance(ss SpellSchool) float64 {
switch ss {
case SpellSchoolArcane:
return at.BinaryArcaneHitChance
case SpellSchoolHoly:
return at.BinaryHolyHitChance
case SpellSchoolFire:
return at.BinaryFireHitChance
case SpellSchoolFrost:
return at.BinaryFrostHitChance
case SpellSchoolNature:
return at.BinaryNatureHitChance
case SpellSchoolShadow:
return at.BinaryShadowHitChance
}
return 0
}

/*
The following calculations are based on
https://web.archive.org/web/20110207221537/http://elitistjerks.com/f15/t44675-resistance_mechanics_wotlk/
Expand Down Expand Up @@ -167,23 +149,23 @@ func (x Thresholds) String() string {
return sb.String()
}

func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit) (Thresholds, float64) {
func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit) Thresholds {
ar := unit.averageResist(school, attacker, false)

if ar <= 0.1 { // always 0%, 10%, or 20%; this covers all player vs. mob cases, in practice
return Thresholds{
{cumulativeChance: 1 - 7.5*ar, bracket: 0},
{cumulativeChance: 1 - 2.5*ar, bracket: 1},
{cumulativeChance: 1, bracket: 2},
}, 1 - ar
}
}

if ar >= 0.9 { // always 80%, 90%, or 100%; only relevant for tests ;)
return Thresholds{
{cumulativeChance: 1 - 7.5*(1-ar), bracket: 10},
{cumulativeChance: 1 - 2.5*(1-ar), bracket: 9},
{cumulativeChance: 1, bracket: 8},
}, 1 - ar
}
}

p := func(x float64) float64 {
Expand All @@ -207,5 +189,5 @@ func (unit *Unit) partialResistRollThresholds(school SpellSchool, attacker *Unit
thresholds[index-1].cumulativeChance = 1
}

return thresholds, 1 - ar
return thresholds
}
7 changes: 0 additions & 7 deletions sim/core/target.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,13 +227,6 @@ type AttackTable struct {
PartialResistNatureThresholds Thresholds
PartialResistShadowThresholds Thresholds

BinaryArcaneHitChance float64
BinaryHolyHitChance float64
BinaryFireHitChance float64
BinaryFrostHitChance float64
BinaryNatureHitChance float64
BinaryShadowHitChance float64

DamageDealtMultiplier float64
NatureDamageDealtMultiplier float64
PeriodicShadowDamageDealtMultiplier float64
Expand Down
7 changes: 7 additions & 0 deletions sim/deathknight/dps/TestFrost.results
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,13 @@ dps_results: {
tps: 4443.26719
}
}
dps_results: {
key: "TestFrost-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 7674.92847
tps: 4560.33185
}
}
dps_results: {
key: "TestFrost-AllItems-Defender'sCode-40257"
value: {
Expand Down
7 changes: 7 additions & 0 deletions sim/deathknight/dps/TestUnholy.results
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,13 @@ dps_results: {
tps: 6116.99153
}
}
dps_results: {
key: "TestUnholy-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 7108.16188
tps: 5748.15214
}
}
dps_results: {
key: "TestUnholy-AllItems-Defender'sCode-40257"
value: {
Expand Down
7 changes: 7 additions & 0 deletions sim/druid/balance/TestBalance.results
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,13 @@ dps_results: {
tps: 7089.20389
}
}
dps_results: {
key: "TestBalance-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 7126.55241
tps: 6949.07671
}
}
dps_results: {
key: "TestBalance-AllItems-Defender'sCode-40257"
value: {
Expand Down
7 changes: 7 additions & 0 deletions sim/druid/feral/TestFeral.results
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,13 @@ dps_results: {
tps: 5804.61398
}
}
dps_results: {
key: "TestFeral-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 7487.14747
tps: 5690.49844
}
}
dps_results: {
key: "TestFeral-AllItems-Defender'sCode-40257"
value: {
Expand Down
15 changes: 11 additions & 4 deletions sim/druid/tank/TestFeralTank.results
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,13 @@ dps_results: {
tps: 1543.71045
}
}
dps_results: {
key: "TestFeralTank-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 1134.20551
tps: 1544.89214
}
}
dps_results: {
key: "TestFeralTank-AllItems-Defender'sCode-40257"
value: {
Expand Down Expand Up @@ -619,8 +626,8 @@ dps_results: {
dps_results: {
key: "TestFeralTank-Average-Default"
value: {
dps: 1313.9913
tps: 1812.10673
dps: 1316.04529
tps: 1814.83032
dtps: 522.98961
}
}
Expand Down Expand Up @@ -669,8 +676,8 @@ dps_results: {
dps_results: {
key: "TestFeralTank-SwitchInFrontOfTarget-Default"
value: {
dps: 1438.59896
tps: 2002.31761
dps: 1440.58147
tps: 2004.94641
dtps: 488.03992
}
}
7 changes: 7 additions & 0 deletions sim/hunter/TestHunter.results
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,13 @@ dps_results: {
tps: 5682.44232
}
}
dps_results: {
key: "TestHunter-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 6678.10806
tps: 5670.5178
}
}
dps_results: {
key: "TestHunter-AllItems-Defender'sCode-40257"
value: {
Expand Down
2 changes: 1 addition & 1 deletion sim/hunter/talents.go
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,7 @@ func (hunter *Hunter) registerBestialWrathCD() {
},
CD: core.Cooldown{
Timer: hunter.NewTimer(),
Duration: hunter.applyLongevity(time.Minute*2) - core.TernaryDuration(hunter.HasMajorGlyph(proto.HunterMajorGlyph_GlyphOfBestialWrath), time.Second*20, 0),
Duration: hunter.applyLongevity(time.Minute*2 - core.TernaryDuration(hunter.HasMajorGlyph(proto.HunterMajorGlyph_GlyphOfBestialWrath), time.Second*20, 0)),
},
},

Expand Down
7 changes: 7 additions & 0 deletions sim/mage/TestArcane.results
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,13 @@ dps_results: {
tps: 4036.06339
}
}
dps_results: {
key: "TestArcane-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 6649.57406
tps: 3986.86513
}
}
dps_results: {
key: "TestArcane-AllItems-Defender'sCode-40257"
value: {
Expand Down
7 changes: 7 additions & 0 deletions sim/mage/TestFire.results
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,13 @@ dps_results: {
tps: 4175.6232
}
}
dps_results: {
key: "TestFire-AllItems-DeathKnight'sAnguish-38212"
value: {
dps: 5826.14645
tps: 4196.12131
}
}
dps_results: {
key: "TestFire-AllItems-Defender'sCode-40257"
value: {
Expand Down
Loading

0 comments on commit 0713d86

Please sign in to comment.