diff --git a/Source/Framework/Constants/Spells/SpellConst.cs b/Source/Framework/Constants/Spells/SpellConst.cs index 302754d0c..65f845362 100644 --- a/Source/Framework/Constants/Spells/SpellConst.cs +++ b/Source/Framework/Constants/Spells/SpellConst.cs @@ -1997,7 +1997,7 @@ namespace Framework.Constants CannotKillTarget = 0x10000000, // Cannot Kill Target LogPassive = 0x20000000, // Allows passive auras to trigger aura applied/refreshed/removed combat log events NoMovementRadiusBonus = 0x40000000, // No Movement Radius Bonus - Unk31 = 0x80000000 // 31 + ChannelPersistsOnPetFollow = 0x80000000 // Channel Persists on Pet Follow } public enum SpellAttr10 : uint { diff --git a/Source/Game/Handlers/PetHandler.cs b/Source/Game/Handlers/PetHandler.cs index 979c0b46e..c1168e1de 100644 --- a/Source/Game/Handlers/PetHandler.cs +++ b/Source/Game/Handlers/PetHandler.cs @@ -142,7 +142,10 @@ namespace Game break; case CommandStates.Follow: // spellid = 1792 //FOLLOW pet.AttackStop(); - pet.InterruptNonMeleeSpells(false); + pet.InterruptSpell(CurrentSpellTypes.Generic, false, false); + Spell channeledSpell = pet.GetCurrentSpell(CurrentSpellTypes.Channeled); + if (channeledSpell != null && !channeledSpell.GetSpellInfo().HasAttribute(SpellAttr9.ChannelPersistsOnPetFollow)) + pet.InterruptSpell(CurrentSpellTypes.Channeled, true, true); pet.GetMotionMaster().MoveFollow(GetPlayer(), SharedConst.PetFollowDist, pet.GetFollowAngle()); charmInfo.SetCommandState(CommandStates.Follow);