aboutsummaryrefslogtreecommitdiff
path: root/src/game/MiscHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/MiscHandler.cpp')
-rw-r--r--src/game/MiscHandler.cpp86
1 files changed, 19 insertions, 67 deletions
diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp
index c204b8e9d34..043397f9c48 100644
--- a/src/game/MiscHandler.cpp
+++ b/src/game/MiscHandler.cpp
@@ -360,7 +360,7 @@ void WorldSession::HandleLogoutRequestOpcode( WorldPacket & /*recv_data*/ )
GetPlayer()->duel || //...is in Duel
GetPlayer()->HasAura(9454) || //...is frozen by GM via freeze command
//...is jumping ...is falling
- GetPlayer()->HasUnitMovementFlag(MOVEMENTFLAG_JUMPING | MOVEMENTFLAG_FALLING))
+ GetPlayer()->m_movementInfo.HasMovementFlag(MOVEMENTFLAG_JUMPING | MOVEMENTFLAG_FALLING))
{
WorldPacket data( SMSG_LOGOUT_RESPONSE, (2+4) ) ;
data << (uint8)0xC;
@@ -1057,6 +1057,11 @@ void WorldSession::HandleSetActionButtonOpcode(WorldPacket& recv_data)
sLog.outDetail( "MISC: Added Macro %u into button %u", action, button );
GetPlayer()->addActionButton(button,action,type,misc);
}
+ else if(type==ACTION_BUTTON_EQSET)
+ {
+ sLog.outDetail( "MISC: Added EquipmentSet %u into button %u", action, button );
+ GetPlayer()->addActionButton(button,action,type,misc);
+ }
else if(type==ACTION_BUTTON_SPELL)
{
sLog.outDetail( "MISC: Added Spell %u into button %u", action, button );
@@ -1210,9 +1215,10 @@ void WorldSession::HandlePlayedTime(WorldPacket& /*recv_data*/)
uint32 TotalTimePlayed = GetPlayer()->GetTotalPlayedTime();
uint32 LevelPlayedTime = GetPlayer()->GetLevelPlayedTime();
- WorldPacket data(SMSG_PLAYED_TIME, 8);
+ WorldPacket data(SMSG_PLAYED_TIME, 9);
data << TotalTimePlayed;
data << LevelPlayedTime;
+ data << uint8(0);
SendPacket(&data);
}
@@ -1234,72 +1240,18 @@ void WorldSession::HandleInspectOpcode(WorldPacket& recv_data)
uint32 guid_size = plr->GetPackGUID().wpos();
WorldPacket data(SMSG_INSPECT_TALENT, guid_size+4+talent_points);
data.append(plr->GetPackGUID());
- data << uint32(talent_points);
-
- // fill by 0 talents array
- for(uint32 i = 0; i < talent_points; ++i)
- data << uint8(0);
if(sWorld.getConfig(CONFIG_TALENTS_INSPECTING) || _player->isGameMaster())
{
- // find class talent tabs (all players have 3 talent tabs)
- uint32 const* talentTabIds = GetTalentTabPages(plr->getClass());
-
- uint32 talentTabPos = 0; // pos of first talent rank in tab including all prev tabs
- for(uint32 i = 0; i < 3; ++i)
- {
- uint32 talentTabId = talentTabIds[i];
-
- // fill by real data
- for(uint32 talentId = 0; talentId < sTalentStore.GetNumRows(); ++talentId)
- {
- TalentEntry const* talentInfo = sTalentStore.LookupEntry(talentId);
- if(!talentInfo)
- continue;
-
- // skip another tab talents
- if(talentInfo->TalentTab != talentTabId)
- continue;
-
- // find talent rank
- uint32 curtalent_maxrank = 0;
- for(uint32 k = MAX_TALENT_RANK; k > 0; --k)
- {
- if(talentInfo->RankID[k-1] && plr->HasSpell(talentInfo->RankID[k-1]))
- {
- curtalent_maxrank = k;
- break;
- }
- }
-
- // not learned talent
- if(!curtalent_maxrank)
- continue;
-
- // 1 rank talent bit index
- uint32 curtalent_index = talentTabPos + GetTalentInspectBitPosInTab(talentId);
-
- uint32 curtalent_rank_index = curtalent_index+curtalent_maxrank-1;
-
- // slot/offset in 7-bit bytes
- uint32 curtalent_rank_slot7 = curtalent_rank_index / 7;
- uint32 curtalent_rank_offset7 = curtalent_rank_index % 7;
-
- // rank pos with skipped 8 bit
- uint32 curtalent_rank_index2 = curtalent_rank_slot7 * 8 + curtalent_rank_offset7;
-
- // slot/offset in 8-bit bytes with skipped high bit
- uint32 curtalent_rank_slot = curtalent_rank_index2 / 8;
- uint32 curtalent_rank_offset = curtalent_rank_index2 % 8;
-
- // apply mask
- uint32 val = data.read<uint8>(guid_size + 4 + curtalent_rank_slot);
- val |= (1 << curtalent_rank_offset);
- data.put<uint8>(guid_size + 4 + curtalent_rank_slot, val & 0xFF);
- }
-
- talentTabPos += GetTalentTabInspectBitSize(talentTabId);
- }
+ plr->BuildPlayerTalentsInfoData(&data);
+ plr->BuildEnchantmentsInfoData(&data);
+ }
+ else
+ {
+ data << uint32(0); // unspentTalentPoints
+ data << uint8(0); // talentGroupCount
+ data << uint8(0); // talentGroupIndex
+ data << uint32(0); // slotUsedMask
}
SendPacket(&data);
@@ -1536,7 +1488,7 @@ void WorldSession::HandleSetTitleOpcode( WorldPacket & recv_data )
recv_data >> title;
// -1 at none
- if(title > 0 && title < 128)
+ if(title > 0 && title < 192)
{
if(!GetPlayer()->HasTitle(title))
return;
@@ -1657,7 +1609,7 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode( WorldPacket & recv_data )
recv_data >> guid >> unk >> flags;
- _player->SetUnitMovementFlags(flags);
+ _player->m_movementInfo.flags = flags;
}
void WorldSession::HandleRequestPetInfoOpcode( WorldPacket & /*recv_data */)