diff --git a/sim/warrior/pummel.go b/sim/warrior/pummel.go new file mode 100644 index 000000000..ca664df83 --- /dev/null +++ b/sim/warrior/pummel.go @@ -0,0 +1,48 @@ +package warrior + +import ( + "time" + + "github.com/wowsims/classic/sim/core" +) + +func (warrior *Warrior) registerPummelSpell() { + damage := 50.0 + + warrior.RegisterSpell(BerserkerStance, core.SpellConfig{ + ActionID: core.ActionID{SpellID: 6554}, + SpellSchool: core.SpellSchoolPhysical, + DefenseType: core.DefenseTypeMelee, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagAPL | core.SpellFlagBinary | SpellFlagOffensive, + + RageCost: core.RageCostOptions{ + Cost: 10, + Refund: 0.8, + }, + Cast: core.CastConfig{ + DefaultCast: core.Cast{ + GCD: core.GCDDefault, + }, + IgnoreHaste: true, + CD: core.Cooldown{ + Timer: warrior.NewTimer(), + Duration: time.Second * 10, + }, + }, + + CritDamageBonus: warrior.impale(), + + DamageMultiplier: 1, + ThreatMultiplier: 1, + BonusCoefficient: 1, + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + result := spell.CalcAndDealDamage(sim, target, damage, spell.OutcomeMeleeWeaponSpecialHitAndCrit) + + if !result.Landed() { + spell.IssueRefund(sim) + } + }, + }) +} diff --git a/sim/warrior/warrior.go b/sim/warrior/warrior.go index 0873d8a9a..c4dd17fc7 100644 --- a/sim/warrior/warrior.go +++ b/sim/warrior/warrior.go @@ -184,6 +184,7 @@ func (warrior *Warrior) Initialize() { warrior.registerWhirlwindSpell() warrior.registerRendSpell() warrior.registerHamstringSpell() + warrior.registerPummelSpell() // The sim often re-enables heroic strike in an unrealistic amount of time. // This can cause an unrealistic immediate double-hit around wild strikes procs