aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Instances/InstanceScript.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-24 22:15:57 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-24 22:15:57 +0200
commit3598d280ff67d1653d9e1d61cbd32d12d41bc1d7 (patch)
tree5d6c37e82425f6c049caf45fbb4e0676ac3ada01 /src/server/game/Instances/InstanceScript.cpp
parentc1eb91c1c174870026cf4750bafc8d04d182ade0 (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.cpp13
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)