コード例 #1
0
void instance_scholomance::OnPlayerEnter(Player* pPlayer)
{
    // Summon Gandling if can
    DoSpawnGandlingIfCan(true);

    if (GetData(TYPE_RATTLEGORE) == DONE)
        DoRespawnEntranceRoom(pPlayer);
}
コード例 #2
0
void instance_scholomance::SetData(uint32 uiType, uint32 uiData)
{
    switch (uiType)
    {
        case TYPE_KIRTONOS:
            // This door is initially closed by DB-scripts, so only use it in case of FAIL, DONE, or on aggro after wipe
            if (m_auiEncounter[uiType] != FAIL && uiData == IN_PROGRESS)
                return;
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(GO_GATE_KIRTONOS);
            break;
        case TYPE_RATTLEGORE:
            m_auiEncounter[uiType] = uiData;
            if (uiData == DONE)
            {
                if (Player* pPlayer = GetPlayerInMap())
                    DoRespawnEntranceRoom(pPlayer);
            }
            break;
        case TYPE_RAS_FROSTWHISPER:
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(GO_GATE_RAS);
            break;
        case TYPE_MALICIA:                                  // TODO this code can be simplified, when it is known which event-ids correspond to which room
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(m_mGandlingData[EVENT_ID_MALICIA].m_doorGuid);
            break;
        case TYPE_THEOLEN:
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(m_mGandlingData[EVENT_ID_THEOLEN].m_doorGuid);
            break;
        case TYPE_POLKELT:
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(m_mGandlingData[EVENT_ID_POLKELT].m_doorGuid);
            break;
        case TYPE_RAVENIAN:
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(m_mGandlingData[EVENT_ID_RAVENIAN].m_doorGuid);
            break;
        case TYPE_ALEXEI_BAROV:
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(m_mGandlingData[EVENT_ID_BAROV].m_doorGuid);
            break;
        case TYPE_ILLUCIA_BAROV:
            m_auiEncounter[uiType] = uiData;
            DoUseDoorOrButton(m_mGandlingData[EVENT_ID_ILLUCIA].m_doorGuid);
            break;
        case TYPE_GANDLING:
            m_auiEncounter[uiType] = uiData;
            // Close the door to main room, because the encounter will take place only in the main hall and random around all the 6 rooms
            DoUseDoorOrButton(GO_GATE_GANDLING);
            break;
    }

    // Summon Gandling
    if (uiData == DONE)
        DoSpawnGandlingIfCan(false);

    if (uiData == DONE)
    {
        OUT_SAVE_INST_DATA;

        std::ostringstream saveStream;
        saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " "
                   << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5] << " "
                   << m_auiEncounter[6] << " " << m_auiEncounter[7] << " " << m_auiEncounter[8] << " " << m_auiEncounter[9];

        m_strInstData = saveStream.str();

        SaveToDB();
        OUT_SAVE_INST_DATA_COMPLETE;
    }
}
コード例 #3
0
void instance_scholomance::OnPlayerEnter(Player* pPlayer)
{
    // Summon Gandling if can
    DoSpawnGandlingIfCan(true);
}