void SummonAdds(bool bRightSide, uint32 uiSummonEntry) { std::list<Creature*> lSummonList; m_pInstance->GetGothSummonPointCreatures(lSummonList, bRightSide); if (lSummonList.empty()) return; uint8 uiCount = 2; switch(uiSummonEntry) { case NPC_UNREL_TRAINEE: lSummonList.sort(ObjectDistanceOrder(m_creature)); break; case NPC_UNREL_DEATH_KNIGHT: case NPC_UNREL_RIDER: uiCount = 1; lSummonList.sort(ObjectDistanceOrderReversed(m_creature)); break; } for(std::list<Creature*>::iterator itr = lSummonList.begin(); itr != lSummonList.end(); ++itr) { if (uiCount == 0) break; m_creature->SummonCreature(uiSummonEntry, (*itr)->GetPositionX(), (*itr)->GetPositionY(), (*itr)->GetPositionZ(), (*itr)->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); --uiCount; } }
void PrepareSummonPlaces() { std::list<Creature*> lSummonList; m_pInstance->GetGothSummonPointCreatures(lSummonList, true); if (lSummonList.empty()) return; // Trainees and Rider uint8 index = 0; uint8 uiTraineeCount = 3; lSummonList.sort(ObjectDistanceOrder(m_creature)); for (std::list<Creature*>::iterator itr = lSummonList.begin(); itr != lSummonList.end(); ++itr) { if (*itr) { if (uiTraineeCount == 0) break; if (index == 1) m_lRiderSummonPosGuids.push_back((*itr)->GetObjectGuid()); else { m_lTraineeSummonPosGuids.push_back((*itr)->GetObjectGuid()); --uiTraineeCount; } index++; } } // DeathKnights uint8 uiDeathKnightCount = 2; lSummonList.sort(ObjectDistanceOrderReversed(m_creature)); for (std::list<Creature*>::iterator itr = lSummonList.begin(); itr != lSummonList.end(); ++itr) { if (*itr) { if (uiDeathKnightCount == 0) break; m_lDeathKnightSummonPosGuids.push_back((*itr)->GetObjectGuid()); --uiDeathKnightCount; } } }
void PrepareSummonPlaces() { CreatureList lSummonList; m_pInstance->GetGothSummonPointCreatures(lSummonList, true); if (lSummonList.empty()) return; // Trainees and Rider uint8 index = 0; uint8 uiTraineeCount = 3; lSummonList.sort(ObjectDistanceOrder(m_creature)); for (auto& itr : lSummonList) { if (itr) { if (uiTraineeCount == 0) break; if (index == 1) m_lRiderSummonPosGuids.push_back(itr->GetObjectGuid()); else { m_lTraineeSummonPosGuids.push_back(itr->GetObjectGuid()); --uiTraineeCount; } index++; } } // DeathKnights uint8 uiDeathKnightCount = 2; lSummonList.sort(ObjectDistanceOrderReversed(m_creature)); for (auto& itr : lSummonList) { if (itr) { if (uiDeathKnightCount == 0) break; m_lDeathKnightSummonPosGuids.push_back(itr->GetObjectGuid()); --uiDeathKnightCount; } } }