diff options
| author | Discover- <amort11@hotmail.com> | 2014-01-21 09:44:48 +0100 |
|---|---|---|
| committer | Discover- <amort11@hotmail.com> | 2014-01-21 09:44:48 +0100 |
| commit | 32070669f46ccc4ff5bd5f607cb5bdab568f6629 (patch) | |
| tree | 9ec52f8a10c096d60ae1b3cd7273b727353b3b41 /src/server/game/Weather | |
| parent | cde9717bd19e8a92ea6f50e878542d57a76246cd (diff) | |
Core/Weather: Weather updates are now sent to all players in the zone instead of the first player it finds in the zone and all players nearby.
Thanks to @Nawuko, @Magnifikator and @Shauren
Closes #11380
Fixes #11370
Diffstat (limited to 'src/server/game/Weather')
| -rw-r--r-- | src/server/game/Weather/Weather.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Weather/WeatherMgr.cpp | 1 |
2 files changed, 8 insertions, 9 deletions
diff --git a/src/server/game/Weather/Weather.cpp b/src/server/game/Weather/Weather.cpp index b9133c9d0b1..cb332df9a41 100644 --- a/src/server/game/Weather/Weather.cpp +++ b/src/server/game/Weather/Weather.cpp @@ -194,7 +194,6 @@ bool Weather::ReGenerate() void Weather::SendWeatherUpdateToPlayer(Player* player) { WorldPacket data(SMSG_WEATHER, (4+4+4)); - data << uint32(GetWeatherState()) << (float)m_grade << uint8(0); player->GetSession()->SendPacket(&data); } @@ -202,10 +201,6 @@ void Weather::SendWeatherUpdateToPlayer(Player* player) /// Send the new weather to all players in the zone bool Weather::UpdateWeather() { - Player* player = sWorld->FindPlayerInZone(m_zone); - if (!player) - return false; - ///- Send the weather packet to all players in this zone if (m_grade >= 1) m_grade = 0.9999f; @@ -215,8 +210,13 @@ bool Weather::UpdateWeather() WeatherState state = GetWeatherState(); WorldPacket data(SMSG_WEATHER, (4+4+4)); - data << uint32(state) << (float)m_grade << uint8(0); - player->SendMessageToSet(&data, true); + data << uint32(state); + data << (float)m_grade; + data << uint8(0); + + //- Returns false if there were no players found to update + if (!sWorld->SendZoneMessage(m_zone, &data)) + return false; ///- Log the event char const* wthstr; @@ -263,8 +263,8 @@ bool Weather::UpdateWeather() wthstr = "fine"; break; } - TC_LOG_INFO("misc", "Change the weather of zone %u to %s.", m_zone, wthstr); + TC_LOG_INFO("misc", "Change the weather of zone %u to %s.", m_zone, wthstr); sScriptMgr->OnWeatherChange(this, state, m_grade); return true; } diff --git a/src/server/game/Weather/WeatherMgr.cpp b/src/server/game/Weather/WeatherMgr.cpp index e327836fa4a..886a910becc 100644 --- a/src/server/game/Weather/WeatherMgr.cpp +++ b/src/server/game/Weather/WeatherMgr.cpp @@ -145,7 +145,6 @@ void LoadWeatherData() void SendFineWeatherUpdateToPlayer(Player* player) { WorldPacket data(SMSG_WEATHER, (4+4+4)); - data << (uint32)WEATHER_STATE_FINE << (float)0.0f << uint8(0); player->GetSession()->SendPacket(&data); } |
