diff --git a/sim/shaman/fire_totems.go b/sim/shaman/fire_totems.go index 33c7ad5e9f..c52afa926e 100644 --- a/sim/shaman/fire_totems.go +++ b/sim/shaman/fire_totems.go @@ -83,6 +83,9 @@ func (shaman *Shaman) newSearingTotemSpellConfig(rank int) core.SpellConfig { if shaman.ActiveTotems[FireTotem] != nil && shaman.ActiveTotems[FireTotem].SpellCode == int32(SpellCode_MagmaTotem) { shaman.ActiveTotems[FireTotem].AOEDot().Cancel(sim) } + if shaman.ActiveTotems[FireTotem] != nil && shaman.ActiveTotems[FireTotem].SpellCode == int32(SpellCode_FireNovaTotem) { + shaman.ActiveTotems[FireTotem].AOEDot().Cancel(sim) + } spell.Dot(sim.GetTargetUnit(0)).Apply(sim) // +1 needed because of rounding issues with totem tick time. shaman.TotemExpirations[FireTotem] = sim.CurrentTime + duration + 1 @@ -168,6 +171,9 @@ func (shaman *Shaman) newMagmaTotemSpellConfig(rank int) core.SpellConfig { if shaman.ActiveTotems[FireTotem] != nil && shaman.ActiveTotems[FireTotem].SpellCode == int32(SpellCode_SearingTotem) { shaman.ActiveTotems[FireTotem].Dot(shaman.CurrentTarget).Cancel(sim) } + if shaman.ActiveTotems[FireTotem] != nil && shaman.ActiveTotems[FireTotem].SpellCode == int32(SpellCode_FireNovaTotem) { + shaman.ActiveTotems[FireTotem].AOEDot().Cancel(sim) + } spell.AOEDot().Apply(sim) // +1 needed because of rounding issues with totem tick time. shaman.TotemExpirations[FireTotem] = sim.CurrentTime + duration + 1 @@ -203,6 +209,7 @@ func (shaman *Shaman) newFireNovaTotemSpellConfig(rank int) core.SpellConfig { baseDamageLow := FireNovaTotemBaseDamage[rank][0] baseDamageHigh := FireNovaTotemBaseDamage[rank][1] spellCoeff := FireNovaTotemSpellCoeff[rank] + cooldown := time.Second * 15 manaCost := FireNovaTotemManaCost[rank] level := FireNovaTotemLevel[rank] @@ -212,6 +219,7 @@ func (shaman *Shaman) newFireNovaTotemSpellConfig(rank int) core.SpellConfig { spell := core.SpellConfig{ ActionID: core.ActionID{SpellID: spellId}, SpellSchool: core.SpellSchoolFire, + SpellCode: int32(SpellCode_FireNovaTotem), ProcMask: core.ProcMaskEmpty, Flags: SpellFlagTotem | core.SpellFlagAPL, @@ -227,6 +235,10 @@ func (shaman *Shaman) newFireNovaTotemSpellConfig(rank int) core.SpellConfig { DefaultCast: core.Cast{ GCD: core.GCDDefault, }, + CD: core.Cooldown{ + Timer: shaman.NewTimer(), + Duration: cooldown, + }, }, DamageMultiplier: 1 + float64(shaman.Talents.CallOfFlame)*0.05, diff --git a/sim/shaman/shaman.go b/sim/shaman/shaman.go index e5e22bea92..334b299310 100644 --- a/sim/shaman/shaman.go +++ b/sim/shaman/shaman.go @@ -92,6 +92,7 @@ const ( SpellCode_ShamanChainLightning SpellCode_SearingTotem SpellCode_MagmaTotem + SpellCode_FireNovaTotem ) // Shaman represents a shaman character.