mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[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:
parent
d3c34e93c9
commit
fecf6fdb72
18 changed files with 441 additions and 427 deletions
|
|
@ -22,6 +22,7 @@
|
|||
#include "Common.h"
|
||||
#include "SharedDefines.h"
|
||||
#include "Map.h"
|
||||
#include "ByteBuffer.h"
|
||||
|
||||
// magic event-numbers
|
||||
#define BG_EVENT_NONE 255
|
||||
|
|
@ -407,7 +408,7 @@ class BattleGround
|
|||
|
||||
/* Packet Transfer */
|
||||
// method that should fill worldpacket with actual world states (not yet implemented for all battlegrounds!)
|
||||
virtual void FillInitialWorldStates(WorldPacket& /*data*/) {}
|
||||
virtual void FillInitialWorldStates(WorldPacket& /*data*/, uint32& /*count*/) {}
|
||||
void SendPacketToTeam(uint32 TeamID, WorldPacket *packet, Player *sender = NULL, bool self = true);
|
||||
void SendPacketToAll(WorldPacket *packet);
|
||||
|
||||
|
|
@ -624,4 +625,43 @@ class BattleGround
|
|||
float m_TeamStartLocZ[BG_TEAMS_COUNT];
|
||||
float m_TeamStartLocO[BG_TEAMS_COUNT];
|
||||
};
|
||||
|
||||
// helper functions for world state list fill
|
||||
inline void FillInitialWorldState(ByteBuffer& data, uint32& count, uint32 state, uint32 value)
|
||||
{
|
||||
data << uint32(state);
|
||||
data << uint32(value);
|
||||
++count;
|
||||
}
|
||||
|
||||
inline void FillInitialWorldState(ByteBuffer& data, uint32& count, uint32 state, int32 value)
|
||||
{
|
||||
data << uint32(state);
|
||||
data << int32(value);
|
||||
++count;
|
||||
}
|
||||
|
||||
inline void FillInitialWorldState(ByteBuffer& data, uint32& count, uint32 state, bool value)
|
||||
{
|
||||
data << uint32(state);
|
||||
data << uint32(value?1:0);
|
||||
++count;
|
||||
}
|
||||
|
||||
struct WorldStatePair
|
||||
{
|
||||
uint32 state;
|
||||
uint32 value;
|
||||
};
|
||||
|
||||
inline void FillInitialWorldState(ByteBuffer& data, uint32& count, WorldStatePair const* array)
|
||||
{
|
||||
for(WorldStatePair const* itr = array; itr->state; ++itr)
|
||||
{
|
||||
data << uint32(itr->state);
|
||||
data << uint32(itr->value);
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -257,18 +257,18 @@ int32 BattleGroundAB::_GetNodeNameId(uint8 node)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void BattleGroundAB::FillInitialWorldStates(WorldPacket& data)
|
||||
void BattleGroundAB::FillInitialWorldStates(WorldPacket& data, uint32& count)
|
||||
{
|
||||
const uint8 plusArray[] = {0, 2, 3, 0, 1};
|
||||
|
||||
// Node icons
|
||||
for (uint8 node = 0; node < BG_AB_NODES_MAX; ++node)
|
||||
data << uint32(BG_AB_OP_NODEICONS[node]) << uint32((m_Nodes[node]==0)?1:0);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_NODEICONS[node], m_Nodes[node]==0);
|
||||
|
||||
// Node occupied states
|
||||
for (uint8 node = 0; node < BG_AB_NODES_MAX; ++node)
|
||||
for (uint8 i = 1; i < BG_AB_NODES_MAX; ++i)
|
||||
data << uint32(BG_AB_OP_NODESTATES[node] + plusArray[i]) << uint32((m_Nodes[node]==i)?1:0);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_NODESTATES[node] + plusArray[i], m_Nodes[node]==i);
|
||||
|
||||
// How many bases each team owns
|
||||
uint8 ally = 0, horde = 0;
|
||||
|
|
@ -278,17 +278,17 @@ void BattleGroundAB::FillInitialWorldStates(WorldPacket& data)
|
|||
else if (m_Nodes[node] == BG_AB_NODE_STATUS_HORDE_OCCUPIED)
|
||||
++horde;
|
||||
|
||||
data << uint32(BG_AB_OP_OCCUPIED_BASES_ALLY) << uint32(ally);
|
||||
data << uint32(BG_AB_OP_OCCUPIED_BASES_HORDE) << uint32(horde);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_OCCUPIED_BASES_ALLY, ally);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_OCCUPIED_BASES_HORDE, horde);
|
||||
|
||||
// Team scores
|
||||
data << uint32(BG_AB_OP_RESOURCES_MAX) << uint32(BG_AB_MAX_TEAM_SCORE);
|
||||
data << uint32(BG_AB_OP_RESOURCES_WARNING) << uint32(BG_AB_WARNING_NEAR_VICTORY_SCORE);
|
||||
data << uint32(BG_AB_OP_RESOURCES_ALLY) << uint32(m_TeamScores[BG_TEAM_ALLIANCE]);
|
||||
data << uint32(BG_AB_OP_RESOURCES_HORDE) << uint32(m_TeamScores[BG_TEAM_HORDE]);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_RESOURCES_MAX, BG_AB_MAX_TEAM_SCORE);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_RESOURCES_WARNING, BG_AB_WARNING_NEAR_VICTORY_SCORE);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_RESOURCES_ALLY, m_TeamScores[BG_TEAM_ALLIANCE]);
|
||||
FillInitialWorldState(data, count, BG_AB_OP_RESOURCES_HORDE, m_TeamScores[BG_TEAM_HORDE]);
|
||||
|
||||
// other unknown
|
||||
data << uint32(0x745) << uint32(0x2); // 37 1861 unk
|
||||
FillInitialWorldState(data, count, 0x745, 0x2); // 37 1861 unk
|
||||
}
|
||||
|
||||
void BattleGroundAB::_SendNodeUpdate(uint8 node)
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ class BattleGroundAB : public BattleGround
|
|||
/* Scorekeeping */
|
||||
virtual void UpdatePlayerScore(Player *Source, uint32 type, uint32 value);
|
||||
|
||||
virtual void FillInitialWorldStates(WorldPacket& data);
|
||||
virtual void FillInitialWorldStates(WorldPacket& data, uint32& count);
|
||||
|
||||
/* Nodes occupying */
|
||||
virtual void EventPlayerClickedOnFlag(Player *source, GameObject* target_obj);
|
||||
|
|
|
|||
|
|
@ -608,7 +608,7 @@ void BattleGroundAV::EventPlayerAssaultsPoint(Player* player, BG_AV_Nodes node)
|
|||
PlaySoundToAll((team == BG_TEAM_ALLIANCE) ? BG_AV_SOUND_ALLIANCE_ASSAULTS : BG_AV_SOUND_HORDE_ASSAULTS);
|
||||
}
|
||||
|
||||
void BattleGroundAV::FillInitialWorldStates(WorldPacket& data)
|
||||
void BattleGroundAV::FillInitialWorldStates(WorldPacket& data, uint32& count)
|
||||
{
|
||||
bool stateok;
|
||||
for (uint32 i = BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i)
|
||||
|
|
@ -616,28 +616,36 @@ void BattleGroundAV::FillInitialWorldStates(WorldPacket& data)
|
|||
for (uint8 j = 0; j < BG_AV_MAX_STATES; j++)
|
||||
{
|
||||
stateok = (m_Nodes[i].State == j);
|
||||
data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_TEAM_ALLIANCE)]) << uint32((m_Nodes[i].Owner == BG_TEAM_ALLIANCE && stateok) ? 1 : 0);
|
||||
data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_TEAM_HORDE)]) << uint32((m_Nodes[i].Owner == BG_TEAM_HORDE && stateok) ? 1 : 0);
|
||||
FillInitialWorldState(data, count, BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_TEAM_ALLIANCE)],
|
||||
m_Nodes[i].Owner == BG_TEAM_ALLIANCE && stateok);
|
||||
FillInitialWorldState(data, count, BG_AV_NodeWorldStates[i][GetWorldStateType(j, BG_TEAM_HORDE)],
|
||||
m_Nodes[i].Owner == BG_TEAM_HORDE && stateok);
|
||||
}
|
||||
}
|
||||
|
||||
if( m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].Owner == BG_AV_NEUTRAL_TEAM ) // cause neutral teams aren't handled generic
|
||||
data << uint32(AV_SNOWFALL_N) << uint32(1);
|
||||
FillInitialWorldState(data, count, AV_SNOWFALL_N, 1);
|
||||
|
||||
data << uint32(BG_AV_Alliance_Score) << uint32(m_TeamScores[BG_TEAM_ALLIANCE]);
|
||||
data << uint32(BG_AV_Horde_Score) << uint32(m_TeamScores[BG_TEAM_HORDE]);
|
||||
FillInitialWorldState(data, count, BG_AV_Alliance_Score, m_TeamScores[BG_TEAM_ALLIANCE]);
|
||||
FillInitialWorldState(data, count, BG_AV_Horde_Score, m_TeamScores[BG_TEAM_HORDE]);
|
||||
if( GetStatus() == STATUS_IN_PROGRESS ) // only if game is running the teamscores are displayed
|
||||
{
|
||||
data << uint32(BG_AV_SHOW_A_SCORE) << uint32(1);
|
||||
data << uint32(BG_AV_SHOW_H_SCORE) << uint32(1);
|
||||
FillInitialWorldState(data, count, BG_AV_SHOW_A_SCORE, 1);
|
||||
FillInitialWorldState(data, count, BG_AV_SHOW_H_SCORE, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
data << uint32(BG_AV_SHOW_A_SCORE) << uint32(0);
|
||||
data << uint32(BG_AV_SHOW_H_SCORE) << uint32(0);
|
||||
FillInitialWorldState(data, count, BG_AV_SHOW_A_SCORE, 0);
|
||||
FillInitialWorldState(data, count, BG_AV_SHOW_H_SCORE, 0);
|
||||
}
|
||||
SendMineWorldStates(BG_AV_NORTH_MINE);
|
||||
SendMineWorldStates(BG_AV_SOUTH_MINE);
|
||||
|
||||
FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_NORTH_MINE][m_Mine_Owner[BG_AV_NORTH_MINE]], 1);
|
||||
if (m_Mine_Owner[BG_AV_NORTH_MINE] != m_Mine_PrevOwner[BG_AV_NORTH_MINE])
|
||||
FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_NORTH_MINE][m_Mine_PrevOwner[BG_AV_NORTH_MINE]], 0);
|
||||
|
||||
FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_SOUTH_MINE][m_Mine_Owner[BG_AV_SOUTH_MINE]], 1);
|
||||
if (m_Mine_Owner[BG_AV_SOUTH_MINE] != m_Mine_PrevOwner[BG_AV_SOUTH_MINE])
|
||||
FillInitialWorldState(data, count, BG_AV_MineWorldStates[BG_AV_SOUTH_MINE][m_Mine_PrevOwner[BG_AV_SOUTH_MINE]], 0);
|
||||
}
|
||||
|
||||
void BattleGroundAV::UpdateNodeWorldState(BG_AV_Nodes node)
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ class BattleGroundAV : public BattleGround
|
|||
virtual void StartingEventCloseDoors();
|
||||
virtual void StartingEventOpenDoors();
|
||||
// world states
|
||||
virtual void FillInitialWorldStates(WorldPacket& data);
|
||||
virtual void FillInitialWorldStates(WorldPacket& data, uint32& count);
|
||||
|
||||
void RemovePlayer(Player *plr,uint64 guid);
|
||||
void HandleAreaTrigger(Player *Source, uint32 Trigger);
|
||||
|
|
|
|||
|
|
@ -135,11 +135,11 @@ void BattleGroundBE::HandleAreaTrigger(Player *Source, uint32 Trigger)
|
|||
// HandleTriggerBuff(buff_guid,Source);
|
||||
}
|
||||
|
||||
void BattleGroundBE::FillInitialWorldStates(WorldPacket &data)
|
||||
void BattleGroundBE::FillInitialWorldStates(WorldPacket &data, uint32& count)
|
||||
{
|
||||
data << uint32(0x9f1) << uint32(GetAlivePlayersCountByTeam(ALLIANCE)); // 7
|
||||
data << uint32(0x9f0) << uint32(GetAlivePlayersCountByTeam(HORDE)); // 8
|
||||
data << uint32(0x9f3) << uint32(1); // 9
|
||||
FillInitialWorldState(data, count, 0x9f1, GetAlivePlayersCountByTeam(ALLIANCE));
|
||||
FillInitialWorldState(data, count, 0x9f0, GetAlivePlayersCountByTeam(HORDE));
|
||||
FillInitialWorldState(data, count, 0x9f3, 1);
|
||||
}
|
||||
|
||||
void BattleGroundBE::Reset()
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class BattleGroundBE : public BattleGround
|
|||
void HandleAreaTrigger(Player *Source, uint32 Trigger);
|
||||
bool SetupBattleGround();
|
||||
virtual void Reset();
|
||||
virtual void FillInitialWorldStates(WorldPacket &d);
|
||||
virtual void FillInitialWorldStates(WorldPacket &d, uint32& count);
|
||||
void HandleKillPlayer(Player* player, Player *killer);
|
||||
bool HandlePlayerUnderMap(Player * plr);
|
||||
|
||||
|
|
|
|||
|
|
@ -660,54 +660,41 @@ void BattleGroundEY::UpdatePlayerScore(Player *Source, uint32 type, uint32 value
|
|||
}
|
||||
}
|
||||
|
||||
void BattleGroundEY::FillInitialWorldStates(WorldPacket& data)
|
||||
void BattleGroundEY::FillInitialWorldStates(WorldPacket& data, uint32& count)
|
||||
{
|
||||
data << uint32(EY_HORDE_BASE) << uint32(m_TeamPointsCount[BG_TEAM_HORDE]);
|
||||
data << uint32(EY_ALLIANCE_BASE) << uint32(m_TeamPointsCount[BG_TEAM_ALLIANCE]);
|
||||
data << uint32(0xab6) << uint32(0x0);
|
||||
data << uint32(0xab5) << uint32(0x0);
|
||||
data << uint32(0xab4) << uint32(0x0);
|
||||
data << uint32(0xab3) << uint32(0x0);
|
||||
data << uint32(0xab2) << uint32(0x0);
|
||||
data << uint32(0xab1) << uint32(0x0);
|
||||
data << uint32(0xab0) << uint32(0x0);
|
||||
data << uint32(0xaaf) << uint32(0x0);
|
||||
FillInitialWorldState(data, count, EY_HORDE_BASE, m_TeamPointsCount[BG_TEAM_HORDE]);
|
||||
FillInitialWorldState(data, count, EY_ALLIANCE_BASE, m_TeamPointsCount[BG_TEAM_ALLIANCE]);
|
||||
FillInitialWorldState(data, count, 0xab6, 0x0);
|
||||
FillInitialWorldState(data, count, 0xab5, 0x0);
|
||||
FillInitialWorldState(data, count, 0xab4, 0x0);
|
||||
FillInitialWorldState(data, count, 0xab3, 0x0);
|
||||
FillInitialWorldState(data, count, 0xab2, 0x0);
|
||||
FillInitialWorldState(data, count, 0xab1, 0x0);
|
||||
FillInitialWorldState(data, count, 0xab0, 0x0);
|
||||
FillInitialWorldState(data, count, 0xaaf, 0x0);
|
||||
|
||||
data << uint32(DRAENEI_RUINS_HORDE_CONTROL) << uint32(m_PointOwnedByTeam[DRAENEI_RUINS] == HORDE && m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(DRAENEI_RUINS_ALLIANCE_CONTROL) << uint32(m_PointOwnedByTeam[DRAENEI_RUINS] == ALLIANCE && m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(DRAENEI_RUINS_UNCONTROL) << uint32(m_PointState[DRAENEI_RUINS] != EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(MAGE_TOWER_ALLIANCE_CONTROL) << uint32(m_PointOwnedByTeam[MAGE_TOWER] == ALLIANCE && m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(MAGE_TOWER_HORDE_CONTROL) << uint32(m_PointOwnedByTeam[MAGE_TOWER] == HORDE && m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(MAGE_TOWER_UNCONTROL) << uint32(m_PointState[MAGE_TOWER] != EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(FEL_REAVER_HORDE_CONTROL) << uint32(m_PointOwnedByTeam[FEL_REALVER] == HORDE && m_PointState[FEL_REALVER] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(FEL_REAVER_ALLIANCE_CONTROL) << uint32(m_PointOwnedByTeam[FEL_REALVER] == ALLIANCE && m_PointState[FEL_REALVER] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(FEL_REAVER_UNCONTROL) << uint32(m_PointState[FEL_REALVER] != EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(BLOOD_ELF_HORDE_CONTROL) << uint32(m_PointOwnedByTeam[BLOOD_ELF] == HORDE && m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(BLOOD_ELF_ALLIANCE_CONTROL) << uint32(m_PointOwnedByTeam[BLOOD_ELF] == ALLIANCE && m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(BLOOD_ELF_UNCONTROL) << uint32(m_PointState[BLOOD_ELF] != EY_POINT_UNDER_CONTROL);
|
||||
|
||||
data << uint32(NETHERSTORM_FLAG) << uint32(m_FlagState == BG_EY_FLAG_STATE_ON_BASE);
|
||||
|
||||
data << uint32(0xad2) << uint32(0x1);
|
||||
data << uint32(0xad1) << uint32(0x1);
|
||||
data << uint32(0xabe) << uint32(GetTeamScore(HORDE));
|
||||
data << uint32(0xabd) << uint32(GetTeamScore(ALLIANCE));
|
||||
data << uint32(0xa05) << uint32(0x8e);
|
||||
data << uint32(0xaa0) << uint32(0x0);
|
||||
data << uint32(0xa9f) << uint32(0x0);
|
||||
data << uint32(0xa9e) << uint32(0x0);
|
||||
data << uint32(0xc0d) << uint32(0x17b);
|
||||
FillInitialWorldState(data, count, DRAENEI_RUINS_HORDE_CONTROL, m_PointOwnedByTeam[DRAENEI_RUINS] == HORDE && m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, DRAENEI_RUINS_ALLIANCE_CONTROL, m_PointOwnedByTeam[DRAENEI_RUINS] == ALLIANCE && m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, DRAENEI_RUINS_UNCONTROL, m_PointState[DRAENEI_RUINS] != EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, MAGE_TOWER_ALLIANCE_CONTROL, m_PointOwnedByTeam[MAGE_TOWER] == ALLIANCE && m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, MAGE_TOWER_HORDE_CONTROL, m_PointOwnedByTeam[MAGE_TOWER] == HORDE && m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, MAGE_TOWER_UNCONTROL, m_PointState[MAGE_TOWER] != EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, FEL_REAVER_HORDE_CONTROL, m_PointOwnedByTeam[FEL_REALVER] == HORDE && m_PointState[FEL_REALVER] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, FEL_REAVER_ALLIANCE_CONTROL, m_PointOwnedByTeam[FEL_REALVER] == ALLIANCE && m_PointState[FEL_REALVER] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, FEL_REAVER_UNCONTROL, m_PointState[FEL_REALVER] != EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, BLOOD_ELF_HORDE_CONTROL, m_PointOwnedByTeam[BLOOD_ELF] == HORDE && m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, BLOOD_ELF_ALLIANCE_CONTROL, m_PointOwnedByTeam[BLOOD_ELF] == ALLIANCE && m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, BLOOD_ELF_UNCONTROL, m_PointState[BLOOD_ELF] != EY_POINT_UNDER_CONTROL);
|
||||
FillInitialWorldState(data, count, NETHERSTORM_FLAG, m_FlagState == BG_EY_FLAG_STATE_ON_BASE);
|
||||
FillInitialWorldState(data, count, 0xad2, 0x1);
|
||||
FillInitialWorldState(data, count, 0xad1, 0x1);
|
||||
FillInitialWorldState(data, count, 0xabe, GetTeamScore(HORDE));
|
||||
FillInitialWorldState(data, count, 0xabd, GetTeamScore(ALLIANCE));
|
||||
FillInitialWorldState(data, count, 0xa05, 0x8e);
|
||||
FillInitialWorldState(data, count, 0xaa0, 0x0);
|
||||
FillInitialWorldState(data, count, 0xa9f, 0x0);
|
||||
FillInitialWorldState(data, count, 0xa9e, 0x0);
|
||||
FillInitialWorldState(data, count, 0xc0d, 0x17b);
|
||||
}
|
||||
|
||||
WorldSafeLocsEntry const *BattleGroundEY::GetClosestGraveYard(Player* player)
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ class BattleGroundEY : public BattleGround
|
|||
void UpdateTeamScore(uint32 Team);
|
||||
void EndBattleGround(uint32 winner);
|
||||
void UpdatePlayerScore(Player *Source, uint32 type, uint32 value);
|
||||
virtual void FillInitialWorldStates(WorldPacket& data);
|
||||
virtual void FillInitialWorldStates(WorldPacket& data, uint32& count);
|
||||
void SetDroppedFlagGUID(uint64 guid) { m_DroppedFlagGUID = guid;}
|
||||
uint64 GetDroppedFlagGUID() const { return m_DroppedFlagGUID;}
|
||||
|
||||
|
|
|
|||
|
|
@ -131,11 +131,11 @@ void BattleGroundNA::HandleAreaTrigger(Player *Source, uint32 Trigger)
|
|||
// HandleTriggerBuff(buff_guid,Source);
|
||||
}
|
||||
|
||||
void BattleGroundNA::FillInitialWorldStates(WorldPacket &data)
|
||||
void BattleGroundNA::FillInitialWorldStates(WorldPacket &data, uint32& count)
|
||||
{
|
||||
data << uint32(0xa0f) << uint32(GetAlivePlayersCountByTeam(ALLIANCE)); // 7
|
||||
data << uint32(0xa10) << uint32(GetAlivePlayersCountByTeam(HORDE)); // 8
|
||||
data << uint32(0xa11) << uint32(1); // 9
|
||||
FillInitialWorldState(data, count, 0xa0f, GetAlivePlayersCountByTeam(ALLIANCE));
|
||||
FillInitialWorldState(data, count, 0xa10, GetAlivePlayersCountByTeam(HORDE));
|
||||
FillInitialWorldState(data, count, 0xa11, 1);
|
||||
}
|
||||
|
||||
void BattleGroundNA::Reset()
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class BattleGroundNA : public BattleGround
|
|||
void HandleAreaTrigger(Player *Source, uint32 Trigger);
|
||||
bool SetupBattleGround();
|
||||
virtual void Reset();
|
||||
virtual void FillInitialWorldStates(WorldPacket &d);
|
||||
virtual void FillInitialWorldStates(WorldPacket &d, uint32& count);
|
||||
void HandleKillPlayer(Player* player, Player *killer);
|
||||
bool HandlePlayerUnderMap(Player * plr);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -132,11 +132,11 @@ void BattleGroundRL::HandleAreaTrigger(Player *Source, uint32 Trigger)
|
|||
// HandleTriggerBuff(buff_guid,Source);
|
||||
}
|
||||
|
||||
void BattleGroundRL::FillInitialWorldStates(WorldPacket &data)
|
||||
void BattleGroundRL::FillInitialWorldStates(WorldPacket &data, uint32& count)
|
||||
{
|
||||
data << uint32(0xbb8) << uint32(GetAlivePlayersCountByTeam(ALLIANCE)); // 7
|
||||
data << uint32(0xbb9) << uint32(GetAlivePlayersCountByTeam(HORDE)); // 8
|
||||
data << uint32(0xbba) << uint32(1); // 9
|
||||
FillInitialWorldState(data, count, 0xbb8, GetAlivePlayersCountByTeam(ALLIANCE));
|
||||
FillInitialWorldState(data, count, 0xbb9, GetAlivePlayersCountByTeam(HORDE));
|
||||
FillInitialWorldState(data, count, 0xbba, 1);
|
||||
}
|
||||
|
||||
void BattleGroundRL::Reset()
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class BattleGroundRL : public BattleGround
|
|||
/* inherited from BattlegroundClass */
|
||||
virtual void AddPlayer(Player *plr);
|
||||
virtual void Reset();
|
||||
virtual void FillInitialWorldStates(WorldPacket &d);
|
||||
virtual void FillInitialWorldStates(WorldPacket &d, uint32& count);
|
||||
virtual void StartingEventCloseDoors();
|
||||
virtual void StartingEventOpenDoors();
|
||||
|
||||
|
|
|
|||
|
|
@ -596,35 +596,34 @@ WorldSafeLocsEntry const* BattleGroundWS::GetClosestGraveYard(Player* player)
|
|||
}
|
||||
}
|
||||
|
||||
void BattleGroundWS::FillInitialWorldStates(WorldPacket& data)
|
||||
void BattleGroundWS::FillInitialWorldStates(WorldPacket& data, uint32& count)
|
||||
{
|
||||
data << uint32(BG_WS_FLAG_CAPTURES_ALLIANCE) << uint32(GetTeamScore(ALLIANCE));
|
||||
data << uint32(BG_WS_FLAG_CAPTURES_HORDE) << uint32(GetTeamScore(HORDE));
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_CAPTURES_ALLIANCE, GetTeamScore(ALLIANCE));
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_CAPTURES_HORDE, GetTeamScore(HORDE));
|
||||
|
||||
if (m_FlagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_ON_GROUND)
|
||||
data << uint32(BG_WS_FLAG_UNK_ALLIANCE) << uint32(-1);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_UNK_ALLIANCE, -1);
|
||||
else if (m_FlagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_ON_PLAYER)
|
||||
data << uint32(BG_WS_FLAG_UNK_ALLIANCE) << uint32(1);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_UNK_ALLIANCE, 1);
|
||||
else
|
||||
data << uint32(BG_WS_FLAG_UNK_ALLIANCE) << uint32(0);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_UNK_ALLIANCE, 0);
|
||||
|
||||
if (m_FlagState[BG_TEAM_HORDE] == BG_WS_FLAG_STATE_ON_GROUND)
|
||||
data << uint32(BG_WS_FLAG_UNK_HORDE) << uint32(-1);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_UNK_HORDE, -1);
|
||||
else if (m_FlagState[BG_TEAM_HORDE] == BG_WS_FLAG_STATE_ON_PLAYER)
|
||||
data << uint32(BG_WS_FLAG_UNK_HORDE) << uint32(1);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_UNK_HORDE, 1);
|
||||
else
|
||||
data << uint32(BG_WS_FLAG_UNK_HORDE) << uint32(0);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_UNK_HORDE, 0);
|
||||
|
||||
data << uint32(BG_WS_FLAG_CAPTURES_MAX) << uint32(BG_WS_MAX_TEAM_SCORE);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_CAPTURES_MAX, BG_WS_MAX_TEAM_SCORE);
|
||||
|
||||
if (m_FlagState[BG_TEAM_HORDE] == BG_WS_FLAG_STATE_ON_PLAYER)
|
||||
data << uint32(BG_WS_FLAG_STATE_HORDE) << uint32(2);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_STATE_HORDE, 2);
|
||||
else
|
||||
data << uint32(BG_WS_FLAG_STATE_HORDE) << uint32(1);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_STATE_HORDE, 1);
|
||||
|
||||
if (m_FlagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_ON_PLAYER)
|
||||
data << uint32(BG_WS_FLAG_STATE_ALLIANCE) << uint32(2);
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_STATE_ALLIANCE, 2);
|
||||
else
|
||||
data << uint32(BG_WS_FLAG_STATE_ALLIANCE) << uint32(1);
|
||||
|
||||
FillInitialWorldState(data, count, BG_WS_FLAG_STATE_ALLIANCE, 1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ class BattleGroundWS : public BattleGround
|
|||
void UpdatePlayerScore(Player *Source, uint32 type, uint32 value);
|
||||
void SetDroppedFlagGUID(uint64 guid, uint32 TeamID) { m_DroppedFlagGUID[GetTeamIndexByTeamId(TeamID)] = guid;}
|
||||
uint64 GetDroppedFlagGUID(uint32 TeamID) { return m_DroppedFlagGUID[GetTeamIndexByTeamId(TeamID)];}
|
||||
virtual void FillInitialWorldStates(WorldPacket& data);
|
||||
virtual void FillInitialWorldStates(WorldPacket& data, uint32& count);
|
||||
|
||||
/* Scorekeeping */
|
||||
uint32 GetTeamScore(uint32 TeamID) const { return m_TeamScores[GetTeamIndexByTeamId(TeamID)]; }
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1990,7 +1990,7 @@ class MANGOS_DLL_SPEC Player : public Unit
|
|||
void SendInitWorldStates(uint32 zone, uint32 area);
|
||||
void SendUpdateWorldState(uint32 Field, uint32 Value);
|
||||
void SendDirectMessage(WorldPacket *data);
|
||||
void SendBGWeekendWorldStates();
|
||||
void FillBGWeekendWorldStates(WorldPacket& data, uint32& count);
|
||||
|
||||
void SendAurasForTarget(Unit *target);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "9879"
|
||||
#define REVISION_NR "9880"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue