diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Spells/SpellDefines.h | 4 |
3 files changed, 18 insertions, 2 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 21ca45d99db..ee768353eb7 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -912,6 +912,8 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen player->RemoveAura(SPELL_MERCENARY_SHAPESHIFT); player->RemovePlayerFlagEx(PLAYER_FLAGS_EX_MERCENARY_MODE); + player->AtEndOfEncounter(); + player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::LeaveArenaOrBattleground); if (!player->IsAlive()) // resurrect on exit diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 9abe63e469f..bbe13257978 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -414,10 +414,18 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) break; } case FAIL: + { ResetCombatResurrections(); SendEncounterEnd(); + + instance->DoOnPlayers([](Player* player) + { + player->AtEndOfEncounter(); + }); break; + } case DONE: + { ResetCombatResurrections(); SendEncounterEnd(); dungeonEncounter = bossInfo->GetDungeonEncounterForDifficulty(instance->GetDifficultyID()); @@ -426,7 +434,13 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) DoUpdateCriteria(CriteriaType::DefeatDungeonEncounter, dungeonEncounter->ID); SendBossKillCredit(dungeonEncounter->ID); } + + instance->DoOnPlayers([](Player* player) + { + player->AtEndOfEncounter(); + }); break; + } default: break; } diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 0af891cbdb3..30238c6e192 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -124,8 +124,8 @@ enum class SpellAuraInterruptFlags2 : uint32 Jump = 0x00000020, ChangeSpec = 0x00000040, AbandonVehicle = 0x00000080, // Implemented in Unit::_ExitVehicle - StartOfEncounter = 0x00000100, // Implemented in InstanceScript::SetBossState and Battleground::_ProcessJoin - EndOfEncounter = 0x00000200, // NYI + 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 |