Skip to content

Commit

Permalink
Merge pull request #620 from wowsims/item-updates
Browse files Browse the repository at this point in the history
Set items, hunter and warlock updates
  • Loading branch information
rosenrusinov authored Apr 8, 2024
2 parents ee4dcb5 + a7dd054 commit a94701b
Show file tree
Hide file tree
Showing 12 changed files with 179 additions and 73 deletions.
2 changes: 1 addition & 1 deletion sim/common/sod/items_sets/phase_3.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ var ItemSetWailingBerserkersPlateArmor = core.NewItemSet(core.ItemSet{
Name: "Extra Attack",
Callback: core.CallbackOnSpellHitDealt,
ProcMask: core.ProcMaskMelee,
ProcChance: 0.05,
ProcChance: 0.03,
Handler: handler,
})
},
Expand Down
48 changes: 24 additions & 24 deletions sim/hunter/TestBM.results
Original file line number Diff line number Diff line change
Expand Up @@ -435,43 +435,43 @@ dps_results: {
dps_results: {
key: "TestBM-Lvl40-Settings-NightElf-p2_ranged_bm-Basic-p2_ranged_bm-FullBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 788.5448
tps: 868.37649
dps: 778.45058
tps: 858.22875
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-NightElf-p2_ranged_bm-Basic-p2_ranged_bm-FullBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 703.77781
tps: 434.8743
dps: 693.65931
tps: 424.7011
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-NightElf-p2_ranged_bm-Basic-p2_ranged_bm-FullBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 768.39733
tps: 471.70696
dps: 758.99285
tps: 462.02899
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-NightElf-p2_ranged_bm-Basic-p2_ranged_bm-NoBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 393.91544
tps: 655.69033
dps: 392.05942
tps: 653.82372
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-NightElf-p2_ranged_bm-Basic-p2_ranged_bm-NoBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 347.30639
tps: 255.30537
dps: 345.40056
tps: 253.38836
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-NightElf-p2_ranged_bm-Basic-p2_ranged_bm-NoBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 370.95021
tps: 273.27694
dps: 369.22849
tps: 271.49933
}
}
dps_results: {
Expand Down Expand Up @@ -603,43 +603,43 @@ dps_results: {
dps_results: {
key: "TestBM-Lvl40-Settings-Orc-p2_ranged_bm-Basic-p2_ranged_bm-FullBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 791.12997
tps: 864.89726
dps: 781.07027
tps: 854.78404
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-Orc-p2_ranged_bm-Basic-p2_ranged_bm-FullBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 712.41766
tps: 429.53164
dps: 702.36778
tps: 419.42706
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-Orc-p2_ranged_bm-Basic-p2_ranged_bm-FullBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 775.80588
tps: 466.69826
dps: 766.40141
tps: 457.02029
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-Orc-p2_ranged_bm-Basic-p2_ranged_bm-NoBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 393.62655
tps: 652.54449
dps: 391.73876
tps: 650.64611
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-Orc-p2_ranged_bm-Basic-p2_ranged_bm-NoBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 348.10042
tps: 250.87023
dps: 346.22061
tps: 248.97924
}
}
dps_results: {
key: "TestBM-Lvl40-Settings-Orc-p2_ranged_bm-Basic-p2_ranged_bm-NoBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 371.46421
tps: 269.11727
dps: 369.7456
tps: 267.34277
}
}
dps_results: {
Expand Down
48 changes: 24 additions & 24 deletions sim/hunter/TestMM.results
Original file line number Diff line number Diff line change
Expand Up @@ -309,85 +309,85 @@ dps_results: {
dps_results: {
key: "TestMM-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 743.45678
tps: 923.89516
dps: 732.27766
tps: 912.662
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 643.72167
tps: 507.76415
dps: 632.48005
tps: 496.46773
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 671.11177
tps: 535.19441
dps: 660.764
tps: 524.57261
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 429.87167
tps: 665.08897
dps: 427.86445
tps: 663.07166
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 368.26975
tps: 310.89924
dps: 366.26352
tps: 308.88234
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 396.69601
tps: 334.915
dps: 394.84419
tps: 333.00983
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 748.03366
tps: 920.38436
dps: 736.87688
tps: 909.17353
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 650.41372
tps: 507.3883
dps: 639.10637
tps: 496.02615
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 678.1078
tps: 533.94353
dps: 667.72082
tps: 523.28252
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-Phase 2 Consumes-LongMultiTarget"
value: {
dps: 432.90843
tps: 654.86425
dps: 430.91607
tps: 652.86206
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-Phase 2 Consumes-LongSingleTarget"
value: {
dps: 370.36959
tps: 308.00347
dps: 368.40875
tps: 306.03226
}
}
dps_results: {
key: "TestMM-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-Phase 2 Consumes-ShortSingleTarget"
value: {
dps: 397.65346
tps: 331.24732
dps: 395.84365
tps: 329.38565
}
}
dps_results: {
Expand Down
4 changes: 2 additions & 2 deletions sim/hunter/flanking_strike.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func (hunter *Hunter) registerFlankingStrikeSpell() {
})

if hunter.pet != nil {
hunter.pet.FlankingStrike = hunter.pet.GetOrRegisterSpell(core.SpellConfig{
hunter.pet.flankingStrike = hunter.pet.GetOrRegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 415320},
SpellSchool: core.SpellSchoolPhysical,
DefenseType: core.DefenseTypeMelee,
Expand Down Expand Up @@ -77,7 +77,7 @@ func (hunter *Hunter) registerFlankingStrikeSpell() {
spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeWeaponSpecialHitAndCrit)

if hunter.pet != nil {
hunter.pet.FlankingStrike.Cast(sim, hunter.pet.CurrentTarget)
hunter.pet.flankingStrike.Cast(sim, hunter.pet.CurrentTarget)
}

hunter.FlankingStrikeAura.Activate(sim)
Expand Down
3 changes: 2 additions & 1 deletion sim/hunter/item_sets.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ var ItemSetDreadHuntersChain = core.NewItemSet(core.ItemSet{
c.AddStat(stats.AttackPower, 20)
},
3: func(agent core.Agent) {
// Implemented in rapid_fire.go
c := agent.GetCharacter()
c.AddBonusRangedCritRating(2)
},
},
})
Expand Down
114 changes: 114 additions & 0 deletions sim/hunter/items.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,126 @@ import (
)

const (
DevilsaurEye = 19991
DevilsaurTooth = 19992
SignetOfBeasts = 209823
BloodlashBow = 216516
GurubashiPitFightersBow = 221450
)

func init() {
core.NewItemEffect(DevilsaurEye, func(agent core.Agent) {
hunter := agent.(HunterAgent).GetHunter()

procBonus := stats.Stats{
stats.AttackPower: 150,
stats.RangedAttackPower: 150,
stats.MeleeHit: 2,
}
aura := hunter.GetOrRegisterAura(core.Aura{
Label: "Devilsaur Fury",
ActionID: core.ActionID{SpellID: 24352},
Duration: time.Second * 20,

OnGain: func(aura *core.Aura, sim *core.Simulation) {
aura.Unit.AddStatsDynamic(sim, procBonus)
},
OnExpire: func(aura *core.Aura, sim *core.Simulation) {
aura.Unit.AddStatsDynamic(sim, procBonus.Invert())
},
})

spell := hunter.GetOrRegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 24352},
Cast: core.CastConfig{
CD: core.Cooldown{
Timer: hunter.NewTimer(),
Duration: time.Minute * 2,
},
},
ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
aura.Activate(sim)
},
})

hunter.AddMajorCooldown(core.MajorCooldown{
Spell: spell,
Type: core.CooldownTypeDPS,
})
})

core.NewItemEffect(DevilsaurTooth, func(agent core.Agent) {
hunter := agent.(HunterAgent).GetHunter()
if hunter.pet == nil {
return
}

// Hunter aura so its visible in the timeline
// TODO: Probably should add pet auras in the timeline at some point
trackingAura := hunter.GetOrRegisterAura(core.Aura{
Label: "Primal Instinct Hunter",
ActionID: core.ActionID{SpellID: 24353},
Duration: core.NeverExpires,
})

aura := hunter.pet.GetOrRegisterAura(core.Aura{
Label: "Primal Instinct",
ActionID: core.ActionID{SpellID: 24353},
Duration: core.NeverExpires,

OnGain: func(aura *core.Aura, sim *core.Simulation) {
if hunter.pet.focusDump != nil {
hunter.pet.focusDump.BonusCritRating += 100
}
if hunter.pet.specialAbility != nil {
hunter.pet.specialAbility.BonusCritRating += 100
}
trackingAura.Activate(sim)
},
OnExpire: func(aura *core.Aura, sim *core.Simulation) {
if hunter.pet.focusDump != nil {
hunter.pet.focusDump.BonusCritRating -= 100
}
if hunter.pet.specialAbility != nil {
hunter.pet.specialAbility.BonusCritRating -= 100
}
trackingAura.Deactivate(sim)
},
OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
if spell == hunter.pet.focusDump || spell == hunter.pet.specialAbility {
aura.Deactivate(sim)
}
},
})

spell := hunter.GetOrRegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 24353},
Cast: core.CastConfig{
DefaultCast: core.Cast{
GCD: core.GCDDefault,
},
CD: core.Cooldown{
Timer: hunter.NewTimer(),
Duration: time.Minute * 2,
},
},
ExtraCastCondition: func(sim *core.Simulation, target *core.Unit) bool {
return hunter.pet.IsEnabled()
},
ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
aura.Activate(sim)
},
})

hunter.AddMajorCooldown(core.MajorCooldown{
Spell: spell,
Type: core.CooldownTypeDPS,
ShouldActivate: func(sim *core.Simulation, character *core.Character) bool {
return hunter.pet != nil && hunter.pet.IsEnabled()
},
})
})

core.NewItemEffect(SignetOfBeasts, func(agent core.Agent) {
hunter := agent.(HunterAgent).GetHunter()
if hunter.pet != nil {
Expand Down
Loading

0 comments on commit a94701b

Please sign in to comment.