Core/Achievements: Several criteria fixes
Port From (https://github.com/TrinityCore/TrinityCore/commit/bca465a5694101c476dc01aeafa95dfb3531e427)
This commit is contained in:
@@ -526,7 +526,7 @@ namespace Framework.Constants
|
||||
GainReputation = 46,
|
||||
GainExaltedReputation = 47,
|
||||
VisitBarberShop = 48,
|
||||
EquipEpicItem = 49,
|
||||
EquipItemInSlot = 49,
|
||||
RollNeedOnLoot = 50, /// Todo Itemlevel Is Mentioned In Text But Not Present In Dbc
|
||||
RollGreedOnLoot = 51,
|
||||
HkClass = 52,
|
||||
@@ -567,8 +567,8 @@ namespace Framework.Constants
|
||||
GainReveredReputation = 87,
|
||||
GainHonoredReputation = 88,
|
||||
KnownFactions = 89,
|
||||
LootEpicItem = 90,
|
||||
ReceiveEpicItem = 91,
|
||||
LootAnyItem = 90,
|
||||
ObtainAnyItem = 91,
|
||||
SendEventScenario = 92,
|
||||
RollNeed = 93,
|
||||
RollGreed = 94,
|
||||
@@ -669,9 +669,10 @@ namespace Framework.Constants
|
||||
OwnHeirlooms = 189,
|
||||
ArtifactPowerEarned = 190,
|
||||
ArtifactTraitsUnlocked = 191,
|
||||
OwnItemModifiedAppearance = 192,
|
||||
HonorLevelReached = 194,
|
||||
PrestigeReached = 195,
|
||||
// 196 - CRITERIA_TYPE_REACH_LEVEL_2 or something
|
||||
ActivelyReachLevel = 196,
|
||||
// 197 - Order Hall Advancement related
|
||||
OrderHallTalentLearned = 198,
|
||||
AppearanceUnlockedBySlot = 199,
|
||||
@@ -684,6 +685,7 @@ namespace Framework.Constants
|
||||
GainParagonReputation = 206,
|
||||
EarnHonorXp = 207,
|
||||
RelicTalentUnlocked = 211,
|
||||
ExpansionLevel = 212,
|
||||
ReachAccountHonorLevel = 213,
|
||||
HeartOfAzerothArtifactPowerEarned = 214,
|
||||
HeartOfAzerothLevelReached = 215,
|
||||
|
||||
@@ -106,8 +106,8 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.QuestAbandoned:
|
||||
case CriteriaTypes.FlightPathsTaken:
|
||||
case CriteriaTypes.AcceptedSummonings:
|
||||
case CriteriaTypes.LootEpicItem:
|
||||
case CriteriaTypes.ReceiveEpicItem:
|
||||
case CriteriaTypes.LootAnyItem:
|
||||
case CriteriaTypes.ObtainAnyItem:
|
||||
case CriteriaTypes.Death:
|
||||
case CriteriaTypes.CompleteDailyQuest:
|
||||
case CriteriaTypes.CompleteBattleground:
|
||||
@@ -139,7 +139,6 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.OnLogin:
|
||||
case CriteriaTypes.PlaceGarrisonBuilding:
|
||||
case CriteriaTypes.UpgradeGarrisonBuilding:
|
||||
case CriteriaTypes.OwnBattlePetCount:
|
||||
case CriteriaTypes.HonorLevelReached:
|
||||
case CriteriaTypes.PrestigeReached:
|
||||
case CriteriaTypes.CompleteQuestAccumulate:
|
||||
@@ -258,11 +257,12 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.LearnSpell:
|
||||
case CriteriaTypes.ExploreArea:
|
||||
case CriteriaTypes.VisitBarberShop:
|
||||
case CriteriaTypes.EquipEpicItem:
|
||||
case CriteriaTypes.EquipItemInSlot:
|
||||
case CriteriaTypes.EquipItem:
|
||||
case CriteriaTypes.CompleteAchievement:
|
||||
case CriteriaTypes.RecruitGarrisonFollower:
|
||||
case CriteriaTypes.OwnBattlePet:
|
||||
case CriteriaTypes.ActivelyReachLevel:
|
||||
SetCriteriaProgress(criteria, 1, referencePlayer);
|
||||
break;
|
||||
case CriteriaTypes.BuyBankSlot:
|
||||
@@ -352,6 +352,9 @@ namespace Game.Achievements
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CriteriaTypes.OwnBattlePetCount:
|
||||
SetCriteriaProgress(criteria, referencePlayer.GetSession().GetBattlePetMgr().GetPetUniqueSpeciesCount(), referencePlayer);
|
||||
break;
|
||||
case CriteriaTypes.ReachGuildLevel:
|
||||
SetCriteriaProgress(criteria, miscValue1, referencePlayer);
|
||||
break;
|
||||
@@ -447,6 +450,8 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.MythicKeystoneCompleted:
|
||||
case CriteriaTypes.ApplyConduit:
|
||||
case CriteriaTypes.ConvertItemsToCurrency:
|
||||
case CriteriaTypes.ExpansionLevel:
|
||||
case CriteriaTypes.OwnItemModifiedAppearance:
|
||||
break; // Not implemented yet :(
|
||||
}
|
||||
|
||||
@@ -794,7 +799,7 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.GainReputation:
|
||||
case CriteriaTypes.GainExaltedReputation:
|
||||
case CriteriaTypes.VisitBarberShop:
|
||||
case CriteriaTypes.EquipEpicItem:
|
||||
case CriteriaTypes.EquipItemInSlot:
|
||||
case CriteriaTypes.RollNeedOnLoot:
|
||||
case CriteriaTypes.RollGreedOnLoot:
|
||||
case CriteriaTypes.HkClass:
|
||||
@@ -835,6 +840,7 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.OwnBattlePet:
|
||||
case CriteriaTypes.HonorLevelReached:
|
||||
case CriteriaTypes.PrestigeReached:
|
||||
case CriteriaTypes.ActivelyReachLevel:
|
||||
case CriteriaTypes.TransmogSetUnlocked:
|
||||
return progress.Counter >= 1;
|
||||
case CriteriaTypes.LearnSkillLevel:
|
||||
@@ -939,11 +945,13 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.HighestHitDealt:
|
||||
case CriteriaTypes.HighestHitReceived:
|
||||
case CriteriaTypes.HonorableKill:
|
||||
case CriteriaTypes.LootAnyItem:
|
||||
case CriteriaTypes.LootMoney:
|
||||
case CriteriaTypes.LoseDuel:
|
||||
case CriteriaTypes.MoneyFromQuestReward:
|
||||
case CriteriaTypes.MoneyFromVendors:
|
||||
case CriteriaTypes.NumberOfTalentResets:
|
||||
case CriteriaTypes.ObtainAnyItem:
|
||||
case CriteriaTypes.QuestAbandoned:
|
||||
case CriteriaTypes.ReachGuildLevel:
|
||||
case CriteriaTypes.RollGreed:
|
||||
@@ -974,6 +982,7 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.KnownFactions:
|
||||
case CriteriaTypes.ReachLevel:
|
||||
case CriteriaTypes.OnLogin:
|
||||
case CriteriaTypes.OwnBattlePetCount:
|
||||
break;
|
||||
case CriteriaTypes.CompleteAchievement:
|
||||
if (!RequiredAchievementSatisfied(criteria.Entry.Asset))
|
||||
@@ -1118,8 +1127,9 @@ namespace Game.Achievements
|
||||
if (miscValue1 != 0 && miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaTypes.EquipEpicItem:
|
||||
// miscValue1 = itemSlot miscValue2 = itemid
|
||||
case CriteriaTypes.EquipItemInSlot:
|
||||
case CriteriaTypes.AppearanceUnlockedBySlot:
|
||||
// miscValue1 = EquipmentSlot miscValue2 = itemid | itemModifiedAppearanceId
|
||||
if (miscValue2 == 0 || miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
@@ -1164,16 +1174,6 @@ namespace Game.Achievements
|
||||
if (miscValue1 != 0 && miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaTypes.LootEpicItem:
|
||||
case CriteriaTypes.ReceiveEpicItem:
|
||||
{
|
||||
if (miscValue1 == 0)
|
||||
return false;
|
||||
ItemTemplate proto = Global.ObjectMgr.GetItemTemplate((uint)miscValue1);
|
||||
if (proto == null || proto.GetQuality() < ItemQuality.Epic)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case CriteriaTypes.HkClass:
|
||||
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
@@ -1187,6 +1187,7 @@ namespace Game.Achievements
|
||||
return false;
|
||||
break;
|
||||
case CriteriaTypes.HonorableKillAtArea:
|
||||
case CriteriaTypes.TravelledToArea:
|
||||
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
@@ -1202,13 +1203,22 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.HighestTeamRating:
|
||||
return false;
|
||||
case CriteriaTypes.PlaceGarrisonBuilding:
|
||||
case CriteriaTypes.ConstructGarrisonBuilding:
|
||||
if (miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaTypes.TravelledToArea:
|
||||
case CriteriaTypes.RecruitGarrisonFollower:
|
||||
if (miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaTypes.TransmogSetUnlocked:
|
||||
if (miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaTypes.ActivelyReachLevel:
|
||||
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -3860,7 +3870,7 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.LootItem:
|
||||
case CriteriaTypes.ExploreArea:
|
||||
case CriteriaTypes.GainReputation:
|
||||
case CriteriaTypes.EquipEpicItem:
|
||||
case CriteriaTypes.EquipItemInSlot:
|
||||
case CriteriaTypes.HkClass:
|
||||
case CriteriaTypes.HkRace:
|
||||
case CriteriaTypes.DoEmote:
|
||||
@@ -4089,7 +4099,7 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.CastSpell2:
|
||||
case CriteriaTypes.BeSpellTarget:
|
||||
case CriteriaTypes.BeSpellTarget2:
|
||||
case CriteriaTypes.EquipEpicItem:
|
||||
case CriteriaTypes.EquipItemInSlot:
|
||||
case CriteriaTypes.RollNeedOnLoot:
|
||||
case CriteriaTypes.RollGreedOnLoot:
|
||||
case CriteriaTypes.BgObjectiveCapture:
|
||||
@@ -4099,8 +4109,8 @@ namespace Game.Achievements
|
||||
case CriteriaTypes.GetKillingBlows:
|
||||
case CriteriaTypes.ReachLevel:
|
||||
case CriteriaTypes.OnLogin:
|
||||
case CriteriaTypes.LootEpicItem:
|
||||
case CriteriaTypes.ReceiveEpicItem:
|
||||
case CriteriaTypes.LootAnyItem:
|
||||
case CriteriaTypes.ObtainAnyItem:
|
||||
break;
|
||||
default:
|
||||
if (DataType != CriteriaDataType.Script)
|
||||
@@ -4402,7 +4412,7 @@ namespace Game.Achievements
|
||||
{
|
||||
Criteria entry = Global.CriteriaMgr.GetCriteria(criteriaId);
|
||||
|
||||
uint itemId = entry.Entry.Type == CriteriaTypes.EquipEpicItem ? miscValue2 : miscValue1;
|
||||
uint itemId = entry.Entry.Type == CriteriaTypes.EquipItemInSlot ? miscValue2 : miscValue1;
|
||||
ItemTemplate itemTemplate = Global.ObjectMgr.GetItemTemplate(itemId);
|
||||
if (itemTemplate == null)
|
||||
return false;
|
||||
|
||||
@@ -1268,7 +1268,7 @@ namespace Game.Entities
|
||||
if (item != null)
|
||||
{
|
||||
ItemAddedQuestCheck(itemId, count);
|
||||
UpdateCriteria(CriteriaTypes.ReceiveEpicItem, itemId, count);
|
||||
UpdateCriteria(CriteriaTypes.ObtainAnyItem, itemId, count);
|
||||
UpdateCriteria(CriteriaTypes.OwnItem, itemId, 1);
|
||||
|
||||
item.AddItemFlag(ItemFieldFlags.NewItem);
|
||||
@@ -1539,7 +1539,7 @@ namespace Game.Entities
|
||||
if (pItem != null)
|
||||
{
|
||||
ItemAddedQuestCheck(item, 1);
|
||||
UpdateCriteria(CriteriaTypes.ReceiveEpicItem, item, 1);
|
||||
UpdateCriteria(CriteriaTypes.ObtainAnyItem, item, 1);
|
||||
return EquipItem(pos, pItem, update);
|
||||
}
|
||||
|
||||
@@ -1648,7 +1648,7 @@ namespace Game.Entities
|
||||
|
||||
// only for full equip instead adding to stack
|
||||
UpdateCriteria(CriteriaTypes.EquipItem, pItem.GetEntry());
|
||||
UpdateCriteria(CriteriaTypes.EquipEpicItem, slot, pItem.GetEntry());
|
||||
UpdateCriteria(CriteriaTypes.EquipItemInSlot, slot, pItem.GetEntry());
|
||||
|
||||
UpdateAverageItemLevelEquipped();
|
||||
|
||||
@@ -1776,7 +1776,7 @@ namespace Game.Entities
|
||||
CheckTitanGripPenalty();
|
||||
|
||||
UpdateCriteria(CriteriaTypes.EquipItem, pItem.GetEntry());
|
||||
UpdateCriteria(CriteriaTypes.EquipEpicItem, slot, pItem.GetEntry());
|
||||
UpdateCriteria(CriteriaTypes.EquipItemInSlot, slot, pItem.GetEntry());
|
||||
}
|
||||
}
|
||||
public void SendEquipError(InventoryResult msg, Item item1 = null, Item item2 = null, uint itemId = 0)
|
||||
@@ -4236,7 +4236,7 @@ namespace Game.Entities
|
||||
{
|
||||
// update quest counters
|
||||
ItemAddedQuestCheck(pItem.GetEntry(), pItem.GetCount());
|
||||
UpdateCriteria(CriteriaTypes.ReceiveEpicItem, pItem.GetEntry(), pItem.GetCount());
|
||||
UpdateCriteria(CriteriaTypes.ObtainAnyItem, pItem.GetEntry(), pItem.GetCount());
|
||||
|
||||
// store item
|
||||
Item pLastItem = StoreItem(dest, pItem, update);
|
||||
@@ -5934,7 +5934,7 @@ namespace Game.Entities
|
||||
SendNewItem(newitem, item.count, false, false, true);
|
||||
UpdateCriteria(CriteriaTypes.LootItem, item.itemid, item.count);
|
||||
UpdateCriteria(CriteriaTypes.LootType, item.itemid, item.count, (ulong)loot.loot_type);
|
||||
UpdateCriteria(CriteriaTypes.LootEpicItem, item.itemid, item.count);
|
||||
UpdateCriteria(CriteriaTypes.LootAnyItem, item.itemid, item.count);
|
||||
}
|
||||
else
|
||||
aeResult.Add(newitem, item.count, loot.loot_type);
|
||||
|
||||
@@ -5259,6 +5259,7 @@ namespace Game.Entities
|
||||
}
|
||||
|
||||
UpdateCriteria(CriteriaTypes.ReachLevel);
|
||||
UpdateCriteria(CriteriaTypes.ActivelyReachLevel, level);
|
||||
|
||||
PushQuests();
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ namespace Game
|
||||
player.SendNewItem(resultValue.item, resultValue.count, false, false, true);
|
||||
player.UpdateCriteria(CriteriaTypes.LootItem, resultValue.item.GetEntry(), resultValue.count);
|
||||
player.UpdateCriteria(CriteriaTypes.LootType, resultValue.item.GetEntry(), resultValue.count, (ulong)resultValue.lootType);
|
||||
player.UpdateCriteria(CriteriaTypes.LootEpicItem, resultValue.item.GetEntry(), resultValue.count);
|
||||
player.UpdateCriteria(CriteriaTypes.LootAnyItem, resultValue.item.GetEntry(), resultValue.count);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -553,7 +553,7 @@ namespace Game
|
||||
target.SendNewItem(resultValue.item, resultValue.count, false, false, true);
|
||||
target.UpdateCriteria(CriteriaTypes.LootItem, resultValue.item.GetEntry(), resultValue.count);
|
||||
target.UpdateCriteria(CriteriaTypes.LootType, resultValue.item.GetEntry(), resultValue.count, (ulong)resultValue.lootType);
|
||||
target.UpdateCriteria(CriteriaTypes.LootEpicItem, resultValue.item.GetEntry(), resultValue.count);
|
||||
target.UpdateCriteria(CriteriaTypes.LootAnyItem, resultValue.item.GetEntry(), resultValue.count);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user