Core: Updated to 11.1.5
Port From (https://github.com/TrinityCore/TrinityCore/commit/f9bf082be962d45de79f936d625f644253e9b810)
This commit is contained in:
@@ -465,6 +465,9 @@ namespace Framework.Constants
|
||||
PlayerDataElementCharacterEqual = 390, /*NYI*/ // Player {PlayerDataElementCharacter} is greater than {#Amount}
|
||||
PlayerDataElementAccountEqual = 391, /*NYI*/ // Player {PlayerDataElementAccount} is greater than {#Amount}
|
||||
PlayerHasCompletedQuestOrIsReadyToTurnIn = 392, // Player has previously completed quest "{QuestV2}" or is ready to turn it in
|
||||
PlayerTitle = 393, // Player is currently using "{ChrTitles}" title
|
||||
|
||||
PlayerIsInGuild = 404, // Player is in a guild
|
||||
}
|
||||
|
||||
public enum CriteriaFailEvent : byte
|
||||
|
||||
@@ -1103,6 +1103,7 @@ namespace Framework.Constants
|
||||
DontDisplayIfZero = 0x20, // NYI
|
||||
ScaleMaxQuantityBySeasonWeeks = 0x40, // NYI
|
||||
ScaleMaxQuantityByWeeksSinceStart = 0x80, // NYI
|
||||
ForceMaxQuantityOnConversion = 0x100, // NYI
|
||||
}
|
||||
|
||||
[Flags]
|
||||
@@ -1269,7 +1270,7 @@ namespace Framework.Constants
|
||||
public enum ContentTuningFlag
|
||||
{
|
||||
DisabledForItem = 0x04,
|
||||
Horde = 0x8,
|
||||
Horde = 0x08,
|
||||
Alliance = 0x10
|
||||
}
|
||||
|
||||
@@ -2034,6 +2035,14 @@ namespace Framework.Constants
|
||||
CharacterBanker = 67,
|
||||
AccountBanker = 68,
|
||||
ProfessionRespec = 69,
|
||||
PlaceholderType71 = 70,
|
||||
PlaceholderType72 = 71,
|
||||
PlaceholderType73 = 72,
|
||||
PlaceholderType74 = 73,
|
||||
PlaceholderType75 = 74,
|
||||
PlaceholderType76 = 75,
|
||||
GuildRename = 76,
|
||||
PlaceholderType77 = 77,
|
||||
}
|
||||
|
||||
[Flags]
|
||||
@@ -2885,6 +2894,14 @@ namespace Framework.Constants
|
||||
ContentTuningPvpItemLevelHealthScaling = 13,
|
||||
ContentTuningPvpLevelDamageScaling = 14,
|
||||
ContentTuningPvpItemLevelDamageScaling = 15,
|
||||
|
||||
ArmorItemLevelDiminishing = 18,
|
||||
|
||||
ChallengeModeHealth = 21,
|
||||
ChallengeModeDamage = 22,
|
||||
MythicPlusEndOfRunGearSequenceLevel = 23,
|
||||
|
||||
SpellAreaEffectWarningRadius = 26, // ground spell effect warning circle radius (based on spell radius)
|
||||
}
|
||||
|
||||
public enum BattlePetSpeciesFlags : int
|
||||
|
||||
@@ -93,6 +93,12 @@ namespace Framework.Constants
|
||||
CharacterBanker = 56,
|
||||
AccountBanker = 57,
|
||||
ProfessionRespec = 58,
|
||||
Placeholder1 = 59,
|
||||
Placeholder2 = 60,
|
||||
Placeholder3 = 61,
|
||||
GuildRename = 62,
|
||||
Placeholder4 = 63,
|
||||
ItemUpgrade = 64,
|
||||
|
||||
Max
|
||||
}
|
||||
|
||||
@@ -788,6 +788,9 @@ namespace Framework.Constants
|
||||
Bandage = 7,
|
||||
ConsumableOther = 8,
|
||||
VantusRune = 9,
|
||||
UtilityCurio = 10,
|
||||
CombatCurio = 11,
|
||||
|
||||
Max
|
||||
}
|
||||
|
||||
|
||||
@@ -156,6 +156,8 @@ namespace Framework.Constants
|
||||
AlreadyUsingLfgList = 0x3f, // You Can'T Do That While Using Premade Groups.
|
||||
NotLeader = 0x45, // You Are Not The Party Leader.
|
||||
Dead = 0x49,
|
||||
FarmLimit = 0x4D, // You or someone in your party has entered too many instances recently. Please wait awhile and try again.
|
||||
NoCrossFactionParties = 0x4E, // Cross-faction groups can't queue for this instance
|
||||
|
||||
PartyNotMeetReqs = 6, // One Or More Party Members Do Not Meet The Requirements For The Chosen Dungeons (Fixme)
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,7 @@ namespace Framework.Constants
|
||||
public const Expansion CurrentExpansion = Expansion.TheWarWithin;
|
||||
|
||||
public const int MaxTalentTiers = 7;
|
||||
public const int MaxTalentColumns = 3;
|
||||
public const int MaxTalentColumns = 4;
|
||||
public const int MaxTalentRank = 5;
|
||||
public const int MaxPvpTalentSlots = 4;
|
||||
public const int MinSpecializationLevel = 10;
|
||||
|
||||
@@ -63,6 +63,10 @@ namespace Framework.Constants
|
||||
Spell = 5,
|
||||
Unlock = 6,
|
||||
Companion = 7,
|
||||
QuestlineUnlock = 8,
|
||||
QuestlineReward = 9,
|
||||
QuestlineUnlockPart = 10,
|
||||
|
||||
Max
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@ namespace Framework.Constants
|
||||
GuildName = 0x1000,
|
||||
Description = 0x2000,
|
||||
Name = 0x4000,
|
||||
ChinaHarmfulMinors = 0x8000,
|
||||
Disruption = 0x10000,
|
||||
}
|
||||
|
||||
public enum GMTicketSystemStatus
|
||||
|
||||
@@ -454,7 +454,7 @@ namespace Framework.Database
|
||||
|
||||
// DungeonEncounter.db2
|
||||
PrepareStatement(HotfixStatements.SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, CompleteWorldStateID, Bit, Flags, " +
|
||||
"SpellIconFileID, Faction FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?");
|
||||
"SpellIconFileID, Faction, Unknown1115 FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?");
|
||||
PrepareStatement(HotfixStatements.SEL_DUNGEON_ENCOUNTER_LOCALE, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
||||
" AND locale = ?");
|
||||
|
||||
@@ -1003,8 +1003,8 @@ namespace Framework.Database
|
||||
PrepareStatement(HotfixStatements.SEL_NAMES_RESERVED_LOCALE, "SELECT ID, Name, LocaleMask FROM names_reserved_locale WHERE (`VerifiedBuild` > 0) = ?");
|
||||
|
||||
// NumTalentsAtLevel.db2
|
||||
PrepareStatement(HotfixStatements.SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level" +
|
||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||
PrepareStatement(HotfixStatements.SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter, Unknown1115" +
|
||||
" FROM num_talents_at_level WHERE (`VerifiedBuild` > 0) = ?");
|
||||
|
||||
// OverrideSpellData.db2
|
||||
PrepareStatement(HotfixStatements.SEL_OVERRIDE_SPELL_DATA, "SELECT ID, Spells1, Spells2, Spells3, Spells4, Spells5, Spells6, Spells7, Spells8, Spells9, " +
|
||||
@@ -1414,8 +1414,10 @@ namespace Framework.Database
|
||||
"Key16 FROM tact_key WHERE (`VerifiedBuild` > 0) = ?");
|
||||
|
||||
// Talent.db2
|
||||
PrepareStatement(HotfixStatements.SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, ClassID, SpecID, SpellID, OverridesSpellID, " +
|
||||
"CategoryMask1, CategoryMask2 FROM talent WHERE (`VerifiedBuild` > 0) = ?");
|
||||
PrepareStatement(HotfixStatements.SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, TabID, ClassID, SpecID, SpellID, OverridesSpellID, " +
|
||||
"RequiredSpellID, CategoryMask1, CategoryMask2, SpellRank1, SpellRank2, SpellRank3, SpellRank4, SpellRank5, SpellRank6, SpellRank7, " +
|
||||
"SpellRank8, SpellRank9, PrereqTalent1, PrereqTalent2, PrereqTalent3, PrereqRank1, PrereqRank2, PrereqRank3 FROM talent" +
|
||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||
PrepareStatement(HotfixStatements.SEL_TALENT_LOCALE, "SELECT ID, Description_lang FROM talent_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||
|
||||
// TaxiNodes.db2
|
||||
|
||||
@@ -3754,6 +3754,14 @@ namespace Game.Achievements
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case ModifierTreeType.PlayerTitle: // 393
|
||||
if (referencePlayer.m_playerData.PlayerTitle != reqValue)
|
||||
return false;
|
||||
break;
|
||||
case ModifierTreeType.PlayerIsInGuild: // 404
|
||||
if (referencePlayer.GetGuildId() == 0)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace Game.DataStorage
|
||||
public ushort CinematicSequenceID;
|
||||
public ushort DefaultSpec;
|
||||
public uint Id;
|
||||
public byte PrimaryStatPriority;
|
||||
public sbyte PrimaryStatPriority;
|
||||
public PowerType DisplayPower;
|
||||
public byte RangedAttackPowerPerAgility;
|
||||
public byte AttackPowerPerAgility;
|
||||
@@ -532,7 +532,7 @@ namespace Game.DataStorage
|
||||
public uint FootstepCameraEffectID;
|
||||
public uint DeathThudCameraEffectID;
|
||||
public uint SoundID;
|
||||
public uint SizeClass;
|
||||
public sbyte SizeClass;
|
||||
public float CollisionWidth;
|
||||
public float CollisionHeight;
|
||||
public float WorldEffectScale;
|
||||
|
||||
@@ -65,6 +65,7 @@ namespace Game.DataStorage
|
||||
public int Flags;
|
||||
public int SpellIconFileID;
|
||||
public int Faction;
|
||||
public int Unknown1115;
|
||||
}
|
||||
|
||||
public sealed class DurabilityCostsRecord
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Game.DataStorage
|
||||
public int LegacyUpgradedItemID;
|
||||
public uint StaticUpgradedItemID;
|
||||
public sbyte SourceTypeEnum;
|
||||
public byte Flags;
|
||||
public int Flags;
|
||||
public int LegacyItemID;
|
||||
public int[] UpgradeItemID = new int[6];
|
||||
public ushort[] UpgradeItemBonusListID = new ushort[6];
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace Game.DataStorage
|
||||
public string ClassName;
|
||||
public sbyte ClassID;
|
||||
public float PriceModifier;
|
||||
public byte Flags;
|
||||
public int Flags;
|
||||
}
|
||||
|
||||
public sealed class ItemContextPickerEntryRecord
|
||||
@@ -225,7 +225,7 @@ namespace Game.DataStorage
|
||||
public uint Id;
|
||||
public ushort RequiredArenaRating;
|
||||
public byte ArenaBracket; // arena slot restrictions (min slot value)
|
||||
public byte Flags;
|
||||
public int Flags;
|
||||
public byte MinFactionID;
|
||||
public int MinReputation;
|
||||
public byte RequiredAchievement; // required personal arena rating
|
||||
|
||||
@@ -37,5 +37,6 @@ namespace Game.DataStorage
|
||||
public uint NumTalents;
|
||||
public uint NumTalentsDeathKnight;
|
||||
public uint NumTalentsDemonHunter;
|
||||
public float Unknown1115;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ namespace Game.DataStorage
|
||||
{
|
||||
public uint Id;
|
||||
public uint SpellID;
|
||||
public byte FacingCasterFlags;
|
||||
public int FacingCasterFlags;
|
||||
public ushort MinFactionID;
|
||||
public int MinReputation;
|
||||
public ushort RequiredAreasID;
|
||||
|
||||
@@ -20,11 +20,16 @@ namespace Game.DataStorage
|
||||
public byte TierID;
|
||||
public byte Flags;
|
||||
public byte ColumnIndex;
|
||||
public ushort TabID;
|
||||
public sbyte ClassID;
|
||||
public ushort SpecID;
|
||||
public uint SpellID;
|
||||
public uint OverridesSpellID;
|
||||
public byte[] CategoryMask = new byte[2];
|
||||
public uint RequiredSpellID;
|
||||
public int[] CategoryMask = new int[2];
|
||||
public uint[] SpellRank = new uint[2];
|
||||
public uint[] PrereqTalent = new uint[2];
|
||||
public byte[] PrereqRank = new byte[2];
|
||||
}
|
||||
|
||||
public sealed class TaxiNodesRecord
|
||||
@@ -98,7 +103,7 @@ namespace Game.DataStorage
|
||||
public string SourceText;
|
||||
public uint Id;
|
||||
public uint ItemID;
|
||||
public byte Flags;
|
||||
public int Flags;
|
||||
public sbyte SourceTypeEnum;
|
||||
}
|
||||
|
||||
|
||||
@@ -89,12 +89,12 @@ namespace Game.DataStorage
|
||||
public float CameraEnteringZoom;
|
||||
public float CameraSeatZoomMin;
|
||||
public float CameraSeatZoomMax;
|
||||
public short EnterAnimKitID;
|
||||
public short RideAnimKitID;
|
||||
public short ExitAnimKitID;
|
||||
public short VehicleEnterAnimKitID;
|
||||
public short VehicleRideAnimKitID;
|
||||
public short VehicleExitAnimKitID;
|
||||
public int EnterAnimKitID;
|
||||
public int RideAnimKitID;
|
||||
public int ExitAnimKitID;
|
||||
public int VehicleEnterAnimKitID;
|
||||
public int VehicleRideAnimKitID;
|
||||
public int VehicleExitAnimKitID;
|
||||
public short CameraModeID;
|
||||
|
||||
public bool HasFlag(VehicleSeatFlags flag) { return (Flags & (int)flag) != 0; }
|
||||
|
||||
@@ -287,6 +287,7 @@ namespace Game.Misc
|
||||
gossipText.QuestFlags = (uint)quest.Flags;
|
||||
gossipText.QuestFlagsEx = (uint)quest.FlagsEx;
|
||||
gossipText.QuestFlagsEx2 = (uint)quest.FlagsEx2;
|
||||
gossipText.QuestFlagsEx3 = quest.FlagsEx3;
|
||||
gossipText.Repeatable = quest.IsTurnIn() && quest.IsRepeatable() && !quest.IsDailyOrWeekly() && !quest.IsMonthly();
|
||||
gossipText.ResetByScheduler = quest.IsResetByScheduler();
|
||||
gossipText.Important = quest.IsImportant();
|
||||
@@ -383,6 +384,7 @@ namespace Game.Misc
|
||||
text.QuestFlags = (uint)quest.Flags;
|
||||
text.QuestFlagsEx = (uint)quest.FlagsEx;
|
||||
text.QuestFlagsEx2 = (uint)quest.FlagsEx2;
|
||||
text.QuestFlagsEx3 = quest.FlagsEx3;
|
||||
text.Repeatable = quest.IsTurnIn() && quest.IsRepeatable() && !quest.IsDailyOrWeekly() && !quest.IsMonthly();
|
||||
text.ResetByScheduler = quest.IsResetByScheduler();
|
||||
text.Important = quest.IsImportant();
|
||||
@@ -464,6 +466,7 @@ namespace Game.Misc
|
||||
packet.QuestFlags[0] = (uint)(quest.Flags & (WorldConfig.GetBoolValue(WorldCfg.QuestIgnoreAutoAccept) ? ~QuestFlags.AutoAccept : ~QuestFlags.None));
|
||||
packet.QuestFlags[1] = (uint)quest.FlagsEx;
|
||||
packet.QuestFlags[2] = (uint)quest.FlagsEx2;
|
||||
packet.QuestFlags[3] = quest.FlagsEx3;
|
||||
packet.SuggestedPartyMembers = quest.SuggestedPlayers;
|
||||
|
||||
// Is there a better way? what about game objects?
|
||||
@@ -576,6 +579,7 @@ namespace Game.Misc
|
||||
offer.QuestFlags[0] = (uint)quest.Flags;
|
||||
offer.QuestFlags[1] = (uint)quest.FlagsEx;
|
||||
offer.QuestFlags[2] = (uint)quest.FlagsEx2;
|
||||
offer.QuestFlags[3] = quest.FlagsEx3;
|
||||
|
||||
packet.PortraitTurnIn = quest.QuestTurnInPortrait;
|
||||
packet.PortraitGiver = quest.QuestGiverPortrait;
|
||||
@@ -646,6 +650,7 @@ namespace Game.Misc
|
||||
packet.QuestFlags[0] = (uint)quest.Flags;
|
||||
packet.QuestFlags[1] = (uint)quest.FlagsEx;
|
||||
packet.QuestFlags[2] = (uint)quest.FlagsEx2;
|
||||
packet.QuestFlags[3] = quest.FlagsEx3;
|
||||
packet.SuggestPartyMembers = quest.SuggestedPlayers;
|
||||
packet.QuestInfoID = (int)quest.QuestInfoID;
|
||||
|
||||
|
||||
@@ -3794,7 +3794,7 @@ namespace Game.Entities
|
||||
|
||||
public void WriteCreate(WorldPacket data, Player owner, Player receiver)
|
||||
{
|
||||
data.WriteBits(Type, 1);
|
||||
data.WriteUInt32(Type);
|
||||
if (Type == 1)
|
||||
{
|
||||
data.WriteFloat(FloatValue);
|
||||
@@ -3803,11 +3803,10 @@ namespace Game.Entities
|
||||
{
|
||||
data.WriteInt64(Int64Value);
|
||||
}
|
||||
data.FlushBits();
|
||||
}
|
||||
public void WriteUpdate(WorldPacket data, bool ignoreChangesMask, Player owner, Player receiver)
|
||||
{
|
||||
data.WriteBits(Type, 1);
|
||||
data.WriteUInt32(Type);
|
||||
if (Type == 1)
|
||||
{
|
||||
data.WriteFloat(FloatValue);
|
||||
@@ -3816,7 +3815,6 @@ namespace Game.Entities
|
||||
{
|
||||
data.WriteInt64(Int64Value);
|
||||
}
|
||||
data.FlushBits();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5637,10 +5635,9 @@ namespace Game.Entities
|
||||
|
||||
public class ActivePlayerData : HasChangesMask
|
||||
{
|
||||
public static int QuestCompletedBitsSize;
|
||||
public static int QuestCompletedBitsPerBlock;
|
||||
|
||||
static int changeMaskLength = 1517;
|
||||
static int changeMaskLength = 516;
|
||||
|
||||
public UpdateField<bool> BackpackAutoSortDisabled = new(0, 1);
|
||||
public UpdateField<bool> BackpackSellJunkDisabled = new(0, 2);
|
||||
@@ -5652,6 +5649,8 @@ namespace Game.Entities
|
||||
public UpdateFieldArray<DynamicUpdateField<uint>> ResearchSiteProgress = new(1, 43, 44);
|
||||
public UpdateFieldArray<DynamicUpdateField<Research>> Research = new(1, 45, 46);
|
||||
public DynamicUpdateField<ulong> KnownTitles = new(0, 7);
|
||||
public DynamicUpdateField<PlayerDataElement> CharacterDataElements = new(0, 8);
|
||||
public DynamicUpdateField<PlayerDataElement> AccountDataElements = new(0, 9);
|
||||
public DynamicUpdateField<uint> DailyQuestsCompleted = new(0, 11);
|
||||
public DynamicUpdateField<int> AvailableQuestLineXQuestIDs = new(0, 12);
|
||||
public DynamicUpdateField<uint> Heirlooms = new(0, 13);
|
||||
@@ -5677,8 +5676,6 @@ namespace Game.Entities
|
||||
public DynamicUpdateField<CategoryCooldownMod> CategoryCooldownMods = new(32, 37);
|
||||
public DynamicUpdateField<WeeklySpellUse> WeeklySpellUses = new(32, 38);
|
||||
public DynamicUpdateField<CollectableSourceTrackedData> TrackedCollectableSources = new(32, 39);
|
||||
public DynamicUpdateField<PlayerDataElement> CharacterDataElements = new(0, 8);
|
||||
public DynamicUpdateField<PlayerDataElement> AccountDataElements = new(0, 9);
|
||||
public DynamicUpdateField<PVPInfo> PvpInfo = new(0, 10);
|
||||
public DynamicUpdateField<CharacterRestriction> CharacterRestrictions = new(0, 23);
|
||||
public DynamicUpdateField<TraitConfig> TraitConfigs = new(32, 33);
|
||||
@@ -5733,7 +5730,7 @@ namespace Game.Entities
|
||||
public UpdateField<byte> MultiActionBars = new(70, 94);
|
||||
public UpdateField<byte> LifetimeMaxRank = new(70, 95);
|
||||
public UpdateField<byte> NumRespecs = new(70, 96);
|
||||
public UpdateField<byte> PvpMedals = new(70, 97);
|
||||
public UpdateField<uint> PvpMedals = new(70, 97);
|
||||
public UpdateField<ushort> TodayHonorableKills = new(70, 98);
|
||||
public UpdateField<ushort> YesterdayHonorableKills = new(70, 99);
|
||||
public UpdateField<uint> LifetimeHonorableKills = new(70, 100);
|
||||
@@ -5795,12 +5792,10 @@ namespace Game.Entities
|
||||
public UpdateFieldArray<uint> ProfessionSkillLine = new(2, 481, 482);
|
||||
public UpdateFieldArray<uint> BagSlotFlags = new(5, 484, 485);
|
||||
public UpdateFieldArray<uint> BankBagSlotFlags = new(7, 490, 491);
|
||||
public UpdateFieldArray<ulong> QuestCompleted = new(1000, 498, 499);
|
||||
public UpdateFieldArray<float> ItemUpgradeHighWatermark = new(17, 1499, 1500);
|
||||
public UpdateFieldArray<float> ItemUpgradeHighWatermark = new(17, 498, 499);
|
||||
|
||||
public ActivePlayerData() : base((int)EntityFragment.CGObject, TypeId.ActivePlayer, changeMaskLength)
|
||||
{
|
||||
QuestCompletedBitsSize = QuestCompleted.GetSize();
|
||||
QuestCompletedBitsPerBlock = sizeof(ulong) * 8;
|
||||
}
|
||||
|
||||
@@ -5878,7 +5873,7 @@ namespace Game.Entities
|
||||
data.WriteUInt8(MultiActionBars);
|
||||
data.WriteUInt8(LifetimeMaxRank);
|
||||
data.WriteUInt8(NumRespecs);
|
||||
data.WriteUInt8(PvpMedals);
|
||||
data.WriteUInt32(PvpMedals);
|
||||
for (int i = 0; i < 12; ++i)
|
||||
{
|
||||
data.WriteUInt32(BuybackPrice[i]);
|
||||
@@ -5925,10 +5920,6 @@ namespace Game.Entities
|
||||
{
|
||||
data.WriteUInt32(BankBagSlotFlags[i]);
|
||||
}
|
||||
for (int i = 0; i < 1000; ++i)
|
||||
{
|
||||
data.WriteUInt64(QuestCompleted[i]);
|
||||
}
|
||||
data.WriteUInt32(Honor);
|
||||
data.WriteUInt32(HonorNextLevel);
|
||||
data.WriteInt32(PerksProgramCurrency);
|
||||
@@ -6001,6 +5992,14 @@ namespace Game.Entities
|
||||
{
|
||||
data.WriteUInt64(KnownTitles[i]);
|
||||
}
|
||||
for (int i = 0; i < CharacterDataElements.Size(); ++i)
|
||||
{
|
||||
CharacterDataElements[i].WriteCreate(data, owner, receiver);
|
||||
}
|
||||
for (int i = 0; i < AccountDataElements.Size(); ++i)
|
||||
{
|
||||
AccountDataElements[i].WriteCreate(data, owner, receiver);
|
||||
}
|
||||
for (int i = 0; i < DailyQuestsCompleted.Size(); ++i)
|
||||
{
|
||||
data.WriteUInt32(DailyQuestsCompleted[i]);
|
||||
@@ -6122,14 +6121,6 @@ namespace Game.Entities
|
||||
FrozenPerksVendorItem.GetValue().Write(data);
|
||||
Field_1410.GetValue().WriteCreate(data, owner, receiver);
|
||||
DungeonScore.GetValue().Write(data);
|
||||
for (int i = 0; i < CharacterDataElements.Size(); ++i)
|
||||
{
|
||||
CharacterDataElements[i].WriteCreate(data, owner, receiver);
|
||||
}
|
||||
for (int i = 0; i < AccountDataElements.Size(); ++i)
|
||||
{
|
||||
AccountDataElements[i].WriteCreate(data, owner, receiver);
|
||||
}
|
||||
for (int i = 0; i < PvpInfo.Size(); ++i)
|
||||
{
|
||||
PvpInfo[i].WriteCreate(data, owner, receiver);
|
||||
@@ -6172,10 +6163,8 @@ namespace Game.Entities
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateMask changesMask, bool ignoreNestedChangesMask, Player owner, Player receiver)
|
||||
{
|
||||
for (uint i = 0; i < 1; ++i)
|
||||
data.WriteUInt32(changesMask.GetBlocksMask(i));
|
||||
data.WriteBits(changesMask.GetBlocksMask(1), 16);
|
||||
for (uint i = 0; i < 48; ++i)
|
||||
data.WriteBits(changesMask.GetBlocksMask(0), 17);
|
||||
for (uint i = 0; i < 17; ++i)
|
||||
if (changesMask.GetBlock(i) != 0)
|
||||
data.WriteBits(changesMask.GetBlock(i), 32);
|
||||
|
||||
@@ -6537,6 +6526,26 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[8])
|
||||
{
|
||||
for (int i = 0; i < CharacterDataElements.Size(); ++i)
|
||||
{
|
||||
if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask)
|
||||
{
|
||||
CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[9])
|
||||
{
|
||||
for (int i = 0; i < AccountDataElements.Size(); ++i)
|
||||
{
|
||||
if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask)
|
||||
{
|
||||
AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[11])
|
||||
{
|
||||
for (int i = 0; i < DailyQuestsCompleted.Size(); ++i)
|
||||
@@ -6800,26 +6809,6 @@ namespace Game.Entities
|
||||
}
|
||||
if (changesMask[0])
|
||||
{
|
||||
if (changesMask[8])
|
||||
{
|
||||
for (int i = 0; i < CharacterDataElements.Size(); ++i)
|
||||
{
|
||||
if (CharacterDataElements.HasChanged(i) || ignoreNestedChangesMask)
|
||||
{
|
||||
CharacterDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[9])
|
||||
{
|
||||
for (int i = 0; i < AccountDataElements.Size(); ++i)
|
||||
{
|
||||
if (AccountDataElements.HasChanged(i) || ignoreNestedChangesMask)
|
||||
{
|
||||
AccountDataElements[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[10])
|
||||
{
|
||||
for (int i = 0; i < PvpInfo.Size(); ++i)
|
||||
@@ -7074,7 +7063,7 @@ namespace Game.Entities
|
||||
}
|
||||
if (changesMask[97])
|
||||
{
|
||||
data.WriteUInt8(PvpMedals);
|
||||
data.WriteUInt32(PvpMedals);
|
||||
}
|
||||
if (changesMask[98])
|
||||
{
|
||||
@@ -7417,20 +7406,10 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
if (changesMask[498])
|
||||
{
|
||||
for (int i = 0; i < 1000; ++i)
|
||||
{
|
||||
if (changesMask[499 + i])
|
||||
{
|
||||
data.WriteUInt64(QuestCompleted[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[1499])
|
||||
{
|
||||
for (int i = 0; i < 17; ++i)
|
||||
{
|
||||
if (changesMask[1500 + i])
|
||||
if (changesMask[499 + i])
|
||||
{
|
||||
data.WriteFloat(ItemUpgradeHighWatermark[i]);
|
||||
}
|
||||
@@ -7451,6 +7430,8 @@ namespace Game.Entities
|
||||
ClearChangesMask(ResearchSiteProgress);
|
||||
ClearChangesMask(Research);
|
||||
ClearChangesMask(KnownTitles);
|
||||
ClearChangesMask(CharacterDataElements);
|
||||
ClearChangesMask(AccountDataElements);
|
||||
ClearChangesMask(DailyQuestsCompleted);
|
||||
ClearChangesMask(AvailableQuestLineXQuestIDs);
|
||||
ClearChangesMask(Heirlooms);
|
||||
@@ -7476,8 +7457,6 @@ namespace Game.Entities
|
||||
ClearChangesMask(CategoryCooldownMods);
|
||||
ClearChangesMask(WeeklySpellUses);
|
||||
ClearChangesMask(TrackedCollectableSources);
|
||||
ClearChangesMask(CharacterDataElements);
|
||||
ClearChangesMask(AccountDataElements);
|
||||
ClearChangesMask(PvpInfo);
|
||||
ClearChangesMask(CharacterRestrictions);
|
||||
ClearChangesMask(TraitConfigs);
|
||||
@@ -7594,7 +7573,6 @@ namespace Game.Entities
|
||||
ClearChangesMask(ProfessionSkillLine);
|
||||
ClearChangesMask(BagSlotFlags);
|
||||
ClearChangesMask(BankBagSlotFlags);
|
||||
ClearChangesMask(QuestCompleted);
|
||||
ClearChangesMask(ItemUpgradeHighWatermark);
|
||||
_changesMask.ResetAll();
|
||||
}
|
||||
|
||||
@@ -2421,13 +2421,6 @@ namespace Game.Entities
|
||||
|
||||
int fieldOffset = (int)((questBit - 1) / ActivePlayerData.QuestCompletedBitsPerBlock);
|
||||
ulong flag = 1ul << (((int)questBit - 1) % ActivePlayerData.QuestCompletedBitsPerBlock);
|
||||
if (fieldOffset < ActivePlayerData.QuestCompletedBitsSize)
|
||||
{
|
||||
if (completed)
|
||||
SetUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, fieldOffset), flag);
|
||||
else
|
||||
RemoveUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, fieldOffset), flag);
|
||||
}
|
||||
|
||||
BitVectors bitVectors = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.BitVectors);
|
||||
BitVector bitVector = bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.CharacterQuestCompletedIndex);
|
||||
|
||||
@@ -2965,7 +2965,9 @@ namespace Game.Entities
|
||||
PlayerInteractionType.ProfessionsCraftingOrder, PlayerInteractionType.Professions, PlayerInteractionType.ProfessionsCustomerOrder,
|
||||
PlayerInteractionType.TraitSystem, PlayerInteractionType.BarbersChoice, PlayerInteractionType.MajorFactionRenown,
|
||||
PlayerInteractionType.PersonalTabardVendor, PlayerInteractionType.ForgeMaster, PlayerInteractionType.CharacterBanker,
|
||||
PlayerInteractionType.AccountBanker, PlayerInteractionType.ProfessionRespec
|
||||
PlayerInteractionType.AccountBanker, PlayerInteractionType.ProfessionRespec,PlayerInteractionType.PlaceholderType72,
|
||||
PlayerInteractionType.PlaceholderType75, PlayerInteractionType.PlaceholderType76, PlayerInteractionType.GuildRename,
|
||||
PlayerInteractionType.PlaceholderType77, PlayerInteractionType.ItemUpgrade
|
||||
};
|
||||
|
||||
PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[(int)gossipOptionNpc];
|
||||
@@ -4962,7 +4964,7 @@ namespace Game.Entities
|
||||
if (playerChoiceLocale != null)
|
||||
ObjectManager.GetLocaleString(playerChoiceLocale.Question, locale, ref displayPlayerChoice.Question);
|
||||
|
||||
displayPlayerChoice.CloseChoiceFrame = false;
|
||||
displayPlayerChoice.InfiniteRange = false;
|
||||
displayPlayerChoice.HideWarboardHeader = playerChoice.HideWarboardHeader;
|
||||
displayPlayerChoice.KeepOpenAfterChoice = playerChoice.KeepOpenAfterChoice;
|
||||
|
||||
@@ -5066,7 +5068,6 @@ namespace Game.Entities
|
||||
var mawPower = new Networking.Packets.PlayerChoiceResponseMawPower();
|
||||
mawPower.TypeArtFileID = playerChoiceResponse.MawPower.Value.TypeArtFileID;
|
||||
mawPower.Rarity = playerChoiceResponse.MawPower.Value.Rarity;
|
||||
mawPower.RarityColor = playerChoiceResponse.MawPower.Value.RarityColor;
|
||||
mawPower.SpellID = playerChoiceResponse.MawPower.Value.SpellID;
|
||||
mawPower.MaxStacks = playerChoiceResponse.MawPower.Value.MaxStacks;
|
||||
|
||||
|
||||
@@ -1999,10 +1999,10 @@ namespace Game.Entities
|
||||
|
||||
Stats GetPrimaryStat()
|
||||
{
|
||||
byte primaryStatPriority;
|
||||
sbyte primaryStatPriority;
|
||||
var specialization = GetPrimarySpecializationEntry();
|
||||
if (specialization != null)
|
||||
primaryStatPriority = (byte)specialization.PrimaryStatPriority;
|
||||
primaryStatPriority = specialization.PrimaryStatPriority;
|
||||
else
|
||||
primaryStatPriority = CliDB.ChrClassesStorage.LookupByKey(GetClass()).PrimaryStatPriority;
|
||||
|
||||
|
||||
@@ -7082,35 +7082,35 @@ namespace Game
|
||||
"ID, QuestType, QuestPackageID, ContentTuningID, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " +
|
||||
//10 11 12 13 14 15 16
|
||||
"RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " +
|
||||
//17 18 19 20 21 22
|
||||
"RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, " +
|
||||
//23 24 25 26 27 28 29 30
|
||||
//17 18 19 20 21 22 23
|
||||
"RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, FlagsEx3, " +
|
||||
//24 25 26 27 28 29 30 31
|
||||
"RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " +
|
||||
//31 32 33 34 35 36 37 38
|
||||
//32 33 34 35 36 37 38 39
|
||||
"RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " +
|
||||
//39 40 41 42 43 44
|
||||
//40 41 42 43 44 45
|
||||
"RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " +
|
||||
//45 46 47 48 49 50
|
||||
//46 47 48 49 50 51
|
||||
"RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " +
|
||||
//51 52 53 54 55 56
|
||||
//52 53 54 55 56 57
|
||||
"RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " +
|
||||
//57 58 59 60 61 62 63 64
|
||||
//58 59 60 61 62 63 64 65
|
||||
"POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, " +
|
||||
//65 66 67 68
|
||||
//66 67 68 69
|
||||
"PortraitGiver, PortraitGiverMount, PortraitGiverModelSceneID, PortraitTurnIn, " +
|
||||
//69 70 71 72 73 74 75 76
|
||||
//70 71 72 73 74 75 76 77
|
||||
"RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, " +
|
||||
//77 78 79 80 81 82 83 84
|
||||
//78 79 80 81 82 83 84 85
|
||||
"RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, " +
|
||||
//85 86 87 88 89
|
||||
//86 87 88 89 90
|
||||
"RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " +
|
||||
//90 91 92 93 94 95 96 97
|
||||
//91 92 93 94 95 96 97 98
|
||||
"RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " +
|
||||
//98 99 100 101 102 103 104 105 106
|
||||
//99 100 101 102 103 104 105 106 107
|
||||
"AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, ResetByScheduler, Expansion, ManagedWorldStateID, QuestSessionBonus, " +
|
||||
//107 108 109 110 111 112 113 114 115
|
||||
//108 109 110 111 112 113 114 115 116
|
||||
"LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog " +
|
||||
" FROM quest_template");
|
||||
"FROM quest_template");
|
||||
|
||||
if (result.IsEmpty())
|
||||
{
|
||||
@@ -10468,7 +10468,7 @@ namespace Game
|
||||
} while (rewards.NextRow());
|
||||
}
|
||||
|
||||
SQLResult mawPowersResult = DB.World.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, RarityColor, SpellID, MaxStacks FROM playerchoice_response_maw_power");
|
||||
SQLResult mawPowersResult = DB.World.Query("SELECT ChoiceId, ResponseId, TypeArtFileID, Rarity, SpellID, MaxStacks FROM playerchoice_response_maw_power");
|
||||
if (!mawPowersResult.IsEmpty())
|
||||
{
|
||||
do
|
||||
@@ -10494,10 +10494,8 @@ namespace Game
|
||||
mawPower.TypeArtFileID = mawPowersResult.Read<int>(2);
|
||||
if (!mawPowersResult.IsNull(3))
|
||||
mawPower.Rarity = mawPowersResult.Read<int>(3);
|
||||
if (!mawPowersResult.IsNull(4))
|
||||
mawPower.RarityColor = mawPowersResult.Read<uint>(4);
|
||||
mawPower.SpellID = mawPowersResult.Read<int>(5);
|
||||
mawPower.MaxStacks = mawPowersResult.Read<int>(6);
|
||||
mawPower.SpellID = mawPowersResult.Read<int>(4);
|
||||
mawPower.MaxStacks = mawPowersResult.Read<int>(5);
|
||||
response.MawPower = mawPower;
|
||||
|
||||
++mawPowersCount;
|
||||
@@ -12691,7 +12689,6 @@ namespace Game
|
||||
{
|
||||
public int TypeArtFileID;
|
||||
public int? Rarity;
|
||||
public uint? RarityColor;
|
||||
public int SpellID;
|
||||
public int MaxStacks;
|
||||
}
|
||||
|
||||
@@ -492,7 +492,9 @@ namespace Game
|
||||
{
|
||||
MirrorImageComponentedData mirrorImageComponentedData = new();
|
||||
mirrorImageComponentedData.UnitGUID = guid;
|
||||
mirrorImageComponentedData.DisplayID = (int)creator.GetDisplayId();
|
||||
var chrModel = Global.DB2Mgr.GetChrModel(creator.GetRace(), creator.GetGender());
|
||||
if (chrModel != null)
|
||||
mirrorImageComponentedData.ChrModelID = (int)chrModel.Id;
|
||||
mirrorImageComponentedData.RaceID = (byte)creator.GetRace();
|
||||
mirrorImageComponentedData.Gender = (byte)creator.GetGender();
|
||||
mirrorImageComponentedData.ClassID = (byte)creator.GetClass();
|
||||
|
||||
@@ -597,7 +597,7 @@ namespace Game.Networking.Packets
|
||||
public int PvpTierID;
|
||||
public int SeasonPvpTier;
|
||||
public int BestWeeklyPvpTier;
|
||||
public int BestSeasonPvpTierEnum;
|
||||
public byte BestSeasonPvpTierEnum;
|
||||
public bool Disqualified;
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
@@ -620,7 +620,7 @@ namespace Game.Networking.Packets
|
||||
data.WriteInt32(PvpTierID);
|
||||
data.WriteInt32(SeasonPvpTier);
|
||||
data.WriteInt32(BestWeeklyPvpTier);
|
||||
data.WriteInt32(BestSeasonPvpTierEnum);
|
||||
data.WriteUInt8(BestSeasonPvpTierEnum);
|
||||
data.WriteBit(Disqualified);
|
||||
data.FlushBits();
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ namespace Game.Networking.Packets
|
||||
{
|
||||
data.WritePackedGuid(Guid);
|
||||
data.WriteUInt32(VirtualRealmAddress);
|
||||
data.WriteUInt8(ListPosition);
|
||||
data.WriteUInt16(ListPosition);
|
||||
data.WriteUInt8(RaceId);
|
||||
data.WriteUInt8(SexId);
|
||||
data.WriteUInt8((byte)ClassId);
|
||||
@@ -256,7 +256,7 @@ namespace Game.Networking.Packets
|
||||
public uint VirtualRealmAddress;
|
||||
public ulong GuildClubMemberID; // same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known)
|
||||
public string Name;
|
||||
public byte ListPosition; // Order of the characters in list
|
||||
public ushort ListPosition; // Order of the characters in list
|
||||
public byte RaceId;
|
||||
public Class ClassId;
|
||||
public byte SexId;
|
||||
|
||||
@@ -288,7 +288,7 @@ namespace Game.Networking.Packets
|
||||
public int Tier;
|
||||
public int WeeklyBestTier;
|
||||
public int SeasonBestRating;
|
||||
public int SeasonBestTierEnum;
|
||||
public byte SeasonBestTierEnum;
|
||||
public int RoundsSeasonPlayed;
|
||||
public int RoundsSeasonWon;
|
||||
public int RoundsWeeklyPlayed;
|
||||
@@ -311,7 +311,7 @@ namespace Game.Networking.Packets
|
||||
data.WriteInt32(Tier);
|
||||
data.WriteInt32(WeeklyBestTier);
|
||||
data.WriteInt32(SeasonBestRating);
|
||||
data.WriteInt32(SeasonBestTierEnum);
|
||||
data.WriteUInt8(SeasonBestTierEnum);
|
||||
data.WriteInt32(RoundsSeasonPlayed);
|
||||
data.WriteInt32(RoundsSeasonWon);
|
||||
data.WriteInt32(RoundsWeeklyPlayed);
|
||||
|
||||
@@ -265,7 +265,7 @@ namespace Game.Networking.Packets
|
||||
{
|
||||
Ticket.Write(_worldPacket);
|
||||
|
||||
_worldPacket.WriteUInt8(Result);
|
||||
_worldPacket.WriteInt32(Result);
|
||||
_worldPacket.WriteUInt8(ResultDetail);
|
||||
_worldPacket.WriteInt32(BlackList.Count);
|
||||
_worldPacket.WriteInt32(BlackListNames.Count);
|
||||
@@ -282,7 +282,7 @@ namespace Game.Networking.Packets
|
||||
}
|
||||
|
||||
public RideTicket Ticket = new();
|
||||
public byte Result;
|
||||
public int Result;
|
||||
public byte ResultDetail;
|
||||
public List<LFGBlackListPkt> BlackList = new();
|
||||
public List<string> BlackListNames = new();
|
||||
|
||||
@@ -399,6 +399,7 @@ namespace Game.Networking.Packets
|
||||
public uint QuestFlags;
|
||||
public uint QuestFlagsEx;
|
||||
public uint QuestFlagsEx2;
|
||||
public uint QuestFlagsEx3;
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
@@ -409,6 +410,7 @@ namespace Game.Networking.Packets
|
||||
data.WriteUInt32(QuestFlags);
|
||||
data.WriteUInt32(QuestFlagsEx);
|
||||
data.WriteUInt32(QuestFlagsEx2);
|
||||
data.WriteUInt32(QuestFlagsEx3);
|
||||
|
||||
data.WriteBit(Repeatable);
|
||||
data.WriteBit(ResetByScheduler);
|
||||
|
||||
@@ -125,6 +125,7 @@ namespace Game.Networking.Packets
|
||||
_worldPacket.WriteUInt32(Info.Flags);
|
||||
_worldPacket.WriteUInt32(Info.FlagsEx);
|
||||
_worldPacket.WriteUInt32(Info.FlagsEx2);
|
||||
_worldPacket.WriteUInt32(Info.FlagsEx3);
|
||||
|
||||
for (uint i = 0; i < SharedConst.QuestRewardItemCount; ++i)
|
||||
{
|
||||
@@ -452,7 +453,8 @@ namespace Game.Networking.Packets
|
||||
_worldPacket.WriteUInt32(PortraitTurnIn);
|
||||
_worldPacket.WriteUInt32(QuestFlags[0]); // Flags
|
||||
_worldPacket.WriteUInt32(QuestFlags[1]); // FlagsEx
|
||||
_worldPacket.WriteUInt32(QuestFlags[2]); // FlagsEx
|
||||
_worldPacket.WriteUInt32(QuestFlags[2]); // FlagsEx2
|
||||
_worldPacket.WriteUInt32(QuestFlags[3]); // FlagsEx3
|
||||
_worldPacket.WriteUInt32(SuggestedPartyMembers);
|
||||
_worldPacket.WriteInt32(LearnSpells.Count);
|
||||
_worldPacket.WriteInt32(DescEmotes.Count);
|
||||
@@ -513,7 +515,7 @@ namespace Game.Networking.Packets
|
||||
public ObjectGuid InformUnit;
|
||||
public uint QuestID;
|
||||
public int QuestPackageID;
|
||||
public uint[] QuestFlags = new uint[3];
|
||||
public uint[] QuestFlags = new uint[4];
|
||||
public uint SuggestedPartyMembers;
|
||||
public QuestRewards Rewards = new();
|
||||
public List<QuestObjectiveSimple> Objectives = new();
|
||||
@@ -554,6 +556,7 @@ namespace Game.Networking.Packets
|
||||
_worldPacket.WriteUInt32(QuestFlags[0]);
|
||||
_worldPacket.WriteUInt32(QuestFlags[1]);
|
||||
_worldPacket.WriteUInt32(QuestFlags[2]);
|
||||
_worldPacket.WriteUInt32(QuestFlags[3]);
|
||||
_worldPacket.WriteInt32(StatusFlags);
|
||||
_worldPacket.WriteUInt32(QuestGiverCreatureID);
|
||||
_worldPacket.WriteUInt32(QuestID);
|
||||
@@ -606,7 +609,7 @@ namespace Game.Networking.Packets
|
||||
public List<QuestCurrency> Currency = new();
|
||||
public int StatusFlags;
|
||||
public int QuestInfoID;
|
||||
public uint[] QuestFlags = new uint[3];
|
||||
public uint[] QuestFlags = new uint[4];
|
||||
public string QuestTitle = "";
|
||||
public string CompletionText = "";
|
||||
public List<ConditionalQuestText> ConditionalCompletionText = new();
|
||||
@@ -912,9 +915,11 @@ namespace Game.Networking.Packets
|
||||
_worldPacket.WriteInt64(Duration);
|
||||
_worldPacket.WriteBits(Question.GetByteCount(), 8);
|
||||
_worldPacket.WriteBits(PendingChoiceText.GetByteCount(), 8);
|
||||
_worldPacket.WriteBit(CloseChoiceFrame);
|
||||
_worldPacket.WriteBit(InfiniteRange);
|
||||
_worldPacket.WriteBit(HideWarboardHeader);
|
||||
_worldPacket.WriteBit(KeepOpenAfterChoice);
|
||||
_worldPacket.WriteBit(Unknown_1115_1);
|
||||
_worldPacket.WriteBit(Unknown_1115_2);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
foreach (PlayerChoiceResponse response in Responses)
|
||||
@@ -934,9 +939,11 @@ namespace Game.Networking.Packets
|
||||
public string Question;
|
||||
public string PendingChoiceText;
|
||||
public List<PlayerChoiceResponse> Responses = new();
|
||||
public bool CloseChoiceFrame;
|
||||
public bool InfiniteRange;
|
||||
public bool HideWarboardHeader;
|
||||
public bool KeepOpenAfterChoice;
|
||||
public bool Unknown_1115_1;
|
||||
public bool Unknown_1115_2;
|
||||
}
|
||||
|
||||
class ChoiceResponse : ClientPacket
|
||||
@@ -1139,6 +1146,7 @@ namespace Game.Networking.Packets
|
||||
public uint Flags;
|
||||
public uint FlagsEx;
|
||||
public uint FlagsEx2;
|
||||
public uint FlagsEx3;
|
||||
public uint POIContinent;
|
||||
public float POIx;
|
||||
public float POIy;
|
||||
@@ -1348,6 +1356,7 @@ namespace Game.Networking.Packets
|
||||
data.WriteUInt32(QuestFlags[0]); // Flags
|
||||
data.WriteUInt32(QuestFlags[1]); // FlagsEx
|
||||
data.WriteUInt32(QuestFlags[2]); // FlagsEx2
|
||||
data.WriteUInt32(QuestFlags[3]); // FlagsEx3
|
||||
data.WriteUInt32(QuestGiverCreatureID);
|
||||
data.WriteUInt32(QuestID);
|
||||
data.WriteUInt32(SuggestedPartyMembers);
|
||||
@@ -1373,7 +1382,7 @@ namespace Game.Networking.Packets
|
||||
public uint SuggestedPartyMembers;
|
||||
public QuestRewards Rewards = new();
|
||||
public List<QuestDescEmote> Emotes = new();
|
||||
public uint[] QuestFlags = new uint[3]; // Flags and FlagsEx
|
||||
public uint[] QuestFlags = new uint[4]; // Flags and FlagsEx
|
||||
public int QuestInfoID;
|
||||
}
|
||||
|
||||
@@ -1493,7 +1502,6 @@ namespace Game.Networking.Packets
|
||||
public int Unused901_1;
|
||||
public int TypeArtFileID;
|
||||
public int? Rarity;
|
||||
public uint? RarityColor;
|
||||
public int Unused901_2;
|
||||
public int SpellID;
|
||||
public int MaxStacks;
|
||||
@@ -1506,14 +1514,10 @@ namespace Game.Networking.Packets
|
||||
data.WriteInt32(SpellID);
|
||||
data.WriteInt32(MaxStacks);
|
||||
data.WriteBit(Rarity.HasValue);
|
||||
data.WriteBit(RarityColor.HasValue);
|
||||
data.FlushBits();
|
||||
|
||||
if (Rarity.HasValue)
|
||||
data.WriteInt32(Rarity.Value);
|
||||
|
||||
if (RarityColor.HasValue)
|
||||
data.WriteUInt32(RarityColor.Value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1063,14 +1063,15 @@ namespace Game.Networking.Packets
|
||||
public override void Write()
|
||||
{
|
||||
_worldPacket.WritePackedGuid(UnitGUID);
|
||||
_worldPacket.WriteInt32(DisplayID);
|
||||
_worldPacket.WriteInt32(SpellVisualKitID);
|
||||
_worldPacket.WriteInt32(ChrModelID);
|
||||
_worldPacket.WriteUInt8(RaceID);
|
||||
_worldPacket.WriteUInt8(Gender);
|
||||
_worldPacket.WriteUInt8(ClassID);
|
||||
_worldPacket.WriteInt32(Customizations.Count);
|
||||
_worldPacket.WritePackedGuid(GuildGUID);
|
||||
_worldPacket.WriteInt32(ItemDisplayID.Count);
|
||||
_worldPacket.WriteInt32(SpellVisualKitID);
|
||||
_worldPacket.WriteInt32(Unused_1115);
|
||||
|
||||
foreach (ChrCustomizationChoice customization in Customizations)
|
||||
{
|
||||
@@ -1083,8 +1084,9 @@ namespace Game.Networking.Packets
|
||||
}
|
||||
|
||||
public ObjectGuid UnitGUID;
|
||||
public int DisplayID;
|
||||
public int ChrModelID;
|
||||
public int SpellVisualKitID;
|
||||
public int Unused_1115;
|
||||
public byte RaceID;
|
||||
public byte Gender;
|
||||
public byte ClassID;
|
||||
@@ -2036,6 +2038,7 @@ namespace Game.Networking.Packets
|
||||
|
||||
data.WriteUInt32((uint)CastFlags);
|
||||
data.WriteUInt32((uint)CastFlagsEx);
|
||||
data.WriteUInt32(CastFlagsEx2);
|
||||
data.WriteUInt32(CastTime);
|
||||
|
||||
MissileTrajectory.Write(data);
|
||||
@@ -2087,6 +2090,7 @@ namespace Game.Networking.Packets
|
||||
public SpellCastVisual Visual;
|
||||
public SpellCastFlags CastFlags;
|
||||
public SpellCastFlagsEx CastFlagsEx;
|
||||
public uint CastFlagsEx2;
|
||||
public uint CastTime;
|
||||
public List<ObjectGuid> HitTargets = new();
|
||||
public List<ObjectGuid> MissTargets = new();
|
||||
|
||||
@@ -102,7 +102,6 @@ namespace Game.Networking.Packets
|
||||
|
||||
_worldPacket.WriteBit(GroupFinderEnabled);
|
||||
_worldPacket.WriteBit(IsPremadeGroupEnabled);
|
||||
_worldPacket.WriteBit(UseActivePlayerDataQuestCompleted);
|
||||
_worldPacket.WriteBit(false); // unused 10.2.7
|
||||
_worldPacket.WriteBit(GuildEventsEditsEnabled);
|
||||
_worldPacket.WriteBit(GuildTradeSkillsEnabled);
|
||||
@@ -110,8 +109,8 @@ namespace Game.Networking.Packets
|
||||
_worldPacket.WriteBit(BNSendWhisperUseV2Services);
|
||||
_worldPacket.WriteBit(BNSendGameDataUseV2Services);
|
||||
_worldPacket.WriteBit(IsAccountCurrencyTransferEnabled);
|
||||
|
||||
_worldPacket.WriteBit(false); // unused 11.0.7
|
||||
|
||||
_worldPacket.WriteBit(LobbyMatchmakerQueueFromMainlineEnabled);
|
||||
_worldPacket.WriteBit(CanSendLobbyMatchmakerPartyCustomizations);
|
||||
_worldPacket.WriteBit(AddonProfilerEnabled);
|
||||
@@ -215,7 +214,6 @@ namespace Game.Networking.Packets
|
||||
public bool SellAllJunkEnabled;
|
||||
public bool GroupFinderEnabled = true; // classic only
|
||||
public bool IsPremadeGroupEnabled = true; // classic only
|
||||
public bool UseActivePlayerDataQuestCompleted = false; ///< Uses ActivePlayerData::QuestCompleted (legacy) to store completed quest bits instead of ActivePlayerData::BitVectors[9]
|
||||
public bool GuildEventsEditsEnabled = true;
|
||||
public bool GuildTradeSkillsEnabled = true;
|
||||
public bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService
|
||||
|
||||
+47
-49
@@ -42,13 +42,14 @@ namespace Game
|
||||
Flags = (QuestFlags)fields.Read<uint>(20);
|
||||
FlagsEx = (QuestFlagsEx)fields.Read<uint>(21);
|
||||
FlagsEx2 = (QuestFlagsEx2)fields.Read<uint>(22);
|
||||
FlagsEx3 = fields.Read<uint>(23);
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestItemDropCount; ++i)
|
||||
{
|
||||
RewardItemId[i] = fields.Read<uint>(23 + i * 4);
|
||||
RewardItemCount[i] = fields.Read<uint>(24 + i * 4);
|
||||
ItemDrop[i] = fields.Read<uint>(25 + i * 4);
|
||||
ItemDropQuantity[i] = fields.Read<uint>(26 + i * 4);
|
||||
RewardItemId[i] = fields.Read<uint>(24 + i * 4);
|
||||
RewardItemCount[i] = fields.Read<uint>(25 + i * 4);
|
||||
ItemDrop[i] = fields.Read<uint>(26 + i * 4);
|
||||
ItemDropQuantity[i] = fields.Read<uint>(27 + i * 4);
|
||||
|
||||
if (RewardItemId[i] != 0)
|
||||
++_rewItemsCount;
|
||||
@@ -56,67 +57,64 @@ namespace Game
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardChoicesCount; ++i)
|
||||
{
|
||||
RewardChoiceItemId[i] = fields.Read<uint>(39 + i * 3);
|
||||
RewardChoiceItemCount[i] = fields.Read<uint>(40 + i * 3);
|
||||
RewardChoiceItemDisplayId[i] = fields.Read<uint>(41 + i * 3);
|
||||
RewardChoiceItemId[i] = fields.Read<uint>(40 + i * 3);
|
||||
RewardChoiceItemCount[i] = fields.Read<uint>(41 + i * 3);
|
||||
RewardChoiceItemDisplayId[i] = fields.Read<uint>(42 + i * 3);
|
||||
|
||||
if (RewardChoiceItemId[i] != 0)
|
||||
++_rewChoiceItemsCount;
|
||||
}
|
||||
|
||||
POIContinent = fields.Read<uint>(57);
|
||||
POIx = fields.Read<float>(58);
|
||||
POIy = fields.Read<float>(59);
|
||||
POIPriority = fields.Read<uint>(60);
|
||||
POIContinent = fields.Read<uint>(58);
|
||||
POIx = fields.Read<float>(59);
|
||||
POIy = fields.Read<float>(60);
|
||||
POIPriority = fields.Read<uint>(61);
|
||||
|
||||
RewardTitleId = fields.Read<uint>(61);
|
||||
RewardArenaPoints = fields.Read<int>(62);
|
||||
RewardSkillId = fields.Read<uint>(63);
|
||||
RewardSkillPoints = fields.Read<uint>(64);
|
||||
RewardTitleId = fields.Read<uint>(62);
|
||||
RewardArenaPoints = fields.Read<int>(63);
|
||||
RewardSkillId = fields.Read<uint>(64);
|
||||
RewardSkillPoints = fields.Read<uint>(65);
|
||||
|
||||
QuestGiverPortrait = fields.Read<uint>(65);
|
||||
QuestGiverPortraitMount = fields.Read<uint>(66);
|
||||
QuestGiverPortraitModelSceneId = fields.Read<int>(67);
|
||||
QuestTurnInPortrait = fields.Read<uint>(68);
|
||||
QuestGiverPortrait = fields.Read<uint>(66);
|
||||
QuestGiverPortraitMount = fields.Read<uint>(67);
|
||||
QuestGiverPortraitModelSceneId = fields.Read<int>(68);
|
||||
QuestTurnInPortrait = fields.Read<uint>(69);
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardReputationsCount; ++i)
|
||||
{
|
||||
RewardFactionId[i] = fields.Read<uint>(69 + i * 4);
|
||||
RewardFactionValue[i] = fields.Read<int>(70 + i * 4);
|
||||
RewardFactionOverride[i] = fields.Read<int>(71 + i * 4);
|
||||
RewardFactionCapIn[i] = fields.Read<int>(72 + i * 4);
|
||||
RewardFactionId[i] = fields.Read<uint>(70 + i * 4);
|
||||
RewardFactionValue[i] = fields.Read<int>(71 + i * 4);
|
||||
RewardFactionOverride[i] = fields.Read<int>(72 + i * 4);
|
||||
RewardFactionCapIn[i] = fields.Read<int>(73 + i * 4);
|
||||
}
|
||||
|
||||
RewardReputationMask = fields.Read<uint>(89);
|
||||
RewardReputationMask = fields.Read<uint>(90);
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardCurrencyCount; ++i)
|
||||
{
|
||||
RewardCurrencyId[i] = fields.Read<uint>(90 + i * 2);
|
||||
RewardCurrencyCount[i] = fields.Read<uint>(91 + i * 2);
|
||||
|
||||
if (RewardCurrencyId[i] != 0)
|
||||
++_rewCurrencyCount;
|
||||
RewardCurrencyId[i] = fields.Read<uint>(91 + i * 2);
|
||||
RewardCurrencyCount[i] = fields.Read<uint>(92 + i * 2);
|
||||
}
|
||||
|
||||
SoundAccept = fields.Read<uint>(98);
|
||||
SoundTurnIn = fields.Read<uint>(99);
|
||||
AreaGroupID = fields.Read<uint>(100);
|
||||
LimitTime = fields.Read<uint>(101);
|
||||
AllowableRaces = new(fields.Read<ulong>(102));
|
||||
ResetByScheduler = fields.Read<bool>(103);
|
||||
Expansion = fields.Read<int>(104);
|
||||
ManagedWorldStateID = fields.Read<int>(105);
|
||||
QuestSessionBonus = fields.Read<int>(106);
|
||||
SoundAccept = fields.Read<uint>(99);
|
||||
SoundTurnIn = fields.Read<uint>(100);
|
||||
AreaGroupID = fields.Read<uint>(101);
|
||||
LimitTime = fields.Read<uint>(102);
|
||||
AllowableRaces = new(fields.Read<ulong>(103));
|
||||
ResetByScheduler = fields.Read<bool>(104);
|
||||
Expansion = fields.Read<int>(105);
|
||||
ManagedWorldStateID = fields.Read<int>(106);
|
||||
QuestSessionBonus = fields.Read<int>(107);
|
||||
|
||||
LogTitle = fields.Read<string>(107);
|
||||
LogDescription = fields.Read<string>(108);
|
||||
QuestDescription = fields.Read<string>(109);
|
||||
AreaDescription = fields.Read<string>(110);
|
||||
PortraitGiverText = fields.Read<string>(111);
|
||||
PortraitGiverName = fields.Read<string>(112);
|
||||
PortraitTurnInText = fields.Read<string>(113);
|
||||
PortraitTurnInName = fields.Read<string>(114);
|
||||
QuestCompletionLog = fields.Read<string>(115);
|
||||
LogTitle = fields.Read<string>(108);
|
||||
LogDescription = fields.Read<string>(109);
|
||||
QuestDescription = fields.Read<string>(110);
|
||||
AreaDescription = fields.Read<string>(111);
|
||||
PortraitGiverText = fields.Read<string>(112);
|
||||
PortraitGiverName = fields.Read<string>(113);
|
||||
PortraitTurnInText = fields.Read<string>(114);
|
||||
PortraitTurnInName = fields.Read<string>(115);
|
||||
QuestCompletionLog = fields.Read<string>(116);
|
||||
}
|
||||
|
||||
public void LoadRewardDisplaySpell(SQLFields fields)
|
||||
@@ -727,6 +725,7 @@ namespace Game
|
||||
response.Info.Flags = (uint)Flags;
|
||||
response.Info.FlagsEx = (uint)FlagsEx;
|
||||
response.Info.FlagsEx2 = (uint)FlagsEx2;
|
||||
response.Info.FlagsEx3 = FlagsEx3;
|
||||
response.Info.RewardTitle = RewardTitleId;
|
||||
response.Info.RewardArenaPoints = RewardArenaPoints;
|
||||
response.Info.RewardSkillLineID = RewardSkillId;
|
||||
@@ -849,7 +848,6 @@ namespace Game
|
||||
|
||||
public uint GetRewChoiceItemsCount() { return _rewChoiceItemsCount; }
|
||||
public uint GetRewItemsCount() { return _rewItemsCount; }
|
||||
public uint GetRewCurrencyCount() { return _rewCurrencyCount; }
|
||||
|
||||
public void SetEventIdForQuest(ushort eventId) { _eventIdForQuest = eventId; }
|
||||
public ushort GetEventIdForQuest() { return _eventIdForQuest; }
|
||||
@@ -879,6 +877,7 @@ namespace Game
|
||||
public QuestFlags Flags { get; set; }
|
||||
public QuestFlagsEx FlagsEx;
|
||||
public QuestFlagsEx2 FlagsEx2;
|
||||
public uint FlagsEx3;
|
||||
public uint[] RewardItemId = new uint[SharedConst.QuestRewardItemCount];
|
||||
public uint[] RewardItemCount = new uint[SharedConst.QuestRewardItemCount];
|
||||
public uint[] ItemDrop = new uint[SharedConst.QuestItemDropCount];
|
||||
@@ -983,7 +982,6 @@ namespace Game
|
||||
|
||||
uint _rewChoiceItemsCount;
|
||||
uint _rewItemsCount;
|
||||
uint _rewCurrencyCount;
|
||||
ushort _eventIdForQuest;
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ namespace Game.Spells
|
||||
if (_castreq != null)
|
||||
{
|
||||
RequiresSpellFocus = _castreq.RequiresSpellFocus;
|
||||
FacingCasterFlags = _castreq.FacingCasterFlags;
|
||||
FacingCasterFlags = (uint)_castreq.FacingCasterFlags;
|
||||
RequiredAreasID = _castreq.RequiredAreasID;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user