mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Auras: Corrected implementation of dungeon encounter related interrupt flags
This commit is contained in:
@@ -538,15 +538,20 @@ void Unit::MonsterMoveWithSpeed(float x, float y, float z, float speed, bool gen
|
||||
|
||||
void Unit::AtStartOfEncounter(EncounterType type)
|
||||
{
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::StartOfEncounter);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case EncounterType::DungeonEncounter:
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::StartOfDungeonEncounter);
|
||||
if (GetMap()->IsRaid())
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::StartOfRaidEncounterAndStartOfMythicPlus);
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::StartOfEncounter);
|
||||
break;
|
||||
case EncounterType::MythicPlusRun:
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::StartOfMythicPlusRun);
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::StartOfRaidEncounterAndStartOfMythicPlus);
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::EndOfRaidEncounterAndStartOfMythicPlus);
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::ChallengeModeStart);
|
||||
break;
|
||||
case EncounterType::Battleground:
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::StartOfRaidEncounterAndStartOfMythicPlus);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -558,12 +563,12 @@ void Unit::AtStartOfEncounter(EncounterType type)
|
||||
|
||||
void Unit::AtEndOfEncounter(EncounterType type)
|
||||
{
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::EndOfEncounter);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case EncounterType::DungeonEncounter:
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::EndOfDungeonEncounter);
|
||||
if (GetMap()->IsRaid())
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::EndOfRaidEncounterAndStartOfMythicPlus);
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::EndOfEncounter);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -117,32 +117,32 @@ DEFINE_ENUM_FLAG(SpellAuraInterruptFlags);
|
||||
|
||||
enum class SpellAuraInterruptFlags2 : uint32
|
||||
{
|
||||
None = 0,
|
||||
Falling = 0x00000001, // Implemented in Unit::UpdatePosition
|
||||
Swimming = 0x00000002,
|
||||
NotMoving = 0x00000004, // NYI
|
||||
Ground = 0x00000008,
|
||||
Transform = 0x00000010, // NYI
|
||||
Jump = 0x00000020,
|
||||
ChangeSpec = 0x00000040,
|
||||
AbandonVehicle = 0x00000080, // Implemented in Unit::_ExitVehicle
|
||||
StartOfEncounter = 0x00000100, // Implemented in Unit::AtStartOfEncounter
|
||||
EndOfEncounter = 0x00000200, // Implemented in Unit::AtEndOfEncounter
|
||||
Disconnect = 0x00000400, // NYI
|
||||
EnteringInstance = 0x00000800, // Implemented in Map::AddPlayerToMap
|
||||
DuelEnd = 0x00001000, // Implemented in Player::DuelComplete
|
||||
LeaveArenaOrBattleground = 0x00002000, // Implemented in Battleground::RemovePlayerAtLeave
|
||||
ChangeTalent = 0x00004000,
|
||||
ChangeGlyph = 0x00008000,
|
||||
SeamlessTransfer = 0x00010000, // NYI
|
||||
WarModeLeave = 0x00020000, // Implemented in Player::UpdateWarModeAuras
|
||||
TouchingGround = 0x00040000, // NYI
|
||||
ChromieTime = 0x00080000, // NYI
|
||||
SplineFlightOrFreeFlight = 0x00100000, // NYI
|
||||
ProcOrPeriodicAttacking = 0x00200000, // NYI
|
||||
StartOfMythicPlusRun = 0x00400000, // Implemented in Unit::AtStartOfEncounter
|
||||
StartOfDungeonEncounter = 0x00800000, // Implemented in Unit::AtStartOfEncounter - Similar to StartOfEncounter (but only with bosses, not m+ run or battleground)
|
||||
EndOfDungeonEncounter = 0x01000000, // Implemented in Unit::AtEndOfEncounter - Similar to EndOfEncounter (but only with bosses, not m+ run or battleground)
|
||||
None = 0,
|
||||
Falling = 0x00000001, // Implemented in Unit::UpdatePosition
|
||||
Swimming = 0x00000002,
|
||||
NotMoving = 0x00000004, // NYI
|
||||
Ground = 0x00000008,
|
||||
Transform = 0x00000010, // NYI
|
||||
Jump = 0x00000020,
|
||||
ChangeSpec = 0x00000040,
|
||||
AbandonVehicle = 0x00000080, // Implemented in Unit::_ExitVehicle
|
||||
StartOfRaidEncounterAndStartOfMythicPlus = 0x00000100, // Implemented in Unit::AtStartOfEncounter
|
||||
EndOfRaidEncounterAndStartOfMythicPlus = 0x00000200, // Implemented in Unit::AtEndOfEncounter
|
||||
Disconnect = 0x00000400, // NYI
|
||||
EnteringInstance = 0x00000800, // Implemented in Map::AddPlayerToMap
|
||||
DuelEnd = 0x00001000, // Implemented in Player::DuelComplete
|
||||
LeaveArenaOrBattleground = 0x00002000, // Implemented in Battleground::RemovePlayerAtLeave
|
||||
ChangeTalent = 0x00004000,
|
||||
ChangeGlyph = 0x00008000,
|
||||
SeamlessTransfer = 0x00010000, // NYI
|
||||
WarModeLeave = 0x00020000, // Implemented in Player::UpdateWarModeAuras
|
||||
TouchingGround = 0x00040000, // NYI
|
||||
ChromieTime = 0x00080000, // NYI
|
||||
SplineFlightOrFreeFlight = 0x00100000, // NYI
|
||||
ProcOrPeriodicAttacking = 0x00200000, // NYI
|
||||
ChallengeModeStart = 0x00400000, // Implemented in Unit::AtStartOfEncounter
|
||||
StartOfEncounter = 0x00800000, // Implemented in Unit::AtStartOfEncounter
|
||||
EndOfEncounter = 0x01000000, // Implemented in Unit::AtEndOfEncounter
|
||||
};
|
||||
|
||||
DEFINE_ENUM_FLAG(SpellAuraInterruptFlags2);
|
||||
|
||||
Reference in New Issue
Block a user