aboutsummaryrefslogtreecommitdiff
path: root/src/game/WorldSession.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/WorldSession.h')
-rw-r--r--src/game/WorldSession.h1285
1 files changed, 643 insertions, 642 deletions
diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h
index 0f46af26c94..637d833e2de 100644
--- a/src/game/WorldSession.h
+++ b/src/game/WorldSession.h
@@ -1,642 +1,643 @@
-/*
- * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/// \addtogroup u2w
-/// @{
-/// \file
-
-#ifndef __WORLDSESSION_H
-#define __WORLDSESSION_H
-
-#include "Common.h"
-
-class MailItemsInfo;
-struct ItemPrototype;
-struct AuctionEntry;
-
-class Creature;
-class Item;
-class Object;
-class Player;
-class Unit;
-class WorldPacket;
-class WorldSocket;
-class WorldSession;
-class QueryResult;
-class LoginQueryHolder;
-class CharacterHandler;
-
-#define CHECK_PACKET_SIZE(P,S) if((P).size() < (S)) return SizeError((P),(S));
-
-enum PartyOperation
-{
- PARTY_OP_INVITE = 0,
- PARTY_OP_LEAVE = 2
-};
-
-enum PartyResult
-{
- PARTY_RESULT_OK = 0,
- PARTY_RESULT_CANT_FIND_TARGET = 1,
- PARTY_RESULT_NOT_IN_YOUR_PARTY = 2,
- PARTY_RESULT_NOT_IN_YOUR_INSTANCE = 3,
- PARTY_RESULT_PARTY_FULL = 4,
- PARTY_RESULT_ALREADY_IN_GROUP = 5,
- PARTY_RESULT_YOU_NOT_IN_GROUP = 6,
- PARTY_RESULT_YOU_NOT_LEADER = 7,
- PARTY_RESULT_TARGET_UNFRIENDLY = 8,
- PARTY_RESULT_TARGET_IGNORE_YOU = 9,
- PARTY_RESULT_INVITE_RESTRICTED = 13
-};
-
-/// Player session in the World
-class MANGOS_DLL_SPEC WorldSession
-{
- friend class CharacterHandler;
- public:
- WorldSession(uint32 id, WorldSocket *sock, uint32 sec, bool tbc, time_t mute_time, LocaleConstant locale);
- ~WorldSession();
-
- bool PlayerLoading() const { return m_playerLoading; }
- bool PlayerLogout() const { return m_playerLogout; }
-
- void SizeError(WorldPacket const& packet, uint32 size) const;
-
- void SendPacket(WorldPacket const* packet);
- void SendNotification(const char *format,...) ATTR_PRINTF(2,3);
- void SendLfgResult(uint32 type, uint32 entry, uint8 lfg_type);
- void SendPartyResult(PartyOperation operation, std::string member, PartyResult res);
- void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2,3);
-
- uint32 GetSecurity() const { return _security; }
- uint32 GetAccountId() const { return _accountId; }
- Player* GetPlayer() const { return _player; }
- char const* GetPlayerName() const;
- void SetSecurity(uint32 security) { _security = security; }
- std::string& GetRemoteAddress() { return m_Address; }
- void SetPlayer(Player *plr) { _player = plr; }
- bool IsTBC() const { return m_isTBC; }
-
- /// Is the user engaged in a log out process?
- bool isLogingOut() const { return _logoutTime || m_playerLogout; }
-
- /// Engage the logout process for the user
- void LogoutRequest(time_t requestTime)
- {
- _logoutTime = requestTime;
- }
-
- /// Is logout cooldown expired?
- bool ShouldLogOut(time_t currTime) const
- {
- return (_logoutTime > 0 && currTime >= _logoutTime + 20);
- }
-
- void LogoutPlayer(bool Save);
- void KickPlayer();
-
- void QueuePacket(WorldPacket* new_packet);
- bool Update(uint32 diff);
-
- /// Handle the authentication waiting queue (to be completed)
- void SendAuthWaitQue(uint32 position);
-
- //void SendTestCreatureQueryOpcode( uint32 entry, uint64 guid, uint32 testvalue );
- void SendNameQueryOpcode(Player* p);
- void SendNameQueryOpcodeFromDB(uint64 guid);
- static void SendNameQueryOpcodeFromDBCallBack(QueryResult *result, uint32 accountId);
-
- void SendTrainerList( uint64 guid );
- void SendTrainerList( uint64 guid,std::string strTitle );
- void SendListInventory( uint64 guid );
- void SendShowBank( uint64 guid );
- void SendTabardVendorActivate( uint64 guid );
- void SendSpiritResurrect();
- void SendBindPoint(Creature* npc);
- void SendGMTicketGetTicket(uint32 status, char const* text);
-
- void SendAttackStop(Unit const* enemy);
-
- void SendBattlegGroundList( uint64 guid, uint32 bgTypeId );
-
- void SendTradeStatus(uint32 status);
- void SendCancelTrade();
-
- void SendStablePet(uint64 guid );
- void SendPetitionQueryOpcode( uint64 petitionguid);
- void SendUpdateTrade();
-
- //pet
- void SendPetNameQuery(uint64 guid, uint32 petnumber);
-
- //mail
- //used with item_page table
- bool SendItemInfo( uint32 itemid, WorldPacket data );
- static void SendReturnToSender(uint8 messageType, uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, std::string subject, uint32 itemTextId, MailItemsInfo *mi, uint32 money, uint32 COD, uint16 mailTemplateId = 0);
- static void SendMailTo(Player* receiver, uint8 messageType, uint8 stationery, uint32 sender_guidlow_or_entry, uint32 received_guidlow, std::string subject, uint32 itemTextId, MailItemsInfo* mi, uint32 money, uint32 COD, uint32 checked, uint32 deliver_delay = 0, uint16 mailTemplateId = 0);
-
- //auction
- void SendAuctionHello( uint64 guid, Creature * unit );
- void SendAuctionCommandResult( uint32 auctionId, uint32 Action, uint32 ErrorCode, uint32 bidError = 0);
- void SendAuctionBidderNotification( uint32 location, uint32 auctionId, uint64 bidder, uint32 bidSum, uint32 diff, uint32 item_template);
- void SendAuctionOwnerNotification( AuctionEntry * auction );
- bool SendAuctionInfo(WorldPacket & data, AuctionEntry* auction);
- void SendAuctionOutbiddedMail( AuctionEntry * auction, uint32 newPrice );
- void SendAuctionCancelledToBidderMail( AuctionEntry* auction );
-
- //Item Enchantment
- void SendEnchantmentLog(uint64 Target, uint64 Caster,uint32 ItemID,uint32 SpellID);
- void SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,uint32 slot,uint32 Duration);
-
- //Taxi
- void SendTaxiStatus( uint64 guid );
- void SendTaxiMenu( Creature* unit );
- void SendDoFlight( uint16 MountId, uint32 path, uint32 pathNode = 0 );
- bool SendLearnNewTaxiNode( Creature* unit );
-
- // Guild/Arena Team
- void SendGuildCommandResult(uint32 typecmd,std::string str,uint32 cmdresult);
- void SendArenaTeamCommandResult(uint32 unk1, std::string str1, std::string str2, uint32 unk3);
- void BuildArenaTeamEventPacket(WorldPacket *data, uint8 eventid, uint8 str_count, std::string str1, std::string str2, std::string str3);
- void SendNotInArenaTeamPacket(uint8 type);
- void SendPetitionShowList( uint64 guid );
- void SendSaveGuildEmblem( uint32 msg );
-
- // Looking For Group
- // TRUE values set by client sending CMSG_LFG_SET_AUTOJOIN and CMSG_LFM_CLEAR_AUTOFILL before player login
- bool LookingForGroup_auto_join;
- bool LookingForGroup_auto_add;
-
- void BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data);
-
- void DoLootRelease( uint64 lguid );
-
- // Account mute time
- time_t m_muteTime;
-
- // Locales
- LocaleConstant GetSessionDbcLocale() { return m_sessionDbcLocale; }
- int GetSessionDbLocaleIndex() { return m_sessionDbLocaleIndex; }
- const char *GetMangosString(int32 entry);
-
- uint32 GetLatency() const { return m_latency; }
- void SetLatency(uint32 latency) { m_latency = latency; }
- uint32 getDialogStatus(Player *pPlayer, Object* questgiver, uint32 defstatus);
-
- public: // opcodes handlers
-
- void Handle_NULL(WorldPacket& recvPacket); // not used
- void Handle_EarlyProccess( WorldPacket& recvPacket);// just mark packets processed in WorldSocket::OnRead
- void Handle_ServerSide(WorldPacket& recvPacket); // sever side only, can't be accepted from client
- void Handle_Depricated(WorldPacket& recvPacket); // never used anymore by client
-
- void HandleCharEnumOpcode(WorldPacket& recvPacket);
- void HandleCharDeleteOpcode(WorldPacket& recvPacket);
- void HandleCharCreateOpcode(WorldPacket& recvPacket);
- void HandlePlayerLoginOpcode(WorldPacket& recvPacket);
- void HandleCharEnum(QueryResult * result);
- void HandlePlayerLogin(LoginQueryHolder * holder);
-
- // played time
- void HandlePlayedTime(WorldPacket& recvPacket);
-
- // new
- void HandleMoveUnRootAck(WorldPacket& recvPacket);
- void HandleMoveRootAck(WorldPacket& recvPacket);
- void HandleLookingForGroup(WorldPacket& recvPacket);
-
- // new inspect
- void HandleInspectOpcode(WorldPacket& recvPacket);
-
- // new party stats
- void HandleInspectHonorStatsOpcode(WorldPacket& recvPacket);
-
- void HandleMoveWaterWalkAck(WorldPacket& recvPacket);
- void HandleFeatherFallAck(WorldPacket &recv_data);
-
- void HandleMoveHoverAck( WorldPacket & recv_data );
-
- void HandleMountSpecialAnimOpcode(WorldPacket &recvdata);
-
- // character view
- void HandleToggleHelmOpcode(WorldPacket& recv_data);
- void HandleToggleCloakOpcode(WorldPacket& recv_data);
-
- // repair
- void HandleRepairItemOpcode(WorldPacket& recvPacket);
-
- // Knockback
- void HandleMoveKnockBackAck(WorldPacket& recvPacket);
-
- void HandleMoveTeleportAck(WorldPacket& recvPacket);
- void HandleForceSpeedChangeAck( WorldPacket & recv_data );
-
- void HandlePingOpcode(WorldPacket& recvPacket);
- void HandleAuthSessionOpcode(WorldPacket& recvPacket);
- void HandleRepopRequestOpcode(WorldPacket& recvPacket);
- void HandleAutostoreLootItemOpcode(WorldPacket& recvPacket);
- void HandleLootMoneyOpcode(WorldPacket& recvPacket);
- void HandleLootOpcode(WorldPacket& recvPacket);
- void HandleLootReleaseOpcode(WorldPacket& recvPacket);
- void HandleLootMasterGiveOpcode(WorldPacket& recvPacket);
- void HandleWhoOpcode(WorldPacket& recvPacket);
- void HandleLogoutRequestOpcode(WorldPacket& recvPacket);
- void HandlePlayerLogoutOpcode(WorldPacket& recvPacket);
- void HandleLogoutCancelOpcode(WorldPacket& recvPacket);
- void HandleGMTicketGetTicketOpcode(WorldPacket& recvPacket);
- void HandleGMTicketCreateOpcode(WorldPacket& recvPacket);
- void HandleGMTicketSystemStatusOpcode(WorldPacket& recvPacket);
-
- void HandleGMTicketDeleteOpcode(WorldPacket& recvPacket);
- void HandleGMTicketUpdateTextOpcode(WorldPacket& recvPacket);
-
- void HandleGMSurveySubmit(WorldPacket& recvPacket);
-
- void HandleTogglePvP(WorldPacket& recvPacket);
-
- void HandleZoneUpdateOpcode(WorldPacket& recvPacket);
- void HandleSetTargetOpcode(WorldPacket& recvPacket);
- void HandleSetSelectionOpcode(WorldPacket& recvPacket);
- void HandleStandStateChangeOpcode(WorldPacket& recvPacket);
- void HandleEmoteOpcode(WorldPacket& recvPacket);
- void HandleFriendListOpcode(WorldPacket& recvPacket);
- void HandleAddFriendOpcode(WorldPacket& recvPacket);
- void HandleDelFriendOpcode(WorldPacket& recvPacket);
- void HandleAddIgnoreOpcode(WorldPacket& recvPacket);
- void HandleDelIgnoreOpcode(WorldPacket& recvPacket);
- void HandleSetFriendNoteOpcode(WorldPacket& recvPacket);
- void HandleBugOpcode(WorldPacket& recvPacket);
- void HandleSetAmmoOpcode(WorldPacket& recvPacket);
- void HandleItemNameQueryOpcode(WorldPacket& recvPacket);
-
- void HandleAreaTriggerOpcode(WorldPacket& recvPacket);
-
- void HandleSetFactionAtWar( WorldPacket & recv_data );
- void HandleSetFactionCheat( WorldPacket & recv_data );
- void HandleSetWatchedFactionIndexOpcode(WorldPacket & recv_data);
- void HandleSetWatchedFactionInactiveOpcode(WorldPacket & recv_data);
-
- void HandleUpdateAccountData(WorldPacket& recvPacket);
- void HandleRequestAccountData(WorldPacket& recvPacket);
- void HandleSetActionButtonOpcode(WorldPacket& recvPacket);
-
- void HandleGameObjectUseOpcode(WorldPacket& recPacket);
- void HandleMeetingStoneInfo(WorldPacket& recPacket);
-
- void HandleNameQueryOpcode(WorldPacket& recvPacket);
-
- void HandleQueryTimeOpcode(WorldPacket& recvPacket);
-
- void HandleCreatureQueryOpcode(WorldPacket& recvPacket);
-
- void HandleGameObjectQueryOpcode(WorldPacket& recvPacket);
-
- void HandleMoveWorldportAckOpcode(WorldPacket& recvPacket);
- void HandleMoveWorldportAckOpcode(); // for server-side calls
-
- void HandleMovementOpcodes(WorldPacket& recvPacket);
- void HandleSetActiveMoverOpcode(WorldPacket &recv_data);
- void HandleMoveTimeSkippedOpcode(WorldPacket &recv_data);
-
- void HandleRequestRaidInfoOpcode( WorldPacket & recv_data );
-
- void HandleBattlefieldStatusOpcode(WorldPacket &recv_data);
- void HandleBattleMasterHelloOpcode(WorldPacket &recv_data);
-
- void HandleGroupInviteOpcode(WorldPacket& recvPacket);
- //void HandleGroupCancelOpcode(WorldPacket& recvPacket);
- void HandleGroupAcceptOpcode(WorldPacket& recvPacket);
- void HandleGroupDeclineOpcode(WorldPacket& recvPacket);
- void HandleGroupUninviteNameOpcode(WorldPacket& recvPacket);
- void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket);
- void HandleGroupUninvite(uint64 guid, std::string name);
- void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
- void HandleGroupLeaveOpcode(WorldPacket& recvPacket);
- void HandleGroupPassOnLootOpcode( WorldPacket &recv_data );
- void HandleLootMethodOpcode(WorldPacket& recvPacket);
- void HandleLootRoll( WorldPacket &recv_data );
- void HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data );
- void HandleRaidIconTargetOpcode( WorldPacket & recv_data );
- void HandleRaidReadyCheckOpcode( WorldPacket & recv_data );
- void HandleRaidReadyCheckFinishOpcode( WorldPacket & recv_data );
- void HandleRaidConvertOpcode( WorldPacket & recv_data );
- void HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data );
- void HandleGroupAssistantOpcode( WorldPacket & recv_data );
- void HandleGroupPromoteOpcode( WorldPacket & recv_data );
-
- void HandlePetitionBuyOpcode(WorldPacket& recv_data);
- void HandlePetitionShowSignOpcode(WorldPacket& recv_data);
- void HandlePetitionQueryOpcode(WorldPacket& recv_data);
- void HandlePetitionRenameOpcode(WorldPacket& recv_data);
- void HandlePetitionSignOpcode(WorldPacket& recv_data);
- void HandlePetitionDeclineOpcode(WorldPacket& recv_data);
- void HandleOfferPetitionOpcode(WorldPacket& recv_data);
- void HandleTurnInPetitionOpcode(WorldPacket& recv_data);
-
- void HandleGuildQueryOpcode(WorldPacket& recvPacket);
- void HandleGuildCreateOpcode(WorldPacket& recvPacket);
- void HandleGuildInviteOpcode(WorldPacket& recvPacket);
- void HandleGuildRemoveOpcode(WorldPacket& recvPacket);
- void HandleGuildAcceptOpcode(WorldPacket& recvPacket);
- void HandleGuildDeclineOpcode(WorldPacket& recvPacket);
- void HandleGuildInfoOpcode(WorldPacket& recvPacket);
- void HandleGuildEventLogOpcode(WorldPacket& recvPacket);
- void HandleGuildRosterOpcode(WorldPacket& recvPacket);
- void HandleGuildPromoteOpcode(WorldPacket& recvPacket);
- void HandleGuildDemoteOpcode(WorldPacket& recvPacket);
- void HandleGuildLeaveOpcode(WorldPacket& recvPacket);
- void HandleGuildDisbandOpcode(WorldPacket& recvPacket);
- void HandleGuildLeaderOpcode(WorldPacket& recvPacket);
- void HandleGuildMOTDOpcode(WorldPacket& recvPacket);
- void HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket);
- void HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket);
- void HandleGuildRankOpcode(WorldPacket& recvPacket);
- void HandleGuildAddRankOpcode(WorldPacket& recvPacket);
- void HandleGuildDelRankOpcode(WorldPacket& recvPacket);
- void HandleGuildChangeInfoOpcode(WorldPacket& recvPacket);
- void HandleGuildSaveEmblemOpcode(WorldPacket& recvPacket);
-
- void HandleTaxiNodeStatusQueryOpcode(WorldPacket& recvPacket);
- void HandleTaxiQueryAvailableNodesOpcode(WorldPacket& recvPacket);
- void HandleActivateTaxiOpcode(WorldPacket& recvPacket);
- void HandleActivateTaxiFarOpcode(WorldPacket& recvPacket);
- void HandleTaxiNextDestinationOpcode(WorldPacket& recvPacket);
-
- void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket);
- void HandleBankerActivateOpcode(WorldPacket& recvPacket);
- void HandleBuyBankSlotOpcode(WorldPacket& recvPacket);
- void HandleTrainerListOpcode(WorldPacket& recvPacket);
- void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
- void HandlePetitionShowListOpcode(WorldPacket& recvPacket);
- void HandleGossipHelloOpcode(WorldPacket& recvPacket);
- void HandleGossipSelectOptionOpcode(WorldPacket& recvPacket);
- void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket);
- void HandleNpcTextQueryOpcode(WorldPacket& recvPacket);
- void HandleBinderActivateOpcode(WorldPacket& recvPacket);
- void HandleListStabledPetsOpcode(WorldPacket& recvPacket);
- void HandleStablePet(WorldPacket& recvPacket);
- void HandleUnstablePet(WorldPacket& recvPacket);
- void HandleBuyStableSlot(WorldPacket& recvPacket);
- void HandleStableRevivePet(WorldPacket& recvPacket);
- void HandleStableSwapPet(WorldPacket& recvPacket);
-
- void HandleDuelAcceptedOpcode(WorldPacket& recvPacket);
- void HandleDuelCancelledOpcode(WorldPacket& recvPacket);
-
- void HandleAcceptTradeOpcode(WorldPacket& recvPacket);
- void HandleBeginTradeOpcode(WorldPacket& recvPacket);
- void HandleBusyTradeOpcode(WorldPacket& recvPacket);
- void HandleCancelTradeOpcode(WorldPacket& recvPacket);
- void HandleClearTradeItemOpcode(WorldPacket& recvPacket);
- void HandleIgnoreTradeOpcode(WorldPacket& recvPacket);
- void HandleInitiateTradeOpcode(WorldPacket& recvPacket);
- void HandleSetTradeGoldOpcode(WorldPacket& recvPacket);
- void HandleSetTradeItemOpcode(WorldPacket& recvPacket);
- void HandleUnacceptTradeOpcode(WorldPacket& recvPacket);
-
- void HandleAuctionHelloOpcode(WorldPacket& recvPacket);
- void HandleAuctionListItems( WorldPacket & recv_data );
- void HandleAuctionListBidderItems( WorldPacket & recv_data );
- void HandleAuctionSellItem( WorldPacket & recv_data );
- void HandleAuctionRemoveItem( WorldPacket & recv_data );
- void HandleAuctionListOwnerItems( WorldPacket & recv_data );
- void HandleAuctionPlaceBid( WorldPacket & recv_data );
-
- void HandleGetMail( WorldPacket & recv_data );
- void HandleSendMail( WorldPacket & recv_data );
- void HandleTakeMoney( WorldPacket & recv_data );
- void HandleTakeItem( WorldPacket & recv_data );
- void HandleMarkAsRead( WorldPacket & recv_data );
- void HandleReturnToSender( WorldPacket & recv_data );
- void HandleMailDelete( WorldPacket & recv_data );
- void HandleItemTextQuery( WorldPacket & recv_data);
- void HandleMailCreateTextItem(WorldPacket & recv_data );
- void HandleMsgQueryNextMailtime(WorldPacket & recv_data );
- void HandleCancelChanneling(WorldPacket & recv_data );
-
- void SendItemPageInfo( ItemPrototype *itemProto );
- void HandleSplitItemOpcode(WorldPacket& recvPacket);
- void HandleSwapInvItemOpcode(WorldPacket& recvPacket);
- void HandleDestroyItemOpcode(WorldPacket& recvPacket);
- void HandleAutoEquipItemOpcode(WorldPacket& recvPacket);
- void HandleItemQuerySingleOpcode(WorldPacket& recvPacket);
- void HandleSellItemOpcode(WorldPacket& recvPacket);
- void HandleBuyItemInSlotOpcode(WorldPacket& recvPacket);
- void HandleBuyItemOpcode(WorldPacket& recvPacket);
- void HandleListInventoryOpcode(WorldPacket& recvPacket);
- void HandleAutoStoreBagItemOpcode(WorldPacket& recvPacket);
- void HandleReadItem(WorldPacket& recvPacket);
- void HandleAutoEquipItemSlotOpcode(WorldPacket & recvPacket);
- void HandleSwapItem( WorldPacket & recvPacket);
- void HandleBuybackItem(WorldPacket & recvPacket);
- void HandleAutoBankItemOpcode(WorldPacket& recvPacket);
- void HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket);
- void HandleWrapItemOpcode(WorldPacket& recvPacket);
-
- void HandleAttackSwingOpcode(WorldPacket& recvPacket);
- void HandleAttackStopOpcode(WorldPacket& recvPacket);
- void HandleSetSheathedOpcode(WorldPacket& recvPacket);
-
- void HandleUseItemOpcode(WorldPacket& recvPacket);
- void HandleOpenItemOpcode(WorldPacket& recvPacket);
- void HandleCastSpellOpcode(WorldPacket& recvPacket);
- void HandleCancelCastOpcode(WorldPacket& recvPacket);
- void HandleCancelAuraOpcode(WorldPacket& recvPacket);
- void HandleCancelGrowthAuraOpcode(WorldPacket& recvPacket);
- void HandleCancelAutoRepeatSpellOpcode(WorldPacket& recvPacket);
-
- void HandleLearnTalentOpcode(WorldPacket& recvPacket);
- void HandleTalentWipeOpcode(WorldPacket& recvPacket);
- void HandleUnlearnSkillOpcode(WorldPacket& recvPacket);
-
- void HandleQuestgiverStatusQueryOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverStatusQueryMultipleOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverHelloOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverQuestQueryOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverChooseRewardOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverRequestRewardOpcode(WorldPacket& recvPacket);
- void HandleQuestQueryOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverCancel(WorldPacket& recv_data );
- void HandleQuestLogSwapQuest(WorldPacket& recv_data );
- void HandleQuestLogRemoveQuest(WorldPacket& recv_data);
- void HandleQuestConfirmAccept(WorldPacket& recv_data);
- void HandleQuestComplete(WorldPacket& recv_data);
- void HandleQuestAutoLaunch(WorldPacket& recvPacket);
- void HandleQuestPushToParty(WorldPacket& recvPacket);
- void HandleQuestPushResult(WorldPacket& recvPacket);
-
- void HandleMessagechatOpcode(WorldPacket& recvPacket);
- void HandleTextEmoteOpcode(WorldPacket& recvPacket);
- void HandleChatIgnoredOpcode(WorldPacket& recvPacket);
-
- void HandleCorpseReclaimOpcode( WorldPacket& recvPacket );
- void HandleCorpseQueryOpcode( WorldPacket& recvPacket );
- void HandleResurrectResponseOpcode(WorldPacket& recvPacket);
- void HandleSummonResponseOpcode(WorldPacket& recv_data);
-
- void HandleChannelJoin(WorldPacket& recvPacket);
- void HandleChannelLeave(WorldPacket& recvPacket);
- void HandleChannelList(WorldPacket& recvPacket);
- void HandleChannelPassword(WorldPacket& recvPacket);
- void HandleChannelSetOwner(WorldPacket& recvPacket);
- void HandleChannelOwner(WorldPacket& recvPacket);
- void HandleChannelModerator(WorldPacket& recvPacket);
- void HandleChannelUnmoderator(WorldPacket& recvPacket);
- void HandleChannelMute(WorldPacket& recvPacket);
- void HandleChannelUnmute(WorldPacket& recvPacket);
- void HandleChannelInvite(WorldPacket& recvPacket);
- void HandleChannelKick(WorldPacket& recvPacket);
- void HandleChannelBan(WorldPacket& recvPacket);
- void HandleChannelUnban(WorldPacket& recvPacket);
- void HandleChannelAnnounce(WorldPacket& recvPacket);
- void HandleChannelModerate(WorldPacket& recvPacket);
- void HandleChannelRosterQuery(WorldPacket& recvPacket);
- void HandleChannelInfoQuery(WorldPacket& recvPacket);
- void HandleChannelJoinNotify(WorldPacket& recvPacket);
-
- void HandleCompleteCinema(WorldPacket& recvPacket);
- void HandleNextCinematicCamera(WorldPacket& recvPacket);
-
- void HandlePageQuerySkippedOpcode(WorldPacket& recvPacket);
- void HandlePageQueryOpcode(WorldPacket& recvPacket);
-
- void HandleTutorialFlag ( WorldPacket & recv_data );
- void HandleTutorialClear( WorldPacket & recv_data );
- void HandleTutorialReset( WorldPacket & recv_data );
-
- //Pet
- void HandlePetAction( WorldPacket & recv_data );
- void HandlePetNameQuery( WorldPacket & recv_data );
- void HandlePetSetAction( WorldPacket & recv_data );
- void HandlePetAbandon( WorldPacket & recv_data );
- void HandlePetRename( WorldPacket & recv_data );
- void HandlePetCancelAuraOpcode( WorldPacket& recvPacket );
- void HandlePetUnlearnOpcode( WorldPacket& recvPacket );
- void HandlePetSpellAutocastOpcode( WorldPacket& recvPacket );
- void HandleAddDynamicTargetObsoleteOpcode( WorldPacket& recvPacket );
-
- void HandleSetActionBar(WorldPacket& recv_data);
-
- void HandleChangePlayerNameOpcode(WorldPacket& recv_data);
- void HandleDeclinedPlayerNameOpcode(WorldPacket& recv_data);
-
- void HandleTotemDestroy(WorldPacket& recv_data);
-
- //BattleGround
- void HandleBattleGroundHelloOpcode(WorldPacket &recv_data);
- void HandleBattleGroundJoinOpcode(WorldPacket &recv_data);
- void HandleBattleGroundPlayerPositionsOpcode(WorldPacket& recv_data);
- void HandleBattleGroundPVPlogdataOpcode( WorldPacket &recv_data );
- void HandleBattleGroundPlayerPortOpcode( WorldPacket &recv_data );
- void HandleBattleGroundListOpcode( WorldPacket &recv_data );
- void HandleBattleGroundLeaveOpcode( WorldPacket &recv_data );
- void HandleBattleGroundArenaJoin( WorldPacket &recv_data );
- void HandleBattleGroundReportAFK( WorldPacket &recv_data );
-
- void HandleWardenDataOpcode(WorldPacket& recv_data);
- void HandleWorldTeleportOpcode(WorldPacket& recv_data);
- void HandleMinimapPingOpcode(WorldPacket& recv_data);
- void HandleRandomRollOpcode(WorldPacket& recv_data);
- void HandleFarSightOpcode(WorldPacket& recv_data);
- void HandleSetLfgOpcode(WorldPacket& recv_data);
- void HandleDungeonDifficultyOpcode(WorldPacket& recv_data);
- void HandleMoveFlyModeChangeAckOpcode(WorldPacket& recv_data);
- void HandleLfgAutoJoinOpcode(WorldPacket& recv_data);
- void HandleLfgCancelAutoJoinOpcode(WorldPacket& recv_data);
- void HandleLfmAutoAddMembersOpcode(WorldPacket& recv_data);
- void HandleLfmCancelAutoAddmembersOpcode(WorldPacket& recv_data);
- void HandleLfgClearOpcode(WorldPacket& recv_data);
- void HandleLfmSetNoneOpcode(WorldPacket& recv_data);
- void HandleLfmSetOpcode(WorldPacket& recv_data);
- void HandleLfgSetCommentOpcode(WorldPacket& recv_data);
- void HandleNewUnknownOpcode(WorldPacket& recv_data);
- void HandleChooseTitleOpcode(WorldPacket& recv_data);
- void HandleRealmStateRequestOpcode(WorldPacket& recv_data);
- void HandleAllowMoveAckOpcode(WorldPacket& recv_data);
- void HandleWhoisOpcode(WorldPacket& recv_data);
- void HandleResetInstancesOpcode(WorldPacket& recv_data);
-
- // Arena Team
- void HandleInspectArenaStatsOpcode(WorldPacket& recv_data);
- void HandleArenaTeamQueryOpcode(WorldPacket& recv_data);
- void HandleArenaTeamRosterOpcode(WorldPacket& recv_data);
- void HandleArenaTeamAddMemberOpcode(WorldPacket& recv_data);
- void HandleArenaTeamInviteAcceptOpcode(WorldPacket& recv_data);
- void HandleArenaTeamInviteDeclineOpcode(WorldPacket& recv_data);
- void HandleArenaTeamLeaveOpcode(WorldPacket& recv_data);
- void HandleArenaTeamRemoveFromTeamOpcode(WorldPacket& recv_data);
- void HandleArenaTeamDisbandOpcode(WorldPacket& recv_data);
- void HandleArenaTeamPromoteToCaptainOpcode(WorldPacket& recv_data);
-
- void HandleAreaSpiritHealerQueryOpcode(WorldPacket& recv_data);
- void HandleAreaSpiritHealerQueueOpcode(WorldPacket& recv_data);
- void HandleDismountOpcode(WorldPacket& recv_data);
- void HandleSelfResOpcode(WorldPacket& recv_data);
- void HandleReportSpamOpcode(WorldPacket& recv_data);
- void HandleRequestPetInfoOpcode(WorldPacket& recv_data);
-
- // Socket gem
- void HandleSocketOpcode(WorldPacket& recv_data);
-
- void HandleCancelTempItemEnchantmentOpcode(WorldPacket& recv_data);
-
- void HandleChannelEnableVoiceOpcode(WorldPacket & recv_data);
- void HandleVoiceSettingsOpcode(WorldPacket& recv_data);
- void HandleChannelVoiceChatQuery(WorldPacket& recv_data);
- void HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data);
-
- // Guild Bank
- void HandleGuildBankGetRights(WorldPacket& recv_data);
- void HandleGuildBankGetMoneyAmount(WorldPacket& recv_data);
- void HandleGuildBankQuery(WorldPacket& recv_data);
- void HandleGuildBankTabColon(WorldPacket& recv_data);
- void HandleGuildBankLog(WorldPacket& recv_data);
- void HandleGuildBankDeposit(WorldPacket& recv_data);
- void HandleGuildBankWithdraw(WorldPacket& recv_data);
- void HandleGuildBankDepositItem(WorldPacket& recv_data);
- void HandleGuildBankModifyTab(WorldPacket& recv_data);
- void HandleGuildBankBuyTab(WorldPacket& recv_data);
- void HandleGuildBankTabText(WorldPacket& recv_data);
- void HandleGuildBankSetTabText(WorldPacket& recv_data);
- private:
- // private trade methods
- void moveItems(Item* myItems[], Item* hisItems[]);
-
- // logging helper
- void logUnexpectedOpcode(WorldPacket *packet, const char * reason);
- Player *_player;
- WorldSocket *m_Socket;
- std::string m_Address;
-
- uint32 _security;
- uint32 _accountId;
- bool m_isTBC;
-
- time_t _logoutTime;
- bool m_playerLoading; // code processed in LoginPlayer
- bool m_playerLogout; // code processed in LogoutPlayer
- bool m_playerRecentlyLogout;
- LocaleConstant m_sessionDbcLocale;
- int m_sessionDbLocaleIndex;
- uint32 m_latency;
-
- ZThread::LockedQueue<WorldPacket*,ZThread::FastMutex> _recvQueue;
-};
-#endif
-/// @}
+/*
+ * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/// \addtogroup u2w
+/// @{
+/// \file
+
+#ifndef __WORLDSESSION_H
+#define __WORLDSESSION_H
+
+#include "Common.h"
+
+class MailItemsInfo;
+struct ItemPrototype;
+struct AuctionEntry;
+
+class Creature;
+class Item;
+class Object;
+class Player;
+class Unit;
+class WorldPacket;
+class WorldSocket;
+class WorldSession;
+class QueryResult;
+class LoginQueryHolder;
+class CharacterHandler;
+
+#define CHECK_PACKET_SIZE(P,S) if((P).size() < (S)) return SizeError((P),(S));
+
+enum PartyOperation
+{
+ PARTY_OP_INVITE = 0,
+ PARTY_OP_LEAVE = 2
+};
+
+enum PartyResult
+{
+ PARTY_RESULT_OK = 0,
+ PARTY_RESULT_CANT_FIND_TARGET = 1,
+ PARTY_RESULT_NOT_IN_YOUR_PARTY = 2,
+ PARTY_RESULT_NOT_IN_YOUR_INSTANCE = 3,
+ PARTY_RESULT_PARTY_FULL = 4,
+ PARTY_RESULT_ALREADY_IN_GROUP = 5,
+ PARTY_RESULT_YOU_NOT_IN_GROUP = 6,
+ PARTY_RESULT_YOU_NOT_LEADER = 7,
+ PARTY_RESULT_TARGET_UNFRIENDLY = 8,
+ PARTY_RESULT_TARGET_IGNORE_YOU = 9,
+ PARTY_RESULT_INVITE_RESTRICTED = 13
+};
+
+/// Player session in the World
+class MANGOS_DLL_SPEC WorldSession
+{
+ friend class CharacterHandler;
+ public:
+ WorldSession(uint32 id, WorldSocket *sock, uint32 sec, bool tbc, time_t mute_time, LocaleConstant locale);
+ ~WorldSession();
+
+ bool PlayerLoading() const { return m_playerLoading; }
+ bool PlayerLogout() const { return m_playerLogout; }
+
+ void SizeError(WorldPacket const& packet, uint32 size) const;
+
+ void SendPacket(WorldPacket const* packet);
+ void SendNotification(const char *format,...) ATTR_PRINTF(2,3);
+ void SendNotification(int32 string_id,...);
+ void SendLfgResult(uint32 type, uint32 entry, uint8 lfg_type);
+ void SendPartyResult(PartyOperation operation, std::string member, PartyResult res);
+ void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2,3);
+
+ uint32 GetSecurity() const { return _security; }
+ uint32 GetAccountId() const { return _accountId; }
+ Player* GetPlayer() const { return _player; }
+ char const* GetPlayerName() const;
+ void SetSecurity(uint32 security) { _security = security; }
+ std::string& GetRemoteAddress() { return m_Address; }
+ void SetPlayer(Player *plr) { _player = plr; }
+ bool IsTBC() const { return m_isTBC; }
+
+ /// Is the user engaged in a log out process?
+ bool isLogingOut() const { return _logoutTime || m_playerLogout; }
+
+ /// Engage the logout process for the user
+ void LogoutRequest(time_t requestTime)
+ {
+ _logoutTime = requestTime;
+ }
+
+ /// Is logout cooldown expired?
+ bool ShouldLogOut(time_t currTime) const
+ {
+ return (_logoutTime > 0 && currTime >= _logoutTime + 20);
+ }
+
+ void LogoutPlayer(bool Save);
+ void KickPlayer();
+
+ void QueuePacket(WorldPacket* new_packet);
+ bool Update(uint32 diff);
+
+ /// Handle the authentication waiting queue (to be completed)
+ void SendAuthWaitQue(uint32 position);
+
+ //void SendTestCreatureQueryOpcode( uint32 entry, uint64 guid, uint32 testvalue );
+ void SendNameQueryOpcode(Player* p);
+ void SendNameQueryOpcodeFromDB(uint64 guid);
+ static void SendNameQueryOpcodeFromDBCallBack(QueryResult *result, uint32 accountId);
+
+ void SendTrainerList( uint64 guid );
+ void SendTrainerList( uint64 guid,std::string strTitle );
+ void SendListInventory( uint64 guid );
+ void SendShowBank( uint64 guid );
+ void SendTabardVendorActivate( uint64 guid );
+ void SendSpiritResurrect();
+ void SendBindPoint(Creature* npc);
+ void SendGMTicketGetTicket(uint32 status, char const* text);
+
+ void SendAttackStop(Unit const* enemy);
+
+ void SendBattlegGroundList( uint64 guid, uint32 bgTypeId );
+
+ void SendTradeStatus(uint32 status);
+ void SendCancelTrade();
+
+ void SendStablePet(uint64 guid );
+ void SendPetitionQueryOpcode( uint64 petitionguid);
+ void SendUpdateTrade();
+
+ //pet
+ void SendPetNameQuery(uint64 guid, uint32 petnumber);
+
+ //mail
+ //used with item_page table
+ bool SendItemInfo( uint32 itemid, WorldPacket data );
+ static void SendReturnToSender(uint8 messageType, uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, std::string subject, uint32 itemTextId, MailItemsInfo *mi, uint32 money, uint32 COD, uint16 mailTemplateId = 0);
+ static void SendMailTo(Player* receiver, uint8 messageType, uint8 stationery, uint32 sender_guidlow_or_entry, uint32 received_guidlow, std::string subject, uint32 itemTextId, MailItemsInfo* mi, uint32 money, uint32 COD, uint32 checked, uint32 deliver_delay = 0, uint16 mailTemplateId = 0);
+
+ //auction
+ void SendAuctionHello( uint64 guid, Creature * unit );
+ void SendAuctionCommandResult( uint32 auctionId, uint32 Action, uint32 ErrorCode, uint32 bidError = 0);
+ void SendAuctionBidderNotification( uint32 location, uint32 auctionId, uint64 bidder, uint32 bidSum, uint32 diff, uint32 item_template);
+ void SendAuctionOwnerNotification( AuctionEntry * auction );
+ bool SendAuctionInfo(WorldPacket & data, AuctionEntry* auction);
+ void SendAuctionOutbiddedMail( AuctionEntry * auction, uint32 newPrice );
+ void SendAuctionCancelledToBidderMail( AuctionEntry* auction );
+
+ //Item Enchantment
+ void SendEnchantmentLog(uint64 Target, uint64 Caster,uint32 ItemID,uint32 SpellID);
+ void SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,uint32 slot,uint32 Duration);
+
+ //Taxi
+ void SendTaxiStatus( uint64 guid );
+ void SendTaxiMenu( Creature* unit );
+ void SendDoFlight( uint16 MountId, uint32 path, uint32 pathNode = 0 );
+ bool SendLearnNewTaxiNode( Creature* unit );
+
+ // Guild/Arena Team
+ void SendGuildCommandResult(uint32 typecmd,std::string str,uint32 cmdresult);
+ void SendArenaTeamCommandResult(uint32 unk1, std::string str1, std::string str2, uint32 unk3);
+ void BuildArenaTeamEventPacket(WorldPacket *data, uint8 eventid, uint8 str_count, std::string str1, std::string str2, std::string str3);
+ void SendNotInArenaTeamPacket(uint8 type);
+ void SendPetitionShowList( uint64 guid );
+ void SendSaveGuildEmblem( uint32 msg );
+
+ // Looking For Group
+ // TRUE values set by client sending CMSG_LFG_SET_AUTOJOIN and CMSG_LFM_CLEAR_AUTOFILL before player login
+ bool LookingForGroup_auto_join;
+ bool LookingForGroup_auto_add;
+
+ void BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data);
+
+ void DoLootRelease( uint64 lguid );
+
+ // Account mute time
+ time_t m_muteTime;
+
+ // Locales
+ LocaleConstant GetSessionDbcLocale() { return m_sessionDbcLocale; }
+ int GetSessionDbLocaleIndex() { return m_sessionDbLocaleIndex; }
+ const char *GetMangosString(int32 entry);
+
+ uint32 GetLatency() const { return m_latency; }
+ void SetLatency(uint32 latency) { m_latency = latency; }
+ uint32 getDialogStatus(Player *pPlayer, Object* questgiver, uint32 defstatus);
+
+ public: // opcodes handlers
+
+ void Handle_NULL(WorldPacket& recvPacket); // not used
+ void Handle_EarlyProccess( WorldPacket& recvPacket);// just mark packets processed in WorldSocket::OnRead
+ void Handle_ServerSide(WorldPacket& recvPacket); // sever side only, can't be accepted from client
+ void Handle_Depricated(WorldPacket& recvPacket); // never used anymore by client
+
+ void HandleCharEnumOpcode(WorldPacket& recvPacket);
+ void HandleCharDeleteOpcode(WorldPacket& recvPacket);
+ void HandleCharCreateOpcode(WorldPacket& recvPacket);
+ void HandlePlayerLoginOpcode(WorldPacket& recvPacket);
+ void HandleCharEnum(QueryResult * result);
+ void HandlePlayerLogin(LoginQueryHolder * holder);
+
+ // played time
+ void HandlePlayedTime(WorldPacket& recvPacket);
+
+ // new
+ void HandleMoveUnRootAck(WorldPacket& recvPacket);
+ void HandleMoveRootAck(WorldPacket& recvPacket);
+ void HandleLookingForGroup(WorldPacket& recvPacket);
+
+ // new inspect
+ void HandleInspectOpcode(WorldPacket& recvPacket);
+
+ // new party stats
+ void HandleInspectHonorStatsOpcode(WorldPacket& recvPacket);
+
+ void HandleMoveWaterWalkAck(WorldPacket& recvPacket);
+ void HandleFeatherFallAck(WorldPacket &recv_data);
+
+ void HandleMoveHoverAck( WorldPacket & recv_data );
+
+ void HandleMountSpecialAnimOpcode(WorldPacket &recvdata);
+
+ // character view
+ void HandleToggleHelmOpcode(WorldPacket& recv_data);
+ void HandleToggleCloakOpcode(WorldPacket& recv_data);
+
+ // repair
+ void HandleRepairItemOpcode(WorldPacket& recvPacket);
+
+ // Knockback
+ void HandleMoveKnockBackAck(WorldPacket& recvPacket);
+
+ void HandleMoveTeleportAck(WorldPacket& recvPacket);
+ void HandleForceSpeedChangeAck( WorldPacket & recv_data );
+
+ void HandlePingOpcode(WorldPacket& recvPacket);
+ void HandleAuthSessionOpcode(WorldPacket& recvPacket);
+ void HandleRepopRequestOpcode(WorldPacket& recvPacket);
+ void HandleAutostoreLootItemOpcode(WorldPacket& recvPacket);
+ void HandleLootMoneyOpcode(WorldPacket& recvPacket);
+ void HandleLootOpcode(WorldPacket& recvPacket);
+ void HandleLootReleaseOpcode(WorldPacket& recvPacket);
+ void HandleLootMasterGiveOpcode(WorldPacket& recvPacket);
+ void HandleWhoOpcode(WorldPacket& recvPacket);
+ void HandleLogoutRequestOpcode(WorldPacket& recvPacket);
+ void HandlePlayerLogoutOpcode(WorldPacket& recvPacket);
+ void HandleLogoutCancelOpcode(WorldPacket& recvPacket);
+ void HandleGMTicketGetTicketOpcode(WorldPacket& recvPacket);
+ void HandleGMTicketCreateOpcode(WorldPacket& recvPacket);
+ void HandleGMTicketSystemStatusOpcode(WorldPacket& recvPacket);
+
+ void HandleGMTicketDeleteOpcode(WorldPacket& recvPacket);
+ void HandleGMTicketUpdateTextOpcode(WorldPacket& recvPacket);
+
+ void HandleGMSurveySubmit(WorldPacket& recvPacket);
+
+ void HandleTogglePvP(WorldPacket& recvPacket);
+
+ void HandleZoneUpdateOpcode(WorldPacket& recvPacket);
+ void HandleSetTargetOpcode(WorldPacket& recvPacket);
+ void HandleSetSelectionOpcode(WorldPacket& recvPacket);
+ void HandleStandStateChangeOpcode(WorldPacket& recvPacket);
+ void HandleEmoteOpcode(WorldPacket& recvPacket);
+ void HandleFriendListOpcode(WorldPacket& recvPacket);
+ void HandleAddFriendOpcode(WorldPacket& recvPacket);
+ void HandleDelFriendOpcode(WorldPacket& recvPacket);
+ void HandleAddIgnoreOpcode(WorldPacket& recvPacket);
+ void HandleDelIgnoreOpcode(WorldPacket& recvPacket);
+ void HandleSetFriendNoteOpcode(WorldPacket& recvPacket);
+ void HandleBugOpcode(WorldPacket& recvPacket);
+ void HandleSetAmmoOpcode(WorldPacket& recvPacket);
+ void HandleItemNameQueryOpcode(WorldPacket& recvPacket);
+
+ void HandleAreaTriggerOpcode(WorldPacket& recvPacket);
+
+ void HandleSetFactionAtWar( WorldPacket & recv_data );
+ void HandleSetFactionCheat( WorldPacket & recv_data );
+ void HandleSetWatchedFactionIndexOpcode(WorldPacket & recv_data);
+ void HandleSetWatchedFactionInactiveOpcode(WorldPacket & recv_data);
+
+ void HandleUpdateAccountData(WorldPacket& recvPacket);
+ void HandleRequestAccountData(WorldPacket& recvPacket);
+ void HandleSetActionButtonOpcode(WorldPacket& recvPacket);
+
+ void HandleGameObjectUseOpcode(WorldPacket& recPacket);
+ void HandleMeetingStoneInfo(WorldPacket& recPacket);
+
+ void HandleNameQueryOpcode(WorldPacket& recvPacket);
+
+ void HandleQueryTimeOpcode(WorldPacket& recvPacket);
+
+ void HandleCreatureQueryOpcode(WorldPacket& recvPacket);
+
+ void HandleGameObjectQueryOpcode(WorldPacket& recvPacket);
+
+ void HandleMoveWorldportAckOpcode(WorldPacket& recvPacket);
+ void HandleMoveWorldportAckOpcode(); // for server-side calls
+
+ void HandleMovementOpcodes(WorldPacket& recvPacket);
+ void HandleSetActiveMoverOpcode(WorldPacket &recv_data);
+ void HandleMoveTimeSkippedOpcode(WorldPacket &recv_data);
+
+ void HandleRequestRaidInfoOpcode( WorldPacket & recv_data );
+
+ void HandleBattlefieldStatusOpcode(WorldPacket &recv_data);
+ void HandleBattleMasterHelloOpcode(WorldPacket &recv_data);
+
+ void HandleGroupInviteOpcode(WorldPacket& recvPacket);
+ //void HandleGroupCancelOpcode(WorldPacket& recvPacket);
+ void HandleGroupAcceptOpcode(WorldPacket& recvPacket);
+ void HandleGroupDeclineOpcode(WorldPacket& recvPacket);
+ void HandleGroupUninviteNameOpcode(WorldPacket& recvPacket);
+ void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket);
+ void HandleGroupUninvite(uint64 guid, std::string name);
+ void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
+ void HandleGroupLeaveOpcode(WorldPacket& recvPacket);
+ void HandleGroupPassOnLootOpcode( WorldPacket &recv_data );
+ void HandleLootMethodOpcode(WorldPacket& recvPacket);
+ void HandleLootRoll( WorldPacket &recv_data );
+ void HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data );
+ void HandleRaidIconTargetOpcode( WorldPacket & recv_data );
+ void HandleRaidReadyCheckOpcode( WorldPacket & recv_data );
+ void HandleRaidReadyCheckFinishOpcode( WorldPacket & recv_data );
+ void HandleRaidConvertOpcode( WorldPacket & recv_data );
+ void HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data );
+ void HandleGroupAssistantOpcode( WorldPacket & recv_data );
+ void HandleGroupPromoteOpcode( WorldPacket & recv_data );
+
+ void HandlePetitionBuyOpcode(WorldPacket& recv_data);
+ void HandlePetitionShowSignOpcode(WorldPacket& recv_data);
+ void HandlePetitionQueryOpcode(WorldPacket& recv_data);
+ void HandlePetitionRenameOpcode(WorldPacket& recv_data);
+ void HandlePetitionSignOpcode(WorldPacket& recv_data);
+ void HandlePetitionDeclineOpcode(WorldPacket& recv_data);
+ void HandleOfferPetitionOpcode(WorldPacket& recv_data);
+ void HandleTurnInPetitionOpcode(WorldPacket& recv_data);
+
+ void HandleGuildQueryOpcode(WorldPacket& recvPacket);
+ void HandleGuildCreateOpcode(WorldPacket& recvPacket);
+ void HandleGuildInviteOpcode(WorldPacket& recvPacket);
+ void HandleGuildRemoveOpcode(WorldPacket& recvPacket);
+ void HandleGuildAcceptOpcode(WorldPacket& recvPacket);
+ void HandleGuildDeclineOpcode(WorldPacket& recvPacket);
+ void HandleGuildInfoOpcode(WorldPacket& recvPacket);
+ void HandleGuildEventLogOpcode(WorldPacket& recvPacket);
+ void HandleGuildRosterOpcode(WorldPacket& recvPacket);
+ void HandleGuildPromoteOpcode(WorldPacket& recvPacket);
+ void HandleGuildDemoteOpcode(WorldPacket& recvPacket);
+ void HandleGuildLeaveOpcode(WorldPacket& recvPacket);
+ void HandleGuildDisbandOpcode(WorldPacket& recvPacket);
+ void HandleGuildLeaderOpcode(WorldPacket& recvPacket);
+ void HandleGuildMOTDOpcode(WorldPacket& recvPacket);
+ void HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket);
+ void HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket);
+ void HandleGuildRankOpcode(WorldPacket& recvPacket);
+ void HandleGuildAddRankOpcode(WorldPacket& recvPacket);
+ void HandleGuildDelRankOpcode(WorldPacket& recvPacket);
+ void HandleGuildChangeInfoOpcode(WorldPacket& recvPacket);
+ void HandleGuildSaveEmblemOpcode(WorldPacket& recvPacket);
+
+ void HandleTaxiNodeStatusQueryOpcode(WorldPacket& recvPacket);
+ void HandleTaxiQueryAvailableNodesOpcode(WorldPacket& recvPacket);
+ void HandleActivateTaxiOpcode(WorldPacket& recvPacket);
+ void HandleActivateTaxiFarOpcode(WorldPacket& recvPacket);
+ void HandleTaxiNextDestinationOpcode(WorldPacket& recvPacket);
+
+ void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket);
+ void HandleBankerActivateOpcode(WorldPacket& recvPacket);
+ void HandleBuyBankSlotOpcode(WorldPacket& recvPacket);
+ void HandleTrainerListOpcode(WorldPacket& recvPacket);
+ void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
+ void HandlePetitionShowListOpcode(WorldPacket& recvPacket);
+ void HandleGossipHelloOpcode(WorldPacket& recvPacket);
+ void HandleGossipSelectOptionOpcode(WorldPacket& recvPacket);
+ void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket);
+ void HandleNpcTextQueryOpcode(WorldPacket& recvPacket);
+ void HandleBinderActivateOpcode(WorldPacket& recvPacket);
+ void HandleListStabledPetsOpcode(WorldPacket& recvPacket);
+ void HandleStablePet(WorldPacket& recvPacket);
+ void HandleUnstablePet(WorldPacket& recvPacket);
+ void HandleBuyStableSlot(WorldPacket& recvPacket);
+ void HandleStableRevivePet(WorldPacket& recvPacket);
+ void HandleStableSwapPet(WorldPacket& recvPacket);
+
+ void HandleDuelAcceptedOpcode(WorldPacket& recvPacket);
+ void HandleDuelCancelledOpcode(WorldPacket& recvPacket);
+
+ void HandleAcceptTradeOpcode(WorldPacket& recvPacket);
+ void HandleBeginTradeOpcode(WorldPacket& recvPacket);
+ void HandleBusyTradeOpcode(WorldPacket& recvPacket);
+ void HandleCancelTradeOpcode(WorldPacket& recvPacket);
+ void HandleClearTradeItemOpcode(WorldPacket& recvPacket);
+ void HandleIgnoreTradeOpcode(WorldPacket& recvPacket);
+ void HandleInitiateTradeOpcode(WorldPacket& recvPacket);
+ void HandleSetTradeGoldOpcode(WorldPacket& recvPacket);
+ void HandleSetTradeItemOpcode(WorldPacket& recvPacket);
+ void HandleUnacceptTradeOpcode(WorldPacket& recvPacket);
+
+ void HandleAuctionHelloOpcode(WorldPacket& recvPacket);
+ void HandleAuctionListItems( WorldPacket & recv_data );
+ void HandleAuctionListBidderItems( WorldPacket & recv_data );
+ void HandleAuctionSellItem( WorldPacket & recv_data );
+ void HandleAuctionRemoveItem( WorldPacket & recv_data );
+ void HandleAuctionListOwnerItems( WorldPacket & recv_data );
+ void HandleAuctionPlaceBid( WorldPacket & recv_data );
+
+ void HandleGetMail( WorldPacket & recv_data );
+ void HandleSendMail( WorldPacket & recv_data );
+ void HandleTakeMoney( WorldPacket & recv_data );
+ void HandleTakeItem( WorldPacket & recv_data );
+ void HandleMarkAsRead( WorldPacket & recv_data );
+ void HandleReturnToSender( WorldPacket & recv_data );
+ void HandleMailDelete( WorldPacket & recv_data );
+ void HandleItemTextQuery( WorldPacket & recv_data);
+ void HandleMailCreateTextItem(WorldPacket & recv_data );
+ void HandleMsgQueryNextMailtime(WorldPacket & recv_data );
+ void HandleCancelChanneling(WorldPacket & recv_data );
+
+ void SendItemPageInfo( ItemPrototype *itemProto );
+ void HandleSplitItemOpcode(WorldPacket& recvPacket);
+ void HandleSwapInvItemOpcode(WorldPacket& recvPacket);
+ void HandleDestroyItemOpcode(WorldPacket& recvPacket);
+ void HandleAutoEquipItemOpcode(WorldPacket& recvPacket);
+ void HandleItemQuerySingleOpcode(WorldPacket& recvPacket);
+ void HandleSellItemOpcode(WorldPacket& recvPacket);
+ void HandleBuyItemInSlotOpcode(WorldPacket& recvPacket);
+ void HandleBuyItemOpcode(WorldPacket& recvPacket);
+ void HandleListInventoryOpcode(WorldPacket& recvPacket);
+ void HandleAutoStoreBagItemOpcode(WorldPacket& recvPacket);
+ void HandleReadItem(WorldPacket& recvPacket);
+ void HandleAutoEquipItemSlotOpcode(WorldPacket & recvPacket);
+ void HandleSwapItem( WorldPacket & recvPacket);
+ void HandleBuybackItem(WorldPacket & recvPacket);
+ void HandleAutoBankItemOpcode(WorldPacket& recvPacket);
+ void HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket);
+ void HandleWrapItemOpcode(WorldPacket& recvPacket);
+
+ void HandleAttackSwingOpcode(WorldPacket& recvPacket);
+ void HandleAttackStopOpcode(WorldPacket& recvPacket);
+ void HandleSetSheathedOpcode(WorldPacket& recvPacket);
+
+ void HandleUseItemOpcode(WorldPacket& recvPacket);
+ void HandleOpenItemOpcode(WorldPacket& recvPacket);
+ void HandleCastSpellOpcode(WorldPacket& recvPacket);
+ void HandleCancelCastOpcode(WorldPacket& recvPacket);
+ void HandleCancelAuraOpcode(WorldPacket& recvPacket);
+ void HandleCancelGrowthAuraOpcode(WorldPacket& recvPacket);
+ void HandleCancelAutoRepeatSpellOpcode(WorldPacket& recvPacket);
+
+ void HandleLearnTalentOpcode(WorldPacket& recvPacket);
+ void HandleTalentWipeOpcode(WorldPacket& recvPacket);
+ void HandleUnlearnSkillOpcode(WorldPacket& recvPacket);
+
+ void HandleQuestgiverStatusQueryOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverStatusQueryMultipleOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverHelloOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverQuestQueryOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverChooseRewardOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverRequestRewardOpcode(WorldPacket& recvPacket);
+ void HandleQuestQueryOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverCancel(WorldPacket& recv_data );
+ void HandleQuestLogSwapQuest(WorldPacket& recv_data );
+ void HandleQuestLogRemoveQuest(WorldPacket& recv_data);
+ void HandleQuestConfirmAccept(WorldPacket& recv_data);
+ void HandleQuestComplete(WorldPacket& recv_data);
+ void HandleQuestAutoLaunch(WorldPacket& recvPacket);
+ void HandleQuestPushToParty(WorldPacket& recvPacket);
+ void HandleQuestPushResult(WorldPacket& recvPacket);
+
+ void HandleMessagechatOpcode(WorldPacket& recvPacket);
+ void HandleTextEmoteOpcode(WorldPacket& recvPacket);
+ void HandleChatIgnoredOpcode(WorldPacket& recvPacket);
+
+ void HandleCorpseReclaimOpcode( WorldPacket& recvPacket );
+ void HandleCorpseQueryOpcode( WorldPacket& recvPacket );
+ void HandleResurrectResponseOpcode(WorldPacket& recvPacket);
+ void HandleSummonResponseOpcode(WorldPacket& recv_data);
+
+ void HandleChannelJoin(WorldPacket& recvPacket);
+ void HandleChannelLeave(WorldPacket& recvPacket);
+ void HandleChannelList(WorldPacket& recvPacket);
+ void HandleChannelPassword(WorldPacket& recvPacket);
+ void HandleChannelSetOwner(WorldPacket& recvPacket);
+ void HandleChannelOwner(WorldPacket& recvPacket);
+ void HandleChannelModerator(WorldPacket& recvPacket);
+ void HandleChannelUnmoderator(WorldPacket& recvPacket);
+ void HandleChannelMute(WorldPacket& recvPacket);
+ void HandleChannelUnmute(WorldPacket& recvPacket);
+ void HandleChannelInvite(WorldPacket& recvPacket);
+ void HandleChannelKick(WorldPacket& recvPacket);
+ void HandleChannelBan(WorldPacket& recvPacket);
+ void HandleChannelUnban(WorldPacket& recvPacket);
+ void HandleChannelAnnounce(WorldPacket& recvPacket);
+ void HandleChannelModerate(WorldPacket& recvPacket);
+ void HandleChannelRosterQuery(WorldPacket& recvPacket);
+ void HandleChannelInfoQuery(WorldPacket& recvPacket);
+ void HandleChannelJoinNotify(WorldPacket& recvPacket);
+
+ void HandleCompleteCinema(WorldPacket& recvPacket);
+ void HandleNextCinematicCamera(WorldPacket& recvPacket);
+
+ void HandlePageQuerySkippedOpcode(WorldPacket& recvPacket);
+ void HandlePageQueryOpcode(WorldPacket& recvPacket);
+
+ void HandleTutorialFlag ( WorldPacket & recv_data );
+ void HandleTutorialClear( WorldPacket & recv_data );
+ void HandleTutorialReset( WorldPacket & recv_data );
+
+ //Pet
+ void HandlePetAction( WorldPacket & recv_data );
+ void HandlePetNameQuery( WorldPacket & recv_data );
+ void HandlePetSetAction( WorldPacket & recv_data );
+ void HandlePetAbandon( WorldPacket & recv_data );
+ void HandlePetRename( WorldPacket & recv_data );
+ void HandlePetCancelAuraOpcode( WorldPacket& recvPacket );
+ void HandlePetUnlearnOpcode( WorldPacket& recvPacket );
+ void HandlePetSpellAutocastOpcode( WorldPacket& recvPacket );
+ void HandleAddDynamicTargetObsoleteOpcode( WorldPacket& recvPacket );
+
+ void HandleSetActionBar(WorldPacket& recv_data);
+
+ void HandleChangePlayerNameOpcode(WorldPacket& recv_data);
+ void HandleDeclinedPlayerNameOpcode(WorldPacket& recv_data);
+
+ void HandleTotemDestroy(WorldPacket& recv_data);
+
+ //BattleGround
+ void HandleBattleGroundHelloOpcode(WorldPacket &recv_data);
+ void HandleBattleGroundJoinOpcode(WorldPacket &recv_data);
+ void HandleBattleGroundPlayerPositionsOpcode(WorldPacket& recv_data);
+ void HandleBattleGroundPVPlogdataOpcode( WorldPacket &recv_data );
+ void HandleBattleGroundPlayerPortOpcode( WorldPacket &recv_data );
+ void HandleBattleGroundListOpcode( WorldPacket &recv_data );
+ void HandleBattleGroundLeaveOpcode( WorldPacket &recv_data );
+ void HandleBattleGroundArenaJoin( WorldPacket &recv_data );
+ void HandleBattleGroundReportAFK( WorldPacket &recv_data );
+
+ void HandleWardenDataOpcode(WorldPacket& recv_data);
+ void HandleWorldTeleportOpcode(WorldPacket& recv_data);
+ void HandleMinimapPingOpcode(WorldPacket& recv_data);
+ void HandleRandomRollOpcode(WorldPacket& recv_data);
+ void HandleFarSightOpcode(WorldPacket& recv_data);
+ void HandleSetLfgOpcode(WorldPacket& recv_data);
+ void HandleDungeonDifficultyOpcode(WorldPacket& recv_data);
+ void HandleMoveFlyModeChangeAckOpcode(WorldPacket& recv_data);
+ void HandleLfgAutoJoinOpcode(WorldPacket& recv_data);
+ void HandleLfgCancelAutoJoinOpcode(WorldPacket& recv_data);
+ void HandleLfmAutoAddMembersOpcode(WorldPacket& recv_data);
+ void HandleLfmCancelAutoAddmembersOpcode(WorldPacket& recv_data);
+ void HandleLfgClearOpcode(WorldPacket& recv_data);
+ void HandleLfmSetNoneOpcode(WorldPacket& recv_data);
+ void HandleLfmSetOpcode(WorldPacket& recv_data);
+ void HandleLfgSetCommentOpcode(WorldPacket& recv_data);
+ void HandleNewUnknownOpcode(WorldPacket& recv_data);
+ void HandleChooseTitleOpcode(WorldPacket& recv_data);
+ void HandleRealmStateRequestOpcode(WorldPacket& recv_data);
+ void HandleAllowMoveAckOpcode(WorldPacket& recv_data);
+ void HandleWhoisOpcode(WorldPacket& recv_data);
+ void HandleResetInstancesOpcode(WorldPacket& recv_data);
+
+ // Arena Team
+ void HandleInspectArenaStatsOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamQueryOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamRosterOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamAddMemberOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamInviteAcceptOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamInviteDeclineOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamLeaveOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamRemoveFromTeamOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamDisbandOpcode(WorldPacket& recv_data);
+ void HandleArenaTeamPromoteToCaptainOpcode(WorldPacket& recv_data);
+
+ void HandleAreaSpiritHealerQueryOpcode(WorldPacket& recv_data);
+ void HandleAreaSpiritHealerQueueOpcode(WorldPacket& recv_data);
+ void HandleDismountOpcode(WorldPacket& recv_data);
+ void HandleSelfResOpcode(WorldPacket& recv_data);
+ void HandleReportSpamOpcode(WorldPacket& recv_data);
+ void HandleRequestPetInfoOpcode(WorldPacket& recv_data);
+
+ // Socket gem
+ void HandleSocketOpcode(WorldPacket& recv_data);
+
+ void HandleCancelTempItemEnchantmentOpcode(WorldPacket& recv_data);
+
+ void HandleChannelEnableVoiceOpcode(WorldPacket & recv_data);
+ void HandleVoiceSettingsOpcode(WorldPacket& recv_data);
+ void HandleChannelVoiceChatQuery(WorldPacket& recv_data);
+ void HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data);
+
+ // Guild Bank
+ void HandleGuildBankGetRights(WorldPacket& recv_data);
+ void HandleGuildBankGetMoneyAmount(WorldPacket& recv_data);
+ void HandleGuildBankQuery(WorldPacket& recv_data);
+ void HandleGuildBankTabColon(WorldPacket& recv_data);
+ void HandleGuildBankLog(WorldPacket& recv_data);
+ void HandleGuildBankDeposit(WorldPacket& recv_data);
+ void HandleGuildBankWithdraw(WorldPacket& recv_data);
+ void HandleGuildBankDepositItem(WorldPacket& recv_data);
+ void HandleGuildBankModifyTab(WorldPacket& recv_data);
+ void HandleGuildBankBuyTab(WorldPacket& recv_data);
+ void HandleGuildBankTabText(WorldPacket& recv_data);
+ void HandleGuildBankSetTabText(WorldPacket& recv_data);
+ private:
+ // private trade methods
+ void moveItems(Item* myItems[], Item* hisItems[]);
+
+ // logging helper
+ void logUnexpectedOpcode(WorldPacket *packet, const char * reason);
+ Player *_player;
+ WorldSocket *m_Socket;
+ std::string m_Address;
+
+ uint32 _security;
+ uint32 _accountId;
+ bool m_isTBC;
+
+ time_t _logoutTime;
+ bool m_playerLoading; // code processed in LoginPlayer
+ bool m_playerLogout; // code processed in LogoutPlayer
+ bool m_playerRecentlyLogout;
+ LocaleConstant m_sessionDbcLocale;
+ int m_sessionDbLocaleIndex;
+ uint32 m_latency;
+
+ ZThread::LockedQueue<WorldPacket*,ZThread::FastMutex> _recvQueue;
+};
+#endif
+/// @}