diff options
Diffstat (limited to 'src/server/game/Instances/InstanceScript.cpp')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 330f2a29d78..4623522ccf9 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -810,6 +810,9 @@ void InstanceScript::UpdateEncounterState(EncounterCreditType type, uint32 credi if (encounter.creditType == type && encounter.creditEntry == creditEntry) { completedEncounters |= 1 << encounter.dbcEntry->Bit; + if (encounter.dbcEntry->CompleteWorldStateID) + DoUpdateWorldState(encounter.dbcEntry->CompleteWorldStateID, 1); + if (encounter.lastEncounterDungeon) { dungeonId = encounter.lastEncounterDungeon; @@ -850,6 +853,16 @@ void InstanceScript::UpdateEncounterStateForSpellCast(uint32 spellId, Unit* sour UpdateEncounterState(ENCOUNTER_CREDIT_CAST_SPELL, spellId, source); } +void InstanceScript::SetCompletedEncountersMask(uint32 newMask) +{ + completedEncounters = newMask; + + if (DungeonEncounterList const* encounters = sObjectMgr->GetDungeonEncounterList(instance->GetId(), instance->GetDifficultyID())) + for (DungeonEncounter const& encounter : *encounters) + if (completedEncounters & (1 << encounter.dbcEntry->Bit) && encounter.dbcEntry->CompleteWorldStateID) + DoUpdateWorldState(encounter.dbcEntry->CompleteWorldStateID, 1); +} + void InstanceScript::UpdatePhasing() { instance->DoOnPlayers([](Player const* player) |