void BattleGroundWS::Update(uint32 diff) { BattleGround::Update(diff); if (GetStatus() == STATUS_IN_PROGRESS) { if (m_FlagState[TEAM_INDEX_ALLIANCE] == BG_WS_FLAG_STATE_WAIT_RESPAWN) { m_FlagsTimer[TEAM_INDEX_ALLIANCE] -= diff; if (m_FlagsTimer[TEAM_INDEX_ALLIANCE] < 0) { m_FlagsTimer[TEAM_INDEX_ALLIANCE] = 0; RespawnFlag(ALLIANCE, true); } } if (m_FlagState[TEAM_INDEX_ALLIANCE] == BG_WS_FLAG_STATE_ON_GROUND) { m_FlagsDropTimer[TEAM_INDEX_ALLIANCE] -= diff; if (m_FlagsDropTimer[TEAM_INDEX_ALLIANCE] < 0) { m_FlagsDropTimer[TEAM_INDEX_ALLIANCE] = 0; RespawnDroppedFlag(ALLIANCE); } } if (m_FlagState[TEAM_INDEX_HORDE] == BG_WS_FLAG_STATE_WAIT_RESPAWN) { m_FlagsTimer[TEAM_INDEX_HORDE] -= diff; if (m_FlagsTimer[TEAM_INDEX_HORDE] < 0) { m_FlagsTimer[TEAM_INDEX_HORDE] = 0; RespawnFlag(HORDE, true); } } if (m_FlagState[TEAM_INDEX_HORDE] == BG_WS_FLAG_STATE_ON_GROUND) { m_FlagsDropTimer[TEAM_INDEX_HORDE] -= diff; if (m_FlagsDropTimer[TEAM_INDEX_HORDE] < 0) { m_FlagsDropTimer[TEAM_INDEX_HORDE] = 0; RespawnDroppedFlag(HORDE); } } } }
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; } }
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 BattleGroundWS::Update(uint32 diff) { BattleGround::Update(diff); if (GetStatus() == STATUS_IN_PROGRESS) { if (m_FlagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_WAIT_RESPAWN) { m_FlagsTimer[BG_TEAM_ALLIANCE] -= diff; if (m_FlagsTimer[BG_TEAM_ALLIANCE] < 0) { m_FlagsTimer[BG_TEAM_ALLIANCE] = 0; RespawnFlag(ALLIANCE, true); } } if (m_FlagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_ON_GROUND) { m_FlagsDropTimer[BG_TEAM_ALLIANCE] -= diff; if (m_FlagsDropTimer[BG_TEAM_ALLIANCE] < 0) { m_FlagsDropTimer[BG_TEAM_ALLIANCE] = 0; RespawnDroppedFlag(ALLIANCE); } } if (m_FlagState[BG_TEAM_HORDE] == BG_WS_FLAG_STATE_WAIT_RESPAWN) { m_FlagsTimer[BG_TEAM_HORDE] -= diff; if (m_FlagsTimer[BG_TEAM_HORDE] < 0) { m_FlagsTimer[BG_TEAM_HORDE] = 0; RespawnFlag(HORDE, true); } } if (m_FlagState[BG_TEAM_HORDE] == BG_WS_FLAG_STATE_ON_GROUND) { m_FlagsDropTimer[BG_TEAM_HORDE] -= diff; if (m_FlagsDropTimer[BG_TEAM_HORDE] < 0) { m_FlagsDropTimer[BG_TEAM_HORDE] = 0; RespawnDroppedFlag(HORDE); } } if (m_EndTimer <= diff) { if (m_TeamScores[BG_TEAM_ALLIANCE] > m_TeamScores[BG_TEAM_HORDE]) EndBattleGround(ALLIANCE); else if (m_TeamScores[BG_TEAM_ALLIANCE] < m_TeamScores[BG_TEAM_HORDE]) EndBattleGround(HORDE); else { // if 0 => tie EndBattleGround(m_LastCapturedFlagTeam); } } else { uint32 minutesLeftPrev = GetRemainingTimeInMinutes(); m_EndTimer -= diff; uint32 minutesLeft = GetRemainingTimeInMinutes(); if (minutesLeft != minutesLeftPrev) UpdateWorldState(BG_WS_TIME_REMAINING, minutesLeft); } } }