Core/Guild: Updated and enabled most previously implemented guild and petition related packets

Merged from https://github.com/Mogadischu/TrinityCore/commits/guild

Signed-off-by: Duarte Duarte <[email protected]>
This commit is contained in:
Mogadischu
2015-02-13 18:32:36 +00:00
committed by Duarte Duarte
parent 69104cfa2a
commit bc0c0ae2a3
34 changed files with 3481 additions and 2379 deletions
+3 -7
View File
@@ -1795,8 +1795,6 @@ CREATE TABLE `guild` (
`createdate` int(10) unsigned NOT NULL DEFAULT '0',
`BankMoney` bigint(20) unsigned NOT NULL DEFAULT '0',
`level` int(10) unsigned DEFAULT '1',
`experience` bigint(20) unsigned DEFAULT '0',
`todayExperience` bigint(20) unsigned DEFAULT '0',
PRIMARY KEY (`guildid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Guild System';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1932,8 +1930,8 @@ CREATE TABLE `guild_bank_right` (
`guildid` bigint(20) unsigned NOT NULL DEFAULT '0',
`TabId` tinyint(3) unsigned NOT NULL DEFAULT '0',
`rid` tinyint(3) unsigned NOT NULL DEFAULT '0',
`gbright` tinyint(3) unsigned NOT NULL DEFAULT '0',
`SlotPerDay` int(10) unsigned NOT NULL DEFAULT '0',
`gbright` tinyint(3) NOT NULL DEFAULT '0',
`SlotPerDay` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`guildid`,`TabId`,`rid`),
KEY `guildid_key` (`guildid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -2610,8 +2608,7 @@ CREATE TABLE `petition` (
`ownerguid` bigint(20) unsigned NOT NULL,
`petitionguid` bigint(20) unsigned DEFAULT '0',
`name` varchar(24) NOT NULL,
`type` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`ownerguid`,`type`),
PRIMARY KEY (`ownerguid`),
UNIQUE KEY `index_ownerguid_petitionguid` (`ownerguid`,`petitionguid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Guild System';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -2637,7 +2634,6 @@ CREATE TABLE `petition_sign` (
`petitionguid` bigint(20) unsigned NOT NULL DEFAULT '0',
`playerguid` bigint(20) unsigned NOT NULL DEFAULT '0',
`player_account` int(10) unsigned NOT NULL DEFAULT '0',
`type` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`petitionguid`,`playerguid`),
KEY `Idx_playerguid` (`playerguid`),
KEY `Idx_ownerguid` (`ownerguid`)
@@ -0,0 +1,9 @@
ALTER TABLE `guild` DROP COLUMN `experience`, DROP COLUMN `todayExperience`;
ALTER TABLE `guild_bank_right` MODIFY COLUMN `gbright` mediumint(3) NOT NULL DEFAULT 0; -- temp type, can hold all values
UPDATE `guild_bank_right` SET `gbright` = -1 WHERE `gbright` = 255;
ALTER TABLE `guild_bank_right` MODIFY COLUMN `gbright` tinyint(3) NOT NULL DEFAULT 0;
ALTER TABLE `guild_bank_right` MODIFY COLUMN `SlotPerDay` bigint(10) NOT NULL DEFAULT 0; -- temp type, can hold all values
UPDATE `guild_bank_right` SET `SlotPerDay` = -1 WHERE `SlotPerDay` = 4294967295;
ALTER TABLE `guild_bank_right` MODIFY COLUMN `SlotPerDay` int(10) NOT NULL DEFAULT 0;
@@ -0,0 +1,5 @@
DELETE FROM `petition` WHERE `type` NOT IN(10); -- delete all non guild petitions
ALTER TABLE `petition` DROP COLUMN `type`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ownerguid`);
DELETE FROM `petition_sign` WHERE `type` NOT IN(10); -- delete all non guild petition signs
ALTER TABLE `petition_sign` DROP COLUMN `type`;
+135
View File
@@ -0,0 +1,135 @@
DROP TABLE `guild_xp_for_level` IF EXISTS;
ALTER TABLE `guild_rewards` CHANGE COLUMN `entry` `ItemID` mediumint(8) UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `guild_rewards` CHANGE COLUMN `standing` `MinGuildRep` tinyint(3) UNSIGNED NULL DEFAULT 0;
ALTER TABLE `guild_rewards` CHANGE COLUMN `racemask` `RaceMask` int(11) NULL DEFAULT 0;
ALTER TABLE `guild_rewards` CHANGE COLUMN `price` `Cost` bigint(20) UNSIGNED NULL DEFAULT 0;
ALTER TABLE `guild_rewards` DROP COLUMN `achievement`;
TRUNCATE TABLE `guild_rewards`;
INSERT IGNORE INTO `guild_rewards` (`ItemID`, `MinGuildRep`, `RaceMask`, `Cost`) VALUES
(89194, 5, -1, 1500000),
(89195, 7, -1, 2000000),
(114968, 6, 0, 3000000),
(116666, 7, -1, 40000000),
(63206, 5, 18875469, 3000000),
(63207, 5, 33555378, 3000000),
(65435, 5, 0, 1500000),
(85666, 7, -1, 30000000),
(67107, 7, 33555378, 15000000),
(69887, 4, 0, 15000000),
(69888, 5, -1, 17500000),
(69892, 4, 0, 12000000),
(71033, 7, 0, 15000000),
(65498, 5, 0, 1500000),
(120352, 7, 0, 1000000),
(64398, 5, 18875469, 2000000),
(64399, 5, 18875469, 3000000),
(64400, 5, 33555378, 1500000),
(64401, 5, 33555378, 2000000),
(64402, 5, 33555378, 3000000),
(61931, 4, 0, 15000000),
(61935, 4, 0, 15000000),
(61936, 4, 0, 15000000),
(61937, 4, 0, 15000000),
(61942, 4, 0, 15000000),
(65274, 6, 33555378, 5000000),
(61958, 4, 0, 15000000),
(85508, 5, -1, 1000000),
(85509, 5, -1, 1000000),
(85510, 5, -1, 1000000),
(63352, 5, 18875469, 1500000),
(63353, 5, 33555378, 1500000),
(62799, 5, 0, 1500000),
(62800, 5, 0, 1500000),
(63359, 5, 18875469, 1500000),
(69209, 4, -1, 1250000),
(69210, 5, -1, 2500000),
(62286, 4, 0, 100000000),
(62287, 6, 33555378, 200000000),
(63398, 6, 0, 3000000),
(63125, 7, 0, 30000000),
(62298, 7, 18875469, 15000000),
(62023, 5, -1, 17500000),
(62024, 5, -1, 17500000),
(62025, 5, -1, 17500000),
(62026, 5, -1, 17500000),
(62027, 5, -1, 17500000),
(62029, 5, -1, 17500000),
(63138, 7, -1, 3000000),
(65360, 6, 18875469, 5000000),
(65361, 5, 18875469, 3000000),
(62038, 4, 0, 12000000),
(65362, 5, 33555378, 3000000),
(62039, 4, 0, 12000000),
(65363, 6, 18875469, 5000000),
(62040, 4, 0, 12000000),
(65364, 6, 33555378, 5000000),
(68136, 6, 18875469, 200000000),
(89190, 5, -1, 1500000),
(89191, 7, -1, 2000000),
(89192, 5, -1, 1500000),
(89193, 7, -1, 2000000);
DROP TABLE IF EXISTS `guild_rewards_req_achievements`;
CREATE TABLE `guild_rewards_req_achievements` (
`ItemID` mediumint(8) unsigned NOT NULL DEFAULT '0',
`AchievementRequired` mediumint(8) unsigned DEFAULT '0',
PRIMARY KEY (`ItemID`,`AchievementRequired`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT IGNORE INTO `guild_rewards_req_achievements` (`ItemID`, `AchievementRequired`) VALUES
(89194, 6681),
(89190, 6681),
(89192, 6681),
(89191, 6644),
(89191, 6664),
(89193, 6644),
(89193, 6664),
(89195, 6644),
(89195, 6664),
(114968, 9651),
(116666, 9669),
(65435, 5465),
(85666, 6682),
(69888, 6626),
(62023, 6626),
(62024, 6626),
(62025, 6626),
(62026, 6626),
(62027, 6626),
(62029, 6626),
(71033, 5840),
(65498, 5024),
(120352, 9388),
(64398, 5143),
(64401, 5143),
(64399, 5422),
(64402, 5422),
(64400, 4860),
(63359, 4860),
(65274, 5035),
(65360, 5035),
(85508, 7448),
(85509, 7448),
(85510, 7448),
(85508, 7449),
(85509, 7449),
(85510, 7449),
(63352, 4989),
(63353, 4989),
(62799, 5467),
(62800, 5036),
(62286, 5196),
(62287, 5158),
(62287, 4949),
(68136, 5152),
(68136, 4949),
(65361, 5031),
(65362, 5179),
(65363, 5201),
(65364, 5201),
(63398, 5144),
(63125, 4988),
(63138, 5812),
(63138, 5892);
@@ -997,8 +997,8 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type,
, GetOwner()->GetGUID().ToString().c_str(), AchievementGlobalMgr::GetCriteriaTypeString(type), type, miscValue1, miscValue2, miscValue3);
// Lua_GetGuildLevelEnabled() is checked in achievement UI to display guild tab
if (IsGuild<T>() && !sWorld->getBoolConfig(CONFIG_GUILD_LEVELING_ENABLED))
return;
//if (IsGuild<T>() && !sWorld->getBoolConfig(CONFIG_GUILD_LEVELING_ENABLED))
// return;
AchievementCriteriaList const& achievementCriteriaList = sAchievementMgr->GetAchievementCriteriaByType(type, IsGuild<T>());
for (AchievementCriteria const* achievementCriteria : achievementCriteriaList)
+1 -1
View File
@@ -139,7 +139,7 @@ bool ArenaTeam::AddMember(ObjectGuid playerGuid)
// Remove all player signatures from other petitions
// This will prevent player from joining too many arena teams and corrupt arena team data integrity
Player::RemovePetitionsAndSigns(playerGuid, GetType());
//Player::RemovePetitionsAndSigns(playerGuid, GetType()); /// @todo arena teams removed in 5.4
// Feed data to the struct
ArenaTeamMember newMember;
+14 -51
View File
@@ -4389,7 +4389,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
RemoveFromGroup(group, playerguid);
// Remove signs from petitions (also remove petitions if owner);
RemovePetitionsAndSigns(playerguid, 10);
RemovePetitionsAndSigns(playerguid);
switch (charDeleteMethod)
{
@@ -7287,7 +7287,7 @@ void Player::SetInGuild(ObjectGuid::LowType guildId)
else
SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Empty);
ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_GUILD_LEVEL_ENABLED, guildId != 0 && sWorld->getBoolConfig(CONFIG_GUILD_LEVELING_ENABLED));
ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_GUILD_LEVEL_ENABLED, guildId != 0);
SetUInt16Value(OBJECT_FIELD_TYPE, 1, guildId != 0);
}
@@ -14748,9 +14748,6 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
else
moneyRew = int32(quest->GetRewMoneyMaxLevel() * sWorld->getRate(RATE_DROP_MONEY));
if (Guild* guild = sGuildMgr->GetGuildById(GetGuildId()))
guild->GiveXP(uint32(quest->XPValue(getLevel()) * sWorld->getRate(RATE_XP_QUEST) * sWorld->getRate(RATE_XP_GUILD_MODIFIER)), this);
moneyRew += quest->GetRewMoney();
if (moneyRew)
@@ -20815,18 +20812,9 @@ void Player::SendProficiency(ItemClass itemClass, uint32 itemSubclassMask)
SendDirectMessage(packet.Write());
}
void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type)
void Player::RemovePetitionsAndSigns(ObjectGuid guid)
{
PreparedStatement* stmt;
if (type == 10)
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PETITION_SIG_BY_GUID);
else
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PETITION_SIG_BY_GUID_TYPE);
stmt->setUInt8(1, uint8(type));
}
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PETITION_SIG_BY_GUID);
stmt->setUInt64(0, guid.GetCounter());
PreparedQueryResult result = CharacterDatabase.Query(stmt);
@@ -20844,48 +20832,23 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type)
owner->GetSession()->SendPetitionQueryOpcode(petitionguid);
} while (result->NextRow());
if (type == 10)
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_PETITION_SIGNATURES);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_PETITION_SIGNATURES);
stmt->setUInt64(0, guid.GetCounter());
stmt->setUInt64(0, guid.GetCounter());
CharacterDatabase.Execute(stmt);
}
else
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE);
stmt->setUInt64(0, guid.GetCounter());
stmt->setUInt8(1, uint8(type));
CharacterDatabase.Execute(stmt);
}
CharacterDatabase.Execute(stmt);
}
SQLTransaction trans = CharacterDatabase.BeginTransaction();
if (type == 10)
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_OWNER);
stmt->setUInt64(0, guid.GetCounter());
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER);
stmt->setUInt64(0, guid.GetCounter());
trans->Append(stmt);
}
else
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_OWNER_AND_TYPE);
stmt->setUInt64(0, guid.GetCounter());
stmt->setUInt8(1, uint8(type));
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_OWNER);
stmt->setUInt64(0, guid.GetCounter());
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER);
stmt->setUInt64(0, guid.GetCounter());
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER_AND_TYPE);
stmt->setUInt64(0, guid.GetCounter());
stmt->setUInt8(1, uint8(type));
trans->Append(stmt);
}
CharacterDatabase.CommitTransaction(trans);
}
+1 -1
View File
@@ -2045,7 +2045,7 @@ class Player : public Unit, public GridObject<Player>
static ObjectGuid::LowType GetGuildIdFromDB(ObjectGuid guid);
static uint8 GetRankFromDB(ObjectGuid guid);
ObjectGuid::LowType GetGuildIdInvited() { return m_GuildIdInvited; }
static void RemovePetitionsAndSigns(ObjectGuid guid, uint32 type);
static void RemovePetitionsAndSigns(ObjectGuid guid);
// Arena Team
void SetInArenaTeam(uint32 ArenaTeamId, uint8 slot, uint8 type);
File diff suppressed because it is too large Load Diff
+77 -95
View File
@@ -29,6 +29,16 @@
class Item;
namespace WorldPackets
{
namespace Guild
{
class GuildBankLogQueryResults;
class GuildEventLogQueryResults;
class GuildNews;
}
}
enum GuildMisc
{
GUILD_BANK_MAX_TABS = 8, // send by client for money log also
@@ -40,7 +50,6 @@ enum GuildMisc
GUILD_WITHDRAW_MONEY_UNLIMITED = 0xFFFFFFFF,
GUILD_WITHDRAW_SLOT_UNLIMITED = 0xFFFFFFFF,
GUILD_EVENT_LOG_GUID_UNDEFINED = 0xFFFFFFFF,
GUILD_EXPERIENCE_UNCAPPED_LEVEL = 20, ///> Hardcoded in client, starting from this level, guild daily experience gain is unlimited.
TAB_UNDEFINED = 0xFF,
};
@@ -65,20 +74,24 @@ enum GuildDefaultRanks
enum GuildRankRights
{
GR_RIGHT_EMPTY = 0x00000040,
GR_RIGHT_GCHATLISTEN = GR_RIGHT_EMPTY | 0x00000001,
GR_RIGHT_GCHATSPEAK = GR_RIGHT_EMPTY | 0x00000002,
GR_RIGHT_OFFCHATLISTEN = GR_RIGHT_EMPTY | 0x00000004,
GR_RIGHT_OFFCHATSPEAK = GR_RIGHT_EMPTY | 0x00000008,
GR_RIGHT_INVITE = GR_RIGHT_EMPTY | 0x00000010,
GR_RIGHT_REMOVE = GR_RIGHT_EMPTY | 0x00000020,
GR_RIGHT_PROMOTE = GR_RIGHT_EMPTY | 0x00000080,
GR_RIGHT_DEMOTE = GR_RIGHT_EMPTY | 0x00000100,
GR_RIGHT_SETMOTD = GR_RIGHT_EMPTY | 0x00001000,
GR_RIGHT_EPNOTE = GR_RIGHT_EMPTY | 0x00002000,
GR_RIGHT_VIEWOFFNOTE = GR_RIGHT_EMPTY | 0x00004000,
GR_RIGHT_EOFFNOTE = GR_RIGHT_EMPTY | 0x00008000,
GR_RIGHT_MODIFY_GUILD_INFO = GR_RIGHT_EMPTY | 0x00010000,
GR_RIGHT_NONE = 0x00000000,
GR_RIGHT_GCHATLISTEN = 0x00000001,
GR_RIGHT_GCHATSPEAK = 0x00000002,
GR_RIGHT_OFFCHATLISTEN = 0x00000004,
GR_RIGHT_OFFCHATSPEAK = 0x00000008,
GR_RIGHT_INVITE = 0x00000010,
GR_RIGHT_REMOVE = 0x00000020,
GR_RIGHT_ROSTER = 0x00000040,
GR_RIGHT_PROMOTE = 0x00000080,
GR_RIGHT_DEMOTE = 0x00000100,
GR_RIGHT_UNK_200 = 0x00000200,
GR_RIGHT_UNK_400 = 0x00000400,
GR_RIGHT_UNK_800 = 0x00000800,
GR_RIGHT_SETMOTD = 0x00001000,
GR_RIGHT_EDIT_PUBLIC_NOTE = 0x00002000,
GR_RIGHT_VIEWOFFNOTE = 0x00004000,
GR_RIGHT_EOFFNOTE = 0x00008000,
GR_RIGHT_MODIFY_GUILD_INFO = 0x00010000,
GR_RIGHT_WITHDRAW_GOLD_LOCK = 0x00020000, // remove money withdraw capacity
GR_RIGHT_WITHDRAW_REPAIR = 0x00040000, // withdraw for repair
GR_RIGHT_WITHDRAW_GOLD = 0x00080000, // withdraw gold
@@ -88,19 +101,19 @@ enum GuildRankRights
enum GuildCommandType
{
GUILD_COMMAND_CREATE = 0,
GUILD_COMMAND_INVITE = 1,
GUILD_COMMAND_QUIT = 3,
GUILD_COMMAND_ROSTER = 5,
GUILD_COMMAND_PROMOTE = 6,
GUILD_COMMAND_DEMOTE = 7,
GUILD_COMMAND_REMOVE = 8,
GUILD_COMMAND_CREATE_GUILD = 0,
GUILD_COMMAND_INVITE_PLAYER = 1,
GUILD_COMMAND_LEAVE_GUILD = 3,
GUILD_COMMAND_GET_ROSTER = 5,
GUILD_COMMAND_PROMOTE_PLAYER = 6,
GUILD_COMMAND_DEMOTE_PLAYER = 7,
GUILD_COMMAND_REMOVE_PLAYER = 8,
GUILD_COMMAND_CHANGE_LEADER = 10,
GUILD_COMMAND_EDIT_MOTD = 11,
GUILD_COMMAND_GUILD_CHAT = 13,
GUILD_COMMAND_FOUNDER = 14,
GUILD_COMMAND_CHANGE_RANK = 16,
GUILD_COMMAND_PUBLIC_NOTE = 19,
GUILD_COMMAND_EDIT_PUBLIC_NOTE = 19,
GUILD_COMMAND_VIEW_TAB = 21,
GUILD_COMMAND_MOVE_ITEM = 22,
GUILD_COMMAND_REPAIR = 25,
@@ -142,36 +155,6 @@ enum GuildCommandError
ERR_GUILD_REP_TOO_LOW = 39
};
enum GuildEvents
{
GE_PROMOTION = 1,
GE_DEMOTION = 2,
GE_MOTD = 3,
GE_JOINED = 4,
GE_LEFT = 5,
GE_REMOVED = 6,
GE_LEADER_IS = 7,
GE_LEADER_CHANGED = 8,
GE_DISBANDED = 9,
GE_TABARDCHANGE = 10,
GE_RANK_UPDATED = 11,
GE_RANK_CREATED = 12,
GE_RANK_DELETED = 13,
GE_RANK_ORDER_CHANGED = 14,
GE_FOUNDER = 15,
GE_SIGNED_ON = 16,
GE_SIGNED_OFF = 17,
GE_GUILDBANKBAGSLOTS_CHANGED = 18,
GE_BANK_TAB_PURCHASED = 19,
GE_BANK_TAB_UPDATED = 20,
GE_BANK_MONEY_SET = 21,
GE_BANK_TAB_AND_MONEY_UPDATED = 22,
GE_BANK_TEXT_CHANGED = 23,
// 24 - error 795
GE_SIGNED_ON_MOBILE = 25,
GE_SIGNED_Off_MOBILE = 26,
};
enum PetitionTurns
{
PETITION_TURN_OK = 0,
@@ -200,7 +183,7 @@ enum GuildBankRights
GUILD_BANK_RIGHT_UPDATE_TEXT = 0x04,
GUILD_BANK_RIGHT_DEPOSIT_ITEM = GUILD_BANK_RIGHT_VIEW_TAB | GUILD_BANK_RIGHT_PUT_ITEM,
GUILD_BANK_RIGHT_FULL = 0xFF
GUILD_BANK_RIGHT_FULL = -1
};
enum GuildBankEventLogTypes
@@ -255,26 +238,27 @@ enum GuildNews
GUILD_NEWS_ITEM_CRAFTED = 4,
GUILD_NEWS_ITEM_PURCHASED = 5,
GUILD_NEWS_LEVEL_UP = 6,
GUILD_NEWS_CREATE = 7, // @todo Implement
GUILD_NEWS_EVENT = 8 // @todo Implement
};
struct GuildReward
{
uint32 Entry;
int32 Racemask;
uint64 Price;
uint32 AchievementId;
uint8 Standing;
uint32 ItemID;
uint8 MinGuildRep;
int32 RaceMask;
uint64 Cost;
std::vector<uint32> AchievementsRequired;
};
uint32 const MinNewsItemLevel[MAX_CONTENT] = { 61, 90, 200, 353 };
// Guild Challenge
#define GUILD_CHALLENGES_TYPES 4
#define GUILD_CHALLENGES_TYPES 6
const uint32 GuildChallengeGoldReward[GUILD_CHALLENGES_TYPES] = { 0, 250, 1000, 500 };
const uint32 GuildChallengeMaxLevelGoldReward[GUILD_CHALLENGES_TYPES] = { 0, 125, 500, 250 };
const uint32 GuildChallengeXPReward[GUILD_CHALLENGES_TYPES] = { 0, 300000, 3000000, 1500000 };
const uint32 GuildChallengesPerWeek[GUILD_CHALLENGES_TYPES] = { 0, 7, 1, 3 };
const uint32 GuildChallengeGoldReward[GUILD_CHALLENGES_TYPES] = { 0, 250, 1000, 500, 250, 500 };
const uint32 GuildChallengeMaxLevelGoldReward[GUILD_CHALLENGES_TYPES] = { 0, 125, 500, 250, 125, 250 };
const uint32 GuildChallengesMaxCount[GUILD_CHALLENGES_TYPES] = { 0, 7, 1, 3, 0, 3 };
// Emblem info
class EmblemInfo
@@ -284,7 +268,7 @@ public:
void LoadFromDB(Field* fields);
void SaveToDB(ObjectGuid::LowType guildId) const;
void ReadPacket(WorldPacket& recv);
void ReadPacket(WorldPackets::Guild::SaveGuildEmblem& packet);
uint32 GetStyle() const { return m_style; }
uint32 GetColor() const { return m_color; }
@@ -306,26 +290,26 @@ class GuildBankRightsAndSlots
public:
GuildBankRightsAndSlots() : tabId(TAB_UNDEFINED), rights(0), slots(0) { }
GuildBankRightsAndSlots(uint8 _tabId) : tabId(_tabId), rights(0), slots(0) { }
GuildBankRightsAndSlots(uint8 _tabId, uint8 _rights, uint32 _slots) : tabId(_tabId), rights(_rights), slots(_slots) { }
GuildBankRightsAndSlots(uint8 _tabId, int8 _rights, int32 _slots) : tabId(_tabId), rights(_rights), slots(_slots) { }
void SetGuildMasterValues()
{
rights = GUILD_BANK_RIGHT_FULL;
slots = uint32(GUILD_WITHDRAW_SLOT_UNLIMITED);
slots = int32(GUILD_WITHDRAW_SLOT_UNLIMITED);
}
void SetTabId(uint8 _tabId) { tabId = _tabId; }
void SetSlots(uint32 _slots) { slots = _slots; }
void SetRights(uint8 _rights) { rights = _rights; }
void SetSlots(int32 _slots) { slots = _slots; }
void SetRights(int8 _rights) { rights = _rights; }
int8 GetTabId() const { return tabId; }
int32 GetSlots() const { return slots; }
int8 GetRights() const { return rights; }
private:
uint8 tabId;
uint8 rights;
uint32 slots;
uint8 tabId;
int8 rights;
int32 slots;
};
typedef std::vector <GuildBankRightsAndSlots> GuildBankRightsAndSlotsVec;
@@ -345,6 +329,7 @@ private:
m_zoneId(0),
m_level(0),
m_class(0),
_gender(0),
m_flags(GUILDMEMBER_STATUS_NONE),
m_logoutTime(::time(NULL)),
m_accountId(0),
@@ -359,7 +344,7 @@ private:
}
void SetStats(Player* player);
void SetStats(std::string const& name, uint8 level, uint8 _class, uint32 zoneId, uint32 accountId, uint32 reputation);
void SetStats(std::string const& name, uint8 level, uint8 _class, uint8 gender, uint32 zoneId, uint32 accountId, uint32 reputation);
bool CheckStats() const;
void SetPublicNote(std::string const& publicNote);
@@ -385,6 +370,7 @@ private:
std::string GetPublicNote() const { return m_publicNote; }
std::string GetOfficerNote() const { return m_officerNote; }
uint8 GetClass() const { return m_class; }
uint8 GetGender() const { return _gender; }
uint8 GetLevel() const { return m_level; }
uint8 GetFlags() const { return m_flags; }
uint32 GetZoneId() const { return m_zoneId; }
@@ -422,6 +408,7 @@ private:
uint32 m_zoneId;
uint8 m_level;
uint8 m_class;
uint8 _gender;
uint8 m_flags;
uint64 m_logoutTime;
uint32 m_accountId;
@@ -452,7 +439,6 @@ private:
uint64 GetTimestamp() const { return m_timestamp; }
virtual void SaveToDB(SQLTransaction& trans) const = 0;
virtual void WritePacket(WorldPacket& data, ByteBuffer& content) const = 0;
protected:
ObjectGuid::LowType m_guildId;
@@ -473,7 +459,7 @@ private:
~EventLogEntry() { }
void SaveToDB(SQLTransaction& trans) const override;
void WritePacket(WorldPacket& data, ByteBuffer& content) const override;
void WritePacket(WorldPackets::Guild::GuildEventLogQueryResults& packet) const;
private:
GuildEventLogTypes m_eventType;
@@ -511,7 +497,7 @@ private:
~BankEventLogEntry() { }
void SaveToDB(SQLTransaction& trans) const override;
void WritePacket(WorldPacket& data, ByteBuffer& content) const override;
void WritePacket(WorldPackets::Guild::GuildBankLogQueryResults& packet) const;
private:
GuildBankEventLogTypes m_eventType;
@@ -547,7 +533,7 @@ private:
}
void SaveToDB(SQLTransaction& trans) const;
void WritePacket(WorldPacket& data, ByteBuffer& content) const;
void WritePacket(WorldPackets::Guild::GuildNews& newsPacket) const;
private:
GuildNews m_type;
@@ -572,10 +558,8 @@ private:
void LoadEvent(LogEntry* entry);
// Adds new event to collection and saves it to DB
void AddEvent(SQLTransaction& trans, LogEntry* entry);
// Writes information about all events to packet
void WritePacket(WorldPacket& data) const;
uint32 GetNextGUID();
GuildLog* GetGuildLog() { return &m_log; } // Hack needed for news as WritePacket can't be used
GuildLog* GetGuildLog() { return &m_log; }
private:
GuildLog m_log;
@@ -587,8 +571,8 @@ private:
class RankInfo
{
public:
RankInfo(): m_guildId(UI64LIT(0)), m_rankId(GUILD_RANK_NONE), m_rights(GR_RIGHT_EMPTY), m_bankMoneyPerDay(0) { }
RankInfo(ObjectGuid::LowType guildId) : m_guildId(guildId), m_rankId(GUILD_RANK_NONE), m_rights(GR_RIGHT_EMPTY), m_bankMoneyPerDay(0) { }
RankInfo(): m_guildId(UI64LIT(0)), m_rankId(GUILD_RANK_NONE), m_rights(GR_RIGHT_NONE), m_bankMoneyPerDay(0) { }
RankInfo(ObjectGuid::LowType guildId) : m_guildId(guildId), m_rankId(GUILD_RANK_NONE), m_rights(GR_RIGHT_NONE), m_bankMoneyPerDay(0) { }
RankInfo(ObjectGuid::LowType guildId, uint8 rankId, std::string const& name, uint32 rights, uint32 money) :
m_guildId(guildId), m_rankId(rankId), m_name(name), m_rights(rights),
m_bankMoneyPerDay(rankId != GR_GUILDMASTER ? money : GUILD_WITHDRAW_MONEY_UNLIMITED) { }
@@ -810,7 +794,7 @@ public:
void HandleMemberDepositMoney(WorldSession* session, uint64 amount, bool cashFlow = false);
bool HandleMemberWithdrawMoney(WorldSession* session, uint64 amount, bool repair = false);
void HandleMemberLogout(WorldSession* session);
void HandleDisband(WorldSession* session);
void HandleDelete(WorldSession* session);
void HandleGuildPartyRequest(WorldSession* session);
void HandleNewsSetSticky(WorldSession* session, uint32 newsId, bool sticky);
void HandleGuildRequestChallengeUpdate(WorldSession* session);
@@ -822,14 +806,20 @@ public:
void SendGuildRankInfo(WorldSession* session) const;
void SendEventLog(WorldSession* session) const;
void SendBankLog(WorldSession* session, uint8 tabId) const;
void SendBankList(WorldSession* session, uint8 tabId, bool withContent, bool withTabInfo) const;
void SendGuildXP(WorldSession* session = NULL) const;
void SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) const;
void SendBankTabText(WorldSession* session, uint8 tabId) const;
void SendPermissions(WorldSession* session) const;
void SendMoneyInfo(WorldSession* session) const;
void SendLoginInfo(WorldSession* session);
void SendNewsUpdate(WorldSession* session);
// Send events
void SendEventBankMoneyChanged();
void SendEventMOTD(WorldSession* session, bool broadcast = false);
void SendEventNewLeader(Member* newLeader, Member* oldLeader, bool isSelfPromoted = false);
void SendEventPlayerLeft(Player* leaver, Player* remover = nullptr, bool isRemoved = false);
void SendEventPresenceChanged(WorldSession* session, bool loggedOn, bool broadcast = false);
// Load from DB
bool LoadFromDB(Field* fields);
void LoadGuildNewsLogFromDB(Field* fields);
@@ -880,9 +870,6 @@ public:
// Guild leveling
uint8 GetLevel() const { return _level; }
void GiveXP(uint32 xp, Player* source);
uint64 GetExperience() const { return _experience; }
uint64 GetTodayExperience() const { return _todayExperience; }
void AddGuildNews(uint8 type, ObjectGuid guid, uint32 flags, uint32 value);
@@ -915,8 +902,6 @@ protected:
AchievementMgr<Guild> m_achievementMgr;
uint8 _level;
uint64 _experience;
uint64 _todayExperience;
private:
inline uint8 _GetRanksSize() const { return uint8(m_ranks.size()); }
@@ -926,7 +911,7 @@ private:
{
if (player)
if (Member const* member = GetMember(player->GetGUID()))
return (_GetRankRights(member->GetRankId()) & right) != GR_RIGHT_EMPTY;
return (_GetRankRights(member->GetRankId()) & right) != GR_RIGHT_NONE;
return false;
}
@@ -990,7 +975,7 @@ private:
int32 _GetMemberRemainingSlots(Member const* member, uint8 tabId) const;
int32 _GetMemberRemainingMoney(Member const* member) const;
void _UpdateMemberWithdrawSlots(SQLTransaction& trans, ObjectGuid guid, uint8 tabId);
bool _MemberHasTabRights(ObjectGuid guid, uint8 tabId, uint32 rights) const;
bool _MemberHasTabRights(ObjectGuid guid, uint8 tabId, int32 rights) const;
void _LogEvent(GuildEventLogTypes eventType, ObjectGuid::LowType playerGuid1, ObjectGuid::LowType playerGuid2 = UI64LIT(0), uint8 newRank = 0);
void _LogBankEvent(SQLTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType playerGuid, uint64 itemOrMoney, uint16 itemStackCount = 0, uint8 destTabId = 0);
@@ -1002,9 +987,6 @@ private:
void _SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) const;
void _SendBankContentUpdate(uint8 tabId, SlotIds slots) const;
void SendGuildReputationWeeklyCap(WorldSession* session, uint32 reputation) const;
void SendGuildRanksUpdate(ObjectGuid setterGuid, ObjectGuid targetGuid, uint32 rank);
void _BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, const char* param1 = NULL, const char* param2 = NULL, const char* param3 = NULL) const;
};
#endif
+35 -79
View File
@@ -105,13 +105,6 @@ Guild* GuildMgr::GetGuildByLeader(ObjectGuid guid) const
return NULL;
}
uint64 GuildMgr::GetXPForGuildLevel(uint8 level) const
{
if (level < GuildXPperLevel.size())
return GuildXPperLevel[level];
return 0;
}
void GuildMgr::LoadGuilds()
{
// 1. Load all guilds
@@ -119,11 +112,11 @@ void GuildMgr::LoadGuilds()
{
uint32 oldMSTime = getMSTime();
// 0 1 2 3 4 5 6
// 0 1 2 3 4 5 6
QueryResult result = CharacterDatabase.Query("SELECT g.guildid, g.name, g.leaderguid, g.EmblemStyle, g.EmblemColor, g.BorderStyle, g.BorderColor, "
// 7 8 9 10 11 12 13 14 15
"g.BackgroundColor, g.info, g.motd, g.createdate, g.BankMoney, g.level, g.experience, g.todayExperience, COUNT(gbt.guildid) "
"FROM guild g LEFT JOIN guild_bank_tab gbt ON g.guildid = gbt.guildid GROUP BY g.guildid ORDER BY g.guildid ASC");
// 7 8 9 10 11 12 13
"g.BackgroundColor, g.info, g.motd, g.createdate, g.BankMoney, g.level, COUNT(gbt.guildid) "
"FROM guild g LEFT JOIN guild_bank_tab gbt ON g.guildid = gbt.guildid GROUP BY g.guildid ORDER BY g.guildid ASC");
if (!result)
{
@@ -199,8 +192,8 @@ void GuildMgr::LoadGuilds()
// 0 1 2 3 4 5 6 7 8 9 10
QueryResult result = CharacterDatabase.Query("SELECT gm.guildid, gm.guid, rank, pnote, offnote, w.tab0, w.tab1, w.tab2, w.tab3, w.tab4, w.tab5, "
// 11 12 13 14 15 16 17 18 19
"w.tab6, w.tab7, w.money, c.name, c.level, c.class, c.zone, c.account, c.logout_time "
// 11 12 13 14 15 16 17 18 19 20
"w.tab6, w.tab7, w.money, c.name, c.level, c.class, c.gender, c.zone, c.account, c.logout_time "
"FROM guild_member gm "
"LEFT JOIN guild_member_withdraw w ON gm.guid = w.guid "
"LEFT JOIN characters c ON c.guid = gm.guid ORDER BY gm.guildid ASC");
@@ -404,7 +397,7 @@ void GuildMgr::LoadGuilds()
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// SELECT guid, itemEntry, creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, transmogrification, upgradeId, enchantIllusion, bonusListIDs,
// 17 18 19
// 17 18 19
// guildid, TabId, SlotId FROM guild_bank_item gbi INNER JOIN item_instance ii ON gbi.item_guid = ii.guid
PreparedQueryResult result = CharacterDatabase.Query(CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_BANK_ITEMS));
@@ -465,62 +458,12 @@ void GuildMgr::LoadGuilds()
}
}
void GuildMgr::LoadGuildXpForLevel()
{
uint32 oldMSTime = getMSTime();
GuildXPperLevel.resize(sWorld->getIntConfig(CONFIG_GUILD_MAX_LEVEL));
for (uint8 level = 0; level < sWorld->getIntConfig(CONFIG_GUILD_MAX_LEVEL); ++level)
GuildXPperLevel[level] = 0;
// 0 1
QueryResult result = WorldDatabase.Query("SELECT lvl, xp_for_next_level FROM guild_xp_for_level");
if (!result)
{
TC_LOG_ERROR("server.loading", ">> Loaded 0 xp for guild level definitions. DB table `guild_xp_for_level` is empty.");
return;
}
uint32 count = 0;
do
{
Field* fields = result->Fetch();
uint32 level = fields[0].GetUInt8();
uint32 requiredXP = fields[1].GetUInt32();
if (level >= sWorld->getIntConfig(CONFIG_GUILD_MAX_LEVEL))
{
TC_LOG_INFO("misc", "Unused (> Guild.MaxLevel in worldserver.conf) level %u in `guild_xp_for_level` table, ignoring.", uint32(level));
continue;
}
GuildXPperLevel[level] = requiredXP;
++count;
} while (result->NextRow());
// fill level gaps
for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_GUILD_MAX_LEVEL); ++level)
{
if (!GuildXPperLevel[level])
{
TC_LOG_ERROR("sql.sql", "Level %i does not have XP for guild level data. Using data of level [%i] + 1660000.", level+1, level);
GuildXPperLevel[level] = GuildXPperLevel[level - 1] + 1660000;
}
}
TC_LOG_INFO("server.loading", ">> Loaded %u xp for guild level definitions in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
void GuildMgr::LoadGuildRewards()
{
uint32 oldMSTime = getMSTime();
// 0 1 2 3 4
QueryResult result = WorldDatabase.Query("SELECT entry, standing, racemask, price, achievement FROM guild_rewards");
// 0 1 2 3
QueryResult result = WorldDatabase.Query("SELECT ItemID, MinGuildRep, RaceMask, Cost FROM guild_rewards");
if (!result)
{
@@ -534,28 +477,42 @@ void GuildMgr::LoadGuildRewards()
{
GuildReward reward;
Field* fields = result->Fetch();
reward.Entry = fields[0].GetUInt32();
reward.Standing = fields[1].GetUInt8();
reward.Racemask = fields[2].GetInt32();
reward.Price = fields[3].GetUInt64();
reward.AchievementId = fields[4].GetUInt32();
reward.ItemID = fields[0].GetUInt32();
reward.MinGuildRep = fields[1].GetUInt8();
reward.RaceMask = fields[2].GetInt32();
reward.Cost = fields[3].GetUInt64();
if (!sObjectMgr->GetItemTemplate(reward.Entry))
if (!sObjectMgr->GetItemTemplate(reward.ItemID))
{
TC_LOG_ERROR("server.loading", "Guild rewards constains not existing item entry %u", reward.Entry);
TC_LOG_ERROR("server.loading", "Guild rewards constains not existing item entry %u", reward.ItemID);
continue;
}
if (reward.AchievementId != 0 && (!sAchievementMgr->GetAchievement(reward.AchievementId)))
if (reward.MinGuildRep >= MAX_REPUTATION_RANK)
{
TC_LOG_ERROR("server.loading", "Guild rewards constains not existing achievement entry %u", reward.AchievementId);
TC_LOG_ERROR("server.loading", "Guild rewards contains wrong reputation standing %u, max is %u", uint32(reward.MinGuildRep), MAX_REPUTATION_RANK - 1);
continue;
}
if (reward.Standing >= MAX_REPUTATION_RANK)
PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_GUILD_REWARDS_REQ_ACHIEVEMENTS);
stmt->setUInt32(0, reward.ItemID);
PreparedQueryResult reqAchievementResult = WorldDatabase.Query(stmt);
if (reqAchievementResult)
{
TC_LOG_ERROR("server.loading", "Guild rewards contains wrong reputation standing %u, max is %u", uint32(reward.Standing), MAX_REPUTATION_RANK - 1);
continue;
do
{
Field* fields = reqAchievementResult->Fetch();
uint32 requiredAchievementId = fields[0].GetUInt32();
if (!sAchievementMgr->GetAchievement(requiredAchievementId))
{
TC_LOG_ERROR("server.loading", "Guild rewards constains not existing achievement entry %u", requiredAchievementId);
continue;
}
reward.AchievementsRequired.push_back(requiredAchievementId);
} while (reqAchievementResult->NextRow());
}
GuildRewards.push_back(reward);
@@ -567,7 +524,6 @@ void GuildMgr::LoadGuildRewards()
void GuildMgr::ResetTimes(bool week)
{
CharacterDatabase.Execute(CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RESET_TODAY_EXPERIENCE));
CharacterDatabase.Execute(CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBER_WITHDRAW));
for (GuildContainer::const_iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
-3
View File
@@ -39,7 +39,6 @@ public:
Guild* GetGuildByName(std::string const& guildName) const;
std::string GetGuildNameById(ObjectGuid::LowType guildId) const;
void LoadGuildXpForLevel();
void LoadGuildRewards();
void LoadGuilds();
@@ -53,7 +52,6 @@ public:
ObjectGuid::LowType GenerateGuildId();
void SetNextGuildId(ObjectGuid::LowType Id) { NextGuildId = Id; }
uint64 GetXPForGuildLevel(uint8 level) const;
std::vector<GuildReward> const& GetGuildRewards() const { return GuildRewards; }
void ResetTimes(bool week);
@@ -61,7 +59,6 @@ protected:
typedef std::unordered_map<ObjectGuid::LowType, Guild*> GuildContainer;
ObjectGuid::LowType NextGuildId;
GuildContainer GuildStore;
std::vector<uint64> GuildXPperLevel;
std::vector<GuildReward> GuildRewards;
};
+126 -526
View File
@@ -48,179 +48,77 @@ void WorldSession::HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo& q
TC_LOG_DEBUG("guild", "SMSG_GUILD_QUERY_RESPONSE [%s]", GetPlayerInfo().c_str());
}
void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildInviteByName(WorldPackets::Guild::GuildInviteByName& packet)
{
uint32 nameLength = recvPacket.ReadBits(7);
std::string invitedName = recvPacket.ReadString(nameLength);
TC_LOG_DEBUG("guild", "CMSG_GUILD_INVITE [%s]: Invited: %s", GetPlayerInfo().c_str(), invitedName.c_str());
if (normalizePlayerName(invitedName))
TC_LOG_DEBUG("guild", "CMSG_GUILD_INVITE [%s]: Invited: %s", GetPlayerInfo().c_str(), packet.Name.c_str());
if (normalizePlayerName(packet.Name))
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleInviteMember(this, invitedName);
guild->HandleInviteMember(this, packet.Name);
}
void WorldSession::HandleGuildOfficerRemoveMemberOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildOfficerRemoveMember(WorldPackets::Guild::GuildOfficerRemoveMember& packet)
{
ObjectGuid playerGuid;
playerGuid[6] = recvPacket.ReadBit();
playerGuid[5] = recvPacket.ReadBit();
playerGuid[4] = recvPacket.ReadBit();
playerGuid[0] = recvPacket.ReadBit();
playerGuid[1] = recvPacket.ReadBit();
playerGuid[3] = recvPacket.ReadBit();
playerGuid[7] = recvPacket.ReadBit();
playerGuid[2] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(playerGuid[2]);
recvPacket.ReadByteSeq(playerGuid[6]);
recvPacket.ReadByteSeq(playerGuid[5]);
recvPacket.ReadByteSeq(playerGuid[7]);
recvPacket.ReadByteSeq(playerGuid[1]);
recvPacket.ReadByteSeq(playerGuid[4]);
recvPacket.ReadByteSeq(playerGuid[3]);
recvPacket.ReadByteSeq(playerGuid[0]);
TC_LOG_DEBUG("guild", "CMSG_GUILD_OFFICER_REMOVE_MEMBER [%s]: Target: %s", GetPlayerInfo().c_str(), playerGuid.ToString().c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_REMOVE [%s]: Target: %s", GetPlayerInfo().c_str(), packet.Removee.ToString().c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleRemoveMember(this, playerGuid);
guild->HandleRemoveMember(this, packet.Removee);
}
void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildAcceptInvite(WorldPackets::Guild::AcceptGuildInvite& /*invite*/)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_ACCEPT [%s]", GetPlayerInfo().c_str());
TC_LOG_DEBUG("guild", "CMSG_ACCEPT_GUILD_INVITE [%s]", GetPlayerInfo().c_str());
if (!GetPlayer()->GetGuildId())
if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildIdInvited()))
guild->HandleAcceptMember(this);
}
void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildDeclineInvitation(WorldPackets::Guild::GuildDeclineInvitation& /*decline*/)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_DECLINE [%s]", GetPlayerInfo().c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_DECLINE_INVITATION [%s]", GetPlayerInfo().c_str());
GetPlayer()->SetGuildIdInvited(UI64LIT(0));
GetPlayer()->SetInGuild(UI64LIT(0));
}
void WorldSession::HandleGuildRosterOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildGetRoster(WorldPackets::Guild::GuildGetRoster& /*packet*/)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_ROSTER [%s]", GetPlayerInfo().c_str());
recvPacket.rfinish();
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleRoster(this);
else
Guild::SendCommandResult(this, GUILD_COMMAND_ROSTER, ERR_GUILD_PLAYER_NOT_IN_GUILD);
Guild::SendCommandResult(this, GUILD_COMMAND_GET_ROSTER, ERR_GUILD_PLAYER_NOT_IN_GUILD);
}
void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildPromoteMember(WorldPackets::Guild::GuildPromoteMember& promote)
{
ObjectGuid targetGuid;
targetGuid[7] = recvPacket.ReadBit();
targetGuid[2] = recvPacket.ReadBit();
targetGuid[5] = recvPacket.ReadBit();
targetGuid[6] = recvPacket.ReadBit();
targetGuid[1] = recvPacket.ReadBit();
targetGuid[0] = recvPacket.ReadBit();
targetGuid[3] = recvPacket.ReadBit();
targetGuid[4] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(targetGuid[0]);
recvPacket.ReadByteSeq(targetGuid[5]);
recvPacket.ReadByteSeq(targetGuid[2]);
recvPacket.ReadByteSeq(targetGuid[3]);
recvPacket.ReadByteSeq(targetGuid[6]);
recvPacket.ReadByteSeq(targetGuid[4]);
recvPacket.ReadByteSeq(targetGuid[1]);
recvPacket.ReadByteSeq(targetGuid[7]);
TC_LOG_DEBUG("guild", "CMSG_GUILD_PROMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), targetGuid.ToString().c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_PROMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), promote.Promotee.ToString().c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleUpdateMemberRank(this, targetGuid, false);
guild->HandleUpdateMemberRank(this, promote.Promotee, false);
}
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildDemoteMember(WorldPackets::Guild::GuildDemoteMember& demote)
{
ObjectGuid targetGuid;
targetGuid[7] = recvPacket.ReadBit();
targetGuid[1] = recvPacket.ReadBit();
targetGuid[5] = recvPacket.ReadBit();
targetGuid[6] = recvPacket.ReadBit();
targetGuid[2] = recvPacket.ReadBit();
targetGuid[3] = recvPacket.ReadBit();
targetGuid[0] = recvPacket.ReadBit();
targetGuid[4] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(targetGuid[1]);
recvPacket.ReadByteSeq(targetGuid[2]);
recvPacket.ReadByteSeq(targetGuid[7]);
recvPacket.ReadByteSeq(targetGuid[5]);
recvPacket.ReadByteSeq(targetGuid[6]);
recvPacket.ReadByteSeq(targetGuid[0]);
recvPacket.ReadByteSeq(targetGuid[4]);
recvPacket.ReadByteSeq(targetGuid[3]);
TC_LOG_DEBUG("guild", "CMSG_GUILD_DEMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), targetGuid.ToString().c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_DEMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), demote.Demotee.ToString().c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleUpdateMemberRank(this, targetGuid, true);
guild->HandleUpdateMemberRank(this, demote.Demotee, true);
}
void WorldSession::HandleGuildAssignRankOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildAssignRank(WorldPackets::Guild::GuildAssignMemberRank& packet)
{
ObjectGuid targetGuid;
ObjectGuid setterGuid;
uint32 rankId;
recvPacket >> rankId;
targetGuid[1] = recvPacket.ReadBit();
targetGuid[7] = recvPacket.ReadBit();
setterGuid[4] = recvPacket.ReadBit();
setterGuid[2] = recvPacket.ReadBit();
targetGuid[4] = recvPacket.ReadBit();
targetGuid[5] = recvPacket.ReadBit();
targetGuid[6] = recvPacket.ReadBit();
setterGuid[1] = recvPacket.ReadBit();
setterGuid[7] = recvPacket.ReadBit();
targetGuid[2] = recvPacket.ReadBit();
targetGuid[3] = recvPacket.ReadBit();
targetGuid[0] = recvPacket.ReadBit();
setterGuid[6] = recvPacket.ReadBit();
setterGuid[3] = recvPacket.ReadBit();
setterGuid[0] = recvPacket.ReadBit();
setterGuid[5] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(targetGuid[0]);
recvPacket.ReadByteSeq(setterGuid[1]);
recvPacket.ReadByteSeq(setterGuid[3]);
recvPacket.ReadByteSeq(setterGuid[5]);
recvPacket.ReadByteSeq(targetGuid[7]);
recvPacket.ReadByteSeq(targetGuid[3]);
recvPacket.ReadByteSeq(setterGuid[0]);
recvPacket.ReadByteSeq(targetGuid[1]);
recvPacket.ReadByteSeq(setterGuid[6]);
recvPacket.ReadByteSeq(targetGuid[2]);
recvPacket.ReadByteSeq(targetGuid[5]);
recvPacket.ReadByteSeq(targetGuid[4]);
recvPacket.ReadByteSeq(setterGuid[2]);
recvPacket.ReadByteSeq(setterGuid[4]);
recvPacket.ReadByteSeq(targetGuid[6]);
recvPacket.ReadByteSeq(setterGuid[7]);
ObjectGuid setterGuid = GetPlayer()->GetGUID();
TC_LOG_DEBUG("guild", "CMSG_GUILD_ASSIGN_MEMBER_RANK [%s]: Target: %s Rank: %u, Issuer: %s",
GetPlayerInfo().c_str(), targetGuid.ToString().c_str(), rankId, setterGuid.ToString().c_str());
GetPlayerInfo().c_str(), packet.Member.ToString().c_str(), packet.RankOrder, setterGuid.ToString().c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetMemberRank(this, targetGuid, setterGuid, rankId);
guild->HandleSetMemberRank(this, packet.Member, setterGuid, packet.RankOrder);
}
void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildLeave(WorldPackets::Guild::GuildLeave& /*leave*/)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_LEAVE [%s]", GetPlayerInfo().c_str());
@@ -228,136 +126,76 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
guild->HandleLeaveMember(this);
}
void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildDelete(WorldPackets::Guild::GuildDelete& /*packet*/)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_DISBAND [%s]", GetPlayerInfo().c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_DELETE [%s]", GetPlayerInfo().c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleDisband(this);
guild->HandleDelete(this);
}
void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildUpdateMotdText(WorldPackets::Guild::GuildUpdateMotdText& packet)
{
uint32 motdLength = recvPacket.ReadBits(11);
std::string motd = recvPacket.ReadString(motdLength);
TC_LOG_DEBUG("guild", "CMSG_GUILD_MOTD [%s]: MOTD: %s", GetPlayerInfo().c_str(), motd.c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_UPDATE_MOTD_TEXT [%s]: MOTD: %s", GetPlayerInfo().c_str(), packet.MotdText.c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetMOTD(this, motd);
guild->HandleSetMOTD(this, packet.MotdText);
}
void WorldSession::HandleGuildSetNoteOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildSetMemberNote(WorldPackets::Guild::GuildSetMemberNote& packet)
{
ObjectGuid playerGuid;
playerGuid[1] = recvPacket.ReadBit();
playerGuid[4] = recvPacket.ReadBit();
playerGuid[5] = recvPacket.ReadBit();
playerGuid[3] = recvPacket.ReadBit();
playerGuid[0] = recvPacket.ReadBit();
playerGuid[7] = recvPacket.ReadBit();
bool ispublic = recvPacket.ReadBit(); // 0 == Officer, 1 == Public
playerGuid[6] = recvPacket.ReadBit();
uint32 noteLength = recvPacket.ReadBits(8);
playerGuid[2] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(playerGuid[4]);
recvPacket.ReadByteSeq(playerGuid[5]);
recvPacket.ReadByteSeq(playerGuid[0]);
recvPacket.ReadByteSeq(playerGuid[3]);
recvPacket.ReadByteSeq(playerGuid[1]);
recvPacket.ReadByteSeq(playerGuid[6]);
recvPacket.ReadByteSeq(playerGuid[7]);
std::string note = recvPacket.ReadString(noteLength);
recvPacket.ReadByteSeq(playerGuid[2]);
TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_NOTE [%s]: Target: %s, Note: %s, Public: %u",
GetPlayerInfo().c_str(), playerGuid.ToString().c_str(), note.c_str(), ispublic);
GetPlayerInfo().c_str(), packet.NoteeGUID.ToString().c_str(), packet.Note.c_str(), packet.IsPublic);
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetMemberNote(this, note, playerGuid, ispublic);
guild->HandleSetMemberNote(this, packet.Note, packet.NoteeGUID, packet.IsPublic);
}
void WorldSession::HandleGuildGetRanksOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildGetRanks(WorldPackets::Guild::GuildGetRanks& packet)
{
ObjectGuid guildGuid;
guildGuid[2] = recvPacket.ReadBit();
guildGuid[3] = recvPacket.ReadBit();
guildGuid[0] = recvPacket.ReadBit();
guildGuid[6] = recvPacket.ReadBit();
guildGuid[4] = recvPacket.ReadBit();
guildGuid[7] = recvPacket.ReadBit();
guildGuid[5] = recvPacket.ReadBit();
guildGuid[1] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(guildGuid[3]);
recvPacket.ReadByteSeq(guildGuid[4]);
recvPacket.ReadByteSeq(guildGuid[5]);
recvPacket.ReadByteSeq(guildGuid[7]);
recvPacket.ReadByteSeq(guildGuid[1]);
recvPacket.ReadByteSeq(guildGuid[0]);
recvPacket.ReadByteSeq(guildGuid[6]);
recvPacket.ReadByteSeq(guildGuid[2]);
TC_LOG_DEBUG("guild", "CMSG_GUILD_GET_RANKS [%s]: Guild: %s",
GetPlayerInfo().c_str(), guildGuid.ToString().c_str());
GetPlayerInfo().c_str(), packet.GuildGUID.ToString().c_str());
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
if (Guild* guild = sGuildMgr->GetGuildByGuid(packet.GuildGUID))
if (guild->IsMember(_player->GetGUID()))
guild->SendGuildRankInfo(this);
}
void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildAddRank(WorldPackets::Guild::GuildAddRank& packet)
{
uint32 rankId;
recvPacket >> rankId;
uint32 length = recvPacket.ReadBits(7);
std::string rankName = recvPacket.ReadString(length);
TC_LOG_DEBUG("guild", "CMSG_GUILD_ADD_RANK [%s]: Rank: %s", GetPlayerInfo().c_str(), rankName.c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_ADD_RANK [%s]: Rank: %s", GetPlayerInfo().c_str(), packet.Name.c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleAddNewRank(this, rankName);
guild->HandleAddNewRank(this, packet.Name);
}
void WorldSession::HandleGuildDeleteRankOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildDeleteRank(WorldPackets::Guild::GuildDeleteRank& packet)
{
uint32 rankId;
recvPacket >> rankId;
TC_LOG_DEBUG("guild", "CMSG_GUILD_DELETE_RANK [%s]: Rank: %u", GetPlayerInfo().c_str(), rankId);
TC_LOG_DEBUG("guild", "CMSG_GUILD_DELETE_RANK [%s]: Rank: %u", GetPlayerInfo().c_str(), packet.RankOrder);
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleRemoveRank(this, rankId);
guild->HandleRemoveRank(this, packet.RankOrder);
}
void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildUpdateInfoText(WorldPackets::Guild::GuildUpdateInfoText& packet)
{
uint32 length = recvPacket.ReadBits(12);
std::string info = recvPacket.ReadString(length);
TC_LOG_DEBUG("guild", "CMSG_GUILD_INFO_TEXT [%s]: %s", GetPlayerInfo().c_str(), info.c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_UPDATE_INFO_TEXT [%s]: %s", GetPlayerInfo().c_str(), packet.InfoText.c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetInfo(this, info);
guild->HandleSetInfo(this, packet.InfoText);
}
void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket)
void WorldSession::HandleSaveGuildEmblem(WorldPackets::Guild::SaveGuildEmblem& packet)
{
ObjectGuid vendorGuid;
recvPacket >> vendorGuid;
EmblemInfo emblemInfo;
emblemInfo.ReadPacket(recvPacket);
emblemInfo.ReadPacket(packet);
TC_LOG_DEBUG("guild", "CMSG_SAVE_GUILD_EMBLEM [%s]: Guid: [%s] Style: %d, Color: %d, BorderStyle: %d, BorderColor: %d, BackgroundColor: %d"
, GetPlayerInfo().c_str(), vendorGuid.ToString().c_str(), emblemInfo.GetStyle()
, GetPlayerInfo().c_str(), packet.Vendor.ToString().c_str(), emblemInfo.GetStyle()
, emblemInfo.GetColor(), emblemInfo.GetBorderStyle()
, emblemInfo.GetBorderColor(), emblemInfo.GetBackgroundColor());
if (GetPlayer()->GetNPCIfCanInteractWith(vendorGuid, UNIT_NPC_FLAG_TABARDDESIGNER))
if (GetPlayer()->GetNPCIfCanInteractWith(packet.Vendor, UNIT_NPC_FLAG_TABARDDESIGNER))
{
// Remove fake death
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
@@ -372,7 +210,7 @@ void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket)
Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_INVALIDVENDOR); // "That's not an emblem vendor!"
}
void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */)
void WorldSession::HandleGuildEventLogQuery(WorldPackets::Guild::GuildEventLogQuery& /*packet*/)
{
TC_LOG_DEBUG("guild", "MSG_GUILD_EVENT_LOG_QUERY [%s]", GetPlayerInfo().c_str());
@@ -380,7 +218,7 @@ void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */)
guild->SendEventLog(this);
}
void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPacket& /* recvPacket */)
void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery& /*packet*/)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_MONEY_WITHDRAWN [%s]", GetPlayerInfo().c_str());
@@ -388,25 +226,21 @@ void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPacket& /* recvPacket */)
guild->SendMoneyInfo(this);
}
void WorldSession::HandleGuildPermissions(WorldPacket& /* recvPacket */)
void WorldSession::HandleGuildPermissionsQuery(WorldPackets::Guild::GuildPermissionsQuery& /* packet */)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_PERMISSIONS [%s]", GetPlayerInfo().c_str());
TC_LOG_DEBUG("guild", "CMSG_GUILD_PERMISSIONS_QUERY [%s]", GetPlayerInfo().c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->SendPermissions(this);
}
// Called when clicking on Guild bank gameobject
void WorldSession::HandleGuildBankerActivate(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankActivate(WorldPackets::Guild::GuildBankActivate& packet)
{
ObjectGuid guid;
bool sendAllSlots;
recvPacket >> guid >> sendAllSlots;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_ACTIVATE [%s]: [%s] AllSlots: %u"
, GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.FullUpdate);
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANKER_ACTIVATE [%s]: [%s] AllSlots: %u"
, GetPlayerInfo().c_str(), guid.ToString().c_str(), sendAllSlots);
GameObject const* const go = GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK);
GameObject const* const go = GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK);
if (!go)
return;
@@ -417,423 +251,189 @@ void WorldSession::HandleGuildBankerActivate(WorldPacket& recvPacket)
return;
}
guild->SendBankList(this, 0, true, true);
guild->SendBankList(this, 0, packet.FullUpdate);
}
// Called when opening guild bank tab only (first one)
void WorldSession::HandleGuildBankQueryTab(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTab& packet)
{
ObjectGuid guid;
uint8 tabId;
bool full;
recvPacket >> guid >> tabId >> full;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_QUERY_TAB [%s]: %s, TabId: %u, ShowTabs: %u"
, GetPlayerInfo().c_str(), guid.ToString().c_str(), tabId, full);
, GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.Tab, packet.FullUpdate);
if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
if (Guild* guild = GetPlayer()->GetGuild())
guild->SendBankList(this, tabId, true, false);
guild->SendBankList(this, packet.Tab, packet.FullUpdate);
}
void WorldSession::HandleGuildBankDepositMoney(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet)
{
ObjectGuid guid;
uint64 money;
recvPacket >> guid >> money;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_DEPOSIT_MONEY [%s]: [%s], money: " UI64FMTD,
GetPlayerInfo().c_str(), guid.ToString().c_str(), money);
GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.Money);
if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
if (money && GetPlayer()->HasEnoughMoney(money))
if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
if (packet.Money && GetPlayer()->HasEnoughMoney(packet.Money))
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleMemberDepositMoney(this, money);
guild->HandleMemberDepositMoney(this, packet.Money);
}
void WorldSession::HandleGuildBankWithdrawMoney(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney& packet)
{
ObjectGuid guid;
uint64 money;
recvPacket >> guid >> money;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_WITHDRAW_MONEY [%s]: [%s], money: " UI64FMTD,
GetPlayerInfo().c_str(), guid.ToString().c_str(), money);
GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.Money);
if (money && GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
if (packet.Money && GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleMemberWithdrawMoney(this, money);
guild->HandleMemberWithdrawMoney(this, packet.Money);
}
void WorldSession::HandleGuildBankSwapItems(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankSwapItems(WorldPackets::Guild::GuildBankSwapItems& packet)
{
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_SWAP_ITEMS [%s]", GetPlayerInfo().c_str());
ObjectGuid GoGuid;
recvPacket >> GoGuid;
if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
{
recvPacket.rfinish(); // Prevent additional spam at rejected packet
if (!GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
return;
}
Guild* guild = GetPlayer()->GetGuild();
if (!guild)
{
recvPacket.rfinish(); // Prevent additional spam at rejected packet
return;
}
uint8 bankToBank;
recvPacket >> bankToBank;
uint8 tabId;
uint8 slotId;
uint32 itemEntry;
uint32 splitedAmount = 0;
if (bankToBank)
if (packet.BankOnly)
{
uint8 destTabId;
recvPacket >> destTabId;
uint8 destSlotId;
recvPacket >> destSlotId;
uint32 destItemEntry;
recvPacket >> destItemEntry;
recvPacket >> tabId;
recvPacket >> slotId;
recvPacket >> itemEntry;
recvPacket.read_skip<uint8>(); // Always 0
recvPacket >> splitedAmount;
guild->SwapItems(GetPlayer(), tabId, slotId, destTabId, destSlotId, splitedAmount);
guild->SwapItems(GetPlayer(), packet.BankTab1, packet.BankSlot1, packet.BankTab, packet.BankSlot, packet.StackCount);
}
else
{
uint8 playerBag = NULL_BAG;
uint8 playerSlotId = NULL_SLOT;
uint8 toChar = 1;
recvPacket >> tabId;
recvPacket >> slotId;
recvPacket >> itemEntry;
uint8 autoStore;
recvPacket >> autoStore;
if (autoStore)
{
recvPacket.read_skip<uint32>(); // autoStoreCount
recvPacket.read_skip<uint8>(); // ToChar (?), always and expected to be 1 (autostore only triggered in Bank -> Char)
recvPacket.read_skip<uint32>(); // Always 0
}
else
{
recvPacket >> playerBag;
recvPacket >> playerSlotId;
recvPacket >> toChar;
recvPacket >> splitedAmount;
}
// Player <-> Bank
// Allow to work with inventory only
if (!Player::IsInventoryPos(playerBag, playerSlotId) && !(playerBag == NULL_BAG && playerSlotId == NULL_SLOT))
if (!Player::IsInventoryPos(packet.ContainerSlot, packet.ContainerItemSlot) && !packet.AutoStore)
GetPlayer()->SendEquipError(EQUIP_ERR_INTERNAL_BAG_ERROR, NULL);
else
guild->SwapItemsWithInventory(GetPlayer(), toChar != 0, tabId, slotId, playerBag, playerSlotId, splitedAmount);
guild->SwapItemsWithInventory(GetPlayer(), packet.ToSlot != 0, packet.BankTab, packet.BankSlot, packet.ContainerSlot, packet.ContainerItemSlot, packet.StackCount);
}
}
void WorldSession::HandleGuildBankBuyTab(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankBuyTab(WorldPackets::Guild::GuildBankBuyTab& packet)
{
ObjectGuid guid;
recvPacket >> guid;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_BUY_TAB [%s]: [%s[, TabId: %u", GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.BankTab);
uint8 tabId;
recvPacket >> tabId;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_BUY_TAB [%s]: [%s[, TabId: %u", GetPlayerInfo().c_str(), guid.ToString().c_str(), tabId);
if (!guid || GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
if (!packet.Banker || GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleBuyBankTab(this, tabId);
guild->HandleBuyBankTab(this, packet.BankTab);
}
void WorldSession::HandleGuildBankUpdateTab(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdateTab& packet)
{
ObjectGuid guid;
uint8 tabId;
std::string name, icon;
recvPacket >> guid >> tabId >> name >> icon;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_UPDATE_TAB [%s]: [%s], TabId: %u, Name: %s, Icon: %s"
, GetPlayerInfo().c_str(), guid.ToString().c_str(), tabId, name.c_str(), icon.c_str());
if (!name.empty() && !icon.empty())
if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
, GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.BankTab, packet.Name.c_str(), packet.Icon.c_str());
if (!packet.Name.empty() && !packet.Icon.empty())
if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetBankTabInfo(this, tabId, name, icon);
guild->HandleSetBankTabInfo(this, packet.BankTab, packet.Name, packet.Icon);
}
void WorldSession::HandleGuildBankLogQuery(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery& packet)
{
uint32 tabId;
recvPacket >> tabId;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_LOG_QUERY [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId);
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_LOG_QUERY [%s]: TabId: %u", GetPlayerInfo().c_str(), packet.Tab);
if (Guild* guild = GetPlayer()->GetGuild())
guild->SendBankLog(this, tabId);
guild->SendBankLog(this, packet.Tab);
}
void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recvPacket)
void WorldSession::HandleGuildBankTextQuery(WorldPackets::Guild::GuildBankTextQuery& packet)
{
uint8 tabId;
recvPacket >> tabId;
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_QUERY_TEXT [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId);
TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_QUERY_TEXT [%s]: TabId: %u", GetPlayerInfo().c_str(), packet.Tab);
if (Guild* guild = GetPlayer()->GetGuild())
guild->SendBankTabText(this, tabId);
guild->SendBankTabText(this, packet.Tab);
}
void WorldSession::HandleSetGuildBankTabText(WorldPacket& recvPacket)
void WorldSession::HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet)
{
uint32 tabId;
recvPacket >> tabId;
uint32 textLen = recvPacket.ReadBits(14);
std::string text = recvPacket.ReadString(textLen);
TC_LOG_DEBUG("guild", "CMSG_SET_GUILD_BANK_TEXT [%s]: TabId: %u, Text: %s", GetPlayerInfo().c_str(), tabId, text.c_str());
TC_LOG_DEBUG("guild", "CMSG_SET_GUILD_BANK_TEXT [%s]: TabId: %u, Text: %s", GetPlayerInfo().c_str(), packet.Tab, packet.TabText.c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->SetBankTabText(tabId, text);
guild->SetBankTabText(packet.Tab, packet.TabText);
}
void WorldSession::HandleGuildQueryXPOpcode(WorldPacket& recvPacket)
{
TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUERY_GUILD_XP");
ObjectGuid guildGuid;
guildGuid[2] = recvPacket.ReadBit();
guildGuid[1] = recvPacket.ReadBit();
guildGuid[0] = recvPacket.ReadBit();
guildGuid[5] = recvPacket.ReadBit();
guildGuid[4] = recvPacket.ReadBit();
guildGuid[7] = recvPacket.ReadBit();
guildGuid[6] = recvPacket.ReadBit();
guildGuid[3] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(guildGuid[7]);
recvPacket.ReadByteSeq(guildGuid[2]);
recvPacket.ReadByteSeq(guildGuid[3]);
recvPacket.ReadByteSeq(guildGuid[6]);
recvPacket.ReadByteSeq(guildGuid[1]);
recvPacket.ReadByteSeq(guildGuid[5]);
recvPacket.ReadByteSeq(guildGuid[0]);
recvPacket.ReadByteSeq(guildGuid[4]);
TC_LOG_DEBUG("guild", "CMSG_QUERY_GUILD_XP [%s]: Guild: %s", GetPlayerInfo().c_str(), guildGuid.ToString().c_str());
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
if (guild->IsMember(_player->GetGUID()))
guild->SendGuildXP(this);
}
void WorldSession::HandleGuildSetRankPermissionsOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildSetRankPermissions(WorldPackets::Guild::GuildSetRankPermissions& packet)
{
Guild* guild = GetPlayer()->GetGuild();
if (!guild)
{
recvPacket.rfinish();
return;
}
uint32 oldRankId;
uint32 newRankId;
uint32 oldRights;
uint32 newRights;
uint32 moneyPerDay;
recvPacket >> oldRankId;
recvPacket >> oldRights;
recvPacket >> newRights;
GuildBankRightsAndSlotsVec rightsAndSlots(GUILD_BANK_MAX_TABS);
for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId)
{
uint32 bankRights;
uint32 slots;
rightsAndSlots[tabId] = GuildBankRightsAndSlots(tabId, uint8(packet.TabFlags[tabId]), uint32(packet.TabWithdrawItemLimit[tabId]));
recvPacket >> bankRights;
recvPacket >> slots;
TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_RANK_PERMISSIONS [%s]: Rank: %s (%u)", GetPlayerInfo().c_str(), packet.RankName.c_str(), packet.RankOrder);
rightsAndSlots[tabId] = GuildBankRightsAndSlots(tabId, uint8(bankRights), slots);
}
recvPacket >> moneyPerDay;
recvPacket >> newRankId;
uint32 nameLength = recvPacket.ReadBits(7);
std::string rankName = recvPacket.ReadString(nameLength);
TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_RANK_PERMISSIONS [%s]: Rank: %s (%u)", GetPlayerInfo().c_str(), rankName.c_str(), newRankId);
guild->HandleSetRankInfo(this, newRankId, rankName, newRights, moneyPerDay, rightsAndSlots);
guild->HandleSetRankInfo(this, packet.RankOrder, packet.RankName, packet.Flags, packet.WithdrawGoldLimit, rightsAndSlots);
}
void WorldSession::HandleGuildRequestPartyState(WorldPacket& recvPacket)
void WorldSession::HandleGuildRequestPartyState(WorldPackets::Guild::RequestGuildPartyState& packet)
{
TC_LOG_DEBUG("network", "WORLD: Received CMSG_GUILD_REQUEST_PARTY_STATE");
ObjectGuid guildGuid;
guildGuid[0] = recvPacket.ReadBit();
guildGuid[6] = recvPacket.ReadBit();
guildGuid[7] = recvPacket.ReadBit();
guildGuid[3] = recvPacket.ReadBit();
guildGuid[5] = recvPacket.ReadBit();
guildGuid[1] = recvPacket.ReadBit();
guildGuid[2] = recvPacket.ReadBit();
guildGuid[4] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(guildGuid[6]);
recvPacket.ReadByteSeq(guildGuid[3]);
recvPacket.ReadByteSeq(guildGuid[2]);
recvPacket.ReadByteSeq(guildGuid[1]);
recvPacket.ReadByteSeq(guildGuid[5]);
recvPacket.ReadByteSeq(guildGuid[0]);
recvPacket.ReadByteSeq(guildGuid[7]);
recvPacket.ReadByteSeq(guildGuid[4]);
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
if (Guild* guild = sGuildMgr->GetGuildByGuid(packet.GuildGUID))
guild->HandleGuildPartyRequest(this);
}
void WorldSession::HandleGuildRequestChallengeUpdate(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildChallengeUpdateRequest(WorldPackets::Guild::GuildChallengeUpdateRequest& /*packet*/)
{
if (Guild* guild = _player->GetGuild())
guild->HandleGuildRequestChallengeUpdate(this);
}
void WorldSession::HandleGuildRequestMaxDailyXP(WorldPacket& recvPacket)
void WorldSession::HandleDeclineGuildInvites(WorldPackets::Guild::DeclineGuildInvites& packet)
{
ObjectGuid guid;
guid[0] = recvPacket.ReadBit();
guid[3] = recvPacket.ReadBit();
guid[5] = recvPacket.ReadBit();
guid[1] = recvPacket.ReadBit();
guid[4] = recvPacket.ReadBit();
guid[6] = recvPacket.ReadBit();
guid[7] = recvPacket.ReadBit();
guid[2] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(guid[7]);
recvPacket.ReadByteSeq(guid[4]);
recvPacket.ReadByteSeq(guid[3]);
recvPacket.ReadByteSeq(guid[5]);
recvPacket.ReadByteSeq(guid[1]);
recvPacket.ReadByteSeq(guid[2]);
recvPacket.ReadByteSeq(guid[6]);
recvPacket.ReadByteSeq(guid[0]);
if (Guild* guild = sGuildMgr->GetGuildByGuid(guid))
{
if (guild->IsMember(_player->GetGUID()))
{
WorldPacket data(SMSG_GUILD_MAX_DAILY_XP, 8);
data << uint64(sWorld->getIntConfig(CONFIG_GUILD_DAILY_XP_CAP));
SendPacket(&data);
}
}
GetPlayer()->ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_AUTO_DECLINE_GUILD, packet.Allow);
}
void WorldSession::HandleAutoDeclineGuildInvites(WorldPacket& recvPacket)
void WorldSession::HandleRequestGuildRewardsList(WorldPackets::Guild::RequestGuildRewardsList& packet)
{
uint8 enable;
recvPacket >> enable;
GetPlayer()->ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_AUTO_DECLINE_GUILD, enable != 0);
}
void WorldSession::HandleGuildRewardsQueryOpcode(WorldPacket& recvPacket)
{
recvPacket.read_skip<uint32>(); // Unk
if (sGuildMgr->GetGuildById(_player->GetGuildId()))
{
std::vector<GuildReward> const& rewards = sGuildMgr->GetGuildRewards();
WorldPacket data(SMSG_GUILD_REWARDS_LIST, 3 + rewards.size() * (4 + 4 + 4 + 8 + 4 + 4));
data.WriteBits(rewards.size(), 21);
data.FlushBits();
WorldPackets::Guild::GuildRewardList rewardList;
rewardList.Version = uint32(time(NULL));
rewardList.RewardItems.reserve(rewards.size());
for (uint32 i = 0; i < rewards.size(); i++)
{
data << uint32(rewards[i].Standing);
data << int32(rewards[i].Racemask);
data << uint32(rewards[i].Entry);
data << uint64(rewards[i].Price);
data << uint32(0); // Unused
data << uint32(rewards[i].AchievementId);
WorldPackets::Guild::GuildRewardItem rewardItem;
rewardItem.ItemID = rewards[i].ItemID;
rewardItem.RaceMask = rewards[i].RaceMask;
rewardItem.MinGuildLevel = 0;
rewardItem.MinGuildRep = rewards[i].MinGuildRep;
rewardItem.AchievementsRequired = rewards[i].AchievementsRequired;
rewardItem.Cost = rewards[i].Cost;
rewardList.RewardItems.push_back(rewardItem);
}
data << uint32(time(NULL));
SendPacket(&data);
SendPacket(rewardList.Write());
}
}
void WorldSession::HandleGuildQueryNewsOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildQueryNews(WorldPackets::Guild::GuildQueryNews& newsQuery)
{
recvPacket.read_skip<uint32>();
TC_LOG_DEBUG("guild", "CMSG_GUILD_QUERY_NEWS [%s]", GetPlayerInfo().c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->SendNewsUpdate(this);
if (guild->GetGUID() == newsQuery.GuildGUID)
guild->SendNewsUpdate(this);
}
void WorldSession::HandleGuildNewsUpdateStickyOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildNewsUpdateSticky(WorldPackets::Guild::GuildNewsUpdateSticky& packet)
{
uint32 newsId;
bool sticky;
ObjectGuid guid;
recvPacket >> newsId;
guid[2] = recvPacket.ReadBit();
guid[4] = recvPacket.ReadBit();
guid[3] = recvPacket.ReadBit();
guid[0] = recvPacket.ReadBit();
sticky = recvPacket.ReadBit();
guid[6] = recvPacket.ReadBit();
guid[7] = recvPacket.ReadBit();
guid[1] = recvPacket.ReadBit();
guid[5] = recvPacket.ReadBit();
recvPacket.ReadByteSeq(guid[6]);
recvPacket.ReadByteSeq(guid[2]);
recvPacket.ReadByteSeq(guid[1]);
recvPacket.ReadByteSeq(guid[0]);
recvPacket.ReadByteSeq(guid[5]);
recvPacket.ReadByteSeq(guid[3]);
recvPacket.ReadByteSeq(guid[7]);
recvPacket.ReadByteSeq(guid[4]);
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleNewsSetSticky(this, newsId, sticky);
guild->HandleNewsSetSticky(this, packet.NewsID, packet.Sticky);
}
void WorldSession::HandleGuildSetGuildMaster(WorldPacket& recvPacket)
void WorldSession::HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster& packet)
{
uint8 nameLength = recvPacket.ReadBits(7);
// This is related to guild master inactivity.
/*bool isDethrone = */recvPacket.ReadBit();
std::string playerName = recvPacket.ReadString(nameLength);
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetNewGuildMaster(this, playerName);
guild->HandleSetNewGuildMaster(this, packet.NewMasterName);
}
void WorldSession::HandleGuildSetAchievementTracking(WorldPacket& recvPacket)
+1 -1
View File
@@ -578,7 +578,7 @@ void WorldSession::HandleGetMailList(WorldPackets::Mail::MailGetList& packet)
response.TotalNumRecords = player->GetMailSize();
time_t cur_time = time(nullptr);
for (Mail* m : player->GetMails())
{
// skip deleted or not delivered (deliver delay not expired) mails
+7 -10
View File
@@ -50,15 +50,12 @@ enum StableResultCode
STABLE_ERR_STABLE = 0x0C, // "Internal pet error"
};
void WorldSession::HandleTabardVendorActivateOpcode(WorldPacket& recvData)
void WorldSession::HandleTabardVendorActivateOpcode(WorldPackets::NPC::Hello& packet)
{
ObjectGuid guid;
recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TABARDDESIGNER);
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(packet.Unit, UNIT_NPC_FLAG_TABARDDESIGNER);
if (!unit)
{
TC_LOG_DEBUG("network", "WORLD: HandleTabardVendorActivateOpcode - %s not found or you can not interact with him.", guid.ToString().c_str());
TC_LOG_DEBUG("network", "WORLD: HandleTabardVendorActivateOpcode - %s not found or you can not interact with him.", packet.Unit.ToString().c_str());
return;
}
@@ -66,14 +63,14 @@ void WorldSession::HandleTabardVendorActivateOpcode(WorldPacket& recvData)
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
SendTabardVendorActivate(guid);
SendTabardVendorActivate(packet.Unit);
}
void WorldSession::SendTabardVendorActivate(ObjectGuid guid)
{
WorldPacket data(SMSG_TABARD_VENDOR_ACTIVATE, 18);
data << guid;
SendPacket(&data);
WorldPackets::NPC::PlayerTabardVendorActivate packet;
packet.Vendor = guid;
SendPacket(packet.Write());
}
void WorldSession::HandleBankerActivateOpcode(WorldPackets::NPC::Hello& packet)
File diff suppressed because it is too large Load Diff
@@ -58,3 +58,755 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write()
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildRoster::Write()
{
_worldPacket << NumAccounts;
_worldPacket.AppendPackedTime(CreateDate);
_worldPacket << GuildFlags;
_worldPacket << uint32(MemberData.size());
for (GuildRosterMemberData const& member : MemberData)
_worldPacket << member;
_worldPacket.ResetBitPos();
_worldPacket.WriteBits(WelcomeText.length(), 10);
_worldPacket.WriteBits(InfoText.length(), 10);
_worldPacket.FlushBits();
_worldPacket.WriteString(WelcomeText);
_worldPacket.WriteString(InfoText);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildRosterUpdate::Write()
{
_worldPacket << uint32(MemberData.size());
for (GuildRosterMemberData const& member : MemberData)
_worldPacket << member;
return &_worldPacket;
}
void WorldPackets::Guild::GuildUpdateMotdText::Read()
{
uint32 textLen = _worldPacket.ReadBits(10);
MotdText = _worldPacket.ReadString(textLen);
}
WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write()
{
_worldPacket << Result;
_worldPacket << Command;
_worldPacket.WriteBits(Name.length(), 8);
_worldPacket.FlushBits();
_worldPacket.WriteString(Name);
return &_worldPacket;
}
void WorldPackets::Guild::DeclineGuildInvites::Read()
{
Allow = _worldPacket.ReadBit();
}
void WorldPackets::Guild::GuildInviteByName::Read()
{
uint32 nameLen = _worldPacket.ReadBits(9);
Name = _worldPacket.ReadString(nameLen);
}
WorldPacket const* WorldPackets::Guild::GuildInvite::Write()
{
_worldPacket.WriteBits(InviterName.length(), 6);
_worldPacket.WriteBits(GuildName.length(), 7);
_worldPacket.WriteBits(OldGuildName.length(), 7);
_worldPacket.FlushBits();
_worldPacket << InviterVirtualRealmAddress;
_worldPacket << GuildVirtualRealmAddress;
_worldPacket << GuildGUID;
_worldPacket << OldGuildVirtualRealmAddress;
_worldPacket << OldGuildGUID;
_worldPacket << EmblemStyle;
_worldPacket << EmblemColor;
_worldPacket << BorderStyle;
_worldPacket << BorderColor;
_worldPacket << Background;
_worldPacket << Level;
_worldPacket.WriteString(InviterName);
_worldPacket.WriteString(GuildName);
_worldPacket.WriteString(OldGuildName);
return &_worldPacket;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfessionData const& rosterProfessionData)
{
data << rosterProfessionData.DbID;
data << rosterProfessionData.Rank;
data << rosterProfessionData.Step;
return data;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberData const& rosterMemberData)
{
data << rosterMemberData.Guid;
data << rosterMemberData.RankID;
data << rosterMemberData.AreaID;
data << rosterMemberData.PersonalAchievementPoints;
data << rosterMemberData.GuildReputation;
data << rosterMemberData.LastSave;
for (uint8 i = 0; i < 2; i++)
data << rosterMemberData.Profession[i];
data << rosterMemberData.VirtualRealmAddress;
data << rosterMemberData.Status;
data << rosterMemberData.Level;
data << rosterMemberData.ClassID;
data << rosterMemberData.Gender;
data.WriteBits(rosterMemberData.Name.length(), 6);
data.WriteBits(rosterMemberData.Note.length(), 8);
data.WriteBits(rosterMemberData.OfficerNote.length(), 8);
data.WriteBit(rosterMemberData.Authenticated);
data.WriteBit(rosterMemberData.SorEligible);
data.FlushBits();
data.WriteString(rosterMemberData.Name);
data.WriteString(rosterMemberData.Note);
data.WriteString(rosterMemberData.OfficerNote);
return data;
}
WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write()
{
_worldPacket << Guid;
_worldPacket << VirtualRealmAddress;
_worldPacket.WriteBits(Name.length(), 6);
_worldPacket.WriteBit(LoggedOn);
_worldPacket.WriteBit(Mobile);
_worldPacket.FlushBits();
_worldPacket.WriteString(Name);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventMotd::Write()
{
_worldPacket.WriteBits(MotdText.length(), 10);
_worldPacket.FlushBits();
_worldPacket.WriteString(MotdText);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventPlayerJoined::Write()
{
_worldPacket << Guid;
_worldPacket << VirtualRealmAddress;
_worldPacket.WriteBits(Name.length(), 6);
_worldPacket.FlushBits();
_worldPacket.WriteString(Name);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventRankChanged::Write()
{
_worldPacket << RankID;
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventBankMoneyChanged::Write()
{
_worldPacket << Money;
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventLogQueryResults::Write()
{
_worldPacket.reserve(4 + Entry.size() * 38);
_worldPacket << uint32(Entry.size());
for (GuildEventEntry const& entry : Entry)
{
_worldPacket << entry.PlayerGUID;
_worldPacket << entry.OtherGUID;
_worldPacket << entry.TransactionType;
_worldPacket << entry.RankID;
_worldPacket << entry.TransactionDate;
}
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write()
{
_worldPacket.WriteBit(Removed);
_worldPacket.WriteBits(LeaverName.length(), 6);
_worldPacket.FlushBits();
if (Removed)
{
_worldPacket.WriteBits(RemoverName.length(), 6);
_worldPacket.FlushBits();
_worldPacket << RemoverGUID;
_worldPacket << RemoverVirtualRealmAddress;
_worldPacket.WriteString(RemoverName);
}
_worldPacket << LeaverGUID;
_worldPacket << LeaverVirtualRealmAddress;
_worldPacket.WriteString(LeaverName);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildPermissionsQueryResults::Write()
{
_worldPacket << RankID;
_worldPacket << WithdrawGoldLimit;
_worldPacket << Flags;
_worldPacket << NumTabs;
_worldPacket << uint32(Tab.size());
for (GuildRankTabPermissions const& tab : Tab)
{
_worldPacket << tab.Flags;
_worldPacket << tab.WithdrawItemLimit;
}
return &_worldPacket;
}
void WorldPackets::Guild::GuildSetRankPermissions::Read()
{
_worldPacket >> RankID;
_worldPacket >> RankOrder;
_worldPacket >> Flags;
_worldPacket >> OldFlags;
_worldPacket >> WithdrawGoldLimit;
for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++)
{
_worldPacket >> TabFlags[i];
_worldPacket >> TabWithdrawItemLimit[i];
}
_worldPacket.ResetBitPos();
uint32 rankNameLen = _worldPacket.ReadBits(7);
RankName = _worldPacket.ReadString(rankNameLen);
}
WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write()
{
_worldPacket.WriteBit(SelfPromoted);
_worldPacket.WriteBits(NewLeaderName.length(), 6);
_worldPacket.WriteBits(OldLeaderName.length(), 6);
_worldPacket.FlushBits();
_worldPacket << OldLeaderGUID;
_worldPacket << OldLeaderVirtualRealmAddress;
_worldPacket << NewLeaderGUID;
_worldPacket << NewLeaderVirtualRealmAddress;
_worldPacket.WriteString(NewLeaderName);
_worldPacket.WriteString(OldLeaderName);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventTabModified::Write()
{
_worldPacket << Tab;
_worldPacket.WriteBits(Name.length(), 7);
_worldPacket.WriteBits(Icon.length(), 9);
_worldPacket.FlushBits();
_worldPacket.WriteString(Name);
_worldPacket.WriteString(Icon);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildEventTabTextChanged::Write()
{
_worldPacket << Tab;
return &_worldPacket;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRankData const& rankData)
{
data << rankData.RankID;
data << rankData.RankOrder;
data << rankData.Flags;
data << rankData.WithdrawGoldLimit;
for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++)
{
data << rankData.TabFlags[i];
data << rankData.TabWithdrawItemLimit[i];
}
data.WriteBits(rankData.RankName.length(), 7);
data.FlushBits();
data.WriteString(rankData.RankName);
return data;
}
void WorldPackets::Guild::GuildAddRank::Read()
{
_worldPacket.WriteBits(Name.length(), 7);
_worldPacket.FlushBits();
_worldPacket >> RankOrder;
_worldPacket.WriteString(Name);
}
void WorldPackets::Guild::GuildAssignMemberRank::Read()
{
_worldPacket >> Member;
_worldPacket >> RankOrder;
}
void WorldPackets::Guild::GuildDeleteRank::Read()
{
_worldPacket >> RankOrder;
}
void WorldPackets::Guild::GuildGetRanks::Read()
{
_worldPacket >> GuildGUID;
}
WorldPacket const* WorldPackets::Guild::GuildRanks::Write()
{
_worldPacket << uint32(Ranks.size());
for (GuildRankData const& rank : Ranks)
_worldPacket << rank;
return &_worldPacket;
}
WorldPacket const* WorldPackets::Guild::GuildSendRankChange::Write()
{
_worldPacket << Officer;
_worldPacket << Other;
_worldPacket << RankID;
_worldPacket.WriteBit(Promote);
_worldPacket.FlushBits();
return &_worldPacket;
}
void WorldPackets::Guild::GuildShiftRank::Read()
{
_worldPacket >> RankOrder;
ShiftUp = _worldPacket.ReadBit();
}
void WorldPackets::Guild::GuildUpdateInfoText::Read()
{
uint32 textLen = _worldPacket.ReadBits(11);
InfoText = _worldPacket.ReadString(textLen);
}
void WorldPackets::Guild::GuildSetMemberNote::Read()
{
_worldPacket >> NoteeGUID;
uint32 noteLen = _worldPacket.ReadBits(8);
IsPublic = _worldPacket.ReadBit();
Note = _worldPacket.ReadString(noteLen);
}
WorldPacket const* WorldPackets::Guild::GuildMemberUpdateNote::Write()
{
_worldPacket.reserve(16 + 2 + Note.size());
_worldPacket << Member;
_worldPacket.WriteBits(Note.length(), 8);
_worldPacket.WriteBit(IsPublic);
_worldPacket.FlushBits();
_worldPacket.WriteString(Note);
return &_worldPacket;
}
void WorldPackets::Guild::GuildDemoteMember::Read()
{
_worldPacket >> Demotee;
}
void WorldPackets::Guild::GuildPromoteMember::Read()
{
_worldPacket >> Promotee;
}
void WorldPackets::Guild::GuildOfficerRemoveMember::Read()
{
_worldPacket >> Removee;
}
void WorldPackets::Guild::GuildChangeNameRequest::Read()
{
uint32 nameLen = _worldPacket.ReadBits(7);
NewName = _worldPacket.ReadString(nameLen);
}
WorldPacket const* WorldPackets::Guild::GuildFlaggedForRename::Write()
{
_worldPacket.WriteBit(FlagSet);
return &_worldPacket;
}
void WorldPackets::Guild::RequestGuildPartyState::Read()
{
_worldPacket >> GuildGUID;
}
WorldPacket const* WorldPackets::Guild::GuildPartyState::Write()
{
_worldPacket.WriteBit(InGuildParty);
_worldPacket.FlushBits();
_worldPacket << NumMembers;
_worldPacket << NumRequired;
_worldPacket << GuildXPEarnedMult;
return &_worldPacket;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem)
{
data << rewardItem.ItemID;
data << uint32(rewardItem.AchievementsRequired.size());
data << rewardItem.RaceMask;
data << rewardItem.MinGuildLevel;
data << rewardItem.MinGuildRep;
data << rewardItem.Cost;
for (uint8 i = 0; i < rewardItem.AchievementsRequired.size(); i++)
data << rewardItem.AchievementsRequired[i];
return data;
}
void WorldPackets::Guild::RequestGuildRewardsList::Read()
{
_worldPacket >> CurrentVersion;
}
WorldPacket const* WorldPackets::Guild::GuildRewardList::Write()
{
_worldPacket << Version;
_worldPacket << uint32(RewardItems.size());
for (GuildRewardItem const& item : RewardItems)
_worldPacket << item;
return &_worldPacket;
}
void WorldPackets::Guild::GuildBankActivate::Read()
{
_worldPacket >> Banker;
FullUpdate = _worldPacket.ReadBit();
}
void WorldPackets::Guild::GuildBankBuyTab::Read()
{
_worldPacket >> Banker;
_worldPacket >> BankTab;
}
void WorldPackets::Guild::GuildBankUpdateTab::Read()
{
_worldPacket >> Banker;
_worldPacket >> BankTab;
_worldPacket.ResetBitPos();
uint32 nameLen = _worldPacket.ReadBits(7);
uint32 iconLen = _worldPacket.ReadBits(9);
Name = _worldPacket.ReadString(nameLen);
Icon = _worldPacket.ReadString(iconLen);
}
void WorldPackets::Guild::GuildBankDepositMoney::Read()
{
_worldPacket >> Banker;
_worldPacket >> Money;
}
void WorldPackets::Guild::GuildBankQueryTab::Read()
{
_worldPacket >> Banker;
_worldPacket >> Tab;
FullUpdate = _worldPacket.ReadBit();
}
WorldPacket const* WorldPackets::Guild::GuildBankRemainingWithdrawMoney::Write()
{
_worldPacket << RemainingWithdrawMoney;
return &_worldPacket;
}
void WorldPackets::Guild::GuildBankWithdrawMoney::Read()
{
_worldPacket >> Banker;
_worldPacket >> Money;
}
WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write()
{
_worldPacket << Money;
_worldPacket << Tab;
_worldPacket << WithdrawalsRemaining;
_worldPacket << uint32(TabInfo.size());
_worldPacket << uint32(ItemInfo.size());
for (GuildBankTabInfo const& tab : TabInfo)
{
_worldPacket << tab.TabIndex;
_worldPacket.WriteBits(tab.Name.length(), 7);
_worldPacket.WriteBits(tab.Icon.length(), 9);
_worldPacket.FlushBits();
_worldPacket.WriteString(tab.Name);
_worldPacket.WriteString(tab.Icon);
}
for (GuildBankItemInfo const& item : ItemInfo)
{
_worldPacket << item.Slot;
_worldPacket << item.Item;
_worldPacket << item.Count;
_worldPacket << item.EnchantmentID;
_worldPacket << item.Charges;
_worldPacket << item.OnUseEnchantmentID;
_worldPacket << uint32(item.SocketEnchant.size());
_worldPacket << item.Flags;
for (GuildBankItemInfo::GuildBankSocketEnchant const& socketEnchant : item.SocketEnchant)
{
_worldPacket << socketEnchant.SocketIndex;
_worldPacket << socketEnchant.SocketEnchantID;
}
_worldPacket.WriteBit(item.Locked);
_worldPacket.FlushBits();
}
_worldPacket.WriteBit(FullUpdate);
_worldPacket.FlushBits();
return &_worldPacket;
}
void WorldPackets::Guild::GuildBankSwapItems::Read()
{
_worldPacket >> Banker;
_worldPacket >> BankTab;
_worldPacket >> BankSlot;
_worldPacket >> ItemID;
_worldPacket >> BankTab1;
_worldPacket >> BankSlot1;
_worldPacket >> ItemID1;
_worldPacket >> BankItemCount;
_worldPacket >> ContainerSlot;
_worldPacket >> ContainerItemSlot;
_worldPacket >> ToSlot;
_worldPacket >> StackCount;
_worldPacket.ResetBitPos();
BankOnly = _worldPacket.ReadBit();
AutoStore = _worldPacket.ReadBit();
}
void WorldPackets::Guild::GuildBankLogQuery::Read()
{
_worldPacket >> Tab;
}
WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write()
{
_worldPacket << Tab;
_worldPacket << uint32(Entry.size());
for (GuildBankLogEntry const& logEntry : Entry)
{
_worldPacket << logEntry.PlayerGUID;
_worldPacket << logEntry.TimeOffset;
_worldPacket << logEntry.EntryType;
_worldPacket.WriteBit(logEntry.Money.HasValue);
_worldPacket.WriteBit(logEntry.ItemID.HasValue);
_worldPacket.WriteBit(logEntry.Count.HasValue);
_worldPacket.WriteBit(logEntry.OtherTab.HasValue);
_worldPacket.FlushBits();
if (logEntry.Money.HasValue)
_worldPacket << logEntry.Money.Value;
if (logEntry.ItemID.HasValue)
_worldPacket << logEntry.ItemID.Value;
if (logEntry.Count.HasValue)
_worldPacket << logEntry.Count.Value;
if (logEntry.OtherTab.HasValue)
_worldPacket << logEntry.OtherTab.Value;
}
_worldPacket.WriteBit(WeeklyBonusMoney.HasValue);
_worldPacket.FlushBits();
if (WeeklyBonusMoney.HasValue)
_worldPacket << WeeklyBonusMoney.Value;
return &_worldPacket;
}
void WorldPackets::Guild::GuildBankTextQuery::Read()
{
_worldPacket >> Tab;
}
WorldPacket const* WorldPackets::Guild::GuildBankTextQueryResult::Write()
{
_worldPacket << Tab;
_worldPacket.WriteBits(Text.length(), 14);
_worldPacket.FlushBits();
_worldPacket.WriteString(Text);
return &_worldPacket;
}
void WorldPackets::Guild::GuildBankSetTabText::Read()
{
_worldPacket >> Tab;
_worldPacket.ResetBitPos();
uint32 tabTextLen = _worldPacket.ReadBits(14);
TabText = _worldPacket.ReadString(tabTextLen);
}
void WorldPackets::Guild::GuildQueryNews::Read()
{
_worldPacket >> GuildGUID;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildNewsEvent const& newsEvent)
{
data << newsEvent.Id;
data.AppendPackedTime(newsEvent.CompletedDate);
data << newsEvent.Type;
data << newsEvent.Flags;
for (uint8 i = 0; i < 2; i++)
data << newsEvent.Data[i];
data << newsEvent.MemberGuid;
data << uint32(newsEvent.MemberList.size());
for (ObjectGuid memberGuid : newsEvent.MemberList)
data << memberGuid;
data.WriteBit(newsEvent.Item.HasValue);
data.FlushBits();
if (newsEvent.Item.HasValue)
data << newsEvent.Item.Value; // WorldPackets::Item::ItemInstance
return data;
}
WorldPacket const* WorldPackets::Guild::GuildNews::Write()
{
_worldPacket << NewsEvents;
return &_worldPacket;
}
void WorldPackets::Guild::GuildNewsUpdateSticky::Read()
{
_worldPacket >> GuildGUID;
_worldPacket >> NewsID;
NewsID = _worldPacket.ReadBit();
}
void WorldPackets::Guild::GuildSetGuildMaster::Read()
{
uint32 nameLen = _worldPacket.ReadBits(9);
NewMasterName = _worldPacket.ReadString(nameLen);
}
WorldPacket const* WorldPackets::Guild::GuildChallengeUpdate::Write()
{
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
_worldPacket << int32(CurrentCount[i]);
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
_worldPacket << int32(MaxCount[i]);
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
_worldPacket << int32(MaxLevelGold[i]);
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
_worldPacket << int32(Gold[i]);
return &_worldPacket;
}
void WorldPackets::Guild::SaveGuildEmblem::Read()
{
_worldPacket >> Vendor;
_worldPacket >> BStyle;
_worldPacket >> EStyle;
_worldPacket >> BColor;
_worldPacket >> EColor;
_worldPacket >> Bg;
}
WorldPacket const* WorldPackets::Guild::PlayerSaveGuildEmblem::Write()
{
_worldPacket << int32(Error);
return &_worldPacket;
}
@@ -20,6 +20,8 @@
#include "Packet.h"
#include "ObjectGuid.h"
#include "Guild.h"
#include "ItemPackets.h"
namespace WorldPackets
{
@@ -78,7 +80,938 @@ namespace WorldPackets
ObjectGuid GuildGuid;
Optional<GuildInfo> Info;
};
class GuildGetRoster final : public ClientPacket
{
public:
GuildGetRoster(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_GET_ROSTER, std::move(packet)) { }
void Read() override { }
};
struct GuildRosterProfessionData
{
int32 DbID = 0;
int32 Rank = 0;
int32 Step = 0;
};
struct GuildRosterMemberData
{
ObjectGuid Guid;
int64 WeeklyXP = 0;
int64 TotalXP = 0;
int32 RankID = 0;
int32 AreaID = 0;
int32 PersonalAchievementPoints = 0;
int32 GuildReputation = 0;
int32 GuildRepToCap = 0;
float LastSave = 0.0f;
std::string Name;
uint32 VirtualRealmAddress = 0;
std::string Note;
std::string OfficerNote;
uint8 Status = 0;
uint8 Level = 0;
uint8 ClassID = 0;
uint8 Gender = 0;
bool Authenticated = false;
bool SorEligible = false;
GuildRosterProfessionData Profession[2];
};
class GuildRoster final : public ServerPacket
{
public:
GuildRoster() : ServerPacket(SMSG_GUILD_ROSTER, 4 + 4 + 4 + 4) { }
WorldPacket const* Write() override;
std::vector<GuildRosterMemberData> MemberData;
std::string WelcomeText;
std::string InfoText;
uint32 CreateDate = 0;
int32 NumAccounts = 0;
int32 GuildFlags = 0;
};
class GuildRosterUpdate final : public ServerPacket
{
public:
GuildRosterUpdate() : ServerPacket(SMSG_GUILD_ROSTER_UPDATE, 4) { }
WorldPacket const* Write() override;
std::vector<GuildRosterMemberData> MemberData;
};
class GuildUpdateMotdText final : public ClientPacket
{
public:
GuildUpdateMotdText(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_UPDATE_MOTD_TEXT, std::move(packet)) { }
void Read() override;
std::string MotdText;
};
class GuildCommandResult final : public ServerPacket
{
public:
GuildCommandResult() : ServerPacket(SMSG_GUILD_COMMAND_RESULT, 9) { }
WorldPacket const* Write() override;
std::string Name;
int32 Result = 0;
int32 Command = 0;
};
class AcceptGuildInvite final : public ClientPacket
{
public:
AcceptGuildInvite(WorldPacket&& packet) : ClientPacket(CMSG_ACCEPT_GUILD_INVITE, std::move(packet)) { }
void Read() override { }
};
class GuildDeclineInvitation final : public ClientPacket
{
public:
GuildDeclineInvitation(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_DECLINE_INVITATION, std::move(packet)) { }
void Read() override { }
};
class DeclineGuildInvites final : public ClientPacket
{
public:
DeclineGuildInvites(WorldPacket&& packet) : ClientPacket(CMSG_DECLINE_GUILD_INVITES, std::move(packet)) { }
void Read() override;
bool Allow = false;
};
class GuildInviteByName final : public ClientPacket
{
public:
GuildInviteByName(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_INVITE_BY_NAME, std::move(packet)) { }
void Read() override;
std::string Name;
};
class GuildInvite final : public ServerPacket
{
public:
GuildInvite() : ServerPacket(SMSG_GUILD_INVITE, 68) { }
WorldPacket const* Write() override;
ObjectGuid GuildGUID;
ObjectGuid OldGuildGUID;
int32 Level = 0;
uint32 EmblemColor = 0;
uint32 EmblemStyle = 0;
uint32 BorderStyle = 0;
uint32 BorderColor = 0;
uint32 Background = 0;
uint32 GuildVirtualRealmAddress = 0;
uint32 OldGuildVirtualRealmAddress = 0;
uint32 InviterVirtualRealmAddress = 0;
std::string InviterName;
std::string GuildName;
std::string OldGuildName;
};
class GuildEventPresenceChange final : public ServerPacket
{
public:
GuildEventPresenceChange() : ServerPacket(SMSG_GUILD_EVENT_PRESENCE_CHANGE, 16 + 4 + 1 + 1) { }
WorldPacket const* Write() override;
ObjectGuid Guid;
uint32 VirtualRealmAddress = 0;
std::string Name;
bool Mobile = false;
bool LoggedOn = false;
};
class GuildEventMotd final : public ServerPacket
{
public:
GuildEventMotd() : ServerPacket(SMSG_GUILD_EVENT_MOTD, 1) { }
WorldPacket const* Write() override;
std::string MotdText;
};
class GuildEventPlayerJoined final : public ServerPacket
{
public:
GuildEventPlayerJoined() : ServerPacket(SMSG_GUILD_EVENT_PLAYER_JOINED, 21) { }
WorldPacket const* Write() override;
ObjectGuid Guid;
std::string Name;
uint32 VirtualRealmAddress = 0;
};
class GuildEventRankChanged final : public ServerPacket
{
public:
GuildEventRankChanged() : ServerPacket(SMSG_GUILD_EVENT_RANK_CHANGED, 4) { }
WorldPacket const* Write() override;
int32 RankID = 0;
};
class GuildEventRanksUpdated final : public ServerPacket
{
public:
GuildEventRanksUpdated() : ServerPacket(SMSG_GUILD_EVENT_RANKS_UPDATED, 0) { }
WorldPacket const* Write() override { return &_worldPacket; }
};
class GuildEventBankMoneyChanged final : public ServerPacket
{
public:
GuildEventBankMoneyChanged() : ServerPacket(SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, 8) { }
WorldPacket const* Write() override;
uint64 Money = 0;
};
class GuildEventDisbanded final : public ServerPacket
{
public:
GuildEventDisbanded() : ServerPacket(SMSG_GUILD_EVENT_DISBANDED, 0) { }
WorldPacket const* Write() override { return &_worldPacket; }
};
struct GuildEventEntry
{
ObjectGuid PlayerGUID;
ObjectGuid OtherGUID;
uint8 TransactionType = 0;
uint8 RankID = 0;
uint32 TransactionDate = 0;
};
class GuildEventLogQuery final : public ClientPacket
{
public:
GuildEventLogQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_EVENT_LOG_QUERY, std::move(packet)) { }
void Read() override { }
};
class GuildEventLogQueryResults final : public ServerPacket
{
public:
GuildEventLogQueryResults() : ServerPacket(SMSG_GUILD_EVENT_LOG_QUERY_RESULT, 4) { }
WorldPacket const* Write() override;
std::vector<GuildEventEntry> Entry;
};
class GuildEventPlayerLeft final : public ServerPacket
{
public:
GuildEventPlayerLeft() : ServerPacket(SMSG_GUILD_EVENT_PLAYER_LEFT, 43) { }
WorldPacket const* Write() override;
ObjectGuid LeaverGUID;
std::string LeaverName;
uint32 LeaverVirtualRealmAddress = 0;
ObjectGuid RemoverGUID;
std::string RemoverName;
uint32 RemoverVirtualRealmAddress = 0;
bool Removed = false;
};
class GuildEventNewLeader final : public ServerPacket
{
public:
GuildEventNewLeader() : ServerPacket(SMSG_GUILD_EVENT_NEW_LEADER, 43) { }
WorldPacket const* Write() override;
ObjectGuid NewLeaderGUID;
std::string NewLeaderName;
uint32 NewLeaderVirtualRealmAddress = 0;
ObjectGuid OldLeaderGUID;
std::string OldLeaderName;
uint32 OldLeaderVirtualRealmAddress = 0;
bool SelfPromoted = false;
};
class GuildEventTabAdded final : public ServerPacket
{
public:
GuildEventTabAdded() : ServerPacket(SMSG_GUILD_EVENT_TAB_ADDED, 0) { }
WorldPacket const* Write() override { return &_worldPacket; }
};
class GuildEventTabModified final : public ServerPacket
{
public:
GuildEventTabModified() : ServerPacket(SMSG_GUILD_EVENT_TAB_MODIFIED, 6) { }
WorldPacket const* Write() override;
std::string Icon;
std::string Name;
int32 Tab = 0;
};
class GuildEventTabTextChanged final : public ServerPacket
{
public:
GuildEventTabTextChanged() : ServerPacket(SMSG_GUILD_EVENT_TAB_TEXT_CHANGED, 4) { }
WorldPacket const* Write() override;
int32 Tab = 0;
};
class GuildEventBankContentsChanged final : public ServerPacket
{
public:
GuildEventBankContentsChanged() : ServerPacket(SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED, 0) { }
WorldPacket const* Write() override { return &_worldPacket; }
};
class GuildPermissionsQuery final : public ClientPacket
{
public:
GuildPermissionsQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_PERMISSIONS_QUERY, std::move(packet)) { }
void Read() override { }
};
class GuildPermissionsQueryResults final : public ServerPacket
{
public:
struct GuildRankTabPermissions
{
int32 Flags = 0;
int32 WithdrawItemLimit = 0;
};
GuildPermissionsQueryResults() : ServerPacket(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, 20) { }
WorldPacket const* Write() override;
int32 NumTabs = 0;
int32 WithdrawGoldLimit = 0;
int32 Flags = 0;
uint32 RankID = 0;
std::vector<GuildRankTabPermissions> Tab;
};
class GuildSetRankPermissions final : public ClientPacket
{
public:
GuildSetRankPermissions(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_SET_RANK_PERMISSIONS, std::move(packet)) { }
void Read() override;
int32 RankID = 0;
int32 RankOrder = 0;
int32 WithdrawGoldLimit = 0;
uint32 Flags = 0;
uint32 OldFlags = 0;
int32 TabFlags[GUILD_BANK_MAX_TABS];
int32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS];
std::string RankName;
};
class GuildAddRank final : public ClientPacket
{
public:
GuildAddRank(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_ADD_RANK, std::move(packet)) { }
void Read() override;
std::string Name;
int32 RankOrder = 0;
};
class GuildAssignMemberRank final : public ClientPacket
{
public:
GuildAssignMemberRank(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_ASSIGN_MEMBER_RANK, std::move(packet)) { }
void Read() override;
ObjectGuid Member;
int32 RankOrder = 0;
};
class GuildDeleteRank final : public ClientPacket
{
public:
GuildDeleteRank(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_DELETE_RANK, std::move(packet)) { }
void Read() override;
int32 RankOrder = 0;
};
class GuildGetRanks final : public ClientPacket
{
public:
GuildGetRanks(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_GET_RANKS, std::move(packet)) { }
void Read() override;
ObjectGuid GuildGUID;
};
struct GuildRankData
{
uint32 RankID = 0;
uint32 RankOrder = 0;
uint32 Flags = 0;
uint32 WithdrawGoldLimit = 0;
std::string RankName;
uint32 TabFlags[GUILD_BANK_MAX_TABS];
uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS];
};
class GuildRanks final : public ServerPacket
{
public:
GuildRanks() : ServerPacket(SMSG_GUILD_RANKS, 4) { }
WorldPacket const* Write() override;
std::vector<GuildRankData> Ranks;
};
class GuildSendRankChange final : public ServerPacket
{
public:
GuildSendRankChange() : ServerPacket(SMSG_GUILD_SEND_RANK_CHANGE, 43) { }
WorldPacket const* Write() override;
ObjectGuid Other;
ObjectGuid Officer;
bool Promote = false;
uint32 RankID = 0;
};
class GuildShiftRank final : public ClientPacket
{
public:
GuildShiftRank(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_SHIFT_RANK, std::move(packet)) { }
void Read() override;
bool ShiftUp = false;
int32 RankOrder = 0;
};
class GuildUpdateInfoText final : public ClientPacket
{
public:
GuildUpdateInfoText(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_UPDATE_INFO_TEXT, std::move(packet)) { }
void Read() override;
std::string InfoText;
};
class GuildSetMemberNote final : public ClientPacket
{
public:
GuildSetMemberNote(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_SET_MEMBER_NOTE, std::move(packet)) { }
void Read() override;
ObjectGuid NoteeGUID;
bool IsPublic = false; ///< 0 == Officer, 1 == Public
std::string Note;
};
class GuildMemberUpdateNote final : public ServerPacket
{
public:
GuildMemberUpdateNote() : ServerPacket(SMSG_GUILD_MEMBER_UPDATE_NOTE, 21) { }
WorldPacket const* Write() override;
ObjectGuid Member;
bool IsPublic = false; ///< 0 == Officer, 1 == Public
std::string Note;
};
class GuildMemberDailyReset final : public ServerPacket
{
public:
GuildMemberDailyReset() : ServerPacket(SMSG_GUILD_MEMBER_DAILY_RESET, 0) { }
WorldPacket const* Write() override { return &_worldPacket; }
};
class GuildDelete final : public ClientPacket
{
public:
GuildDelete(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_DELETE, std::move(packet)) { }
void Read() override { }
};
class GuildDemoteMember final : public ClientPacket
{
public:
GuildDemoteMember(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_DEMOTE_MEMBER, std::move(packet)) { }
void Read() override;
ObjectGuid Demotee;
};
class GuildPromoteMember final : public ClientPacket
{
public:
GuildPromoteMember(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_PROMOTE_MEMBER, std::move(packet)) { }
void Read() override;
ObjectGuid Promotee;
};
class GuildOfficerRemoveMember : public ClientPacket
{
public:
GuildOfficerRemoveMember(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_OFFICER_REMOVE_MEMBER, std::move(packet)) { }
void Read() override;
ObjectGuid Removee;
};
class GuildLeave final : public ClientPacket
{
public:
GuildLeave(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_LEAVE, std::move(packet)) { }
void Read() override { }
};
class GuildChangeNameRequest final : public ClientPacket
{
public:
GuildChangeNameRequest(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_CHANGE_NAME_REQUEST, std::move(packet)) { }
void Read() override;
std::string NewName;
};
class GuildFlaggedForRename final : public ServerPacket
{
public:
GuildFlaggedForRename() : ServerPacket(SMSG_GUILD_FLAGGED_FOR_RENAME, 1) { }
WorldPacket const* Write() override;
bool FlagSet = false;
};
class RequestGuildPartyState final : public ClientPacket
{
public:
RequestGuildPartyState(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_REQUEST_PARTY_STATE, std::move(packet)) { }
void Read() override;
ObjectGuid GuildGUID;
};
class GuildPartyState final : public ServerPacket
{
public:
GuildPartyState() : ServerPacket(SMSG_GUILD_PARTY_STATE_RESPONSE, 15) { }
WorldPacket const* Write() override;
float GuildXPEarnedMult = 0.0f;
int32 NumMembers = 0;
int32 NumRequired = 0;
bool InGuildParty = false;
};
class RequestGuildRewardsList final : public ClientPacket
{
public:
RequestGuildRewardsList(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_GUILD_REWARDS_LIST, std::move(packet)) { }
void Read() override;
uint32 CurrentVersion = 0;
};
struct GuildRewardItem
{
uint32 ItemID = 0;
std::vector<uint32> AchievementsRequired;
uint32 RaceMask = 0;
int32 MinGuildLevel = 0;
int32 MinGuildRep = 0;
uint64 Cost = 0;
};
class GuildRewardList final : public ServerPacket
{
public:
GuildRewardList() : ServerPacket(SMSG_GUILD_REWARDS_LIST, 8) { }
WorldPacket const* Write() override;
std::vector<GuildRewardItem> RewardItems;
uint32 Version = 0;
};
class GuildBankActivate final : public ClientPacket
{
public:
GuildBankActivate(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_ACTIVATE, std::move(packet)) { }
void Read() override;
ObjectGuid Banker;
bool FullUpdate = false;
};
class GuildBankBuyTab final : public ClientPacket
{
public:
GuildBankBuyTab(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_BUY_TAB, std::move(packet)) { }
void Read() override;
ObjectGuid Banker;
uint8 BankTab = 0;
};
class GuildBankUpdateTab final : public ClientPacket
{
public:
GuildBankUpdateTab(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_UPDATE_TAB, std::move(packet)) { }
void Read() override;
ObjectGuid Banker;
uint8 BankTab = 0;
std::string Name;
std::string Icon;
};
class GuildBankDepositMoney final : public ClientPacket
{
public:
GuildBankDepositMoney(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_DEPOSIT_MONEY, std::move(packet)) { }
void Read() override;
ObjectGuid Banker;
uint64 Money = 0;
};
class GuildBankQueryTab final : public ClientPacket
{
public:
GuildBankQueryTab(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_QUERY_TAB, std::move(packet)) { }
void Read() override;
ObjectGuid Banker;
uint8 Tab = 0;
bool FullUpdate = false;
};
class GuildBankRemainingWithdrawMoneyQuery final : public ClientPacket
{
public:
GuildBankRemainingWithdrawMoneyQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, std::move(packet)) { }
void Read() override { }
};
class GuildBankRemainingWithdrawMoney final : public ServerPacket
{
public:
GuildBankRemainingWithdrawMoney() : ServerPacket(SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY, 8) { }
WorldPacket const* Write() override;
int64 RemainingWithdrawMoney = 0;
};
class GuildBankWithdrawMoney final : public ClientPacket
{
public:
GuildBankWithdrawMoney(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_WITHDRAW_MONEY, std::move(packet)) { }
void Read() override;
ObjectGuid Banker;
uint64 Money = 0;
};
struct GuildBankItemInfo
{
struct GuildBankSocketEnchant
{
int32 SocketIndex = 0;
int32 SocketEnchantID = 0;
};
WorldPackets::Item::ItemInstance Item;
int32 Slot = 0;
int32 Count = 0;
int32 EnchantmentID = 0;
int32 Charges = 0;
int32 OnUseEnchantmentID = 0;
int32 Flags = 0;
bool Locked = false;
std::vector<GuildBankSocketEnchant> SocketEnchant;
};
struct GuildBankTabInfo
{
int32 TabIndex = 0;
std::string Name;
std::string Icon;
};
class GuildBankQueryResults final : public ServerPacket
{
public:
GuildBankQueryResults() : ServerPacket(SMSG_GUILD_BANK_QUERY_RESULTS, 25) { }
WorldPacket const* Write() override;
std::vector<GuildBankItemInfo> ItemInfo;
std::vector<GuildBankTabInfo> TabInfo;
int32 WithdrawalsRemaining = 0;
int32 Tab = 0;
uint64 Money = 0;
bool FullUpdate = false;
};
class GuildBankSwapItems final : public ClientPacket
{
public:
GuildBankSwapItems(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_SWAP_ITEMS, std::move(packet)) { }
void Read() override;
ObjectGuid Banker;
int32 StackCount = 0;
int32 BankItemCount = 0;
uint32 ItemID = 0;
uint32 ItemID1 = 0;
uint8 ToSlot = 0;
uint8 BankSlot = 0;
uint8 BankSlot1 = 0;
uint8 BankTab = 0;
uint8 BankTab1 = 0;
uint8 ContainerSlot = 0;
uint8 ContainerItemSlot = 0;
bool AutoStore = false;
bool BankOnly = false;
};
class GuildBankLogQuery final : public ClientPacket
{
public:
GuildBankLogQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_LOG_QUERY, std::move(packet)) { }
void Read() override;
int32 Tab = 0;
};
struct GuildBankLogEntry
{
ObjectGuid PlayerGUID;
uint32 TimeOffset = 0;
int8 EntryType = 0;
Optional<uint64> Money;
Optional<int32> ItemID;
Optional<int32> Count;
Optional<int8> OtherTab;
};
class GuildBankLogQueryResults final : public ServerPacket
{
public:
GuildBankLogQueryResults() : ServerPacket(SMSG_GUILD_BANK_LOG_QUERY_RESULT, 25) { }
WorldPacket const* Write() override;
int32 Tab = 0;
std::vector<GuildBankLogEntry> Entry;
Optional<uint64> WeeklyBonusMoney;
};
class GuildBankTextQuery final : public ClientPacket
{
public:
GuildBankTextQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_TEXT_QUERY, std::move(packet)) { }
void Read() override;
int32 Tab = 0;
};
class GuildBankTextQueryResult : public ServerPacket
{
public:
GuildBankTextQueryResult() : ServerPacket(SMSG_GUILD_BANK_TEXT_QUERY_RESULT, 5) { }
WorldPacket const* Write() override;
int32 Tab = 0;
std::string Text;
};
class GuildBankSetTabText final : public ClientPacket
{
public:
GuildBankSetTabText(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_SET_TAB_TEXT, std::move(packet)) { }
void Read() override;
int32 Tab = 0;
std::string TabText;
};
class GuildQueryNews final : public ClientPacket
{
public:
GuildQueryNews(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_QUERY_NEWS, std::move(packet)) { }
void Read() override;
ObjectGuid GuildGUID;
};
struct GuildNewsEvent
{
int32 Id = 0;
uint32 CompletedDate = 0;
int32 Type = 0;
int32 Flags = 0;
int32 Data[2];
ObjectGuid MemberGuid;
GuidList MemberList;
Optional<Item::ItemInstance> Item;
};
class GuildNews final : public ServerPacket
{
public:
GuildNews() : ServerPacket(SMSG_GUILD_NEWS, 25) { }
WorldPacket const* Write() override;
std::vector<GuildNewsEvent> NewsEvents;
};
class GuildNewsUpdateSticky final : public ClientPacket
{
public:
GuildNewsUpdateSticky(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_NEWS_UPDATE_STICKY, std::move(packet)) { }
void Read() override;
int32 NewsID = 0;
ObjectGuid GuildGUID;
bool Sticky = false;
};
class GuildSetGuildMaster final : public ClientPacket
{
public:
GuildSetGuildMaster(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_SET_GUILD_MASTER, std::move(packet)) { }
void Read() override;
std::string NewMasterName;
};
class GuildChallengeUpdateRequest final : public ClientPacket
{
public:
GuildChallengeUpdateRequest(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_CHALLENGE_UPDATE_REQUEST, std::move(packet)) { }
void Read() override { }
};
class GuildChallengeUpdate final : public ServerPacket
{
public:
GuildChallengeUpdate() : ServerPacket(SMSG_GUILD_CHALLENGE_UPDATE, 120) { }
WorldPacket const* Write() override;
int32 CurrentCount[GUILD_CHALLENGES_TYPES];
int32 MaxCount[GUILD_CHALLENGES_TYPES];
int32 Gold[GUILD_CHALLENGES_TYPES];
int32 MaxLevelGold[GUILD_CHALLENGES_TYPES];
};
class SaveGuildEmblem final : public ClientPacket
{
public:
SaveGuildEmblem(WorldPacket&& packet) : ClientPacket(CMSG_SAVE_GUILD_EMBLEM, std::move(packet)) { }
void Read() override;
ObjectGuid Vendor;
int32 BStyle = 0;
int32 EStyle = 0;
int32 BColor = 0;
int32 EColor = 0;
int32 Bg = 0;
};
class PlayerSaveGuildEmblem final : public ServerPacket
{
public:
PlayerSaveGuildEmblem() : ServerPacket(SMSG_SAVE_GUILD_EMBLEM, 4) { }
WorldPacket const* Write() override;
int32 Error = 0;
};
}
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfessionData const& rosterProfessionData);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberData const& rosterMemberData);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRankData const& rankData);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildNewsEvent const& newsEvent);
#endif // GuildPackets_h__
+2 -2
View File
@@ -38,7 +38,7 @@ namespace WorldPackets
struct MailAttachedItem
{
MailAttachedItem(::Item const* item, uint8 pos);
MailAttachedItem(::Item const* item, uint8 pos);
uint8 Position = 0;
int32 AttachID = 0;
@@ -126,7 +126,7 @@ namespace WorldPackets
std::string Body;
std::vector<MailAttachment> Attachments;
};
SendMail(WorldPacket&& packet) : ClientPacket(CMSG_SEND_MAIL, std::move(packet)) { }
void Read() override;
+1 -1
View File
@@ -53,7 +53,7 @@ namespace WorldPackets
ObjectGuid BinderID;
uint32 AreaID = 0;
};
class BinderConfirm final : public ServerPacket
{
public:
@@ -135,3 +135,9 @@ void WorldPackets::NPC::GossipSelectOption::Read()
uint32 length = _worldPacket.ReadBits(8);
PromotionCode = _worldPacket.ReadString(length);
}
WorldPacket const* WorldPackets::NPC::PlayerTabardVendorActivate::Write()
{
_worldPacket << Vendor;
return &_worldPacket;
}
@@ -158,6 +158,16 @@ namespace WorldPackets
ObjectGuid Guid;
};
class PlayerTabardVendorActivate final : public ServerPacket
{
public:
PlayerTabardVendorActivate() : ServerPacket(SMSG_TABARD_VENDOR_ACTIVATE, 16) { }
WorldPacket const* Write() override;
ObjectGuid Vendor;
};
}
}
@@ -0,0 +1,192 @@
/*
* Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.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, see <http://www.gnu.org/licenses/>.
*/
#include "PetitionPackets.h"
void WorldPackets::Petition::QueryPetition::Read()
{
_worldPacket >> PetitionID;
_worldPacket >> ItemGUID;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo const& petitionInfo)
{
data << petitionInfo.PetitionID;
data << petitionInfo.Petitioner;
data << petitionInfo.MinSignatures;
data << petitionInfo.MaxSignatures;
data << petitionInfo.DeadLine;
data << petitionInfo.IssueDate;
data << petitionInfo.AllowedGuildID;
data << petitionInfo.AllowedClasses;
data << petitionInfo.AllowedRaces;
data << petitionInfo.AllowedGender;
data << petitionInfo.AllowedMinLevel;
data << petitionInfo.AllowedMaxLevel;
data << petitionInfo.NumChoices;
data << petitionInfo.StaticType;
data << petitionInfo.Muid;
data.WriteBits(petitionInfo.Title.length(), 7);
data.WriteBits(petitionInfo.BodyText.length(), 12);
for (uint8 i = 0; i < 10; i++)
data.WriteBits(petitionInfo.Choicetext[i].length(), 6);
data.FlushBits();
for (uint8 i = 0; i < 10; i++)
data.WriteString(petitionInfo.Choicetext[i]);
data.WriteString(petitionInfo.Title);
data.WriteString(petitionInfo.BodyText);
return data;
}
WorldPacket const* WorldPackets::Petition::QueryPetitionResponse::Write()
{
_worldPacket << PetitionID;
_worldPacket.WriteBit(Allow);
_worldPacket.FlushBits();
if (Allow)
_worldPacket << Info;
return &_worldPacket;
}
void WorldPackets::Petition::PetitionShowList::Read()
{
_worldPacket >> PetitionUnit;
}
WorldPacket const* WorldPackets::Petition::ServerPetitionShowList::Write()
{
_worldPacket << Unit;
_worldPacket << Price;
return &_worldPacket;
}
void WorldPackets::Petition::PetitionBuy::Read()
{
uint32 titleLen = _worldPacket.ReadBits(7);
_worldPacket >> Unit;
Title = _worldPacket.ReadString(titleLen);
}
void WorldPackets::Petition::PetitionShowSignatures::Read()
{
_worldPacket >> Item;
}
WorldPacket const* WorldPackets::Petition::ServerPetitionShowSignatures::Write()
{
_worldPacket << Item;
_worldPacket << Owner;
_worldPacket << OwnerAccountID;
_worldPacket << PetitionID;
_worldPacket << uint32(Signatures.size());
for (PetitionSignature signature : Signatures)
{
_worldPacket << signature.Signer;
_worldPacket << signature.Choice;
}
return &_worldPacket;
}
void WorldPackets::Petition::SignPetition::Read()
{
_worldPacket >> PetitionGUID;
_worldPacket >> Choice;
}
WorldPacket const* WorldPackets::Petition::PetitionSignResults::Write()
{
_worldPacket << Item;
_worldPacket << Player;
_worldPacket.WriteBits(Error, 4);
_worldPacket.FlushBits();
return &_worldPacket;
}
WorldPacket const* WorldPackets::Petition::PetitionAlreadySigned::Write()
{
_worldPacket << SignerGUID;
return &_worldPacket;
}
void WorldPackets::Petition::DeclinePetition::Read()
{
_worldPacket >> PetitionGUID;
}
void WorldPackets::Petition::TurnInPetition::Read()
{
_worldPacket >> Item;
}
WorldPacket const* WorldPackets::Petition::TurnInPetitionResult::Write()
{
_worldPacket.WriteBits(Result, 4);
_worldPacket.FlushBits();
return &_worldPacket;
}
void WorldPackets::Petition::OfferPetition::Read()
{
_worldPacket >> ItemGUID;
_worldPacket >> TargetPlayer;
}
WorldPacket const* WorldPackets::Petition::OfferPetitionError::Write()
{
_worldPacket << PlayerGUID;
return &_worldPacket;
}
void WorldPackets::Petition::PetitionRenameGuild::Read()
{
_worldPacket >> PetitionGuid;
_worldPacket.ResetBitPos();
uint32 nameLen = _worldPacket.ReadBits(7);
NewGuildName = _worldPacket.ReadString(nameLen);
}
WorldPacket const* WorldPackets::Petition::PetitionRenameGuildResponse::Write()
{
_worldPacket << PetitionGuid;
_worldPacket.WriteBits(NewGuildName.length(), 7);
_worldPacket.FlushBits();
_worldPacket.WriteString(NewGuildName);
return &_worldPacket;
}
@@ -0,0 +1,246 @@
/*
* Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.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, see <http://www.gnu.org/licenses/>.
*/
#ifndef PetitionPackets_h__
#define PetitionPackets_h__
#include "Packet.h"
#include "ObjectGuid.h"
#include "WorldSession.h"
namespace WorldPackets
{
namespace Petition
{
class QueryPetition final : public ClientPacket
{
public:
QueryPetition(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_PETITION, std::move(packet)) { }
void Read() override;
ObjectGuid ItemGUID;
uint32 PetitionID = 0;
};
struct PetitionInfo
{
int32 PetitionID = 0;
ObjectGuid Petitioner;
std::string Title;
std::string BodyText;
int32 MinSignatures = 0;
int32 MaxSignatures = 0;
int32 DeadLine = 0;
int32 IssueDate = 0;
int32 AllowedGuildID = 0;
int32 AllowedClasses = 0;
int32 AllowedRaces = 0;
int16 AllowedGender = 0;
int32 AllowedMinLevel = 0;
int32 AllowedMaxLevel = 0;
int32 NumChoices = 0;
int32 StaticType = 0;
uint32 Muid = 0;
std::string Choicetext[10];
};
class QueryPetitionResponse final : public ServerPacket
{
public:
QueryPetitionResponse() : ServerPacket(SMSG_QUERY_PETITION_RESPONSE, 75) { }
WorldPacket const* Write() override;
uint32 PetitionID = 0;
bool Allow = false;
PetitionInfo Info;
};
class PetitionShowList final : public ClientPacket
{
public:
PetitionShowList(WorldPacket&& packet) : ClientPacket(CMSG_PETITION_SHOW_LIST, std::move(packet)) { }
void Read() override;
ObjectGuid PetitionUnit;
};
class ServerPetitionShowList final : public ServerPacket
{
public:
ServerPetitionShowList() : ServerPacket(SMSG_PETITION_SHOW_LIST, 20) { }
WorldPacket const* Write() override;
ObjectGuid Unit;
uint32 Price = 0;
};
class PetitionBuy final : public ClientPacket
{
public:
PetitionBuy(WorldPacket&& packet) : ClientPacket(CMSG_PETITION_BUY, std::move(packet)) { }
void Read() override;
ObjectGuid Unit;
std::string Title;
};
class PetitionShowSignatures final : public ClientPacket
{
public:
PetitionShowSignatures(WorldPacket&& packet) : ClientPacket(CMSG_PETITION_SHOW_SIGNATURES, std::move(packet)) { }
void Read() override;
ObjectGuid Item;
};
class ServerPetitionShowSignatures final : public ServerPacket
{
public:
struct PetitionSignature
{
ObjectGuid Signer;
int32 Choice = 0;
};
ServerPetitionShowSignatures() : ServerPacket(SMSG_PETITION_SHOW_SIGNATURES, 40) { }
WorldPacket const* Write() override;
ObjectGuid Item;
ObjectGuid Owner;
ObjectGuid OwnerAccountID;
int32 PetitionID = 0;
std::vector<PetitionSignature> Signatures;
};
class SignPetition final : public ClientPacket
{
public:
SignPetition(WorldPacket&& packet) : ClientPacket(CMSG_SIGN_PETITION, std::move(packet)) { }
void Read() override;
ObjectGuid PetitionGUID;
uint8 Choice = 0;
};
class PetitionSignResults final : public ServerPacket
{
public:
PetitionSignResults() : ServerPacket(SMSG_PETITION_SIGN_RESULTS, 33) { }
WorldPacket const* Write() override;
ObjectGuid Item;
ObjectGuid Player;
int32 Error = 0; // PetitionError
};
class PetitionAlreadySigned final : public ServerPacket
{
public:
PetitionAlreadySigned() : ServerPacket(SMSG_PETITION_ALREADY_SIGNED, 16) { }
WorldPacket const* Write() override;
ObjectGuid SignerGUID;
};
class DeclinePetition final : public ClientPacket
{
public:
DeclinePetition(WorldPacket&& packet) : ClientPacket(CMSG_DECLINE_PETITION, std::move(packet)) { }
void Read() override;
ObjectGuid PetitionGUID;
};
class TurnInPetition final : public ClientPacket
{
public:
TurnInPetition(WorldPacket&& packet) : ClientPacket(CMSG_TURN_IN_PETITION, std::move(packet)) { }
void Read() override;
ObjectGuid Item;
};
class TurnInPetitionResult final : public ServerPacket
{
public:
TurnInPetitionResult() : ServerPacket(SMSG_TURN_IN_PETITION_RESULTS, 4) { }
WorldPacket const* Write() override;
int32 Result = 0; // PetitionError
};
class OfferPetition final : public ClientPacket
{
public:
OfferPetition(WorldPacket&& packet) : ClientPacket(CMSG_OFFER_PETITION, std::move(packet)) { }
void Read() override;
ObjectGuid TargetPlayer;
ObjectGuid ItemGUID;
};
class OfferPetitionError final : public ServerPacket
{
public:
OfferPetitionError() : ServerPacket(SMSG_OFFER_PETITION_ERROR, 16) { }
WorldPacket const* Write() override;
ObjectGuid PlayerGUID;
};
class PetitionRenameGuild final : public ClientPacket
{
public:
PetitionRenameGuild(WorldPacket&& packet) : ClientPacket(CMSG_PETITION_RENAME_GUILD, std::move(packet)) { }
void Read() override;
ObjectGuid PetitionGuid;
std::string NewGuildName;
};
class PetitionRenameGuildResponse final : public ServerPacket
{
public:
PetitionRenameGuildResponse() : ServerPacket(SMSG_PETITION_RENAME_GUILD_RESPONSE, 20) { }
WorldPacket const* Write() override;
ObjectGuid PetitionGuid;
std::string NewGuildName;
};
}
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo const& petitionInfo);
#endif // PetitionPackets_h__
+88 -116
View File
@@ -37,6 +37,7 @@
#include "Packets/MiscPackets.h"
#include "Packets/MovementPackets.h"
#include "Packets/NPCPackets.h"
#include "Packets/PetitionPackets.h"
#include "Packets/QueryPackets.h"
#include "Packets/QuestPackets.h"
#include "Packets/SocialPackets.h"
@@ -141,7 +142,7 @@ void OpcodeTable::Initialize()
#define DEFINE_HANDLER(opcode, status, processing, packetclass, handler) \
ValidateAndSetClientOpcode<packetclass, handler>(opcode, #opcode, status, processing);
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_GUILD_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_ACCEPT_GUILD_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::AcceptGuildInvite, &WorldSession::HandleGuildAcceptInvite);
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_LEVEL_GRANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptGrantLevel );
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_WARGAME_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -185,7 +186,6 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_AUTOSTORE_BANK_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoStoreBankItemOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_AUTOSTORE_GROUND_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_AUTOSTORE_LOOT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::AutoStoreLootItem, &WorldSession::HandleAutostoreLootItemOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_AUTO_DECLINE_GUILD_INVITES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoDeclineGuildInvites );
DEFINE_HANDLER(CMSG_BANKER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleBankerActivateOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEFIELD_JOIN, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEFIELD_LEAVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleBattlefieldLeaveOpcode );
@@ -325,8 +325,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CREATURE_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Query::QueryCreature, &WorldSession::HandleCreatureQuery);
DEFINE_OPCODE_HANDLER_OLD(CMSG_DANCE_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_DB_QUERY_BULK, STATUS_AUTHED, PROCESS_INPLACE, WorldPackets::Query::DBQueryBulk, &WorldSession::HandleDBQueryBulk);
DEFINE_OPCODE_HANDLER_OLD(CMSG_DECLINE_GUILD_INVITES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_DECLINE_PETITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionDeclineOpcode );
DEFINE_HANDLER(CMSG_DECLINE_GUILD_INVITES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::DeclineGuildInvites, &WorldSession::HandleDeclineGuildInvites);
DEFINE_HANDLER(CMSG_DECLINE_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::DeclinePetition, &WorldSession::HandleDeclinePetition);
DEFINE_OPCODE_HANDLER_OLD(CMSG_DELETE_EQUIPMENT_SET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetDelete );
DEFINE_HANDLER(CMSG_DEL_FRIEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Social::DelFriend, &WorldSession::HandleDelFriendOpcode);
DEFINE_HANDLER(CMSG_DEL_IGNORE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Social::DelIgnore, &WorldSession::HandleDelIgnoreOpcode);
@@ -408,60 +408,52 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_GROUP_SET_LEADER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSetLeaderOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GROUP_SET_ROLES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupSetRolesOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GROUP_SWAP_SUB_GROUP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSwapSubGroupOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_ACCEPT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_ADD_BATTLENET_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_ADD_RANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAddRankOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_ASSIGN_MEMBER_RANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAssignRankOpcode );
DEFINE_HANDLER(CMSG_GUILD_ADD_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildAddRank, &WorldSession::HandleGuildAddRank);
DEFINE_HANDLER(CMSG_GUILD_ASSIGN_MEMBER_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildAssignMemberRank, &WorldSession::HandleGuildAssignRank);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_AUTO_DECLINE_INVITATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANKER_ACTIVATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankerActivate );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_BUY_TAB, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankBuyTab );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_DEPOSIT_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankDepositMoney );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_LOG_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankLogQuery );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_MONEY_WITHDRAWN_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankMoneyWithdrawn );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_NOTE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_QUERY_TAB, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankQueryTab );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_QUERY_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryGuildBankTabText );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_SET_TAB_TEXT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSwapItems );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankUpdateTab );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_BANK_WITHDRAW_MONEY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankWithdrawMoney );
DEFINE_HANDLER(CMSG_GUILD_BANK_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankActivate, &WorldSession::HandleGuildBankActivate);
DEFINE_HANDLER(CMSG_GUILD_BANK_BUY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankBuyTab, &WorldSession::HandleGuildBankBuyTab);
DEFINE_HANDLER(CMSG_GUILD_BANK_DEPOSIT_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankDepositMoney, &WorldSession::HandleGuildBankDepositMoney);
DEFINE_HANDLER(CMSG_GUILD_BANK_LOG_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankLogQuery, &WorldSession::HandleGuildBankLogQuery);
DEFINE_HANDLER(CMSG_GUILD_BANK_QUERY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankQueryTab, &WorldSession::HandleGuildBankQueryTab);
DEFINE_HANDLER(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery, &WorldSession::HandleGuildBankMoneyWithdrawn);
DEFINE_HANDLER(CMSG_GUILD_BANK_SET_TAB_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankSetTabText, &WorldSession::HandleGuildBankSetTabText);
DEFINE_HANDLER(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankSwapItems, &WorldSession::HandleGuildBankSwapItems);
DEFINE_HANDLER(CMSG_GUILD_BANK_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankTextQuery, &WorldSession::HandleGuildBankTextQuery);
DEFINE_HANDLER(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankUpdateTab, &WorldSession::HandleGuildBankUpdateTab);
DEFINE_HANDLER(CMSG_GUILD_BANK_WITHDRAW_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildBankWithdrawMoney, &WorldSession::HandleGuildBankWithdrawMoney);
DEFINE_HANDLER(CMSG_GUILD_CHALLENGE_UPDATE_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildChallengeUpdateRequest, &WorldSession::HandleGuildChallengeUpdateRequest);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_CHANGE_NAME_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_DECLINE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDeclineOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_DELETE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_DELETE_RANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDeleteRankOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_DEMOTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDemoteOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_DISBAND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDisbandOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_EVENT_LOG_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildEventLogQueryOpcode );
DEFINE_HANDLER(CMSG_GUILD_DECLINE_INVITATION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildDeclineInvitation, &WorldSession::HandleGuildDeclineInvitation);
DEFINE_HANDLER(CMSG_GUILD_DELETE_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildDeleteRank, &WorldSession::HandleGuildDeleteRank);
DEFINE_HANDLER(CMSG_GUILD_DEMOTE_MEMBER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildDemoteMember, &WorldSession::HandleGuildDemoteMember);
DEFINE_HANDLER(CMSG_GUILD_DELETE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildDelete, &WorldSession::HandleGuildDelete);
DEFINE_HANDLER(CMSG_GUILD_EVENT_LOG_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildEventLogQuery, &WorldSession::HandleGuildEventLogQuery);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_GET_RANKS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildGetRanksOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_GET_ROSTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRosterOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_INVITE_BY_NAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildInviteOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_LEAVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildLeaveOpcode );
DEFINE_HANDLER(CMSG_GUILD_GET_RANKS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildGetRanks, &WorldSession::HandleGuildGetRanks);
DEFINE_HANDLER(CMSG_GUILD_GET_ROSTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildGetRoster, &WorldSession::HandleGuildGetRoster);
DEFINE_HANDLER(CMSG_GUILD_INVITE_BY_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildInviteByName, &WorldSession::HandleGuildInviteByName);
DEFINE_HANDLER(CMSG_GUILD_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildLeave, &WorldSession::HandleGuildLeave);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_MEMBER_SEND_SOR_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_NEWS_UPDATE_STICKY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGuildNewsUpdateStickyOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_OFFICER_REMOVE_MEMBER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildOfficerRemoveMemberOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_PERMISSIONS_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPermissions );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_PROMOTE_MEMBER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPromoteOpcode );
DEFINE_HANDLER(CMSG_GUILD_NEWS_UPDATE_STICKY, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Guild::GuildNewsUpdateSticky, &WorldSession::HandleGuildNewsUpdateSticky);
DEFINE_HANDLER(CMSG_GUILD_OFFICER_REMOVE_MEMBER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildOfficerRemoveMember, &WorldSession::HandleGuildOfficerRemoveMember);
DEFINE_HANDLER(CMSG_GUILD_PERMISSIONS_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildPermissionsQuery, &WorldSession::HandleGuildPermissionsQuery);
DEFINE_HANDLER(CMSG_GUILD_PROMOTE_MEMBER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildPromoteMember, &WorldSession::HandleGuildPromoteMember);
DEFINE_HANDLER(CMSG_GUILD_QUERY, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Guild::QueryGuildInfo, &WorldSession::HandleGuildQueryOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_QUERY_MEMBERS_FOR_RECIPE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_QUERY_MEMBER_RECIPES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_QUERY_NEWS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGuildQueryNewsOpcode );
DEFINE_HANDLER(CMSG_GUILD_QUERY_NEWS, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Guild::GuildQueryNews, &WorldSession::HandleGuildQueryNews);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_QUERY_RECIPES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_REPLACE_GUILD_MASTER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_REQUEST_CHALLENGE_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_REQUEST_CHALLENGE_UPDATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestChallengeUpdate);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_REQUEST_MAX_DAILY_XP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestMaxDailyXP );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_REQUEST_PARTY_STATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestPartyState );
DEFINE_HANDLER(CMSG_GUILD_REQUEST_PARTY_STATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::RequestGuildPartyState, &WorldSession::HandleGuildRequestPartyState);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetAchievementTracking);
DEFINE_HANDLER(CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Achievement::GuildSetFocusedAchievement, &WorldSession::HandleGuildSetFocusedAchievement);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_SET_GUILD_MASTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetGuildMaster );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_SET_MEMBER_NOTE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_SET_NOTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetNoteOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_SET_RANK_PERMISSIONS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetRankPermissionsOpcode);
DEFINE_HANDLER(CMSG_GUILD_SET_GUILD_MASTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildSetGuildMaster, &WorldSession::HandleGuildSetGuildMaster);
DEFINE_HANDLER(CMSG_GUILD_SET_MEMBER_NOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildSetMemberNote, &WorldSession::HandleGuildSetMemberNote);
DEFINE_HANDLER(CMSG_GUILD_SET_RANK_PERMISSIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildSetRankPermissions, &WorldSession::HandleGuildSetRankPermissions);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_SHIFT_RANK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_UPDATE_INFO_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildChangeInfoTextOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_UPDATE_MOTD_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildMOTDOpcode );
DEFINE_HANDLER(CMSG_GUILD_UPDATE_INFO_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildUpdateInfoText, &WorldSession::HandleGuildUpdateInfoText);
DEFINE_HANDLER(CMSG_GUILD_UPDATE_MOTD_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildUpdateMotdText, &WorldSession::HandleGuildUpdateMotdText);
DEFINE_OPCODE_HANDLER_OLD(CMSG_HEARTH_AND_RESURRECT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleHearthAndResurrect );
DEFINE_OPCODE_HANDLER_OLD(CMSG_IGNORE_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleIgnoreTradeOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_INCREASE_CAST_TIME_FOR_SPELL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -507,9 +499,8 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_BROWSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderBrowse );
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_DECLINE_RECRUIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderDeclineRecruit );
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_GET_APPLICATIONS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderGetApplications);
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_GET_GUILD_POST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_GET_GUILD_POST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderPostRequest );
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_GET_RECRUITS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderGetRecruits );
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_POST_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderPostRequest );
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_REMOVE_RECRUIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderRemoveRecruit );
DEFINE_OPCODE_HANDLER_OLD(CMSG_LF_GUILD_SET_GUILD_POST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderSetGuildPost );
DEFINE_HANDLER(CMSG_LIST_INVENTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleListInventoryOpcode);
@@ -635,7 +626,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_NPC_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryNPCText, &WorldSession::HandleNpcTextQueryOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_OBJECT_UPDATE_FAILED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleObjectUpdateFailedOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_OBJECT_UPDATE_RESCUED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_OFFER_PETITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleOfferPetitionOpcode );
DEFINE_HANDLER(CMSG_OFFER_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::OfferPetition, &WorldSession::HandleOfferPetition);
DEFINE_OPCODE_HANDLER_OLD(CMSG_OPENING_CINEMATIC, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleOpeningCinematic );
DEFINE_OPCODE_HANDLER_OLD(CMSG_OPEN_GARRISON_MISSION_NPC, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_OPEN_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleOpenItemOpcode );
@@ -648,12 +639,10 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_PARTY_SILENCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PARTY_UNINVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupUninviteOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PARTY_UNSILENCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PETITION_BUY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionBuyOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PETITION_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionQueryOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PETITION_RENAME_GUILD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionRenameGuildOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PETITION_SHOW_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowListOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PETITION_SHOW_SIGNATURES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionShowSignOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PETITION_SIGN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionSignOpcode );
DEFINE_HANDLER(CMSG_PETITION_BUY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::PetitionBuy, &WorldSession::HandlePetitionBuy);
DEFINE_HANDLER(CMSG_PETITION_RENAME_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::PetitionRenameGuild, &WorldSession::HandlePetitionRenameGuild);
DEFINE_HANDLER(CMSG_PETITION_SHOW_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::PetitionShowList, &WorldSession::HandlePetitionShowList);
DEFINE_HANDLER(CMSG_PETITION_SHOW_SIGNATURES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::PetitionShowSignatures, &WorldSession::HandlePetitionShowSignatures);
DEFINE_OPCODE_HANDLER_OLD(CMSG_PET_ABANDON, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetAbandon );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PET_ACTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetAction );
DEFINE_OPCODE_HANDLER_OLD(CMSG_PET_BATTLE_FINAL_NOTIF, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -686,10 +675,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryCorpseLocationFromClient, &WorldSession::HandleQueryCorpseLocation);
DEFINE_HANDLER(CMSG_QUERY_CORPSE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryCorpseTransport, &WorldSession::HandleQueryCorpseTransport);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_COUNTDOWN_TIMER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_GUILD_XP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryXPOpcode );
DEFINE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::QueryInspectAchievements, &WorldSession::HandleQueryInspectAchievements);
DEFINE_HANDLER(CMSG_QUERY_NEXT_MAIL_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Mail::MailQueryNextMailTime, &WorldSession::HandleQueryNextMailTime);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_PETITION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_QUERY_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::QueryPetition, &WorldSession::HandleQueryPetition);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_SCENARIO_POI, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryTime, &WorldSession::HandleQueryTimeOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_ACCEPT_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverAcceptQuestOpcode);
@@ -732,7 +718,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::RequestCemeteryList, &WorldSession::HandleRequestCemeteryList);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_FORCED_REACTIONS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_GUILD_REWARDS_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRewardsQueryOpcode );
DEFINE_HANDLER(CMSG_REQUEST_GUILD_REWARDS_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Guild::RequestGuildRewardsList, &WorldSession::HandleRequestGuildRewardsList);
DEFINE_HANDLER(CMSG_REQUEST_HONOR_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::RequestHonorStats, &WorldSession::HandleRequestHonorStatsOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_LFG_LIST_BLACKLIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PARTY_JOIN_UPDATES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -758,7 +744,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_ROLE_POLL_BEGIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRolePollBeginOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_ROUTER_CLIENT_LOG_STREAMING_ERROR, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SAVE_CUF_PROFILES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SAVE_GUILD_EMBLEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblemOpcode );
DEFINE_HANDLER(CMSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::SaveGuildEmblem, &WorldSession::HandleSaveGuildEmblem);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SAVE_PLAYER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -789,7 +775,6 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_FACTION_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_FACTION_INACTIVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionInactiveOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_FACTION_NOT_AT_WAR, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_GUILD_BANK_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetGuildBankTabText );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_LFG_BONUS_FACTION_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_LFG_COMMENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -819,7 +804,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOWING_CLOAK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingCloakOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOWING_HELM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleShowingHelmOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SHOW_TRADE_SKILL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SIGN_PETITION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_SIGN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::SignPetition, &WorldSession::HandleSignPetition);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SILENCE_PARTY_TALKER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SOCKET_GEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSocketOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SORT_BAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -847,7 +832,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SWAP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SwapItem, &WorldSession::HandleSwapItem);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SWAP_SUB_GROUPS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SYNC_DANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_TABARD_VENDOR_ACTIVATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTabardVendorActivateOpcode);
DEFINE_HANDLER(CMSG_TABARD_VENDOR_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleTabardVendorActivateOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_TAXICLEARALLNODES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_TAXIENABLEALLNODES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_TAXISHOWNODES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -868,7 +853,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_TRANSMOGRIFY_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems );
DEFINE_OPCODE_HANDLER_OLD(CMSG_TRIGGER_CINEMATIC_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_TROPHY_MONUMENT_LOAD_SELECTED_TROPHY_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_TURN_IN_PETITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetitionOpcode );
DEFINE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::TurnInPetition, &WorldSession::HandleTurnInPetition);
DEFINE_HANDLER(CMSG_TUTORIAL_FLAG, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::TutorialSetFlag, &WorldSession::HandleTutorialFlag);
DEFINE_HANDLER(CMSG_UI_TIME_REQUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::UITimeRequest, &WorldSession::HandleUITimeRequest);
DEFINE_OPCODE_HANDLER_OLD(CMSG_UNACCEPT_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode );
@@ -1300,69 +1285,58 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_EARNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_MEMBERS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_LOG_QUERY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_MONEY_WITHDRAWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_QUERY_TEXT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_LOG_QUERY_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_QUERY_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_BANK_TEXT_QUERY_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CHANGE_NAME_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT_2, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_CRITERIA_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_DECLINE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_DISBANDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_LOG_QUERY_RESULTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_MOTD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_NEW_LEADER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_PLAYER_JOINED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_PLAYER_LEFT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_PRESENCE_CHANGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_RANKS_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_RANK_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_BANK_MONEY_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_DISBANDED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_LOG_QUERY_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_MOTD, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_NEW_LEADER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_PLAYER_JOINED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_PLAYER_LEFT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_PRESENCE_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_RANK_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_RANKS_UPDATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_ADDED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_DELETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_MODIFIED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_TEXT_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_FLAGGED_FOR_RENAME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_MODIFIED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_EVENT_TAB_TEXT_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_FLAGGED_FOR_RENAME, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE_DECLINED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_INVITE_EXPIRED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_KNOWN_RECIPES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MAX_DAILY_XP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBERS_WITH_RECIPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBER_DAILY_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBER_DAILY_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBER_RECIPES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBER_UPDATE_NOTE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MEMBER_UPDATE_NOTE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MOVE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_MOVE_STARTING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NAME_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS_DELETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_NEWS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PARTY_STATE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PARTY_STATE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_PERMISSIONS_QUERY_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RANKS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RANKS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_SEND_RANK_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_REACTION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_WEEKLY_CAP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REWARDS_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REWARDS_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_SEND_RANK_CHANGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_SET_NOTE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_TRADESKILL_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_XP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_XP_GAIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_XP_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HIGHEST_THREAT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1616,10 +1590,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PERIODICAURALOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETGODMODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_DECLINED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_SIGNATURES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_SIGNATURES, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SIGN_RESULTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_ACTION_FEEDBACK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_ACTION_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1683,8 +1656,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_SEASON, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_INVALID_QUEST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_OFFER_REWARD, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1761,7 +1733,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_BEGIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RUNE_REGEN_DEBUG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SAVE_GUILD_EMBLEM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SAVE_GUILD_EMBLEM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_BOOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_OUT_OF_BOUNDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1874,7 +1846,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPPRESS_NPC_GREETINGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_COMMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_TOKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TABARD_VENDOR_ACTIVATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TABARD_VENDOR_ACTIVATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_INVOLUNTARILY_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1900,7 +1872,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_CINEMATIC, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TURN_IN_PETITION_RESULTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TURN_IN_PETITION_RESULTS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TUTORIAL_FLAGS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_TIME, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+15 -38
View File
@@ -90,7 +90,6 @@ enum OpcodeClient : uint32
CMSG_AUTOSTORE_BANK_ITEM = 0x0732,
CMSG_AUTOSTORE_GROUND_ITEM = 0xBADD,
CMSG_AUTOSTORE_LOOT_ITEM = 0x0609,
CMSG_AUTO_DECLINE_GUILD_INVITES = 0xBADD,
CMSG_BANKER_ACTIVATE = 0x1B24,
CMSG_BATTLEFIELD_JOIN = 0xBADD,
CMSG_BATTLEFIELD_LEAVE = 0x06F1,
@@ -311,34 +310,33 @@ enum OpcodeClient : uint32
CMSG_GROUP_SET_LEADER = 0xBADD,
CMSG_GROUP_SET_ROLES = 0xBADD,
CMSG_GROUP_SWAP_SUB_GROUP = 0xBADD,
CMSG_GUILD_ACCEPT = 0xBADD,
CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x1437,
CMSG_GUILD_ADD_RANK = 0x1630,
CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x0436,
CMSG_GUILD_AUTO_DECLINE_INVITATION = 0x062F,
CMSG_GUILD_BANKER_ACTIVATE = 0x19E3,
CMSG_GUILD_BANK_ACTIVATE = 0x19E3,
CMSG_GUILD_BANK_BUY_TAB = 0x1BC3,
CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x1B11,
CMSG_GUILD_BANK_LOG_QUERY = 0x0428,
CMSG_GUILD_BANK_MONEY_WITHDRAWN_QUERY = 0x020D,
CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x063D,
CMSG_GUILD_BANK_NOTE = 0xBADD,
CMSG_GUILD_BANK_QUERY_TAB = 0x1139,
CMSG_GUILD_BANK_QUERY_TEXT = 0x062D,
CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x063D,
CMSG_GUILD_BANK_TEXT_QUERY = 0x062D,
CMSG_GUILD_BANK_SET_TAB_TEXT = 0x0E30,
CMSG_GUILD_BANK_SWAP_ITEMS = 0x1131,
CMSG_GUILD_BANK_UPDATE_TAB = 0x13C1,
CMSG_GUILD_BANK_WITHDRAW_MONEY = 0xBADD,
CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x020D,
CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x166E,
CMSG_GUILD_CHANGE_NAME_REQUEST = 0x043E,
CMSG_GUILD_DECLINE = 0x0667,
CMSG_GUILD_DECLINE_INVITATION = 0x0667,
CMSG_GUILD_DELETE = 0x1427,
CMSG_GUILD_DELETE_RANK = 0x0C28,
CMSG_GUILD_DEMOTE = 0x142F,
CMSG_GUILD_DISBAND = 0xBADD,
CMSG_GUILD_DEMOTE_MEMBER = 0x142F,
CMSG_GUILD_EVENT_LOG_QUERY = 0x0E37,
CMSG_GUILD_GET_ACHIEVEMENT_MEMBERS = 0x0C40,
CMSG_GUILD_GET_RANKS = 0x0C37,
CMSG_GUILD_GET_ROSTER = 0x0638,
CMSG_GUILD_INFO = 0xBADD,
CMSG_GUILD_INVITE_BY_NAME = 0x19A4,
CMSG_GUILD_LEAVE = 0x0476,
CMSG_GUILD_MEMBER_SEND_SOR_REQUEST = 0x0666,
@@ -352,15 +350,11 @@ enum OpcodeClient : uint32
CMSG_GUILD_QUERY_NEWS = 0x0676,
CMSG_GUILD_QUERY_RECIPES = 0x1438,
CMSG_GUILD_REPLACE_GUILD_MASTER = 0x163E,
CMSG_GUILD_REQUEST_CHALLENGE_INFO = 0x166E,
CMSG_GUILD_REQUEST_CHALLENGE_UPDATE = 0xBADD,
CMSG_GUILD_REQUEST_MAX_DAILY_XP = 0xBADD,
CMSG_GUILD_REQUEST_PARTY_STATE = 0x0A8E,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x1640,
CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x0C7E,
CMSG_GUILD_SET_GUILD_MASTER = 0x1184,
CMSG_GUILD_SET_MEMBER_NOTE = 0x1C27,
CMSG_GUILD_SET_NOTE = 0xBADD,
CMSG_GUILD_SET_RANK_PERMISSIONS = 0x0E38,
CMSG_GUILD_SHIFT_RANK = 0x0627,
CMSG_GUILD_UPDATE_INFO_TEXT = 0x0C75,
@@ -412,7 +406,6 @@ enum OpcodeClient : uint32
CMSG_LF_GUILD_GET_APPLICATIONS = 0x043F,
CMSG_LF_GUILD_GET_GUILD_POST = 0x0E68,
CMSG_LF_GUILD_GET_RECRUITS = 0x0430,
CMSG_LF_GUILD_POST_REQUEST = 0xBADD,
CMSG_LF_GUILD_REMOVE_RECRUIT = 0x0680,
CMSG_LF_GUILD_SET_GUILD_POST = 0x0B3D,
CMSG_LIST_INVENTORY = 0x0B39,
@@ -552,11 +545,9 @@ enum OpcodeClient : uint32
CMSG_PARTY_UNINVITE = 0x1982,
CMSG_PARTY_UNSILENCE = 0xBADD,
CMSG_PETITION_BUY = 0x0010,
CMSG_PETITION_QUERY = 0xBADD,
CMSG_PETITION_RENAME_GUILD = 0x0920,
CMSG_PETITION_SHOW_LIST = 0x000F,
CMSG_PETITION_SHOW_SIGNATURES = 0x0BC4,
CMSG_PETITION_SIGN = 0xBADD,
CMSG_PET_ABANDON = 0x0005,
CMSG_PET_ACTION = 0x133A,
CMSG_PET_BATTLE_FINAL_NOTIF = 0x0565,
@@ -589,7 +580,6 @@ enum OpcodeClient : uint32
CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x128A,
CMSG_QUERY_CORPSE_TRANSPORT = 0x0908,
CMSG_QUERY_COUNTDOWN_TIMER = 0x09DE,
CMSG_QUERY_GUILD_XP = 0xBADD,
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x0A07,
CMSG_QUERY_NEXT_MAIL_TIME = 0x0B31,
CMSG_QUERY_PETITION = 0x048B,
@@ -692,7 +682,6 @@ enum OpcodeClient : uint32
CMSG_SET_FACTION_CHEAT = 0xBADD,
CMSG_SET_FACTION_INACTIVE = 0x09E2,
CMSG_SET_FACTION_NOT_AT_WAR = 0x0A06,
CMSG_SET_GUILD_BANK_TEXT = 0xBADD,
CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x02C4,
CMSG_SET_LFG_BONUS_FACTION_ID = 0x009D,
CMSG_SET_LFG_COMMENT = 0xBADD,
@@ -1201,31 +1190,29 @@ enum OpcodeServer : uint32
SMSG_GUILD_ACHIEVEMENT_DELETED = 0x1058,
SMSG_GUILD_ACHIEVEMENT_EARNED = 0x1048,
SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x1826,
SMSG_GUILD_BANK_LIST = 0x1245,
SMSG_GUILD_BANK_LOG_QUERY_RESULT = 0x1237,
SMSG_GUILD_BANK_MONEY_WITHDRAWN = 0x1047,
SMSG_GUILD_BANK_QUERY_TEXT_RESULT = 0x1875,
SMSG_GUILD_BANK_QUERY_RESULTS = 0x1245,
SMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY = 0x1047,
SMSG_GUILD_BANK_TEXT_QUERY_RESULT = 0x1875,
SMSG_GUILD_CANCEL = 0xBADD,
SMSG_GUILD_CHALLENGE_COMPLETED = 0x1836,
SMSG_GUILD_CHALLENGE_UPDATED = 0x1A06,
SMSG_GUILD_CHALLENGE_UPDATE = 0x1A06,
SMSG_GUILD_CHANGE_NAME_RESULT = 0x1006,
SMSG_GUILD_COMMAND_RESULT = 0x1205,
SMSG_GUILD_COMMAND_RESULT_2 = 0xBADD,
SMSG_GUILD_CRITERIA_DELETED = 0x1805,
SMSG_GUILD_CRITERIA_UPDATE = 0x1208,
SMSG_GUILD_DECLINE = 0xBADD,
SMSG_GUILD_EVENT = 0xBADD,
SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED = 0x1045,
SMSG_GUILD_EVENT_BANK_MONEY_CHANGED = 0x1077,
SMSG_GUILD_EVENT_DISBANDED = 0x1A08,
SMSG_GUILD_EVENT_LOG_QUERY_RESULTS = 0x1075,
SMSG_GUILD_EVENT_LOG_QUERY_RESULT = 0x1075,
SMSG_GUILD_EVENT_MOTD = 0x1825,
SMSG_GUILD_EVENT_NEW_LEADER = 0x1005,
SMSG_GUILD_EVENT_PLAYER_JOINED = 0x1257,
SMSG_GUILD_EVENT_PLAYER_LEFT = 0x1206,
SMSG_GUILD_EVENT_PRESENCE_CHANGE = 0x1228,
SMSG_GUILD_EVENT_RANKS_UPDATED = 0x1018,
SMSG_GUILD_EVENT_RANK_CHANGED = 0x1276,
SMSG_GUILD_EVENT_RANKS_UPDATED = 0x1018,
SMSG_GUILD_EVENT_TAB_ADDED = 0x1868,
SMSG_GUILD_EVENT_TAB_DELETED = 0x1808,
SMSG_GUILD_EVENT_TAB_MODIFIED = 0x1035,
@@ -1236,34 +1223,25 @@ enum OpcodeServer : uint32
SMSG_GUILD_INVITE_DECLINED = 0x1226,
SMSG_GUILD_INVITE_EXPIRED = 0x1246,
SMSG_GUILD_KNOWN_RECIPES = 0x1078,
SMSG_GUILD_MAX_DAILY_XP = 0xBADD,
SMSG_GUILD_MEMBERS_WITH_RECIPE = 0x1277,
SMSG_GUILD_MEMBER_DAILY_RESET = 0x1015,
SMSG_GUILD_MEMBER_RECIPES = 0x1036,
SMSG_GUILD_MEMBER_UPDATE_NOTE = 0x1846,
SMSG_GUILD_MOVED = 0x1838,
SMSG_GUILD_MOVE_COMPLETE = 0xBADD,
SMSG_GUILD_MOVE_STARTING = 0x1877,
SMSG_GUILD_NAME_CHANGED = 0x1A07,
SMSG_GUILD_NEWS = 0x1027,
SMSG_GUILD_NEWS_DELETED = 0x1007,
SMSG_GUILD_NEWS_UPDATE = 0xBADD,
SMSG_GUILD_PARTY_STATE_RESPONSE = 0x1225,
SMSG_GUILD_PERMISSIONS_QUERY_RESULTS = 0x1827,
SMSG_GUILD_QUERY_RESPONSE = 0x1046,
SMSG_GUILD_RANKS = 0x1218,
SMSG_GUILD_RECIPES = 0xBADD,
SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x1068,
SMSG_GUILD_REPUTATION_WEEKLY_CAP = 0xBADD,
SMSG_GUILD_RESET = 0x1258,
SMSG_GUILD_REWARDS_LIST = 0x1818,
SMSG_GUILD_ROSTER = 0x1026,
SMSG_GUILD_ROSTER_UPDATE = 0x1265,
SMSG_GUILD_SEND_RANK_CHANGE = 0x1207,
SMSG_GUILD_SET_NOTE = 0xBADD,
SMSG_GUILD_TRADESKILL_UPDATE = 0xBADD,
SMSG_GUILD_XP = 0xBADD,
SMSG_GUILD_XP_GAIN = 0xBADD,
SMSG_GUILD_XP_UPDATE = 0xBADD,
SMSG_HEALTH_UPDATE = 0x0BE1,
SMSG_HIGHEST_THREAT_UPDATE = 0x059A,
SMSG_HOTFIX_NOTIFY = 0x1304,
@@ -1517,7 +1495,6 @@ enum OpcodeServer : uint32
SMSG_PERIODICAURALOG = 0x0B1B,
SMSG_PETGODMODE = 0xBADD,
SMSG_PETITION_ALREADY_SIGNED = 0x0D8E,
SMSG_PETITION_DECLINED = 0x1B32,
SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x1055,
SMSG_PETITION_SHOW_LIST = 0x0915,
SMSG_PETITION_SHOW_SIGNATURES = 0x0830,
+9 -9
View File
@@ -1385,23 +1385,23 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co
//case CMSG_ARENA_TEAM_REMOVE: // not profiled
//case CMSG_ARENA_TEAM_LEADER: // not profiled
case CMSG_LOOT_METHOD: // not profiled
case CMSG_GUILD_INVITE_BY_NAME: // not profiled
//case CMSG_GUILD_ACCEPT: // not profiled
case CMSG_GUILD_DECLINE: // not profiled
case CMSG_GUILD_INVITE_BY_NAME: // not profiled
case CMSG_ACCEPT_GUILD_INVITE: // not profiled
case CMSG_GUILD_DECLINE_INVITATION: // not profiled
case CMSG_GUILD_LEAVE: // not profiled
case CMSG_GUILD_DISBAND: // not profiled
case CMSG_GUILD_DELETE: // not profiled
case CMSG_GUILD_SET_GUILD_MASTER: // not profiled
//case CMSG_GUILD_MOTD: // not profiled
case CMSG_GUILD_UPDATE_MOTD_TEXT: // not profiled
case CMSG_GUILD_SET_RANK_PERMISSIONS: // not profiled
case CMSG_GUILD_ADD_RANK: // not profiled
case CMSG_GUILD_DELETE_RANK: // not profiled
case CMSG_GUILD_UPDATE_INFO_TEXT: // not profiled
case CMSG_GUILD_UPDATE_INFO_TEXT: // not profiled
case CMSG_GUILD_BANK_DEPOSIT_MONEY: // not profiled
//case CMSG_GUILD_BANK_WITHDRAW_MONEY: // not profiled
case CMSG_GUILD_BANK_WITHDRAW_MONEY: // not profiled
case CMSG_GUILD_BANK_BUY_TAB: // not profiled
//case CMSG_GUILD_BANK_UPDATE_TAB: // not profiled
case CMSG_GUILD_BANK_UPDATE_TAB: // not profiled
//case CMSG_SET_GUILD_BANK_TEXT: // not profiled
//case CMSG_SAVE_GUILD_EMBLEM: // not profiled
case CMSG_SAVE_GUILD_EMBLEM: // not profiled
//case MSG_PETITION_RENAME: // not profiled
//case MSG_TALENT_WIPE_CONFIRM: // not profiled
case CMSG_SET_DUNGEON_DIFFICULTY: // not profiled
+99 -50
View File
@@ -166,6 +166,44 @@ namespace WorldPackets
namespace Guild
{
class QueryGuildInfo;
class GuildInviteByName;
class AcceptGuildInvite;
class DeclineGuildInvites;
class GuildDeclineInvitation;
class GuildGetRoster;
class GuildPromoteMember;
class GuildDemoteMember;
class GuildOfficerRemoveMember;
class GuildAssignMemberRank;
class GuildLeave;
class GuildDelete;
class GuildUpdateMotdText;
class GuildGetRanks;
class GuildAddRank;
class GuildDeleteRank;
class GuildUpdateInfoText;
class GuildSetMemberNote;
class GuildEventLogQuery;
class GuildBankRemainingWithdrawMoneyQuery;
class GuildPermissionsQuery;
class GuildSetRankPermissions;
class GuildBankActivate;
class GuildBankQueryTab;
class GuildBankDepositMoney;
class GuildBankWithdrawMoney;
class GuildBankSwapItems;
class GuildBankBuyTab;
class GuildBankUpdateTab;
class GuildBankLogQuery;
class GuildBankTextQuery;
class GuildBankSetTabText;
class RequestGuildPartyState;
class RequestGuildRewardsList;
class GuildQueryNews;
class GuildNewsUpdateSticky;
class GuildSetGuildMaster;
class GuildChallengeUpdateRequest;
class SaveGuildEmblem;
}
namespace Inspect
@@ -243,6 +281,19 @@ namespace WorldPackets
class GossipSelectOption;
}
namespace Petition
{
class DeclinePetition;
class OfferPetition;
class PetitionBuy;
class PetitionRenameGuild;
class PetitionShowList;
class PetitionShowSignatures;
class QueryPetition;
class SignPetition;
class TurnInPetition;
}
namespace Query
{
class QueryCreature;
@@ -862,44 +913,43 @@ class WorldSession
void HandlePartyAssignmentOpcode(WorldPacket& recvData);
void HandleRolePollBeginOpcode(WorldPacket& recvData);
void HandlePetitionBuyOpcode(WorldPacket& recvData);
void HandlePetitionShowSignOpcode(WorldPacket& recvData);
void HandlePetitionQueryOpcode(WorldPacket& recvData);
void HandlePetitionRenameGuildOpcode(WorldPacket& recvData);
void HandlePetitionSignOpcode(WorldPacket& recvData);
void HandlePetitionDeclineOpcode(WorldPacket& recvData);
void HandleOfferPetitionOpcode(WorldPacket& recvData);
void HandleTurnInPetitionOpcode(WorldPacket& recvData);
void HandleDeclinePetition(WorldPackets::Petition::DeclinePetition& packet);
void HandleOfferPetition(WorldPackets::Petition::OfferPetition& packet);
void HandlePetitionBuy(WorldPackets::Petition::PetitionBuy& packet);
void HandlePetitionShowSignatures(WorldPackets::Petition::PetitionShowSignatures& packet);
void HandleQueryPetition(WorldPackets::Petition::QueryPetition& packet);
void HandlePetitionRenameGuild(WorldPackets::Petition::PetitionRenameGuild& packet);
void HandleSignPetition(WorldPackets::Petition::SignPetition& packet);
void HandleTurnInPetition(WorldPackets::Petition::TurnInPetition& packet);
void HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo& query);
void HandleGuildInviteOpcode(WorldPacket& recvPacket);
void HandleGuildOfficerRemoveMemberOpcode(WorldPacket& recvPacket);
void HandleGuildAcceptOpcode(WorldPacket& recvPacket);
void HandleGuildDeclineOpcode(WorldPacket& recvPacket);
void HandleGuildEventLogQueryOpcode(WorldPacket& recvPacket);
void HandleGuildRosterOpcode(WorldPacket& recvPacket);
void HandleGuildRewardsQueryOpcode(WorldPacket& recvPacket);
void HandleGuildPromoteOpcode(WorldPacket& recvPacket);
void HandleGuildDemoteOpcode(WorldPacket& recvPacket);
void HandleGuildAssignRankOpcode(WorldPacket& recvPacket);
void HandleGuildLeaveOpcode(WorldPacket& recvPacket);
void HandleGuildDisbandOpcode(WorldPacket& recvPacket);
void HandleGuildInviteByName(WorldPackets::Guild::GuildInviteByName& packet);
void HandleGuildOfficerRemoveMember(WorldPackets::Guild::GuildOfficerRemoveMember& packet);
void HandleGuildAcceptInvite(WorldPackets::Guild::AcceptGuildInvite& invite);
void HandleGuildDeclineInvitation(WorldPackets::Guild::GuildDeclineInvitation& decline);
void HandleGuildEventLogQuery(WorldPackets::Guild::GuildEventLogQuery& packet);
void HandleGuildGetRoster(WorldPackets::Guild::GuildGetRoster& packet);
void HandleRequestGuildRewardsList(WorldPackets::Guild::RequestGuildRewardsList& packet);
void HandleGuildPromoteMember(WorldPackets::Guild::GuildPromoteMember& promote);
void HandleGuildDemoteMember(WorldPackets::Guild::GuildDemoteMember& demote);
void HandleGuildAssignRank(WorldPackets::Guild::GuildAssignMemberRank& packet);
void HandleGuildLeave(WorldPackets::Guild::GuildLeave& leave);
void HandleGuildDelete(WorldPackets::Guild::GuildDelete& packet);
void HandleGuildSetAchievementTracking(WorldPacket& recvPacket);
void HandleGuildSetGuildMaster(WorldPacket& recvPacket);
void HandleGuildMOTDOpcode(WorldPacket& recvPacket);
void HandleGuildNewsUpdateStickyOpcode(WorldPacket& recvPacket);
void HandleGuildSetNoteOpcode(WorldPacket& recvPacket);
void HandleGuildGetRanksOpcode(WorldPacket& recvPacket);
void HandleGuildQueryNewsOpcode(WorldPacket& recvPacket);
void HandleGuildSetRankPermissionsOpcode(WorldPacket& recvPacket);
void HandleGuildAddRankOpcode(WorldPacket& recvPacket);
void HandleGuildDeleteRankOpcode(WorldPacket& recvPacket);
void HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket);
void HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket);
void HandleGuildRequestPartyState(WorldPacket& recvPacket);
void HandleGuildRequestChallengeUpdate(WorldPacket& recvPacket);
void HandleGuildRequestMaxDailyXP(WorldPacket& recvPacket);
void HandleAutoDeclineGuildInvites(WorldPacket& recvPacket);
void HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster& packet);
void HandleGuildUpdateMotdText(WorldPackets::Guild::GuildUpdateMotdText& packet);
void HandleGuildNewsUpdateSticky(WorldPackets::Guild::GuildNewsUpdateSticky& packet);
void HandleGuildSetMemberNote(WorldPackets::Guild::GuildSetMemberNote& packet);
void HandleGuildGetRanks(WorldPackets::Guild::GuildGetRanks& packet);
void HandleGuildQueryNews(WorldPackets::Guild::GuildQueryNews& newsQuery);
void HandleGuildSetRankPermissions(WorldPackets::Guild::GuildSetRankPermissions& packet);
void HandleGuildAddRank(WorldPackets::Guild::GuildAddRank& packet);
void HandleGuildDeleteRank(WorldPackets::Guild::GuildDeleteRank& packet);
void HandleGuildUpdateInfoText(WorldPackets::Guild::GuildUpdateInfoText& packet);
void HandleSaveGuildEmblem(WorldPackets::Guild::SaveGuildEmblem& packet);
void HandleGuildRequestPartyState(WorldPackets::Guild::RequestGuildPartyState& packet);
void HandleGuildChallengeUpdateRequest(WorldPackets::Guild::GuildChallengeUpdateRequest& packet);
void HandleDeclineGuildInvites(WorldPackets::Guild::DeclineGuildInvites& packet);
void HandleGuildFinderAddRecruit(WorldPacket& recvPacket);
void HandleGuildFinderBrowse(WorldPacket& recvPacket);
@@ -917,12 +967,12 @@ class WorldSession
void HandleMoveSplineDoneOpcode(WorldPacket& recvPacket);
void SendActivateTaxiReply(ActivateTaxiReply reply);
void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket);
void HandleTabardVendorActivateOpcode(WorldPackets::NPC::Hello& packet);
void HandleBankerActivateOpcode(WorldPackets::NPC::Hello& packet);
void HandleBuyBankSlotOpcode(WorldPacket& recvPacket);
void HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet);
void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
void HandlePetitionShowListOpcode(WorldPacket& recvPacket);
void HandlePetitionShowList(WorldPackets::Petition::PetitionShowList& packet);
void HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet);
void HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet);
void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket);
@@ -1193,20 +1243,19 @@ class WorldSession
void HandleSetTaxiBenchmarkOpcode(WorldPacket& recvData);
// Guild Bank
void HandleGuildPermissions(WorldPacket& recvData);
void HandleGuildBankMoneyWithdrawn(WorldPacket& recvData);
void HandleGuildBankerActivate(WorldPacket& recvData);
void HandleGuildBankQueryTab(WorldPacket& recvData);
void HandleGuildBankLogQuery(WorldPacket& recvData);
void HandleGuildBankDepositMoney(WorldPacket& recvData);
void HandleGuildBankWithdrawMoney(WorldPacket& recvData);
void HandleGuildBankSwapItems(WorldPacket& recvData);
void HandleGuildPermissionsQuery(WorldPackets::Guild::GuildPermissionsQuery& packet);
void HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery& packet);
void HandleGuildBankActivate(WorldPackets::Guild::GuildBankActivate& packet);
void HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTab& packet);
void HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery& packet);
void HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet);
void HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney& packet);
void HandleGuildBankSwapItems(WorldPackets::Guild::GuildBankSwapItems& packet);
void HandleGuildBankUpdateTab(WorldPacket& recvData);
void HandleGuildBankBuyTab(WorldPacket& recvData);
void HandleQueryGuildBankTabText(WorldPacket& recvData);
void HandleSetGuildBankTabText(WorldPacket& recvData);
void HandleGuildQueryXPOpcode(WorldPacket& recvData);
void HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdateTab& packet);
void HandleGuildBankBuyTab(WorldPackets::Guild::GuildBankBuyTab& packet);
void HandleGuildBankTextQuery(WorldPackets::Guild::GuildBankTextQuery& packet);
void HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet);
// Refer-a-Friend
void HandleGrantLevel(WorldPacket& recvData);
+4 -12
View File
@@ -925,11 +925,11 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_INSTANCE_UNLOAD_DELAY] = sConfigMgr->GetIntDefault("Instance.UnloadDelay", 30 * MINUTE * IN_MILLISECONDS);
m_int_configs[CONFIG_MAX_PRIMARY_TRADE_SKILL] = sConfigMgr->GetIntDefault("MaxPrimaryTradeSkill", 2);
m_int_configs[CONFIG_MIN_PETITION_SIGNS] = sConfigMgr->GetIntDefault("MinPetitionSigns", 9);
if (m_int_configs[CONFIG_MIN_PETITION_SIGNS] > 9)
m_int_configs[CONFIG_MIN_PETITION_SIGNS] = sConfigMgr->GetIntDefault("MinPetitionSigns", 4);
if (m_int_configs[CONFIG_MIN_PETITION_SIGNS] > 4)
{
TC_LOG_ERROR("server.loading", "MinPetitionSigns (%i) must be in range 0..9. Set to 9.", m_int_configs[CONFIG_MIN_PETITION_SIGNS]);
m_int_configs[CONFIG_MIN_PETITION_SIGNS] = 9;
TC_LOG_ERROR("server.loading", "MinPetitionSigns (%i) must be in range 0..4. Set to 4.", m_int_configs[CONFIG_MIN_PETITION_SIGNS]);
m_int_configs[CONFIG_MIN_PETITION_SIGNS] = 4;
}
m_int_configs[CONFIG_GM_LOGIN_STATE] = sConfigMgr->GetIntDefault("GM.LoginState", 2);
@@ -1329,13 +1329,8 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_DB_PING_INTERVAL] = sConfigMgr->GetIntDefault("MaxPingTime", 30);
// Guild save interval
m_bool_configs[CONFIG_GUILD_LEVELING_ENABLED] = sConfigMgr->GetBoolDefault("Guild.LevelingEnabled", true);
m_int_configs[CONFIG_GUILD_SAVE_INTERVAL] = sConfigMgr->GetIntDefault("Guild.SaveInterval", 15);
m_int_configs[CONFIG_GUILD_MAX_LEVEL] = sConfigMgr->GetIntDefault("Guild.MaxLevel", 25);
m_int_configs[CONFIG_GUILD_UNDELETABLE_LEVEL] = sConfigMgr->GetIntDefault("Guild.UndeletableLevel", 4);
rate_values[RATE_XP_GUILD_MODIFIER] = sConfigMgr->GetFloatDefault("Guild.XPModifier", 0.25f);
m_int_configs[CONFIG_GUILD_DAILY_XP_CAP] = sConfigMgr->GetIntDefault("Guild.DailyXPCap", 7807500);
m_int_configs[CONFIG_GUILD_WEEKLY_REP_CAP] = sConfigMgr->GetIntDefault("Guild.WeeklyReputationCap", 4375);
// misc
m_bool_configs[CONFIG_PDUMP_NO_PATHS] = sConfigMgr->GetBoolDefault("PlayerDump.DisallowPaths", true);
@@ -1736,9 +1731,6 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Loading Auctions...");
sAuctionMgr->LoadAuctions();
TC_LOG_INFO("server.loading", "Loading Guild XP for level...");
sGuildMgr->LoadGuildXpForLevel();
TC_LOG_INFO("server.loading", "Loading Guild rewards...");
sGuildMgr->LoadGuildRewards();
-4
View File
@@ -164,7 +164,6 @@ enum WorldBoolConfigs
CONFIG_WARDEN_ENABLED,
CONFIG_ENABLE_MMAPS,
CONFIG_WINTERGRASP_ENABLE,
CONFIG_GUILD_LEVELING_ENABLED,
CONFIG_UI_QUESTLEVELS_IN_DIALOGS, // Should we add quest levels to the title in the NPC dialogs?
CONFIG_EVENT_ANNOUNCE,
CONFIG_STATS_LIMITS_ENABLE,
@@ -350,10 +349,7 @@ enum WorldIntConfigs
CONFIG_WINTERGRASP_NOBATTLETIME,
CONFIG_WINTERGRASP_RESTART_AFTER_CRASH,
CONFIG_GUILD_SAVE_INTERVAL,
CONFIG_GUILD_MAX_LEVEL,
CONFIG_GUILD_UNDELETABLE_LEVEL,
CONFIG_GUILD_DAILY_XP_CAP,
CONFIG_GUILD_WEEKLY_REP_CAP,
CONFIG_PACKET_SPOOF_POLICY,
CONFIG_PACKET_SPOOF_BANMODE,
CONFIG_PACKET_SPOOF_BANDURATION,
@@ -230,7 +230,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_DEL_GUILD_MEMBER_WITHDRAW, "TRUNCATE guild_member_withdraw", CONNECTION_ASYNC);
// 0: uint32, 1: uint32, 2: uint32
PrepareStatement(CHAR_SEL_CHAR_DATA_FOR_GUILD, "SELECT name, level, class, zone, account FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_CHAR_DATA_FOR_GUILD, "SELECT name, level, class, gender, zone, account FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_DEL_GUILD_ACHIEVEMENT, "DELETE FROM guild_achievement WHERE guildId = ? AND achievement = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_GUILD_ACHIEVEMENT, "INSERT INTO guild_achievement (guildId, achievement, date, guids) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_GUILD_ACHIEVEMENT_CRITERIA, "DELETE FROM guild_achievement_progress WHERE guildId = ? AND criteria = ?", CONNECTION_ASYNC);
@@ -239,8 +239,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_DEL_ALL_GUILD_ACHIEVEMENT_CRITERIA, "DELETE FROM guild_achievement_progress WHERE guildId = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_GUILD_ACHIEVEMENT, "SELECT achievement, date, guids FROM guild_achievement WHERE guildId = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_GUILD_ACHIEVEMENT_CRITERIA, "SELECT criteria, counter, date, completedGuid FROM guild_achievement_progress WHERE guildId = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_UPD_GUILD_EXPERIENCE, "UPDATE guild SET level = ?, experience = ?, todayExperience = ? WHERE guildId = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_GUILD_RESET_TODAY_EXPERIENCE, "UPDATE guild SET todayExperience = 0", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_GUILD_NEWS, "INSERT INTO guild_newslog (guildid, LogGuid, EventType, PlayerGuid, Flags, Value, Timestamp) VALUES (?, ?, ?, ?, ?, ?, ?)"
" ON DUPLICATE KEY UPDATE LogGuid = VALUES (LogGuid), EventType = VALUES (EventType), PlayerGuid = VALUES (PlayerGuid), Flags = VALUES (Flags), Value = VALUES (Value), Timestamp = VALUES (Timestamp)", CONNECTION_ASYNC);
@@ -301,17 +299,14 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_INS_GAME_EVENT_CONDITION_SAVE, "INSERT INTO game_event_condition_save (eventEntry, condition_id, done) VALUES (?, ?, ?)", CONNECTION_ASYNC);
// Petitions
PrepareStatement(CHAR_SEL_PETITION, "SELECT ownerguid, name, type FROM petition WHERE petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION, "SELECT ownerguid, name FROM petition WHERE petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_SIGNATURE, "SELECT playerguid FROM petition_sign WHERE petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_DEL_ALL_PETITION_SIGNATURES, "DELETE FROM petition_sign WHERE playerguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_SIGNATURE, "DELETE FROM petition_sign WHERE playerguid = ? AND type = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_PETITION_BY_OWNER, "SELECT petitionguid FROM petition WHERE ownerguid = ? AND type = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_TYPE, "SELECT type FROM petition WHERE petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_SIGNATURES, "SELECT ownerguid, (SELECT COUNT(playerguid) FROM petition_sign WHERE petition_sign.petitionguid = ?) AS signs, type FROM petition WHERE petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_BY_OWNER, "SELECT petitionguid FROM petition WHERE ownerguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_SIGNATURES, "SELECT ownerguid, (SELECT COUNT(playerguid) FROM petition_sign WHERE petition_sign.petitionguid = ?) AS signs FROM petition WHERE petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_SIG_BY_ACCOUNT, "SELECT playerguid FROM petition_sign WHERE player_account = ? AND petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_OWNER_BY_GUID, "SELECT ownerguid FROM petition WHERE petitionguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_SIG_BY_GUID, "SELECT ownerguid, petitionguid FROM petition_sign WHERE playerguid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_PETITION_SIG_BY_GUID_TYPE, "SELECT ownerguid, petitionguid FROM petition_sign WHERE playerguid = ? AND type = ?", CONNECTION_SYNCH);
// Arena teams
PrepareStatement(CHAR_SEL_CHARACTER_ARENAINFO, "SELECT arenaTeamId, weekGames, seasonGames, seasonWins, personalRating FROM arena_team_member WHERE guid = ?", CONNECTION_ASYNC);
@@ -492,7 +487,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_DEL_GROUP_INSTANCE_BY_MAP_DIFF, "DELETE FROM group_instance USING group_instance LEFT JOIN instance ON group_instance.instance = id WHERE map = ? and difficulty = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_INSTANCE_BY_MAP_DIFF, "DELETE FROM instance WHERE map = ? and difficulty = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_MAIL_ITEM_BY_ID, "DELETE FROM mail_items WHERE mail_id = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_PETITION, "INSERT INTO petition (ownerguid, petitionguid, name, type) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_PETITION, "INSERT INTO petition (ownerguid, petitionguid, name) VALUES (?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_BY_GUID, "DELETE FROM petition WHERE petitionguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_SIGNATURE_BY_GUID, "DELETE FROM petition_sign WHERE petitionguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_CHAR_DECLINED_NAME, "DELETE FROM character_declinedname WHERE guid = ?", CONNECTION_ASYNC);
@@ -562,8 +557,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
"spellPower, resilience) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_BY_OWNER, "DELETE FROM petition WHERE ownerguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER, "DELETE FROM petition_sign WHERE ownerguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_BY_OWNER_AND_TYPE, "DELETE FROM petition WHERE ownerguid = ? AND type = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER_AND_TYPE, "DELETE FROM petition_sign WHERE ownerguid = ? AND type = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_CHAR_GLYPHS, "INSERT INTO character_glyphs (guid, talentGroup, glyph1, glyph2, glyph3, glyph4, glyph5, glyph6, glyph7, glyph8, glyph9) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_CHAR_TALENT_BY_SPELL_SPEC, "DELETE FROM character_talent WHERE guid = ? and spell = ? and talentGroup = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_CHAR_TALENT, "INSERT INTO character_talent (guid, spell, talentGroup) VALUES (?, ?, ?)", CONNECTION_ASYNC);
@@ -214,8 +214,6 @@ enum CharacterDatabaseStatements
CHAR_DEL_ALL_GUILD_ACHIEVEMENT_CRITERIA,
CHAR_SEL_GUILD_ACHIEVEMENT,
CHAR_SEL_GUILD_ACHIEVEMENT_CRITERIA,
CHAR_UPD_GUILD_EXPERIENCE,
CHAR_UPD_GUILD_RESET_TODAY_EXPERIENCE,
CHAR_INS_GUILD_NEWS,
CHAR_SEL_CHANNEL,
@@ -274,14 +272,11 @@ enum CharacterDatabaseStatements
CHAR_SEL_PETITION,
CHAR_SEL_PETITION_SIGNATURE,
CHAR_DEL_ALL_PETITION_SIGNATURES,
CHAR_DEL_PETITION_SIGNATURE,
CHAR_SEL_PETITION_BY_OWNER,
CHAR_SEL_PETITION_TYPE,
CHAR_SEL_PETITION_SIGNATURES,
CHAR_SEL_PETITION_SIG_BY_ACCOUNT,
CHAR_SEL_PETITION_OWNER_BY_GUID,
CHAR_SEL_PETITION_SIG_BY_GUID,
CHAR_SEL_PETITION_SIG_BY_GUID_TYPE,
CHAR_INS_PLAYER_BGDATA,
CHAR_DEL_PLAYER_BGDATA,
@@ -490,8 +485,6 @@ enum CharacterDatabaseStatements
CHAR_INS_CHAR_STATS,
CHAR_DEL_PETITION_BY_OWNER,
CHAR_DEL_PETITION_SIGNATURE_BY_OWNER,
CHAR_DEL_PETITION_BY_OWNER_AND_TYPE,
CHAR_DEL_PETITION_SIGNATURE_BY_OWNER_AND_TYPE,
CHAR_INS_CHAR_GLYPHS,
CHAR_DEL_CHAR_TALENT_BY_SPELL_SPEC,
CHAR_INS_CHAR_TALENT,
@@ -91,4 +91,5 @@ void WorldDatabaseConnection::DoPrepareStatements()
PrepareStatement(WORLD_DEL_DISABLES, "DELETE FROM disables WHERE entry = ? AND sourceType = ?", CONNECTION_ASYNC);
PrepareStatement(WORLD_UPD_CREATURE_ZONE_AREA_DATA, "UPDATE creature SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, "UPDATE gameobject SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(WORLD_SEL_GUILD_REWARDS_REQ_ACHIEVEMENTS, "SELECT AchievementRequired FROM guild_rewards_req_achievements WHERE ItemID = ?", CONNECTION_SYNCH);
}
@@ -112,6 +112,7 @@ enum WorldDatabaseStatements
WORLD_DEL_DISABLES,
WORLD_UPD_CREATURE_ZONE_AREA_DATA,
WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA,
WORLD_SEL_GUILD_REWARDS_REQ_ACHIEVEMENTS,
MAX_WORLDDATABASE_STATEMENTS
};