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
+10 -4
View File
@@ -101,18 +101,21 @@ namespace Framework.Constants
public enum CriteriaAdditionalCondition
{
SourceDrunkValue = 1,
Unk2 = 2,
SourcePlayerCondition = 2,
ItemLevel = 3,
TargetCreatureEntry = 4,
TargetMustBePlayer = 5,
TargetMustBeDead = 6,
TargetMustBeEnemy = 7,
SourceHasAura = 8,
SourceHasAuraType = 9,
TargetHasAura = 10,
TargetHasAuraType = 11,
SourceAuraState = 12,
TargetAuraState = 13,
ItemQualityMin = 14,
ItemQualityEquals = 15,
Unk16 = 16,
SourceIsAlive = 16,
SourceAreaOrZone = 17,
TargetAreaOrZone = 18,
MapDifficultyOld = 20,
@@ -134,7 +137,7 @@ namespace Framework.Constants
TargetLevel = 40,
TargetZone = 41,
TargetHealthPercentBelow = 46,
Unk55 = 55,
TargetPlayerCondition = 55,
MinAchievementPoints = 56,
RequiresLfgGroup = 58,
Unk60 = 60,
@@ -162,13 +165,16 @@ namespace Framework.Constants
//CRITERIA_ADDITIONAL_CONDITION_UNK87 = 87, // Achievement id
BattlePetSpecies = 91,
Expansion = 92,
RewardedQuest = 110,
CompletedQuest = 111,
CompletedQuestObjective = 112, // NYI, QuestObjectiveID
GarrisonFollowerEntry = 144,
GarrisonFollowerQuality = 145,
GarrisonFollowerLevel = 146,
GarrisonRareMission = 147, // NYI
GarrisonBuildingLevel = 149, // NYI
GarrisonMissionType = 167, // NYI
PLayerItemLevel = 169, // NYI
PlayerItemLevel = 169, // NYI
GarrisonFollowILvl = 184,
HonorLevel = 193,
PrestigeLevel = 194
@@ -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)