diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
| -rw-r--r-- | src/server/game/Maps/Map.cpp | 13 | 
3 files changed, 15 insertions, 5 deletions
| diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 444f00206fd..a6d7c7334c4 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22814,7 +22814,6 @@ void Player::SendInitialPacketsAfterAddToMap()          SendDirectMessage(&setCompoundState);      } -    SendAurasForTarget(this);      SendEnchantmentDurations();                             // must be after add to map      SendItemDurations();                                    // must be after add to map      SendQuestGiverStatusMultiple(); @@ -23208,9 +23207,9 @@ void Player::LearnSkillRewardedSpells(uint32 skillId, uint32 skillValue)      }  } -void Player::SendAurasForTarget(Unit* target) const +void Player::SendAurasForTarget(Unit* target, bool force /*= false*/) const  { -    if (!target || target->GetVisibleAuras().empty())                  // speedup things +    if (!target || (!force && target->GetVisibleAuras().empty()))                  // speedup things          return;      WorldPacket data(SMSG_AURA_UPDATE_ALL); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 673374441ca..a7d6a5551fc 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1895,7 +1895,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>          void SendBGWeekendWorldStates() const;          void SendBattlefieldWorldStates() const; -        void SendAurasForTarget(Unit* target) const; +        void SendAurasForTarget(Unit* target, bool force = false) const;          PlayerMenu* PlayerTalkClass;          std::vector<ItemSetEffect*> ItemSetEff; diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 58dcc7e6607..1fc947a43c2 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2939,6 +2939,7 @@ void Map::SendInitSelf(Player* player)  {      TC_LOG_DEBUG("maps", "Creating player data for himself %s", player->GetGUID().ToString().c_str()); +    WorldPacket packet;      UpdateData data;      // attach to player data current transport data @@ -2950,13 +2951,23 @@ void Map::SendInitSelf(Player* player)      // build data for self presence in world at own client (one time for map)      player->BuildCreateUpdateBlockForPlayer(&data, player); +    // build and send self update packet before sending to player his own auras +    data.BuildPacket(&packet); +    player->SendDirectMessage(&packet); + +    // send to player his own auras (this is needed here for timely initialization of some fields on client) +    player->SendAurasForTarget(player, true); + +    // clean buffers for further work +    packet.clear(); +    data.Clear(); +      // build other passengers at transport also (they always visible and marked as visible and will not send at visibility update at add to map      if (Transport* transport = player->GetTransport())          for (Transport::PassengerSet::const_iterator itr = transport->GetPassengers().begin(); itr != transport->GetPassengers().end(); ++itr)              if (player != (*itr) && player->HaveAtClient(*itr))                  (*itr)->BuildCreateUpdateBlockForPlayer(&data, player); -    WorldPacket packet;      data.BuildPacket(&packet);      player->SendDirectMessage(&packet);  } | 
