Core: Updated to 11.1.5

Port From (https://github.com/TrinityCore/TrinityCore/commit/f9bf082be962d45de79f936d625f644253e9b810)
This commit is contained in:
Hondacrx
2025-08-11 21:28:27 -04:00
parent 2bded05e95
commit 0fe016c3dd
36 changed files with 587 additions and 537 deletions
@@ -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
+18 -1
View File
@@ -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
}
+3
View File
@@ -788,6 +788,9 @@ namespace Framework.Constants
Bandage = 7,
ConsumableOther = 8,
VantusRune = 9,
UtilityCurio = 10,
CombatCurio = 11,
Max
}
+2
View File
@@ -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
+1 -1
View File
@@ -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;
+4
View File
@@ -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;
}
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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];
+2 -2
View File
@@ -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;
}
}
+1 -1
View File
@@ -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;
+7 -2
View File
@@ -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;
}
+6 -6
View File
@@ -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; }
+5
View File
@@ -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);
+4 -3
View File
@@ -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;
+2 -2
View File
@@ -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;
+18 -21
View File
@@ -7082,33 +7082,33 @@ 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");
@@ -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;
}
+3 -1
View File
@@ -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);
+2 -2
View File
@@ -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);
+15 -11
View File
@@ -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
View File
@@ -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
}
+1 -1
View File
@@ -121,7 +121,7 @@ namespace Game.Spells
if (_castreq != null)
{
RequiresSpellFocus = _castreq.RequiresSpellFocus;
FacingCasterFlags = _castreq.FacingCasterFlags;
FacingCasterFlags = (uint)_castreq.FacingCasterFlags;
RequiredAreasID = _castreq.RequiredAreasID;
}