void BattlegroundEY::UpdatePointStatuses() { for (uint8 point = 0; point < EY_POINTS_MAX; ++point) { if (m_PlayersNearPoint[point].empty()) continue; //count new point bar status: m_PointBarStatus[point] += (m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] < BG_EY_POINT_MAX_CAPTURERS_COUNT) ? m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] : BG_EY_POINT_MAX_CAPTURERS_COUNT; if (m_PointBarStatus[point] > BG_EY_PROGRESS_BAR_ALI_CONTROLLED) //point is fully alliance's m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_ALI_CONTROLLED; if (m_PointBarStatus[point] < BG_EY_PROGRESS_BAR_HORDE_CONTROLLED) //point is fully horde's m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_HORDE_CONTROLLED; uint32 pointOwnerTeamId = 0; //find which team should own this point if (m_PointBarStatus[point] <= BG_EY_PROGRESS_BAR_NEUTRAL_LOW) pointOwnerTeamId = HORDE; else if (m_PointBarStatus[point] >= BG_EY_PROGRESS_BAR_NEUTRAL_HIGH) pointOwnerTeamId = ALLIANCE; else pointOwnerTeamId = EY_POINT_NO_OWNER; for (uint8 i = 0; i < m_PlayersNearPoint[point].size(); ++i) { Player* player = ObjectAccessor::FindPlayer(m_PlayersNearPoint[point][i]); if (player) { this->UpdateWorldStateForPlayer(PROGRESS_BAR_STATUS, m_PointBarStatus[point], player); //if point owner changed we must evoke event! if (pointOwnerTeamId != m_PointOwnedByTeam[point]) { //point was uncontrolled and player is from team which captured point if (m_PointState[point] == EY_POINT_STATE_UNCONTROLLED && player->GetTeam() == pointOwnerTeamId) this->EventTeamCapturedPoint(player, point); //point was under control and player isn't from team which controlled it if (m_PointState[point] == EY_POINT_UNDER_CONTROL && player->GetTeam() != m_PointOwnedByTeam[point]) this->EventTeamLostPoint(player, point); } // Fix for Fel Reaver Ruins // This is here because the capture point areatrigger overlays the flag deposit one. // Their respective IDs are 5866 and 4515 // Most probably Blizz wanted it to be this way but could not make it // So they removed areaTrigger 5866. Best would be to implement DISABLE_AREATRIGGER. if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetTeam()) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) if (player->GetDistance2d(float(2044), float(1730)) < 2.0f) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); } } } }
void BattlegroundEY::UpdatePointStatuses() { _400Ally40Horde = 0; for(uint8 point = 0; point < EY_POINTS_MAX; ++point) { if(m_PlayersNearPoint[point].empty()) continue; //count new point bar status: m_PointBarStatus[point] += (m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] < BG_EY_POINT_MAX_CAPTURERS_COUNT) ? m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] : BG_EY_POINT_MAX_CAPTURERS_COUNT; if(m_PointBarStatus[point] > BG_EY_PROGRESS_BAR_ALI_CONTROLLED) { m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_ALI_CONTROLLED; _400Ally40Horde += 10; } else if(m_PointBarStatus[point] < BG_EY_PROGRESS_BAR_HORDE_CONTROLLED) { _400Ally40Horde += 100; m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_HORDE_CONTROLLED; } uint32 pointOwnerTeamId = 0; //find which team should own this point if(m_PointBarStatus[point] <= BG_EY_PROGRESS_BAR_NEUTRAL_LOW) pointOwnerTeamId = HORDE; else if(m_PointBarStatus[point] >= BG_EY_PROGRESS_BAR_NEUTRAL_HIGH) pointOwnerTeamId = ALLIANCE; else pointOwnerTeamId = EY_POINT_NO_OWNER; for(uint8 i = 0; i < m_PlayersNearPoint[point].size(); ++i) { Player* plr = sObjectMgr->GetPlayer(m_PlayersNearPoint[point][i]); if(plr) { this->UpdateWorldStateForPlayer(PROGRESS_BAR_STATUS, m_PointBarStatus[point], plr); //if point owner changed we must evoke event! if(pointOwnerTeamId != m_PointOwnedByTeam[point]) { //point was uncontrolled and player is from team which captured point if(m_PointState[point] == EY_POINT_STATE_UNCONTROLLED && plr->GetTeam() == pointOwnerTeamId) this->EventTeamCapturedPoint(plr, point); //point was under control and player isn't from team which controlled it if(m_PointState[point] == EY_POINT_UNDER_CONTROL && plr->GetTeam() != m_PointOwnedByTeam[point]) this->EventTeamLostPoint(plr, point); } if(point == FEL_REAVER && m_PointOwnedByTeam[point] == plr->GetTeam()) // hack fix for Fel Reaver Ruins { if(m_FlagState && GetFlagPickerGUID() == plr->GetGUID()) if(plr->GetDistance2d(2044.0f,1730.0f) < 7.0f) EventPlayerCapturedFlag(plr, BG_EY_OBJECT_FLAG_FEL_REAVER); } } } } }
void BattleGroundTP::HandleAreaTrigger(Player* source, uint32 Trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; //uint32 SpellId = 0; //uint64 buff_guid = 0; switch(Trigger) { case 5906: // alliance buff near door case 5907: // horde buff near door case 5908: // horde spawn tower case 5909: // alliance spawn house case 5910: // horde spawn farm case 5911: // alliance spawn farm case 5914: // alliance at stronghold right case 5916: // horde stronghold door case 5917: // alliance at stronghold left case 5918: // horde stronghold right case 5920: // horde stronghold door 2 case 5921: // horde stronghold left case 6803: // horde central gy case 6804: // alliance central gy case 6805: // horde base gy case 6806: // alliance base gy break; case 5904: // Alliance Flag spawn if (m_FlagState[TEAM_INDEX_HORDE] && !m_FlagState[TEAM_INDEX_ALLIANCE]) if (GetHordeFlagCarrierGuid() == source->GetObjectGuid()) EventPlayerCapturedFlag(source); break; case 5905: // Horde Flag spawn if (m_FlagState[TEAM_INDEX_ALLIANCE] && !m_FlagState[TEAM_INDEX_HORDE]) if (GetAllianceFlagCarrierGuid() == source->GetObjectGuid()) EventPlayerCapturedFlag(source); break; default: ERROR_LOG("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); break; } }
void BattleGroundEY::Update(uint32 diff) { BattleGround::Update(diff); if (GetStatus() != STATUS_IN_PROGRESS) return; // resource counter if (m_resourceUpdateTimer < diff) { UpdateResources(); m_resourceUpdateTimer = EY_RESOURCES_UPDATE_TIME; } else m_resourceUpdateTimer -= diff; // flag respawn if (m_flagState == EY_FLAG_STATE_WAIT_RESPAWN || m_flagState == EY_FLAG_STATE_ON_GROUND) { if (m_flagRespawnTimer < diff) { m_flagRespawnTimer = 0; if (m_flagState == EY_FLAG_STATE_WAIT_RESPAWN) RespawnFlag(); else RespawnDroppedFlag(); } else m_flagRespawnTimer -= diff; } // workaround for Fel Reaver Ruins flag capture needed on 3.3.5 only // the original areatrigger (4514) is covered by a bigger one (4515) and is not triggered on client side if (IsFlagPickedUp()) { if (m_felReaverFlagTimer < diff) { Player* flagCarrier = sObjectMgr.GetPlayer(GetFlagCarrierGuid()); if (flagCarrier) { if (m_towerOwner[NODE_FEL_REAVER_RUINS] == flagCarrier->GetTeam()) { // coords and range taken from DBC of areatrigger (4514) if (flagCarrier->IsWithinDist3d(2044.0f, 1729.729f, 1190.03f, 3.0f)) EventPlayerCapturedFlag(flagCarrier, NODE_FEL_REAVER_RUINS); } } m_felReaverFlagTimer = EY_FEL_REAVER_FLAG_UPDATE_TIME; } else m_felReaverFlagTimer -= diff; } }
void BattlegroundEY::UpdatePointStatuses() { for (uint8 point = 0; point < EY_POINTS_MAX; ++point) { if (m_PlayersNearPoint[point].empty()) continue; // Count new point bar status: m_PointBarStatus[point] += (m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] < BG_EY_POINT_MAX_CAPTURERS_COUNT) ? m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] : BG_EY_POINT_MAX_CAPTURERS_COUNT; if (m_PointBarStatus[point] > BG_EY_PROGRESS_BAR_ALI_CONTROLLED) // Point is full Alliance. m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_ALI_CONTROLLED; if (m_PointBarStatus[point] < BG_EY_PROGRESS_BAR_HORDE_CONTROLLED) // Point is full Horde. m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_HORDE_CONTROLLED; uint32 pointOwnerTeamId = 0; // Find which team should own this point. if (m_PointBarStatus[point] <= BG_EY_PROGRESS_BAR_NEUTRAL_LOW) pointOwnerTeamId = HORDE; else if (m_PointBarStatus[point] >= BG_EY_PROGRESS_BAR_NEUTRAL_HIGH) pointOwnerTeamId = ALLIANCE; else pointOwnerTeamId = EY_POINT_NO_OWNER; for (uint8 i = 0; i < m_PlayersNearPoint[point].size(); ++i) { Player* player = ObjectAccessor::FindPlayer(m_PlayersNearPoint[point][i]); if (player) { UpdateWorldStateForPlayer(PROGRESS_BAR_STATUS, m_PointBarStatus[point], player); // If the point owner changed we must evoke the event! if (pointOwnerTeamId != m_PointOwnedByTeam[point]) { // The point was uncontrolled and the player is from the team which captured the point. if (m_PointState[point] == EY_POINT_STATE_UNCONTROLLED && player->GetBGTeam() == pointOwnerTeamId) this->EventTeamCapturedPoint(player, point); // The point was under control andthe player isn't from the team which controlled it. if (m_PointState[point] == EY_POINT_UNDER_CONTROL && player->GetBGTeam() != m_PointOwnedByTeam[point]) this->EventTeamLostPoint(player, point); } // Fix for Fel Reaver Ruins. if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetBGTeam()) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) if (player->GetDistance2d(2044.0f, 1730.0f) < 2.0f) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); } } } }
void BattleGroundEY::Update(uint32 diff) { BattleGround::Update(diff); if (GetStatus() == STATUS_IN_PROGRESS) { m_PointAddingTimer -= diff; if (m_PointAddingTimer <= 0) { m_PointAddingTimer = BG_EY_FPOINTS_TICK_TIME; if (m_TeamPointsCount[BG_TEAM_ALLIANCE] > 0) AddPoints(ALLIANCE, BG_EY_TickPoints[m_TeamPointsCount[BG_TEAM_ALLIANCE] - 1]); if (m_TeamPointsCount[BG_TEAM_HORDE] > 0) AddPoints(HORDE, BG_EY_TickPoints[m_TeamPointsCount[BG_TEAM_HORDE] - 1]); } if (m_FlagState == BG_EY_FLAG_STATE_WAIT_RESPAWN || m_FlagState == BG_EY_FLAG_STATE_ON_GROUND) { m_FlagsTimer -= diff; if (m_FlagsTimer < 0) { m_FlagsTimer = 0; if (m_FlagState == BG_EY_FLAG_STATE_WAIT_RESPAWN) RespawnFlag(true); else RespawnFlagAfterDrop(); } } m_TowerCapCheckTimer -= diff; if (m_TowerCapCheckTimer <= 0) { //check if player joined point /*I used this order of calls, because although we will check if one player is in gameobject's distance 2 times but we can count of players on current point in CheckSomeoneLeftPoint */ CheckSomeoneJoinedPoint(); //check if player left point CheckSomeoneLeftPoint(); UpdatePointStatuses(); m_TowerCapCheckTimer = BG_EY_FPOINTS_TICK_TIME; } // areatrigger for Fel Reaver was removed? so: if (m_FlagState) if(Player* plr = sObjectMgr.GetPlayer(GetFlagPickerGuid())) if(plr->GetDistance2d(2043.99f, 1729.91f) < 2) if(m_PointState[BG_EY_NODE_FEL_REAVER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[BG_EY_NODE_FEL_REAVER] == plr->GetTeam()) EventPlayerCapturedFlag(plr, BG_EY_NODE_FEL_REAVER); } }
void BattlegroundTP::HandleAreaTrigger(Player *Source, uint32 Trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; //uint32 SpellId = 0; //uint64 buff_guid = 0; switch(Trigger) { case 5904: // Alliance Flag spawn if (m_FlagState[BG_TEAM_HORDE] && !m_FlagState[BG_TEAM_ALLIANCE]) if (GetHordeFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 5905: // Horde Flag spawn if (m_FlagState[BG_TEAM_ALLIANCE] && !m_FlagState[BG_TEAM_HORDE]) if (GetAllianceFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 5908: // Horde Tower case 5909: // Twin Peak House big case 5910: // Horde House case 5911: // Twin Peak House small case 5914: // Allianz Start right case 5916: // Allianz Start case 5917: // Allianz Start left case 5918: // Horde Start case 5920: // Horde Start Front entrance case 5921: // Horde Start left Water channel break; default: sLog->outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); break; } //if (buff_guid) // HandleTriggerBuff(buff_guid, Source); }
void BattlegroundTP::HandleAreaTrigger(Player* player, uint32 trigger) { if (GetStatus() != STATUS_IN_PROGRESS) return; //uint32 SpellId = 0; //uint64 buff_guid = 0; switch (trigger) { case 5904: // Alliance Flag spawn if (_flagState[TEAM_HORDE] && !_flagState[TEAM_ALLIANCE]) if (GetFlagPickerGUID(TEAM_HORDE) == player->GetGUID()) EventPlayerCapturedFlag(player); break; case 5905: // Horde Flag spawn if (_flagState[TEAM_ALLIANCE] && !_flagState[TEAM_HORDE]) if (GetFlagPickerGUID(TEAM_ALLIANCE) == player->GetGUID()) EventPlayerCapturedFlag(player); break; case 5908: // Horde Tower case 5909: // Twin Peak House big case 5910: // Horde House case 5911: // Twin Peak House small case 5914: // Alliance Start right case 5916: // Alliance Start case 5917: // Alliance Start left case 5918: // Horde Start case 5920: // Horde Start Front entrance case 5921: // Horde Start left Water channel break; default: Battleground::HandleAreaTrigger(player, trigger); break; } //if (buff_guid) // HandleTriggerBuff(buff_guid, Source); }
void BattlegroundEY::UpdatePointStatuses() { for (uint8 point = 0; point < EY_POINTS_MAX; ++point) { if (m_PlayersNearPoint[point].empty()) continue; //count new point bar status: m_PointBarStatus[point] += (m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] < BG_EY_POINT_MAX_CAPTURERS_COUNT) ? m_CurrentPointPlayersCount[2 * point] - m_CurrentPointPlayersCount[2 * point + 1] : BG_EY_POINT_MAX_CAPTURERS_COUNT; if (m_PointBarStatus[point] > BG_EY_PROGRESS_BAR_ALI_CONTROLLED) //point is fully alliance's m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_ALI_CONTROLLED; if (m_PointBarStatus[point] < BG_EY_PROGRESS_BAR_HORDE_CONTROLLED) //point is fully horde's m_PointBarStatus[point] = BG_EY_PROGRESS_BAR_HORDE_CONTROLLED; uint32 pointOwnerTeamId = 0; //find which team should own this point if (m_PointBarStatus[point] <= BG_EY_PROGRESS_BAR_NEUTRAL_LOW) pointOwnerTeamId = HORDE; else if (m_PointBarStatus[point] >= BG_EY_PROGRESS_BAR_NEUTRAL_HIGH) pointOwnerTeamId = ALLIANCE; else pointOwnerTeamId = EY_POINT_NO_OWNER; for (uint8 i = 0; i < m_PlayersNearPoint[point].size(); ++i) { Player* player = ObjectAccessor::FindPlayer(m_PlayersNearPoint[point][i]); if (player) { this->UpdateWorldStateForPlayer(PROGRESS_BAR_STATUS, m_PointBarStatus[point], player); //if point owner changed we must evoke event! if (pointOwnerTeamId != m_PointOwnedByTeam[point]) { //point was uncontrolled and player is from team which captured point if (m_PointState[point] == EY_POINT_STATE_UNCONTROLLED && player->GetTeam() == pointOwnerTeamId) this->EventTeamCapturedPoint(player, point); //point was under control and player isn't from team which controlled it if (m_PointState[point] == EY_POINT_UNDER_CONTROL && player->GetTeam() != m_PointOwnedByTeam[point]) this->EventTeamLostPoint(player, point); } /// @workaround The original AreaTrigger is covered by a bigger one and not triggered on client side. if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetTeam()) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) if (player->GetDistance(2044.0f, 1729.729f, 1190.03f) < 3.0f) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); } } } }
void BattleGroundWS::HandleAreaTrigger(Player* source, uint32 trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; // uint32 SpellId = 0; // uint64 buff_guid = 0; switch (trigger) { case 3686: // Alliance elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in BattleGround::Update(). case 3687: // Horde elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in BattleGround::Update(). case 3706: // Alliance elixir of regeneration spawn case 3708: // Horde elixir of regeneration spawn case 3707: // Alliance elixir of berserk spawn case 3709: // Horde elixir of berserk spawn break; case 3646: // Alliance Flag spawn if (m_FlagState[BG_TEAM_HORDE] && !m_FlagState[BG_TEAM_ALLIANCE]) if (GetHordeFlagCarrierGuid() == source->GetObjectGuid()) EventPlayerCapturedFlag(source); break; case 3647: // Horde Flag spawn if (m_FlagState[BG_TEAM_ALLIANCE] && !m_FlagState[BG_TEAM_HORDE]) if (GetAllianceFlagCarrierGuid() == source->GetObjectGuid()) EventPlayerCapturedFlag(source); break; case 3649: // unk1 case 3688: // unk2 case 4628: // unk3 case 4629: // unk4 break; default: sLog.outError("WARNING: Unhandled AreaTrigger in Battleground: %u", trigger); source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", trigger); break; } }
bool BattleGroundWS::HandleAreaTrigger(Player* source, uint32 trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return false; switch (trigger) { case 3646: // Alliance Flag spawn if (m_FlagState[TEAM_INDEX_HORDE] && !m_FlagState[TEAM_INDEX_ALLIANCE]) if (GetHordeFlagCarrierGuid() == source->GetObjectGuid()) EventPlayerCapturedFlag(source); break; case 3647: // Horde Flag spawn if (m_FlagState[TEAM_INDEX_ALLIANCE] && !m_FlagState[TEAM_INDEX_HORDE]) if (GetAllianceFlagCarrierGuid() == source->GetObjectGuid()) EventPlayerCapturedFlag(source); break; default: return false; } return true; }
bool BattleGroundWS::HandleAreaTrigger(Player* source, uint32 trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) { return false; } // uint32 SpellId = 0; // uint64 buff_guid = 0; switch (trigger) { case 3646: // Alliance Flag spawn if (m_FlagState[TEAM_INDEX_HORDE] && !m_FlagState[TEAM_INDEX_ALLIANCE]) if (GetHordeFlagCarrierGuid() == source->GetObjectGuid()) { EventPlayerCapturedFlag(source); } break; case 3647: // Horde Flag spawn if (m_FlagState[TEAM_INDEX_ALLIANCE] && !m_FlagState[TEAM_INDEX_HORDE]) if (GetAllianceFlagCarrierGuid() == source->GetObjectGuid()) { EventPlayerCapturedFlag(source); } break; case 3669: // horde portal if (source->GetTeam() != HORDE) { source->GetSession()->SendNotification(LANG_BATTLEGROUND_ONLY_HORDE_USE); } else { source->LeaveBattleground(); } break; case 3671: // alliance portal if (source->GetTeam() != ALLIANCE) { source->GetSession()->SendNotification(LANG_BATTLEGROUND_ONLY_ALLIANCE_USE); } else { source->LeaveBattleground(); } break; default: return false; } return true; }
void BattleGroundWS::HandleAreaTrigger(Player *Source, uint32 Trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; //uint32 SpellId = 0; //uint64 buff_guid = 0; switch(Trigger) { case 3686: // Alliance elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in BattleGround::Update(). //buff_guid = m_BgObjects[BG_WS_OBJECT_SPEEDBUFF_1]; break; case 3687: // Horde elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in BattleGround::Update(). //buff_guid = m_BgObjects[BG_WS_OBJECT_SPEEDBUFF_2]; break; case 3706: // Alliance elixir of regeneration spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_REGENBUFF_1]; break; case 3708: // Horde elixir of regeneration spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_REGENBUFF_2]; break; case 3707: // Alliance elixir of berserk spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_BERSERKBUFF_1]; break; case 3709: // Horde elixir of berserk spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_BERSERKBUFF_2]; break; case 3646: // Alliance Flag spawn if (m_FlagState[BG_TEAM_HORDE] && !m_FlagState[BG_TEAM_ALLIANCE]) if (GetHordeFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 3647: // Horde Flag spawn if (m_FlagState[BG_TEAM_ALLIANCE] && !m_FlagState[BG_TEAM_HORDE]) if (GetAllianceFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 3669: // horde portal if (Source->GetTeam() != HORDE) Source->GetSession()->SendNotification(LANG_BATTLEGROUND_ONLY_HORDE_USE); else Source->LeaveBattleground(); break; case 3671: // alliance portal if (Source->GetTeam() != ALLIANCE) Source->GetSession()->SendNotification(LANG_BATTLEGROUND_ONLY_ALLIANCE_USE); else Source->LeaveBattleground(); break; /*case 3649: // unk1 case 3688: // unk2 case 4628: // unk3 case 4629: // unk4 break; */ default: sLog.outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); break; } //if (buff_guid) // HandleTriggerBuff(buff_guid,Source); }