void Arena::HandleBattlegroundEvent(Object *src, Object *dst, uint16 EventID, uint32 params1, uint32 params2) { WorldPacket data; switch(EventID) { case BGEVENT_AB_PLAYER_DEATH: { Player *Source = ((Player*)src); if(!Source || src->GetTypeId() != TYPEID_PLAYER) return; uint64 guid = Source->GetGUID(); std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid); if(itr == m_PlayerScores.end()) { SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true); return; } itr->second.Deaths++; UpdatePVPData(); }break; case BGEVENT_AB_PLAYER_KILL: { Player *Source = ((Player*)src); if(!Source || src->GetTypeId() != TYPEID_PLAYER) return; uint64 guid = Source->GetGUID(); std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid); if(itr == m_PlayerScores.end()) { SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true); return; } itr->second.KillingBlows++; UpdatePVPData(); }break; } }
void AlteracValley::HandleBattlegroundEvent(Object *src, Object *dst, uint16 EventID, uint32 params1, uint32 params2) { WorldPacket data; switch(EventID) { case BGEVENT_AV_GENERAL_DEAD_HORDE: { // Play sound WorldPacket pkt; pkt.Initialize(SMSG_PLAY_SOUND); pkt << uint32(SOUND_ALLIANCEWINS); SendPacketToAll(&pkt); // set battleground win SetBattleGroundStatus(true); // alliance wins SetBattleGameWin(true); UpdatePVPData(); }break; case BGEVENT_AV_GENERAL_DEAD_ALLIANCE: { // Play sound WorldPacket pkt; pkt.Initialize(SMSG_PLAY_SOUND); pkt << uint32(SOUND_HORDEWINS); SendPacketToAll(&pkt); // set battleground win SetBattleGroundStatus(true); // horde wins SetBattleGameWin(false); UpdatePVPData(); }break; case BGEVENT_AV_PLAYER_DEATH: { Player *Source = ((Player*)src); if(!Source || src->GetTypeId() != TYPEID_PLAYER) return; uint64 guid = Source->GetGUID(); std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid); if(itr == m_PlayerScores.end()) { SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true); return; } itr->second.Deaths++; UpdatePVPData(); }break; case BGEVENT_AV_PLAYER_KILL: { Player *Source = ((Player*)src); if(!Source || src->GetTypeId() != TYPEID_PLAYER) return; uint64 guid = Source->GetGUID(); std::map<uint64, BattlegroundScore>::iterator itr = m_PlayerScores.find(guid); if(itr == m_PlayerScores.end()) { SendMessageToPlayer(Source, "INTERNAL ERROR: Could not find in internal player score map!", true); return; } itr->second.KillingBlows++; UpdatePVPData(); }break; } }