aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DBCEnums.h5
-rw-r--r--src/server/game/DataStores/DBCStructure.h10
-rw-r--r--src/server/game/DataStores/DBCfmt.h2
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Maps/Map.cpp17
5 files changed, 18 insertions, 18 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 8d8b7c89a5c..ec048e167ac 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -319,6 +319,11 @@ enum MapTypes // Lua_IsInInstance
MAP_ARENA = 4 // arena
};
+enum MapFlags
+{
+ MAP_FLAG_DYNAMIC_DIFFICULTY = 0x100
+};
+
enum AbilytyLearnType
{
ABILITY_LEARNED_ON_GET_PROFESSION_SKILL = 1,
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h
index 8efc32cc9b2..976b4355957 100644
--- a/src/server/game/DataStores/DBCStructure.h
+++ b/src/server/game/DataStores/DBCStructure.h
@@ -1296,7 +1296,7 @@ struct MapEntry
uint32 MapID; // 0
//char* internalname; // 1 unused
uint32 map_type; // 2
- //uint32 unk_330; // 3
+ uint32 Flags; // 3
// 4 0 or 1 for battlegrounds (not arenas)
char* name[16]; // 5-20
// 21 name flags, unused
@@ -1306,14 +1306,14 @@ struct MapEntry
//char* allianceIntro[16]; // 40-55 text for PvP Zones
// 56 intro text flags
uint32 multimap_id; // 57
- // 58
+ //float BattlefieldMapIconScale; // 58
int32 entrance_map; // 59 map_id of entrance map
float entrance_x; // 60 entrance x coordinate (if exist single entry)
float entrance_y; // 61 entrance y coordinate (if exist single entry)
- // 62 -1, 0 and 720
+ //uint32 TimeOfDayOverride; // 62 -1, 0 and 720
uint32 addon; // 63 (0-original maps, 1-tbc addon)
uint32 unk_time; // 64 some kind of time?
- //uint32 maxPlayers; // 65 max players
+ uint32 maxPlayers; // 65 max players, fallback if not present in MapDifficulty.dbc
// Helpers
uint32 Expansion() const { return addon; }
@@ -1341,6 +1341,8 @@ struct MapEntry
{
return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571;
}
+
+ bool IsDynamicDifficultyMap() const { return Flags & MAP_FLAG_DYNAMIC_DIFFICULTY; }
};
struct MapDifficultyEntry
diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h
index a1587dd6087..448a8066434 100644
--- a/src/server/game/DataStores/DBCfmt.h
+++ b/src/server/game/DataStores/DBCfmt.h
@@ -83,7 +83,7 @@ char const LightEntryfmt[] = "nifffxxxxxxxxxx";
char const LiquidTypefmt[] = "nxxixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
char const LockEntryfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx";
char const MailTemplateEntryfmt[] = "nxxxxxxxxxxxxxxxxxssssssssssssssssx";
-char const MapEntryfmt[] = "nxixxssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxiix";
+char const MapEntryfmt[] = "nxiixssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxiii";
char const MapDifficultyEntryfmt[] = "diisxxxxxxxxxxxxxxxxiix";
char const MovieEntryfmt[] = "nxx";
char const OverrideSpellDatafmt[] = "niiiiiiiiiix";
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 46b60332dfc..e8bb7981c79 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -22798,7 +22798,7 @@ void Player::SendInitialPacketsBeforeAddToMap()
// SMSG_INSTANCE_DIFFICULTY
data.Initialize(SMSG_INSTANCE_DIFFICULTY, 4+4);
data << uint32(GetMap()->GetDifficulty());
- data << uint32(GetMap()->IsRaid() && GetMap()->IsHeroic()); // Raid dynamic difficulty
+ data << uint32(GetMap()->GetEntry()->IsDynamicDifficultyMap() && GetMap()->IsHeroic()); // Raid dynamic difficulty
GetSession()->SendPacket(&data);
SendInitialSpells();
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 8dc393c5f85..68657640852 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -3183,18 +3183,11 @@ MapDifficulty const* Map::GetMapDifficulty() const
uint32 InstanceMap::GetMaxPlayers() const
{
- if (MapDifficulty const* mapDiff = GetMapDifficulty())
- {
- if (mapDiff->maxPlayers || IsRegularDifficulty()) // Normal case (expect that regular difficulty always have correct maxplayers)
- return mapDiff->maxPlayers;
- else // DBC have 0 maxplayers for heroic instances with expansion < 2
- { // The heroic entry exists, so we don't have to check anything, simply return normal max players
- MapDifficulty const* normalDiff = GetMapDifficultyData(GetId(), REGULAR_DIFFICULTY);
- return normalDiff ? normalDiff->maxPlayers : 0;
- }
- }
- else // I'd rather ASSERT(false);
- return 0;
+ MapDifficulty const* mapDiff = GetMapDifficulty();
+ if (mapDiff && mapDiff->maxPlayers)
+ return mapDiff->maxPlayers;
+
+ return GetEntry()->maxPlayers;
}
uint32 InstanceMap::GetMaxResetDelay() const