diff --git a/proto/common.proto b/proto/common.proto index 8236901d5f..0b7e51fa05 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -347,11 +347,17 @@ enum FrostPowerBuff { ElixirOfFrostPower = 1; } -// NextIndex: 13 +// NextIndex: 16 enum WeaponImbue { + // Weapon Oils WeaponImbueUnknown = 0; BrilliantManaOil = 1; BrillianWizardOil = 2; + MinorWizardOil = 13; + MinorManaOil = 15; + LesserWizardOil = 14; + + // Sharpening Stones DenseSharpeningStone = 3; ElementalSharpeningStone = 4; BlackfathomManaOil = 5; @@ -366,6 +372,7 @@ enum WeaponImbue { FlametongueWeapon = 10; FrostbrandWeapon = 11; WindfuryWeapon = 12; + } enum Food { diff --git a/sim/core/consumes.go b/sim/core/consumes.go index 2ce4477b9b..d896f475e2 100644 --- a/sim/core/consumes.go +++ b/sim/core/consumes.go @@ -208,6 +208,18 @@ func applyConsumeEffects(agent Agent, partyBuffs *proto.PartyBuffs) { func addImbueStats(character *Character, imbue proto.WeaponImbue, isMh bool) { if imbue != proto.WeaponImbue_WeaponImbueUnknown { switch imbue { + case proto.WeaponImbue_MinorWizardOil: + character.AddStats(stats.Stats{ + stats.SpellPower: 8, + }) + case proto.WeaponImbue_MinorManaOil: + character.AddStats(stats.Stats{ + stats.MP5: 4, + }) + case proto.WeaponImbue_LesserWizardOil: + character.AddStats(stats.Stats{ + stats.SpellPower: 16, + }) case proto.WeaponImbue_BrillianWizardOil: character.AddStats(stats.Stats{ stats.SpellPower: 36, diff --git a/sim/warlock/shadowflame.go b/sim/warlock/shadowflame.go index a32774ae6a..853a7d9a0b 100644 --- a/sim/warlock/shadowflame.go +++ b/sim/warlock/shadowflame.go @@ -14,7 +14,7 @@ func (warlock *Warlock) registerShadowflameSpell() { } level := float64(warlock.GetCharacter().Level) - baseSpellCoeff := 0.715 + baseSpellCoeff := 0.0715 dotSpellCoeff := 0.022 baseCalc := (6.568597 + 0.672028*level + 0.031721*level*level) diff --git a/sim/warlock/talents.go b/sim/warlock/talents.go index 04ec0fa396..2a8afdc17e 100644 --- a/sim/warlock/talents.go +++ b/sim/warlock/talents.go @@ -24,6 +24,7 @@ func (warlock *Warlock) ApplyTalents() { warlock.applyImprovedShadowBolt() } + warlock.applyWeaponImbue() warlock.applyNightfall() warlock.applyMasterDemonologist() warlock.applyDemonicSacrifice() @@ -287,14 +288,17 @@ func (warlock *Warlock) applyFirestone() { }) core.MakePermanent(warlock.GetOrRegisterAura(core.Aura{ - ActionID: core.ActionID{SpellID: spellId}, - Label: "Firestone Proc", + Label: "Firestone Proc", OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if !result.Landed() { return } - if !ppm.Proc(sim, spell.ProcMask, "Firestone Proc") { + if !spell.ProcMask.Matches(core.ProcMaskMelee) { + return + } + + if !ppm.Proc(sim, core.ProcMaskMelee, "Firestone Proc") { return } diff --git a/sim/warlock/warlock.go b/sim/warlock/warlock.go index 14cad5eb98..914a2b5e9f 100644 --- a/sim/warlock/warlock.go +++ b/sim/warlock/warlock.go @@ -148,8 +148,6 @@ func NewWarlock(character *core.Character, options *proto.Player, warlockOptions warlock.Pet = warlock.NewWarlockPet() } - warlock.applyWeaponImbue() - return warlock } diff --git a/ui/core/components/inputs/consumables.ts b/ui/core/components/inputs/consumables.ts index af223f4f38..24429998ae 100644 --- a/ui/core/components/inputs/consumables.ts +++ b/ui/core/components/inputs/consumables.ts @@ -553,11 +553,24 @@ export const WildStrikes: ConsumableInputConfig = { // Other Imbues -export const ElementalSharpeningStone: ConsumableInputConfig = { +// Weapon Oils +export const MinorWizardOil: ConsumableInputConfig = { actionId: (player) => player.getMatchingItemActionId([ - { id: 18262, minLevel: 50 }, + { id: 20744, minLevel: 5, maxLevel: 29 }, ]), - value: WeaponImbue.ElementalSharpeningStone, + value: WeaponImbue.MinorWizardOil, +}; +export const LesserWizardOil: ConsumableInputConfig = { + actionId: (player) => player.getMatchingItemActionId([ + { id: 20746, minLevel: 30, maxLevel: 44 }, + ]), + value: WeaponImbue.LesserWizardOil, +}; +export const MinorManaOil: ConsumableInputConfig = { + actionId: (player) => player.getMatchingItemActionId([ + { id: 20745, minLevel: 20, maxLevel: 44 }, + ]), + value: WeaponImbue.MinorManaOil, }; export const BrillianWizardOil: ConsumableInputConfig = { actionId: (player) => player.getMatchingItemActionId([ @@ -571,18 +584,24 @@ export const BrilliantManaOil: ConsumableInputConfig = { ]), value: WeaponImbue.BrilliantManaOil, }; -export const DenseSharpeningStone: ConsumableInputConfig = { - actionId: (player) => player.getMatchingItemActionId([ - { id: 12404, minLevel: 35 }, - ]), - value: WeaponImbue.DenseSharpeningStone, -}; export const BlackfathomManaOil: ConsumableInputConfig = { actionId: (player) => player.getMatchingItemActionId([ { id: 211848, minLevel: 25 }, ]), value: WeaponImbue.BlackfathomManaOil, }; +export const ElementalSharpeningStone: ConsumableInputConfig = { + actionId: (player) => player.getMatchingItemActionId([ + { id: 18262, minLevel: 50 }, + ]), + value: WeaponImbue.ElementalSharpeningStone, +}; +export const DenseSharpeningStone: ConsumableInputConfig = { + actionId: (player) => player.getMatchingItemActionId([ + { id: 12404, minLevel: 35 }, + ]), + value: WeaponImbue.DenseSharpeningStone, +}; export const BlackfathomSharpeningStone: ConsumableInputConfig = { actionId: () => ActionId.fromItemId(211845), value: WeaponImbue.BlackfathomSharpeningStone, @@ -596,11 +615,14 @@ const SHAMAN_IMBUES: ConsumableStatOption[] = [ ] const CONSUMABLES_IMBUES: ConsumableStatOption[] = [ - { config: ElementalSharpeningStone, stats: [Stat.StatAttackPower] }, + { config: MinorWizardOil, stats: [Stat.StatSpellPower] }, + { config: LesserWizardOil, stats: [Stat.StatSpellPower] }, { config: BrillianWizardOil, stats: [Stat.StatSpellPower] }, + { config: MinorManaOil, stats: [Stat.StatHealing, Stat.StatSpellPower] }, { config: BrilliantManaOil, stats: [Stat.StatHealing, Stat.StatSpellPower] }, - { config: DenseSharpeningStone, stats: [Stat.StatAttackPower] }, { config: BlackfathomManaOil, stats: [Stat.StatSpellPower, Stat.StatMP5] }, + { config: ElementalSharpeningStone, stats: [Stat.StatAttackPower] }, + { config: DenseSharpeningStone, stats: [Stat.StatAttackPower] }, { config: BlackfathomSharpeningStone, stats: [Stat.StatMeleeHit] }, ]