From fd329ee8483da81585db484c005a6fe22448bc63 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 3 Jul 2024 21:10:23 +0200 Subject: Core/Spells: Implemented SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW --- src/server/game/Handlers/PetHandler.cpp | 4 +++- src/server/game/Miscellaneous/SharedDefines.h | 2 +- src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 48ad47cdb48..bd31cf65117 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -167,7 +167,9 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe break; case COMMAND_FOLLOW: // spellid = 1792 - FOLLOW pet->AttackStop(); - pet->InterruptNonMeleeSpells(false); + pet->InterruptSpell(CURRENT_GENERIC_SPELL, false, false); + if (Spell const* channeledSpell = pet->GetCurrentSpell(CURRENT_CHANNELED_SPELL); channeledSpell && !channeledSpell->GetSpellInfo()->HasAttribute(SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW)) + pet->InterruptSpell(CURRENT_CHANNELED_SPELL, true, true); pet->GetMotionMaster()->MoveFollow(_player, PET_FOLLOW_DIST, pet->GetFollowAngle()); charmInfo->SetCommandState(COMMAND_FOLLOW); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 82b090f1548..cbabbb7fe9c 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -790,7 +790,7 @@ enum SpellAttr9 : uint32 SPELL_ATTR9_CANNOT_KILL_TARGET = 0x10000000, // TITLE Cannot Kill Target SPELL_ATTR9_LOG_PASSIVE = 0x20000000, // TITLE Log Passive (client only) DESCRIPTION Allows passive auras to trigger aura applied/refreshed/removed combat log events SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS = 0x40000000, // TITLE No Movement Radius Bonus - SPELL_ATTR9_UNK31 = 0x80000000 // TITLE Unknown attribute 31@Attr9 + SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW = 0x80000000 // TITLE Channel Persists on Pet Follow }; // EnumUtils: DESCRIBE THIS diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index ca16197fff0..011e8e1849a 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -1466,7 +1466,7 @@ TC_API_EXPORT EnumText EnumUtils::ToString(SpellAttr9 value) case SPELL_ATTR9_CANNOT_KILL_TARGET: return { "SPELL_ATTR9_CANNOT_KILL_TARGET", "Cannot Kill Target", "" }; case SPELL_ATTR9_LOG_PASSIVE: return { "SPELL_ATTR9_LOG_PASSIVE", "Log Passive (client only)", "Allows passive auras to trigger aura applied/refreshed/removed combat log events" }; case SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS: return { "SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS", "No Movement Radius Bonus", "" }; - case SPELL_ATTR9_UNK31: return { "SPELL_ATTR9_UNK31", "Unknown attribute 31@Attr9", "" }; + case SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW: return { "SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW", "Channel Persists on Pet Follow", "" }; default: throw std::out_of_range("value"); } } @@ -1510,7 +1510,7 @@ TC_API_EXPORT SpellAttr9 EnumUtils::FromIndex(size_t index) case 28: return SPELL_ATTR9_CANNOT_KILL_TARGET; case 29: return SPELL_ATTR9_LOG_PASSIVE; case 30: return SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS; - case 31: return SPELL_ATTR9_UNK31; + case 31: return SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW; default: throw std::out_of_range("index"); } } @@ -1551,7 +1551,7 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(SpellAttr9 value) case SPELL_ATTR9_CANNOT_KILL_TARGET: return 28; case SPELL_ATTR9_LOG_PASSIVE: return 29; case SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS: return 30; - case SPELL_ATTR9_UNK31: return 31; + case SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW: return 31; default: throw std::out_of_range("value"); } } -- cgit v1.2.3