Core/Misc: First set of required db changes for 9.0
Port From (https://github.com/TrinityCore/TrinityCore/commit/4ca29f3cb050896a8a6c1fea5b2364b2b11c22cd)
This commit is contained in:
+130
-81
@@ -32,43 +32,35 @@ namespace Game
|
||||
{
|
||||
Id = fields.Read<uint>(0);
|
||||
Type = (QuestType)fields.Read<byte>(1);
|
||||
Level = fields.Read<int>(2);
|
||||
ScalingFactionGroup = fields.Read<int>(3);
|
||||
|
||||
MaxScalingLevel = fields.Read<int>(4);
|
||||
PackageID = fields.Read<uint>(5);
|
||||
MinLevel = fields.Read<int>(6);
|
||||
QuestSortID = fields.Read<short>(7);
|
||||
QuestInfoID = fields.Read<ushort>(8);
|
||||
SuggestedPlayers = fields.Read<uint>(9);
|
||||
NextQuestInChain = fields.Read<uint>(10);
|
||||
RewardXPDifficulty = fields.Read<uint>(11);
|
||||
RewardXPMultiplier = fields.Read<float>(12);
|
||||
RewardMoney = fields.Read<int>(13);
|
||||
RewardMoneyDifficulty = fields.Read<uint>(14);
|
||||
RewardMoneyMultiplier = fields.Read<float>(15);
|
||||
RewardBonusMoney = fields.Read<uint>(16);
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardDisplaySpellCount; ++i)
|
||||
RewardDisplaySpell[i] = fields.Read<uint>(17 + i);
|
||||
|
||||
RewardSpell = fields.Read<uint>(20);
|
||||
RewardHonor = fields.Read<uint>(21);
|
||||
RewardKillHonor = fields.Read<uint>(22);
|
||||
SourceItemId = fields.Read<uint>(23);
|
||||
RewardArtifactXPDifficulty = fields.Read<uint>(24);
|
||||
RewardArtifactXPMultiplier = fields.Read<float>(25);
|
||||
RewardArtifactCategoryID = fields.Read<uint>(26);
|
||||
Flags = (QuestFlags)fields.Read<uint>(27);
|
||||
FlagsEx = (QuestFlagsEx)fields.Read<uint>(28);
|
||||
FlagsEx2 = (QuestFlagsEx2)fields.Read<uint>(29);
|
||||
PackageID = fields.Read<uint>(2);
|
||||
ContentTuningId = fields.Read<uint>(3);
|
||||
QuestSortID = fields.Read<short>(4);
|
||||
QuestInfoID = fields.Read<ushort>(5);
|
||||
SuggestedPlayers = fields.Read<uint>(6);
|
||||
NextQuestInChain = fields.Read<uint>(7);
|
||||
RewardXPDifficulty = fields.Read<uint>(8);
|
||||
RewardXPMultiplier = fields.Read<float>(9);
|
||||
RewardMoney = fields.Read<int>(10);
|
||||
RewardMoneyDifficulty = fields.Read<uint>(11);
|
||||
RewardMoneyMultiplier = fields.Read<float>(12);
|
||||
RewardBonusMoney = fields.Read<uint>(13);
|
||||
RewardSpell = fields.Read<uint>(14);
|
||||
RewardHonor = fields.Read<uint>(15);
|
||||
RewardKillHonor = fields.Read<uint>(16);
|
||||
SourceItemId = fields.Read<uint>(17);
|
||||
RewardArtifactXPDifficulty = fields.Read<uint>(18);
|
||||
RewardArtifactXPMultiplier = fields.Read<float>(19);
|
||||
RewardArtifactCategoryID = fields.Read<uint>(20);
|
||||
Flags = (QuestFlags)fields.Read<uint>(21);
|
||||
FlagsEx = (QuestFlagsEx)fields.Read<uint>(22);
|
||||
FlagsEx2 = (QuestFlagsEx2)fields.Read<uint>(23);
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestItemDropCount; ++i)
|
||||
{
|
||||
RewardItemId[i] = fields.Read<uint>(30 + i * 4);
|
||||
RewardItemCount[i] = fields.Read<uint>(31 + i * 4);
|
||||
ItemDrop[i] = fields.Read<uint>(32 + i * 4);
|
||||
ItemDropQuantity[i] = fields.Read<uint>(33 + 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;
|
||||
@@ -76,66 +68,92 @@ namespace Game
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardChoicesCount; ++i)
|
||||
{
|
||||
RewardChoiceItemId[i] = fields.Read<uint>(46 + i * 3);
|
||||
RewardChoiceItemCount[i] = fields.Read<uint>(47 + i * 3);
|
||||
RewardChoiceItemDisplayId[i] = fields.Read<uint>(48 + 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>(64);
|
||||
POIx = fields.Read<float>(65);
|
||||
POIy = fields.Read<float>(66);
|
||||
POIPriority = fields.Read<uint>(67);
|
||||
POIContinent = fields.Read<uint>(58);
|
||||
POIx = fields.Read<float>(59);
|
||||
POIy = fields.Read<float>(60);
|
||||
POIPriority = fields.Read<uint>(61);
|
||||
|
||||
RewardTitleId = fields.Read<uint>(68);
|
||||
RewardArenaPoints = fields.Read<int>(69);
|
||||
RewardSkillId = fields.Read<uint>(70);
|
||||
RewardSkillPoints = fields.Read<uint>(71);
|
||||
RewardTitleId = fields.Read<uint>(62);
|
||||
RewardArenaPoints = fields.Read<int>(63);
|
||||
RewardSkillId = fields.Read<uint>(64);
|
||||
RewardSkillPoints = fields.Read<uint>(65);
|
||||
|
||||
QuestGiverPortrait = fields.Read<uint>(72);
|
||||
QuestGiverPortraitMount = fields.Read<uint>(73);
|
||||
QuestTurnInPortrait = fields.Read<uint>(74);
|
||||
QuestGiverPortrait = fields.Read<uint>(66);
|
||||
QuestGiverPortraitMount = fields.Read<uint>(67);
|
||||
QuestTurnInPortrait = fields.Read<uint>(68);
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardReputationsCount; ++i)
|
||||
{
|
||||
RewardFactionId[i] = fields.Read<uint>(75 + i * 4);
|
||||
RewardFactionValue[i] = fields.Read<int>(76 + i * 4);
|
||||
RewardFactionOverride[i] = fields.Read<int>(77 + i * 4);
|
||||
RewardFactionCapIn[i] = fields.Read<uint>(78 + i * 4);
|
||||
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<uint>(72 + i * 4);
|
||||
}
|
||||
|
||||
RewardReputationMask = fields.Read<uint>(95);
|
||||
RewardReputationMask = fields.Read<uint>(89);
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardCurrencyCount; ++i)
|
||||
{
|
||||
RewardCurrencyId[i] = fields.Read<uint>(96 + i * 2);
|
||||
RewardCurrencyCount[i] = fields.Read<uint>(97 + i * 2);
|
||||
RewardCurrencyId[i] = fields.Read<uint>(90 + i * 2);
|
||||
RewardCurrencyCount[i] = fields.Read<uint>(91 + i * 2);
|
||||
|
||||
if (RewardCurrencyId[i] != 0)
|
||||
++_rewCurrencyCount;
|
||||
}
|
||||
|
||||
SoundAccept = fields.Read<uint>(104);
|
||||
SoundTurnIn = fields.Read<uint>(105);
|
||||
AreaGroupID = fields.Read<uint>(106);
|
||||
LimitTime = fields.Read<uint>(107);
|
||||
AllowableRaces = (long)fields.Read<ulong>(108);
|
||||
TreasurePickerID = fields.Read<int>(109);
|
||||
Expansion = fields.Read<int>(110);
|
||||
ManagedWorldStateID = fields.Read<int>(111);
|
||||
QuestSessionBonus = fields.Read<int>(112);
|
||||
SoundAccept = fields.Read<uint>(98);
|
||||
SoundTurnIn = fields.Read<uint>(99);
|
||||
AreaGroupID = fields.Read<uint>(100);
|
||||
LimitTime = fields.Read<uint>(101);
|
||||
AllowableRaces = (long)fields.Read<ulong>(102);
|
||||
TreasurePickerID = fields.Read<int>(103);
|
||||
Expansion = fields.Read<int>(104);
|
||||
ManagedWorldStateID = fields.Read<int>(105);
|
||||
QuestSessionBonus = fields.Read<int>(106);
|
||||
|
||||
LogTitle = fields.Read<string>(113);
|
||||
LogDescription = fields.Read<string>(114);
|
||||
QuestDescription = fields.Read<string>(115);
|
||||
AreaDescription = fields.Read<string>(116);
|
||||
PortraitGiverText = fields.Read<string>(117);
|
||||
PortraitGiverName = fields.Read<string>(118);
|
||||
PortraitTurnInText = fields.Read<string>(119);
|
||||
PortraitTurnInName = fields.Read<string>(120);
|
||||
QuestCompletionLog = fields.Read<string>(121);
|
||||
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);
|
||||
}
|
||||
|
||||
public void LoadRewardDisplaySpell(SQLFields fields)
|
||||
{
|
||||
uint spellId = fields.Read<uint>(1);
|
||||
uint playerConditionId = fields.Read<uint>(2);
|
||||
|
||||
if (!Global.SpellMgr.HasSpellInfo(spellId, Difficulty.None))
|
||||
{
|
||||
Log.outError(LogFilter.Sql, $"Table `quest_reward_display_spell` has non-existing Spell ({spellId}) set for quest {Id}. Skipped.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (playerConditionId != 0 && !CliDB.PlayerConditionStorage.ContainsKey(playerConditionId))
|
||||
{
|
||||
Log.outError(LogFilter.Sql, $"Table `quest_reward_display_spell` has non-existing PlayerCondition ({spellId}) set for quest {Id}. Set to 0.");
|
||||
playerConditionId = 0;
|
||||
}
|
||||
|
||||
RewardDisplaySpell.Add(new QuestRewardDisplaySpell(spellId, playerConditionId));
|
||||
}
|
||||
|
||||
public void LoadRewardChoiceItems(SQLFields fields)
|
||||
{
|
||||
for (int i = 0; i < SharedConst.QuestRewardChoicesCount; ++i)
|
||||
RewardChoiceItemType[i] = (LootItemType)fields.Read<byte>(1 + i);
|
||||
}
|
||||
|
||||
public void LoadQuestDetails(SQLFields fields)
|
||||
@@ -310,9 +328,20 @@ namespace Game
|
||||
rewards.ArtifactCategoryID = RewardArtifactCategoryID;
|
||||
rewards.Title = RewardTitleId;
|
||||
rewards.FactionFlags = RewardReputationMask;
|
||||
for (int i = 0; i < SharedConst.QuestRewardDisplaySpellCount; ++i)
|
||||
rewards.SpellCompletionDisplayID[i] = (int)RewardDisplaySpell[i];
|
||||
|
||||
var displaySpellItr = rewards.SpellCompletionDisplayID.begin();
|
||||
foreach (QuestRewardDisplaySpell displaySpell in RewardDisplaySpell)
|
||||
{
|
||||
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(displaySpell.PlayerConditionId);
|
||||
if (playerCondition != null)
|
||||
if (!ConditionManager.IsPlayerMeetingCondition(player, playerCondition))
|
||||
continue;
|
||||
|
||||
displaySpellItr = displaySpell.SpellId;
|
||||
if (++displaySpellItr == null)
|
||||
break;
|
||||
}
|
||||
|
||||
rewards.SpellCompletionID = RewardSpell;
|
||||
rewards.SkillLineID = RewardSkillId;
|
||||
rewards.NumSkillUps = RewardSkillPoints;
|
||||
@@ -320,6 +349,7 @@ namespace Game
|
||||
|
||||
for (int i = 0; i < SharedConst.QuestRewardChoicesCount; ++i)
|
||||
{
|
||||
rewards.ChoiceItems[i].LootItemType = RewardChoiceItemType[i];
|
||||
rewards.ChoiceItems[i].Item = new ItemInstance();
|
||||
rewards.ChoiceItems[i].Item.ItemID = RewardChoiceItemId[i];
|
||||
rewards.ChoiceItems[i].Quantity = RewardChoiceItemCount[i];
|
||||
@@ -551,14 +581,20 @@ namespace Game
|
||||
public void SetEventIdForQuest(ushort eventId) { _eventIdForQuest = eventId; }
|
||||
public ushort GetEventIdForQuest() { return _eventIdForQuest; }
|
||||
|
||||
[Obsolete]
|
||||
public int MinLevel;
|
||||
[Obsolete]
|
||||
public int Level;
|
||||
[Obsolete]
|
||||
public int ScalingFactionGroup;
|
||||
[Obsolete]
|
||||
public int MaxScalingLevel;
|
||||
|
||||
#region Fields
|
||||
public uint Id;
|
||||
public QuestType Type;
|
||||
public int Level;
|
||||
public int ScalingFactionGroup;
|
||||
public int MaxScalingLevel;
|
||||
public uint PackageID;
|
||||
public int MinLevel;
|
||||
public uint ContentTuningId;
|
||||
public int QuestSortID;
|
||||
public uint QuestInfoID;
|
||||
public uint SuggestedPlayers;
|
||||
@@ -569,7 +605,7 @@ namespace Game
|
||||
public uint RewardMoneyDifficulty;
|
||||
public float RewardMoneyMultiplier;
|
||||
public uint RewardBonusMoney;
|
||||
public uint[] RewardDisplaySpell = new uint[SharedConst.QuestRewardDisplaySpellCount];
|
||||
public List<QuestRewardDisplaySpell> RewardDisplaySpell = new List<QuestRewardDisplaySpell>();
|
||||
public uint RewardSpell { get; set; }
|
||||
public uint RewardHonor;
|
||||
public uint RewardKillHonor;
|
||||
@@ -584,6 +620,7 @@ namespace Game
|
||||
public uint[] RewardItemCount = new uint[SharedConst.QuestRewardItemCount];
|
||||
public uint[] ItemDrop = new uint[SharedConst.QuestItemDropCount];
|
||||
public uint[] ItemDropQuantity = new uint[SharedConst.QuestItemDropCount];
|
||||
public LootItemType[] RewardChoiceItemType = new LootItemType[SharedConst.QuestRewardChoicesCount];
|
||||
public uint[] RewardChoiceItemId = new uint[SharedConst.QuestRewardChoicesCount];
|
||||
public uint[] RewardChoiceItemCount = new uint[SharedConst.QuestRewardChoicesCount];
|
||||
public uint[] RewardChoiceItemDisplayId = new uint[SharedConst.QuestRewardChoicesCount];
|
||||
@@ -662,7 +699,7 @@ namespace Game
|
||||
public uint ScriptId;
|
||||
|
||||
public List<uint> DependentPreviousQuests = new List<uint>();
|
||||
public QueryQuestInfoResponse QueryData;
|
||||
public QueryQuestInfoResponse[] QueryData = new QueryQuestInfoResponse[(int)Locale.Total];
|
||||
|
||||
uint _rewChoiceItemsCount;
|
||||
uint _rewItemsCount;
|
||||
@@ -729,6 +766,18 @@ namespace Game
|
||||
public StringArray RewardText = new StringArray((int)Locale.Total);
|
||||
}
|
||||
|
||||
public struct QuestRewardDisplaySpell
|
||||
{
|
||||
public uint SpellId;
|
||||
public uint PlayerConditionId;
|
||||
|
||||
public QuestRewardDisplaySpell(uint spellId, uint playerConditionId)
|
||||
{
|
||||
SpellId = spellId;
|
||||
PlayerConditionId = playerConditionId;
|
||||
}
|
||||
}
|
||||
|
||||
public class QuestObjective
|
||||
{
|
||||
public uint Id;
|
||||
|
||||
Reference in New Issue
Block a user