[9880] Prepare world state inint packet data in more clean way.

* Avoid use hardcoded field amount values
* Avoid use world state update packets just after world state init packet
* Attempt make code look less horrible in general.
This commit is contained in:
VladimirMangos 2010-05-12 09:24:57 +04:00
parent d3c34e93c9
commit fecf6fdb72
18 changed files with 441 additions and 427 deletions

View file

@ -7976,98 +7976,289 @@ void Player::SendUpdateWorldState(uint32 Field, uint32 Value)
GetSession()->SendPacket(&data);
}
static WorldStatePair AV_world_states[] =
{
{ 0x7ae, 0x1 }, // 7 snowfall n
{ 0x532, 0x1 }, // 8 frostwolfhut hc
{ 0x531, 0x0 }, // 9 frostwolfhut ac
{ 0x52e, 0x0 }, // 10 stormpike firstaid a_a
{ 0x571, 0x0 }, // 11 east frostwolf tower horde assaulted -unused
{ 0x570, 0x0 }, // 12 west frostwolf tower horde assaulted - unused
{ 0x567, 0x1 }, // 13 frostwolfe c
{ 0x566, 0x1 }, // 14 frostwolfw c
{ 0x550, 0x1 }, // 15 irondeep (N) ally
{ 0x544, 0x0 }, // 16 ice grave a_a
{ 0x536, 0x0 }, // 17 stormpike grave h_c
{ 0x535, 0x1 }, // 18 stormpike grave a_c
{ 0x518, 0x0 }, // 19 stoneheart grave a_a
{ 0x517, 0x0 }, // 20 stoneheart grave h_a
{ 0x574, 0x0 }, // 21 1396 unk
{ 0x573, 0x0 }, // 22 iceblood tower horde assaulted -unused
{ 0x572, 0x0 }, // 23 towerpoint horde assaulted - unused
{ 0x56f, 0x0 }, // 24 1391 unk
{ 0x56e, 0x0 }, // 25 iceblood a
{ 0x56d, 0x0 }, // 26 towerp a
{ 0x56c, 0x0 }, // 27 frostwolfe a
{ 0x56b, 0x0 }, // 28 froswolfw a
{ 0x56a, 0x1 }, // 29 1386 unk
{ 0x569, 0x1 }, // 30 iceblood c
{ 0x568, 0x1 }, // 31 towerp c
{ 0x565, 0x0 }, // 32 stoneh tower a
{ 0x564, 0x0 }, // 33 icewing tower a
{ 0x563, 0x0 }, // 34 dunn a
{ 0x562, 0x0 }, // 35 duns a
{ 0x561, 0x0 }, // 36 stoneheart bunker alliance assaulted - unused
{ 0x560, 0x0 }, // 37 icewing bunker alliance assaulted - unused
{ 0x55f, 0x0 }, // 38 dunbaldar south alliance assaulted - unused
{ 0x55e, 0x0 }, // 39 dunbaldar north alliance assaulted - unused
{ 0x55d, 0x0 }, // 40 stone tower d
{ 0x3c6, 0x0 }, // 41 966 unk
{ 0x3c4, 0x0 }, // 42 964 unk
{ 0x3c2, 0x0 }, // 43 962 unk
{ 0x516, 0x1 }, // 44 stoneheart grave a_c
{ 0x515, 0x0 }, // 45 stonheart grave h_c
{ 0x3b6, 0x0 }, // 46 950 unk
{ 0x55c, 0x0 }, // 47 icewing tower d
{ 0x55b, 0x0 }, // 48 dunn d
{ 0x55a, 0x0 }, // 49 duns d
{ 0x559, 0x0 }, // 50 1369 unk
{ 0x558, 0x0 }, // 51 iceblood d
{ 0x557, 0x0 }, // 52 towerp d
{ 0x556, 0x0 }, // 53 frostwolfe d
{ 0x555, 0x0 }, // 54 frostwolfw d
{ 0x554, 0x1 }, // 55 stoneh tower c
{ 0x553, 0x1 }, // 56 icewing tower c
{ 0x552, 0x1 }, // 57 dunn c
{ 0x551, 0x1 }, // 58 duns c
{ 0x54f, 0x0 }, // 59 irondeep (N) horde
{ 0x54e, 0x0 }, // 60 irondeep (N) ally
{ 0x54d, 0x1 }, // 61 mine (S) neutral
{ 0x54c, 0x0 }, // 62 mine (S) horde
{ 0x54b, 0x0 }, // 63 mine (S) ally
{ 0x545, 0x0 }, // 64 iceblood h_a
{ 0x543, 0x1 }, // 65 iceblod h_c
{ 0x542, 0x0 }, // 66 iceblood a_c
{ 0x540, 0x0 }, // 67 snowfall h_a
{ 0x53f, 0x0 }, // 68 snowfall a_a
{ 0x53e, 0x0 }, // 69 snowfall h_c
{ 0x53d, 0x0 }, // 70 snowfall a_c
{ 0x53c, 0x0 }, // 71 frostwolf g h_a
{ 0x53b, 0x0 }, // 72 frostwolf g a_a
{ 0x53a, 0x1 }, // 73 frostwolf g h_c
{ 0x539, 0x0 }, // 74 frostwolf g a_c
{ 0x538, 0x0 }, // 75 stormpike grave h_a
{ 0x537, 0x0 }, // 76 stormpike grave a_a
{ 0x534, 0x0 }, // 77 frostwolf hut h_a
{ 0x533, 0x0 }, // 78 frostwolf hut a_a
{ 0x530, 0x0 }, // 79 stormpike first aid h_a
{ 0x52f, 0x0 }, // 80 stormpike first aid h_c
{ 0x52d, 0x1 }, // 81 stormpike first aid a_c
{ 0x0, 0x0 }
};
static WorldStatePair WS_world_states[] =
{
{ 0x62d, 0x0 }, // 7 1581 alliance flag captures
{ 0x62e, 0x0 }, // 8 1582 horde flag captures
{ 0x609, 0x0 }, // 9 1545 unk, set to 1 on alliance flag pickup...
{ 0x60a, 0x0 }, // 10 1546 unk, set to 1 on horde flag pickup, after drop it's -1
{ 0x60b, 0x2 }, // 11 1547 unk
{ 0x641, 0x3 }, // 12 1601 unk (max flag captures?)
{ 0x922, 0x1 }, // 13 2338 horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
{ 0x923, 0x1 }, // 14 2339 alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
{ 0x0, 0x0 }
};
static WorldStatePair AB_world_states[] =
{
{ 0x6e7, 0x0 }, // 7 1767 stables alliance
{ 0x6e8, 0x0 }, // 8 1768 stables horde
{ 0x6e9, 0x0 }, // 9 1769 unk, ST?
{ 0x6ea, 0x0 }, // 10 1770 stables (show/hide)
{ 0x6ec, 0x0 }, // 11 1772 farm (0 - horde controlled, 1 - alliance controlled)
{ 0x6ed, 0x0 }, // 12 1773 farm (show/hide)
{ 0x6ee, 0x0 }, // 13 1774 farm color
{ 0x6ef, 0x0 }, // 14 1775 gold mine color, may be FM?
{ 0x6f0, 0x0 }, // 15 1776 alliance resources
{ 0x6f1, 0x0 }, // 16 1777 horde resources
{ 0x6f2, 0x0 }, // 17 1778 horde bases
{ 0x6f3, 0x0 }, // 18 1779 alliance bases
{ 0x6f4, 0x7d0 }, // 19 1780 max resources (2000)
{ 0x6f6, 0x0 }, // 20 1782 blacksmith color
{ 0x6f7, 0x0 }, // 21 1783 blacksmith (show/hide)
{ 0x6f8, 0x0 }, // 22 1784 unk, bs?
{ 0x6f9, 0x0 }, // 23 1785 unk, bs?
{ 0x6fb, 0x0 }, // 24 1787 gold mine (0 - horde contr, 1 - alliance contr)
{ 0x6fc, 0x0 }, // 25 1788 gold mine (0 - conflict, 1 - horde)
{ 0x6fd, 0x0 }, // 26 1789 gold mine (1 - show/0 - hide)
{ 0x6fe, 0x0 }, // 27 1790 gold mine color
{ 0x700, 0x0 }, // 28 1792 gold mine color, wtf?, may be LM?
{ 0x701, 0x0 }, // 29 1793 lumber mill color (0 - conflict, 1 - horde contr)
{ 0x702, 0x0 }, // 30 1794 lumber mill (show/hide)
{ 0x703, 0x0 }, // 31 1795 lumber mill color color
{ 0x732, 0x1 }, // 32 1842 stables (1 - uncontrolled)
{ 0x733, 0x1 }, // 33 1843 gold mine (1 - uncontrolled)
{ 0x734, 0x1 }, // 34 1844 lumber mill (1 - uncontrolled)
{ 0x735, 0x1 }, // 35 1845 farm (1 - uncontrolled)
{ 0x736, 0x1 }, // 36 1846 blacksmith (1 - uncontrolled)
{ 0x745, 0x2 }, // 37 1861 unk
{ 0x7a3, 0x708 }, // 38 1955 warning limit (1800)
{ 0x0, 0x0 }
};
static WorldStatePair EY_world_states[] =
{
{ 0xac1, 0x0 }, // 7 2753 Horde Bases
{ 0xac0, 0x0 }, // 8 2752 Alliance Bases
{ 0xab6, 0x0 }, // 9 2742 Mage Tower - Horde conflict
{ 0xab5, 0x0 }, // 10 2741 Mage Tower - Alliance conflict
{ 0xab4, 0x0 }, // 11 2740 Fel Reaver - Horde conflict
{ 0xab3, 0x0 }, // 12 2739 Fel Reaver - Alliance conflict
{ 0xab2, 0x0 }, // 13 2738 Draenei - Alliance conflict
{ 0xab1, 0x0 }, // 14 2737 Draenei - Horde conflict
{ 0xab0, 0x0 }, // 15 2736 unk // 0 at start
{ 0xaaf, 0x0 }, // 16 2735 unk // 0 at start
{ 0xaad, 0x0 }, // 17 2733 Draenei - Horde control
{ 0xaac, 0x0 }, // 18 2732 Draenei - Alliance control
{ 0xaab, 0x1 }, // 19 2731 Draenei uncontrolled (1 - yes, 0 - no)
{ 0xaaa, 0x0 }, // 20 2730 Mage Tower - Alliance control
{ 0xaa9, 0x0 }, // 21 2729 Mage Tower - Horde control
{ 0xaa8, 0x1 }, // 22 2728 Mage Tower uncontrolled (1 - yes, 0 - no)
{ 0xaa7, 0x0 }, // 23 2727 Fel Reaver - Horde control
{ 0xaa6, 0x0 }, // 24 2726 Fel Reaver - Alliance control
{ 0xaa5, 0x1 }, // 25 2725 Fel Reaver uncontrolled (1 - yes, 0 - no)
{ 0xaa4, 0x0 }, // 26 2724 Boold Elf - Horde control
{ 0xaa3, 0x0 }, // 27 2723 Boold Elf - Alliance control
{ 0xaa2, 0x1 }, // 28 2722 Boold Elf uncontrolled (1 - yes, 0 - no)
{ 0xac5, 0x1 }, // 29 2757 Flag (1 - show, 0 - hide) - doesn't work exactly this way!
{ 0xad2, 0x1 }, // 30 2770 Horde top-stats (1 - show, 0 - hide) // 02 -> horde picked up the flag
{ 0xad1, 0x1 }, // 31 2769 Alliance top-stats (1 - show, 0 - hide) // 02 -> alliance picked up the flag
{ 0xabe, 0x0 }, // 32 2750 Horde resources
{ 0xabd, 0x0 }, // 33 2749 Alliance resources
{ 0xa05, 0x8e }, // 34 2565 unk, constant?
{ 0xaa0, 0x0 }, // 35 2720 Capturing progress-bar (100 -> empty (only grey), 0 -> blue|red (no grey), default 0)
{ 0xa9f, 0x0 }, // 36 2719 Capturing progress-bar (0 - left, 100 - right)
{ 0xa9e, 0x0 }, // 37 2718 Capturing progress-bar (1 - show, 0 - hide)
{ 0xc0d, 0x17b }, // 38 3085 unk
// and some more ... unknown
{ 0x0, 0x0 }
};
static WorldStatePair HP_world_states[] = // Hellfire Peninsula
{
{ 0x9ba, 0x1 }, // 10
{ 0x9b9, 0x1 }, // 11
{ 0x9b5, 0x0 }, // 12
{ 0x9b4, 0x1 }, // 13
{ 0x9b3, 0x0 }, // 14
{ 0x9b2, 0x0 }, // 15
{ 0x9b1, 0x1 }, // 16
{ 0x9b0, 0x0 }, // 17
{ 0x9ae, 0x0 }, // 18 horde pvp objectives captured
{ 0x9ac, 0x0 }, // 19
{ 0x9a8, 0x0 }, // 20
{ 0x9a7, 0x0 }, // 21
{ 0x9a6, 0x1 }, // 22
{ 0x0, 0x0 }
};
static WorldStatePair TF_world_states[] = // Terokkar Forest
{
{ 0xa41, 0x0 }, // 10
{ 0xa40, 0x14 }, // 11
{ 0xa3f, 0x0 }, // 12
{ 0xa3e, 0x0 }, // 13
{ 0xa3d, 0x5 }, // 14
{ 0xa3c, 0x0 }, // 15
{ 0xa87, 0x0 }, // 16
{ 0xa86, 0x0 }, // 17
{ 0xa85, 0x0 }, // 18
{ 0xa84, 0x0 }, // 19
{ 0xa83, 0x0 }, // 20
{ 0xa82, 0x0 }, // 21
{ 0xa81, 0x0 }, // 22
{ 0xa80, 0x0 }, // 23
{ 0xa7e, 0x0 }, // 24
{ 0xa7d, 0x0 }, // 25
{ 0xa7c, 0x0 }, // 26
{ 0xa7b, 0x0 }, // 27
{ 0xa7a, 0x0 }, // 28
{ 0xa79, 0x0 }, // 29
{ 0x9d0, 0x5 }, // 30
{ 0x9ce, 0x0 }, // 31
{ 0x9cd, 0x0 }, // 32
{ 0x9cc, 0x0 }, // 33
{ 0xa88, 0x0 }, // 34
{ 0xad0, 0x0 }, // 35
{ 0xacf, 0x1 }, // 36
{ 0x0, 0x0 }
};
static WorldStatePair ZM_world_states[] = // Terokkar Forest
{
{ 0x9e1, 0x0 }, // 10
{ 0x9e0, 0x0 }, // 11
{ 0x9df, 0x0 }, // 12
{ 0xa5d, 0x1 }, // 13
{ 0xa5c, 0x0 }, // 14
{ 0xa5b, 0x1 }, // 15
{ 0xa5a, 0x0 }, // 16
{ 0xa59, 0x1 }, // 17
{ 0xa58, 0x0 }, // 18
{ 0xa57, 0x0 }, // 19
{ 0xa56, 0x0 }, // 20
{ 0xa55, 0x1 }, // 21
{ 0xa54, 0x0 }, // 22
{ 0x9e7, 0x0 }, // 23
{ 0x9e6, 0x0 }, // 24
{ 0x9e5, 0x0 }, // 25
{ 0xa00, 0x0 }, // 26
{ 0x9ff, 0x1 }, // 27
{ 0x9fe, 0x0 }, // 28
{ 0x9fd, 0x0 }, // 29
{ 0x9fc, 0x1 }, // 30
{ 0x9fb, 0x0 }, // 31
{ 0xa62, 0x0 }, // 32
{ 0xa61, 0x1 }, // 33
{ 0xa60, 0x1 }, // 34
{ 0xa5f, 0x0 }, // 35
{ 0x0, 0x0 }
};
void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
{
// data depends on zoneid/mapid...
BattleGround* bg = GetBattleGround();
uint16 NumberOfFields = 0;
uint32 mapid = GetMapId();
DEBUG_LOG("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 = 16;
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:
NumberOfFields = 11;
break;
case 3703:
NumberOfFields = 11;
break;
default:
NumberOfFields = 12;
break;
}
uint32 count = 0; // count of world states in packet
WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(NumberOfFields*8)));
WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+8*8));// guess
data << uint32(mapid); // mapid
data << uint32(zoneid); // zone id
data << uint32(areaid); // area id, new 2.1.0
data << uint16(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
size_t count_pos = data.wpos();
data << uint16(0); // count of uint64 blocks, placeholder
// common fields
FillInitialWorldState(data, count, 0x8d8, 0x0); // 1
FillInitialWorldState(data, count, 0x8d7, 0x0); // 2
FillInitialWorldState(data, count, 0x8d6, 0x0); // 3
FillInitialWorldState(data, count, 0x8d5, 0x0); // 4
FillInitialWorldState(data, count, 0x8d4, 0x0); // 5
FillInitialWorldState(data, count, 0x8d3, 0x0); // 6
// 7 1 - Arena season in progress, 0 - end of season
data << uint32(0xC77) << uint32(sWorld.getConfig(CONFIG_BOOL_ARENA_SEASON_IN_PROGRESS));
FillInitialWorldState(data, count, 0xC77, sWorld.getConfig(CONFIG_BOOL_ARENA_SEASON_IN_PROGRESS));
// 8 Arena season id
data << uint32(0xF3D) << uint32(sWorld.getConfig(CONFIG_UINT32_ARENA_SEASON_ID));
FillInitialWorldState(data, count, 0xF3D, sWorld.getConfig(CONFIG_UINT32_ARENA_SEASON_ID));
if(mapid == 530) // Outland
{
data << uint32(0x9bf) << uint32(0x0); // 7
data << uint32(0x9bd) << uint32(0xF); // 8
data << uint32(0x9bb) << uint32(0xF); // 9
FillInitialWorldState(data, count, 0x9bf, 0x0);
FillInitialWorldState(data, count, 0x9bd, 0xF);
FillInitialWorldState(data, count, 0x9bb, 0xF);
}
switch(zoneid)
{
@ -8083,297 +8274,86 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
break;
case 2597: // AV
if (bg && bg->GetTypeID() == BATTLEGROUND_AV)
bg->FillInitialWorldStates(data);
bg->FillInitialWorldStates(data, count);
else
{
data << uint32(0x7ae) << uint32(0x1); // 7 snowfall n
data << uint32(0x532) << uint32(0x1); // 8 frostwolfhut hc
data << uint32(0x531) << uint32(0x0); // 9 frostwolfhut ac
data << uint32(0x52e) << uint32(0x0); // 10 stormpike firstaid a_a
data << uint32(0x571) << uint32(0x0); // 11 east frostwolf tower horde assaulted -unused
data << uint32(0x570) << uint32(0x0); // 12 west frostwolf tower horde assaulted - unused
data << uint32(0x567) << uint32(0x1); // 13 frostwolfe c
data << uint32(0x566) << uint32(0x1); // 14 frostwolfw c
data << uint32(0x550) << uint32(0x1); // 15 irondeep (N) ally
data << uint32(0x544) << uint32(0x0); // 16 ice grave a_a
data << uint32(0x536) << uint32(0x0); // 17 stormpike grave h_c
data << uint32(0x535) << uint32(0x1); // 18 stormpike grave a_c
data << uint32(0x518) << uint32(0x0); // 19 stoneheart grave a_a
data << uint32(0x517) << uint32(0x0); // 20 stoneheart grave h_a
data << uint32(0x574) << uint32(0x0); // 21 1396 unk
data << uint32(0x573) << uint32(0x0); // 22 iceblood tower horde assaulted -unused
data << uint32(0x572) << uint32(0x0); // 23 towerpoint horde assaulted - unused
data << uint32(0x56f) << uint32(0x0); // 24 1391 unk
data << uint32(0x56e) << uint32(0x0); // 25 iceblood a
data << uint32(0x56d) << uint32(0x0); // 26 towerp a
data << uint32(0x56c) << uint32(0x0); // 27 frostwolfe a
data << uint32(0x56b) << uint32(0x0); // 28 froswolfw a
data << uint32(0x56a) << uint32(0x1); // 29 1386 unk
data << uint32(0x569) << uint32(0x1); // 30 iceblood c
data << uint32(0x568) << uint32(0x1); // 31 towerp c
data << uint32(0x565) << uint32(0x0); // 32 stoneh tower a
data << uint32(0x564) << uint32(0x0); // 33 icewing tower a
data << uint32(0x563) << uint32(0x0); // 34 dunn a
data << uint32(0x562) << uint32(0x0); // 35 duns a
data << uint32(0x561) << uint32(0x0); // 36 stoneheart bunker alliance assaulted - unused
data << uint32(0x560) << uint32(0x0); // 37 icewing bunker alliance assaulted - unused
data << uint32(0x55f) << uint32(0x0); // 38 dunbaldar south alliance assaulted - unused
data << uint32(0x55e) << uint32(0x0); // 39 dunbaldar north alliance assaulted - unused
data << uint32(0x55d) << uint32(0x0); // 40 stone tower d
data << uint32(0x3c6) << uint32(0x0); // 41 966 unk
data << uint32(0x3c4) << uint32(0x0); // 42 964 unk
data << uint32(0x3c2) << uint32(0x0); // 43 962 unk
data << uint32(0x516) << uint32(0x1); // 44 stoneheart grave a_c
data << uint32(0x515) << uint32(0x0); // 45 stonheart grave h_c
data << uint32(0x3b6) << uint32(0x0); // 46 950 unk
data << uint32(0x55c) << uint32(0x0); // 47 icewing tower d
data << uint32(0x55b) << uint32(0x0); // 48 dunn d
data << uint32(0x55a) << uint32(0x0); // 49 duns d
data << uint32(0x559) << uint32(0x0); // 50 1369 unk
data << uint32(0x558) << uint32(0x0); // 51 iceblood d
data << uint32(0x557) << uint32(0x0); // 52 towerp d
data << uint32(0x556) << uint32(0x0); // 53 frostwolfe d
data << uint32(0x555) << uint32(0x0); // 54 frostwolfw d
data << uint32(0x554) << uint32(0x1); // 55 stoneh tower c
data << uint32(0x553) << uint32(0x1); // 56 icewing tower c
data << uint32(0x552) << uint32(0x1); // 57 dunn c
data << uint32(0x551) << uint32(0x1); // 58 duns c
data << uint32(0x54f) << uint32(0x0); // 59 irondeep (N) horde
data << uint32(0x54e) << uint32(0x0); // 60 irondeep (N) ally
data << uint32(0x54d) << uint32(0x1); // 61 mine (S) neutral
data << uint32(0x54c) << uint32(0x0); // 62 mine (S) horde
data << uint32(0x54b) << uint32(0x0); // 63 mine (S) ally
data << uint32(0x545) << uint32(0x0); // 64 iceblood h_a
data << uint32(0x543) << uint32(0x1); // 65 iceblod h_c
data << uint32(0x542) << uint32(0x0); // 66 iceblood a_c
data << uint32(0x540) << uint32(0x0); // 67 snowfall h_a
data << uint32(0x53f) << uint32(0x0); // 68 snowfall a_a
data << uint32(0x53e) << uint32(0x0); // 69 snowfall h_c
data << uint32(0x53d) << uint32(0x0); // 70 snowfall a_c
data << uint32(0x53c) << uint32(0x0); // 71 frostwolf g h_a
data << uint32(0x53b) << uint32(0x0); // 72 frostwolf g a_a
data << uint32(0x53a) << uint32(0x1); // 73 frostwolf g h_c
data << uint32(0x539) << uint32(0x0); // 74 frostwolf g a_c
data << uint32(0x538) << uint32(0x0); // 75 stormpike grave h_a
data << uint32(0x537) << uint32(0x0); // 76 stormpike grave a_a
data << uint32(0x534) << uint32(0x0); // 77 frostwolf hut h_a
data << uint32(0x533) << uint32(0x0); // 78 frostwolf hut a_a
data << uint32(0x530) << uint32(0x0); // 79 stormpike first aid h_a
data << uint32(0x52f) << uint32(0x0); // 80 stormpike first aid h_c
data << uint32(0x52d) << uint32(0x1); // 81 stormpike first aid a_c
}
FillInitialWorldState(data,count, AV_world_states);
break;
case 3277: // WS
if (bg && bg->GetTypeID() == BATTLEGROUND_WS)
bg->FillInitialWorldStates(data);
bg->FillInitialWorldStates(data, count);
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)
}
FillInitialWorldState(data,count, WS_world_states);
break;
case 3358: // AB
if (bg && bg->GetTypeID() == BATTLEGROUND_AB)
bg->FillInitialWorldStates(data);
bg->FillInitialWorldStates(data, count);
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)
}
FillInitialWorldState(data,count, AB_world_states);
break;
case 3820: // EY
if (bg && bg->GetTypeID() == BATTLEGROUND_EY)
bg->FillInitialWorldStates(data);
bg->FillInitialWorldStates(data, count);
else
{
data << uint32(0xac1) << uint32(0x0); // 7 2753 Horde Bases
data << uint32(0xac0) << uint32(0x0); // 8 2752 Alliance Bases
data << uint32(0xab6) << uint32(0x0); // 9 2742 Mage Tower - Horde conflict
data << uint32(0xab5) << uint32(0x0); // 10 2741 Mage Tower - Alliance conflict
data << uint32(0xab4) << uint32(0x0); // 11 2740 Fel Reaver - Horde conflict
data << uint32(0xab3) << uint32(0x0); // 12 2739 Fel Reaver - Alliance conflict
data << uint32(0xab2) << uint32(0x0); // 13 2738 Draenei - Alliance conflict
data << uint32(0xab1) << uint32(0x0); // 14 2737 Draenei - Horde conflict
data << uint32(0xab0) << uint32(0x0); // 15 2736 unk // 0 at start
data << uint32(0xaaf) << uint32(0x0); // 16 2735 unk // 0 at start
data << uint32(0xaad) << uint32(0x0); // 17 2733 Draenei - Horde control
data << uint32(0xaac) << uint32(0x0); // 18 2732 Draenei - Alliance control
data << uint32(0xaab) << uint32(0x1); // 19 2731 Draenei uncontrolled (1 - yes, 0 - no)
data << uint32(0xaaa) << uint32(0x0); // 20 2730 Mage Tower - Alliance control
data << uint32(0xaa9) << uint32(0x0); // 21 2729 Mage Tower - Horde control
data << uint32(0xaa8) << uint32(0x1); // 22 2728 Mage Tower uncontrolled (1 - yes, 0 - no)
data << uint32(0xaa7) << uint32(0x0); // 23 2727 Fel Reaver - Horde control
data << uint32(0xaa6) << uint32(0x0); // 24 2726 Fel Reaver - Alliance control
data << uint32(0xaa5) << uint32(0x1); // 25 2725 Fel Reaver uncontrolled (1 - yes, 0 - no)
data << uint32(0xaa4) << uint32(0x0); // 26 2724 Boold Elf - Horde control
data << uint32(0xaa3) << uint32(0x0); // 27 2723 Boold Elf - Alliance control
data << uint32(0xaa2) << uint32(0x1); // 28 2722 Boold Elf uncontrolled (1 - yes, 0 - no)
data << uint32(0xac5) << uint32(0x1); // 29 2757 Flag (1 - show, 0 - hide) - doesn't work exactly this way!
data << uint32(0xad2) << uint32(0x1); // 30 2770 Horde top-stats (1 - show, 0 - hide) // 02 -> horde picked up the flag
data << uint32(0xad1) << uint32(0x1); // 31 2769 Alliance top-stats (1 - show, 0 - hide) // 02 -> alliance picked up the flag
data << uint32(0xabe) << uint32(0x0); // 32 2750 Horde resources
data << uint32(0xabd) << uint32(0x0); // 33 2749 Alliance resources
data << uint32(0xa05) << uint32(0x8e); // 34 2565 unk, constant?
data << uint32(0xaa0) << uint32(0x0); // 35 2720 Capturing progress-bar (100 -> empty (only grey), 0 -> blue|red (no grey), default 0)
data << uint32(0xa9f) << uint32(0x0); // 36 2719 Capturing progress-bar (0 - left, 100 - right)
data << uint32(0xa9e) << uint32(0x0); // 37 2718 Capturing progress-bar (1 - show, 0 - hide)
data << uint32(0xc0d) << uint32(0x17b); // 38 3085 unk
// and some more ... unknown
}
FillInitialWorldState(data,count, EY_world_states);
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
FillInitialWorldState(data,count, HP_world_states);
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
FillInitialWorldState(data,count, TF_world_states);
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
FillInitialWorldState(data,count, ZM_world_states);
break;
case 3698: // Nagrand Arena
if (bg && bg->GetTypeID() == BATTLEGROUND_NA)
bg->FillInitialWorldStates(data);
bg->FillInitialWorldStates(data, count);
else
{
data << uint32(0xa0f) << uint32(0x0); // 7
data << uint32(0xa10) << uint32(0x0); // 8
data << uint32(0xa11) << uint32(0x0); // 9 show
FillInitialWorldState(data,count,0xa0f,0x0);// 7
FillInitialWorldState(data,count,0xa10,0x0);// 8
FillInitialWorldState(data,count,0xa11,0x0);// 9 show
}
break;
case 3702: // Blade's Edge Arena
if (bg && bg->GetTypeID() == BATTLEGROUND_BE)
bg->FillInitialWorldStates(data);
bg->FillInitialWorldStates(data, count);
else
{
data << uint32(0x9f0) << uint32(0x0); // 7 gold
data << uint32(0x9f1) << uint32(0x0); // 8 green
data << uint32(0x9f3) << uint32(0x0); // 9 show
FillInitialWorldState(data,count,0x9f0,0x0);// 7 gold
FillInitialWorldState(data,count,0x9f1,0x0);// 8 green
FillInitialWorldState(data,count,0x9f3,0x0);// 9 show
}
break;
case 3968: // Ruins of Lordaeron
if (bg && bg->GetTypeID() == BATTLEGROUND_RL)
bg->FillInitialWorldStates(data);
bg->FillInitialWorldStates(data, count);
else
{
data << uint32(0xbb8) << uint32(0x0); // 7 gold
data << uint32(0xbb9) << uint32(0x0); // 8 green
data << uint32(0xbba) << uint32(0x0); // 9 show
FillInitialWorldState(data,count,0xbb8,0x0);// 7 gold
FillInitialWorldState(data,count,0xbb9,0x0);// 8 green
FillInitialWorldState(data,count,0xbba,0x0);// 9 show
}
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
FillInitialWorldState(data,count, 0x914, 0x0); // 7
FillInitialWorldState(data,count, 0x913, 0x0); // 8
FillInitialWorldState(data,count, 0x912, 0x0); // 9
FillInitialWorldState(data,count, 0x915, 0x0); // 10
break;
}
FillBGWeekendWorldStates(data,count);
data.put<uint16>(count_pos,count); // set actual world state amount
GetSession()->SendPacket(&data);
SendBGWeekendWorldStates();
}
void Player::SendBGWeekendWorldStates()
void Player::FillBGWeekendWorldStates(WorldPacket& data, uint32& count)
{
for(uint32 i = 1; i < sBattlemasterListStore.GetNumRows(); ++i)
{
@ -8381,9 +8361,9 @@ void Player::SendBGWeekendWorldStates()
if (bl && bl->HolidayWorldStateId)
{
if (BattleGroundMgr::IsBGWeekend(BattleGroundTypeId(bl->id)))
SendUpdateWorldState(bl->HolidayWorldStateId,1);
FillInitialWorldState(data, count, bl->HolidayWorldStateId, 1);
else
SendUpdateWorldState(bl->HolidayWorldStateId,0);
FillInitialWorldState(data, count, bl->HolidayWorldStateId, 0);
}
}
}