All pastes #956154 Raw Edit

WOrldState move by Seline

public cpp v1 · immutable
#956154 ·published 2008-03-25 01:46 UTC
rendered paste body
Index: src/game/Map.cpp===================================================================--- src/game/Map.cpp	(revision 5483)+++ src/game/Map.cpp	(working copy)@@ -24,6 +24,9 @@ #include "CellImpl.h" #include "InstanceData.h" #include "Map.h"+#include "BattleGround.h"+#include "BattleGroundMgr.h"+#include "BattleGroundAB.h" #include "GridNotifiersImpl.h" #include "Config/ConfigEnv.h" #include "Transports.h"@@ -625,6 +628,8 @@      player->AddToWorld(); +    LoadDefaultWorldStates(player);+     SendInitSelf(player);     SendInitTransports(player); @@ -740,6 +745,349 @@         i_data->Update(t_diff); } +// This needs to be entirely rewritten for efficiency. I just do not know how to+void Map::LoadDefaultWorldStates(Player* player)+{+    // data depends on zoneid/mapid...+    BattleGround* bg = player->GetBattleGround();+    uint16 NumberOfFields = 0;+    uint32 mapid = player->GetMapId();+    uint32 zoneid = player->GetZoneId();+    uint32 areaid = player->GetAreaId();+    sLog.outDebug("Sending SMSG_INIT_WORLD_STATES to Map:%u, Zone: %u", mapid, zoneid);+    // may be exist better way to do this...+    switch(zoneid)+    {+        case 0:+        case 1:+        case 4:+        case 8:+        case 10:+        case 11:+        case 12:+        case 36:+        case 38:+        case 40:+        case 41:+        case 51:+        case 267:+        case 1519:+        case 1537:+        case 2257:+        case 2918:+            NumberOfFields = 6;+            break;+        case 2597:+            NumberOfFields = 81;+            break;+        case 3277:+            NumberOfFields = 14;+            break;+        case 3358:+            NumberOfFields = 38;+            break;+        case 3483:+            NumberOfFields = 22;+            break;+        case 3519:+            NumberOfFields = 36;+            break;+        case 3521:+            NumberOfFields = 35;+            break;+        case 3698:+        case 3702:+        case 3968:+            NumberOfFields = 9;+            break;+        case 3703:+            NumberOfFields = 9;+            break;+        default:+            NumberOfFields = 10;+            break;+    }++    WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(NumberOfFields*8)));+    data << mapid;                                          // mapid+    data << zoneid;                                         // zone id+    data << areaid;                                         // area id, new 2.1.0+    data << NumberOfFields;                                 // count of uint64 blocks+    data << uint32(0x8d8) << uint32(0x0);                   // 1+    data << uint32(0x8d7) << uint32(0x0);                   // 2+    data << uint32(0x8d6) << uint32(0x0);                   // 3+    data << uint32(0x8d5) << uint32(0x0);                   // 4+    data << uint32(0x8d4) << uint32(0x0);                   // 5+    data << uint32(0x8d3) << uint32(0x0);                   // 6+    if(mapid == 530)                                        // Outland+    {+        data << uint32(0x9bf) << uint32(0x0);               // 7+        data << uint32(0x9bd) << uint32(0xF);               // 8+        data << uint32(0x9bb) << uint32(0xF);               // 9+    }+    switch(zoneid)+    {+        case 1:+        case 11:+        case 12:+        case 38:+        case 40:+        case 51:+        case 1519:+        case 1537:+        case 2257:+            break;+        case 2597:                                          // AV+            data << uint32(0x7ae) << uint32(0x1);           // 7+            data << uint32(0x532) << uint32(0x1);           // 8+            data << uint32(0x531) << uint32(0x0);           // 9+            data << uint32(0x52e) << uint32(0x0);           // 10+            data << uint32(0x571) << uint32(0x0);           // 11+            data << uint32(0x570) << uint32(0x0);           // 12+            data << uint32(0x567) << uint32(0x1);           // 13+            data << uint32(0x566) << uint32(0x1);           // 14+            data << uint32(0x550) << uint32(0x1);           // 15+            data << uint32(0x544) << uint32(0x0);           // 16+            data << uint32(0x536) << uint32(0x0);           // 17+            data << uint32(0x535) << uint32(0x1);           // 18+            data << uint32(0x518) << uint32(0x0);           // 19+            data << uint32(0x517) << uint32(0x0);           // 20+            data << uint32(0x574) << uint32(0x0);           // 21+            data << uint32(0x573) << uint32(0x0);           // 22+            data << uint32(0x572) << uint32(0x0);           // 23+            data << uint32(0x56f) << uint32(0x0);           // 24+            data << uint32(0x56e) << uint32(0x0);           // 25+            data << uint32(0x56d) << uint32(0x0);           // 26+            data << uint32(0x56c) << uint32(0x0);           // 27+            data << uint32(0x56b) << uint32(0x0);           // 28+            data << uint32(0x56a) << uint32(0x1);           // 29+            data << uint32(0x569) << uint32(0x1);           // 30+            data << uint32(0x568) << uint32(0x1);           // 13+            data << uint32(0x565) << uint32(0x0);           // 32+            data << uint32(0x564) << uint32(0x0);           // 33+            data << uint32(0x563) << uint32(0x0);           // 34+            data << uint32(0x562) << uint32(0x0);           // 35+            data << uint32(0x561) << uint32(0x0);           // 36+            data << uint32(0x560) << uint32(0x0);           // 37+            data << uint32(0x55f) << uint32(0x0);           // 38+            data << uint32(0x55e) << uint32(0x0);           // 39+            data << uint32(0x55d) << uint32(0x0);           // 40+            data << uint32(0x3c6) << uint32(0x4);           // 41+            data << uint32(0x3c4) << uint32(0x6);           // 42+            data << uint32(0x3c2) << uint32(0x4);           // 43+            data << uint32(0x516) << uint32(0x1);           // 44+            data << uint32(0x515) << uint32(0x0);           // 45+            data << uint32(0x3b6) << uint32(0x6);           // 46+            data << uint32(0x55c) << uint32(0x0);           // 47+            data << uint32(0x55b) << uint32(0x0);           // 48+            data << uint32(0x55a) << uint32(0x0);           // 49+            data << uint32(0x559) << uint32(0x0);           // 50+            data << uint32(0x558) << uint32(0x0);           // 51+            data << uint32(0x557) << uint32(0x0);           // 52+            data << uint32(0x556) << uint32(0x0);           // 53+            data << uint32(0x555) << uint32(0x0);           // 54+            data << uint32(0x554) << uint32(0x1);           // 55+            data << uint32(0x553) << uint32(0x1);           // 56+            data << uint32(0x552) << uint32(0x1);           // 57+            data << uint32(0x551) << uint32(0x1);           // 58+            data << uint32(0x54f) << uint32(0x0);           // 59+            data << uint32(0x54e) << uint32(0x0);           // 60+            data << uint32(0x54d) << uint32(0x1);           // 61+            data << uint32(0x54c) << uint32(0x0);           // 62+            data << uint32(0x54b) << uint32(0x0);           // 63+            data << uint32(0x545) << uint32(0x0);           // 64+            data << uint32(0x543) << uint32(0x1);           // 65+            data << uint32(0x542) << uint32(0x0);           // 66+            data << uint32(0x540) << uint32(0x0);           // 67+            data << uint32(0x53f) << uint32(0x0);           // 68+            data << uint32(0x53e) << uint32(0x0);           // 69+            data << uint32(0x53d) << uint32(0x0);           // 70+            data << uint32(0x53c) << uint32(0x0);           // 71+            data << uint32(0x53b) << uint32(0x0);           // 72+            data << uint32(0x53a) << uint32(0x1);           // 73+            data << uint32(0x539) << uint32(0x0);           // 74+            data << uint32(0x538) << uint32(0x0);           // 75+            data << uint32(0x537) << uint32(0x0);           // 76+            data << uint32(0x534) << uint32(0x0);           // 77+            data << uint32(0x533) << uint32(0x0);           // 78+            data << uint32(0x530) << uint32(0x0);           // 79+            data << uint32(0x52f) << uint32(0x0);           // 80+            data << uint32(0x52d) << uint32(0x1);           // 81+            break;+        case 3277:                                          // WS+            if (bg && bg->GetTypeID() == BATTLEGROUND_WS)+                bg->FillInitialWorldStates(data);+            else+            {+                data << uint32(0x62d) << uint32(0x0);           // 7 1581 alliance flag captures+                data << uint32(0x62e) << uint32(0x0);           // 8 1582 horde flag captures+                data << uint32(0x609) << uint32(0x0);           // 9 1545 unk, set to 1 on alliance flag pickup...+                data << uint32(0x60a) << uint32(0x0);           // 10 1546 unk, set to 1 on horde flag pickup, after drop it's -1+                data << uint32(0x60b) << uint32(0x2);           // 11 1547 unk+                data << uint32(0x641) << uint32(0x3);           // 12 1601 unk (max flag captures?)+                data << uint32(0x922) << uint32(0x1);           // 13 2338 horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)+                data << uint32(0x923) << uint32(0x1);           // 14 2339 alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)+            }+            break;+        case 3358:                                          // AB+            if (bg && bg->GetTypeID() == BATTLEGROUND_AB)+                bg->FillInitialWorldStates(data);+            else+            {+                data << uint32(0x6e7) << uint32(0x0);           // 7 1767 stables alliance+                data << uint32(0x6e8) << uint32(0x0);           // 8 1768 stables horde+                data << uint32(0x6e9) << uint32(0x0);           // 9 1769 unk, ST?+                data << uint32(0x6ea) << uint32(0x0);           // 10 1770 stables (show/hide)+                data << uint32(0x6ec) << uint32(0x0);           // 11 1772 farm (0 - horde controlled, 1 - alliance controlled)+                data << uint32(0x6ed) << uint32(0x0);           // 12 1773 farm (show/hide)+                data << uint32(0x6ee) << uint32(0x0);           // 13 1774 farm color+                data << uint32(0x6ef) << uint32(0x0);           // 14 1775 gold mine color, may be FM?+                data << uint32(0x6f0) << uint32(0x0);           // 15 1776 alliance resources+                data << uint32(0x6f1) << uint32(0x0);           // 16 1777 horde resources+                data << uint32(0x6f2) << uint32(0x0);           // 17 1778 horde bases+                data << uint32(0x6f3) << uint32(0x0);           // 18 1779 alliance bases+                data << uint32(0x6f4) << uint32(0x7d0);         // 19 1780 max resources (2000)+                data << uint32(0x6f6) << uint32(0x0);           // 20 1782 blacksmith color+                data << uint32(0x6f7) << uint32(0x0);           // 21 1783 blacksmith (show/hide)+                data << uint32(0x6f8) << uint32(0x0);           // 22 1784 unk, bs?+                data << uint32(0x6f9) << uint32(0x0);           // 23 1785 unk, bs?+                data << uint32(0x6fb) << uint32(0x0);           // 24 1787 gold mine (0 - horde contr, 1 - alliance contr)+                data << uint32(0x6fc) << uint32(0x0);           // 25 1788 gold mine (0 - conflict, 1 - horde)+                data << uint32(0x6fd) << uint32(0x0);           // 26 1789 gold mine (1 - show/0 - hide)+                data << uint32(0x6fe) << uint32(0x0);           // 27 1790 gold mine color+                data << uint32(0x700) << uint32(0x0);           // 28 1792 gold mine color, wtf?, may be LM?+                data << uint32(0x701) << uint32(0x0);           // 29 1793 lumber mill color (0 - conflict, 1 - horde contr)+                data << uint32(0x702) << uint32(0x0);           // 30 1794 lumber mill (show/hide)+                data << uint32(0x703) << uint32(0x0);           // 31 1795 lumber mill color color+                data << uint32(0x732) << uint32(0x1);           // 32 1842 stables (1 - uncontrolled)+                data << uint32(0x733) << uint32(0x1);           // 33 1843 gold mine (1 - uncontrolled)+                data << uint32(0x734) << uint32(0x1);           // 34 1844 lumber mill (1 - uncontrolled)+                data << uint32(0x735) << uint32(0x1);           // 35 1845 farm (1 - uncontrolled)+                data << uint32(0x736) << uint32(0x1);           // 36 1846 blacksmith (1 - uncontrolled)+                data << uint32(0x745) << uint32(0x2);           // 37 1861 unk+                data << uint32(0x7a3) << uint32(0x708);         // 38 1955 warning limit (1800)+            }+            break;+        case 3483:                                          // Hellfire Peninsula+            data << uint32(0x9ba) << uint32(0x1);           // 10+            data << uint32(0x9b9) << uint32(0x1);           // 11+            data << uint32(0x9b5) << uint32(0x0);           // 12+            data << uint32(0x9b4) << uint32(0x1);           // 13+            data << uint32(0x9b3) << uint32(0x0);           // 14+            data << uint32(0x9b2) << uint32(0x0);           // 15+            data << uint32(0x9b1) << uint32(0x1);           // 16+            data << uint32(0x9b0) << uint32(0x0);           // 17+            data << uint32(0x9ae) << uint32(0x0);           // 18 horde pvp objectives captured+            data << uint32(0x9ac) << uint32(0x0);           // 19+            data << uint32(0x9a8) << uint32(0x0);           // 20+            data << uint32(0x9a7) << uint32(0x0);           // 21+            data << uint32(0x9a6) << uint32(0x1);           // 22+            break;+        case 3519:                                          // Terokkar Forest+            data << uint32(0xa41) << uint32(0x0);           // 10+            data << uint32(0xa40) << uint32(0x14);          // 11+            data << uint32(0xa3f) << uint32(0x0);           // 12+            data << uint32(0xa3e) << uint32(0x0);           // 13+            data << uint32(0xa3d) << uint32(0x5);           // 14+            data << uint32(0xa3c) << uint32(0x0);           // 15+            data << uint32(0xa87) << uint32(0x0);           // 16+            data << uint32(0xa86) << uint32(0x0);           // 17+            data << uint32(0xa85) << uint32(0x0);           // 18+            data << uint32(0xa84) << uint32(0x0);           // 19+            data << uint32(0xa83) << uint32(0x0);           // 20+            data << uint32(0xa82) << uint32(0x0);           // 21+            data << uint32(0xa81) << uint32(0x0);           // 22+            data << uint32(0xa80) << uint32(0x0);           // 23+            data << uint32(0xa7e) << uint32(0x0);           // 24+            data << uint32(0xa7d) << uint32(0x0);           // 25+            data << uint32(0xa7c) << uint32(0x0);           // 26+            data << uint32(0xa7b) << uint32(0x0);           // 27+            data << uint32(0xa7a) << uint32(0x0);           // 28+            data << uint32(0xa79) << uint32(0x0);           // 29+            data << uint32(0x9d0) << uint32(0x5);           // 30+            data << uint32(0x9ce) << uint32(0x0);           // 31+            data << uint32(0x9cd) << uint32(0x0);           // 32+            data << uint32(0x9cc) << uint32(0x0);           // 33+            data << uint32(0xa88) << uint32(0x0);           // 34+            data << uint32(0xad0) << uint32(0x0);           // 35+            data << uint32(0xacf) << uint32(0x1);           // 36+            break;+        case 3521:                                          // Zangarmarsh+            data << uint32(0x9e1) << uint32(0x0);           // 10+            data << uint32(0x9e0) << uint32(0x0);           // 11+            data << uint32(0x9df) << uint32(0x0);           // 12+            data << uint32(0xa5d) << uint32(0x1);           // 13+            data << uint32(0xa5c) << uint32(0x0);           // 14+            data << uint32(0xa5b) << uint32(0x1);           // 15+            data << uint32(0xa5a) << uint32(0x0);           // 16+            data << uint32(0xa59) << uint32(0x1);           // 17+            data << uint32(0xa58) << uint32(0x0);           // 18+            data << uint32(0xa57) << uint32(0x0);           // 19+            data << uint32(0xa56) << uint32(0x0);           // 20+            data << uint32(0xa55) << uint32(0x1);           // 21+            data << uint32(0xa54) << uint32(0x0);           // 22+            data << uint32(0x9e7) << uint32(0x0);           // 23+            data << uint32(0x9e6) << uint32(0x0);           // 24+            data << uint32(0x9e5) << uint32(0x0);           // 25+            data << uint32(0xa00) << uint32(0x0);           // 26+            data << uint32(0x9ff) << uint32(0x1);           // 27+            data << uint32(0x9fe) << uint32(0x0);           // 28+            data << uint32(0x9fd) << uint32(0x0);           // 29+            data << uint32(0x9fc) << uint32(0x1);           // 30+            data << uint32(0x9fb) << uint32(0x0);           // 31+            data << uint32(0xa62) << uint32(0x0);           // 32+            data << uint32(0xa61) << uint32(0x1);           // 33+            data << uint32(0xa60) << uint32(0x1);           // 34+            data << uint32(0xa5f) << uint32(0x0);           // 35+            break;+        case 3698:                                          // Nagrand Arena+            data << uint32(0xa0f) << uint32(0x0);           // 7+            data << uint32(0xa10) << uint32(0x0);           // 8+            data << uint32(0xa11) << uint32(0x0);           // 9+            break;+        case 3702:                                          // Blade's Edge Arena+            data << uint32(0x9f0) << uint32(0x0);           // 7+            data << uint32(0x9f1) << uint32(0x0);           // 8+            data << uint32(0x9f3) << uint32(0x0);           // 9+            break;+        case 3968:                                          // Ruins of Lordaeron+            data << uint32(0xbb8) << uint32(0x0);           // 7+            data << uint32(0xbb9) << uint32(0x0);           // 8+            data << uint32(0xbba) << uint32(0x0);           // 9+            break;+        case 3703:                                          // Shattrath City+            break;+        default:+            data << uint32(0x914) << uint32(0x0);           // 7+            data << uint32(0x913) << uint32(0x0);           // 8+            data << uint32(0x912) << uint32(0x0);           // 9+            data << uint32(0x915) << uint32(0x0);           // 10+            break;+    }+    player->GetSession()->SendPacket(&data);+}++void Map::SendWorldStateInit(Player* player)+{+    WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8);+    HM_NAMESPACE::hash_map<uint32,uint32>::iterator itr;+    for(itr = WorldState_fieldmap.begin(); itr != WorldState_fieldmap.end(); ++itr)+        data << (*itr).first << (*itr).second;+    player->GetSession()->SendPacket(&data);+}++void Map::UpdateWorldState(uint32 field, uint32 value)+{+    WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8);+    data << field;+    data << value;+    WorldState_fieldmap[0] = field;+    WorldState_fieldmap[1] = value;++    for(PlayerList::const_iterator itr = i_Players.begin(); itr != i_Players.end(); ++itr)+        (*itr)->GetSession()->SendPacket(&data);+}+ void Map::Remove(Player *player, bool remove) {     if (Instanceable())@@ -1453,6 +1801,15 @@     transData.BuildPacket(&packet);     player->GetSession()->SendPacket(&packet); }+inline void Map::setNGrid(NGridType *grid, uint32 x, uint32 y)+{+    if(x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS)+    {+        sLog.outError("map::setNGrid() Invalid grid coordinates found: %d, %d!",x,y);+        assert(false);+    }+    i_grids[x][y] = grid;+}  uint32 Map::GetPlayersCountExceptGMs() const {Index: src/game/Map.h===================================================================--- src/game/Map.h	(revision 5483)+++ src/game/Map.h	(working copy)@@ -114,7 +114,7 @@ #define MAX_HEIGHT            100000.0f                     // can be use for find ground height at surface #define INVALID_HEIGHT       -100000.0f                     // for check, must be equal to VMAP_INVALID_HEIGHT, real value for unknown height is VMAP_INVALID_HEIGHT_VALUE -class MANGOS_DLL_DECL Map : public GridRefManager<NGridType>, public MaNGOS::ObjectLevelLockable<Map, ZThread::Mutex>+class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::ObjectLevelLockable<Map, ZThread::Mutex> {     public:         typedef std::list<Player*> PlayerList;@@ -131,6 +131,12 @@          virtual void Update(const uint32&); +        void LoadDefaultWorldStates(Player*);+        void SendWorldStateInit(Player*);+        void UpdateWorldState(uint32 field, uint32 value);++        std::list<Player*> GetPlayers() { return i_Players;};+         void MessageBroadcast(Player *, WorldPacket *, bool to_self, bool own_team_only = false);          void MessageBroadcast(WorldObject *, WorldPacket *);@@ -266,15 +272,7 @@         bool isGridObjectDataLoaded(uint32 x, uint32 y) const { return getNGrid(x,y)->isGridObjectDataLoaded(); }         void setGridObjectDataLoaded(bool pLoaded, uint32 x, uint32 y) { getNGrid(x,y)->setGridObjectDataLoaded(pLoaded); } -        inline void setNGrid(NGridType* grid, uint32 x, uint32 y)-        {-            if(x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS)-            {-                sLog.outError("map::setNGrid() Invalid grid coordinates found: %d, %d!",x,y);-                assert(false);-            }-            i_grids[x][y] = grid;-        }+        inline void setNGrid(NGridType* grid, uint32 x, uint32 y);     protected:         typedef MaNGOS::ObjectLevelLockable<Map, ZThread::Mutex>::Lock Guard; @@ -289,6 +287,8 @@          time_t i_gridExpiry; +        HM_NAMESPACE::hash_map<uint32, uint32> WorldState_fieldmap;+         MapEntry const* i_mapEntry;         time_t i_resetTime;         uint32 i_resetDelayTime;Index: src/game/Player.cpp===================================================================--- src/game/Player.cpp	(revision 5483)+++ src/game/Player.cpp	(working copy)@@ -7022,336 +7022,6 @@     GetSession()->SendPacket( &data ); } -void Player::SendUpdateWorldState(uint32 Field, uint32 Value)-{-    WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8);-    data << Field;-    data << Value;-    SendMessageToSet(&data, true);-    //GetSession()->SendPacket(&data);-}--void Player::SendInitWorldStates()-{-    // data depends on zoneid/mapid...-    BattleGround* bg = GetBattleGround();-    uint16 NumberOfFields = 0;-    uint32 mapid = GetMapId();-    uint32 zoneid = GetZoneId();-    uint32 areaid = GetAreaId();-    sLog.outDebug("Sending SMSG_INIT_WORLD_STATES to Map:%u, Zone: %u", mapid, zoneid);-    // may be exist better way to do this...-    switch(zoneid)-    {-        case 0:-        case 1:-        case 4:-        case 8:-        case 10:-        case 11:-        case 12:-        case 36:-        case 38:-        case 40:-        case 41:-        case 51:-        case 267:-        case 1519:-        case 1537:-        case 2257:-        case 2918:-            NumberOfFields = 6;-            break;-        case 2597:-            NumberOfFields = 81;-            break;-        case 3277:-            NumberOfFields = 14;-            break;-        case 3358:-            NumberOfFields = 38;-            break;-        case 3483:-            NumberOfFields = 22;-            break;-        case 3519:-            NumberOfFields = 36;-            break;-        case 3521:-            NumberOfFields = 35;-            break;-        case 3698:-        case 3702:-        case 3968:-            NumberOfFields = 9;-            break;-        case 3703:-            NumberOfFields = 9;-            break;-        default:-            NumberOfFields = 10;-            break;-    }--    WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(NumberOfFields*8)));-    data << mapid;                                          // mapid-    data << zoneid;                                         // zone id-    data << areaid;                                         // area id, new 2.1.0-    data << NumberOfFields;                                 // count of uint64 blocks-    data << uint32(0x8d8) << uint32(0x0);                   // 1-    data << uint32(0x8d7) << uint32(0x0);                   // 2-    data << uint32(0x8d6) << uint32(0x0);                   // 3-    data << uint32(0x8d5) << uint32(0x0);                   // 4-    data << uint32(0x8d4) << uint32(0x0);                   // 5-    data << uint32(0x8d3) << uint32(0x0);                   // 6-    if(mapid == 530)                                        // Outland-    {-        data << uint32(0x9bf) << uint32(0x0);               // 7-        data << uint32(0x9bd) << uint32(0xF);               // 8-        data << uint32(0x9bb) << uint32(0xF);               // 9-    }-    switch(zoneid)-    {-        case 1:-        case 11:-        case 12:-        case 38:-        case 40:-        case 51:-        case 1519:-        case 1537:-        case 2257:-            break;-        case 2597:                                          // AV-            data << uint32(0x7ae) << uint32(0x1);           // 7-            data << uint32(0x532) << uint32(0x1);           // 8-            data << uint32(0x531) << uint32(0x0);           // 9-            data << uint32(0x52e) << uint32(0x0);           // 10-            data << uint32(0x571) << uint32(0x0);           // 11-            data << uint32(0x570) << uint32(0x0);           // 12-            data << uint32(0x567) << uint32(0x1);           // 13-            data << uint32(0x566) << uint32(0x1);           // 14-            data << uint32(0x550) << uint32(0x1);           // 15-            data << uint32(0x544) << uint32(0x0);           // 16-            data << uint32(0x536) << uint32(0x0);           // 17-            data << uint32(0x535) << uint32(0x1);           // 18-            data << uint32(0x518) << uint32(0x0);           // 19-            data << uint32(0x517) << uint32(0x0);           // 20-            data << uint32(0x574) << uint32(0x0);           // 21-            data << uint32(0x573) << uint32(0x0);           // 22-            data << uint32(0x572) << uint32(0x0);           // 23-            data << uint32(0x56f) << uint32(0x0);           // 24-            data << uint32(0x56e) << uint32(0x0);           // 25-            data << uint32(0x56d) << uint32(0x0);           // 26-            data << uint32(0x56c) << uint32(0x0);           // 27-            data << uint32(0x56b) << uint32(0x0);           // 28-            data << uint32(0x56a) << uint32(0x1);           // 29-            data << uint32(0x569) << uint32(0x1);           // 30-            data << uint32(0x568) << uint32(0x1);           // 13-            data << uint32(0x565) << uint32(0x0);           // 32-            data << uint32(0x564) << uint32(0x0);           // 33-            data << uint32(0x563) << uint32(0x0);           // 34-            data << uint32(0x562) << uint32(0x0);           // 35-            data << uint32(0x561) << uint32(0x0);           // 36-            data << uint32(0x560) << uint32(0x0);           // 37-            data << uint32(0x55f) << uint32(0x0);           // 38-            data << uint32(0x55e) << uint32(0x0);           // 39-            data << uint32(0x55d) << uint32(0x0);           // 40-            data << uint32(0x3c6) << uint32(0x4);           // 41-            data << uint32(0x3c4) << uint32(0x6);           // 42-            data << uint32(0x3c2) << uint32(0x4);           // 43-            data << uint32(0x516) << uint32(0x1);           // 44-            data << uint32(0x515) << uint32(0x0);           // 45-            data << uint32(0x3b6) << uint32(0x6);           // 46-            data << uint32(0x55c) << uint32(0x0);           // 47-            data << uint32(0x55b) << uint32(0x0);           // 48-            data << uint32(0x55a) << uint32(0x0);           // 49-            data << uint32(0x559) << uint32(0x0);           // 50-            data << uint32(0x558) << uint32(0x0);           // 51-            data << uint32(0x557) << uint32(0x0);           // 52-            data << uint32(0x556) << uint32(0x0);           // 53-            data << uint32(0x555) << uint32(0x0);           // 54-            data << uint32(0x554) << uint32(0x1);           // 55-            data << uint32(0x553) << uint32(0x1);           // 56-            data << uint32(0x552) << uint32(0x1);           // 57-            data << uint32(0x551) << uint32(0x1);           // 58-            data << uint32(0x54f) << uint32(0x0);           // 59-            data << uint32(0x54e) << uint32(0x0);           // 60-            data << uint32(0x54d) << uint32(0x1);           // 61-            data << uint32(0x54c) << uint32(0x0);           // 62-            data << uint32(0x54b) << uint32(0x0);           // 63-            data << uint32(0x545) << uint32(0x0);           // 64-            data << uint32(0x543) << uint32(0x1);           // 65-            data << uint32(0x542) << uint32(0x0);           // 66-            data << uint32(0x540) << uint32(0x0);           // 67-            data << uint32(0x53f) << uint32(0x0);           // 68-            data << uint32(0x53e) << uint32(0x0);           // 69-            data << uint32(0x53d) << uint32(0x0);           // 70-            data << uint32(0x53c) << uint32(0x0);           // 71-            data << uint32(0x53b) << uint32(0x0);           // 72-            data << uint32(0x53a) << uint32(0x1);           // 73-            data << uint32(0x539) << uint32(0x0);           // 74-            data << uint32(0x538) << uint32(0x0);           // 75-            data << uint32(0x537) << uint32(0x0);           // 76-            data << uint32(0x534) << uint32(0x0);           // 77-            data << uint32(0x533) << uint32(0x0);           // 78-            data << uint32(0x530) << uint32(0x0);           // 79-            data << uint32(0x52f) << uint32(0x0);           // 80-            data << uint32(0x52d) << uint32(0x1);           // 81-            break;-        case 3277:                                          // WS-            if (bg && bg->GetTypeID() == BATTLEGROUND_WS)-                bg->FillInitialWorldStates(data);-            else-            {-                data << uint32(0x62d) << uint32(0x0);           // 7 1581 alliance flag captures-                data << uint32(0x62e) << uint32(0x0);           // 8 1582 horde flag captures-                data << uint32(0x609) << uint32(0x0);           // 9 1545 unk, set to 1 on alliance flag pickup...-                data << uint32(0x60a) << uint32(0x0);           // 10 1546 unk, set to 1 on horde flag pickup, after drop it's -1-                data << uint32(0x60b) << uint32(0x2);           // 11 1547 unk-                data << uint32(0x641) << uint32(0x3);           // 12 1601 unk (max flag captures?)-                data << uint32(0x922) << uint32(0x1);           // 13 2338 horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)-                data << uint32(0x923) << uint32(0x1);           // 14 2339 alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)-            }-            break;-        case 3358:                                          // AB-            if (bg && bg->GetTypeID() == BATTLEGROUND_AB)-                bg->FillInitialWorldStates(data);-            else-            {-                data << uint32(0x6e7) << uint32(0x0);           // 7 1767 stables alliance-                data << uint32(0x6e8) << uint32(0x0);           // 8 1768 stables horde-                data << uint32(0x6e9) << uint32(0x0);           // 9 1769 unk, ST?-                data << uint32(0x6ea) << uint32(0x0);           // 10 1770 stables (show/hide)-                data << uint32(0x6ec) << uint32(0x0);           // 11 1772 farm (0 - horde controlled, 1 - alliance controlled)-                data << uint32(0x6ed) << uint32(0x0);           // 12 1773 farm (show/hide)-                data << uint32(0x6ee) << uint32(0x0);           // 13 1774 farm color-                data << uint32(0x6ef) << uint32(0x0);           // 14 1775 gold mine color, may be FM?-                data << uint32(0x6f0) << uint32(0x0);           // 15 1776 alliance resources-                data << uint32(0x6f1) << uint32(0x0);           // 16 1777 horde resources-                data << uint32(0x6f2) << uint32(0x0);           // 17 1778 horde bases-                data << uint32(0x6f3) << uint32(0x0);           // 18 1779 alliance bases-                data << uint32(0x6f4) << uint32(0x7d0);         // 19 1780 max resources (2000)-                data << uint32(0x6f6) << uint32(0x0);           // 20 1782 blacksmith color-                data << uint32(0x6f7) << uint32(0x0);           // 21 1783 blacksmith (show/hide)-                data << uint32(0x6f8) << uint32(0x0);           // 22 1784 unk, bs?-                data << uint32(0x6f9) << uint32(0x0);           // 23 1785 unk, bs?-                data << uint32(0x6fb) << uint32(0x0);           // 24 1787 gold mine (0 - horde contr, 1 - alliance contr)-                data << uint32(0x6fc) << uint32(0x0);           // 25 1788 gold mine (0 - conflict, 1 - horde)-                data << uint32(0x6fd) << uint32(0x0);           // 26 1789 gold mine (1 - show/0 - hide)-                data << uint32(0x6fe) << uint32(0x0);           // 27 1790 gold mine color-                data << uint32(0x700) << uint32(0x0);           // 28 1792 gold mine color, wtf?, may be LM?-                data << uint32(0x701) << uint32(0x0);           // 29 1793 lumber mill color (0 - conflict, 1 - horde contr)-                data << uint32(0x702) << uint32(0x0);           // 30 1794 lumber mill (show/hide)-                data << uint32(0x703) << uint32(0x0);           // 31 1795 lumber mill color color-                data << uint32(0x732) << uint32(0x1);           // 32 1842 stables (1 - uncontrolled)-                data << uint32(0x733) << uint32(0x1);           // 33 1843 gold mine (1 - uncontrolled)-                data << uint32(0x734) << uint32(0x1);           // 34 1844 lumber mill (1 - uncontrolled)-                data << uint32(0x735) << uint32(0x1);           // 35 1845 farm (1 - uncontrolled)-                data << uint32(0x736) << uint32(0x1);           // 36 1846 blacksmith (1 - uncontrolled)-                data << uint32(0x745) << uint32(0x2);           // 37 1861 unk-                data << uint32(0x7a3) << uint32(0x708);         // 38 1955 warning limit (1800)-            }-            break;-        case 3483:                                          // Hellfire Peninsula-            data << uint32(0x9ba) << uint32(0x1);           // 10-            data << uint32(0x9b9) << uint32(0x1);           // 11-            data << uint32(0x9b5) << uint32(0x0);           // 12-            data << uint32(0x9b4) << uint32(0x1);           // 13-            data << uint32(0x9b3) << uint32(0x0);           // 14-            data << uint32(0x9b2) << uint32(0x0);           // 15-            data << uint32(0x9b1) << uint32(0x1);           // 16-            data << uint32(0x9b0) << uint32(0x0);           // 17-            data << uint32(0x9ae) << uint32(0x0);           // 18 horde pvp objectives captured-            data << uint32(0x9ac) << uint32(0x0);           // 19-            data << uint32(0x9a8) << uint32(0x0);           // 20-            data << uint32(0x9a7) << uint32(0x0);           // 21-            data << uint32(0x9a6) << uint32(0x1);           // 22-            break;-        case 3519:                                          // Terokkar Forest-            data << uint32(0xa41) << uint32(0x0);           // 10-            data << uint32(0xa40) << uint32(0x14);          // 11-            data << uint32(0xa3f) << uint32(0x0);           // 12-            data << uint32(0xa3e) << uint32(0x0);           // 13-            data << uint32(0xa3d) << uint32(0x5);           // 14-            data << uint32(0xa3c) << uint32(0x0);           // 15-            data << uint32(0xa87) << uint32(0x0);           // 16-            data << uint32(0xa86) << uint32(0x0);           // 17-            data << uint32(0xa85) << uint32(0x0);           // 18-            data << uint32(0xa84) << uint32(0x0);           // 19-            data << uint32(0xa83) << uint32(0x0);           // 20-            data << uint32(0xa82) << uint32(0x0);           // 21-            data << uint32(0xa81) << uint32(0x0);           // 22-            data << uint32(0xa80) << uint32(0x0);           // 23-            data << uint32(0xa7e) << uint32(0x0);           // 24-            data << uint32(0xa7d) << uint32(0x0);           // 25-            data << uint32(0xa7c) << uint32(0x0);           // 26-            data << uint32(0xa7b) << uint32(0x0);           // 27-            data << uint32(0xa7a) << uint32(0x0);           // 28-            data << uint32(0xa79) << uint32(0x0);           // 29-            data << uint32(0x9d0) << uint32(0x5);           // 30-            data << uint32(0x9ce) << uint32(0x0);           // 31-            data << uint32(0x9cd) << uint32(0x0);           // 32-            data << uint32(0x9cc) << uint32(0x0);           // 33-            data << uint32(0xa88) << uint32(0x0);           // 34-            data << uint32(0xad0) << uint32(0x0);           // 35-            data << uint32(0xacf) << uint32(0x1);           // 36-            break;-        case 3521:                                          // Zangarmarsh-            data << uint32(0x9e1) << uint32(0x0);           // 10-            data << uint32(0x9e0) << uint32(0x0);           // 11-            data << uint32(0x9df) << uint32(0x0);           // 12-            data << uint32(0xa5d) << uint32(0x1);           // 13-            data << uint32(0xa5c) << uint32(0x0);           // 14-            data << uint32(0xa5b) << uint32(0x1);           // 15-            data << uint32(0xa5a) << uint32(0x0);           // 16-            data << uint32(0xa59) << uint32(0x1);           // 17-            data << uint32(0xa58) << uint32(0x0);           // 18-            data << uint32(0xa57) << uint32(0x0);           // 19-            data << uint32(0xa56) << uint32(0x0);           // 20-            data << uint32(0xa55) << uint32(0x1);           // 21-            data << uint32(0xa54) << uint32(0x0);           // 22-            data << uint32(0x9e7) << uint32(0x0);           // 23-            data << uint32(0x9e6) << uint32(0x0);           // 24-            data << uint32(0x9e5) << uint32(0x0);           // 25-            data << uint32(0xa00) << uint32(0x0);           // 26-            data << uint32(0x9ff) << uint32(0x1);           // 27-            data << uint32(0x9fe) << uint32(0x0);           // 28-            data << uint32(0x9fd) << uint32(0x0);           // 29-            data << uint32(0x9fc) << uint32(0x1);           // 30-            data << uint32(0x9fb) << uint32(0x0);           // 31-            data << uint32(0xa62) << uint32(0x0);           // 32-            data << uint32(0xa61) << uint32(0x1);           // 33-            data << uint32(0xa60) << uint32(0x1);           // 34-            data << uint32(0xa5f) << uint32(0x0);           // 35-            break;-        case 3698:                                          // Nagrand Arena-            data << uint32(0xa0f) << uint32(0x0);           // 7-            data << uint32(0xa10) << uint32(0x0);           // 8-            data << uint32(0xa11) << uint32(0x0);           // 9-            break;-        case 3702:                                          // Blade's Edge Arena-            data << uint32(0x9f0) << uint32(0x0);           // 7-            data << uint32(0x9f1) << uint32(0x0);           // 8-            data << uint32(0x9f3) << uint32(0x0);           // 9-            break;-        case 3968:                                          // Ruins of Lordaeron-            data << uint32(0xbb8) << uint32(0x0);           // 7-            data << uint32(0xbb9) << uint32(0x0);           // 8-            data << uint32(0xbba) << uint32(0x0);           // 9-            break;-        case 3703:                                          // Shattrath City-            break;-        default:-            data << uint32(0x914) << uint32(0x0);           // 7-            data << uint32(0x913) << uint32(0x0);           // 8-            data << uint32(0x912) << uint32(0x0);           // 9-            data << uint32(0x915) << uint32(0x0);           // 10-            break;-    }-    GetSession()->SendPacket(&data);-}- uint32 Player::GetXPRestBonus(uint32 xp) {     uint32 rested_bonus = (uint32)GetRestBonus();           // xp for each rested bonus@@ -16060,7 +15730,6 @@     SendInitialActionButtons();     SendInitialReputations();     UpdateZone(GetZoneId());-    SendInitWorldStates();      // SMSG_SET_AURA_SINGLE Index: src/game/Player.h===================================================================--- src/game/Player.h	(revision 5483)+++ src/game/Player.h	(working copy)@@ -1643,8 +1643,6 @@         void CastItemEquipSpell(Item *item);         void CastItemCombatSpell(Item *item,Unit* Target, WeaponAttackType attType); -        void SendInitWorldStates();-        void SendUpdateWorldState(uint32 Field, uint32 Value);         void SendDirectMessage(WorldPacket *data);          void SendAuraDurationsForTarget(Unit* target);