aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-07-03 21:10:23 +0200
committerShauren <shauren.trinity@gmail.com>2024-07-03 21:10:23 +0200
commitfd329ee8483da81585db484c005a6fe22448bc63 (patch)
tree952246372a484866dfb5c5b8dbd9e6672021bc12
parent6c0ae0302207ad5e09de1076fbbb4ab46a3c3147 (diff)
Core/Spells: Implemented SPELL_ATTR9_CHANNEL_PERSISTS_ON_PET_FOLLOW
-rw-r--r--src/server/game/Handlers/PetHandler.cpp4
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h2
-rw-r--r--src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp6
3 files changed, 7 insertions, 5 deletions
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<SpellAttr9>::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<SpellAttr9>::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<SpellAttr9>::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");
}
}