aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp2
-rw-r--r--src/server/game/Instances/InstanceScript.cpp14
-rw-r--r--src/server/game/Spells/SpellDefines.h4
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