Core/Achievements: Define and implement new ModifierTree types

Port TrinityCore Commit: https://github.com/TrinityCore/TrinityCore/commit/fbf05e69bb999aa1186ca913cca832f8903affa4
This commit is contained in:
hondacrx
2019-08-14 11:38:16 -04:00
parent b56e6371b0
commit 44cabeb8e1
2 changed files with 47 additions and 4 deletions
@@ -1189,6 +1189,13 @@ namespace Game.Achievements
uint reqValue = tree.Entry.Asset;
switch ((CriteriaAdditionalCondition)reqType)
{
case CriteriaAdditionalCondition.SourcePlayerCondition: // 2
{
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(reqValue);
if (playerCondition == null || !ConditionManager.IsPlayerMeetingCondition(referencePlayer, playerCondition))
return false;
break;
}
case CriteriaAdditionalCondition.ItemLevel: // 3
{
// miscValue1 is itemid
@@ -1217,6 +1224,10 @@ namespace Game.Achievements
if (!referencePlayer.HasAura(reqValue))
return false;
break;
case CriteriaAdditionalCondition.SourceHasAuraType: // 9
if (!referencePlayer.HasAuraType((AuraType)reqValue))
return false;
break;
case CriteriaAdditionalCondition.TargetHasAura: // 10
if (unit == null || !unit.HasAura(reqValue))
return false;
@@ -1225,6 +1236,14 @@ namespace Game.Achievements
if (unit == null || !unit.HasAuraType((AuraType)reqValue))
return false;
break;
case CriteriaAdditionalCondition.SourceAuraState: // 12
if (!referencePlayer.HasAuraState((AuraStateType)reqValue))
return false;
break;
case CriteriaAdditionalCondition.TargetAuraState: // 13
if (!unit || !unit.HasAuraState((AuraStateType)reqValue))
return false;
break;
case CriteriaAdditionalCondition.ItemQualityMin: // 14
{
// miscValue1 is itemid
@@ -1326,6 +1345,16 @@ namespace Game.Achievements
if (unit == null || unit.GetHealthPct() >= reqValue)
return false;
break;
case CriteriaAdditionalCondition.TargetPlayerCondition: // 55
{
if (unit == null || !unit.IsPlayer())
return false;
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(reqValue);
if (playerCondition == null || !ConditionManager.IsPlayerMeetingCondition(unit.ToPlayer(), playerCondition))
return false;
break;
}
case CriteriaAdditionalCondition.RatedBattlegroundRating: // 64
if (referencePlayer.GetRBGPersonalRating() < reqValue)
return false;
@@ -1341,6 +1370,14 @@ namespace Game.Achievements
if (miscValue1 != reqValue)
return false;
break;
case CriteriaAdditionalCondition.RewardedQuest: // 110
if (!referencePlayer.GetQuestRewardStatus(reqValue))
return false;
break;
case CriteriaAdditionalCondition.CompletedQuest: // 111
if (referencePlayer.GetQuestStatus(reqValue) != QuestStatus.Complete)
return false;
break;
case CriteriaAdditionalCondition.GarrisonFollowerEntry: // 144
{
if (!referencePlayer)