mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Achievements: Several criteria fixes (#26839)
This commit is contained in:
@@ -74,7 +74,7 @@ bool CriteriaData::IsValid(Criteria const* criteria)
|
||||
case CRITERIA_TYPE_CAST_SPELL2:
|
||||
case CRITERIA_TYPE_BE_SPELL_TARGET:
|
||||
case CRITERIA_TYPE_BE_SPELL_TARGET2:
|
||||
case CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT:
|
||||
case CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
||||
case CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
||||
case CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE:
|
||||
@@ -84,8 +84,8 @@ bool CriteriaData::IsValid(Criteria const* criteria)
|
||||
case CRITERIA_TYPE_GET_KILLING_BLOWS:
|
||||
case CRITERIA_TYPE_REACH_LEVEL:
|
||||
case CRITERIA_TYPE_ON_LOGIN:
|
||||
case CRITERIA_TYPE_LOOT_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_LOOT_ANY_ITEM:
|
||||
case CRITERIA_TYPE_OBTAIN_ANY_ITEM:
|
||||
break;
|
||||
default:
|
||||
if (DataType != CRITERIA_DATA_TYPE_SCRIPT)
|
||||
@@ -387,7 +387,7 @@ bool CriteriaData::Meets(uint32 criteriaId, Player const* source, Unit const* ta
|
||||
{
|
||||
Criteria const* entry = ASSERT_NOTNULL(sCriteriaMgr->GetCriteria(criteriaId));
|
||||
|
||||
uint32 itemId = (entry->Entry->Type == CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1);
|
||||
uint32 itemId = (entry->Entry->Type == CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT ? miscValue2 : miscValue1);
|
||||
ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(itemId);
|
||||
if (!itemTemplate)
|
||||
return false;
|
||||
@@ -489,8 +489,8 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0
|
||||
case CRITERIA_TYPE_QUEST_ABANDONED:
|
||||
case CRITERIA_TYPE_FLIGHT_PATHS_TAKEN:
|
||||
case CRITERIA_TYPE_ACCEPTED_SUMMONINGS:
|
||||
case CRITERIA_TYPE_LOOT_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_LOOT_ANY_ITEM:
|
||||
case CRITERIA_TYPE_OBTAIN_ANY_ITEM:
|
||||
case CRITERIA_TYPE_DEATH:
|
||||
case CRITERIA_TYPE_COMPLETE_DAILY_QUEST:
|
||||
case CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
||||
@@ -522,7 +522,6 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0
|
||||
case CRITERIA_TYPE_ON_LOGIN:
|
||||
case CRITERIA_TYPE_PLACE_GARRISON_BUILDING:
|
||||
case CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING:
|
||||
case CRITERIA_TYPE_OWN_BATTLE_PET_COUNT:
|
||||
case CRITERIA_TYPE_HONOR_LEVEL_REACHED:
|
||||
case CRITERIA_TYPE_PRESTIGE_REACHED:
|
||||
case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT:
|
||||
@@ -641,11 +640,12 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0
|
||||
case CRITERIA_TYPE_LEARN_SPELL:
|
||||
case CRITERIA_TYPE_EXPLORE_AREA:
|
||||
case CRITERIA_TYPE_VISIT_BARBER_SHOP:
|
||||
case CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT:
|
||||
case CRITERIA_TYPE_EQUIP_ITEM:
|
||||
case CRITERIA_TYPE_COMPLETE_ACHIEVEMENT:
|
||||
case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER:
|
||||
case CRITERIA_TYPE_OWN_BATTLE_PET:
|
||||
case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL:
|
||||
SetCriteriaProgress(criteria, 1, referencePlayer);
|
||||
break;
|
||||
case CRITERIA_TYPE_BUY_BANK_SLOT:
|
||||
@@ -735,6 +735,9 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CRITERIA_TYPE_OWN_BATTLE_PET_COUNT:
|
||||
SetCriteriaProgress(criteria, referencePlayer->GetSession()->GetBattlePetMgr()->GetPetUniqueSpeciesCount(), referencePlayer);
|
||||
break;
|
||||
case CRITERIA_TYPE_REACH_GUILD_LEVEL:
|
||||
SetCriteriaProgress(criteria, miscValue1, referencePlayer);
|
||||
break;
|
||||
@@ -820,6 +823,8 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0
|
||||
case CRITERIA_TYPE_MYTHIC_KEYSTONE_COMPLETED:
|
||||
case CRITERIA_TYPE_APPLY_CONDUIT:
|
||||
case CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY:
|
||||
case CRITERIA_TYPE_EXPANSION_LEVEL:
|
||||
case CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE:
|
||||
break; // Not implemented yet :(
|
||||
}
|
||||
|
||||
@@ -1157,7 +1162,7 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi
|
||||
case CRITERIA_TYPE_GAIN_REPUTATION:
|
||||
case CRITERIA_TYPE_GAIN_EXALTED_REPUTATION:
|
||||
case CRITERIA_TYPE_VISIT_BARBER_SHOP:
|
||||
case CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT:
|
||||
case CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
||||
case CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
||||
case CRITERIA_TYPE_HK_CLASS:
|
||||
@@ -1198,6 +1203,7 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi
|
||||
case CRITERIA_TYPE_OWN_BATTLE_PET:
|
||||
case CRITERIA_TYPE_HONOR_LEVEL_REACHED:
|
||||
case CRITERIA_TYPE_PRESTIGE_REACHED:
|
||||
case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL:
|
||||
case CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED:
|
||||
return progress->Counter >= 1;
|
||||
case CRITERIA_TYPE_LEARN_SKILL_LEVEL:
|
||||
@@ -1233,8 +1239,8 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi
|
||||
case CRITERIA_TYPE_GAIN_REVERED_REPUTATION:
|
||||
case CRITERIA_TYPE_GAIN_HONORED_REPUTATION:
|
||||
case CRITERIA_TYPE_KNOWN_FACTIONS:
|
||||
case CRITERIA_TYPE_LOOT_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_LOOT_ANY_ITEM:
|
||||
case CRITERIA_TYPE_OBTAIN_ANY_ITEM:
|
||||
case CRITERIA_TYPE_ROLL_NEED:
|
||||
case CRITERIA_TYPE_ROLL_GREED:
|
||||
case CRITERIA_TYPE_QUEST_ABANDONED:
|
||||
@@ -1333,11 +1339,13 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
||||
case CRITERIA_TYPE_HIGHEST_HIT_DEALT:
|
||||
case CRITERIA_TYPE_HIGHEST_HIT_RECEIVED:
|
||||
case CRITERIA_TYPE_HONORABLE_KILL:
|
||||
case CRITERIA_TYPE_LOOT_ANY_ITEM:
|
||||
case CRITERIA_TYPE_LOOT_MONEY:
|
||||
case CRITERIA_TYPE_LOSE_DUEL:
|
||||
case CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD:
|
||||
case CRITERIA_TYPE_MONEY_FROM_VENDORS:
|
||||
case CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS:
|
||||
case CRITERIA_TYPE_OBTAIN_ANY_ITEM:
|
||||
case CRITERIA_TYPE_QUEST_ABANDONED:
|
||||
case CRITERIA_TYPE_REACH_GUILD_LEVEL:
|
||||
case CRITERIA_TYPE_ROLL_GREED:
|
||||
@@ -1368,6 +1376,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
||||
case CRITERIA_TYPE_KNOWN_FACTIONS:
|
||||
case CRITERIA_TYPE_REACH_LEVEL:
|
||||
case CRITERIA_TYPE_ON_LOGIN:
|
||||
case CRITERIA_TYPE_OWN_BATTLE_PET_COUNT:
|
||||
break;
|
||||
case CRITERIA_TYPE_COMPLETE_ACHIEVEMENT:
|
||||
if (!RequiredAchievementSatisfied(criteria->Entry->Asset.AchievementID))
|
||||
@@ -1512,9 +1521,10 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
||||
if (miscValue1 && miscValue1 != uint32(criteria->Entry->Asset.FactionID))
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
||||
// miscValue1 = itemSlot miscValue2 = itemid
|
||||
if (!miscValue2 || miscValue1 != uint32(criteria->Entry->Asset.ItemSlot))
|
||||
case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT:
|
||||
case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT:
|
||||
// miscValue1 = EquipmentSlot miscValue2 = itemid | itemModifiedAppearanceId
|
||||
if (!miscValue2 || miscValue1 != uint32(criteria->Entry->Asset.EquipmentSlot))
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
||||
@@ -1558,16 +1568,6 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
||||
if (miscValue1 && miscValue1 != uint32(criteria->Entry->Asset.SkillID))
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_LOOT_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
|
||||
{
|
||||
if (!miscValue1)
|
||||
return false;
|
||||
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(uint32(miscValue1));
|
||||
if (!proto || proto->GetQuality() < ITEM_QUALITY_EPIC)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case CRITERIA_TYPE_HK_CLASS:
|
||||
if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.ClassID))
|
||||
return false;
|
||||
@@ -1581,6 +1581,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_HONORABLE_KILL_AT_AREA:
|
||||
case CRITERIA_TYPE_TRAVELLED_TO_AREA:
|
||||
if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.AreaID))
|
||||
return false;
|
||||
break;
|
||||
@@ -1596,19 +1597,20 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
||||
case CRITERIA_TYPE_HIGHEST_TEAM_RATING:
|
||||
return false;
|
||||
case CRITERIA_TYPE_PLACE_GARRISON_BUILDING:
|
||||
case CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING:
|
||||
if (miscValue1 != uint32(criteria->Entry->Asset.GarrBuildingID))
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER:
|
||||
if (miscValue1 != uint32(criteria->Entry->Asset.GarrFollowerID))
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED:
|
||||
if (miscValue1 != uint32(criteria->Entry->Asset.TransmogSetGroupID))
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT:
|
||||
if (!miscValue2 /*login case*/ || miscValue1 != uint32(criteria->Entry->Asset.EquipmentSlot))
|
||||
return false;
|
||||
break;
|
||||
case CRITERIA_TYPE_TRAVELLED_TO_AREA:
|
||||
if (miscValue1 != uint32(criteria->Entry->Asset.AreaID))
|
||||
case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL:
|
||||
if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.PlayerLevel))
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
@@ -3833,8 +3835,8 @@ char const* CriteriaMgr::GetCriteriaTypeString(CriteriaTypes type)
|
||||
return "GAIN_EXALTED_REPUTATION";
|
||||
case CRITERIA_TYPE_VISIT_BARBER_SHOP:
|
||||
return "VISIT_BARBER_SHOP";
|
||||
case CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
||||
return "EQUIP_EPIC_ITEM";
|
||||
case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT:
|
||||
return "EQUIP_ITEM_IN_SLOT";
|
||||
case CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
||||
return "ROLL_NEED_ON_LOOT";
|
||||
case CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
||||
@@ -3913,10 +3915,10 @@ char const* CriteriaMgr::GetCriteriaTypeString(CriteriaTypes type)
|
||||
return "GAIN_HONORED_REPUTATION";
|
||||
case CRITERIA_TYPE_KNOWN_FACTIONS:
|
||||
return "KNOWN_FACTIONS";
|
||||
case CRITERIA_TYPE_LOOT_EPIC_ITEM:
|
||||
return "LOOT_EPIC_ITEM";
|
||||
case CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
|
||||
return "RECEIVE_EPIC_ITEM";
|
||||
case CRITERIA_TYPE_LOOT_ANY_ITEM:
|
||||
return "LOOT_ANY_ITEM";
|
||||
case CRITERIA_TYPE_OBTAIN_ANY_ITEM:
|
||||
return "OBTAIN_ANY_ITEM";
|
||||
case CRITERIA_TYPE_SEND_EVENT_SCENARIO:
|
||||
return "SEND_EVENT_SCENARIO";
|
||||
case CRITERIA_TYPE_ROLL_NEED:
|
||||
@@ -4077,10 +4079,14 @@ char const* CriteriaMgr::GetCriteriaTypeString(CriteriaTypes type)
|
||||
return "ARTIFACT_POWER_EARNED";
|
||||
case CRITERIA_TYPE_ARTIFACT_TRAITS_UNLOCKED:
|
||||
return "ARTIFACT_TRAITS_UNLOCKED";
|
||||
case CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE:
|
||||
return "OWN_ITEM_MODIFIED_APPEARANCE";
|
||||
case CRITERIA_TYPE_HONOR_LEVEL_REACHED:
|
||||
return "HONOR_LEVEL_REACHED";
|
||||
case CRITERIA_TYPE_PRESTIGE_REACHED:
|
||||
return "PRESTIGE_REACHED";
|
||||
case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL:
|
||||
return "ACTIVELY_REACH_LEVEL";
|
||||
case CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED:
|
||||
return "ORDER_HALL_TALENT_LEARNED";
|
||||
case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT:
|
||||
@@ -4097,6 +4103,8 @@ char const* CriteriaMgr::GetCriteriaTypeString(CriteriaTypes type)
|
||||
return "EARN_HONOR_XP";
|
||||
case CRITERIA_TYPE_RELIC_TALENT_UNLOCKED:
|
||||
return "RELIC_TALENT_UNLOCKED";
|
||||
case CRITERIA_TYPE_EXPANSION_LEVEL:
|
||||
return "EXPANSION_LEVEL";
|
||||
case CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL:
|
||||
return "REACH_ACCOUNT_HONOR_LEVEL";
|
||||
case CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED:
|
||||
@@ -4152,7 +4160,7 @@ inline bool IsCriteriaTypeStoredByAsset(CriteriaTypes type)
|
||||
case CRITERIA_TYPE_LOOT_ITEM:
|
||||
case CRITERIA_TYPE_EXPLORE_AREA:
|
||||
case CRITERIA_TYPE_GAIN_REPUTATION:
|
||||
case CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
||||
case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT:
|
||||
case CRITERIA_TYPE_HK_CLASS:
|
||||
case CRITERIA_TYPE_HK_RACE:
|
||||
case CRITERIA_TYPE_DO_EMOTE:
|
||||
|
||||
@@ -1007,137 +1007,173 @@ struct CriteriaEntry
|
||||
union AssetNameAlias
|
||||
{
|
||||
int32 ID;
|
||||
// CRITERIA_TYPE_KILL_CREATURE = 0
|
||||
// CRITERIA_TYPE_KILLED_BY_CREATURE = 20
|
||||
// CRITERIA_TYPE_KILL_CREATURE = 0
|
||||
// CRITERIA_TYPE_KILLED_BY_CREATURE = 20
|
||||
// CRITERIA_TYPE_OWN_PET = 96
|
||||
// CRITERIA_TYPE_208 = 208
|
||||
int32 CreatureID;
|
||||
|
||||
// CRITERIA_TYPE_WIN_BG = 1
|
||||
// CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15
|
||||
// CRITERIA_TYPE_DEATH_AT_MAP = 16
|
||||
// CRITERIA_TYPE_WIN_ARENA = 32
|
||||
// CRITERIA_TYPE_PLAY_ARENA = 33
|
||||
// CRITERIA_TYPE_WIN_BG = 1
|
||||
// CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15
|
||||
// CRITERIA_TYPE_DEATH_AT_MAP = 16
|
||||
// CRITERIA_TYPE_WIN_ARENA = 32
|
||||
// CRITERIA_TYPE_PLAY_ARENA = 33
|
||||
// CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE = 71
|
||||
int32 MapID;
|
||||
|
||||
// CRITERIA_TYPE_REACH_SKILL_LEVEL = 7
|
||||
// CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
|
||||
// CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75
|
||||
// CRITERIA_TYPE_LEARN_SKILL_LINE = 112
|
||||
int32 SkillID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8
|
||||
int32 AchievementID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11
|
||||
int32 ZoneID;
|
||||
|
||||
// CRITERIA_TYPE_CURRENCY = 12
|
||||
int32 CurrencyID;
|
||||
|
||||
// CRITERIA_TYPE_DEATH_IN_DUNGEON = 18
|
||||
// CRITERIA_TYPE_COMPLETE_RAID = 19
|
||||
int32 GroupSize;
|
||||
|
||||
// CRITERIA_TYPE_DEATHS_FROM = 26
|
||||
int32 DamageType;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_QUEST = 27
|
||||
int32 QuestID;
|
||||
|
||||
// CRITERIA_TYPE_BE_SPELL_TARGET = 28
|
||||
// CRITERIA_TYPE_BE_SPELL_TARGET2 = 69
|
||||
// CRITERIA_TYPE_CAST_SPELL = 29
|
||||
// CRITERIA_TYPE_CAST_SPELL2 = 110
|
||||
// CRITERIA_TYPE_LEARN_SPELL = 34
|
||||
int32 SpellID;
|
||||
|
||||
// CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
|
||||
int32 ObjectiveId;
|
||||
|
||||
// CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
|
||||
// CRITERIA_TYPE_ENTER_AREA = 163
|
||||
// CRITERIA_TYPE_LEAVE_AREA = 164
|
||||
// CRITERIA_TYPE_TRAVELED_TO_AREA = 225
|
||||
int32 AreaID;
|
||||
|
||||
// CRITERIA_TYPE_OWN_ITEM = 36
|
||||
// CRITERIA_TYPE_USE_ITEM = 41
|
||||
// CRITERIA_TYPE_LOOT_ITEM = 42
|
||||
// CRITERIA_TYPE_EQUIP_ITEM = 57
|
||||
// CRITERIA_TYPE_OWN_TOY = 185
|
||||
int32 ItemID;
|
||||
|
||||
// CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38
|
||||
// CRITERIA_TYPE_REACH_TEAM_RATING = 39
|
||||
// CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39
|
||||
int32 TeamType;
|
||||
|
||||
// CRITERIA_TYPE_EXPLORE_AREA = 43
|
||||
int32 WorldMapOverlayID;
|
||||
|
||||
// CRITERIA_TYPE_GAIN_REPUTATION = 46
|
||||
// CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206
|
||||
int32 FactionID;
|
||||
|
||||
// CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49
|
||||
int32 ItemSlot;
|
||||
|
||||
// CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50
|
||||
// CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51
|
||||
int32 RollValue;
|
||||
|
||||
// CRITERIA_TYPE_HK_CLASS = 52
|
||||
int32 ClassID;
|
||||
|
||||
// CRITERIA_TYPE_HK_RACE = 53
|
||||
int32 RaceID;
|
||||
|
||||
// CRITERIA_TYPE_DO_EMOTE = 54
|
||||
int32 EmoteID;
|
||||
|
||||
// CRITERIA_TYPE_USE_GAMEOBJECT = 68
|
||||
// CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72
|
||||
// CRITERIA_TYPE_SURVEY_GAMEOBJECT = 4
|
||||
// CRITERIA_TYPE_USE_GAMEOBJECT = 68
|
||||
// CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72
|
||||
int32 GameObjectID;
|
||||
|
||||
// CRITERIA_TYPE_HIGHEST_POWER = 96
|
||||
int32 PowerType;
|
||||
// CRITERIA_TYPE_REACH_SKILL_LEVEL = 7
|
||||
// CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
|
||||
// CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75
|
||||
// CRITERIA_TYPE_LEARN_SKILL_LINE = 112
|
||||
int32 SkillID;
|
||||
|
||||
// CRITERIA_TYPE_HIGHEST_STAT = 97
|
||||
int32 StatType;
|
||||
// CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8
|
||||
int32 AchievementID;
|
||||
|
||||
// CRITERIA_TYPE_HIGHEST_SPELLPOWER = 98
|
||||
int32 SpellSchool;
|
||||
// CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11
|
||||
int32 ZoneID;
|
||||
|
||||
// CRITERIA_TYPE_LOOT_TYPE = 109
|
||||
int32 LootType;
|
||||
// CRITERIA_TYPE_CURRENCY = 12
|
||||
// CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY = 229
|
||||
int32 CurrencyID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165
|
||||
int32 DungeonEncounterID;
|
||||
// CRITERIA_TYPE_DEATH_IN_DUNGEON = 18
|
||||
// CRITERIA_TYPE_COMPLETE_RAID = 19
|
||||
int32 GroupSize;
|
||||
|
||||
// CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169
|
||||
int32 GarrBuildingID;
|
||||
// CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA = 21
|
||||
int32 CriteriaID;
|
||||
|
||||
// CRITERIA_TYPE_UPGRADE_GARRISON = 170
|
||||
int32 GarrisonLevel;
|
||||
// CRITERIA_TYPE_DEATHS_FROM = 26
|
||||
int32 DamageType;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174
|
||||
int32 GarrMissionID;
|
||||
// CRITERIA_TYPE_COMPLETE_QUEST = 27
|
||||
int32 QuestID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182
|
||||
int32 CharShipmentContainerID;
|
||||
// CRITERIA_TYPE_BE_SPELL_TARGET = 28
|
||||
// CRITERIA_TYPE_CAST_SPELL = 29
|
||||
// CRITERIA_TYPE_LEARN_SPELL = 34
|
||||
// CRITERIA_TYPE_BE_SPELL_TARGET2 = 69
|
||||
// CRITERIA_TYPE_CAST_SPELL2 = 110
|
||||
int32 SpellID;
|
||||
|
||||
// CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT
|
||||
// CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30
|
||||
int32 ObjectiveId;
|
||||
|
||||
// CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
|
||||
// CRITERIA_TYPE_ENTER_AREA = 163
|
||||
// CRITERIA_TYPE_LEAVE_AREA = 164
|
||||
// CRITERIA_TYPE_TRAVELLED_TO_AREA = 225
|
||||
int32 AreaID;
|
||||
|
||||
// CRITERIA_TYPE_OWN_ITEM = 36
|
||||
// CRITERIA_TYPE_USE_ITEM = 41
|
||||
// CRITERIA_TYPE_LOOT_ITEM = 42
|
||||
// CRITERIA_TYPE_EQUIP_ITEM = 57
|
||||
// CRITERIA_TYPE_OWN_TOY = 185
|
||||
int32 ItemID;
|
||||
|
||||
// CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38
|
||||
// CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39
|
||||
int32 TeamType;
|
||||
|
||||
// CRITERIA_TYPE_EXPLORE_AREA = 43
|
||||
int32 WorldMapOverlayID;
|
||||
|
||||
// CRITERIA_TYPE_GAIN_REPUTATION = 46
|
||||
// CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206
|
||||
int32 FactionID;
|
||||
|
||||
// CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT = 49
|
||||
// CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT = 199
|
||||
int32 EquipmentSlot;
|
||||
|
||||
// CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205
|
||||
// CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50
|
||||
// CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51
|
||||
int32 RollValue;
|
||||
|
||||
// CRITERIA_TYPE_HK_CLASS = 52
|
||||
int32 ClassID;
|
||||
|
||||
// CRITERIA_TYPE_HK_RACE = 53
|
||||
int32 RaceID;
|
||||
|
||||
// CRITERIA_TYPE_DO_EMOTE = 54
|
||||
int32 EmoteID;
|
||||
|
||||
// CRITERIA_TYPE_SEND_EVENT = 73
|
||||
// CRITERIA_TYPE_SEND_EVENT_SCENARIO = 92
|
||||
int32 EventID;
|
||||
|
||||
// CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER = 97
|
||||
// CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165
|
||||
int32 DungeonEncounterID;
|
||||
|
||||
// CRITERIA_TYPE_LOOT_TYPE = 109
|
||||
int32 LootType;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138
|
||||
int32 GuildChallengeType;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_SCENARIO = 152
|
||||
int32 ScenarioID;
|
||||
|
||||
// CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET = 153
|
||||
int32 AreaTriggerActionSetID;
|
||||
|
||||
// CRITERIA_TYPE_LEVEL_BATTLE_PET = 160
|
||||
// CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT = 162
|
||||
int32 PetLevel;
|
||||
|
||||
// CRITERIA_TYPE_PLACE_GARRISON_BUILDING = 167
|
||||
// CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169
|
||||
int32 GarrBuildingID;
|
||||
|
||||
// CRITERIA_TYPE_UPGRADE_GARRISON = 170
|
||||
int32 GarrisonLevel;
|
||||
|
||||
// CRITERIA_TYPE_START_GARRISON_MISSION = 171
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT = 173
|
||||
int32 GarrFollowerTypeID;
|
||||
|
||||
// CRITERIA_TYPE_START_ORDER_HALL_MISSION = 172
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174
|
||||
int32 GarrMissionID;
|
||||
|
||||
// CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER = 176
|
||||
int32 GarrFollowerID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182
|
||||
int32 CharShipmentContainerID;
|
||||
|
||||
// CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE = 192
|
||||
int32 ItemModifiedAppearanceID;
|
||||
|
||||
// CRITERIA_TYPE_ACTIVELY_REACH_LEVEL = 196
|
||||
int32 PlayerLevel;
|
||||
|
||||
// CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED = 198
|
||||
// CRITERIA_TYPE_202 = 202
|
||||
int32 GarrTalentID;
|
||||
|
||||
// CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205
|
||||
int32 TransmogSetGroupID;
|
||||
|
||||
// CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211
|
||||
// CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211
|
||||
int32 ArtifactPowerID;
|
||||
|
||||
// CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL = 213
|
||||
// CRITERIA_TYPE_EXPANSION_LEVEL = 212
|
||||
int32 ExpansionLevel;
|
||||
|
||||
// CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL = 213
|
||||
int32 AccountHonorLevel;
|
||||
|
||||
// CRITERIA_TREE_HEART_OF_AZEROTH_LEVEL_REACHED = 215
|
||||
// CRITERIA_TREE_HEART_OF_AZEROTH_LEVEL_REACHED = 215
|
||||
int32 HeartOfAzerothLevel;
|
||||
} Asset;
|
||||
uint32 ModifierTreeId;
|
||||
|
||||
@@ -354,7 +354,7 @@ enum CriteriaTypes : uint8
|
||||
CRITERIA_TYPE_GAIN_REPUTATION = 46,
|
||||
CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
|
||||
CRITERIA_TYPE_VISIT_BARBER_SHOP = 48,
|
||||
CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
|
||||
CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT = 49,
|
||||
CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, /// @todo itemlevel is mentioned in text but not present in dbc
|
||||
CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51,
|
||||
CRITERIA_TYPE_HK_CLASS = 52,
|
||||
@@ -395,8 +395,8 @@ enum CriteriaTypes : uint8
|
||||
CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87,
|
||||
CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88,
|
||||
CRITERIA_TYPE_KNOWN_FACTIONS = 89,
|
||||
CRITERIA_TYPE_LOOT_EPIC_ITEM = 90,
|
||||
CRITERIA_TYPE_RECEIVE_EPIC_ITEM = 91,
|
||||
CRITERIA_TYPE_LOOT_ANY_ITEM = 90,
|
||||
CRITERIA_TYPE_OBTAIN_ANY_ITEM = 91,
|
||||
CRITERIA_TYPE_SEND_EVENT_SCENARIO = 92,
|
||||
CRITERIA_TYPE_ROLL_NEED = 93,
|
||||
CRITERIA_TYPE_ROLL_GREED = 94,
|
||||
@@ -497,9 +497,10 @@ enum CriteriaTypes : uint8
|
||||
CRITERIA_TYPE_OWN_HEIRLOOMS = 189,
|
||||
CRITERIA_TYPE_ARTIFACT_POWER_EARNED = 190,
|
||||
CRITERIA_TYPE_ARTIFACT_TRAITS_UNLOCKED = 191,
|
||||
CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE = 192,
|
||||
CRITERIA_TYPE_HONOR_LEVEL_REACHED = 194,
|
||||
CRITERIA_TYPE_PRESTIGE_REACHED = 195,
|
||||
// 196 - CRITERIA_TYPE_REACH_LEVEL_2 or something
|
||||
CRITERIA_TYPE_ACTIVELY_REACH_LEVEL = 196,
|
||||
// 197 - Order Hall Advancement related
|
||||
CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED = 198,
|
||||
CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT = 199,
|
||||
@@ -512,6 +513,7 @@ enum CriteriaTypes : uint8
|
||||
CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206,
|
||||
CRITERIA_TYPE_EARN_HONOR_XP = 207,
|
||||
CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211,
|
||||
CRITERIA_TYPE_EXPANSION_LEVEL = 212,
|
||||
CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL = 213,
|
||||
CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED= 214,
|
||||
CRITERIA_TYPE_HEART_OF_AZEROTH_LEVEL_REACHED = 215,
|
||||
|
||||
@@ -2382,6 +2382,7 @@ void Player::GiveLevel(uint8 level)
|
||||
}
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_REACH_LEVEL);
|
||||
UpdateCriteria(CRITERIA_TYPE_ACTIVELY_REACH_LEVEL, level);
|
||||
|
||||
PushQuests();
|
||||
|
||||
@@ -12045,7 +12046,7 @@ Item* Player::StoreNewItem(ItemPosCountVec const& pos, uint32 itemId, bool updat
|
||||
if (item)
|
||||
{
|
||||
ItemAddedQuestCheck(itemId, count);
|
||||
UpdateCriteria(CRITERIA_TYPE_RECEIVE_EPIC_ITEM, itemId, count);
|
||||
UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, itemId, count);
|
||||
UpdateCriteria(CRITERIA_TYPE_OWN_ITEM, itemId, 1);
|
||||
|
||||
item->AddItemFlag(ITEM_FIELD_FLAG_NEW_ITEM);
|
||||
@@ -12235,7 +12236,7 @@ Item* Player::EquipNewItem(uint16 pos, uint32 item, ItemContext context, bool up
|
||||
if (Item* pItem = Item::CreateItem(item, 1, context, this))
|
||||
{
|
||||
ItemAddedQuestCheck(item, 1);
|
||||
UpdateCriteria(CRITERIA_TYPE_RECEIVE_EPIC_ITEM, item, 1);
|
||||
UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, item, 1);
|
||||
return EquipItem(pos, pItem, update);
|
||||
}
|
||||
|
||||
@@ -12350,7 +12351,7 @@ Item* Player::EquipItem(uint16 pos, Item* pItem, bool update)
|
||||
|
||||
// only for full equip instead adding to stack
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry());
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_EPIC_ITEM, slot, pItem->GetEntry());
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT, slot, pItem->GetEntry());
|
||||
|
||||
UpdateAverageItemLevelEquipped();
|
||||
|
||||
@@ -12478,7 +12479,7 @@ void Player::QuickEquipItem(uint16 pos, Item* pItem)
|
||||
CheckTitanGripPenalty();
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry());
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_EPIC_ITEM, slot, pItem->GetEntry());
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT, slot, pItem->GetEntry());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12635,7 +12636,7 @@ void Player::MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool
|
||||
{
|
||||
// update quest counters
|
||||
ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount());
|
||||
UpdateCriteria(CRITERIA_TYPE_RECEIVE_EPIC_ITEM, pItem->GetEntry(), pItem->GetCount());
|
||||
UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, pItem->GetEntry(), pItem->GetCount());
|
||||
|
||||
// store item
|
||||
Item* pLastItem = StoreItem(dest, pItem, update);
|
||||
@@ -26334,7 +26335,7 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot, AELootResult* aeResult/*
|
||||
SendNewItem(newitem, uint32(item->count), false, false, true);
|
||||
UpdateCriteria(CRITERIA_TYPE_LOOT_ITEM, item->itemid, item->count);
|
||||
UpdateCriteria(CRITERIA_TYPE_LOOT_TYPE, item->itemid, item->count, loot->loot_type);
|
||||
UpdateCriteria(CRITERIA_TYPE_LOOT_EPIC_ITEM, item->itemid, item->count);
|
||||
UpdateCriteria(CRITERIA_TYPE_LOOT_ANY_ITEM, item->itemid, item->count);
|
||||
}
|
||||
else
|
||||
aeResult->Add(newitem, item->count, loot->loot_type);
|
||||
|
||||
@@ -137,7 +137,7 @@ void WorldSession::HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& p
|
||||
player->SendNewItem(resultValue.item, resultValue.count, false, false, true);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_LOOT_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_LOOT_TYPE, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_LOOT_EPIC_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_LOOT_ANY_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -548,7 +548,7 @@ void WorldSession::HandleLootMasterGiveOpcode(WorldPackets::Loot::MasterLootItem
|
||||
target->SendNewItem(resultValue.item, resultValue.count, false, false, true);
|
||||
target->UpdateCriteria(CRITERIA_TYPE_LOOT_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
target->UpdateCriteria(CRITERIA_TYPE_LOOT_TYPE, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType);
|
||||
target->UpdateCriteria(CRITERIA_TYPE_LOOT_EPIC_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
target->UpdateCriteria(CRITERIA_TYPE_LOOT_ANY_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user