Core: Updated to 10.0.5

Port From (https://github.com/TrinityCore/TrinityCore/commit/4bec7233badf9d3ab71dbdde8b24f66f7c4eedfb)
This commit is contained in:
hondacrx
2023-01-30 10:07:42 -05:00
parent e982be523a
commit 08fcedaf21
25 changed files with 1684 additions and 1470 deletions
@@ -3600,6 +3600,10 @@ namespace Game.Achievements
if (GameTime.GetGameTime() - referencePlayer.m_playerData.LogoutTime < reqValue * Time.Day)
return false;
break;
case ModifierTreeType.PlayerHasPerksProgramPendingReward: // 350
if (!referencePlayer.m_activePlayerData.HasPerksProgramPendingReward)
return false;
break;
case ModifierTreeType.PlayerCanUseItem: // 351
{
ItemTemplate itemTemplate = Global.ObjectMgr.GetItemTemplate(reqValue);
@@ -3607,6 +3611,26 @@ namespace Game.Achievements
return false;
break;
}
case ModifierTreeType.PlayerHasAtLeastProfPathRanks: // 355
{
uint ranks = 0;
foreach (TraitConfig traitConfig in referencePlayer.m_activePlayerData.TraitConfigs)
{
if ((TraitConfigType)(int)traitConfig.Type != TraitConfigType.Profession)
continue;
if (traitConfig.SkillLineID != secondaryAsset)
continue;
foreach (TraitEntry traitEntry in traitConfig.Entries)
if (CliDB.TraitNodeEntryStorage.LookupByKey(traitEntry.TraitNodeEntryID)?.GetNodeEntryType() == TraitNodeEntryType.ProfPath)
ranks += (uint)(traitEntry.Rank + traitEntry.GrantedRanks);
}
if (ranks < reqValue)
return false;
break;
}
default:
return false;
}
+3 -1
View File
@@ -191,7 +191,9 @@ namespace Game.DataStorage
public uint Id;
public int TraitDefinitionID;
public int MaxRanks;
public byte NodeRecordType;
public byte NodeEntryType;
public TraitNodeEntryType GetNodeEntryType() { return (TraitNodeEntryType)NodeEntryType; }
}
public sealed class TraitNodeEntryXTraitCondRecord
@@ -1206,6 +1206,7 @@ namespace Game.Entities
public uint SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0
public uint InteractRadiusOverride; // 3 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0
public uint CustomizationScope; // 4 Customization Scope, int, Min value: 0, Max value: 2147483647, Default value: 0
public uint Preventteleportingtheplayeroutofthebarbershopchair;// 5 Prevent teleporting the player out of the barbershop chair, enum { false, true, }; Default: false
}
public struct destructiblebuilding
@@ -1512,6 +1513,12 @@ namespace Game.Entities
{
public uint Profession; // 0 Profession, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing
}
public struct perksProgramChest
{
public uint Script; // 0 Script, References: SpellScript, NoValue = 0
public uint autoClose; // 1 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000
}
#endregion
}
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -1246,7 +1246,7 @@ namespace Game.Entities
{
m_mail.Clear();
Dictionary<uint, Mail> mailById = new();
Dictionary<ulong, Mail> mailById = new();
if (!mailsResult.IsEmpty())
{
@@ -1254,7 +1254,7 @@ namespace Game.Entities
{
Mail m = new();
m.messageID = mailsResult.Read<uint>(0);
m.messageID = mailsResult.Read<ulong>(0);
m.messageType = (MailMessageType)mailsResult.Read<byte>(1);
m.sender = mailsResult.Read<uint>(2);
m.receiver = mailsResult.Read<uint>(3);
@@ -1289,7 +1289,7 @@ namespace Game.Entities
do
{
uint mailId = mailItemsResult.Read<uint>(52);
ulong mailId = mailItemsResult.Read<ulong>(52);
_LoadMailedItem(GetGUID(), this, mailId, mailById[mailId], mailItemsResult.GetFields(), additionalData.LookupByKey(mailItemsResult.Read<ulong>(0)));
}
while (mailItemsResult.NextRow());
@@ -1298,7 +1298,7 @@ namespace Game.Entities
UpdateNextMailTimeAndUnreads();
}
static Item _LoadMailedItem(ObjectGuid playerGuid, Player player, uint mailId, Mail mail, SQLFields fields, ItemAdditionalLoadInfo addionalData)
static Item _LoadMailedItem(ObjectGuid playerGuid, Player player, ulong mailId, Mail mail, SQLFields fields, ItemAdditionalLoadInfo addionalData)
{
ulong itemGuid = fields.Read<ulong>(0);
uint itemEntry = fields.Read<uint>(1);
@@ -4081,7 +4081,7 @@ namespace Game.Entities
SQLResult resultMail = DB.Characters.Query(stmt);
if (!resultMail.IsEmpty())
{
MultiMap<uint, Item> itemsByMail = new();
MultiMap<ulong, Item> itemsByMail = new();
stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_MAILITEMS);
stmt.AddValue(0, guid);
@@ -4114,7 +4114,7 @@ namespace Game.Entities
do
{
uint mailId = resultItems.Read<uint>(44);
ulong mailId = resultItems.Read<ulong>(44);
Item mailItem = _LoadMailedItem(playerGuid, null, mailId, null, resultItems.GetFields(), additionalData.LookupByKey(resultItems.Read<ulong>(0)));
if (mailItem != null)
itemsByMail.Add(mailId, mailItem);
@@ -4124,7 +4124,7 @@ namespace Game.Entities
do
{
uint mail_id = resultMail.Read<uint>(0);
ulong mail_id = resultMail.Read<ulong>(0);
MailMessageType mailType = (MailMessageType)resultMail.Read<byte>(1);
ushort mailTemplateId = resultMail.Read<ushort>(2);
uint sender = resultMail.Read<uint>(3);
+6 -1
View File
@@ -2879,10 +2879,15 @@ namespace Game.Entities
}
public void SendQuestGiverStatusMultiple()
{
SendQuestGiverStatusMultiple(m_clientGUIDs);
}
public void SendQuestGiverStatusMultiple(List<ObjectGuid> guids)
{
QuestGiverStatusMultiple response = new();
foreach (var itr in m_clientGUIDs)
foreach (var itr in guids)
{
if (itr.IsAnyTypeCreature())
{
+16 -8
View File
@@ -2763,7 +2763,8 @@ namespace Game.Entities
//Mail
public void AddMail(Mail mail) { m_mail.Insert(0, mail); }
public void RemoveMail(uint id)
public void RemoveMail(ulong id)
{
foreach (var mail in m_mail)
{
@@ -2775,27 +2776,30 @@ namespace Game.Entities
}
}
}
public void SendMailResult(uint mailId, MailResponseType mailAction, MailResponseResult mailError, InventoryResult equipError = 0, uint item_guid = 0, uint item_count = 0)
public void SendMailResult(ulong mailId, MailResponseType mailAction, MailResponseResult mailError, InventoryResult equipError = 0, ulong itemGuid = 0, uint itemCount = 0)
{
MailCommandResult result = new();
result.MailID = mailId;
result.Command = (uint)mailAction;
result.ErrorCode = (uint)mailError;
result.Command = (int)mailAction;
result.ErrorCode = (int)mailError;
if (mailError == MailResponseResult.EquipError)
result.BagResult = (uint)equipError;
result.BagResult = (int)equipError;
else if (mailAction == MailResponseType.ItemTaken)
{
result.AttachID = item_guid;
result.QtyInInventory = item_count;
result.AttachID = itemGuid;
result.QtyInInventory = (int)itemCount;
}
SendPacket(result);
}
void SendNewMail()
{
SendPacket(new NotifyReceivedMail());
}
public void UpdateNextMailTimeAndUnreads()
{
// calculate next delivery time (min. from non-delivered mails
@@ -2814,6 +2818,7 @@ namespace Game.Entities
++unReadMails;
}
}
public void AddNewMailDeliverTime(long deliver_time)
{
if (deliver_time <= GameTime.GetGameTime()) // ready now
@@ -2827,16 +2832,19 @@ namespace Game.Entities
m_nextMailDelivereTime = deliver_time;
}
}
public void AddMItem(Item it)
{
mMitems[it.GetGUID().GetCounter()] = it;
}
public bool RemoveMItem(ulong id)
{
return mMitems.Remove(id);
}
public Item GetMItem(ulong id) { return mMitems.LookupByKey(id); }
public Mail GetMail(uint id) { return m_mail.Find(p => p.messageID == id); }
public Mail GetMail(ulong id) { return m_mail.Find(p => p.messageID == id); }
public List<Mail> GetMails() { return m_mail; }
public uint GetMailSize() { return (uint)m_mail.Count; }
+6 -6
View File
@@ -9614,7 +9614,7 @@ namespace Game
return; // any mails need to be returned or deleted
}
MultiMap<uint, MailItemInfo> itemsCache = new();
MultiMap<ulong, MailItemInfo> itemsCache = new();
stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_EXPIRED_MAIL_ITEMS);
stmt.AddValue(0, curTime);
SQLResult items = DB.Characters.Query(stmt);
@@ -9625,7 +9625,7 @@ namespace Game
{
item.item_guid = result.Read<uint>(0);
item.item_template = result.Read<uint>(1);
uint mailId = result.Read<uint>(2);
ulong mailId = result.Read<ulong>(2);
itemsCache.Add(mailId, item);
} while (items.NextRow());
}
@@ -9639,7 +9639,7 @@ namespace Game
continue;
Mail m = new();
m.messageID = result.Read<uint>(0);
m.messageID = result.Read<ulong>(0);
m.messageType = (MailMessageType)result.Read<byte>(1);
m.sender = result.Read<uint>(2);
m.receiver = receiver;
@@ -10360,7 +10360,7 @@ namespace Game
result = DB.Characters.Query("SELECT MAX(id) FROM mail");
if (!result.IsEmpty())
_mailId = result.Read<uint>(0) + 1;
_mailId = result.Read<ulong>(0) + 1;
result = DB.Characters.Query("SELECT MAX(arenateamid) FROM arena_team");
if (!result.IsEmpty())
@@ -10404,7 +10404,7 @@ namespace Game
}
return _equipmentSetGuid++;
}
public uint GenerateMailID()
public ulong GenerateMailID()
{
if (_mailId >= 0xFFFFFFFE)
{
@@ -11042,7 +11042,7 @@ namespace Game
// first free id for selected id type
uint _auctionId;
ulong _equipmentSetGuid;
uint _mailId;
ulong _mailId;
uint _hiPetNumber;
ulong _creatureSpawnId;
ulong _gameObjectSpawnId;
-2
View File
@@ -1112,8 +1112,6 @@ namespace Game
// START OF DUMMY VALUES
features.ComplaintStatus = (byte)ComplaintStatus.EnabledWithAutoIgnore;
features.ScrollOfResurrectionRequestsRemaining = 1;
features.ScrollOfResurrectionMaxRequestsPerDay = 1;
features.TwitterPostThrottleLimit = 60;
features.TwitterPostThrottleCooldown = 20;
features.CfgRealmID = 2;
+1 -1
View File
@@ -405,7 +405,7 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.MailTakeItem)]
void HandleMailTakeItem(MailTakeItem takeItem)
{
uint AttachID = takeItem.AttachID;
ulong AttachID = takeItem.AttachID;
if (!CanOpenMailBox(takeItem.Mailbox))
return;
+6
View File
@@ -755,6 +755,12 @@ namespace Game
_player.SendQuestGiverStatusMultiple();
}
[WorldPacketHandler(ClientOpcodes.QuestGiverStatusTrackedQuery)]
void HandleQuestgiverStatusTrackedQueryOpcode(QuestGiverStatusTrackedQuery questGiverStatusTrackedQuery)
{
_player.SendQuestGiverStatusMultiple(questGiverStatusTrackedQuery.QuestGiverGUIDs);
}
[WorldPacketHandler(ClientOpcodes.RequestWorldQuestUpdate)]
void HandleRequestWorldQuestUpdate(RequestWorldQuestUpdate packet)
{
+4 -4
View File
@@ -18,11 +18,11 @@ namespace Game.Mails
items.Add(mii);
}
public bool RemoveItem(uint item_guid)
public bool RemoveItem(ulong itemGuid)
{
foreach (var item in items)
{
if (item.item_guid == item_guid)
if (item.item_guid == itemGuid)
{
items.Remove(item);
return true;
@@ -33,7 +33,7 @@ namespace Game.Mails
public bool HasItems() { return !items.Empty(); }
public uint messageID;
public ulong messageID;
public MailMessageType messageType;
public MailStationery stationery;
public uint mailTemplateId;
@@ -42,7 +42,7 @@ namespace Game.Mails
public string subject;
public string body;
public List<MailItemInfo> items = new();
public List<uint> removedItems = new();
public List<ulong> removedItems = new();
public long expire_time;
public long deliver_time;
public ulong money;
+1 -1
View File
@@ -131,7 +131,7 @@ namespace Game.Mails
if (pReceiver != null)
PrepareItems(pReceiver, trans); // generate mail template items
uint mailId = Global.ObjectMgr.GenerateMailID();
ulong mailId = Global.ObjectMgr.GenerateMailID();
long deliver_time = GameTime.GetGameTime() + deliver_delay;
@@ -478,7 +478,11 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32(BattlemasterListID);
_worldPacket.WriteBit(Registered);
_worldPacket.WriteBit(AffectsRating);
_worldPacket.WriteBit(DeserterPenalty != null);
_worldPacket.FlushBits();
if (DeserterPenalty != null)
DeserterPenalty.Write(_worldPacket);
}
public enum MatchState
@@ -492,6 +496,7 @@ namespace Game.Networking.Packets
public MatchState State = MatchState.Inactive;
public long StartTime;
public int Duration;
public RatedMatchDeserterPenalty DeserterPenalty;
public byte ArenaFaction;
public uint BattlemasterListID;
public bool Registered;
@@ -598,6 +603,20 @@ namespace Game.Networking.Packets
}
}
class RatedMatchDeserterPenalty
{
public int PersonalRatingChange;
public int QueuePenaltySpellID;
public int QueuePenaltyDuration;
public void Write(WorldPacket data)
{
data.WriteInt32(PersonalRatingChange);
data.WriteInt32(QueuePenaltySpellID);
data.WriteInt32(QueuePenaltyDuration);
}
}
public class PVPMatchStatistics
{
public List<PVPMatchPlayerStatistics> Statistics = new();
@@ -21,11 +21,12 @@ namespace Game.Networking.Packets
class CraftingData
{
public int CraftingQualityID;
public int field_4;
public int field_8;
public float QualityProgress;
public int SkillLineAbilityID;
public int CraftingDataID;
public int Multicraft;
public int field_10;
public int field_14;
public int SkillFromReagents;
public int Skill;
public int CritBonusSkill;
public float field_1C;
public ulong field_20;
@@ -44,11 +45,12 @@ namespace Game.Networking.Packets
public void Write(WorldPacket data)
{
data.WriteInt32(CraftingQualityID);
data.WriteInt32(field_4);
data.WriteInt32(field_8);
data.WriteFloat(QualityProgress);
data.WriteInt32(SkillLineAbilityID);
data.WriteInt32(CraftingDataID);
data.WriteInt32(Multicraft);
data.WriteInt32(field_10);
data.WriteInt32(field_14);
data.WriteInt32(SkillFromReagents);
data.WriteInt32(Skill);
data.WriteInt32(CritBonusSkill);
data.WriteFloat(field_1C);
data.WriteUInt64(field_20);
+27 -27
View File
@@ -49,7 +49,7 @@ namespace Game.Networking.Packets
}
public ObjectGuid Mailbox;
public uint MailID;
public ulong MailID;
}
public class SendMail : ClientPacket
@@ -115,20 +115,20 @@ namespace Game.Networking.Packets
public override void Write()
{
_worldPacket.WriteUInt32(MailID);
_worldPacket.WriteUInt32(Command);
_worldPacket.WriteUInt32(ErrorCode);
_worldPacket.WriteUInt32(BagResult);
_worldPacket.WriteUInt32(AttachID);
_worldPacket.WriteUInt32(QtyInInventory);
_worldPacket.WriteUInt64(MailID);
_worldPacket.WriteInt32(Command);
_worldPacket.WriteInt32(ErrorCode);
_worldPacket.WriteInt32(BagResult);
_worldPacket.WriteUInt64(AttachID);
_worldPacket.WriteInt32(QtyInInventory);
}
public uint MailID;
public uint Command;
public uint ErrorCode;
public uint BagResult;
public uint AttachID;
public uint QtyInInventory;
public ulong MailID;
public int Command;
public int ErrorCode;
public int BagResult;
public ulong AttachID;
public int QtyInInventory;
}
public class MailReturnToSender : ClientPacket
@@ -141,7 +141,7 @@ namespace Game.Networking.Packets
SenderGUID = _worldPacket.ReadPackedGuid();
}
public uint MailID;
public ulong MailID;
public ObjectGuid SenderGUID;
}
@@ -156,7 +156,7 @@ namespace Game.Networking.Packets
}
public ObjectGuid Mailbox;
public uint MailID;
public ulong MailID;
}
public class MailDelete : ClientPacket
@@ -169,7 +169,7 @@ namespace Game.Networking.Packets
DeleteReason = _worldPacket.ReadInt32();
}
public uint MailID;
public ulong MailID;
public int DeleteReason;
}
@@ -185,8 +185,8 @@ namespace Game.Networking.Packets
}
public ObjectGuid Mailbox;
public uint MailID;
public uint AttachID;
public ulong MailID;
public ulong AttachID;
}
public class MailTakeMoney : ClientPacket
@@ -197,12 +197,12 @@ namespace Game.Networking.Packets
{
Mailbox = _worldPacket.ReadPackedGuid();
MailID = _worldPacket.ReadUInt32();
Money = _worldPacket.ReadInt64();
Money = _worldPacket.ReadUInt64();
}
public ObjectGuid Mailbox;
public uint MailID;
public long Money;
public ulong MailID;
public ulong Money;
}
public class MailQueryNextMailTime : ClientPacket
@@ -285,7 +285,7 @@ namespace Game.Networking.Packets
public MailAttachedItem(Item item, byte pos)
{
Position = pos;
AttachID = (int)item.GetGUID().GetCounter();
AttachID = item.GetGUID().GetCounter();
Item = new ItemInstance(item);
Count = item.GetCount();
Charges = item.GetSpellCharges();
@@ -318,7 +318,7 @@ namespace Game.Networking.Packets
public void Write(WorldPacket data)
{
data.WriteUInt8(Position);
data.WriteInt32(AttachID);
data.WriteUInt64(AttachID);
data.WriteUInt32(Count);
data.WriteInt32(Charges);
data.WriteUInt32(MaxDurability);
@@ -337,7 +337,7 @@ namespace Game.Networking.Packets
}
public byte Position;
public int AttachID;
public ulong AttachID;
public ItemInstance Item;
public uint Count;
public int Charges;
@@ -352,7 +352,7 @@ namespace Game.Networking.Packets
{
public MailListEntry(Mail mail, Player player)
{
MailID = (int)mail.messageID;
MailID = mail.messageID;
SenderType = (byte)mail.messageType;
switch (mail.messageType)
@@ -387,7 +387,7 @@ namespace Game.Networking.Packets
public void Write(WorldPacket data)
{
data.WriteInt32(MailID);
data.WriteUInt64(MailID);
data.WriteUInt8(SenderType);
data.WriteUInt64(Cod);
data.WriteInt32(StationeryID);
@@ -415,7 +415,7 @@ namespace Game.Networking.Packets
data.WriteString(Body);
}
public int MailID;
public ulong MailID;
public byte SenderType;
public ObjectGuid? SenderCharacter;
public uint? AltSenderID;
@@ -0,0 +1,34 @@
// Copyright (c) CypherCore <http://github.com/CypherCore> All rights reserved.
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
namespace Game.Networking.Packets
{
public struct PerksVendorItem
{
public int VendorItemID;
public int MountID;
public int BattlePetSpeciesID;
public int TransmogSetID;
public int ItemModifiedAppearanceID;
public int Field_14;
public int Field_18;
public int Price;
public long AvailableUntil;
public bool Disabled;
public void Write(WorldPacket data)
{
data.WriteInt32(VendorItemID);
data.WriteInt32(MountID);
data.WriteInt32(BattlePetSpeciesID);
data.WriteInt32(TransmogSetID);
data.WriteInt32(ItemModifiedAppearanceID);
data.WriteInt32(Field_14);
data.WriteInt32(Field_18);
data.WriteInt32(Price);
data.WriteInt64(AvailableUntil);
data.WriteBit(Disabled);
data.FlushBits();
}
}
}
@@ -28,6 +28,21 @@ namespace Game.Networking.Packets
public override void Read() { }
}
class QuestGiverStatusTrackedQuery : ClientPacket
{
public List<ObjectGuid> QuestGiverGUIDs = new();
public QuestGiverStatusTrackedQuery(WorldPacket packet) : base(packet) { }
public override void Read()
{
uint guidCount = _worldPacket.ReadUInt32();
for (uint i = 0; i < guidCount; ++i)
QuestGiverGUIDs.Add(_worldPacket.ReadPackedGuid());
}
}
public class QuestGiverStatusPkt : ServerPacket
{
public QuestGiverStatusPkt() : base(ServerOpcodes.QuestGiverStatus, ConnectionType.Instance)
@@ -899,11 +899,9 @@ namespace Game.Networking.Packets
public override void Read()
{
UnitGUID = _worldPacket.ReadPackedGuid();
DisplayID = _worldPacket.ReadUInt32();
}
public ObjectGuid UnitGUID;
public uint DisplayID;
}
class MirrorImageComponentedData : ServerPacket
@@ -17,9 +17,6 @@ namespace Game.Networking.Packets
{
_worldPacket.WriteUInt8(ComplaintStatus);
_worldPacket.WriteUInt32(ScrollOfResurrectionRequestsRemaining);
_worldPacket.WriteUInt32(ScrollOfResurrectionMaxRequestsPerDay);
_worldPacket.WriteUInt32(CfgRealmID);
_worldPacket.WriteInt32(CfgRealmRecID);
@@ -51,7 +48,6 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(VoiceEnabled);
_worldPacket.WriteBit(EuropaTicketSystemStatus.HasValue);
_worldPacket.WriteBit(ScrollOfResurrectionEnabled);
_worldPacket.WriteBit(BpayStoreEnabled);
_worldPacket.WriteBit(BpayStoreAvailable);
_worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
@@ -140,10 +136,7 @@ namespace Game.Networking.Packets
public bool BpayStoreAvailable;
public bool BpayStoreEnabled;
public SessionAlertConfig? SessionAlert;
public uint ScrollOfResurrectionMaxRequestsPerDay;
public bool ScrollOfResurrectionEnabled;
public EuropaTicketConfig? EuropaTicketSystemStatus;
public uint ScrollOfResurrectionRequestsRemaining;
public uint CfgRealmID;
public byte ComplaintStatus;
public int CfgRealmRecID;
+10 -10
View File
@@ -328,7 +328,7 @@ namespace Game.Networking.Packets
{
public void Read(WorldPacket data)
{
MailID = data.ReadInt32();
MailID = data.ReadUInt64();
uint bodyLength = data.ReadBits<uint>(13);
uint subjectLength = data.ReadBits<uint>(9);
@@ -336,7 +336,7 @@ namespace Game.Networking.Packets
MailSubject = data.ReadString(subjectLength);
}
public int MailID;
public ulong MailID;
public string MailSubject;
public string MailBody;
}
@@ -479,7 +479,7 @@ namespace Game.Networking.Packets
switch (ComplaintType)
{
case SupportSpamType.Mail:
MailID = _worldPacket.ReadUInt32();
MailID = _worldPacket.ReadUInt64();
break;
case SupportSpamType.Chat:
Chat.Read(_worldPacket);
@@ -492,14 +492,14 @@ namespace Game.Networking.Packets
}
public SupportSpamType ComplaintType;
ComplaintOffender Offender;
uint MailID;
ComplaintChat Chat;
public ComplaintOffender Offender;
public ulong MailID;
public ComplaintChat Chat;
ulong EventGuid;
ulong InviteGuid;
public ulong EventGuid;
public ulong InviteGuid;
struct ComplaintOffender
public struct ComplaintOffender
{
public void Read(WorldPacket data)
{
@@ -513,7 +513,7 @@ namespace Game.Networking.Packets
public uint TimeSinceOffence;
}
struct ComplaintChat
public struct ComplaintChat
{
public void Read(WorldPacket data)
{