Core/Auras: Corrected implementation of dungeon encounter related interrupt flags
Port From (https://github.com/TrinityCore/TrinityCore/commit/e4e6eccdf592cd0760c780d485c439f121e06d4c)
This commit is contained in:
@@ -151,31 +151,31 @@ namespace Framework.Constants
|
|||||||
public enum SpellAuraInterruptFlags2
|
public enum SpellAuraInterruptFlags2
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
Falling = 0x01, // NYI
|
Falling = 0x01, // Implemented in Unit::UpdatePosition
|
||||||
Swimming = 0x02,
|
Swimming = 0x02,
|
||||||
NotMoving = 0x04, // NYI
|
NotMoving = 0x04, // NYI
|
||||||
Ground = 0x08,
|
Ground = 0x08,
|
||||||
Transform = 0x10, // NYI
|
Transform = 0x10, // NYI
|
||||||
Jump = 0x20,
|
Jump = 0x20,
|
||||||
ChangeSpec = 0x40,
|
ChangeSpec = 0x40,
|
||||||
AbandonVehicle = 0x80, // NYI
|
AbandonVehicle = 0x80, // Implemented in Unit::_ExitVehicle
|
||||||
StartOfEncounter = 0x100, // NYI
|
StartOfRaidEncounterAndStartOfMythicPlus = 0x100, // Implemented in Unit::AtStartOfEncounter
|
||||||
EndOfEncounter = 0x200, // NYI
|
EndOfRaidEncounterAndStartOfMythicPlus = 0x200, // Implemented in Unit::AtEndOfEncounter
|
||||||
Disconnect = 0x400, // NYI
|
Disconnect = 0x400, // NYI
|
||||||
EnteringInstance = 0x800, // NYI
|
EnteringInstance = 0x800, // Implemented in Map::AddPlayerToMap
|
||||||
DuelEnd = 0x1000, // NYI
|
DuelEnd = 0x1000, // Implemented in Player::DuelComplete
|
||||||
LeaveArenaOrBattleground = 0x2000, // NYI
|
LeaveArenaOrBattleground = 0x2000, // Implemented in Battleground::RemovePlayerAtLeave
|
||||||
ChangeTalent = 0x4000,
|
ChangeTalent = 0x4000,
|
||||||
ChangeGlyph = 0x8000,
|
ChangeGlyph = 0x8000,
|
||||||
SeamlessTransfer = 0x10000, // NYI
|
SeamlessTransfer = 0x10000, // NYI
|
||||||
WarModeLeave = 0x20000, // NYI
|
WarModeLeave = 0x20000, // Implemented in Player::UpdateWarModeAuras
|
||||||
TouchingGround = 0x40000, // NYI
|
TouchingGround = 0x40000, // NYI
|
||||||
ChromieTime = 0x80000, // NYI
|
ChromieTime = 0x80000, // NYI
|
||||||
SplineFlightOrFreeFlight = 0x100000, // NYI
|
SplineFlightOrFreeFlight = 0x100000, // NYI
|
||||||
ProcOrPeriodicAttacking = 0x200000, // NYI
|
ProcOrPeriodicAttacking = 0x200000, // NYI
|
||||||
StartOfMythicPlusRun = 0x400000, // Implemented in Unit::AtStartOfEncounter
|
ChallengeModeStart = 0x400000, // Implemented in Unit::AtStartOfEncounter
|
||||||
StartOfDungeonEncounter = 0x800000, // Implemented in Unit::AtStartOfEncounter - Similar to StartOfEncounter (but only with bosses, not m+ run or battleground)
|
StartOfEncounter = 0x800000, // Implemented in Unit::AtStartOfEncounter
|
||||||
EndOfDungeonEncounter = 0x1000000, // Implemented in Unit::AtEndOfEncounter - Similar to EndOfEncounter (but only with bosses, not m+ run or battleground)
|
EndOfEncounter = 0x1000000, // Implemented in Unit::AtEndOfEncounter
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enum with EffectRadiusIndex and their actual radius
|
// Enum with EffectRadiusIndex and their actual radius
|
||||||
|
|||||||
@@ -613,15 +613,20 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public void AtStartOfEncounter(EncounterType type)
|
public void AtStartOfEncounter(EncounterType type)
|
||||||
{
|
{
|
||||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfEncounter);
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case EncounterType.DungeonEncounter:
|
case EncounterType.DungeonEncounter:
|
||||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfDungeonEncounter);
|
if (GetMap().IsRaid())
|
||||||
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfRaidEncounterAndStartOfMythicPlus);
|
||||||
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfEncounter);
|
||||||
break;
|
break;
|
||||||
case EncounterType.MythicPlusRun:
|
case EncounterType.MythicPlusRun:
|
||||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfMythicPlusRun);
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfRaidEncounterAndStartOfMythicPlus);
|
||||||
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.EndOfRaidEncounterAndStartOfMythicPlus);
|
||||||
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.ChallengeModeStart);
|
||||||
|
break;
|
||||||
|
case EncounterType.Battleground:
|
||||||
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfRaidEncounterAndStartOfMythicPlus);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -633,12 +638,12 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public void AtEndOfEncounter(EncounterType type)
|
public void AtEndOfEncounter(EncounterType type)
|
||||||
{
|
{
|
||||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.EndOfEncounter);
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case EncounterType.DungeonEncounter:
|
case EncounterType.DungeonEncounter:
|
||||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.EndOfDungeonEncounter);
|
if (GetMap().IsRaid())
|
||||||
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.EndOfRaidEncounterAndStartOfMythicPlus);
|
||||||
|
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.EndOfEncounter);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user