Updated to 7.3.5.25996 (Db2 files not updated)

This commit is contained in:
hondacrx
2018-02-19 10:32:16 -05:00
parent 0ab432f8c0
commit 0a3dfaba37
43 changed files with 1584 additions and 1425 deletions
@@ -132,18 +132,11 @@ namespace Game.Network.Packets
_worldPacket.WriteUInt8(SuccessInfo.Value.ActiveExpansionLevel);
_worldPacket.WriteUInt8(SuccessInfo.Value.AccountExpansionLevel);
_worldPacket.WriteUInt32(SuccessInfo.Value.TimeSecondsUntilPCKick);
_worldPacket.WriteUInt32(SuccessInfo.Value.AvailableRaces.Count);
_worldPacket.WriteUInt32(SuccessInfo.Value.AvailableClasses.Count);
_worldPacket.WriteUInt32(SuccessInfo.Value.Templates.Count);
_worldPacket.WriteUInt32(SuccessInfo.Value.CurrencyID);
_worldPacket.WriteUInt32(SuccessInfo.Value.Time);
foreach (var race in SuccessInfo.Value.AvailableRaces)
{
_worldPacket.WriteUInt8(race.Key); /// the current race
_worldPacket.WriteUInt8(race.Value); /// the required Expansion
}
foreach (var klass in SuccessInfo.Value.AvailableClasses)
{
_worldPacket.WriteUInt8(klass.Key); /// the current class
@@ -219,7 +212,6 @@ namespace Game.Network.Packets
public List<CharacterTemplate> Templates = new List<CharacterTemplate>(); // list of pre-made character templates. @todo implement
public Dictionary<byte, byte> AvailableClasses; // the minimum AccountExpansion required to select the classes
public Dictionary<byte, byte> AvailableRaces; // the minimum AccountExpansion required to select the races
public bool IsExpansionTrial;
public bool ForceCharacterTemplate; // forces the client to always use a character template when creating a new character. @see Templates. @todo implement
+82 -65
View File
@@ -44,79 +44,35 @@ namespace Game.Network.Packets
_worldPacket.WriteBit(IsDeletedCharacters);
_worldPacket.WriteBit(IsDemonHunterCreationAllowed);
_worldPacket.WriteBit(HasDemonHunterOnRealm);
_worldPacket.WriteBit(HasLevel70OnRealm);
_worldPacket.WriteBit(Unknown7x);
_worldPacket.WriteBit(DisabledClassesMask.HasValue);
_worldPacket.WriteBit(IsAlliedRacesCreationAllowed);
_worldPacket.WriteUInt32(Characters.Count);
_worldPacket.WriteUInt32(FactionChangeRestrictions.Count);
_worldPacket.WriteInt32(MaxCharacterLevel);
_worldPacket.WriteUInt32(RaceUnlockData.Count);
if (DisabledClassesMask.HasValue)
_worldPacket.WriteUInt32(DisabledClassesMask.Value);
foreach (RestrictedFactionChangeRuleInfo rule in FactionChangeRestrictions)
{
_worldPacket.WriteUInt32(rule.Mask);
_worldPacket.WriteUInt8(rule.Race);
}
foreach (CharacterInfo charInfo in Characters)
{
_worldPacket.WritePackedGuid(charInfo.Guid);
_worldPacket.WriteUInt8(charInfo.ListPosition);
_worldPacket.WriteUInt8(charInfo.RaceId);
_worldPacket.WriteUInt8(charInfo.ClassId);
_worldPacket.WriteUInt8(charInfo.Sex);
_worldPacket.WriteUInt8(charInfo.Skin);
_worldPacket.WriteUInt8(charInfo.Face);
_worldPacket.WriteUInt8(charInfo.HairStyle);
_worldPacket.WriteUInt8(charInfo.HairColor);
_worldPacket.WriteUInt8(charInfo.FacialHair);
charInfo.CustomDisplay.ForEach(id => _worldPacket.WriteUInt8(id));
_worldPacket.WriteUInt8(charInfo.Level);
_worldPacket.WriteUInt32(charInfo.ZoneId);
_worldPacket.WriteUInt32(charInfo.MapId);
_worldPacket.WriteVector3(charInfo.PreLoadPosition);
_worldPacket.WritePackedGuid(charInfo.GuildGuid);
_worldPacket.WriteUInt32(charInfo.Flags);
_worldPacket.WriteUInt32(charInfo.CustomizationFlag);
_worldPacket.WriteUInt32(charInfo.Flags3);
_worldPacket.WriteUInt32(charInfo.Pet.CreatureDisplayId);
_worldPacket.WriteUInt32(charInfo.Pet.Level);
_worldPacket.WriteUInt32(charInfo.Pet.CreatureFamily);
charInfo.Write(_worldPacket);
_worldPacket.WriteUInt32(charInfo.ProfessionIds[0]);
_worldPacket.WriteUInt32(charInfo.ProfessionIds[1]);
foreach (var visualItem in charInfo.VisualItems)
{
_worldPacket.WriteUInt32(visualItem.DisplayId);
_worldPacket.WriteUInt32(visualItem.DisplayEnchantId);
_worldPacket.WriteUInt8(visualItem.InventoryType);
}
_worldPacket.WriteUInt32(charInfo.LastPlayedTime);
_worldPacket.WriteUInt16(charInfo.SpecID);
_worldPacket.WriteUInt32(charInfo.Unknown703);
_worldPacket.WriteUInt32(charInfo.Flags4);
_worldPacket.WriteBits(charInfo.Name.GetByteCount(), 6);
_worldPacket.WriteBit(charInfo.FirstLogin);
_worldPacket.WriteBit(charInfo.BoostInProgress);
_worldPacket.WriteBits(charInfo.unkWod61x, 5);
_worldPacket.WriteString(charInfo.Name);
}
foreach (RaceUnlock raceUnlock in RaceUnlockData)
raceUnlock.Write(_worldPacket);
}
public bool Success;
public bool IsDeletedCharacters; // used for character undelete list
public bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access
public bool HasDemonHunterOnRealm = false;
public bool HasLevel70OnRealm = false;
public bool Unknown7x = false;
public bool IsAlliedRacesCreationAllowed = false;
public int MaxCharacterLevel = 1;
public Optional<uint> DisabledClassesMask = new Optional<uint>();
public List<CharacterInfo> Characters = new List<CharacterInfo>(); // all characters on the list
public List<RestrictedFactionChangeRuleInfo> FactionChangeRestrictions = new List<RestrictedFactionChangeRuleInfo>(); // @todo: research
public List<RaceUnlock> RaceUnlockData = new List<RaceUnlock>(); ///<
public class CharacterInfo
{
@@ -130,8 +86,8 @@ namespace Game.Network.Packets
// "characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, "
// 19 20 21 22 23 24 25
// "guild_member.guildid, characters.playerFlags, characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.equipmentCache, "
// 26 27 28 29 30
// "character_banned.guid, characters.slot, characters.logout_time, characters.activeTalentGroup, character_declinedname.genitive"
// 26 27 28 29 30 31
// "character_banned.guid, characters.slot, characters.logout_time, characters.activeTalentGroup, characters.lastLoginBuild, character_declinedname.genitive"
Guid = ObjectGuid.Create(HighGuid.Player, fields.Read<ulong>(0));
Name = fields.Read<string>(1);
@@ -176,7 +132,7 @@ namespace Game.Network.Packets
if (fields.Read<uint>(26) != 0)
Flags |= CharacterFlags.LockedByBilling;
if (WorldConfig.GetBoolValue(WorldCfg.DeclinedNamesUsed) && !string.IsNullOrEmpty(fields.Read<string>(30)))
if (WorldConfig.GetBoolValue(WorldCfg.DeclinedNamesUsed) && !string.IsNullOrEmpty(fields.Read<string>(31)))
Flags |= CharacterFlags.Declined;
if (atLoginFlags.HasAnyFlag(AtLoginFlags.Customize))
@@ -214,6 +170,8 @@ namespace Game.Network.Packets
if (spec != null)
SpecID = (ushort)spec.Id;
LastLoginBuild = fields.Read<uint>(30);
for (byte slot = 0; slot < InventorySlots.BagEnd; ++slot)
{
VisualItems[slot].InventoryType = (byte)equipment.NextUInt32();
@@ -222,6 +180,53 @@ namespace Game.Network.Packets
}
}
public void Write(WorldPacket data)
{
data.WritePackedGuid(Guid);
data.WriteUInt8(ListPosition);
data.WriteUInt8(RaceId);
data.WriteUInt8(ClassId);
data.WriteUInt8(Sex);
data.WriteUInt8(Skin);
data.WriteUInt8(Face);
data.WriteUInt8(HairStyle);
data.WriteUInt8(HairColor);
data.WriteUInt8(FacialHair);
foreach (var display in CustomDisplay)
data.WriteUInt8(display);
data.WriteUInt8(Level);
data.WriteUInt32(ZoneId);
data.WriteUInt32(MapId);
data.WriteVector3(PreLoadPosition);
data.WritePackedGuid(GuildGuid);
data.WriteUInt32(Flags);
data.WriteUInt32(CustomizationFlag);
data.WriteUInt32(Flags3);
data.WriteUInt32(Pet.CreatureDisplayId);
data.WriteUInt32(Pet.Level);
data.WriteUInt32(Pet.CreatureFamily);
data.WriteUInt32(ProfessionIds[0]);
data.WriteUInt32(ProfessionIds[1]);
foreach (var visualItem in VisualItems)
visualItem.Write(data);
data.WriteUInt32(LastPlayedTime);
data.WriteUInt16(SpecID);
data.WriteUInt32(Unknown703);
data.WriteUInt32(Flags4);
data.WriteBits(Name.GetByteCount(), 6);
data.WriteBit(FirstLogin);
data.WriteBit(BoostInProgress);
data.WriteBits(unkWod61x, 5);
data.FlushBits();
data.WriteString(Name);
}
public ObjectGuid Guid;
public string Name;
public byte ListPosition; // Order of the characters in list
@@ -248,6 +253,7 @@ namespace Game.Network.Packets
public uint LastPlayedTime;
public ushort SpecID;
public uint Unknown703;
public uint LastLoginBuild;
public PetInfo Pet = new PetInfo();
public bool BoostInProgress; // @todo
public uint[] ProfessionIds = new uint[2]; // @todo
@@ -255,6 +261,13 @@ namespace Game.Network.Packets
public struct VisualItemInfo
{
public void Write(WorldPacket data)
{
data.WriteUInt32(DisplayId);
data.WriteUInt32(DisplayEnchantId);
data.WriteUInt8(InventoryType);
}
public uint DisplayId;
public uint DisplayEnchantId;
public byte InventoryType;
@@ -267,16 +280,21 @@ namespace Game.Network.Packets
}
}
public struct RestrictedFactionChangeRuleInfo
public struct RaceUnlock
{
public RestrictedFactionChangeRuleInfo(uint mask, byte race)
public void Write(WorldPacket data)
{
Mask = mask;
Race = race;
data.WriteInt32(RaceID);
data.WriteBit(HasExpansion);
data.WriteBit(HasAchievement);
data.WriteBit(HasHeritageArmor);
data.FlushBits();
}
public uint Mask;
public byte Race;
public int RaceID;
public bool HasExpansion;
public bool HasAchievement;
public bool HasHeritageArmor;
}
}
@@ -832,8 +850,7 @@ namespace Game.Network.Packets
_worldPacket.WriteUInt8(Reason);
_worldPacket.WriteInt32(Amount);
_worldPacket.WriteFloat(GroupBonus);
_worldPacket.WriteBit(ReferAFriend);
_worldPacket.FlushBits();
_worldPacket.WriteUInt8(ReferAFriendBonusType);
}
public ObjectGuid Victim;
@@ -841,7 +858,7 @@ namespace Game.Network.Packets
public PlayerLogXPReason Reason;
public int Amount;
public float GroupBonus;
public bool ReferAFriend;
public byte ReferAFriendBonusType; // 1 - 300% of normal XP; 2 - 150% of normal XP
}
class TitleEarned : ServerPacket
+2 -2
View File
@@ -1467,7 +1467,7 @@ namespace Game.Network.Packets
data.WriteUInt32(ItemID);
data.WriteUInt32(Unk4);
data.WriteUInt32(AchievementsRequired.Count);
data.WriteUInt32(RaceMask);
data.WriteUInt64(RaceMask);
data.WriteUInt32(MinGuildLevel);
data.WriteUInt32(MinGuildRep);
data.WriteUInt64(Cost);
@@ -1479,7 +1479,7 @@ namespace Game.Network.Packets
public uint ItemID;
public uint Unk4;
public List<uint> AchievementsRequired = new List<uint>();
public uint RaceMask;
public ulong RaceMask;
public int MinGuildLevel;
public int MinGuildRep;
public ulong Cost;
@@ -218,12 +218,15 @@ namespace Game.Network.Packets
_worldPacket.WriteUInt32(MaxInCombatResCount);
_worldPacket.WriteUInt32(CombatResChargeRecovery);
_worldPacket.WriteUInt32(NextCombatResChargeTime);
_worldPacket.WriteBit(InProgress);
_worldPacket.FlushBits();
}
public uint InCombatResCount; // amount of usable battle ressurections
public uint MaxInCombatResCount;
public uint CombatResChargeRecovery;
public uint NextCombatResChargeTime;
public bool InProgress = true;
}
class InstanceEncounterEnd : ServerPacket
@@ -703,6 +703,13 @@ namespace Game.Network.Packets
public ObjectGuid ItemGuid { get; set; }
}
class CharacterInventoryOverflowWarning : ServerPacket
{
public CharacterInventoryOverflowWarning() : base(ServerOpcodes.CharacterInventoryOverflowWarning) { }
public override void Write() { }
}
//Structs
public class ItemBonusInstanceData
{
@@ -76,6 +76,7 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(text.QuestID);
_worldPacket.WriteInt32(text.QuestType);
_worldPacket.WriteInt32(text.QuestLevel);
_worldPacket.WriteInt32(text.QuestMaxScalingLevel);
_worldPacket.WriteInt32(text.QuestFlags);
_worldPacket.WriteInt32(text.QuestFlagsEx);
@@ -308,6 +309,7 @@ namespace Game.Network.Packets
public int QuestID;
public int QuestType;
public int QuestLevel;
public int QuestMaxScalingLevel;
public bool Repeatable;
public string QuestTitle;
public int QuestFlags;
@@ -437,6 +437,9 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(questPOIBlobPoint.X);
_worldPacket.WriteInt32(questPOIBlobPoint.Y);
}
_worldPacket.WriteBit(questPOIBlobData.AlwaysAllowMergingBlobs);
_worldPacket.FlushBits();
}
}
}
@@ -759,6 +762,7 @@ namespace Game.Network.Packets
public int PlayerConditionID;
public int UnkWoD1;
public List<QuestPOIBlobPoint> QuestPOIBlobPointStats = new List<QuestPOIBlobPoint>();
public bool AlwaysAllowMergingBlobs;
}
public class QuestPOIData
+12 -3
View File
@@ -117,6 +117,7 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(Info.QuestID);
_worldPacket.WriteInt32(Info.QuestType);
_worldPacket.WriteInt32(Info.QuestLevel);
_worldPacket.WriteInt32(Info.QuestMaxScalingLevel);
_worldPacket.WriteInt32(Info.QuestPackageID);
_worldPacket.WriteInt32(Info.QuestMinLevel);
_worldPacket.WriteInt32(Info.QuestSortID);
@@ -194,7 +195,7 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(Info.TimeAllowed);
_worldPacket.WriteUInt32(Info.Objectives.Count);
_worldPacket.WriteInt32(Info.AllowableRaces);
_worldPacket.WriteInt64(Info.AllowableRaces);
_worldPacket.WriteInt32(Info.QuestRewardID);
_worldPacket.WriteInt32(Info.Expansion);
@@ -619,6 +620,7 @@ namespace Game.Network.Packets
_worldPacket.WriteUInt32(gossip.QuestID);
_worldPacket.WriteUInt32(gossip.QuestType);
_worldPacket.WriteUInt32(gossip.QuestLevel);
_worldPacket.WriteUInt32(gossip.QuestMaxScalingLevel);
_worldPacket.WriteUInt32(gossip.QuestFlags);
_worldPacket.WriteUInt32(gossip.QuestFlagsEx);
@@ -827,8 +829,10 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(ChoiceID);
_worldPacket.WriteUInt32(Responses.Count);
_worldPacket.WritePackedGuid(SenderGUID);
_worldPacket.WriteInt32(UiTextureKitID);
_worldPacket.WriteBits(Question.GetByteCount(), 8);
_worldPacket.WriteBit(CloseChoiceFrame);
_worldPacket.WriteBit(HideWarboardHeader);
_worldPacket.FlushBits();
foreach (PlayerChoiceResponse response in Responses)
@@ -839,9 +843,11 @@ namespace Game.Network.Packets
public ObjectGuid SenderGUID;
public int ChoiceID;
public int UiTextureKitID;
public string Question;
public List<PlayerChoiceResponse> Responses = new List<PlayerChoiceResponse>();
public bool CloseChoiceFrame;
public bool HideWarboardHeader;
}
class ChoiceResponse : ClientPacket
@@ -897,6 +903,7 @@ namespace Game.Network.Packets
public uint QuestID;
public int QuestType; // Accepted values: 0, 1 or 2. 0 == IsAutoComplete() (skip objectives/details)
public int QuestLevel; // may be -1, static data, in other cases must be used dynamic level: Player.GetQuestLevel (0 is not known, but assuming this is no longer valid for quest intended for client)
public int QuestMaxScalingLevel = 255;
public uint QuestPackageID;
public int QuestMinLevel;
public int QuestSortID; // zone or sort to display in quest log
@@ -923,7 +930,7 @@ namespace Game.Network.Packets
public float POIx;
public float POIy;
public uint POIPriority;
public int AllowableRaces = -1;
public long AllowableRaces = -1;
public string LogTitle;
public string LogDescription;
public string QuestDescription;
@@ -1129,11 +1136,12 @@ namespace Game.Network.Packets
public struct GossipText
{
public GossipText(uint questID, uint questType, uint questLevel, uint questFlags, uint questFlagsEx, bool repeatable, string questTitle)
public GossipText(uint questID, uint questType, uint questLevel, uint questMaxScalingLevel, uint questFlags, uint questFlagsEx, bool repeatable, string questTitle)
{
QuestID = questID;
QuestType = questType;
QuestLevel = questLevel;
QuestMaxScalingLevel = questMaxScalingLevel;
QuestFlags = questFlags;
QuestFlagsEx = questFlagsEx;
Repeatable = repeatable;
@@ -1143,6 +1151,7 @@ namespace Game.Network.Packets
public uint QuestID;
public uint QuestType;
public uint QuestLevel;
public uint QuestMaxScalingLevel;
public uint QuestFlags;
public uint QuestFlagsEx;
public bool Repeatable;
+7 -2
View File
@@ -864,7 +864,12 @@ namespace Game.Network.Packets
{
public SelfRes(WorldPacket packet) : base(packet) { }
public override void Read() { }
public override void Read()
{
SpellId = _worldPacket.ReadUInt32();
}
public uint SpellId;
}
class GetMirrorImageData : ClientPacket
@@ -1236,7 +1241,7 @@ namespace Game.Network.Packets
public void Write(WorldPacket data)
{
data.WriteBits(Type, 3);
data.WriteBits(Type, 4);
data.WriteInt16(PlayerLevelDelta);
data.WriteUInt16(PlayerItemLevel);
data.WriteUInt8(TargetLevel);
@@ -315,6 +315,8 @@ namespace Game.Network.Packets
LastTitleAuthorGuid = data.ReadPackedGuid();
LastDescriptionAuthorGuid = data.ReadPackedGuid();
LastVoiceChatAuthorGuid = data.ReadPackedGuid();
ListingCreatorGuid = data.ReadPackedGuid();
Unknown735 = data.ReadPackedGuid();
byte titleLength = data.ReadBits<byte>(8);
byte descriptionLength = data.ReadBits<byte>(11);
@@ -330,6 +332,8 @@ namespace Game.Network.Packets
ObjectGuid LastTitleAuthorGuid;
ObjectGuid LastDescriptionAuthorGuid;
ObjectGuid LastVoiceChatAuthorGuid;
ObjectGuid ListingCreatorGuid;
ObjectGuid Unknown735;
string Title;
string Description;
string VoiceChat;
+2 -2
View File
@@ -101,7 +101,7 @@ namespace Game.Network.Packets
{
MinLevel = data.ReadInt32();
MaxLevel = data.ReadInt32();
RaceFilter = data.ReadInt32();
RaceFilter = data.ReadInt64();
ClassFilter = data.ReadInt32();
uint nameLength = data.ReadBits<uint>(6);
@@ -137,7 +137,7 @@ namespace Game.Network.Packets
public string VirtualRealmName;
public string Guild;
public string GuildVirtualRealmName;
public int RaceFilter = -1;
public long RaceFilter = 0;
public int ClassFilter = -1;
public List<string> Words = new List<string>();
public bool ShowEnemies;