All pastes #754158 Raw Edit

lol

public text v1 · immutable
#754158 ·published 2007-10-29 20:45 UTC
rendered paste body
    if (!player->isAlive())
    {
        if(Corpse *corpse = player->GetCorpse())
        {
            if (corpse->GetMapId() != GetId())
            {
                player->GetSession()->SendAreaTriggerMessage("You cannot enter %s while in a ghost mode", GetMapName());
                sLog.outDebug("MAP: Player '%s' doesn't has a corpse in instance '%s' and can't enter", player->GetName(), GetMapName());
                return(false);
            }
            sLog.outDebug("MAP: Player '%s' has corpse in instance '%s' and can enter", player->GetName(), GetMapName());
        }
        else
        {
            sLog.outDebug("Map::CanEnter - player '%s' is dead but doesn't have a corpse!", player->GetName());
        }
    }

	//Attunement system
    uint32 RequiredItem;
    uint32 RequiredQuest;
    std::vector<std::string> RequiredQuests;
    bool QuestCompleted;
    //Attunement check
    RequiredItem = 0;
    RequiredQuest = 0;
    QuestCompleted = false;
    uint32 qmapid = GetId();
    QueryResult* result = sDatabase.PQuery("SELECT `RequiredQuest`,`RequiredItem` FROM `instance_template`  WHERE `map` = '%d'", qmapid);    
    Field *fields = result->Fetch();
    RequiredQuests = StrSplit(fields[0].GetString(), ";");
    RequiredItem = fields[1].GetUInt32();
    delete result;
    //Check for required quest
    std::vector<std::string>::iterator iter;
    int index;
    for (iter = RequiredQuests.begin(), index = 0; index < RequiredQuests.size(); ++iter, ++index)
    {
        RequiredQuest = uint32(atoi((*iter).c_str()));
        if (player->GetQuestRewardStatus(RequiredQuest) || RequiredQuest == 0)
            QuestCompleted = true;
        sLog.outDebug("Map: Instance attunement check: RequiredQuest: %d, RewardStatus: %d", RequiredQuest, player->GetQuestRewardStatus(RequiredQuest));
    }
    sLog.outDebug("Map: RequiredQuest array size: %d", RequiredQuests.size());
    if (!QuestCompleted && !player->isGameMaster()) {
        player->GetSession()->SendAreaTriggerMessage("You are not attuned to %s.", GetMapName());
        return(false);
    }

    //Check for required item
    if (!player->HasItemCount(RequiredItem, 1) && RequiredItem != 0 && !player->isGameMaster()) {
        player->GetSession()->SendAreaTriggerMessage("You do not have the required key for this instance.", GetMapName());
        return(false);
    }

    if(i_data && i_data->IsEncounterInProgress())
    {
        sLog.outDebug("MAP: Player '%s' can't enter instance '%s' while an encounter is in progress.", player->GetName(), GetMapName());
        player->SendTransferAborted(GetId(), TRANSFER_ABORT_ZONE_IN_COMBAT);
        return(false);
    }

    return(true);