diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-24 22:15:57 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-24 22:15:57 +0200 |
commit | 3598d280ff67d1653d9e1d61cbd32d12d41bc1d7 (patch) | |
tree | 5d6c37e82425f6c049caf45fbb4e0676ac3ada01 /src/server/game/Instances/InstanceScript.cpp | |
parent | c1eb91c1c174870026cf4750bafc8d04d182ade0 (diff) |
Core/WorldStates: Implemented setting dungeon encounter world states
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) |