mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Remade access_requirement table, now each difficulty mode for each instance has its own entry (for future Dungeon Finder development)
Added completed achievement as new requirement type Removed obsolete access_id from areatrigger_teleport table Implemented automatic downscaling of raid difficulty when requested mode does not exist Changed dungeon_difficulty in characters table to instance_mode_mask saving both dungeon and raid difficulty in form (dungeon diff | raid diff << 4) --HG-- branch : trunk
This commit is contained in:
@@ -165,18 +165,19 @@ bool MapManager::CanPlayerEnter(uint32 mapid, Player* player, bool loginCheck)
|
||||
if (!instance)
|
||||
return false;
|
||||
|
||||
Difficulty targetDifficulty = player->GetDifficulty(entry->IsRaid());
|
||||
//The player has a heroic mode and tries to enter into instance which has no a heroic mode
|
||||
MapDifficulty const* mapDiff = GetMapDifficultyData(entry->MapID,player->GetDifficulty(entry->IsRaid()));
|
||||
MapDifficulty const* mapDiff = GetMapDifficultyData(entry->MapID, targetDifficulty);
|
||||
if (!mapDiff)
|
||||
{
|
||||
bool isNormalTargetMap = entry->IsRaid()
|
||||
? (player->GetRaidDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL)
|
||||
: (player->GetDungeonDifficulty() == DUNGEON_DIFFICULTY_NORMAL);
|
||||
|
||||
// Send aborted message
|
||||
// FIX ME: what about absent normal/heroic mode with specific players limit...
|
||||
player->SendTransferAborted(mapid, TRANSFER_ABORT_DIFFICULTY, isNormalTargetMap ? DUNGEON_DIFFICULTY_NORMAL : DUNGEON_DIFFICULTY_HEROIC);
|
||||
return false;
|
||||
// Send aborted message for dungeons
|
||||
if (entry->IsNonRaidDungeon())
|
||||
{
|
||||
player->SendTransferAborted(mapid, TRANSFER_ABORT_DIFFICULTY, player->GetDungeonDifficulty());
|
||||
return false;
|
||||
}
|
||||
else // attempt to downscale
|
||||
mapDiff = GetDownscaledMapDifficultyData(entry->MapID, targetDifficulty);
|
||||
}
|
||||
|
||||
//Bypass checks for GMs
|
||||
@@ -249,7 +250,7 @@ bool MapManager::CanPlayerEnter(uint32 mapid, Player* player, bool loginCheck)
|
||||
}
|
||||
|
||||
//Other requirements
|
||||
return player->Satisfy(objmgr.GetAccessRequirement(instance->access_id), mapid, true);
|
||||
return player->Satisfy(objmgr.GetAccessRequirement(mapid, targetDifficulty), mapid, true);
|
||||
}
|
||||
|
||||
void MapManager::RemoveBonesFromMap(uint32 mapid, uint64 guid, float x, float y)
|
||||
|
||||
Reference in New Issue
Block a user