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 | |
parent | c1eb91c1c174870026cf4750bafc8d04d182ade0 (diff) |
Core/WorldStates: Implemented setting dungeon encounter world states
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; } |