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 public enum CriteriaAdditionalCondition
{ {
SourceDrunkValue = 1, SourceDrunkValue = 1,
Unk2 = 2, SourcePlayerCondition = 2,
ItemLevel = 3, ItemLevel = 3,
TargetCreatureEntry = 4, TargetCreatureEntry = 4,
TargetMustBePlayer = 5, TargetMustBePlayer = 5,
TargetMustBeDead = 6, TargetMustBeDead = 6,
TargetMustBeEnemy = 7, TargetMustBeEnemy = 7,
SourceHasAura = 8, SourceHasAura = 8,
SourceHasAuraType = 9,
TargetHasAura = 10, TargetHasAura = 10,
TargetHasAuraType = 11, TargetHasAuraType = 11,
SourceAuraState = 12,
TargetAuraState = 13,
ItemQualityMin = 14, ItemQualityMin = 14,
ItemQualityEquals = 15, ItemQualityEquals = 15,
Unk16 = 16, SourceIsAlive = 16,
SourceAreaOrZone = 17, SourceAreaOrZone = 17,
TargetAreaOrZone = 18, TargetAreaOrZone = 18,
MapDifficultyOld = 20, MapDifficultyOld = 20,
@@ -134,7 +137,7 @@ namespace Framework.Constants
TargetLevel = 40, TargetLevel = 40,
TargetZone = 41, TargetZone = 41,
TargetHealthPercentBelow = 46, TargetHealthPercentBelow = 46,
Unk55 = 55, TargetPlayerCondition = 55,
MinAchievementPoints = 56, MinAchievementPoints = 56,
RequiresLfgGroup = 58, RequiresLfgGroup = 58,
Unk60 = 60, Unk60 = 60,
@@ -162,13 +165,16 @@ namespace Framework.Constants
//CRITERIA_ADDITIONAL_CONDITION_UNK87 = 87, // Achievement id //CRITERIA_ADDITIONAL_CONDITION_UNK87 = 87, // Achievement id
BattlePetSpecies = 91, BattlePetSpecies = 91,
Expansion = 92, Expansion = 92,
RewardedQuest = 110,
CompletedQuest = 111,
CompletedQuestObjective = 112, // NYI, QuestObjectiveID
GarrisonFollowerEntry = 144, GarrisonFollowerEntry = 144,
GarrisonFollowerQuality = 145, GarrisonFollowerQuality = 145,
GarrisonFollowerLevel = 146, GarrisonFollowerLevel = 146,
GarrisonRareMission = 147, // NYI GarrisonRareMission = 147, // NYI
GarrisonBuildingLevel = 149, // NYI GarrisonBuildingLevel = 149, // NYI
GarrisonMissionType = 167, // NYI GarrisonMissionType = 167, // NYI
PLayerItemLevel = 169, // NYI PlayerItemLevel = 169, // NYI
GarrisonFollowILvl = 184, GarrisonFollowILvl = 184,
HonorLevel = 193, HonorLevel = 193,
PrestigeLevel = 194 PrestigeLevel = 194
@@ -1189,6 +1189,13 @@ namespace Game.Achievements
uint reqValue = tree.Entry.Asset; uint reqValue = tree.Entry.Asset;
switch ((CriteriaAdditionalCondition)reqType) 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 case CriteriaAdditionalCondition.ItemLevel: // 3
{ {
// miscValue1 is itemid // miscValue1 is itemid
@@ -1217,6 +1224,10 @@ namespace Game.Achievements
if (!referencePlayer.HasAura(reqValue)) if (!referencePlayer.HasAura(reqValue))
return false; return false;
break; break;
case CriteriaAdditionalCondition.SourceHasAuraType: // 9
if (!referencePlayer.HasAuraType((AuraType)reqValue))
return false;
break;
case CriteriaAdditionalCondition.TargetHasAura: // 10 case CriteriaAdditionalCondition.TargetHasAura: // 10
if (unit == null || !unit.HasAura(reqValue)) if (unit == null || !unit.HasAura(reqValue))
return false; return false;
@@ -1225,6 +1236,14 @@ namespace Game.Achievements
if (unit == null || !unit.HasAuraType((AuraType)reqValue)) if (unit == null || !unit.HasAuraType((AuraType)reqValue))
return false; return false;
break; 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 case CriteriaAdditionalCondition.ItemQualityMin: // 14
{ {
// miscValue1 is itemid // miscValue1 is itemid
@@ -1326,6 +1345,16 @@ namespace Game.Achievements
if (unit == null || unit.GetHealthPct() >= reqValue) if (unit == null || unit.GetHealthPct() >= reqValue)
return false; return false;
break; 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 case CriteriaAdditionalCondition.RatedBattlegroundRating: // 64
if (referencePlayer.GetRBGPersonalRating() < reqValue) if (referencePlayer.GetRBGPersonalRating() < reqValue)
return false; return false;
@@ -1341,6 +1370,14 @@ namespace Game.Achievements
if (miscValue1 != reqValue) if (miscValue1 != reqValue)
return false; return false;
break; 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 case CriteriaAdditionalCondition.GarrisonFollowerEntry: // 144
{ {
if (!referencePlayer) if (!referencePlayer)