diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceScript.h | 2 |
2 files changed, 14 insertions, 1 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) diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index e3076222d21..07e2cddf916 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -245,7 +245,7 @@ class TC_GAME_API InstanceScript : public ZoneScript void UpdateEncounterStateForSpellCast(uint32 spellId, Unit* source); // Used only during loading - void SetCompletedEncountersMask(uint32 newMask) { completedEncounters = newMask; } + void SetCompletedEncountersMask(uint32 newMask); // Returns completed encounters mask for packets uint32 GetCompletedEncounterMask() const { return completedEncounters; } |