mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-30 13:47:23 +01:00
Core/LFG: fixed building lfg blacklist entries for dungeons which are out of level range and use db2 data to initialize required item levels
This commit is contained in:
@@ -42,19 +42,19 @@
|
||||
namespace lfg
|
||||
{
|
||||
|
||||
LFGDungeonData::LFGDungeonData() : id(0), name(), map(0), type(0), expansion(0), group(0), contentTuningId(0),
|
||||
LFGDungeonData::LFGDungeonData() : id(0), name(), map(0), type(0), expansion(0), group(0), minLevel(0), maxLevel(0),
|
||||
difficulty(DIFFICULTY_NONE), seasonal(false), x(0.0f), y(0.0f), z(0.0f), o(0.0f), requiredItemLevel(0), finalDungeonEncounterId(0)
|
||||
{
|
||||
}
|
||||
|
||||
LFGDungeonData::LFGDungeonData(LFGDungeonsEntry const* dbc) : id(dbc->ID), name(dbc->Name[sWorld->GetDefaultDbcLocale()]), map(dbc->MapID),
|
||||
type(uint8(dbc->TypeID)), expansion(uint8(dbc->ExpansionLevel)), group(uint8(dbc->GroupID)),
|
||||
contentTuningId(0), difficulty(Difficulty(dbc->DifficultyID)),
|
||||
minLevel(dbc->MinLevel), maxLevel(dbc->MaxLevel), difficulty(Difficulty(dbc->DifficultyID)),
|
||||
seasonal((dbc->Flags[0] & LFG_FLAG_SEASONAL) != 0), x(0.0f), y(0.0f), z(0.0f), o(0.0f),
|
||||
requiredItemLevel(0), finalDungeonEncounterId(0)
|
||||
requiredItemLevel(dbc->MinGear), finalDungeonEncounterId(0)
|
||||
{
|
||||
//if (JournalEncounterEntry const* journalEncounter = sJournalEncounterStore.LookupEntry(dbc->FinalEncounterID))
|
||||
// finalDungeonEncounterId = journalEncounter->DungeonEncounterID;
|
||||
if (JournalEncounterEntry const* journalEncounter = sJournalEncounterStore.LookupEntry(dbc->FinalEncounterID))
|
||||
finalDungeonEncounterId = journalEncounter->DungeonEncounterID;
|
||||
}
|
||||
|
||||
LFGMgr::LFGMgr() : m_QueueTimer(0), m_lfgProposalId(1),
|
||||
@@ -1761,13 +1761,10 @@ LfgLockMap LFGMgr::GetLockedDungeons(ObjectGuid guid)
|
||||
return LFG_LOCKSTATUS_RAID_LOCKED;
|
||||
if (sInstanceLockMgr.FindActiveInstanceLock(guid, { dungeon->map, Difficulty(dungeon->difficulty) }))
|
||||
return LFG_LOCKSTATUS_RAID_LOCKED;
|
||||
if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(dungeon->contentTuningId, 0 /*player->m_playerData->CtrOptions->ContentTuningConditionMask*/))
|
||||
{
|
||||
if (levels->MinLevel > level)
|
||||
return LFG_LOCKSTATUS_TOO_LOW_LEVEL;
|
||||
if (levels->MaxLevel < level)
|
||||
return LFG_LOCKSTATUS_TOO_HIGH_LEVEL;
|
||||
}
|
||||
if (dungeon->minLevel > level)
|
||||
return LFG_LOCKSTATUS_TOO_LOW_LEVEL;
|
||||
if (dungeon->maxLevel < level)
|
||||
return LFG_LOCKSTATUS_TOO_HIGH_LEVEL;
|
||||
if (dungeon->seasonal && !IsSeasonActive(dungeon->id))
|
||||
return LFG_LOCKSTATUS_NOT_IN_SEASON;
|
||||
if (dungeon->requiredItemLevel > player->GetAverageItemLevel())
|
||||
@@ -2202,7 +2199,7 @@ uint32 LFGMgr::GetLFGDungeonEntry(uint32 id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
LfgDungeonSet LFGMgr::GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, uint32 contentTuningReplacementConditionMask)
|
||||
LfgDungeonSet LFGMgr::GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion)
|
||||
{
|
||||
LfgDungeonSet randomDungeons;
|
||||
for (lfg::LFGDungeonContainer::const_iterator itr = LfgDungeonStore.begin(); itr != LfgDungeonStore.end(); ++itr)
|
||||
@@ -2214,9 +2211,8 @@ LfgDungeonSet LFGMgr::GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion,
|
||||
if (dungeon.expansion > expansion)
|
||||
continue;
|
||||
|
||||
if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(dungeon.contentTuningId, contentTuningReplacementConditionMask))
|
||||
if (levels->MinLevel > level || level > levels->MaxLevel)
|
||||
continue;
|
||||
if (dungeon.minLevel > level || level > dungeon.maxLevel)
|
||||
continue;
|
||||
|
||||
randomDungeons.insert(dungeon.Entry());
|
||||
}
|
||||
|
||||
@@ -302,7 +302,8 @@ struct LFGDungeonData
|
||||
uint8 type;
|
||||
uint8 expansion;
|
||||
uint8 group;
|
||||
uint32 contentTuningId;
|
||||
uint8 minLevel;
|
||||
uint8 maxLevel;
|
||||
Difficulty difficulty;
|
||||
bool seasonal;
|
||||
float x, y, z, o;
|
||||
@@ -408,7 +409,7 @@ class TC_GAME_API LFGMgr
|
||||
/// Gets the random dungeon reward corresponding to given dungeon and player level
|
||||
LfgReward const* GetRandomDungeonReward(uint32 dungeon, uint8 level);
|
||||
/// Returns all random and seasonal dungeons for given level and expansion
|
||||
LfgDungeonSet GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion, uint32 contentTuningReplacementConditionMask);
|
||||
LfgDungeonSet GetRandomAndSeasonalDungeons(uint8 level, uint8 expansion);
|
||||
/// Teleport a player to/from selected dungeon
|
||||
void TeleportPlayer(Player* player, bool out, bool fromOpcode = false);
|
||||
/// Inits new proposal to boot a player
|
||||
|
||||
Reference in New Issue
Block a user