aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp93
1 files changed, 6 insertions, 87 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 0f01e6c129e..d22aba92f9e 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -9053,7 +9053,6 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
{
// data depends on zoneid/mapid...
Battleground* bg = GetBattleground();
- uint16 NumberOfFields = 0;
uint32 mapid = GetMapId();
OutdoorPvP* pvp = sOutdoorPvPMgr->GetOutdoorPvPToZoneId(zoneid);
InstanceScript* instance = GetInstanceScript();
@@ -9061,94 +9060,12 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
sLog->outDebug(LOG_FILTER_NETWORKIO, "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 = 8;
- break;
- case 139:
- NumberOfFields = 41;
- break;
- case 1377:
- NumberOfFields = 15;
- break;
- case 2597:
- NumberOfFields = 83;
- break;
- case 3277:
- NumberOfFields = 18;
- break;
- case 3358:
- case 3820:
- NumberOfFields = 40;
- break;
- case 3483:
- NumberOfFields = 27;
- break;
- case 3518:
- NumberOfFields = 39;
- break;
- case 3519:
- NumberOfFields = 38;
- break;
- case 3521:
- NumberOfFields = 37;
- break;
- case 3698:
- case 3702:
- case 3968:
- case 4378:
- case 3703:
- NumberOfFields = 11;
- break;
- case 4384:
- NumberOfFields = 30;
- break;
- case 4710:
- NumberOfFields = 28;
- break;
- case 4812: // Icecrown Citadel
- case 4100: // The Culling of Stratholme
- NumberOfFields = 13;
- break;
- case 4987: // The Ruby Sanctum
- NumberOfFields = 3;
- break;
- case 4273: // Ulduar
- NumberOfFields = 10;
- break;
- case 4197: // Wintergrasp
- /// Use the max here, and fill with zeros if missing.
- NumberOfFields = 10 + WG_MAX_OBJ + WG_MAX_WORKSHOP;
- break;
- default:
- NumberOfFields = 12;
- break;
- }
-
- WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(NumberOfFields*8)));
+ WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(12*8)));
data << uint32(mapid); // mapid
data << uint32(zoneid); // zone id
data << uint32(areaid); // area id, new 2.1.0
size_t countPos = data.wpos();
- data << uint16(NumberOfFields); // count of uint64 blocks
+ data << uint16(0); // count of uint64 blocks
data << uint32(0x8d8) << uint32(0x0); // 1
data << uint32(0x8d7) << uint32(0x0); // 2
data << uint32(0x8d6) << uint32(0x0); // 3
@@ -9711,8 +9628,6 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
bf->FillInitialWorldStates(data);
break;
}
- else
- data.put<uint16>(countPos, 12);
// No break here, intended.
default:
data << uint32(0x914) << uint32(0x0); // 7
@@ -9721,6 +9636,10 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
data << uint32(0x915) << uint32(0x0); // 10
break;
}
+
+ uint16 length = (data.wpos() - countPos) / 8;
+ data.put<uint16>(countPos, length);
+
GetSession()->SendPacket(&data);
SendBGWeekendWorldStates();
SendBattlefieldWorldStates();