aboutsummaryrefslogtreecommitdiff
path: root/src
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
parentc1eb91c1c174870026cf4750bafc8d04d182ade0 (diff)
Core/WorldStates: Implemented setting dungeon encounter world states
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Instances/InstanceScript.cpp13
-rw-r--r--src/server/game/Instances/InstanceScript.h2
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; }