mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 19:37:02 +00:00
Backports from 400 branch.
This commit is contained in:
parent
bf774f49ce
commit
76dfdd336f
32 changed files with 223 additions and 210 deletions
|
|
@ -746,20 +746,22 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data)
|
|||
|
||||
if(!GetPlayer()->isGameMaster())
|
||||
{
|
||||
uint32 missingLevel = 0;
|
||||
bool missingItem = false;
|
||||
bool missingLevel = false;
|
||||
bool missingQuest = false;
|
||||
|
||||
if(GetPlayer()->getLevel() < at->requiredLevel && !sWorld.getConfig(CONFIG_BOOL_INSTANCE_IGNORE_LEVEL))
|
||||
missingLevel = at->requiredLevel;
|
||||
missingLevel = true;
|
||||
|
||||
// must have one or the other, report the first one that's missing
|
||||
uint32 missingItem = 0;
|
||||
if(at->requiredItem)
|
||||
{
|
||||
if(!GetPlayer()->HasItemCount(at->requiredItem, 1) &&
|
||||
(!at->requiredItem2 || !GetPlayer()->HasItemCount(at->requiredItem2, 1)))
|
||||
missingItem = at->requiredItem;
|
||||
missingItem = true;
|
||||
}
|
||||
else if(at->requiredItem2 && !GetPlayer()->HasItemCount(at->requiredItem2, 1))
|
||||
missingItem = at->requiredItem2;
|
||||
missingItem = true;
|
||||
|
||||
MapEntry const* mapEntry = sMapStore.LookupEntry(at->target_mapId);
|
||||
if(!mapEntry)
|
||||
|
|
@ -767,42 +769,39 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data)
|
|||
|
||||
bool isRegularTargetMap = GetPlayer()->GetDifficulty(mapEntry->IsRaid()) == REGULAR_DIFFICULTY;
|
||||
|
||||
uint32 missingKey = 0;
|
||||
if (!isRegularTargetMap)
|
||||
{
|
||||
if(at->heroicKey)
|
||||
{
|
||||
if(!GetPlayer()->HasItemCount(at->heroicKey, 1) &&
|
||||
(!at->heroicKey2 || !GetPlayer()->HasItemCount(at->heroicKey2, 1)))
|
||||
missingKey = at->heroicKey;
|
||||
missingItem = true;
|
||||
}
|
||||
else if(at->heroicKey2 && !GetPlayer()->HasItemCount(at->heroicKey2, 1))
|
||||
missingKey = at->heroicKey2;
|
||||
missingItem = true;
|
||||
}
|
||||
|
||||
uint32 missingQuest = 0;
|
||||
if (!isRegularTargetMap && mapEntry->IsDungeon())
|
||||
{
|
||||
if (at->requiredQuestHeroic && !GetPlayer()->GetQuestRewardStatus(at->requiredQuestHeroic))
|
||||
missingQuest = at->requiredQuestHeroic;
|
||||
missingQuest = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (at->requiredQuest && !GetPlayer()->GetQuestRewardStatus(at->requiredQuest))
|
||||
missingQuest = at->requiredQuest;
|
||||
missingQuest = true;
|
||||
}
|
||||
|
||||
if(missingLevel || missingItem || missingKey || missingQuest)
|
||||
if(missingItem || missingLevel || missingQuest)
|
||||
{
|
||||
// TODO: all this is probably wrong
|
||||
if(missingItem)
|
||||
SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED_AND_ITEM), at->requiredLevel, ObjectMgr::GetItemPrototype(missingItem)->Name1);
|
||||
else if(missingKey)
|
||||
GetPlayer()->SendTransferAborted(at->target_mapId, TRANSFER_ABORT_DIFFICULTY, isRegularTargetMap ? DUNGEON_DIFFICULTY_NORMAL : DUNGEON_DIFFICULTY_HEROIC);
|
||||
else if(missingQuest)
|
||||
// hack for "Opening of the Dark Portal"
|
||||
if(missingQuest && at->target_mapId == 269)
|
||||
SendAreaTriggerMessage("%s", at->requiredFailedText.c_str());
|
||||
else if(missingLevel)
|
||||
SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED), missingLevel);
|
||||
// hack for TBC heroics
|
||||
else if(missingLevel && !mapEntry->IsRaid() && GetPlayer()->GetDifficulty(false) == DUNGEON_DIFFICULTY_HEROIC && mapEntry->addon == 1)
|
||||
SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED), at->requiredLevel);
|
||||
else
|
||||
GetPlayer()->SendTransferAborted(at->target_mapId, TRANSFER_ABORT_DIFFICULTY, GetPlayer()->GetDifficulty(mapEntry->IsRaid()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue