void BattlegroundKT::PostUpdateImpl(uint32 diff) { if (GetStatus() == STATUS_IN_PROGRESS) { if (m_EndTimer <= diff) { uint32 allianceScore = GetTeamScore(ALLIANCE); uint32 hordeScore = GetTeamScore(HORDE); if (allianceScore > hordeScore) EndBattleground(ALLIANCE); else if (allianceScore < hordeScore) EndBattleground(HORDE); else { // if 0 => tie EndBattleground(m_LastCapturedOrbTeam); } } else { uint32 minutesLeftPrev = GetRemainingTimeInMinutes(); m_EndTimer -= diff; uint32 minutesLeft = GetRemainingTimeInMinutes(); if (minutesLeft != minutesLeftPrev) UpdateWorldState(BG_KT_TIME_REMAINING, minutesLeft); } if (m_UpdatePointsTimer <= diff) { for (uint8 i = 0; i < MAX_ORBS; ++i) if (uint64 guid = m_OrbKeepers[i]) if (m_playersZone.find(guid) != m_playersZone.end()) if (Player* player = ObjectAccessor::FindPlayer(guid)) { AccumulateScore(player->GetTeamId(), m_playersZone[guid]); UpdatePlayerScore(player, SCORE_ORB_SCORE, m_playersZone[guid]); } m_UpdatePointsTimer = BG_KT_POINTS_UPDATE_TIME; } else m_UpdatePointsTimer -= diff; } }
void BattlegroundKT::PostUpdateImpl(uint32 diff) { if (GetStatus() == STATUS_WAIT_JOIN) { m_CheatersCheckTimer -= diff; if (m_CheatersCheckTimer <= 0) { for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) { Player * plr = ObjectAccessor::FindPlayer(itr->first); if (!plr || !plr->IsInWorld()) continue; if (plr->GetPositionZ() < 24.0f) { if (plr->GetBGTeam() == HORDE) plr->TeleportTo(998, 1781.31f, 1597.76f, 33.61f, plr->GetOrientation(), 0); else plr->TeleportTo(998, 1784.42f, 1072.73f, 29.88f, plr->GetOrientation(), 0); } } m_CheatersCheckTimer = 4000; } } if (GetStatus() == STATUS_IN_PROGRESS) { if (m_EndTimer <= diff) { uint32 allianceScore = GetTeamScore(ALLIANCE); uint32 hordeScore = GetTeamScore(HORDE); if (allianceScore > hordeScore) EndBattleground(ALLIANCE); else if (allianceScore < hordeScore) EndBattleground(HORDE); else EndBattleground(m_LastCapturedOrbTeam); // if 0 => tie } else { uint32 minutesLeftPrev = GetRemainingTimeInMinutes(); m_EndTimer -= diff; uint32 minutesLeft = GetRemainingTimeInMinutes(); if (minutesLeft != minutesLeftPrev) UpdateWorldState(BG_KT_TIME_REMAINING, minutesLeft); } if (m_UpdatePointsTimer <= diff) { for (uint8 i = 0; i < MAX_ORBS; ++i) { if (uint64 guid = m_OrbKeepers[i]) { if (m_playersZone.find(guid) != m_playersZone.end()) { if (Player* player = ObjectAccessor::FindPlayer(guid)) { AccumulateScore(player->GetBGTeam() == ALLIANCE ? BG_TEAM_ALLIANCE : BG_TEAM_HORDE, m_playersZone[guid]); UpdatePlayerScore(player, SCORE_ORB_SCORE, m_playersZone[guid]); } } } } m_UpdatePointsTimer = BG_KT_POINTS_UPDATE_TIME; } else m_UpdatePointsTimer -= diff; } }