Core/DataStores: Updated db2 structures to 9.0.2
Port From (https://github.com/TrinityCore/TrinityCore/commit/b82a3a557a7bf13d48342ea189325550059b622d)
This commit is contained in:
@@ -84,6 +84,12 @@ namespace Game.Achievements
|
||||
return false;
|
||||
}
|
||||
|
||||
if (achievement.CovenantID != 0 && referencePlayer.m_playerData.CovenantID != achievement.CovenantID)
|
||||
{
|
||||
Log.outTrace(LogFilter.Achievement, $"CanUpdateCriteriaTree: (Id: {criteria.Id} Type {criteria.Entry.Type} Achievement {achievement.Id}) Wrong covenant");
|
||||
return false;
|
||||
}
|
||||
|
||||
return base.CanUpdateCriteriaTree(criteria, tree, referencePlayer);
|
||||
}
|
||||
|
||||
@@ -535,7 +541,7 @@ namespace Game.Achievements
|
||||
//! Since no common attributes were found, (not even in titleRewardFlags field)
|
||||
//! we explicitly check by ID. Maybe in the future we could move the achievement_reward
|
||||
//! condition fields to the condition system.
|
||||
uint titleId = reward.TitleId[achievement.Id == 1793 ? _owner.m_playerData.NativeSex : (_owner.GetTeam() == Team.Alliance ? 0 : 1)];
|
||||
uint titleId = reward.TitleId[achievement.Id == 1793 ? (int)_owner.GetNativeSex() : (_owner.GetTeam() == Team.Alliance ? 0 : 1)];
|
||||
if (titleId != 0)
|
||||
{
|
||||
CharTitlesRecord titleEntry = CliDB.CharTitlesStorage.LookupByKey(titleId);
|
||||
|
||||
@@ -138,6 +138,10 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.OwnBattlePetCount:
|
||||
case CriteriaTypes.HonorLevelReached:
|
||||
case CriteriaTypes.PrestigeReached:
|
||||
case CriteriaTypes.CompleteQuestAccumulate:
|
||||
case CriteriaTypes.BoughtItemFromVendor:
|
||||
case CriteriaTypes.SoldItemToVendor:
|
||||
case CriteriaTypes.TravelledToArea:
|
||||
SetCriteriaProgress(criteria, 1, referencePlayer, ProgressType.Accumulate);
|
||||
break;
|
||||
// std case: increment at miscValue1
|
||||
@@ -437,6 +441,9 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.EarnHonorXp:
|
||||
case CriteriaTypes.RelicTalentUnlocked:
|
||||
case CriteriaTypes.ReachAccountHonorLevel:
|
||||
case CriteriaTypes.MythicKeystoneCompleted:
|
||||
case CriteriaTypes.ApplyConduit:
|
||||
case CriteriaTypes.ConvertItemsToCurrency:
|
||||
break; // Not implemented yet :(
|
||||
}
|
||||
|
||||
@@ -812,6 +819,10 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.ReachAccountHonorLevel:
|
||||
case CriteriaTypes.HeartOfAzerothArtifactPowerEarned:
|
||||
case CriteriaTypes.HeartOfAzerothLevelReached:
|
||||
case CriteriaTypes.CompleteQuestAccumulate:
|
||||
case CriteriaTypes.BoughtItemFromVendor:
|
||||
case CriteriaTypes.SoldItemToVendor:
|
||||
case CriteriaTypes.TravelledToArea:
|
||||
return progress.Counter >= requiredAmount;
|
||||
case CriteriaTypes.CompleteAchievement:
|
||||
case CriteriaTypes.CompleteQuest:
|
||||
@@ -942,6 +953,9 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.WinDuel:
|
||||
case CriteriaTypes.WinRatedArena:
|
||||
case CriteriaTypes.WonAuctions:
|
||||
case CriteriaTypes.CompleteQuestAccumulate:
|
||||
case CriteriaTypes.BoughtItemFromVendor:
|
||||
case CriteriaTypes.SoldItemToVendor:
|
||||
if (miscValue1 == 0)
|
||||
return false;
|
||||
break;
|
||||
@@ -1188,6 +1202,10 @@ namespace Game.Achievements
|
||||
if (miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaTypes.TravelledToArea:
|
||||
if (miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1227,8 +1245,8 @@ namespace Game.Achievements
|
||||
bool ModifierSatisfied(ModifierTreeRecord modifier, ulong miscValue1, ulong miscValue2, Unit unit, Player referencePlayer)
|
||||
{
|
||||
uint reqValue = modifier.Asset;
|
||||
int secondaryAsset = modifier.SecondaryAsset;
|
||||
int tertiaryAsset = modifier.TertiaryAsset;
|
||||
int secondaryAsset = modifier.SecondaryAsset;
|
||||
int tertiaryAsset = modifier.TertiaryAsset;
|
||||
|
||||
switch ((CriteriaAdditionalCondition)modifier.Type)
|
||||
{
|
||||
@@ -1621,7 +1639,7 @@ namespace Game.Achievements
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.SourceNativeSex: // 98
|
||||
if (referencePlayer.m_playerData.NativeSex != reqValue)
|
||||
if (referencePlayer.GetNativeSex() != (Gender)reqValue)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.Skill: // 99
|
||||
@@ -1656,7 +1674,7 @@ namespace Game.Achievements
|
||||
uint questBit = Global.DB2Mgr.GetQuestUniqueBitFlag(reqValue);
|
||||
if (questBit != 0)
|
||||
if ((referencePlayer.m_activePlayerData.QuestCompleted[((int)questBit - 1) >> 6] & (1ul << (((int)questBit - 1) & 63))) == 0)
|
||||
return false;
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.CompletedQuest: // 111
|
||||
if (referencePlayer.GetQuestStatus(reqValue) != QuestStatus.Complete)
|
||||
@@ -2402,7 +2420,7 @@ namespace Game.Achievements
|
||||
break;
|
||||
}
|
||||
case CriteriaAdditionalCondition.SourceLevel120: // 264
|
||||
if (referencePlayer.GetLevel() != 120)
|
||||
if (referencePlayer.GetLevel() != 60)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.SelectedAzeriteEssenceRankLower: // 266
|
||||
@@ -2441,8 +2459,54 @@ namespace Game.Achievements
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
case CriteriaAdditionalCondition.SourceLevelInRangeCt: // 268
|
||||
{
|
||||
uint level = referencePlayer.GetLevel();
|
||||
var levels = Global.DB2Mgr.GetContentTuningData(reqValue, 0);
|
||||
if (levels.HasValue)
|
||||
{
|
||||
if (secondaryAsset != 0)
|
||||
return level >= levels.Value.MinLevelWithDelta && level <= levels.Value.MaxLevelWithDelta;
|
||||
return level >= levels.Value.MinLevel && level <= levels.Value.MaxLevel;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
case CriteriaAdditionalCondition.TargetLevelInRangeCt: // 269
|
||||
{
|
||||
if (!unit)
|
||||
return false;
|
||||
|
||||
uint level = unit.GetLevel();
|
||||
var levels = Global.DB2Mgr.GetContentTuningData(reqValue, 0);
|
||||
if (levels.HasValue)
|
||||
{
|
||||
if (secondaryAsset != 0)
|
||||
return level >= levels.Value.MinLevelWithDelta && level <= levels.Value.MaxLevelWithDelta;
|
||||
return level >= levels.Value.MinLevel && level <= levels.Value.MaxLevel;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
case CriteriaAdditionalCondition.SourceLevelGreaterCt: // 272
|
||||
{
|
||||
uint level = referencePlayer.GetLevel();
|
||||
var levels = Global.DB2Mgr.GetContentTuningData(reqValue, 0);
|
||||
if (levels.HasValue)
|
||||
return secondaryAsset != 0 ? level >= levels.Value.MinLevelWithDelta : level >= levels.Value.MinLevel;
|
||||
return false;
|
||||
}
|
||||
case CriteriaAdditionalCondition.TargetLevelGreaterCt: // 273
|
||||
{
|
||||
if (!unit)
|
||||
return false;
|
||||
|
||||
uint level = unit.GetLevel();
|
||||
var levels = Global.DB2Mgr.GetContentTuningData(reqValue, 0);
|
||||
if (levels.HasValue)
|
||||
return secondaryAsset != 0 ? level >= levels.Value.MinLevelWithDelta : level >= levels.Value.MinLevel;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
case CriteriaAdditionalCondition.MapOrCosmeticMap: // 280
|
||||
{
|
||||
MapRecord map = referencePlayer.GetMap().GetEntry();
|
||||
@@ -2450,6 +2514,60 @@ namespace Game.Achievements
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case CriteriaAdditionalCondition.Covenant: // 288
|
||||
if (referencePlayer.m_playerData.CovenantID != reqValue)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.Soulbind: // 291
|
||||
if (referencePlayer.m_playerData.SoulbindID != reqValue)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.SourceAreaOrZoneInGroup: // 293
|
||||
{
|
||||
var areas = Global.DB2Mgr.GetAreasForGroup(reqValue);
|
||||
AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(referencePlayer.GetAreaId());
|
||||
if (area != null)
|
||||
foreach (uint areaInGroup in areas)
|
||||
if (areaInGroup == area.Id || areaInGroup == area.ParentAreaID)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
case CriteriaAdditionalCondition.SourceInSpecificChromieTime: // 300
|
||||
if (referencePlayer.m_activePlayerData.UiChromieTimeExpansionID != reqValue)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.SourceInAnyChromieTime: // 301
|
||||
if (referencePlayer.m_activePlayerData.UiChromieTimeExpansionID == 0)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaAdditionalCondition.SourceRuneforgeLegendaryKnown: // 303
|
||||
{
|
||||
int block = (int)reqValue / 32;
|
||||
if (block >= referencePlayer.m_activePlayerData.RuneforgePowers.Size())
|
||||
return false;
|
||||
|
||||
uint bit = reqValue % 32;
|
||||
return (referencePlayer.m_activePlayerData.RuneforgePowers[block] & (1u << (int)bit)) != 0;
|
||||
}
|
||||
case CriteriaAdditionalCondition.ShapeshiftFormCustomizationDisplay: // 308
|
||||
{
|
||||
ShapeshiftFormModelData formModelData = Global.DB2Mgr.GetShapeshiftFormModelData(referencePlayer.GetRace(), referencePlayer.GetNativeSex(), (ShapeShiftForm)secondaryAsset);
|
||||
if (formModelData == null)
|
||||
return false;
|
||||
|
||||
uint formChoice = referencePlayer.GetCustomizationChoice(formModelData.OptionID);
|
||||
var choiceIndex = formModelData.Choices.FindIndex(choice => { return choice.Id == formChoice; });
|
||||
if (choiceIndex == -1)
|
||||
return false;
|
||||
|
||||
if (reqValue != formModelData.Displays[choiceIndex].DisplayID)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case CriteriaAdditionalCondition.SourceFlying: // 311
|
||||
if (!referencePlayer.IsFlying())
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2851,7 +2969,7 @@ namespace Game.Achievements
|
||||
{
|
||||
return _criteriasByFailEvent[(int)condition].LookupByKey(asset);
|
||||
}
|
||||
|
||||
|
||||
public CriteriaDataSet GetCriteriaDataSet(Criteria criteria)
|
||||
{
|
||||
return _criteriaDataMap.LookupByKey(criteria.Id);
|
||||
@@ -2917,7 +3035,7 @@ namespace Game.Achievements
|
||||
}
|
||||
|
||||
public class CriteriaTree
|
||||
{
|
||||
{
|
||||
public uint Id;
|
||||
public CriteriaTreeRecord Entry;
|
||||
public AchievementRecord Achievement;
|
||||
|
||||
Reference in New Issue
Block a user