Skip to content

Commit

Permalink
Merge branch 'master' into feral
Browse files Browse the repository at this point in the history
  • Loading branch information
NerdEgghead committed Jan 29, 2025
2 parents e7f9ae8 + 72afc4a commit 3e21d6e
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 66 deletions.
63 changes: 41 additions & 22 deletions sim/common/cata/dragonwrath.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,10 @@ func init() {
character := a.GetCharacter()
unit := &character.Unit
registerSpells(unit)
var config *DragonwrathClassConfig

unit.OnSpellRegistered(func(spell *core.Spell) {
if val, ok := classConfig[a.GetCharacter().Spec]; ok {
if val, ok := classConfig[character.Spec]; ok {
for id, c := range val.spellConfig {
if c.spellCopyHandler != nil && id == spell.SpellID && spell.ActionID.Tag < 71086 {
c.spellCopyHandler(unit, spell)
Expand All @@ -214,6 +215,17 @@ func init() {
aura := core.MakePermanent(unit.RegisterAura(core.Aura{
ActionID: core.ActionID{ItemID: 71086},
Label: "Dragonwrath, Tarecgosa's Rest - Handler",
OnInit: func(aura *core.Aura, sim *core.Simulation) {
config = classConfig[character.Spec]
if config == nil {

// Create an empty config for this spell
config = CreateDTRClassConfig(character.Spec, 0.0)
classConfig[character.Spec] = config

log.Printf("Using DTR for spec %s which is not implemented. Using default config", character.Spec)
}
},
OnReset: func(aura *core.Aura, sim *core.Simulation) {
lastTimestamp = time.Duration(0)
spellList = map[*core.Spell]bool{}
Expand All @@ -240,23 +252,19 @@ func init() {
return
}

config := classConfig[a.GetCharacter().Spec]
if config == nil {

// Create an empty config for this spell
config = CreateDTRClassConfig(a.GetCharacter().Spec, 0.0)
classConfig[a.GetCharacter().Spec] = config

log.Printf("Using DTR for spec %s which is not implemented. Using default config", a.GetCharacter().Spec)
}

// for now make it generic, might change this later
// this rule should disable impact replication of related dot spells
if spell.ActionID.Tag > 0 && spell.CurDot() != nil {
return
}

if lastTimestamp != sim.CurrentTime {
lastTimestamp = sim.CurrentTime
spellList = map[*core.Spell]bool{}
}

procChance := config.procChance
isAoESpell := false
if val, ok := config.spellConfig[spell.SpellID]; ok {
if val.supress&supressImpact > 0 {
return
Expand All @@ -267,6 +275,10 @@ func init() {
return
}

if _, ok := spellList[spell]; ok {
return
}

// make sure the same spell impact can only trigger once per timestamp (AoE Impact spells like Arcane Explosion or Mind Sear)
if val.procPerCast {
if lastTimestamp != sim.CurrentTime {
Expand All @@ -284,6 +296,7 @@ func init() {

// reduce proc chance for AoE Spells
if val.isAoESpell {
isAoESpell = true
procChance *= 2.0 / 9.0
}
}
Expand All @@ -292,24 +305,30 @@ func init() {
return
}

// AoE spells can only proc once per round
if isAoESpell {
// spell has not been checked yet, add it
spellList[spell] = true
}

config.getImpactHandler(spell.SpellID)(sim, spell, result)
},

OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) {
if val, ok := config.spellConfig[spell.SpellID]; ok {
if val.isAoESpell {
spellList = map[*core.Spell]bool{}
return
}
}
if _, ok := spellList[spell]; ok {
spellList[spell] = false
}
},
OnPeriodicDamageDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
if !result.Landed() {
return
}

config := classConfig[a.GetCharacter().Spec]
if config == nil {

// Create an empty config for this spell
config = CreateDTRClassConfig(a.GetCharacter().Spec, 0.0)
classConfig[a.GetCharacter().Spec] = config

log.Printf("Using DTR for spec %s which is not implemented. Using default config", a.GetCharacter().Spec)
}

if val, ok := config.spellConfig[spell.SpellID]; ok {
if val.supress&supressDoT > 0 {
return
Expand Down
2 changes: 1 addition & 1 deletion sim/core/spell_mod.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func shouldApply(spell *Spell, mod *SpellMod) bool {
return false
}

if mod.ClassMask > 0 && mod.ClassMask&spell.ClassSpellMask == 0 {
if mod.ClassMask > 0 && !spell.Matches(mod.ClassMask) {
return false
}

Expand Down
48 changes: 24 additions & 24 deletions sim/druid/balance/TestBalance.results
Original file line number Diff line number Diff line change
Expand Up @@ -2190,85 +2190,85 @@ dps_results: {
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t11-FullBuffs-0.0yards-LongMultiTarget"
value: {
dps: 52181.26075
tps: 51033.19446
dps: 45551.51219
tps: 51149.16224
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t11-FullBuffs-0.0yards-LongSingleTarget"
value: {
dps: 38717.95719
tps: 35555.02941
dps: 38729.9806
tps: 35569.55287
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t11-FullBuffs-0.0yards-ShortSingleTarget"
value: {
dps: 47516.99677
tps: 43021.03992
dps: 47434.82872
tps: 43018.48243
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t11-NoBuffs-0.0yards-LongMultiTarget"
value: {
dps: 35359.12735
tps: 37829.62199
dps: 30797.09191
tps: 37892.33607
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t11-NoBuffs-0.0yards-LongSingleTarget"
value: {
dps: 26369.14892
tps: 24224.67306
dps: 26365.33721
tps: 24222.09948
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t11-NoBuffs-0.0yards-ShortSingleTarget"
value: {
dps: 26907.01027
tps: 24401.80438
dps: 26904.25216
tps: 24474.65831
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t12-FullBuffs-0.0yards-LongMultiTarget"
value: {
dps: 52227.49194
tps: 51792.52582
dps: 46030.71094
tps: 51654.41948
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t12-FullBuffs-0.0yards-LongSingleTarget"
value: {
dps: 38942.33954
tps: 35920.26343
dps: 38940.40413
tps: 35908.54176
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t12-FullBuffs-0.0yards-ShortSingleTarget"
value: {
dps: 47551.12626
tps: 43409.18225
dps: 47665.84826
tps: 43499.62818
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t12-NoBuffs-0.0yards-LongMultiTarget"
value: {
dps: 35755.9855
tps: 38254.07027
dps: 31230.63442
tps: 38124.95544
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t12-NoBuffs-0.0yards-LongSingleTarget"
value: {
dps: 26377.24821
tps: 24329.19982
dps: 26389.1128
tps: 24348.1352
}
}
dps_results: {
key: "TestBalance-Settings-NightElf-t12-Default-t12-NoBuffs-0.0yards-ShortSingleTarget"
value: {
dps: 26967.81306
tps: 24642.24696
dps: 26944.33474
tps: 24654.50409
}
}
dps_results: {
Expand Down
2 changes: 1 addition & 1 deletion sim/druid/balance/dragonwrath.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ func init() {
// https://docs.google.com/spreadsheets/d/e/2PACX-1vTaCACFb7dqXpF2qwAZIAgXX-p2VTuJWqmyWXqaJ3c49FNWm61E9-unEdN3cn7YHevoGWWPmqkqJv6h/pubhtml
cata.CreateDTRClassConfig(proto.Spec_SpecBalanceDruid, 0.08).
AddSpell(42231, cata.NewDragonwrathSpellConfig().IsAoESpell()).
AddSpell(88751, cata.NewDragonwrathSpellConfig().IsAoESpell())
AddSpell(78777, cata.NewDragonwrathSpellConfig().IsAoESpell())
}
32 changes: 16 additions & 16 deletions sim/shaman/elemental/TestElemental.results
Original file line number Diff line number Diff line change
Expand Up @@ -2260,8 +2260,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Orc-p3.default-TalentsAoE-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget"
value: {
dps: 171751.61422
tps: 84748.02965
dps: 167764.22156
tps: 85128.84383
}
}
dps_results: {
Expand All @@ -2281,8 +2281,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Orc-p3.default-TalentsAoE-Standard-aoe-NoBuffs-0.0yards-LongMultiTarget"
value: {
dps: 140023.56612
tps: 77514.03779
dps: 136513.71807
tps: 77806.85617
}
}
dps_results: {
Expand Down Expand Up @@ -2386,8 +2386,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Orc-p3.default-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget"
value: {
dps: 155019.82869
tps: 82602.35218
dps: 151342.06768
tps: 82276.89204
}
}
dps_results: {
Expand All @@ -2407,8 +2407,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Orc-p3.default-TalentsImprovedShields-Standard-aoe-NoBuffs-0.0yards-LongMultiTarget"
value: {
dps: 126582.14764
tps: 75863.64339
dps: 123088.6998
tps: 75831.66985
}
}
dps_results: {
Expand Down Expand Up @@ -2638,8 +2638,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Troll-p3.default-TalentsAoE-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget"
value: {
dps: 168901.02962
tps: 85256.49814
dps: 164993.38719
tps: 85381.35524
}
}
dps_results: {
Expand All @@ -2659,8 +2659,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Troll-p3.default-TalentsAoE-Standard-aoe-NoBuffs-0.0yards-LongMultiTarget"
value: {
dps: 137707.64268
tps: 77652.25862
dps: 134272.7445
tps: 77963.95592
}
}
dps_results: {
Expand Down Expand Up @@ -2764,8 +2764,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Troll-p3.default-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget"
value: {
dps: 151609.3246
tps: 82956.22643
dps: 147994.80436
tps: 82799.16222
}
}
dps_results: {
Expand All @@ -2785,8 +2785,8 @@ dps_results: {
dps_results: {
key: "TestElemental-Settings-Troll-p3.default-TalentsImprovedShields-Standard-aoe-NoBuffs-0.0yards-LongMultiTarget"
value: {
dps: 123617.38029
tps: 76033.358
dps: 120529.66822
tps: 75823.33698
}
}
dps_results: {
Expand Down
5 changes: 3 additions & 2 deletions sim/shaman/elemental/dragonwrath.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@ func init() {
//so DPS on a specific target might not be accurate.
cata.CreateDTRClassConfig(proto.Spec_SpecElementalShaman, 0.108).
AddSpell(88767, cata.NewDragonwrathSpellConfig().WithSpellHandler(customFulminationHandler)). // Fullmination
AddSpell(403, cata.NewDragonwrathSpellConfig().WithCustomSpell(overloadCopyHandler)). // Lightning Bold
AddSpell(403, cata.NewDragonwrathSpellConfig().WithCustomSpell(overloadCopyHandler)). // Lightning Bolt
AddSpell(421, cata.NewDragonwrathSpellConfig().WithCustomSpell(overloadCopyHandler).ProcPerCast()). // Chain Lightning
AddSpell(51505, cata.NewDragonwrathSpellConfig().WithCustomSpell(overloadCopyHandler)). // Lava Burst
AddSpell(3599, cata.NewDragonwrathSpellConfig().SupressSpell()). // Searing Totem
AddSpell(8190, cata.NewDragonwrathSpellConfig().SupressSpell()). // Magma Totem
AddSpell(51490, cata.NewDragonwrathSpellConfig().ProcPerCast()). // Thunderstorm
AddSpell(77478, cata.NewDragonwrathSpellConfig().IsAoESpell()) // Earthquake
AddSpell(77478, cata.NewDragonwrathSpellConfig().IsAoESpell()). // Earthquake
AddSpell(1535, cata.NewDragonwrathSpellConfig().IsAoESpell()) // Fire Nova
}

func overloadCopyHandler(unit *core.Unit, spell *core.Spell) {
Expand Down

0 comments on commit 3e21d6e

Please sign in to comment.