Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix seals and procs #1078

Merged
merged 1 commit into from
Sep 23, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sim/common/itemhelpers/weaponprocs.go
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ func CreateWeaponProcDamage(itemId int32, itemName string, ppm float64, spellId
// Can proc itself (Only for CoH proc), can't proc equip effects (in SoD at least - Tested), Weapon Enchants (confirmed - procs fiery), can proc imbues (oils),
// WildStrikes/Windfury (Wound/ Phantom Strike can't proc WF/WS in SoD, Tested for both, Appear to behave like equip affects in SoD)
sc.ProcMask = core.ProcMaskMeleeSpecial
sc.Flags = core.SpellFlagSuppressEquipProcs | core.SpellFlagSupressExtraAttack
sc.Flags = core.SpellFlagSuppressEquipProcs

sc.ApplyEffects = func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
dmg := dmgMin + core.TernaryFloat64(dmgRange > 0, sim.RandomFloat(itemName)*dmgRange, 0)
2 changes: 1 addition & 1 deletion sim/common/sod/enchant_effects.go
Original file line number Diff line number Diff line change
@@ -48,7 +48,7 @@ func init() {
}

// Dismantle only procs on direct attacks, not proc effects or DoT ticks
if spell.ProcMask.Matches(core.ProcMaskEmpty | core.ProcMaskProc | core.ProcMaskWeaponProc) {
if !spell.Flags.Matches(core.SpellFlagNotAProc) && spell.ProcMask.Matches(core.ProcMaskProc|core.ProcMaskSpellDamageProc) {
return
}

2 changes: 1 addition & 1 deletion sim/common/sod/item_effects/phase_3.go
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ func init() {
ActionID: core.ActionID{SpellID: 446705},
Name: "Roar of the Dream Trigger",
Callback: core.CallbackOnCastComplete,
ProcMask: core.ProcMaskSpellOrProc,
ProcMask: core.ProcMaskSpellOrSpellProc,
ProcChance: 0.05,
Handler: func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) {
procAura.Activate(sim)
9 changes: 8 additions & 1 deletion sim/common/sod/item_effects/phase_5.go
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@ const (
DrakeTalonCleaver = 230271 // 19353
ClawOfChromaggus = 230794
JekliksCrusher = 230911
ZulianSlicer = 230930
WillOfArlokk = 230939
HaldberdOfSmiting = 230991
TigulesHarpoon = 231272
@@ -31,6 +32,7 @@ const (
JekliksCrusherBloodied = 231861
PitchforkOfMadnessBloodied = 231864
HaldberdOfSmitingBloodied = 231870
ZulianSlicerBloodied = 231876
)

func init() {
@@ -235,6 +237,11 @@ func init() {
})
})

// https://www.wowhead.com/classic/item=230930/zulian-slicer
// Chance on hit: Slices the enemy for 72 to 96 Nature damage.
itemhelpers.CreateWeaponCoHProcDamage(ZulianSlicer, "Zulian Slicer", 1.2, 467738, core.SpellSchoolNature, 72, 24, 0.35, core.DefenseTypeMelee)
itemhelpers.CreateWeaponCoHProcDamage(ZulianSlicerBloodied, "Zulian Slicer", 1.2, 467738, core.SpellSchoolNature, 72, 24, 0.35, core.DefenseTypeMelee)

///////////////////////////////////////////////////////////////////////////
// Trinkets
///////////////////////////////////////////////////////////////////////////
@@ -278,7 +285,7 @@ func init() {
Name: "Lightning's Cell Trigger",
Callback: core.CallbackOnSpellHitDealt,
Outcome: core.OutcomeCrit,
ProcMask: core.ProcMaskSpellDamage,
ProcMask: core.ProcMaskSpellDamage | core.ProcMaskSpellDamageProc, // Procs on procs
ICD: time.Millisecond * 2000,
Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
chargeAura.Activate(sim)
7 changes: 6 additions & 1 deletion sim/common/sod/items_sets/phase_2.go
Original file line number Diff line number Diff line change
@@ -137,7 +137,12 @@ var ItemSetElectromanticDevastator = core.NewItemSet(core.ItemSet{
},
// Modeled after WotLK JoW https://github.com/wowsims/wotlk/blob/master/sim/core/debuffs.go#L202
OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
if spell.ProcMask.Matches(core.ProcMaskEmpty | core.ProcMaskProc | core.ProcMaskWeaponProc) {

if spell.ProcMask == core.ProcMaskEmpty {
return // Can't use Matches for ProcMaskEmpty
}

if spell.ProcMask.Matches(core.ProcMaskProc|core.ProcMaskSpellDamageProc) && !spell.Flags.Matches(core.SpellFlagNotAProc) {
return // Phantom spells don't proc
}

2 changes: 1 addition & 1 deletion sim/common/vanilla/enchant_effects.go
Original file line number Diff line number Diff line change
@@ -98,7 +98,7 @@ func init() {
procMask := character.GetProcMaskForEnchant(803)
ppmm := character.AutoAttacks.NewPPMManager(6.0, procMask)

procMaskOnAuto := core.ProcMaskSpellDamage | core.ProcMaskTriggerInstant
procMaskOnAuto := core.ProcMaskDamageProc // Both spell and melee proc combo
procMaskOnSpecial := core.ProcMaskSpellDamage // TODO: check if core.ProcMaskSpellDamage remains on special

procSpell := character.RegisterSpell(core.SpellConfig{
4 changes: 2 additions & 2 deletions sim/common/vanilla/item_effects.go
Original file line number Diff line number Diff line change
@@ -2666,7 +2666,7 @@ func BlazefuryTriggerAura(character *core.Character, spellID int32, spellSchool
ActionID: core.ActionID{SpellID: spellID},
SpellSchool: spellSchool,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskTriggerInstant,
ProcMask: core.ProcMaskMeleeDamageProc,
Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagPassiveSpell,
DamageMultiplier: 1,
ThreatMultiplier: 1,
@@ -2685,7 +2685,7 @@ func BlazefuryTriggerAura(character *core.Character, spellID int32, spellSchool
if spell.ProcMask.Matches(core.ProcMaskMeleeSpecial) {
procSpell.ProcMask = core.ProcMaskEmpty
} else {
procSpell.ProcMask = core.ProcMaskTriggerInstant
procSpell.ProcMask = core.ProcMaskDamageProc // Both spell and melee procs
}
procSpell.Cast(sim, result.Target)
},
7 changes: 4 additions & 3 deletions sim/core/buffs.go
Original file line number Diff line number Diff line change
@@ -2204,7 +2204,7 @@ func ApplyWildStrikes(character *Character) *Aura {
MakePermanent(character.GetOrRegisterAura(Aura{
Label: "Wild Strikes",
OnSpellHitDealt: func(aura *Aura, sim *Simulation, spell *Spell, result *SpellResult) {
if !result.Landed() || !spell.ProcMask.Matches(ProcMaskMeleeMH) || spell.Flags.Matches(SpellFlagSupressExtraAttack) {
if !result.Landed() || !spell.ProcMask.Matches(ProcMaskMeleeMH) || spell.Flags.Matches(SpellFlagSuppressEquipProcs) {
return
}

@@ -2279,7 +2279,7 @@ func ApplyWindfury(character *Character) *Aura {
windfuryBuffAura.RemoveStack(sim)
}

if !result.Landed() || !spell.ProcMask.Matches(ProcMaskMeleeMH) || spell.Flags.Matches(SpellFlagSupressExtraAttack) {
if !result.Landed() || !spell.ProcMask.Matches(ProcMaskMeleeMH) || spell.Flags.Matches(SpellFlagSuppressEquipProcs) {
return
}

@@ -2292,7 +2292,8 @@ func ApplyWindfury(character *Character) *Aura {
} else {
windfuryBuffAura.SetStacks(sim, 2)
}
aura.Unit.AutoAttacks.ExtraMHAttack(sim, 1, ActionID{SpellID: 10610}, spell.ActionID)

aura.Unit.AutoAttacks.ExtraMHAttackProc(sim, 1, ActionID{SpellID: spellId}, spell)
}
},
}))
4 changes: 2 additions & 2 deletions sim/core/consumes.go
Original file line number Diff line number Diff line change
@@ -393,7 +393,7 @@ func DragonBreathChiliAura(character *Character) *Aura {
ActionID: ActionID{SpellID: 15851},
SpellSchool: SpellSchoolFire,
DefenseType: DefenseTypeMagic,
ProcMask: ProcMaskEmpty,
ProcMask: ProcMaskSpellDamageProc | ProcMaskSpellProc,
Flags: SpellFlagNoOnCastComplete | SpellFlagPassiveSpell,

DamageMultiplier: 1,
@@ -475,7 +475,7 @@ func applyPhysicalBuffConsumes(character *Character, consumes *proto.Consumes) {
switch consumes.AttackPowerBuff {
case proto.AttackPowerBuff_JujuMight:
character.AddStats(stats.Stats{
stats.AttackPower: 40,
stats.AttackPower: 40,
stats.RangedAttackPower: 40,
})
case proto.AttackPowerBuff_WinterfallFirewater:
2 changes: 1 addition & 1 deletion sim/core/debuffs.go
Original file line number Diff line number Diff line change
@@ -468,7 +468,7 @@ func JudgementOfWisdomAura(target *Unit, level int32) *Aura {
return
}

if spell.ProcMask.Matches(ProcMaskEmpty | ProcMaskProc | ProcMaskWeaponProc) {
if spell.ProcMask.Matches(ProcMaskEmpty|ProcMaskProc|ProcMaskSpellDamageProc) && !spell.Flags.Matches(SpellFlagNotAProc) {
return // Phantom spells (Romulo's, Lightning Capacitor, etc.) don't proc JoW.
}

20 changes: 11 additions & 9 deletions sim/core/flags.go
Original file line number Diff line number Diff line change
@@ -48,12 +48,11 @@ const (
ProcMaskRangedSpecial
ProcMaskSpellDamage
ProcMaskSpellHealing
// Special mask for procs that can trigger things
ProcMaskProc
// Mask for FT weapon and rogue poisons, seems to be spell procs from a weapon imbue
ProcMaskWeaponProc
// Mask for Fiery Weapon and Blazefury Medalion that trigger melee procs like Art of War Rune or Vengeance Talent
ProcMaskTriggerInstant
ProcMaskSpellProc // Special mask for Spell procs that can trigger things (Can be used together with damage proc mask or alone)
ProcMaskMeleeProc // Special mask for Melee procs that can trigger things (Can be used together with damage proc mask or alone)
ProcMaskSpellDamageProc // Mask for procs triggering from spell damage procs like FT weapon and rogue poisons
ProcMaskMeleeDamageProc // Mask for procs (e.g. War Rune / Focuessed Attacks) triggering from melee damage procs

)

const (
@@ -78,8 +77,11 @@ const (

ProcMaskSpecial = ProcMaskMeleeOrRangedSpecial | ProcMaskSpellDamage

ProcMaskMeleeOrProc = ProcMaskMelee | ProcMaskProc
ProcMaskSpellOrProc = ProcMaskSpellDamage | ProcMaskProc
ProcMaskMeleeOrMeleeProc = ProcMaskMelee | ProcMaskMeleeProc
ProcMaskSpellOrSpellProc = ProcMaskSpellDamage | ProcMaskSpellProc

ProcMaskProc = ProcMaskSpellProc | ProcMaskMeleeProc
ProcMaskDamageProc = ProcMaskSpellDamageProc | ProcMaskMeleeDamageProc // Mask for Fiery Weapon and Blazefury Medalion that trigger melee and spell procs
)

// Possible outcomes of any hit/damage roll.
@@ -187,10 +189,10 @@ const (
SpellFlagCastWhileCasting // Indicates this spell can be cast while another spell is being cast (e.g. mage's Fire Blast with Overheat rune)
SpellFlagPureDot // Indicates this spell is a dot with no initial damage component
SpellFlagPassiveSpell // Indicates this spell is applied/cast as a result of another spell
SpellFlagSupressExtraAttack // Mask for Seal of Righteousness, it does not proc Wild Strikes
SpellFlagSuppressWeaponProcs // Indicates this spell cannot proc weapon chance on hits or enchants
SpellFlagSuppressEquipProcs // Indicates this spell cannot proc Equip procs
SpellFlagBatchStopAttackMacro // Indicates this spell is being cast in a Macro with a stopattack following it
SpellFlagNotAProc // Indicates the proc is not treated as a proc (Seal of Command)

// Used to let agents categorize their spells.
SpellFlagAgentReserved1
4 changes: 2 additions & 2 deletions sim/druid/balance/TestBalance.results
Original file line number Diff line number Diff line change
@@ -701,8 +701,8 @@ dps_results: {
dps_results: {
key: "TestBalance-Phase3-Lvl50-AllItems-FeralheartRaiment"
value: {
dps: 517.99813
tps: 532.95114
dps: 516.29889
tps: 530.99873
}
}
dps_results: {
2 changes: 1 addition & 1 deletion sim/mage/blizzard.go
Original file line number Diff line number Diff line change
@@ -49,7 +49,7 @@ func (mage *Mage) newBlizzardSpellConfig(rank int) core.SpellConfig {
})
improvedBlizzardProcApplication = mage.RegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: impId},
ProcMask: core.ProcMaskProc,
ProcMask: core.ProcMaskSpellProc,
Flags: SpellFlagMage | core.SpellFlagNoLogs | SpellFlagChillSpell,
ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
auras.Get(target).Activate(sim)
2 changes: 1 addition & 1 deletion sim/mage/ignite.go
Original file line number Diff line number Diff line change
@@ -45,7 +45,7 @@ func (mage *Mage) applyIgnite() {
ActionID: core.ActionID{SpellID: 12654},
SpellSchool: core.SpellSchoolFire,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskProc,
ProcMask: core.ProcMaskSpellProc,
Adamrch marked this conversation as resolved.
Show resolved Hide resolved
Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagPassiveSpell | SpellFlagMage,

DamageMultiplier: 1,
72 changes: 36 additions & 36 deletions sim/paladin/protection/TestProtection.results
Original file line number Diff line number Diff line change
@@ -50,37 +50,37 @@ character_stats_results: {
stat_weights_results: {
key: "TestProtection-Phase4-Lvl60-StatWeights-Default"
value: {
weights: 0.88727
weights: 0.44438
weights: 0.88823
weights: 0.77434
weights: 0
weights: 0.0121
weights: 0.00264
weights: 0
weights: 0.18297
weights: 0.1833
weights: 0
weights: 0
weights: 0
weights: 0.10032
weights: 0.10061
weights: 0
weights: 0
weights: 0
weights: 3.08012
weights: 1.95422
weights: 2.22602
weights: 1.10534
weights: 0
weights: 0
weights: 0.3981
weights: 0.39856
weights: 0
weights: 14.9088
weights: 11.86159
weights: 15.47198
weights: 9.87099
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 1.95833
weights: 1.96085
weights: 0
weights: 0.33327
weights: 0.33159
weights: 0
weights: 0
weights: 0
@@ -99,78 +99,78 @@ stat_weights_results: {
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-EmeraldEncrustedBattleplate"
value: {
dps: 1257.96419
tps: 2280.38431
dps: 1257.21714
tps: 2277.96564
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-Hero'sBrand-231328"
value: {
dps: 1567.59224
tps: 3169.02239
dps: 1567.23292
tps: 3172.40819
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-Knight-Lieutenant'sImbuedPlate"
value: {
dps: 1258.02797
tps: 2281.0639
dps: 1257.29732
tps: 2278.66952
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-Knight-Lieutenant'sLamellarPlate"
value: {
dps: 1330.2406
tps: 2407.10406
dps: 1329.37556
tps: 2404.45206
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-LibramofDraconicDestruction-221457"
value: {
dps: 1620.69589
tps: 3272.04565
dps: 1618.62735
tps: 3270.50845
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-ObsessedProphet'sPlate"
value: {
dps: 1434.54068
tps: 2897.85215
dps: 1432.94783
tps: 2894.25207
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-SanctifiedOrb-20512"
value: {
dps: 1628.61966
tps: 3283.05956
dps: 1628.89046
tps: 3282.39677
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-SoulforgeArmor"
value: {
dps: 1016.99169
tps: 1519.88933
dps: 1017.76917
tps: 1521.25783
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBelt-231330"
value: {
dps: 1346.84457
tps: 2725.44705
dps: 1341.35831
tps: 2718.47522
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBreastplate-231329"
value: {
dps: 1589.00705
tps: 3211.92167
dps: 1586.68077
tps: 3210.24994
}
}
dps_results: {
key: "TestProtection-Phase4-Lvl60-Average-Default"
value: {
dps: 1607.12812
tps: 3243.49116
dps: 1606.27371
tps: 3242.19692
}
}
dps_results: {
@@ -260,7 +260,7 @@ dps_results: {
dps_results: {
key: "TestProtection-Phase4-Lvl60-SwitchInFrontOfTarget-Default"
value: {
dps: 1355.11328
tps: 2792.12099
dps: 1348.74311
tps: 2777.93485
}
}
164 changes: 82 additions & 82 deletions sim/paladin/retribution/TestExodin.results
Original file line number Diff line number Diff line change
@@ -99,26 +99,26 @@ character_stats_results: {
stat_weights_results: {
key: "TestExodin-Phase4-Lvl60-StatWeights-Default"
value: {
weights: 2.13396
weights: 1.66106
weights: 2.12336
weights: 1.90913
weights: 0
weights: 0
weights: 0
weights: 0.71566
weights: 0.71587
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 9.50219
weights: 1.89366
weights: 8.70988
weights: 2.09556
weights: 0
weights: 0
weights: 0.8818
weights: 0.87742
weights: 0
weights: 21.22575
weights: 21.96742
weights: 0
weights: 0
weights: 0
@@ -148,26 +148,26 @@ stat_weights_results: {
stat_weights_results: {
key: "TestExodin-Phase5-Lvl60-StatWeights-Default"
value: {
weights: 2.9299
weights: 1.14955
weights: 2.92288
weights: 0.78292
weights: 0
weights: 0
weights: 0
weights: 0.92562
weights: 0.92752
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 18.35609
weights: 2.76489
weights: 16.66754
weights: -0.30886
weights: 0
weights: 0
weights: 1.05278
weights: 1.05026
weights: 0
weights: 27.00109
weights: 29.3121
weights: 0
weights: 0
weights: 0
@@ -197,99 +197,99 @@ stat_weights_results: {
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-EmeraldEncrustedBattleplate"
value: {
dps: 1347.8742
tps: 1383.28555
dps: 1336.87262
tps: 1372.06571
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-Hero'sBrand-231328"
value: {
dps: 3229.09893
tps: 3261.9672
dps: 3224.58066
tps: 3256.91886
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-Knight-Lieutenant'sImbuedPlate"
value: {
dps: 1348.03646
tps: 1384.29023
dps: 1337.01263
tps: 1373.08855
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-Knight-Lieutenant'sLamellarPlate"
value: {
dps: 1448.90497
tps: 1486.43416
dps: 1436.83232
tps: 1474.21743
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-LibramofDraconicDestruction-221457"
value: {
dps: 3286.22585
tps: 3318.49399
dps: 3262.10077
tps: 3294.31845
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-ObsessedProphet'sPlate"
value: {
dps: 1589.91426
tps: 1627.61446
dps: 1572.71774
tps: 1610.38093
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-SanctifiedOrb-20512"
value: {
dps: 3145.40761
tps: 3177.68664
dps: 3139.97411
tps: 3172.3625
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-SoulforgeArmor"
value: {
dps: 1222.69474
tps: 1259.39085
dps: 1215.57282
tps: 1252.07982
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBelt-231330"
value: {
dps: 1415.34801
tps: 1453.11786
dps: 1416.72379
tps: 1454.47473
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBreastplate-231329"
value: {
dps: 1662.5968
tps: 1700.35786
dps: 1665.71711
tps: 1703.4567
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-Average-Default"
value: {
dps: 3260.19318
tps: 3292.18529
dps: 3249.30607
tps: 3281.32038
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-Settings-Dwarf-p4ret-exodin-6pcT1-P4 Seal of Martyrdom Ret-p4ret-exodin-6pcT1-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 1421.75434
tps: 1946.08408
dps: 1480.97125
tps: 2028.59703
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-Settings-Dwarf-p4ret-exodin-6pcT1-P4 Seal of Martyrdom Ret-p4ret-exodin-6pcT1-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 622.6546
tps: 648.81996
dps: 626.38901
tps: 653.68525
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-Settings-Dwarf-p4ret-exodin-6pcT1-P4 Seal of Martyrdom Ret-p4ret-exodin-6pcT1-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 707.29814
tps: 736.81518
tps: 738.24101
}
}
dps_results: {
@@ -316,22 +316,22 @@ dps_results: {
dps_results: {
key: "TestExodin-Phase4-Lvl60-Settings-Human-p4ret-exodin-6pcT1-P4 Seal of Martyrdom Ret-p4ret-exodin-6pcT1-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 1418.95309
tps: 1942.45042
dps: 1488.4063
tps: 2038.87613
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-Settings-Human-p4ret-exodin-6pcT1-P4 Seal of Martyrdom Ret-p4ret-exodin-6pcT1-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 628.00366
tps: 654.31842
dps: 639.15333
tps: 666.65001
}
}
dps_results: {
key: "TestExodin-Phase4-Lvl60-Settings-Human-p4ret-exodin-6pcT1-P4 Seal of Martyrdom Ret-p4ret-exodin-6pcT1-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 710.21146
tps: 739.77009
tps: 741.19592
}
}
dps_results: {
@@ -358,106 +358,106 @@ dps_results: {
dps_results: {
key: "TestExodin-Phase4-Lvl60-SwitchInFrontOfTarget-Default"
value: {
dps: 2700.23629
tps: 2734.52055
dps: 2685.2624
tps: 2719.96003
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-EmeraldEncrustedBattleplate"
value: {
dps: 1647.47599
tps: 1683.222
dps: 1637.13445
tps: 1672.77418
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-Hero'sBrand-231328"
value: {
dps: 4456.32941
tps: 4495.4853
dps: 4454.49855
tps: 4493.78987
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-Knight-Lieutenant'sImbuedPlate"
value: {
dps: 1647.51503
tps: 1684.04741
dps: 1637.14331
tps: 1673.59764
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-Knight-Lieutenant'sLamellarPlate"
value: {
dps: 1768.78684
tps: 1806.522
dps: 1757.15569
tps: 1794.84193
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-LibramofDraconicDestruction-221457"
value: {
dps: 4548.52136
tps: 4587.65206
dps: 4523.15933
tps: 4562.10913
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-ObsessedProphet'sPlate"
value: {
dps: 1923.94053
tps: 1961.84988
dps: 1925.99329
tps: 1963.84421
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-SanctifiedOrb-20512"
value: {
dps: 4418.33544
tps: 4457.35575
dps: 4414.00967
tps: 4453.14549
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-SoulforgeArmor"
value: {
dps: 1473.2514
tps: 1510.10153
dps: 1486.46953
tps: 1523.40668
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-ZandalarFreethinker'sBelt-231330"
value: {
dps: 1786.23592
tps: 1824.24425
dps: 1773.11978
tps: 1811.19954
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-AllItems-ZandalarFreethinker'sBreastplate-231329"
value: {
dps: 2059.85915
tps: 2097.85988
dps: 2043.75592
tps: 2081.82898
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-Average-Default"
value: {
dps: 4545.12518
tps: 4583.54629
dps: 4536.61207
tps: 4575.0366
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-p5exodin-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 2441.87374
tps: 3055.74165
dps: 2516.92893
tps: 3160.23147
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-p5exodin-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 1038.83977
tps: 1069.57702
dps: 1040.68892
tps: 1072.92922
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-Settings-Dwarf-p5exodin-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 1136.28585
tps: 1173.45015
tps: 1175.17614
}
}
dps_results: {
@@ -484,22 +484,22 @@ dps_results: {
dps_results: {
key: "TestExodin-Phase5-Lvl60-Settings-Human-p5exodin-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 2473.18295
tps: 3090.5236
dps: 2538.13849
tps: 3182.87465
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-Settings-Human-p5exodin-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 1047.92141
tps: 1078.85843
dps: 1054.40896
tps: 1086.87081
}
}
dps_results: {
key: "TestExodin-Phase5-Lvl60-Settings-Human-p5exodin-P5 Seal of Martyrdom Ret-p5ret-exodin-6CF2DR-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 1140.56323
tps: 1177.9019
tps: 1179.65445
}
}
dps_results: {
@@ -526,7 +526,7 @@ dps_results: {
dps_results: {
key: "TestExodin-Phase5-Lvl60-SwitchInFrontOfTarget-Default"
value: {
dps: 3757.18533
tps: 3799.41342
dps: 3753.52709
tps: 3795.82454
}
}
244 changes: 122 additions & 122 deletions sim/paladin/retribution/TestRetribution.results

Large diffs are not rendered by default.

108 changes: 54 additions & 54 deletions sim/paladin/retribution/TestShockadin.results
Original file line number Diff line number Diff line change
@@ -99,26 +99,26 @@ character_stats_results: {
stat_weights_results: {
key: "TestShockadin-Phase2-Lvl40-StatWeights-Default"
value: {
weights: 0.71742
weights: 0.10746
weights: 0.71754
weights: 0.11352
weights: 0
weights: 0
weights: 0
weights: 0.18015
weights: 0.1802
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 1.71758
weights: 0.17241
weights: 1.74531
weights: 0.18066
weights: 0
weights: 0
weights: 0.29646
weights: 5.08862
weights: 4.53772
weights: 0.2965
weights: 5.08587
weights: 4.63411
weights: 0
weights: 0
weights: 0
@@ -149,25 +149,25 @@ stat_weights_results: {
key: "TestShockadin-Phase5-Lvl60-StatWeights-Default"
value: {
weights: 0.4241
weights: 1.57469
weights: 1.78808
weights: 0
weights: 0
weights: 0
weights: 1.07272
weights: 1.07355
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0
weights: 12.58423
weights: 14.22253
weights: 13.00317
weights: 13.35753
weights: 0
weights: 0
weights: 0.17525
weights: 17.15848
weights: 21.91252
weights: 16.415
weights: 21.2483
weights: 0
weights: 0
weights: 0
@@ -197,36 +197,36 @@ stat_weights_results: {
dps_results: {
key: "TestShockadin-Phase2-Lvl40-AllItems-Hero'sBrand-231328"
value: {
dps: 504.1699
tps: 528.54782
dps: 504.45966
tps: 528.84909
}
}
dps_results: {
key: "TestShockadin-Phase2-Lvl40-AllItems-SoulforgeArmor"
value: {
dps: 383.10113
tps: 402.69325
dps: 384.12299
tps: 403.81257
}
}
dps_results: {
key: "TestShockadin-Phase2-Lvl40-AllItems-ZandalarFreethinker'sBelt-231330"
value: {
dps: 446.69746
tps: 471.07924
dps: 446.50042
tps: 470.88997
}
}
dps_results: {
key: "TestShockadin-Phase2-Lvl40-AllItems-ZandalarFreethinker'sBreastplate-231329"
value: {
dps: 500.4531
tps: 524.85419
dps: 500.67931
tps: 525.12289
}
}
dps_results: {
key: "TestShockadin-Phase2-Lvl40-Average-Default"
value: {
dps: 512.00395
tps: 536.341
dps: 512.07483
tps: 536.41457
}
}
dps_results: {
@@ -316,85 +316,85 @@ dps_results: {
dps_results: {
key: "TestShockadin-Phase2-Lvl40-SwitchInFrontOfTarget-Default"
value: {
dps: 480.68682
tps: 504.86239
dps: 480.61019
tps: 504.7873
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-AllItems-EmeraldEncrustedBattleplate"
value: {
dps: 1312.22092
tps: 1356.55569
dps: 1345.50439
tps: 1391.17566
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-AllItems-Knight-Lieutenant'sImbuedPlate"
value: {
dps: 1330.39776
tps: 1374.85307
dps: 1335.57778
tps: 1380.18259
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-AllItems-Knight-Lieutenant'sLamellarPlate"
value: {
dps: 1349.15086
tps: 1392.99932
dps: 1367.49421
tps: 1412.12664
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-AllItems-LibramofDraconicDestruction-221457"
value: {
dps: 2687.15304
tps: 2764.02885
dps: 2762.26407
tps: 2841.32855
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-AllItems-ObsessedProphet'sPlate"
value: {
dps: 2303.99098
tps: 2384.27195
dps: 2360.32109
tps: 2442.5516
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-AllItems-SanctifiedOrb-20512"
value: {
dps: 2992.05483
tps: 3075.69004
dps: 2991.68571
tps: 3075.992
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-AllItems-SoulforgeArmor"
value: {
dps: 1155.53695
tps: 1188.247
dps: 1226.89818
tps: 1261.96927
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-Average-Default"
value: {
dps: 3117.77744
tps: 3202.65689
dps: 3118.18223
tps: 3203.77093
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-p5shockadin-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 4896.59276
tps: 5680.02125
dps: 4915.61708
tps: 5695.28724
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-p5shockadin-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 1303.09587
tps: 1343.54213
dps: 1327.87168
tps: 1369.9566
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-Settings-Dwarf-p5shockadin-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 2031.15665
tps: 2095.91666
tps: 2097.36707
}
}
dps_results: {
@@ -421,22 +421,22 @@ dps_results: {
dps_results: {
key: "TestShockadin-Phase5-Lvl60-Settings-Human-p5shockadin-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 4963.75404
tps: 5744.5242
dps: 4956.63164
tps: 5758.41014
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-Settings-Human-p5shockadin-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 1295.42684
tps: 1335.41768
dps: 1301.18698
tps: 1342.27733
}
}
dps_results: {
key: "TestShockadin-Phase5-Lvl60-Settings-Human-p5shockadin-P5 Seal of Righteousness Shockadin-p5Shockadin-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 2032.93432
tps: 2097.69432
tps: 2099.14474
}
}
dps_results: {
@@ -463,7 +463,7 @@ dps_results: {
dps_results: {
key: "TestShockadin-Phase5-Lvl60-SwitchInFrontOfTarget-Default"
value: {
dps: 2938.59784
tps: 3021.93274
dps: 2939.70538
tps: 3023.9946
}
}
2 changes: 1 addition & 1 deletion sim/paladin/runes.go
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ func (paladin *Paladin) registerTheArtOfWar() {
aura.Activate(sim)
},
OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
if !spell.ProcMask.Matches(core.ProcMaskMelee|core.ProcMaskTriggerInstant) || !result.Outcome.Matches(core.OutcomeCrit) {
if !spell.ProcMask.Matches(core.ProcMaskMelee|core.ProcMaskMeleeDamageProc) || !result.Outcome.Matches(core.OutcomeCrit) {
return
}
//paladin.holyShockCooldown.Reset()
14 changes: 11 additions & 3 deletions sim/paladin/soc.go
Original file line number Diff line number Diff line change
@@ -98,8 +98,8 @@ func (paladin *Paladin) registerSealOfCommand() {
ActionID: core.ActionID{SpellID: rank.proc.spellID},
SpellSchool: core.SpellSchoolHoly,
DefenseType: core.DefenseTypeMelee,
ProcMask: core.ProcMaskMeleeMHSpecial | core.ProcMaskProc,
Flags: core.SpellFlagMeleeMetrics | SpellFlag_RV, // RV Worked on PTR
ProcMask: core.ProcMaskMeleeMHSpecial | core.ProcMaskMeleeProc | core.ProcMaskMeleeDamageProc,
Adamrch marked this conversation as resolved.
Show resolved Hide resolved
Flags: core.SpellFlagMeleeMetrics | core.SpellFlagNotAProc | SpellFlag_RV, // RV Worked on PTR

DamageMultiplier: 0.7 * paladin.getWeaponSpecializationModifier(),
ThreatMultiplier: 1,
@@ -108,7 +108,15 @@ func (paladin *Paladin) registerSealOfCommand() {

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
baseDamage := spell.Unit.MHWeaponDamage(sim, spell.MeleeAttackPower())
spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit)
result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit)

core.StartDelayedAction(sim, core.DelayedActionOptions{
DoAt: sim.CurrentTime + core.SpellBatchWindow,
OnAction: func(s *core.Simulation) {
spell.DealDamage(sim, result)
},
})

},
})

16 changes: 12 additions & 4 deletions sim/paladin/som.go
Original file line number Diff line number Diff line change
@@ -44,11 +44,19 @@ func (paladin *Paladin) registerSealOfMartyrdom() {
ThreatMultiplier: 1,

ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {

baseDamage := spell.Unit.MHNormalizedWeaponDamage(sim, spell.MeleeAttackPower())
result := spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit)
result := spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit)

core.StartDelayedAction(sim, core.DelayedActionOptions{
DoAt: sim.CurrentTime + core.SpellBatchWindow,
OnAction: func(s *core.Simulation) {
spell.DealDamage(sim, result)

// damages the paladin for 10% of rawDamage, then adds 133% of that for everyone in the raid
paladin.AddMana(sim, result.RawDamage()*0.1*1.33, manaMetrics)
// damages the paladin for 10% of rawDamage, then adds 133% of that for everyone in the raid
paladin.AddMana(sim, result.RawDamage()*0.1*1.33, manaMetrics)
},
})
},
})

@@ -62,7 +70,7 @@ func (paladin *Paladin) registerSealOfMartyrdom() {
return
}

if spell.ProcMask.Matches(core.ProcMaskMeleeWhiteHit | core.ProcMaskProc) {
if spell.ProcMask.Matches(core.ProcMaskMeleeWhiteHit) || (spell.ProcMask.Matches(core.ProcMaskMeleeProc) && spell.Flags.Matches(core.SpellFlagNotAProc)) {
procSpell.Cast(sim, result.Target)
}
},
6 changes: 3 additions & 3 deletions sim/paladin/sor.go
Original file line number Diff line number Diff line change
@@ -74,7 +74,7 @@ func (paladin *Paladin) registerSealOfRighteousness() {
ActionID: core.ActionID{SpellID: rank.judge.spellID},
SpellSchool: core.SpellSchoolHoly,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskEmpty,
ProcMask: core.ProcMaskSpellDamage,
Flags: core.SpellFlagMeleeMetrics | SpellFlag_RV | core.SpellFlagSuppressWeaponProcs | core.SpellFlagSuppressEquipProcs | core.SpellFlagBinary,

DamageMultiplier: 1,
@@ -101,8 +101,8 @@ func (paladin *Paladin) registerSealOfRighteousness() {
ActionID: core.ActionID{SpellID: rank.proc.spellID},
SpellSchool: core.SpellSchoolHoly,
DefenseType: core.DefenseTypeMelee,
ProcMask: core.ProcMaskMeleeMHSpecial, //changed to ProcMaskMeleeMHSpecial, to allow procs from weapons/oils which do proc from SoR,
Flags: core.SpellFlagMeleeMetrics | core.SpellFlagSupressExtraAttack | core.SpellFlagSuppressEquipProcs, // but Wild Strikes does not proc, nor equip procs
ProcMask: core.ProcMaskMeleeMHSpecial, //changed to ProcMaskMeleeMHSpecial, to allow procs from weapons/oils which do proc from SoR,
Flags: core.SpellFlagMeleeMetrics | core.SpellFlagSuppressEquipProcs, // but Wild Strikes does not proc, nor equip procs

//BonusCritRating: paladin.holyCrit(), // TODO to be tested, but unlikely

2 changes: 1 addition & 1 deletion sim/priest/runes.go
Original file line number Diff line number Diff line change
@@ -123,7 +123,7 @@ func (priest *Priest) applySurgeOfLight() {
})

handler := func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
if spell.ProcMask.Matches(core.ProcMaskSpellOrProc) && result.Outcome.Matches(core.OutcomeCrit) {
if spell.ProcMask.Matches(core.ProcMaskSpellOrSpellProc) && result.Outcome.Matches(core.OutcomeCrit) {
priest.SurgeOfLightAura.Activate(sim)
}
}
8 changes: 4 additions & 4 deletions sim/rogue/poisons.go
Original file line number Diff line number Diff line change
@@ -277,7 +277,7 @@ func (rogue *Rogue) registerDeadlyPoisonSpell() {
ActionID: core.ActionID{SpellID: spellID, Tag: 100},
SpellSchool: core.SpellSchoolNature,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskWeaponProc,
ProcMask: core.ProcMaskSpellDamageProc,
Flags: core.SpellFlagPoison | core.SpellFlagPassiveSpell | SpellFlagRoguePoison | SpellFlagCarnage,

DamageMultiplier: rogue.getPoisonDamageMultiplier(),
@@ -363,7 +363,7 @@ func (rogue *Rogue) registerOccultPoisonSpell() {
// ActionID: core.ActionID{SpellID: spellID, Tag: 100},
// SpellSchool: core.SpellSchoolNature,
// DefenseType: core.DefenseTypeMagic,
// ProcMask: core.ProcMaskWeaponProc,
// ProcMask: core.ProcMaskSpellDamageProc,
// Flags: SpellFlagCarnage | core.SpellFlagPoison | SpellFlagRoguePoison,

// DamageMultiplier: rogue.getPoisonDamageMultiplier(),
@@ -443,7 +443,7 @@ func (rogue *Rogue) makeInstantPoison(procSource PoisonProcSource) *core.Spell {
ActionID: core.ActionID{SpellID: spellID, Tag: int32(procSource)},
SpellSchool: core.SpellSchoolNature,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskWeaponProc,
ProcMask: core.ProcMaskSpellDamageProc,
Flags: core.SpellFlagPoison | core.SpellFlagPassiveSpell | SpellFlagDeadlyBrewed | SpellFlagCarnage | SpellFlagRoguePoison,

DamageMultiplier: rogue.getPoisonDamageMultiplier(),
@@ -490,7 +490,7 @@ func (rogue *Rogue) makeWoundPoison(procSource PoisonProcSource) *core.Spell {
ActionID: core.ActionID{SpellID: 13219, Tag: int32(procSource)},
SpellSchool: core.SpellSchoolNature,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskWeaponProc,
ProcMask: core.ProcMaskSpellDamageProc,
Flags: core.SpellFlagPoison | core.SpellFlagPassiveSpell | SpellFlagDeadlyBrewed | SpellFlagRoguePoison,

DamageMultiplier: rogue.getPoisonDamageMultiplier(),
5 changes: 2 additions & 3 deletions sim/rogue/runes.go
Original file line number Diff line number Diff line change
@@ -96,7 +96,7 @@ func (rogue *Rogue) applyFocusedAttacks() {
isFoKOH = true
}

if !spell.ProcMask.Matches(core.ProcMaskMeleeOrRanged|core.ProcMaskTriggerInstant) || !result.DidCrit() || isFoKOH {
if !spell.ProcMask.Matches(core.ProcMaskMeleeOrRanged|core.ProcMaskMeleeDamageProc) || !result.DidCrit() || isFoKOH {
Adamrch marked this conversation as resolved.
Show resolved Hide resolved
return
}
rogue.AddEnergy(sim, 2, energyMetrics)
@@ -356,10 +356,9 @@ func (rogue *Rogue) applySlaughterfromtheShadows() {
}

rogue.OnSpellRegistered(func(spell *core.Spell) {
if (spell.SpellCode == SpellCode_RogueAmbush || spell.SpellCode == SpellCode_RogueBackstab) {
if spell.SpellCode == SpellCode_RogueAmbush || spell.SpellCode == SpellCode_RogueBackstab {
spell.DamageMultiplier *= 1.5
spell.Cost.FlatModifier -= 30
}
})
}

266 changes: 133 additions & 133 deletions sim/shaman/enhancement/TestEnhancement.results

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion sim/shaman/flametongue_weapon.go
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ func (shaman *Shaman) newFlametongueImbueSpell(weapon *core.Item) *core.Spell {
ActionID: core.ActionID{SpellID: spellID},
SpellSchool: core.SpellSchoolFire,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskWeaponProc,
ProcMask: core.ProcMaskSpellDamageProc,
Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagPassiveSpell,

DamageMultiplier: []float64{1, 1.05, 1.1, 1.15}[shaman.Talents.ElementalWeapons],
2 changes: 1 addition & 1 deletion sim/shaman/frostbrand_weapon.go
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ func (shaman *Shaman) newFrostbrandImbueSpell() *core.Spell {
ActionID: core.ActionID{SpellID: spellId},
SpellSchool: core.SpellSchoolFrost,
DefenseType: core.DefenseTypeMagic,
ProcMask: core.ProcMaskWeaponProc,
ProcMask: core.ProcMaskSpellDamageProc,

DamageMultiplier: []float64{1, 1.05, 1.1, 1.15}[shaman.Talents.ElementalWeapons],
ThreatMultiplier: 1,
54 changes: 27 additions & 27 deletions sim/shaman/warden/TestWardenShaman.results
Original file line number Diff line number Diff line change
@@ -50,12 +50,12 @@ character_stats_results: {
stat_weights_results: {
key: "TestWardenShaman-Phase4-Lvl60-StatWeights-Default"
value: {
weights: 1.10138
weights: 1.10709
weights: 0
weights: 0
weights: 0
weights: 0
weights: 0.48318
weights: 0.48758
weights: 0
weights: 0
weights: 0
@@ -67,7 +67,7 @@ stat_weights_results: {
weights: 0
weights: 0
weights: 0
weights: 0.50063
weights: 0.50322
weights: 0
weights: 0
weights: 0
@@ -78,7 +78,7 @@ stat_weights_results: {
weights: 0
weights: 0
weights: 0
weights: 0.93021
weights: 0.94812
weights: 0
weights: 0
weights: 0
@@ -100,84 +100,84 @@ dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-BloodGuard'sInscribedMail"
value: {
dps: 1129.45538
tps: 1170.2143
tps: 1170.54804
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-BloodGuard'sMail"
value: {
dps: 1177.31269
tps: 1216.94343
tps: 1216.89486
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-BloodGuard'sPulsingMail"
value: {
dps: 1170.38676
tps: 1213.33891
tps: 1213.41062
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-EmeraldChainmail"
value: {
dps: 1156.94948
tps: 1197.93246
tps: 1197.98387
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-EmeraldLadenChain"
value: {
dps: 1129.28813
tps: 1169.97155
tps: 1170.02297
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-EmeraldScalemail"
value: {
dps: 1162.03191
tps: 1201.85463
tps: 1201.90605
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-OstracizedBerserker'sBattlemail"
value: {
dps: 1733.18897
tps: 1922.47018
dps: 1733.09486
tps: 1923.79469
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-AllItems-TheFiveThunders"
value: {
dps: 1031.91261
tps: 1064.10939
tps: 1064.15773
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-Average-Default"
value: {
dps: 1925.56475
tps: 1529.77487
dps: 1945.48666
tps: 1558.48667
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-phase_4_enh_tank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 2052.0241
tps: 2934.6182
dps: 2060.07253
tps: 2964.93738
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-phase_4_enh_tank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 914.91456
tps: 789.15619
dps: 915.3125
tps: 797.19719
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-Settings-Orc-phase_4_enh_tank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 1236.59923
tps: 1050.39926
tps: 1050.9955
}
}
dps_results: {
@@ -204,22 +204,22 @@ dps_results: {
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-phase_4_enh_tank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongMultiTarget"
value: {
dps: 2011.37222
tps: 2886.15867
dps: 2041.98474
tps: 2938.67285
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-phase_4_enh_tank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-LongSingleTarget"
value: {
dps: 901.37721
tps: 781.32713
dps: 914.06275
tps: 794.95484
}
}
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-Settings-Troll-phase_4_enh_tank-Default-phase_4_enh_tank-FullBuffs-P4-Consumes-ShortSingleTarget"
value: {
dps: 1222.70234
tps: 1043.88944
tps: 1044.51786
}
}
dps_results: {
@@ -246,7 +246,7 @@ dps_results: {
dps_results: {
key: "TestWardenShaman-Phase4-Lvl60-SwitchInFrontOfTarget-Default"
value: {
dps: 1667.36396
tps: 1353.20457
dps: 1676.85039
tps: 1363.68216
}
}
4 changes: 2 additions & 2 deletions sim/shaman/windfury_weapon.go
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ func (shaman *Shaman) newWindfuryImbueSpell(isMH bool) *core.Spell {
ActionID: actionID,
SpellSchool: core.SpellSchoolPhysical,
DefenseType: core.DefenseTypeMelee,
ProcMask: procMask | core.ProcMaskWeaponProc,
ProcMask: procMask,
Adamrch marked this conversation as resolved.
Show resolved Hide resolved
Flags: core.SpellFlagMeleeMetrics | core.SpellFlagNoOnCastComplete | core.SpellFlagPassiveSpell,

DamageMultiplier: damageMultiplier,
@@ -94,7 +94,7 @@ func (shaman *Shaman) RegisterWindfuryImbue(procMask core.ProcMask) {
aura.Activate(sim)
},
OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
if !result.Landed() || !spell.ProcMask.Matches(procMask) {
if !result.Landed() || !spell.ProcMask.Matches(procMask) || spell.Flags.Matches(core.SpellFlagSuppressEquipProcs) {
return
}