Core/WorldStates: Implemented setting dungeon encounter world states

This commit is contained in:
Shauren
2022-07-24 22:15:57 +02:00
parent c1eb91c1c1
commit 3598d280ff
3 changed files with 957 additions and 1 deletions

View File

@@ -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)