// Called when player kill a unit in wg zone void BattlefieldWG::HandleKill(Player* killer, Unit* victim) { if (killer == victim) return; bool again = false; TeamId killerTeam = killer->GetTeamId(); if (victim->GetTypeId() == TYPEID_PLAYER) { for (GuidSet::const_iterator itr = m_PlayersInWar[killerTeam].begin(); itr != m_PlayersInWar[killerTeam].end(); ++itr) if (Player* player = sObjectAccessor->FindPlayer(*itr)) if (player->GetDistance2d(killer) < 40) PromotePlayer(player); return; } for (GuidSet::const_iterator itr = KeepCreature[GetOtherTeam(killerTeam)].begin(); itr != KeepCreature[GetOtherTeam(killerTeam)].end(); ++itr) { if (Creature* creature = GetCreature(*itr)) { if (victim->GetEntry() == creature->GetEntry() && !again) { again = true; for (GuidSet::const_iterator iter = m_PlayersInWar[killerTeam].begin(); iter != m_PlayersInWar[killerTeam].end(); ++iter) if (Player* player = sObjectAccessor->FindPlayer(*iter)) if (player->GetDistance2d(killer) < 40.0f) PromotePlayer(player); } } } /// @todoRecent PvP activity worldstate }
void OPvPWintergrasp::HandleKill(Player *killer, Unit *victim) { bool ok = false; if (victim->GetTypeId() == TYPEID_PLAYER) { if (victim->getLevel() >= 70) ok = true; } else { switch(GetCreatureType(victim->GetEntry())) { case CREATURE_SIEGE_VEHICLE: case CREATURE_GUARD: case CREATURE_TURRET: ok = true; break; } } if (ok) { if (Group *pGroup = killer->GetGroup()) { for (GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next()) if (itr->getSource()->IsAtGroupRewardDistance(killer) && itr->getSource()->getLevel() > 69) PromotePlayer(itr->getSource()); } else if (killer->getLevel() > 69) PromotePlayer(killer); } }
// Called when player kill a unit in wg zone void BattlefieldTB::HandleKill(Player* killer, Unit* victim) { if (killer == victim || victim->GetTypeId() != TYPEID_PLAYER) return; TeamId killerTeam = killer->GetTeamId(); for (ObjectGuid const& guid : m_PlayersInWar[killerTeam]) if (Player* player = ObjectAccessor::FindPlayer(guid)) if (player->GetDistance2d(killer) < 40.0f) PromotePlayer(player); }
// Called when player kill a unit in wg zone void BattlefieldWG::HandleKill(Player* killer, Unit* victim) { if (killer == victim) return; bool again = false; if (victim->GetTypeId() == TYPEID_PLAYER) { IncrementQuest(killer, WGQuest[killer->GetTeamId()][4]); IncrementQuest(killer, WGQuest[killer->GetTeamId()][5]); for (GuidSet::const_iterator itr = m_PlayersInWar[killer->GetTeamId()].begin(); itr != m_PlayersInWar[killer->GetTeamId()].end(); ++itr) { if (Player* player = ObjectAccessor::FindPlayer(*itr)) if (player->GetDistance2d(killer) < 40) PromotePlayer(player); } return; } for (GuidSet::const_iterator itr = m_vehicles[killer->GetTeamId()? TEAM_ALLIANCE : TEAM_HORDE].begin(); itr != m_vehicles[killer->GetTeamId()? TEAM_ALLIANCE : TEAM_HORDE].end(); ++itr) { if (Unit* unit = ObjectAccessor::FindUnit(*itr)) { if (Creature* creature = unit->ToCreature()) { if (victim->GetEntry() == creature->GetEntry() && !again) { again = true; for (GuidSet::const_iterator iter = m_PlayersInWar[killer->GetTeamId()].begin(); iter != m_PlayersInWar[killer->GetTeamId()].end(); ++iter) { if (Player* player = ObjectAccessor::FindPlayer(*iter)) if (player->GetDistance2d(killer) < 40) IncrementQuest(player, WGQuest[player->GetTeamId()][0]); } } } } } for (GuidSet::const_iterator itr = KeepCreature[killer->GetTeamId()? TEAM_ALLIANCE : TEAM_HORDE].begin(); itr != KeepCreature[killer->GetTeamId()? TEAM_ALLIANCE : TEAM_HORDE].end(); ++itr) { if (Unit* unit = ObjectAccessor::FindUnit(*itr)) { if (Creature* creature = unit->ToCreature()) { if (victim->GetEntry() == creature->GetEntry() && !again) { again = true; IncrementQuest(killer, WGQuest[killer->GetTeamId()][4]); IncrementQuest(killer, WGQuest[killer->GetTeamId()][5]); for (GuidSet::const_iterator iter = m_PlayersInWar[killer->GetTeamId()].begin(); iter != m_PlayersInWar[killer->GetTeamId()].end(); ++iter) { if (Player* player = ObjectAccessor::FindPlayer(*iter)) if (player->GetDistance2d(killer) < 40) PromotePlayer(player); } } } } } // TODO:Recent PvP activity worldstate }