Core/Achievements: Define and implement new ModifierTree types
Port TrinityCore Commit: https://github.com/TrinityCore/TrinityCore/commit/fbf05e69bb999aa1186ca913cca832f8903affa4
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user