From 3598d280ff67d1653d9e1d61cbd32d12d41bc1d7 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 24 Jul 2022 22:15:57 +0200 Subject: Core/WorldStates: Implemented setting dungeon encounter world states --- src/server/game/Instances/InstanceScript.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/server/game/Instances/InstanceScript.cpp') 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) -- cgit v1.2.3