Core/Auras: Corrected implementation of dungeon encounter related interrupt flags

Port From (https://github.com/TrinityCore/TrinityCore/commit/e4e6eccdf592cd0760c780d485c439f121e06d4c)
This commit is contained in:
Hondacrx
2024-08-25 00:29:19 -04:00
parent 993a5f7e8a
commit 665d7ac140
2 changed files with 24 additions and 19 deletions
+12 -12
View File
@@ -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
+12 -7
View File
@@ -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;