diff --git a/sim/core/item_swaps.go b/sim/core/item_swaps.go index 1c247f2c04..dfd8e23338 100644 --- a/sim/core/item_swaps.go +++ b/sim/core/item_swaps.go @@ -191,19 +191,22 @@ func (swap *ItemSwap) getItemStats(item Item) stats.Stats { func (swap *ItemSwap) swapWeapon(slot proto.ItemSlot) { character := swap.character - if !character.AutoAttacks.AutoSwingMelee() && !character.AutoAttacks.AutoSwingRanged() { - return - } switch slot { case proto.ItemSlot_ItemSlotMainHand: - character.AutoAttacks.SetMH(character.WeaponFromMainHand(swap.mhCritMultiplier)) + if character.AutoAttacks.AutoSwingMelee() { + character.AutoAttacks.SetMH(character.WeaponFromMainHand(swap.mhCritMultiplier)) + } case proto.ItemSlot_ItemSlotOffHand: - character.AutoAttacks.SetOH(character.WeaponFromOffHand(swap.ohCritMultiplier)) - //Special case for when the OHAuto Spell was set up with a non weapon and does not have a crit multiplier. - character.PseudoStats.CanBlock = character.OffHand().WeaponType == proto.WeaponType_WeaponTypeShield + if character.AutoAttacks.AutoSwingMelee() { + character.AutoAttacks.SetOH(character.WeaponFromOffHand(swap.ohCritMultiplier)) + //Special case for when the OHAuto Spell was set up with a non weapon and does not have a crit multiplier. + character.PseudoStats.CanBlock = character.OffHand().WeaponType == proto.WeaponType_WeaponTypeShield + } case proto.ItemSlot_ItemSlotRanged: - character.AutoAttacks.SetRanged(character.WeaponFromRanged(swap.rangedCritMultiplier)) + if character.AutoAttacks.AutoSwingRanged() { + character.AutoAttacks.SetRanged(character.WeaponFromRanged(swap.rangedCritMultiplier)) + } } character.AutoAttacks.isDualWielding = character.MainHand().SwingSpeed != 0 && character.OffHand().SwingSpeed != 0 diff --git a/sim/shaman/fire_elemental_totem.go b/sim/shaman/fire_elemental_totem.go index 272149a1b4..e130709280 100644 --- a/sim/shaman/fire_elemental_totem.go +++ b/sim/shaman/fire_elemental_totem.go @@ -75,7 +75,7 @@ func (shaman *Shaman) registerFireElementalTotem() { Type: core.CooldownTypeUnknown, ShouldActivate: func(sim *core.Simulation, character *core.Character) bool { success := false - if enhTier10Aura != nil && shaman.Totems.EnhTierTenBonus { + if enhTier10Aura != nil && shaman.Totems.EnhTierTenBonus && shaman.fireElementalSnapShot != nil { if enhTier10Aura.IsActive() { success = shaman.fireElementalSnapShot.CanSnapShot(sim, castWindow) } else if sim.CurrentTime+fireTotemDuration > sim.Encounter.Duration {