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:
hondacrx
2020-12-09 16:03:38 -05:00
parent c46c7ba2dc
commit 0749a06c99
17 changed files with 475 additions and 270 deletions
+130 -81
View File
@@ -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;