diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DataStores/DBCStructure.h | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 19 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index a9afe7bafa6..893cbd41f6b 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -904,7 +904,7 @@ struct DungeonEncounterEntry { uint32 id; // 0 unique id uint32 mapId; // 1 map id - uint32 difficulty; // 2 instance mode + int32 difficulty; // 2 instance mode //uint32 unk0; // 3 uint32 encounterIndex; // 4 encounter index for creating completed mask char* encounterName; // 5 encounter name diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 03b0cf90246..5d090d883db 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -5118,8 +5118,23 @@ void ObjectMgr::LoadInstanceEncounters() continue; } - DungeonEncounterList& encounters = _dungeonEncounterStore[MAKE_PAIR32(dungeonEncounter->mapId, dungeonEncounter->difficulty)]; - encounters.push_back(new DungeonEncounter(dungeonEncounter, EncounterCreditType(creditType), creditEntry, lastEncounterDungeon)); + if (dungeonEncounter->difficulty == -1) + { + for (uint32 i = 0; i < MAX_DIFFICULTY; ++i) + { + if (GetMapDifficultyData(dungeonEncounter->mapId, Difficulty(i))) + { + DungeonEncounterList& encounters = _dungeonEncounterStore[MAKE_PAIR32(dungeonEncounter->mapId, i)]; + encounters.push_back(new DungeonEncounter(dungeonEncounter, EncounterCreditType(creditType), creditEntry, lastEncounterDungeon)); + } + } + } + else + { + DungeonEncounterList& encounters = _dungeonEncounterStore[MAKE_PAIR32(dungeonEncounter->mapId, dungeonEncounter->difficulty)]; + encounters.push_back(new DungeonEncounter(dungeonEncounter, EncounterCreditType(creditType), creditEntry, lastEncounterDungeon)); + } + ++count; } while (result->NextRow()); |