Core/Achievements: Update CriteriaType enum (#26856)
This commit is contained in:
@@ -57,8 +57,8 @@ AchievementMgr::~AchievementMgr() { }
|
||||
void AchievementMgr::CheckAllAchievementCriteria(Player* referencePlayer)
|
||||
{
|
||||
// suppress sending packets
|
||||
for (uint32 i = 0; i < CRITERIA_TYPE_TOTAL; ++i)
|
||||
UpdateCriteria(CriteriaTypes(i), 0, 0, 0, nullptr, referencePlayer);
|
||||
for (uint32 i = 0; i < uint32(CriteriaType::Count); ++i)
|
||||
UpdateCriteria(CriteriaType(i), 0, 0, 0, nullptr, referencePlayer);
|
||||
}
|
||||
|
||||
bool AchievementMgr::HasAchieved(uint32 achievementId) const
|
||||
@@ -525,8 +525,8 @@ void PlayerAchievementMgr::CompletedAchievement(AchievementEntry const* achievem
|
||||
if (!(achievement->Flags & ACHIEVEMENT_FLAG_TRACKING_FLAG))
|
||||
_achievementPoints += achievement->Points;
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, achievement->ID, 0, 0, nullptr, referencePlayer);
|
||||
UpdateCriteria(CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->Points, 0, 0, nullptr, referencePlayer);
|
||||
UpdateCriteria(CriteriaType::EarnAchievement, achievement->ID, 0, 0, nullptr, referencePlayer);
|
||||
UpdateCriteria(CriteriaType::EarnAchievementPoints, achievement->Points, 0, 0, nullptr, referencePlayer);
|
||||
|
||||
// reward items and titles if any
|
||||
AchievementReward const* reward = sAchievementMgr->GetAchievementReward(achievement);
|
||||
@@ -691,7 +691,7 @@ void PlayerAchievementMgr::SendPacket(WorldPacket const* data) const
|
||||
_owner->SendDirectMessage(data);
|
||||
}
|
||||
|
||||
CriteriaList const& PlayerAchievementMgr::GetCriteriaByType(CriteriaTypes type, uint32 asset) const
|
||||
CriteriaList const& PlayerAchievementMgr::GetCriteriaByType(CriteriaType type, uint32 asset) const
|
||||
{
|
||||
return sCriteriaMgr->GetPlayerCriteriaByType(type, asset);
|
||||
}
|
||||
@@ -972,8 +972,8 @@ void GuildAchievementMgr::CompletedAchievement(AchievementEntry const* achieveme
|
||||
if (!(achievement->Flags & ACHIEVEMENT_FLAG_TRACKING_FLAG))
|
||||
_achievementPoints += achievement->Points;
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, achievement->ID, 0, 0, nullptr, referencePlayer);
|
||||
UpdateCriteria(CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->Points, 0, 0, nullptr, referencePlayer);
|
||||
UpdateCriteria(CriteriaType::EarnAchievement, achievement->ID, 0, 0, nullptr, referencePlayer);
|
||||
UpdateCriteria(CriteriaType::EarnAchievementPoints, achievement->Points, 0, 0, nullptr, referencePlayer);
|
||||
}
|
||||
|
||||
void GuildAchievementMgr::SendCriteriaUpdate(Criteria const* entry, CriteriaProgress const* progress, Seconds /*timeElapsed*/, bool /*timedCompleted*/) const
|
||||
@@ -1026,7 +1026,7 @@ void GuildAchievementMgr::SendPacket(WorldPacket const* data) const
|
||||
_owner->BroadcastPacket(data);
|
||||
}
|
||||
|
||||
CriteriaList const& GuildAchievementMgr::GetCriteriaByType(CriteriaTypes type, uint32 /*asset*/) const
|
||||
CriteriaList const& GuildAchievementMgr::GetCriteriaByType(CriteriaType type, uint32 /*asset*/) const
|
||||
{
|
||||
return sCriteriaMgr->GetGuildCriteriaByType(type);
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ protected:
|
||||
void SendPacket(WorldPacket const* data) const override;
|
||||
|
||||
std::string GetOwnerInfo() const override;
|
||||
CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override;
|
||||
CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override;
|
||||
|
||||
private:
|
||||
Player* _owner;
|
||||
@@ -136,7 +136,7 @@ protected:
|
||||
void SendPacket(WorldPacket const* data) const override;
|
||||
|
||||
std::string GetOwnerInfo() const override;
|
||||
CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override;
|
||||
CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override;
|
||||
|
||||
private:
|
||||
Guild* _owner;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -271,7 +271,7 @@ public:
|
||||
|
||||
virtual void Reset();
|
||||
|
||||
void UpdateCriteria(CriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject const* ref = nullptr, Player* referencePlayer = nullptr);
|
||||
void UpdateCriteria(CriteriaType type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject const* ref = nullptr, Player* referencePlayer = nullptr);
|
||||
|
||||
virtual void SendAllData(Player const* receiver) const = 0;
|
||||
|
||||
@@ -305,7 +305,7 @@ protected:
|
||||
bool ModifierSatisfied(ModifierTreeEntry const* modifier, uint64 miscValue1, uint64 miscValue2, WorldObject const* ref, Player* referencePlayer) const;
|
||||
|
||||
virtual std::string GetOwnerInfo() const = 0;
|
||||
virtual CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const = 0;
|
||||
virtual CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const = 0;
|
||||
|
||||
CriteriaProgressMap _criteriaProgress;
|
||||
std::map<uint32, uint32 /*ms time left*/> _timeCriteriaTrees;
|
||||
@@ -317,26 +317,26 @@ class TC_GAME_API CriteriaMgr
|
||||
~CriteriaMgr();
|
||||
|
||||
public:
|
||||
static char const* GetCriteriaTypeString(CriteriaTypes type);
|
||||
static char const* GetCriteriaTypeString(CriteriaType type);
|
||||
static char const* GetCriteriaTypeString(uint32 type);
|
||||
|
||||
static CriteriaMgr* Instance();
|
||||
|
||||
CriteriaList const& GetPlayerCriteriaByType(CriteriaTypes type, uint32 asset) const;
|
||||
CriteriaList const& GetPlayerCriteriaByType(CriteriaType type, uint32 asset) const;
|
||||
|
||||
CriteriaList const& GetGuildCriteriaByType(CriteriaTypes type) const
|
||||
CriteriaList const& GetGuildCriteriaByType(CriteriaType type) const
|
||||
{
|
||||
return _guildCriteriasByType[type];
|
||||
return _guildCriteriasByType[size_t(type)];
|
||||
}
|
||||
|
||||
CriteriaList const& GetScenarioCriteriaByType(CriteriaTypes type) const
|
||||
CriteriaList const& GetScenarioCriteriaByType(CriteriaType type) const
|
||||
{
|
||||
return _scenarioCriteriasByType[type];
|
||||
return _scenarioCriteriasByType[size_t(type)];
|
||||
}
|
||||
|
||||
CriteriaList const& GetQuestObjectiveCriteriaByType(CriteriaTypes type) const
|
||||
CriteriaList const& GetQuestObjectiveCriteriaByType(CriteriaType type) const
|
||||
{
|
||||
return _questObjectiveCriteriasByType[type];
|
||||
return _questObjectiveCriteriasByType[size_t(type)];
|
||||
}
|
||||
|
||||
CriteriaTreeList const* GetCriteriaTreesByCriteria(uint32 criteriaId) const
|
||||
@@ -362,16 +362,16 @@ public:
|
||||
return iter != _criteriaDataMap.end() ? &iter->second : nullptr;
|
||||
}
|
||||
|
||||
static bool IsGroupCriteriaType(CriteriaTypes type)
|
||||
static bool IsGroupCriteriaType(CriteriaType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case CRITERIA_TYPE_KILL_CREATURE:
|
||||
case CRITERIA_TYPE_WIN_BG:
|
||||
case CRITERIA_TYPE_BE_SPELL_TARGET: // NYI
|
||||
case CRITERIA_TYPE_WIN_RATED_ARENA:
|
||||
case CRITERIA_TYPE_BE_SPELL_TARGET2: // NYI
|
||||
case CRITERIA_TYPE_WIN_RATED_BATTLEGROUND: // NYI
|
||||
case CriteriaType::KillCreature:
|
||||
case CriteriaType::WinBattleground:
|
||||
case CriteriaType::BeSpellTarget: // NYI
|
||||
case CriteriaType::WinAnyRankedArena:
|
||||
case CriteriaType::GainAura: // NYI
|
||||
case CriteriaType::WinAnyBattleground: // NYI
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
@@ -406,11 +406,11 @@ private:
|
||||
std::unordered_map<uint32, CriteriaTreeList> _criteriaTreeByCriteria;
|
||||
|
||||
// store criterias by type to speed up lookup
|
||||
CriteriaList _criteriasByType[CRITERIA_TYPE_TOTAL];
|
||||
CriteriaListByAsset _criteriasByAsset[CRITERIA_TYPE_TOTAL];
|
||||
CriteriaList _guildCriteriasByType[CRITERIA_TYPE_TOTAL];
|
||||
CriteriaList _scenarioCriteriasByType[CRITERIA_TYPE_TOTAL];
|
||||
CriteriaList _questObjectiveCriteriasByType[CRITERIA_TYPE_TOTAL];
|
||||
CriteriaList _criteriasByType[size_t(CriteriaType::Count)];
|
||||
CriteriaListByAsset _criteriasByAsset[size_t(CriteriaType::Count)];
|
||||
CriteriaList _guildCriteriasByType[size_t(CriteriaType::Count)];
|
||||
CriteriaList _scenarioCriteriasByType[size_t(CriteriaType::Count)];
|
||||
CriteriaList _questObjectiveCriteriasByType[size_t(CriteriaType::Count)];
|
||||
|
||||
CriteriaList _criteriasByTimedType[size_t(CriteriaStartEvent::Count)];
|
||||
std::unordered_map<int32, CriteriaList> _criteriasByFailEvent[size_t(CriteriaFailEvent::Count)];
|
||||
|
||||
@@ -1767,8 +1767,8 @@ bool AuctionHouseObject::BuyCommodity(CharacterDatabaseTransaction trans, Player
|
||||
|
||||
if (Player* owner = ObjectAccessor::FindConnectedPlayer(auction->Owner))
|
||||
{
|
||||
owner->UpdateCriteria(CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS, profit);
|
||||
owner->UpdateCriteria(CRITERIA_TYPE_HIGHEST_AUCTION_SOLD, profit);
|
||||
owner->UpdateCriteria(CriteriaType::MoneyEarnedFromAuctions, profit);
|
||||
owner->UpdateCriteria(CriteriaType::HighestAuctionSale, profit);
|
||||
owner->GetSession()->SendAuctionClosedNotification(auction, (float)sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY), true);
|
||||
}
|
||||
|
||||
@@ -1909,7 +1909,7 @@ void AuctionHouseObject::SendAuctionWon(AuctionPosting const* auction, Player* b
|
||||
bidder->SendDirectMessage(packet.Write());
|
||||
|
||||
// FIXME: for offline player need also
|
||||
bidder->UpdateCriteria(CRITERIA_TYPE_WON_AUCTIONS, 1);
|
||||
bidder->UpdateCriteria(CriteriaType::AuctionsWon, 1);
|
||||
}
|
||||
|
||||
mail.SendMailTo(trans, MailReceiver(bidder, auction->Bidder), this, MAIL_CHECK_MASK_COPIED);
|
||||
@@ -1937,8 +1937,8 @@ void AuctionHouseObject::SendAuctionSold(AuctionPosting const* auction, Player*
|
||||
//FIXME: what do if owner offline
|
||||
if (owner)
|
||||
{
|
||||
owner->UpdateCriteria(CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS, profit);
|
||||
owner->UpdateCriteria(CRITERIA_TYPE_HIGHEST_AUCTION_SOLD, auction->BidAmount);
|
||||
owner->UpdateCriteria(CriteriaType::MoneyEarnedFromAuctions, profit);
|
||||
owner->UpdateCriteria(CriteriaType::HighestAuctionSale, auction->BidAmount);
|
||||
//send auction owner notification, bidder must be current!
|
||||
owner->GetSession()->SendAuctionClosedNotification(auction, (float)sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY), true);
|
||||
}
|
||||
|
||||
@@ -334,7 +334,7 @@ void BattlePetMgr::AddPet(uint32 species, uint32 creatureId, uint16 breed, uint8
|
||||
updates.push_back(std::ref(pet));
|
||||
SendUpdates(std::move(updates), true);
|
||||
|
||||
_owner->GetPlayer()->UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET, species);
|
||||
_owner->GetPlayer()->UpdateCriteria(CriteriaType::LearnedNewPet, species);
|
||||
}
|
||||
|
||||
void BattlePetMgr::RemovePet(ObjectGuid guid)
|
||||
|
||||
@@ -249,8 +249,8 @@ void Arena::EndBattleground(uint32 winner)
|
||||
{
|
||||
// update achievement BEFORE personal rating update
|
||||
uint32 rating = player->GetArenaPersonalRating(winnerArenaTeam->GetSlot());
|
||||
player->UpdateCriteria(CRITERIA_TYPE_WIN_RATED_ARENA, rating ? rating : 1);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_WIN_ARENA, GetMapId());
|
||||
player->UpdateCriteria(CriteriaType::WinAnyRankedArena, rating ? rating : 1);
|
||||
player->UpdateCriteria(CriteriaType::WinArena, GetMapId());
|
||||
|
||||
// Last standing - Rated 5v5 arena & be solely alive player
|
||||
if (GetArenaType() == ARENA_TYPE_5v5 && aliveWinners == 1 && player->IsAlive())
|
||||
@@ -261,7 +261,7 @@ void Arena::EndBattleground(uint32 winner)
|
||||
guildAwarded = true;
|
||||
if (ObjectGuid::LowType guildId = GetBgMap()->GetOwnerGuildId(player->GetBGTeam()))
|
||||
if (Guild* guild = sGuildMgr->GetGuildById(guildId))
|
||||
guild->UpdateCriteria(CRITERIA_TYPE_WIN_RATED_ARENA, std::max<uint32>(winnerArenaTeam->GetRating(), 1), 0, 0, nullptr, player);
|
||||
guild->UpdateCriteria(CriteriaType::WinAnyRankedArena, std::max<uint32>(winnerArenaTeam->GetRating(), 1), 0, 0, nullptr, player);
|
||||
}
|
||||
|
||||
winnerArenaTeam->MemberWon(player, loserMatchmakerRating, winnerMatchmakerChange);
|
||||
|
||||
@@ -444,7 +444,7 @@ void ArenaTeamMember::ModifyPersonalRating(Player* player, int32 mod, uint32 typ
|
||||
if (player)
|
||||
{
|
||||
player->SetArenaTeamInfoField(ArenaTeam::GetSlotByType(type), ARENA_TEAM_PERSONAL_RATING, PersonalRating);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_HIGHEST_PERSONAL_RATING, PersonalRating, type);
|
||||
player->UpdateCriteria(CriteriaType::EarnPersonalArenaRating, PersonalRating, type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -605,7 +605,7 @@ void ArenaTeam::FinishGame(int32 mod)
|
||||
// Check if rating related achivements are met
|
||||
for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
|
||||
if (Player* member = ObjectAccessor::FindConnectedPlayer(itr->Guid))
|
||||
member->UpdateCriteria(CRITERIA_TYPE_HIGHEST_TEAM_RATING, Stats.Rating, Type);
|
||||
member->UpdateCriteria(CriteriaType::EarnTeamArenaRating, Stats.Rating, Type);
|
||||
}
|
||||
|
||||
// Update number of games played per season or week
|
||||
|
||||
@@ -818,14 +818,14 @@ void Battleground::EndBattleground(uint32 winner)
|
||||
// TODO: loss honor xp
|
||||
}
|
||||
|
||||
player->UpdateCriteria(CRITERIA_TYPE_WIN_BG, player->GetMapId());
|
||||
player->UpdateCriteria(CriteriaType::WinBattleground, player->GetMapId());
|
||||
if (!guildAwarded)
|
||||
{
|
||||
guildAwarded = true;
|
||||
if (ObjectGuid::LowType guildId = GetBgMap()->GetOwnerGuildId(player->GetBGTeam()))
|
||||
{
|
||||
if (Guild* guild = sGuildMgr->GetGuildById(guildId))
|
||||
guild->UpdateCriteria(CRITERIA_TYPE_WIN_BG, player->GetMapId(), 0, 0, nullptr, player);
|
||||
guild->UpdateCriteria(CriteriaType::WinBattleground, player->GetMapId(), 0, 0, nullptr, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -842,7 +842,7 @@ void Battleground::EndBattleground(uint32 winner)
|
||||
|
||||
player->SendDirectMessage(pvpMatchComplete.GetRawPacket());
|
||||
|
||||
player->UpdateCriteria(CRITERIA_TYPE_COMPLETE_BATTLEGROUND, player->GetMapId());
|
||||
player->UpdateCriteria(CriteriaType::ParticipateInBattleground, player->GetMapId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -683,10 +683,10 @@ bool BattlegroundAB::UpdatePlayerScore(Player* player, uint32 type, uint32 value
|
||||
switch (type)
|
||||
{
|
||||
case SCORE_BASES_ASSAULTED:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AB_OBJECTIVE_ASSAULT_BASE);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AB_OBJECTIVE_ASSAULT_BASE);
|
||||
break;
|
||||
case SCORE_BASES_DEFENDED:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AB_OBJECTIVE_DEFEND_BASE);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AB_OBJECTIVE_DEFEND_BASE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -537,16 +537,16 @@ bool BattlegroundAV::UpdatePlayerScore(Player* player, uint32 type, uint32 value
|
||||
switch (type)
|
||||
{
|
||||
case SCORE_GRAVEYARDS_ASSAULTED:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_ASSAULT_GRAVEYARD);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_ASSAULT_GRAVEYARD);
|
||||
break;
|
||||
case SCORE_GRAVEYARDS_DEFENDED:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_DEFEND_GRAVEYARD);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_DEFEND_GRAVEYARD);
|
||||
break;
|
||||
case SCORE_TOWERS_ASSAULTED:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_ASSAULT_TOWER);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_ASSAULT_TOWER);
|
||||
break;
|
||||
case SCORE_TOWERS_DEFENDED:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_DEFEND_TOWER);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_DEFEND_TOWER);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -847,7 +847,7 @@ bool BattlegroundEY::UpdatePlayerScore(Player* player, uint32 type, uint32 value
|
||||
switch (type)
|
||||
{
|
||||
case SCORE_FLAG_CAPTURES:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, EY_OBJECTIVE_CAPTURE_FLAG);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, EY_OBJECTIVE_CAPTURE_FLAG);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -909,7 +909,7 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker)
|
||||
{
|
||||
if (Player* player = ObjectAccessor::FindPlayer(itr->first))
|
||||
if (player->GetTeamId() == Attackers)
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, 65246);
|
||||
player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246);
|
||||
}
|
||||
|
||||
Attackers = (Attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE;
|
||||
@@ -939,7 +939,7 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker)
|
||||
{
|
||||
if (Player* player = ObjectAccessor::FindPlayer(itr->first))
|
||||
if (player->GetTeamId() == Attackers && RoundScores[1].winner == Attackers)
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, 65246);
|
||||
player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246);
|
||||
}
|
||||
|
||||
if (RoundScores[0].time == RoundScores[1].time)
|
||||
@@ -1074,10 +1074,10 @@ bool BattlegroundSA::UpdatePlayerScore(Player* player, uint32 type, uint32 value
|
||||
switch (type)
|
||||
{
|
||||
case SCORE_DESTROYED_DEMOLISHER:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, BG_SA_DEMOLISHERS_DESTROYED);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, BG_SA_DEMOLISHERS_DESTROYED);
|
||||
break;
|
||||
case SCORE_DESTROYED_WALL:
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, BG_SA_GATES_DESTROYED);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, BG_SA_GATES_DESTROYED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -780,10 +780,10 @@ bool BattlegroundWS::UpdatePlayerScore(Player* player, uint32 type, uint32 value
|
||||
switch (type)
|
||||
{
|
||||
case SCORE_FLAG_CAPTURES: // flags captured
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, WS_OBJECTIVE_CAPTURE_FLAG);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, WS_OBJECTIVE_CAPTURE_FLAG);
|
||||
break;
|
||||
case SCORE_FLAG_RETURNS: // flags returned
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, WS_OBJECTIVE_RETURN_FLAG);
|
||||
player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, WS_OBJECTIVE_RETURN_FLAG);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -1007,174 +1007,200 @@ struct CriteriaEntry
|
||||
union AssetNameAlias
|
||||
{
|
||||
int32 ID;
|
||||
// CRITERIA_TYPE_KILL_CREATURE = 0
|
||||
// CRITERIA_TYPE_KILLED_BY_CREATURE = 20
|
||||
// CRITERIA_TYPE_OWN_PET = 96
|
||||
// CRITERIA_TYPE_208 = 208
|
||||
// CriteriaType::KillCreature = 0
|
||||
// CriteriaType::KilledByCreature = 20
|
||||
// CriteriaType::AccountKnownPet = 96
|
||||
// CriteriaType::KillCreatureScenario = 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_COMPLETE_CHALLENGE_MODE = 71
|
||||
// CriteriaType::WinBattleground = 1
|
||||
// CriteriaType::ParticipateInBattleground = 15
|
||||
// CriteriaType::DieOnMap = 16
|
||||
// CriteriaType::WinArena = 32
|
||||
// CriteriaType::ParticipateInArena = 33
|
||||
// CriteriaType::CompleteChallengeMode = 71
|
||||
int32 MapID;
|
||||
|
||||
// CRITERIA_TYPE_SURVEY_GAMEOBJECT = 4
|
||||
// CRITERIA_TYPE_USE_GAMEOBJECT = 68
|
||||
// CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72
|
||||
// CriteriaType::CompleteResearchProject = 2
|
||||
int32 ResearchProjectID;
|
||||
|
||||
// CriteriaType::FindResearchObject = 4
|
||||
// CriteriaType::UseGameobject = 68
|
||||
// CriteriaType::CatchFishInFishingHole = 72
|
||||
int32 GameObjectID;
|
||||
|
||||
// CRITERIA_TYPE_REACH_SKILL_LEVEL = 7
|
||||
// CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
|
||||
// CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75
|
||||
// CRITERIA_TYPE_LEARN_SKILL_LINE = 112
|
||||
// CriteriaType::SkillRaised = 7
|
||||
// CriteriaType::AchieveSkillStep = 40
|
||||
// CriteriaType::LearnSpellFromSkillLine = 75
|
||||
// CriteriaType::LearnTradeskillSkillLine = 112
|
||||
int32 SkillID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8
|
||||
// CriteriaType::EarnAchievement = 8
|
||||
int32 AchievementID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11
|
||||
// CriteriaType::CompleteQuestsInZone = 11
|
||||
int32 ZoneID;
|
||||
|
||||
// CRITERIA_TYPE_CURRENCY = 12
|
||||
// CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY = 229
|
||||
// CriteriaType::CurrencyGained = 12
|
||||
// CriteriaType::ObtainAnyItemWithCurrencyValue = 229
|
||||
int32 CurrencyID;
|
||||
|
||||
// CRITERIA_TYPE_DEATH_IN_DUNGEON = 18
|
||||
// CRITERIA_TYPE_COMPLETE_RAID = 19
|
||||
// CriteriaType::DieInInstance = 18
|
||||
// CriteriaType::RunInstance = 19
|
||||
int32 GroupSize;
|
||||
|
||||
// CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA = 21
|
||||
// CriteriaType::CompleteInternalCriteria = 21
|
||||
int32 CriteriaID;
|
||||
|
||||
// CRITERIA_TYPE_DEATHS_FROM = 26
|
||||
int32 DamageType;
|
||||
// CriteriaType::DieFromEnviromentalDamage = 26
|
||||
int32 EnviromentalDamageType;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_QUEST = 27
|
||||
// CriteriaType::CompleteQuest = 27
|
||||
int32 QuestID;
|
||||
|
||||
// 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
|
||||
// CriteriaType::BeSpellTarget = 28
|
||||
// CriteriaType::CastSpell = 29
|
||||
// CriteriaType::LearnOrKnowSpell = 34
|
||||
// CriteriaType::GainAura = 69
|
||||
// CriteriaType::LandTargetedSpellOnTarget = 110
|
||||
// CriteriaType::MemorizeSpell = 222
|
||||
int32 SpellID;
|
||||
|
||||
// CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30
|
||||
int32 ObjectiveId;
|
||||
// CriteriaType::TrackedWorldStateUIModified = 30
|
||||
int32 WorldStateUIID;
|
||||
|
||||
// CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
|
||||
// CRITERIA_TYPE_ENTER_AREA = 163
|
||||
// CRITERIA_TYPE_LEAVE_AREA = 164
|
||||
// CRITERIA_TYPE_TRAVELLED_TO_AREA = 225
|
||||
// CriteriaType::PVPKillInArea = 31
|
||||
// CriteriaType::EnterArea = 163
|
||||
// CriteriaType::LeaveArea = 164
|
||||
// CriteriaType::EnterTopLevelArea = 225
|
||||
// CriteriaType::LeaveTopLevelArea = 226
|
||||
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
|
||||
// CriteriaType::AcquireItem = 36
|
||||
// CriteriaType::UseItem = 41
|
||||
// CriteriaType::LootItem = 42
|
||||
// CriteriaType::EquipItem = 57
|
||||
// CriteriaType::LearnToy = 185
|
||||
// CriteriaType::LearnHeirloom = 188
|
||||
int32 ItemID;
|
||||
|
||||
// CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38
|
||||
// CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39
|
||||
// CriteriaType::EarnTeamArenaRating = 38
|
||||
// CriteriaType::EarnPersonalArenaRating = 39
|
||||
int32 TeamType;
|
||||
|
||||
// CRITERIA_TYPE_EXPLORE_AREA = 43
|
||||
// CriteriaType::RevealWorldMapOverlay = 43
|
||||
int32 WorldMapOverlayID;
|
||||
|
||||
// CRITERIA_TYPE_GAIN_REPUTATION = 46
|
||||
// CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206
|
||||
// CriteriaType::ReputationGained = 46
|
||||
// CriteriaType::ParagonLevelIncreaseWithFaction = 206
|
||||
int32 FactionID;
|
||||
|
||||
// CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT = 49
|
||||
// CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT = 199
|
||||
// CriteriaType::EquipItemInSlot = 49
|
||||
// CriteriaType::LearnAnyTransmogInSlot = 199
|
||||
int32 EquipmentSlot;
|
||||
|
||||
// CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50
|
||||
// CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51
|
||||
// CriteriaType::RollNeed = 50
|
||||
// CriteriaType::RollGreed = 51
|
||||
// CriteriaType::RollDisenchant = 116
|
||||
int32 RollValue;
|
||||
|
||||
// CRITERIA_TYPE_HK_CLASS = 52
|
||||
// CriteriaType::DeliverKillingBlowToClass = 52
|
||||
int32 ClassID;
|
||||
|
||||
// CRITERIA_TYPE_HK_RACE = 53
|
||||
// CriteriaType::DeliverKillingBlowToRace = 53
|
||||
int32 RaceID;
|
||||
|
||||
// CRITERIA_TYPE_DO_EMOTE = 54
|
||||
// CriteriaType::DoEmote = 54
|
||||
int32 EmoteID;
|
||||
|
||||
// CRITERIA_TYPE_SEND_EVENT = 73
|
||||
// CRITERIA_TYPE_SEND_EVENT_SCENARIO = 92
|
||||
// CriteriaType::CompleteQuestsInSort = 58
|
||||
int32 QuestSortID;
|
||||
|
||||
// CriteriaType::KilledAllUnitsInSpawnRegion = 64
|
||||
int32 SpawnRegionID;
|
||||
|
||||
// CriteriaType::PlayerTriggerGameEvent = 73
|
||||
// CriteriaType::AnyoneTriggerGameEventScenario = 92
|
||||
int32 EventID;
|
||||
|
||||
// CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER = 97
|
||||
// CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165
|
||||
// CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot = 97
|
||||
// CriteriaType::DefeatDungeonEncounter = 165
|
||||
int32 DungeonEncounterID;
|
||||
|
||||
// CRITERIA_TYPE_LOOT_TYPE = 109
|
||||
// CriteriaType::GetLootByType = 109
|
||||
int32 LootType;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138
|
||||
// CriteriaType::CompleteGuildChallenge = 138
|
||||
int32 GuildChallengeType;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_SCENARIO = 152
|
||||
// CriteriaType::CompleteScenario = 152
|
||||
int32 ScenarioID;
|
||||
|
||||
// CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET = 153
|
||||
// CriteriaType::EnterAreaTriggerWithActionSet = 153
|
||||
// CriteriaType::LeaveAreaTriggerWithActionSet = 154
|
||||
int32 AreaTriggerActionSetID;
|
||||
|
||||
// CRITERIA_TYPE_LEVEL_BATTLE_PET = 160
|
||||
// CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT = 162
|
||||
// CriteriaType::BattlePetReachLevel = 160
|
||||
// CriteriaType::ActivelyEarnPetLevel = 162
|
||||
int32 PetLevel;
|
||||
|
||||
// CRITERIA_TYPE_PLACE_GARRISON_BUILDING = 167
|
||||
// CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169
|
||||
// CriteriaType::PlaceGarrisonBuilding = 167
|
||||
// CriteriaType::ActivateGarrisonBuilding = 169
|
||||
// CriteriaType::LearnGarrisonBlueprint = 179
|
||||
int32 GarrBuildingID;
|
||||
|
||||
// CRITERIA_TYPE_UPGRADE_GARRISON = 170
|
||||
// CriteriaType::UpgradeGarrison = 170
|
||||
int32 GarrisonLevel;
|
||||
|
||||
// CRITERIA_TYPE_START_GARRISON_MISSION = 171
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT = 173
|
||||
// CriteriaType::StartAnyGarrisonMissionWithFollowerType = 171
|
||||
// CriteriaType::SucceedAnyGarrisonMissionWithFollowerType = 173
|
||||
int32 GarrFollowerTypeID;
|
||||
|
||||
// CRITERIA_TYPE_START_ORDER_HALL_MISSION = 172
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174
|
||||
// CriteriaType::StartGarrisonMission = 172
|
||||
// CriteriaType::SucceedGarrisonMission = 174
|
||||
int32 GarrMissionID;
|
||||
|
||||
// CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER = 176
|
||||
// CriteriaType::RecruitGarrisonFollower = 176
|
||||
int32 GarrFollowerID;
|
||||
|
||||
// CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182
|
||||
// CriteriaType::LearnGarrisonSpecialization = 181
|
||||
int32 GarrSpecializationID;
|
||||
|
||||
// CriteriaType::CollectGarrisonShipment = 182
|
||||
int32 CharShipmentContainerID;
|
||||
|
||||
// CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE = 192
|
||||
// CriteriaType::LearnTransmog = 192
|
||||
int32 ItemModifiedAppearanceID;
|
||||
|
||||
// CRITERIA_TYPE_ACTIVELY_REACH_LEVEL = 196
|
||||
// CriteriaType::ActivelyReachLevel = 196
|
||||
int32 PlayerLevel;
|
||||
|
||||
// CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED = 198
|
||||
// CRITERIA_TYPE_202 = 202
|
||||
// CriteriaType::CompleteResearchGarrisonTalent = 198
|
||||
// CriteriaType::StartResearchGarrisonTalent = 202
|
||||
// CriteriaType::SocketGarrisonTalent = 227
|
||||
int32 GarrTalentID;
|
||||
|
||||
// CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205
|
||||
// CriteriaType::EarnLicense = 204
|
||||
int32 BattlePayDeliverableID;
|
||||
|
||||
// CriteriaType::CollectTransmogSetFromGroup = 205
|
||||
int32 TransmogSetGroupID;
|
||||
|
||||
// CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211
|
||||
// CriteriaType::ArtifactPowerRankPurchased = 209
|
||||
// CriteriaType::ChooseRelicTalent = 211
|
||||
int32 ArtifactPowerID;
|
||||
|
||||
// CRITERIA_TYPE_EXPANSION_LEVEL = 212
|
||||
// CriteriaType::EarnExpansionLevel = 212
|
||||
int32 ExpansionLevel;
|
||||
|
||||
// CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL = 213
|
||||
// CriteriaType::AccountHonorLevelReached = 213
|
||||
int32 AccountHonorLevel;
|
||||
|
||||
// CRITERIA_TREE_HEART_OF_AZEROTH_LEVEL_REACHED = 215
|
||||
int32 HeartOfAzerothLevel;
|
||||
// CriteriaType::AzeriteLevelReached = 215
|
||||
int32 AzeriteLevel;
|
||||
|
||||
// CriteriaType::MythicPlusRatingAttained = 230
|
||||
int32 DungeonScore;
|
||||
} Asset;
|
||||
uint32 ModifierTreeId;
|
||||
uint8 StartEvent;
|
||||
|
||||
@@ -303,237 +303,243 @@ enum class CriteriaFlags : uint8
|
||||
|
||||
DEFINE_ENUM_FLAG(CriteriaFlags);
|
||||
|
||||
enum CriteriaTypes : uint8
|
||||
enum class CriteriaType : uint8
|
||||
{
|
||||
CRITERIA_TYPE_KILL_CREATURE = 0,
|
||||
CRITERIA_TYPE_WIN_BG = 1,
|
||||
// 2 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS = 3, // struct { uint32 itemCount; }
|
||||
CRITERIA_TYPE_SURVEY_GAMEOBJECT = 4,
|
||||
CRITERIA_TYPE_REACH_LEVEL = 5,
|
||||
CRITERIA_TYPE_CLEAR_DIGSITE = 6,
|
||||
CRITERIA_TYPE_REACH_SKILL_LEVEL = 7,
|
||||
CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8,
|
||||
CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9,
|
||||
CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10, // you have to complete a daily quest x times in a row
|
||||
CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11,
|
||||
CRITERIA_TYPE_CURRENCY = 12,
|
||||
CRITERIA_TYPE_DAMAGE_DONE = 13,
|
||||
CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14,
|
||||
CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15,
|
||||
CRITERIA_TYPE_DEATH_AT_MAP = 16,
|
||||
CRITERIA_TYPE_DEATH = 17,
|
||||
CRITERIA_TYPE_DEATH_IN_DUNGEON = 18,
|
||||
CRITERIA_TYPE_COMPLETE_RAID = 19,
|
||||
CRITERIA_TYPE_KILLED_BY_CREATURE = 20,
|
||||
CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA = 21,
|
||||
CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE_GUILD = 22,
|
||||
CRITERIA_TYPE_KILLED_BY_PLAYER = 23,
|
||||
CRITERIA_TYPE_FALL_WITHOUT_DYING = 24,
|
||||
// 25 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_DEATHS_FROM = 26,
|
||||
CRITERIA_TYPE_COMPLETE_QUEST = 27,
|
||||
CRITERIA_TYPE_BE_SPELL_TARGET = 28,
|
||||
CRITERIA_TYPE_CAST_SPELL = 29,
|
||||
CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30,
|
||||
CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31,
|
||||
CRITERIA_TYPE_WIN_ARENA = 32,
|
||||
CRITERIA_TYPE_PLAY_ARENA = 33,
|
||||
CRITERIA_TYPE_LEARN_SPELL = 34,
|
||||
CRITERIA_TYPE_HONORABLE_KILL = 35,
|
||||
CRITERIA_TYPE_OWN_ITEM = 36,
|
||||
CRITERIA_TYPE_WIN_RATED_ARENA = 37,
|
||||
CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
|
||||
CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
|
||||
CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
|
||||
CRITERIA_TYPE_USE_ITEM = 41,
|
||||
CRITERIA_TYPE_LOOT_ITEM = 42,
|
||||
CRITERIA_TYPE_EXPLORE_AREA = 43,
|
||||
CRITERIA_TYPE_OWN_RANK = 44,
|
||||
CRITERIA_TYPE_BUY_BANK_SLOT = 45,
|
||||
CRITERIA_TYPE_GAIN_REPUTATION = 46,
|
||||
CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
|
||||
CRITERIA_TYPE_VISIT_BARBER_SHOP = 48,
|
||||
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,
|
||||
CRITERIA_TYPE_HK_RACE = 53,
|
||||
CRITERIA_TYPE_DO_EMOTE = 54,
|
||||
CRITERIA_TYPE_HEALING_DONE = 55,
|
||||
CRITERIA_TYPE_GET_KILLING_BLOWS = 56, /// @todo in some cases map not present, and in some cases need do without die
|
||||
CRITERIA_TYPE_EQUIP_ITEM = 57,
|
||||
// 58 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
|
||||
CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
|
||||
CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS = 61,
|
||||
CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62,
|
||||
CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING = 63,
|
||||
CRITERIA_TYPE_DEFEAT_CREATURE_GROUP = 64,
|
||||
CRITERIA_TYPE_GOLD_SPENT_AT_BARBER = 65,
|
||||
CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL = 66,
|
||||
CRITERIA_TYPE_LOOT_MONEY = 67,
|
||||
CRITERIA_TYPE_USE_GAMEOBJECT = 68,
|
||||
CRITERIA_TYPE_BE_SPELL_TARGET2 = 69,
|
||||
CRITERIA_TYPE_SPECIAL_PVP_KILL = 70,
|
||||
CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE = 71,
|
||||
CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
|
||||
CRITERIA_TYPE_SEND_EVENT = 73,
|
||||
CRITERIA_TYPE_ON_LOGIN = 74,
|
||||
CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75,
|
||||
CRITERIA_TYPE_WIN_DUEL = 76,
|
||||
CRITERIA_TYPE_LOSE_DUEL = 77,
|
||||
CRITERIA_TYPE_KILL_CREATURE_TYPE = 78,
|
||||
CRITERIA_TYPE_COOK_RECIPES_GUILD = 79,
|
||||
CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80,
|
||||
CRITERIA_TYPE_EARN_PET_BATTLE_ACHIEVEMENT_POINTS = 81,
|
||||
CRITERIA_TYPE_CREATE_AUCTION = 82,
|
||||
CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83,
|
||||
CRITERIA_TYPE_WON_AUCTIONS = 84,
|
||||
CRITERIA_TYPE_HIGHEST_AUCTION_SOLD = 85,
|
||||
CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED = 86,
|
||||
CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87,
|
||||
CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88,
|
||||
CRITERIA_TYPE_KNOWN_FACTIONS = 89,
|
||||
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,
|
||||
CRITERIA_TYPE_RELEASE_SPIRIT = 95,
|
||||
CRITERIA_TYPE_OWN_PET = 96,
|
||||
CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER = 97,
|
||||
// 98 - unused (Legion - 23420)
|
||||
// 99 - unused (Legion - 23420)
|
||||
// 100 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_HIGHEST_HIT_DEALT = 101,
|
||||
CRITERIA_TYPE_HIGHEST_HIT_RECEIVED = 102,
|
||||
CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED = 103,
|
||||
CRITERIA_TYPE_HIGHEST_HEAL_CAST = 104,
|
||||
CRITERIA_TYPE_TOTAL_HEALING_RECEIVED = 105,
|
||||
CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED = 106,
|
||||
CRITERIA_TYPE_QUEST_ABANDONED = 107,
|
||||
CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
|
||||
CRITERIA_TYPE_LOOT_TYPE = 109,
|
||||
CRITERIA_TYPE_CAST_SPELL2 = 110, /// @todo target entry is missing
|
||||
// 111 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_LEARN_SKILL_LINE = 112,
|
||||
CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
|
||||
CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
|
||||
CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115,
|
||||
// 116 - unused (Legion - 23420)
|
||||
// 117 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_COMPLETE_LFG_DUNGEON = 118,
|
||||
CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS = 119,
|
||||
CRITERIA_TYPE_LFG_VOTE_KICKS_INITIATED_BY_PLAYER = 120,
|
||||
CRITERIA_TYPE_LFG_VOTE_KICKS_NOT_INIT_BY_PLAYER = 121,
|
||||
CRITERIA_TYPE_BE_KICKED_FROM_LFG = 122,
|
||||
CRITERIA_TYPE_LFG_LEAVES = 123,
|
||||
CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS = 124,
|
||||
CRITERIA_TYPE_REACH_GUILD_LEVEL = 125,
|
||||
CRITERIA_TYPE_CRAFT_ITEMS_GUILD = 126,
|
||||
CRITERIA_TYPE_CATCH_FROM_POOL = 127,
|
||||
CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS = 128,
|
||||
CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS = 129,
|
||||
CRITERIA_TYPE_WIN_RATED_BATTLEGROUND = 130,
|
||||
// 131 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_REACH_BG_RATING = 132,
|
||||
CRITERIA_TYPE_BUY_GUILD_TABARD = 133,
|
||||
CRITERIA_TYPE_COMPLETE_QUESTS_GUILD = 134,
|
||||
CRITERIA_TYPE_HONORABLE_KILLS_GUILD = 135,
|
||||
CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD = 136,
|
||||
CRITERIA_TYPE_COUNT_OF_LFG_QUEUE_BOOSTS_BY_TANK = 137,
|
||||
CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138, //struct { Flag flag; uint32 count; } 1: Guild Dungeon, 2:Guild Challenge, 3:Guild battlefield
|
||||
CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE = 139, //struct { uint32 count; } Guild Challenge
|
||||
// 140 - 1 criteria (16883), unused (Legion - 23420)
|
||||
// 141 - 1 criteria (16884), unused (Legion - 23420)
|
||||
// 142 - 1 criteria (16881), unused (Legion - 23420)
|
||||
// 143 - 1 criteria (16882), unused (Legion - 23420)
|
||||
// 144 - 1 criteria (17386), unused (Legion - 23420)
|
||||
CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED = 145,
|
||||
CRITERIA_TYPE_LFR_LEAVES = 146,
|
||||
CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER = 147,
|
||||
CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER = 148,
|
||||
CRITERIA_TYPE_BE_KICKED_FROM_LFR = 149,
|
||||
CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK = 150,
|
||||
CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT = 151,
|
||||
CRITERIA_TYPE_COMPLETE_SCENARIO = 152,
|
||||
CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET = 153,
|
||||
// 154 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_OWN_BATTLE_PET = 155,
|
||||
CRITERIA_TYPE_OWN_BATTLE_PET_COUNT = 156,
|
||||
CRITERIA_TYPE_CAPTURE_BATTLE_PET = 157,
|
||||
CRITERIA_TYPE_WIN_PET_BATTLE = 158,
|
||||
// 159 - 2 criterias (22312,22314), unused (Legion - 23420)
|
||||
CRITERIA_TYPE_LEVEL_BATTLE_PET = 160,
|
||||
CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT = 161, // triggers a quest credit
|
||||
CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT = 162, // triggers a quest credit
|
||||
CRITERIA_TYPE_ENTER_AREA = 163, // triggers a quest credit
|
||||
CRITERIA_TYPE_LEAVE_AREA = 164, // triggers a quest credit
|
||||
CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165,
|
||||
// 166 - unused (Legion - 23420)
|
||||
CRITERIA_TYPE_PLACE_GARRISON_BUILDING = 167,
|
||||
CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING = 168,
|
||||
CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169,
|
||||
CRITERIA_TYPE_UPGRADE_GARRISON = 170,
|
||||
CRITERIA_TYPE_START_GARRISON_MISSION = 171,
|
||||
CRITERIA_TYPE_START_ORDER_HALL_MISSION = 172,
|
||||
CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT = 173,
|
||||
CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174,
|
||||
CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT = 175,
|
||||
CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER = 176,
|
||||
// 177 - 0 criterias (Legion - 23420)
|
||||
CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT = 178,
|
||||
// 179 - 0 criterias (Legion - 23420)
|
||||
// 180 - 0 criterias (Legion - 23420)
|
||||
// 181 - 0 criterias (Legion - 23420)
|
||||
CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182,
|
||||
CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL = 183,
|
||||
CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL = 184,
|
||||
CRITERIA_TYPE_OWN_TOY = 185,
|
||||
CRITERIA_TYPE_OWN_TOY_COUNT = 186,
|
||||
CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_WITH_QUALITY= 187,
|
||||
// 188 - 0 criterias (Legion - 23420)
|
||||
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,
|
||||
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,
|
||||
CRITERIA_TYPE_ORDER_HALL_RECRUIT_TROOP = 200,
|
||||
// 201 - 0 criterias (Legion - 23420)
|
||||
// 202 - 0 criterias (Legion - 23420)
|
||||
CRITERIA_TYPE_COMPLETE_WORLD_QUEST = 203,
|
||||
// 204 - Special criteria type to award players for some external events? Comes with what looks like an identifier, so guessing it's not unique.
|
||||
CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205,
|
||||
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,
|
||||
CRITERIA_TYPE_MYTHIC_KEYSTONE_COMPLETED = 216, // NYI
|
||||
// 217 - 0 criterias
|
||||
CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE = 218,
|
||||
CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR = 219,
|
||||
CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR = 220,
|
||||
// 221 - 0 criterias
|
||||
// 222 - 0 criterias
|
||||
// 223 - 0 criterias
|
||||
// 224 - 0 criterias
|
||||
CRITERIA_TYPE_TRAVELLED_TO_AREA = 225,
|
||||
// 226 - 0 criterias
|
||||
// 227 - 0 criterias
|
||||
CRITERIA_TYPE_APPLY_CONDUIT = 228,
|
||||
CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY = 229,
|
||||
};
|
||||
KillCreature = 0, // Kill NPC "{Creature}"
|
||||
WinBattleground = 1, // Win battleground "{Map}"
|
||||
CompleteResearchProject = 2, /*NYI*/ // Complete research project "{ResearchProject}"
|
||||
CompleteAnyResearchProject = 3, /*NYI*/ // Complete any research project
|
||||
FindResearchObject = 4, /*NYI*/ // Find research object "{GameObjects}"
|
||||
ReachLevel = 5, // Reach level
|
||||
ExhaustAnyResearchSite = 6, /*NYI*/ // Exhaust any research site
|
||||
SkillRaised = 7, // Skill "{SkillLine}" raised
|
||||
EarnAchievement = 8, // Earn achievement "{Achievement}"
|
||||
CompleteQuestsCount = 9, // Count of complete quests (quest count)
|
||||
CompleteAnyDailyQuestPerDay = 10, // Complete any daily quest (per day)
|
||||
CompleteQuestsInZone = 11, // Complete quests in "{AreaTable}"
|
||||
CurrencyGained = 12, // Currency "{CurrencyTypes}" gained
|
||||
DamageDealt = 13, // Damage dealt
|
||||
CompleteDailyQuest = 14, // Complete daily quest
|
||||
ParticipateInBattleground = 15, // Participate in battleground "{Map}"
|
||||
DieOnMap = 16, // Die on map "{Map}"
|
||||
DieAnywhere = 17, // Die anywhere
|
||||
DieInInstance = 18, // Die in an instance which handles at most {#Max Players} players
|
||||
RunInstance = 19, /*NYI*/ // Run an instance which handles at most {#Max Players} players
|
||||
KilledByCreature = 20, // Get killed by "{Creature}"
|
||||
CompleteInternalCriteria = 21, /*NYI*/ // Designer Value{`Uses Record ID}
|
||||
CompleteAnyChallengeMode = 22, /*NYI*/ // Complete any challenge mode
|
||||
KilledByPlayer = 23, // Die to a player
|
||||
MaxDistFallenWithoutDying = 24, // Maximum distance fallen without dying
|
||||
EarnChallengeModeMedal = 25, /*NYI*/ // Earn a challenge mode medal of "{#Challenge Mode Medal (OBSOLETE)}" (OBSOLETE)
|
||||
DieFromEnviromentalDamage = 26, // Die to "{$Env Damage}" environmental damage
|
||||
CompleteQuest = 27, // Complete quest "{QuestV2}"
|
||||
BeSpellTarget = 28, // Have the spell "{Spell}" cast on you
|
||||
CastSpell = 29, // Cast the spell "{Spell}"
|
||||
TrackedWorldStateUIModified = 30, // Tracked WorldStateUI value "{WorldStateUI}" is modified
|
||||
PVPKillInArea = 31, // Kill someone in PVP in "{AreaTable}"
|
||||
WinArena = 32, // Win arena "{Map}"
|
||||
ParticipateInArena = 33, /*NYI*/ // Participate in arena "{Map}"
|
||||
LearnOrKnowSpell = 34, // Learn or Know spell "{Spell}"
|
||||
EarnHonorableKill = 35, // Earn an honorable kill
|
||||
AcquireItem = 36, // Acquire item "{Item}"
|
||||
WinAnyRankedArena = 37, // Win a ranked arena match (any arena)
|
||||
EarnTeamArenaRating = 38, /*NYI*/ // Earn a team arena rating of {#Arena Rating}
|
||||
EarnPersonalArenaRating = 39, // Earn a personal arena rating of {#Arena Rating}
|
||||
AchieveSkillStep = 40, // Achieve a skill step in "{SkillLine}"
|
||||
UseItem = 41, // Use item "{Item}"
|
||||
LootItem = 42, // Loot "{Item}" via corpse, pickpocket, fishing, disenchanting, etc.
|
||||
RevealWorldMapOverlay = 43, // Reveal world map overlay "{WorldMapOverlay}"
|
||||
EarnTitle = 44, /*NYI*/ // Deprecated PVP Titles
|
||||
BankSlotsPurchased = 45, // Bank slots purchased
|
||||
ReputationGained = 46, // Reputation gained with faction "{Faction}"
|
||||
TotalExaltedFactions = 47, // Total exalted factions
|
||||
GotHaircut = 48, // Got a haircut
|
||||
EquipItemInSlot = 49, // Equip item in slot "{$Equip Slot}"
|
||||
RollNeed = 50, // Roll need and get {#Need Roll}
|
||||
RollGreed = 51, // Roll greed and get {#Greed Roll}
|
||||
DeliverKillingBlowToClass = 52, // Deliver a killing blow to a {ChrClasses}
|
||||
DeliverKillingBlowToRace = 53, // Deliver a killing blow to a {ChrRaces}
|
||||
DoEmote = 54, // Do a "{EmotesText}" emote
|
||||
HealingDone = 55, // Healing done
|
||||
DeliveredKillingBlow = 56, // Delivered a killing blow
|
||||
EquipItem = 57, // Equip item "{Item}"
|
||||
CompleteQuestsInSort = 58, /*NYI*/ // Complete quests in "{QuestSort}"
|
||||
MoneyEarnedFromSales = 59, // Sell items to vendors
|
||||
MoneySpentOnRespecs = 60, // Money spent on respecs
|
||||
TotalRespecs = 61, // Total respecs
|
||||
MoneyEarnedFromQuesting = 62, // Money earned from questing
|
||||
MoneySpentOnTaxis = 63, // Money spent on taxis
|
||||
KilledAllUnitsInSpawnRegion = 64, /*NYI*/ // Killed all units in spawn region "{SpawnRegion}"
|
||||
MoneySpentAtBarberShop = 65, // Money spent at the barber shop
|
||||
MoneySpentOnPostage = 66, // Money spent on postage
|
||||
MoneyLootedFromCreatures = 67, // Money looted from creatures
|
||||
UseGameobject = 68, // Use Game Object "{GameObjects}"
|
||||
GainAura = 69, // Gain aura "{Spell}"
|
||||
KillPlayer = 70, // Kill a player (no honor check)
|
||||
CompleteChallengeMode = 71, /*NYI*/ // Complete a challenge mode on map "{Map}"
|
||||
CatchFishInFishingHole = 72, // Catch fish in the "{GameObjects}" fishing hole
|
||||
PlayerTriggerGameEvent = 73, /*NYI*/ // Player will Trigger game event "{GameEvents}"
|
||||
Login = 74, // Login (USE SPARINGLY!)
|
||||
LearnSpellFromSkillLine = 75, // Learn spell from the "{SkillLine}" skill line
|
||||
WinDuel = 76, // Win a duel
|
||||
LoseDuel = 77, // Lose a duel
|
||||
KillAnyCreature = 78, // Kill any NPC
|
||||
CreatedItemsByCastingSpellWithLimit = 79, /*NYI*/ // Created items by casting a spell (limit 1 per create...)
|
||||
MoneyEarnedFromAuctions = 80, // Money earned from auctions
|
||||
BattlePetAchievementPointsEarned = 81, /*NYI*/ // Battle pet achievement points earned
|
||||
ItemsPostedAtAuction = 82, // Number of items posted at auction
|
||||
HighestAuctionBid = 83, // Highest auction bid
|
||||
AuctionsWon = 84, // Auctions won
|
||||
HighestAuctionSale = 85, // Highest coin value of item sold
|
||||
MostMoneyOwned = 86, // Most money owned
|
||||
TotalReveredFactions = 87, // Total revered factions
|
||||
TotalHonoredFactions = 88, // Total honored factions
|
||||
TotalFactionsEncountered = 89, // Total factions encountered
|
||||
LootAnyItem = 90, // Loot any item
|
||||
ObtainAnyItem = 91, // Obtain any item
|
||||
AnyoneTriggerGameEventScenario = 92, /*NYI*/ // Anyone will Trigger game event "{GameEvents}" (Scenario Only)
|
||||
RollAnyNeed = 93, // Roll any number on need
|
||||
RollAnyGreed = 94, // Roll any number on greed
|
||||
ReleasedSpirit = 95, /*NYI*/ // Released Spirit
|
||||
AccountKnownPet = 96, /*NYI*/ // Account knows pet "{Creature}" (Backtracked)
|
||||
DefeatDungeonEncounterWhileElegibleForLoot = 97, /*NYI*/ // Defeat Encounter "{DungeonEncounter}" While Eligible For Loot
|
||||
// UNUSED 18{} = 98, // Unused
|
||||
// UNUSED 19{} = 99, // Unused
|
||||
// UNUSED 20{} = 100, // Unused
|
||||
HighestDamageDone = 101, // Highest damage done in 1 single ability
|
||||
HighestDamageTaken = 102, // Most damage taken in 1 single hit
|
||||
TotalDamageTaken = 103, // Total damage taken
|
||||
HighestHealCast = 104, // Largest heal cast
|
||||
TotalHealReceived = 105, // Total healing received
|
||||
HighestHealReceived = 106, // Largest heal received
|
||||
AbandonAnyQuest = 107, // Abandon any quest
|
||||
BuyTaxi = 108, // Buy a taxi
|
||||
GetLootByType = 109, // Get loot via "{$Loot Acquisition}"
|
||||
LandTargetedSpellOnTarget = 110, // Land targeted spell "{Spell}" on a target
|
||||
// UNUSED 21{} = 111, // Unused
|
||||
LearnTradeskillSkillLine = 112, // Learn tradeskill skill line "{SkillLine}"
|
||||
HonorableKills = 113, // Honorable kills (number in interface, won't update except for login)
|
||||
AcceptSummon = 114, // Accept a summon
|
||||
EarnAchievementPoints = 115, // Earn achievement points
|
||||
RollDisenchant = 116, /*NYI*/ // Roll disenchant and get {#Disenchant Roll}
|
||||
RollAnyDisenchant = 117, /*NYI*/ // Roll any number on disenchant
|
||||
CompletedLFGDungeon = 118, /*NYI*/ // Completed an LFG dungeon
|
||||
CompletedLFGDungeonWithStrangers = 119, // Completed an LFG dungeon with strangers
|
||||
KickInitiatorInLFGDungeon = 120, /*NYI*/ // Kicked in an LFG dungeon (initiator)
|
||||
KickVoterInLFGDungeon = 121, /*NYI*/ // Kicked in an LFG dungeon (voter)
|
||||
KickTargetInLFGDungeon = 122, /*NYI*/ // Kicked in an LFG dungeon (target)
|
||||
AbandonedLFGDungeon = 123, /*NYI*/ // Abandoned an LFG dungeon
|
||||
MoneySpentOnGuildRepair = 124, /*NYI*/ // Guild repair amount spent
|
||||
GuildAttainedLevel = 125, /*NYI*/ // Guild attained level
|
||||
CreatedItemsByCastingSpell = 126, /*NYI*/ // Created items by casting a spell
|
||||
FishInAnyPool = 127, /*NYI*/ // Fish in any pool
|
||||
GuildBankTabsPurchased = 128, /*NYI*/ // Guild bank tabs purchased
|
||||
EarnGuildAchievementPoints = 129, /*NYI*/ // Earn guild achievement points
|
||||
WinAnyBattleground = 130, /*NYI*/ // Win any battleground
|
||||
ParticipateInAnyBattleground = 131, /*NYI*/ // Participate in any battleground
|
||||
EarnBattlegroundRating = 132, /*NYI*/ // Earn a battleground rating
|
||||
GuildTabardCreated = 133, /*NYI*/ // Guild tabard created
|
||||
CompleteQuestsCountForGuild = 134, /*NYI*/ // Count of complete quests for guild (Quest count)
|
||||
HonorableKillsForGuild = 135, /*NYI*/ // Honorable kills for Guild
|
||||
KillAnyCreatureForGuild = 136, /*NYI*/ // Kill any NPC for Guild
|
||||
GroupedTankLeftEarlyInLFGDungeon = 137, /*NYI*/ // Grouped tank left early in an LFG dungeon
|
||||
CompleteGuildChallenge = 138, /*NYI*/ // Complete a "{$Guild Challenge}" guild challenge
|
||||
CompleteAnyGuildChallenge = 139, /*NYI*/ // Complete any guild challenge
|
||||
MarkedAFKInBattleground = 140, /*NYI*/ // Marked AFK in a battleground
|
||||
RemovedAFKInBattleground = 141, /*NYI*/ // Removed for being AFK in a battleground
|
||||
StartAnyBattleground = 142, /*NYI*/ // Start any battleground (AFK tracking)
|
||||
CompleteAnyBattleground = 143, /*NYI*/ // Complete any battleground (AFK tracking)
|
||||
MarkedSomeoneAFKInBattleground = 144, /*NYI*/ // Marked someone for being AFK in a battleground
|
||||
CompletedLFRDungeon = 145, /*NYI*/ // Completed an LFR dungeon
|
||||
AbandonedLFRDungeon = 146, /*NYI*/ // Abandoned an LFR dungeon
|
||||
KickInitiatorInLFRDungeon = 147, /*NYI*/ // Kicked in an LFR dungeon (initiator)
|
||||
KickVoterInLFRDungeon = 148, /*NYI*/ // Kicked in an LFR dungeon (voter)
|
||||
KickTargetInLFRDungeon = 149, /*NYI*/ // Kicked in an LFR dungeon (target)
|
||||
GroupedTankLeftEarlyInLFRDungeon = 150, /*NYI*/ // Grouped tank left early in an LFR dungeon
|
||||
CompleteAnyScenario = 151, /*NYI*/ // Complete a Scenario
|
||||
CompleteScenario = 152, /*NYI*/ // Complete scenario "{Scenario}"
|
||||
EnterAreaTriggerWithActionSet = 153, /*NYI*/ // Enter area trigger "{AreaTriggerActionSet}"
|
||||
LeaveAreaTriggerWithActionSet = 154, /*NYI*/ // Leave area trigger "{AreaTriggerActionSet}"
|
||||
LearnedNewPet = 155, // (Account Only) Learned a new pet
|
||||
UniquePetsOwned = 156, // (Account Only) Unique pets owned
|
||||
AccountObtainPetThroughBattle = 157, /*NYI*/ // (Account Only) Obtain a pet through battle
|
||||
WinPetBattle = 158, /*NYI*/ // Win a pet battle
|
||||
LosePetBattle = 159, /*NYI*/ // Lose a pet battle
|
||||
BattlePetReachLevel = 160, /*NYI*/ // (Account Only) Battle pet has reached level {#Level}
|
||||
PlayerObtainPetThroughBattle = 161, /*NYI*/ // (Player) Obtain a pet through battle
|
||||
ActivelyEarnPetLevel = 162, /*NYI*/ // (Player) Actively earn level {#Level} with a pet by a player
|
||||
EnterArea = 163, /*NYI*/ // Enter Map Area "{AreaTable}"
|
||||
LeaveArea = 164, /*NYI*/ // Leave Map Area "{AreaTable}"
|
||||
DefeatDungeonEncounter = 165, /*NYI*/ // Defeat Encounter "{DungeonEncounter}"
|
||||
PlaceAnyGarrisonBuilding = 166, /*NYI*/ // Garrison Building: Place any
|
||||
PlaceGarrisonBuilding = 167, // Garrison Building: Place "{GarrBuilding}"
|
||||
ActivateAnyGarrisonBuilding = 168, // Garrison Building: Activate any
|
||||
ActivateGarrisonBuilding = 169, /*NYI*/ // Garrison Building: Activate "{GarrBuilding}"
|
||||
UpgradeGarrison = 170, /*NYI*/ // Garrison: Upgrade Garrison to Tier "{#Tier:2,3}"
|
||||
StartAnyGarrisonMissionWithFollowerType = 171, /*NYI*/ // Garrison Mission: Start any with FollowerType "{GarrFollowerType}"
|
||||
StartGarrisonMission = 172, /*NYI*/ // Garrison Mission: Start "{GarrMission}"
|
||||
SucceedAnyGarrisonMissionWithFollowerType = 173, /*NYI*/ // Garrison Mission: Succeed any with FollowerType "{GarrFollowerType}"
|
||||
SucceedGarrisonMission = 174, /*NYI*/ // Garrison Mission: Succeed "{GarrMission}"
|
||||
RecruitAnyGarrisonFollower = 175, /*NYI*/ // Garrison Follower: Recruit any
|
||||
RecruitGarrisonFollower = 176, // Garrison Follower: Recruit "{GarrFollower}"
|
||||
AcquireGarrison = 177, /*NYI*/ // Garrison: Acquire a Garrison
|
||||
LearnAnyGarrisonBlueprint = 178, /*NYI*/ // Garrison Blueprint: Learn any
|
||||
LearnGarrisonBlueprint = 179, /*NYI*/ // Garrison Blueprint: Learn "{GarrBuilding}"
|
||||
LearnAnyGarrisonSpecialization = 180, /*NYI*/ // Garrison Specialization: Learn any
|
||||
LearnGarrisonSpecialization = 181, /*NYI*/ // Garrison Specialization: Learn "{GarrSpecialization}"
|
||||
CollectGarrisonShipment = 182, /*NYI*/ // Garrison Shipment of type "{CharShipmentContainer}" collected
|
||||
ItemLevelChangedForGarrisonFollower = 183, /*NYI*/ // Garrison Follower: Item Level Changed
|
||||
LevelChangedForGarrisonFollower = 184, /*NYI*/ // Garrison Follower: Level Changed
|
||||
LearnToy = 185, /*NYI*/ // Learn Toy "{Item}"
|
||||
LearnAnyToy = 186, /*NYI*/ // Learn Any Toy
|
||||
QualityUpgradedForGarrisonFollower = 187, /*NYI*/ // Garrison Follower: Quality Upgraded
|
||||
LearnHeirloom = 188, /*NYI*/ // Learn Heirloom "{Item}"
|
||||
LearnAnyHeirloom = 189, /*NYI*/ // Learn Any Heirloom
|
||||
EarnArtifactXP = 190, /*NYI*/ // Earn Artifact XP
|
||||
AnyArtifactPowerRankPurchased = 191, /*NYI*/ // Artifact Power Ranks Purchased
|
||||
LearnTransmog = 192, /*NYI*/ // Learn Transmog "{ItemModifiedAppearance}"
|
||||
LearnAnyTransmog = 193, /*NYI*/ // Learn Any Transmog
|
||||
HonorLevelIncrease = 194, // (Player) honor level increase
|
||||
PrestigeLevelIncrease = 195, /*NYI*/ // (Player) prestige level increase
|
||||
ActivelyReachLevel = 196, // Actively level to level {#Level}
|
||||
CompleteResearchAnyGarrisonTalent = 197, /*NYI*/ // Garrison Talent: Complete Research Any
|
||||
CompleteResearchGarrisonTalent = 198, /*NYI*/ // Garrison Talent: Complete Research "{GarrTalent}"
|
||||
LearnAnyTransmogInSlot = 199, // Learn Any Transmog in Slot "{$Equip Slot}"
|
||||
RecruitAnyGarrisonTroop = 200, /*NYI*/ // Recruit any Garrison Troop
|
||||
StartResearchAnyGarrisonTalent = 201, /*NYI*/ // Garrison Talent: Start Research Any
|
||||
StartResearchGarrisonTalent = 202, /*NYI*/ // Garrison Talent: Start Research "{GarrTalent}"
|
||||
CompleteAnyWorldQuest = 203, /*NYI*/ // Complete Any Quest
|
||||
EarnLicense = 204, /*NYI*/ // Earn License "{BattlePayDeliverable}" (does NOT work for box level)
|
||||
CollectTransmogSetFromGroup = 205, // (Account Only) Collect a Transmog Set from Group "{TransmogSetGroup}"
|
||||
ParagonLevelIncreaseWithFaction = 206, /*NYI*/ // (Player) paragon level increase with faction "{Faction}"
|
||||
PlayerHasEarnedHonor = 207, /*NYI*/ // Player has earned honor
|
||||
KillCreatureScenario = 208, /*NYI*/ // Kill NPC "{Creature}" (scenario criteria only, do not use for player)
|
||||
ArtifactPowerRankPurchased = 209, /*NYI*/ // Artifact Power Rank of "{ArtifactPower}" Purchased
|
||||
ChooseAnyRelicTalent = 210, /*NYI*/ // Choose any Relic Talent
|
||||
ChooseRelicTalent = 211, /*NYI*/ // Choose Relic Talent "{ArtifactPower}"
|
||||
EarnExpansionLevel = 212, /*NYI*/ // Earn Expansion Level "{$Expansion Level}"
|
||||
AccountHonorLevelReached = 213, /*NYI*/ // (Account Only) honor level {#Level} reached
|
||||
EarnArtifactXPForAzeriteItem = 214, // Earn Artifact experience for Azerite Item
|
||||
AzeriteLevelReached = 215, // Azerite Level {#Azerite Level} reached
|
||||
MythicPlusCompleted = 216, /*NYI*/ // Mythic Plus Completed
|
||||
ScenarioGroupCompleted = 217, /*NYI*/ // Scenario Group Completed
|
||||
CompleteAnyReplayQuest = 218, // Complete Any Replay Quest
|
||||
BuyItemsFromVendors = 219, // Buy items from vendors
|
||||
SellItemsToVendors = 220, // Sell items to vendors
|
||||
ReachMaxLevel = 221, /*NYI*/ // Reach Max Level
|
||||
MemorizeSpell = 222, /*NYI*/ // Memorize Spell "{Spell}"
|
||||
LearnTransmogIllusion = 223, /*NYI*/ // Learn Transmog Illusion
|
||||
LearnAnyTransmogIllusion = 224, /*NYI*/ // Learn Any Transmog Illusion
|
||||
EnterTopLevelArea = 225, // Enter Top Level Map Area "{AreaTable}"
|
||||
LeaveTopLevelArea = 226, /*NYI*/ // Leave Top Level Map Area "{AreaTable}"
|
||||
SocketGarrisonTalent = 227, /*NYI*/ // Socket Garrison Talent {GarrTalent}
|
||||
SocketAnySoulbindConduit = 228, /*NYI*/ // Socket Any Soulbind Conduit
|
||||
ObtainAnyItemWithCurrencyValue = 229, /*NYI*/ // Obtain Any Item With Currency Value "{CurrencyTypes}"
|
||||
MythicPlusRatingAttained = 230, /*NYI*/ // (Player) Mythic+ Rating "{#DungeonScore}" attained
|
||||
SpentTalentPoint = 231, /*NYI*/ // (Player) spent talent point
|
||||
|
||||
#define CRITERIA_TYPE_TOTAL 232
|
||||
Count
|
||||
};
|
||||
|
||||
enum class CriteriaTreeFlags : uint16
|
||||
{
|
||||
|
||||
@@ -1450,7 +1450,7 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId, Map const*
|
||||
|
||||
// Update achievements
|
||||
if (dungeon->difficulty == DIFFICULTY_HEROIC)
|
||||
player->UpdateCriteria(CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS, 1);
|
||||
player->UpdateCriteria(CriteriaType::CompletedLFGDungeonWithStrangers, 1);
|
||||
|
||||
LfgReward const* reward = GetRandomDungeonReward(rDungeonId, player->getLevel());
|
||||
if (!reward)
|
||||
|
||||
@@ -2046,7 +2046,7 @@ void GameObject::Use(Unit* user)
|
||||
Player* player = user->ToPlayer();
|
||||
|
||||
player->SendLoot(GetGUID(), LOOT_FISHINGHOLE);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_FISH_IN_GAMEOBJECT, GetGOInfo()->entry);
|
||||
player->UpdateCriteria(CriteriaType::CatchFishInFishingHole, GetGOInfo()->entry);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -258,7 +258,7 @@ void AzeriteItem::GiveXP(uint64 xp)
|
||||
|
||||
SetUpdateFieldValue(m_values.ModifyValue(&AzeriteItem::m_azeriteItemData).ModifyValue(&UF::AzeriteItemData::Xp), currentXP);
|
||||
|
||||
owner->UpdateCriteria(CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED, xp);
|
||||
owner->UpdateCriteria(CriteriaType::EarnArtifactXPForAzeriteItem, xp);
|
||||
|
||||
// changing azerite level changes item level, need to update stats
|
||||
if (m_azeriteItemData->Level != level)
|
||||
@@ -268,7 +268,7 @@ void AzeriteItem::GiveXP(uint64 xp)
|
||||
|
||||
SetUpdateFieldValue(m_values.ModifyValue(&AzeriteItem::m_azeriteItemData).ModifyValue(&UF::AzeriteItemData::Level), level);
|
||||
UnlockDefaultMilestones();
|
||||
owner->UpdateCriteria(CRITERIA_TYPE_HEART_OF_AZEROTH_LEVEL_REACHED, level);
|
||||
owner->UpdateCriteria(CriteriaType::AzeriteLevelReached, level);
|
||||
|
||||
if (IsEquipped())
|
||||
owner->_ApplyItemBonuses(this, GetSlot(), true);
|
||||
|
||||
@@ -799,13 +799,13 @@ void CollectionMgr::AddItemAppearance(ItemModifiedAppearanceEntry const* itemMod
|
||||
{
|
||||
int32 transmogSlot = ItemTransmogrificationSlots[item->InventoryType];
|
||||
if (transmogSlot >= 0)
|
||||
_owner->GetPlayer()->UpdateCriteria(CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT, transmogSlot, itemModifiedAppearance->ID);
|
||||
_owner->GetPlayer()->UpdateCriteria(CriteriaType::LearnAnyTransmogInSlot, transmogSlot, itemModifiedAppearance->ID);
|
||||
}
|
||||
|
||||
if (std::vector<TransmogSetEntry const*> const* sets = sDB2Manager.GetTransmogSetsForItemModifiedAppearance(itemModifiedAppearance->ID))
|
||||
for (TransmogSetEntry const* set : *sets)
|
||||
if (IsSetCompleted(set->ID))
|
||||
_owner->GetPlayer()->UpdateCriteria(CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED, set->TransmogSetGroupID);
|
||||
_owner->GetPlayer()->UpdateCriteria(CriteriaType::CollectTransmogSetFromGroup, set->TransmogSetGroupID);
|
||||
}
|
||||
|
||||
void CollectionMgr::AddTemporaryAppearance(ObjectGuid const& itemGuid, ItemModifiedAppearanceEntry const* itemModifiedAppearance)
|
||||
|
||||
@@ -180,7 +180,7 @@ inline void KillRewarder::_RewardKillCredit(Player* player)
|
||||
if (Creature* target = _victim->ToCreature())
|
||||
{
|
||||
player->KilledMonster(target->GetCreatureTemplate(), target->GetGUID());
|
||||
player->UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE_TYPE, target->GetCreatureType(), 1, 0, target);
|
||||
player->UpdateCriteria(CriteriaType::KillAnyCreature, target->GetCreatureType(), 1, 0, target);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ void KillRewarder::_RewardGroup()
|
||||
if (_killer == member || member->IsAtGroupRewardDistance(_victim))
|
||||
{
|
||||
_RewardPlayer(member, isDungeon);
|
||||
member->UpdateCriteria(CRITERIA_TYPE_SPECIAL_PVP_KILL, 1, 0, 0, _victim);
|
||||
member->UpdateCriteria(CriteriaType::KillPlayer, 1, 0, 0, _victim);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -282,9 +282,9 @@ void KillRewarder::Reward()
|
||||
|
||||
if (ObjectGuid::LowType guildId = victim->GetMap()->GetOwnerGuildId())
|
||||
if (Guild* guild = sGuildMgr->GetGuildById(guildId))
|
||||
guild->UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE, victim->GetEntry(), 1, 0, victim, _killer);
|
||||
guild->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, _killer);
|
||||
|
||||
if (Scenario* scenario = victim->GetScenario())
|
||||
scenario->UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE, victim->GetEntry(), 1, 0, victim, _killer);
|
||||
scenario->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, _killer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -683,7 +683,7 @@ uint32 Player::EnvironmentalDamage(EnviromentalDamage type, uint32 damage)
|
||||
SendDurabilityLoss(this, 10);
|
||||
}
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_DEATHS_FROM, 1, type);
|
||||
UpdateCriteria(CriteriaType::DieFromEnviromentalDamage, 1, type);
|
||||
}
|
||||
|
||||
return final_damage;
|
||||
@@ -1259,9 +1259,9 @@ void Player::setDeathState(DeathState s)
|
||||
|
||||
InitializeSelfResurrectionSpells();
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_DEATH_AT_MAP, 1);
|
||||
UpdateCriteria(CRITERIA_TYPE_DEATH, 1);
|
||||
UpdateCriteria(CRITERIA_TYPE_DEATH_IN_DUNGEON, 1);
|
||||
UpdateCriteria(CriteriaType::DieOnMap, 1);
|
||||
UpdateCriteria(CriteriaType::DieAnywhere, 1);
|
||||
UpdateCriteria(CriteriaType::DieInInstance, 1);
|
||||
|
||||
// reset all death criterias
|
||||
ResetCriteria(CriteriaFailEvent::Death, 0);
|
||||
@@ -2377,8 +2377,8 @@ void Player::GiveLevel(uint8 level)
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_REACH_LEVEL);
|
||||
UpdateCriteria(CRITERIA_TYPE_ACTIVELY_REACH_LEVEL, level);
|
||||
UpdateCriteria(CriteriaType::ReachLevel);
|
||||
UpdateCriteria(CriteriaType::ActivelyReachLevel, level);
|
||||
|
||||
PushQuests();
|
||||
|
||||
@@ -3051,11 +3051,11 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent
|
||||
// not ranked skills
|
||||
for (SkillLineAbilityMap::const_iterator _spell_idx = skill_bounds.first; _spell_idx != skill_bounds.second; ++_spell_idx)
|
||||
{
|
||||
UpdateCriteria(CRITERIA_TYPE_LEARN_SKILL_LINE, _spell_idx->second->SkillLine);
|
||||
UpdateCriteria(CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS, _spell_idx->second->SkillLine);
|
||||
UpdateCriteria(CriteriaType::LearnTradeskillSkillLine, _spell_idx->second->SkillLine);
|
||||
UpdateCriteria(CriteriaType::LearnSpellFromSkillLine, _spell_idx->second->SkillLine);
|
||||
}
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_LEARN_SPELL, spellId);
|
||||
UpdateCriteria(CriteriaType::LearnOrKnowSpell, spellId);
|
||||
}
|
||||
|
||||
// needs to be when spell is already learned, to prevent infinite recursion crashes
|
||||
@@ -3068,7 +3068,7 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent
|
||||
if (entry->SummonSpellID == int32(spellId) && GetSession()->GetBattlePetMgr()->GetPetCount(entry->ID) == 0)
|
||||
{
|
||||
GetSession()->GetBattlePetMgr()->AddPet(entry->ID, entry->CreatureID, BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID));
|
||||
UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET_COUNT);
|
||||
UpdateCriteria(CriteriaType::UniquePetsOwned);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3453,8 +3453,8 @@ bool Player::ResetTalents(bool noCost)
|
||||
if (!noCost)
|
||||
{
|
||||
ModifyMoney(-(int64)cost);
|
||||
UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS, cost);
|
||||
UpdateCriteria(CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS, 1);
|
||||
UpdateCriteria(CriteriaType::MoneySpentOnRespecs, cost);
|
||||
UpdateCriteria(CriteriaType::TotalRespecs, 1);
|
||||
|
||||
SetTalentResetCost(cost);
|
||||
SetTalentResetTime(GameTime::GetGameTime());
|
||||
@@ -5588,7 +5588,7 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step)
|
||||
}
|
||||
|
||||
UpdateSkillEnchantments(skillId, value, new_value);
|
||||
UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, skillId);
|
||||
UpdateCriteria(CriteriaType::SkillRaised, skillId);
|
||||
TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '%s' (%s), SkillID: %u, Chance: %3.1f%% taken",
|
||||
GetName().c_str(), GetGUID().ToString().c_str(), skillId, chance / 10.0f);
|
||||
return true;
|
||||
@@ -5684,8 +5684,8 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal)
|
||||
if (newVal > currVal)
|
||||
UpdateSkillEnchantments(id, currVal, newVal);
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, id);
|
||||
UpdateCriteria(CRITERIA_TYPE_LEARN_SKILL_LEVEL, id);
|
||||
UpdateCriteria(CriteriaType::SkillRaised, id);
|
||||
UpdateCriteria(CriteriaType::AchieveSkillStep, id);
|
||||
|
||||
// update skill state
|
||||
if (itr->second.uState == SKILL_UNCHANGED)
|
||||
@@ -5807,8 +5807,8 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal)
|
||||
|
||||
if (newVal)
|
||||
{
|
||||
UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, id);
|
||||
UpdateCriteria(CRITERIA_TYPE_LEARN_SKILL_LEVEL, id);
|
||||
UpdateCriteria(CriteriaType::SkillRaised, id);
|
||||
UpdateCriteria(CriteriaType::AchieveSkillStep, id);
|
||||
|
||||
// temporary bonuses
|
||||
for (AuraEffect* effect : GetAuraEffectsByType(SPELL_AURA_MOD_SKILL))
|
||||
@@ -6178,7 +6178,7 @@ void Player::CheckAreaExploreAndOutdoor()
|
||||
{
|
||||
SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ExploredZones, offset), val);
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_EXPLORE_AREA, GetAreaId());
|
||||
UpdateCriteria(CriteriaType::RevealWorldMapOverlay, GetAreaId());
|
||||
|
||||
if (Optional<ContentTuningLevels> areaLevels = sDB2Manager.GetContentTuningData(areaEntry->ContentTuningID, m_playerData->CtrOptions->ContentTuningConditionMask))
|
||||
{
|
||||
@@ -6563,11 +6563,11 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto
|
||||
ApplyModUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TodayHonorableKills), 1, true);
|
||||
// and those in a lifetime
|
||||
ApplyModUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::LifetimeHonorableKills), 1, true);
|
||||
UpdateCriteria(CRITERIA_TYPE_EARN_HONORABLE_KILL);
|
||||
UpdateCriteria(CRITERIA_TYPE_HK_CLASS, victim->getClass());
|
||||
UpdateCriteria(CRITERIA_TYPE_HK_RACE, victim->getRace());
|
||||
UpdateCriteria(CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, GetAreaId());
|
||||
UpdateCriteria(CRITERIA_TYPE_HONORABLE_KILL, 1, 0, 0, victim);
|
||||
UpdateCriteria(CriteriaType::HonorableKills);
|
||||
UpdateCriteria(CriteriaType::DeliverKillingBlowToClass, victim->getClass());
|
||||
UpdateCriteria(CriteriaType::DeliverKillingBlowToRace, victim->getRace());
|
||||
UpdateCriteria(CriteriaType::PVPKillInArea, GetAreaId());
|
||||
UpdateCriteria(CriteriaType::EarnHonorableKill, 1, 0, 0, victim);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -6712,7 +6712,7 @@ void Player::SetHonorLevel(uint8 level)
|
||||
SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::HonorLevel), level);
|
||||
UpdateHonorNextLevel();
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_HONOR_LEVEL_REACHED);
|
||||
UpdateCriteria(CriteriaType::HonorLevelIncrease);
|
||||
}
|
||||
|
||||
void Player::UpdateHonorNextLevel()
|
||||
@@ -6979,7 +6979,7 @@ void Player::ModifyCurrency(uint32 id, int32 count, bool printLog/* = true*/, bo
|
||||
itr->second.TrackedQuantity = newTrackedCount;
|
||||
|
||||
if (count > 0)
|
||||
UpdateCriteria(CRITERIA_TYPE_CURRENCY, id, count);
|
||||
UpdateCriteria(CriteriaType::CurrencyGained, id, count);
|
||||
|
||||
WorldPackets::Misc::SetCurrency packet;
|
||||
packet.Type = id;
|
||||
@@ -7186,7 +7186,7 @@ void Player::UpdateArea(uint32 newArea)
|
||||
|
||||
PushQuests();
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_TRAVELLED_TO_AREA, newArea);
|
||||
UpdateCriteria(CriteriaType::EnterTopLevelArea, newArea);
|
||||
}
|
||||
|
||||
void Player::UpdateZone(uint32 newZone, uint32 newArea)
|
||||
@@ -7417,8 +7417,8 @@ void Player::DuelComplete(DuelCompleteType type)
|
||||
}
|
||||
break;
|
||||
case DUEL_WON:
|
||||
UpdateCriteria(CRITERIA_TYPE_LOSE_DUEL, 1);
|
||||
duel->opponent->UpdateCriteria(CRITERIA_TYPE_WIN_DUEL, 1);
|
||||
UpdateCriteria(CriteriaType::LoseDuel, 1);
|
||||
duel->opponent->UpdateCriteria(CriteriaType::WinDuel, 1);
|
||||
|
||||
// Credit for quest Death's Challenge
|
||||
if (getClass() == CLASS_DEATH_KNIGHT && duel->opponent->GetQuestStatus(12733) == QUEST_STATUS_INCOMPLETE)
|
||||
@@ -12043,8 +12043,8 @@ Item* Player::StoreNewItem(ItemPosCountVec const& pos, uint32 itemId, bool updat
|
||||
if (item)
|
||||
{
|
||||
ItemAddedQuestCheck(itemId, count);
|
||||
UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, itemId, count);
|
||||
UpdateCriteria(CRITERIA_TYPE_OWN_ITEM, itemId, 1);
|
||||
UpdateCriteria(CriteriaType::ObtainAnyItem, itemId, count);
|
||||
UpdateCriteria(CriteriaType::AcquireItem, itemId, 1);
|
||||
|
||||
item->AddItemFlag(ITEM_FIELD_FLAG_NEW_ITEM);
|
||||
|
||||
@@ -12233,7 +12233,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_OBTAIN_ANY_ITEM, item, 1);
|
||||
UpdateCriteria(CriteriaType::ObtainAnyItem, item, 1);
|
||||
return EquipItem(pos, pItem, update);
|
||||
}
|
||||
|
||||
@@ -12347,8 +12347,8 @@ Item* Player::EquipItem(uint16 pos, Item* pItem, bool update)
|
||||
CheckTitanGripPenalty();
|
||||
|
||||
// only for full equip instead adding to stack
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry());
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT, slot, pItem->GetEntry());
|
||||
UpdateCriteria(CriteriaType::EquipItem, pItem->GetEntry());
|
||||
UpdateCriteria(CriteriaType::EquipItemInSlot, slot, pItem->GetEntry());
|
||||
|
||||
UpdateAverageItemLevelEquipped();
|
||||
|
||||
@@ -12475,8 +12475,8 @@ void Player::QuickEquipItem(uint16 pos, Item* pItem)
|
||||
if (slot == EQUIPMENT_SLOT_MAINHAND || slot == EQUIPMENT_SLOT_OFFHAND)
|
||||
CheckTitanGripPenalty();
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry());
|
||||
UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT, slot, pItem->GetEntry());
|
||||
UpdateCriteria(CriteriaType::EquipItem, pItem->GetEntry());
|
||||
UpdateCriteria(CriteriaType::EquipItemInSlot, slot, pItem->GetEntry());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12635,7 +12635,7 @@ void Player::MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool
|
||||
{
|
||||
// update quest counters
|
||||
ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount());
|
||||
UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, pItem->GetEntry(), pItem->GetCount());
|
||||
UpdateCriteria(CriteriaType::ObtainAnyItem, pItem->GetEntry(), pItem->GetCount());
|
||||
|
||||
// store item
|
||||
Item* pLastItem = StoreItem(dest, pItem, update);
|
||||
@@ -15702,7 +15702,7 @@ void Player::RewardQuest(Quest const* quest, LootItemType rewardType, uint32 rew
|
||||
ModifyMoney(moneyRew);
|
||||
|
||||
if (moneyRew > 0)
|
||||
UpdateCriteria(CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, uint32(moneyRew));
|
||||
UpdateCriteria(CriteriaType::MoneyEarnedFromQuesting, uint32(moneyRew));
|
||||
}
|
||||
|
||||
// honor reward
|
||||
@@ -15733,8 +15733,8 @@ void Player::RewardQuest(Quest const* quest, LootItemType rewardType, uint32 rew
|
||||
SetDailyQuestStatus(quest_id);
|
||||
if (quest->IsDaily())
|
||||
{
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_DAILY_QUEST, quest_id);
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY, quest_id);
|
||||
UpdateCriteria(CriteriaType::CompleteDailyQuest, quest_id);
|
||||
UpdateCriteria(CriteriaType::CompleteAnyDailyQuestPerDay, quest_id);
|
||||
}
|
||||
}
|
||||
else if (quest->IsWeekly())
|
||||
@@ -15782,10 +15782,10 @@ void Player::RewardQuest(Quest const* quest, LootItemType rewardType, uint32 rew
|
||||
}
|
||||
|
||||
if (quest->GetZoneOrSort() > 0)
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE, quest->GetQuestId());
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST_COUNT);
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST, quest->GetQuestId());
|
||||
UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE, 1);
|
||||
UpdateCriteria(CriteriaType::CompleteQuestsInZone, quest->GetQuestId());
|
||||
UpdateCriteria(CriteriaType::CompleteQuestsCount);
|
||||
UpdateCriteria(CriteriaType::CompleteQuest, quest->GetQuestId());
|
||||
UpdateCriteria(CriteriaType::CompleteAnyReplayQuest, 1);
|
||||
|
||||
// make full db save
|
||||
SaveToDB(false);
|
||||
@@ -16870,7 +16870,7 @@ void Player::KilledMonsterCredit(uint32 entry, ObjectGuid guid /*= ObjectGuid::E
|
||||
}
|
||||
|
||||
StartCriteriaTimer(CriteriaStartEvent::KillNPC, real_entry); // MUST BE CALLED FIRST
|
||||
UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE, real_entry, addKillCount, 0, killed);
|
||||
UpdateCriteria(CriteriaType::KillCreature, real_entry, addKillCount, 0, killed);
|
||||
|
||||
UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_MONSTER, entry, 1, guid);
|
||||
}
|
||||
@@ -22695,7 +22695,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
|
||||
}
|
||||
|
||||
//Checks and preparations done, DO FLIGHT
|
||||
UpdateCriteria(CRITERIA_TYPE_FLIGHT_PATHS_TAKEN, 1);
|
||||
UpdateCriteria(CriteriaType::BuyTaxi, 1);
|
||||
|
||||
// prevent stealth flight
|
||||
//RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting);
|
||||
@@ -22706,14 +22706,14 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
|
||||
ASSERT(lastPathNode);
|
||||
m_taxi.ClearTaxiDestinations();
|
||||
ModifyMoney(-int64(totalcost));
|
||||
UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING, totalcost);
|
||||
UpdateCriteria(CriteriaType::MoneySpentOnTaxis, totalcost);
|
||||
TeleportTo(lastPathNode->ContinentID, lastPathNode->Pos.X, lastPathNode->Pos.Y, lastPathNode->Pos.Z, GetOrientation());
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
ModifyMoney(-int64(firstcost));
|
||||
UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING, firstcost);
|
||||
UpdateCriteria(CriteriaType::MoneySpentOnTaxis, firstcost);
|
||||
GetSession()->SendActivateTaxiReply(ERR_TAXIOK);
|
||||
GetSession()->SendDoFlight(mount_display_id, sourcepath);
|
||||
}
|
||||
@@ -23290,7 +23290,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin
|
||||
if (Guild* guild = GetGuild())
|
||||
guild->AddGuildNews(GUILD_NEWS_ITEM_PURCHASED, GetGUID(), 0, item);
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR, 1);
|
||||
UpdateCriteria(CriteriaType::BuyItemsFromVendors, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -24062,7 +24062,7 @@ void Player::SetMoney(uint64 value)
|
||||
{
|
||||
MoneyChanged(value);
|
||||
SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::Coinage), value);
|
||||
UpdateCriteria(CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED);
|
||||
UpdateCriteria(CriteriaType::MostMoneyOwned);
|
||||
}
|
||||
|
||||
bool Player::IsQuestRewarded(uint32 quest_id) const
|
||||
@@ -25165,7 +25165,7 @@ void Player::SummonIfPossible(bool agree)
|
||||
|
||||
m_summon_expire = 0;
|
||||
|
||||
UpdateCriteria(CRITERIA_TYPE_ACCEPTED_SUMMONINGS, 1);
|
||||
UpdateCriteria(CriteriaType::AcceptSummon, 1);
|
||||
RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Summon);
|
||||
|
||||
TeleportTo(m_summon_location);
|
||||
@@ -26302,9 +26302,9 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot, AELootResult* aeResult/*
|
||||
if (!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_ANY_ITEM, item->itemid, item->count);
|
||||
UpdateCriteria(CriteriaType::LootItem, item->itemid, item->count);
|
||||
UpdateCriteria(CriteriaType::GetLootByType, item->itemid, item->count, loot->loot_type);
|
||||
UpdateCriteria(CriteriaType::LootAnyItem, item->itemid, item->count);
|
||||
}
|
||||
else
|
||||
aeResult->Add(newitem, item->count, loot->loot_type);
|
||||
@@ -26539,7 +26539,7 @@ void Player::HandleFall(MovementInfo const& movementInfo)
|
||||
|
||||
// recheck alive, might have died of EnvironmentalDamage, avoid cases when player die in fact like Spirit of Redemption case
|
||||
if (IsAlive() && final_damage < original_health)
|
||||
UpdateCriteria(CRITERIA_TYPE_FALL_WITHOUT_DYING, uint32(z_diff*100));
|
||||
UpdateCriteria(CriteriaType::MaxDistFallenWithoutDying, uint32(z_diff*100));
|
||||
}
|
||||
|
||||
//Z given by moveinfo, LastZ, FallTime, WaterZ, MapZ, Damage, Safefall reduction
|
||||
@@ -26589,7 +26589,7 @@ void Player::ResetCriteria(CriteriaFailEvent condition, int32 failAsset, bool ev
|
||||
m_questObjectiveCriteriaMgr->ResetCriteria(condition, failAsset, evenIfCriteriaComplete);
|
||||
}
|
||||
|
||||
void Player::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0*/, uint64 miscValue2 /*= 0*/, uint64 miscValue3 /*= 0*/, WorldObject* ref /*= nullptr*/)
|
||||
void Player::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*/, uint64 miscValue2 /*= 0*/, uint64 miscValue3 /*= 0*/, WorldObject* ref /*= nullptr*/)
|
||||
{
|
||||
m_achievementMgr->UpdateCriteria(type, miscValue1, miscValue2, miscValue3, ref, this);
|
||||
m_questObjectiveCriteriaMgr->UpdateCriteria(type, miscValue1, miscValue2, miscValue3, ref, this);
|
||||
|
||||
@@ -2494,7 +2494,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
bool HasAchieved(uint32 achievementId) const;
|
||||
void ResetAchievements();
|
||||
void ResetCriteria(CriteriaFailEvent condition, int32 failAsset, bool evenIfCriteriaComplete = false);
|
||||
void UpdateCriteria(CriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject* ref = nullptr);
|
||||
void UpdateCriteria(CriteriaType type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject* ref = nullptr);
|
||||
void StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry, uint32 timeLost = 0);
|
||||
void RemoveCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry);
|
||||
void CompletedAchievement(AchievementEntry const* entry);
|
||||
|
||||
@@ -807,13 +807,13 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons
|
||||
if (Battleground* bg = killer->GetBattleground())
|
||||
bg->UpdatePlayerScore(killer, SCORE_DAMAGE_DONE, damage);
|
||||
|
||||
killer->UpdateCriteria(CRITERIA_TYPE_DAMAGE_DONE, health > damage ? damage : health, 0, 0, victim);
|
||||
killer->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HIT_DEALT, damage);
|
||||
killer->UpdateCriteria(CriteriaType::DamageDealt, health > damage ? damage : health, 0, 0, victim);
|
||||
killer->UpdateCriteria(CriteriaType::HighestDamageDone, damage);
|
||||
}
|
||||
}
|
||||
|
||||
if (victim->GetTypeId() == TYPEID_PLAYER)
|
||||
victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HIT_RECEIVED, damage);
|
||||
victim->ToPlayer()->UpdateCriteria(CriteriaType::HighestDamageTaken, damage);
|
||||
|
||||
if (attacker)
|
||||
damage /= victim->GetHealthMultiplierForTarget(attacker);
|
||||
@@ -835,7 +835,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons
|
||||
killed = true;
|
||||
|
||||
if (victim->GetTypeId() == TYPEID_PLAYER && victim != attacker)
|
||||
victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED, health);
|
||||
victim->ToPlayer()->UpdateCriteria(CriteriaType::TotalDamageTaken, health);
|
||||
|
||||
if (damagetype != NODAMAGE && damagetype != SELF_DAMAGE && victim->HasAuraType(SPELL_AURA_SCHOOL_ABSORB_OVERKILL))
|
||||
{
|
||||
@@ -904,7 +904,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons
|
||||
else
|
||||
{
|
||||
if (victim->GetTypeId() == TYPEID_PLAYER)
|
||||
victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED, damage);
|
||||
victim->ToPlayer()->UpdateCriteria(CriteriaType::TotalDamageTaken, damage);
|
||||
|
||||
victim->ModifyHealth(-(int32)damage);
|
||||
|
||||
@@ -6089,16 +6089,16 @@ void Unit::SetCharm(Unit* charm, bool apply)
|
||||
|
||||
// use the actual gain, as the overheal shall not be counted, skip gain 0 (it ignored anyway in to criteria)
|
||||
if (gain)
|
||||
player->UpdateCriteria(CRITERIA_TYPE_HEALING_DONE, gain, 0, 0, victim);
|
||||
player->UpdateCriteria(CriteriaType::HealingDone, gain, 0, 0, victim);
|
||||
|
||||
player->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HEAL_CAST, addhealth);
|
||||
player->UpdateCriteria(CriteriaType::HighestHealCast, addhealth);
|
||||
}
|
||||
}
|
||||
|
||||
if (Player* player = victim->ToPlayer())
|
||||
{
|
||||
player->UpdateCriteria(CRITERIA_TYPE_TOTAL_HEALING_RECEIVED, gain);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED, addhealth);
|
||||
player->UpdateCriteria(CriteriaType::TotalHealReceived, gain);
|
||||
player->UpdateCriteria(CriteriaType::HighestHealReceived, addhealth);
|
||||
}
|
||||
|
||||
if (gain)
|
||||
@@ -10445,7 +10445,7 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId)
|
||||
// and before Spirit of Redemption as it also removes auras
|
||||
if (attacker)
|
||||
if (Player* killerPlayer = attacker->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||
killerPlayer->UpdateCriteria(CRITERIA_TYPE_GET_KILLING_BLOWS, 1, 0, 0, victim);
|
||||
killerPlayer->UpdateCriteria(CriteriaType::DeliveredKillingBlow, 1, 0, 0, victim);
|
||||
|
||||
if (!skipSettingDeathState)
|
||||
{
|
||||
@@ -10578,9 +10578,9 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId)
|
||||
if (attacker && victim->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (attacker->GetTypeId() == TYPEID_UNIT)
|
||||
victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_KILLED_BY_CREATURE, attacker->GetEntry());
|
||||
victim->ToPlayer()->UpdateCriteria(CriteriaType::KilledByCreature, attacker->GetEntry());
|
||||
else if (attacker->GetTypeId() == TYPEID_PLAYER && victim != attacker)
|
||||
victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_KILLED_BY_PLAYER, 1, attacker->ToPlayer()->GetTeam());
|
||||
victim->ToPlayer()->UpdateCriteria(CriteriaType::KilledByPlayer, 1, attacker->ToPlayer()->GetTeam());
|
||||
}
|
||||
|
||||
// Hook for OnPVPKill Event
|
||||
|
||||
@@ -421,7 +421,7 @@ void Garrison::PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId)
|
||||
_owner->SendDirectMessage(buildingRemoved.Write());
|
||||
}
|
||||
|
||||
_owner->UpdateCriteria(CRITERIA_TYPE_PLACE_GARRISON_BUILDING, garrBuildingId);
|
||||
_owner->UpdateCriteria(CriteriaType::PlaceGarrisonBuilding, garrBuildingId);
|
||||
}
|
||||
|
||||
_owner->SendDirectMessage(placeBuildingResult.Write());
|
||||
@@ -495,7 +495,7 @@ void Garrison::ActivateBuilding(uint32 garrPlotInstanceId)
|
||||
buildingActivated.GarrPlotInstanceID = garrPlotInstanceId;
|
||||
_owner->SendDirectMessage(buildingActivated.Write());
|
||||
|
||||
_owner->UpdateCriteria(CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING, plot->BuildingInfo.PacketInfo->GarrBuildingID);
|
||||
_owner->UpdateCriteria(CriteriaType::ActivateAnyGarrisonBuilding, plot->BuildingInfo.PacketInfo->GarrBuildingID);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -530,7 +530,7 @@ void Garrison::AddFollower(uint32 garrFollowerId)
|
||||
addFollowerResult.Follower = follower.PacketInfo;
|
||||
_owner->SendDirectMessage(addFollowerResult.Write());
|
||||
|
||||
_owner->UpdateCriteria(CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER, follower.PacketInfo.DbID);
|
||||
_owner->UpdateCriteria(CriteriaType::RecruitGarrisonFollower, follower.PacketInfo.DbID);
|
||||
}
|
||||
|
||||
Garrison::Follower const* Garrison::GetFollower(uint64 dbId) const
|
||||
|
||||
@@ -1258,7 +1258,7 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap)
|
||||
|
||||
if (player && player->GetSession())
|
||||
{
|
||||
player->UpdateCriteria(CRITERIA_TYPE_ROLL_NEED_ON_LOOT, roll->itemid, maxresul);
|
||||
player->UpdateCriteria(CriteriaType::RollNeed, roll->itemid, maxresul);
|
||||
|
||||
ItemPosCountVec dest;
|
||||
LootItem* item = &(roll->itemSlot >= roll->getLoot()->items.size() ? roll->getLoot()->quest_items[roll->itemSlot - roll->getLoot()->items.size()] : roll->getLoot()->items[roll->itemSlot]);
|
||||
@@ -1322,7 +1322,7 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap)
|
||||
|
||||
if (player && player->GetSession())
|
||||
{
|
||||
player->UpdateCriteria(CRITERIA_TYPE_ROLL_GREED_ON_LOOT, roll->itemid, maxresul);
|
||||
player->UpdateCriteria(CriteriaType::RollGreed, roll->itemid, maxresul);
|
||||
|
||||
LootItem* item = &(roll->itemSlot >= roll->getLoot()->items.size() ? roll->getLoot()->quest_items[roll->itemSlot - roll->getLoot()->items.size()] : roll->getLoot()->items[roll->itemSlot]);
|
||||
|
||||
@@ -1349,7 +1349,7 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap)
|
||||
item->is_looted = true;
|
||||
roll->getLoot()->NotifyItemRemoved(roll->itemSlot);
|
||||
roll->getLoot()->unlootedCount--;
|
||||
player->UpdateCriteria(CRITERIA_TYPE_CAST_SPELL, 13262); // Disenchant
|
||||
player->UpdateCriteria(CriteriaType::CastSpell, 13262); // Disenchant
|
||||
|
||||
ItemDisenchantLootEntry const* disenchant = ASSERT_NOTNULL(roll->GetItemDisenchantLoot(player));
|
||||
|
||||
|
||||
@@ -3521,7 +3521,7 @@ bool Guild::HasAchieved(uint32 achievementId) const
|
||||
return m_achievementMgr.HasAchieved(achievementId);
|
||||
}
|
||||
|
||||
void Guild::UpdateCriteria(CriteriaTypes type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player)
|
||||
void Guild::UpdateCriteria(CriteriaType type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player)
|
||||
{
|
||||
m_achievementMgr.UpdateCriteria(type, miscValue1, miscValue2, miscValue3, ref, player);
|
||||
}
|
||||
|
||||
@@ -841,7 +841,7 @@ class TC_GAME_API Guild
|
||||
void ResetTimes(bool weekly);
|
||||
|
||||
bool HasAchieved(uint32 achievementId) const;
|
||||
void UpdateCriteria(CriteriaTypes type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player);
|
||||
void UpdateCriteria(CriteriaType type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player);
|
||||
|
||||
protected:
|
||||
ObjectGuid::LowType m_id;
|
||||
|
||||
@@ -146,7 +146,7 @@ void WorldSession::HandleAuctionConfirmCommoditiesPurchase(WorldPackets::Auction
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
GetPlayer()->UpdateCriteria(CRITERIA_TYPE_WON_AUCTIONS, 1);
|
||||
GetPlayer()->UpdateCriteria(CriteriaType::AuctionsWon, 1);
|
||||
SendAuctionCommandResult(0, AuctionCommand::PlaceBid, AuctionResult::Ok, throttle.DelayUntilNext);
|
||||
}
|
||||
else
|
||||
@@ -475,7 +475,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPackets::AuctionHouse::AuctionPlac
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
GetPlayer()->UpdateCriteria(CRITERIA_TYPE_HIGHEST_AUCTION_BID, bidAmount);
|
||||
GetPlayer()->UpdateCriteria(CriteriaType::HighestAuctionBid, bidAmount);
|
||||
SendAuctionCommandResult(auctionId, AuctionCommand::PlaceBid, AuctionResult::Ok, throttle.DelayUntilNext);
|
||||
}
|
||||
else
|
||||
@@ -778,7 +778,7 @@ void WorldSession::HandleAuctionSellCommodity(WorldPackets::AuctionHouse::Auctio
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
GetPlayer()->UpdateCriteria(CRITERIA_TYPE_CREATE_AUCTION, 1);
|
||||
GetPlayer()->UpdateCriteria(CriteriaType::ItemsPostedAtAuction, 1);
|
||||
SendAuctionCommandResult(auctionId, AuctionCommand::SellItem, AuctionResult::Ok, throttle.DelayUntilNext);
|
||||
}
|
||||
else
|
||||
@@ -926,7 +926,7 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
GetPlayer()->UpdateCriteria(CRITERIA_TYPE_CREATE_AUCTION, 1);
|
||||
GetPlayer()->UpdateCriteria(CriteriaType::ItemsPostedAtAuction, 1);
|
||||
SendAuctionCommandResult(auctionId, AuctionCommand::SellItem, AuctionResult::Ok, throttle.DelayUntilNext);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -147,7 +147,7 @@ void WorldSession::HandleBuyBankSlotOpcode(WorldPackets::Bank::BuyBankSlot& pack
|
||||
_player->SetBankBagSlotCount(slot);
|
||||
_player->ModifyMoney(-int64(price));
|
||||
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_BUY_BANK_SLOT);
|
||||
_player->UpdateCriteria(CriteriaType::BankSlotsPurchased);
|
||||
}
|
||||
|
||||
void WorldSession::SendShowBank(ObjectGuid guid)
|
||||
|
||||
@@ -1370,7 +1370,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
|
||||
m_playerLoading.Clear();
|
||||
|
||||
// Handle Login-Achievements (should be handled after loading)
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_ON_LOGIN, 1);
|
||||
_player->UpdateCriteria(CriteriaType::Login, 1);
|
||||
|
||||
sScriptMgr->OnPlayerLogin(pCurrChar, firstLogin);
|
||||
|
||||
@@ -1698,7 +1698,7 @@ void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance
|
||||
SendPacket(WorldPackets::Character::BarberShopResult(WorldPackets::Character::BarberShopResult::ResultEnum::Success).Write());
|
||||
|
||||
_player->ModifyMoney(-cost); // it isn't free
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_AT_BARBER, cost);
|
||||
_player->UpdateCriteria(CriteriaType::MoneySpentAtBarberShop, cost);
|
||||
|
||||
if (_player->GetNativeSex() != packet.NewSex)
|
||||
{
|
||||
@@ -1709,7 +1709,7 @@ void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance
|
||||
|
||||
_player->SetCustomizations(Trinity::Containers::MakeIteratorPair(packet.Customizations.begin(), packet.Customizations.end()));
|
||||
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_VISIT_BARBER_SHOP, 1);
|
||||
_player->UpdateCriteria(CriteriaType::GotHaircut, 1);
|
||||
|
||||
_player->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
|
||||
|
||||
@@ -629,7 +629,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet)
|
||||
|
||||
Unit* unit = ObjectAccessor::GetUnit(*_player, packet.Target);
|
||||
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_DO_EMOTE, packet.SoundIndex, 0, 0, unit);
|
||||
_player->UpdateCriteria(CriteriaType::DoEmote, packet.SoundIndex, 0, 0, unit);
|
||||
|
||||
// Send scripted event call
|
||||
if (unit)
|
||||
|
||||
@@ -408,10 +408,10 @@ void WorldSession::HandleLootRoll(WorldPackets::Loot::LootRoll& packet)
|
||||
switch (packet.RollType)
|
||||
{
|
||||
case ROLL_NEED:
|
||||
GetPlayer()->UpdateCriteria(CRITERIA_TYPE_ROLL_NEED, 1);
|
||||
GetPlayer()->UpdateCriteria(CriteriaType::RollAnyNeed, 1);
|
||||
break;
|
||||
case ROLL_GREED:
|
||||
GetPlayer()->UpdateCriteria(CRITERIA_TYPE_ROLL_GREED, 1);
|
||||
GetPlayer()->UpdateCriteria(CriteriaType::RollAnyGreed, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -458,8 +458,8 @@ void WorldSession::HandleSellItemOpcode(WorldPackets::Item::SellItem& packet)
|
||||
return;
|
||||
}
|
||||
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_MONEY_FROM_VENDORS, money);
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR, 1);
|
||||
_player->UpdateCriteria(CriteriaType::MoneyEarnedFromSales, money);
|
||||
_player->UpdateCriteria(CriteriaType::SellItemsToVendors, 1);
|
||||
|
||||
if (packet.Amount < pItem->GetCount()) // need split items
|
||||
{
|
||||
@@ -1201,7 +1201,7 @@ void WorldSession::HandleUseCritterItem(WorldPackets::Item::UseCritterItem& useC
|
||||
if (BattlePetSpeciesEntry const* entry = sSpellMgr->GetBattlePetSpecies(uint32(spellToLearn)))
|
||||
{
|
||||
GetBattlePetMgr()->AddPet(entry->ID, entry->CreatureID, BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID));
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET_COUNT);
|
||||
_player->UpdateCriteria(CriteriaType::UniquePetsOwned);
|
||||
}
|
||||
|
||||
_player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true);
|
||||
|
||||
@@ -135,9 +135,9 @@ void WorldSession::HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& p
|
||||
for (AELootResult::ResultValue const& resultValue : aeResult)
|
||||
{
|
||||
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_ANY_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
player->UpdateCriteria(CriteriaType::LootItem, resultValue.item->GetEntry(), resultValue.count);
|
||||
player->UpdateCriteria(CriteriaType::GetLootByType, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType);
|
||||
player->UpdateCriteria(CriteriaType::LootAnyItem, resultValue.item->GetEntry(), resultValue.count);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -229,7 +229,7 @@ void WorldSession::HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& /*packet
|
||||
uint64 goldMod = CalculatePct(goldPerPlayer, (*i)->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MONEY_GAIN, 1));
|
||||
|
||||
(*i)->ModifyMoney(goldPerPlayer + goldMod);
|
||||
(*i)->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer);
|
||||
(*i)->UpdateCriteria(CriteriaType::MoneyLootedFromCreatures, goldPerPlayer);
|
||||
|
||||
WorldPackets::Loot::LootMoneyNotify packet;
|
||||
packet.Money = goldPerPlayer;
|
||||
@@ -243,7 +243,7 @@ void WorldSession::HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& /*packet
|
||||
uint64 goldMod = CalculatePct(loot->gold, player->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MONEY_GAIN, 1));
|
||||
|
||||
player->ModifyMoney(loot->gold + goldMod);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, loot->gold);
|
||||
player->UpdateCriteria(CriteriaType::MoneyLootedFromCreatures, loot->gold);
|
||||
|
||||
WorldPackets::Loot::LootMoneyNotify packet;
|
||||
packet.Money = loot->gold;
|
||||
@@ -546,9 +546,9 @@ void WorldSession::HandleLootMasterGiveOpcode(WorldPackets::Loot::MasterLootItem
|
||||
for (AELootResult::ResultValue const& resultValue : aeResult)
|
||||
{
|
||||
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_ANY_ITEM, resultValue.item->GetEntry(), resultValue.count);
|
||||
target->UpdateCriteria(CriteriaType::LootItem, resultValue.item->GetEntry(), resultValue.count);
|
||||
target->UpdateCriteria(CriteriaType::GetLootByType, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType);
|
||||
target->UpdateCriteria(CriteriaType::LootAnyItem, resultValue.item->GetEntry(), resultValue.count);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& packet)
|
||||
player->SendMailResult(0, MAIL_SEND, MAIL_OK);
|
||||
|
||||
player->ModifyMoney(-reqmoney);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL, cost);
|
||||
player->UpdateCriteria(CriteriaType::MoneySpentOnPostage, cost);
|
||||
|
||||
bool needItemDelay = false;
|
||||
|
||||
|
||||
@@ -508,7 +508,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove
|
||||
|
||||
_player->SetQuestSlot(packet.Entry, 0);
|
||||
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_QUEST_ABANDONED, 1);
|
||||
_player->UpdateCriteria(CriteriaType::AbandonAnyQuest, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -267,7 +267,7 @@ void WorldSession::HandleGameobjectReportUse(WorldPackets::GameObject::GameObjRe
|
||||
if (go->AI()->OnReportUse(_player))
|
||||
return;
|
||||
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_USE_GAMEOBJECT, go->GetEntry());
|
||||
_player->UpdateCriteria(CriteriaType::UseGameobject, go->GetEntry());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -616,7 +616,7 @@ void InstanceScript::DoSendNotifyToInstance(char const* format, ...)
|
||||
}
|
||||
|
||||
// Update Achievement Criteria for all players in instance
|
||||
void InstanceScript::DoUpdateCriteria(CriteriaTypes type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= nullptr*/)
|
||||
void InstanceScript::DoUpdateCriteria(CriteriaType type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= nullptr*/)
|
||||
{
|
||||
Map::PlayerList const& PlayerList = instance->GetPlayers();
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class ModuleReference;
|
||||
class Player;
|
||||
class Unit;
|
||||
struct InstanceSpawnGroupInfo;
|
||||
enum CriteriaTypes : uint8;
|
||||
enum class CriteriaType : uint8;
|
||||
enum class CriteriaStartEvent : uint8;
|
||||
enum EncounterCreditType : uint8;
|
||||
namespace WorldPackets
|
||||
@@ -220,7 +220,7 @@ class TC_GAME_API InstanceScript : public ZoneScript
|
||||
void DoSendNotifyToInstance(char const* format, ...);
|
||||
|
||||
// Update Achievement Criteria for all players in instance
|
||||
void DoUpdateCriteria(CriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = nullptr);
|
||||
void DoUpdateCriteria(CriteriaType type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = nullptr);
|
||||
|
||||
// Start/Stop Timed Achievement Criteria for all players in instance
|
||||
void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry);
|
||||
|
||||
@@ -165,7 +165,7 @@ bool FlightPathMovementGenerator::DoUpdate(Player* player, uint32 /*diff*/)
|
||||
player->m_taxi.NextTaxiDestination();
|
||||
if (!_pointsForPathSwitch.empty())
|
||||
{
|
||||
player->UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING, _pointsForPathSwitch.front().Cost);
|
||||
player->UpdateCriteria(CriteriaType::MoneySpentOnTaxis, _pointsForPathSwitch.front().Cost);
|
||||
player->ModifyMoney(-_pointsForPathSwitch.front().Cost);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ QuestObjectiveCriteriaMgr::~QuestObjectiveCriteriaMgr()
|
||||
void QuestObjectiveCriteriaMgr::CheckAllQuestObjectiveCriteria(Player* referencePlayer)
|
||||
{
|
||||
// suppress sending packets
|
||||
for (uint32 i = 0; i < CRITERIA_TYPE_TOTAL; ++i)
|
||||
UpdateCriteria(CriteriaTypes(i), 0, 0, 0, nullptr, referencePlayer);
|
||||
for (uint32 i = 0; i < uint32(CriteriaType::Count); ++i)
|
||||
UpdateCriteria(CriteriaType(i), 0, 0, 0, nullptr, referencePlayer);
|
||||
}
|
||||
|
||||
void QuestObjectiveCriteriaMgr::Reset()
|
||||
@@ -335,7 +335,7 @@ std::string QuestObjectiveCriteriaMgr::GetOwnerInfo() const
|
||||
return Trinity::StringFormat("%s %s", _owner->GetGUID().ToString().c_str(), _owner->GetName().c_str());
|
||||
}
|
||||
|
||||
CriteriaList const& QuestObjectiveCriteriaMgr::GetCriteriaByType(CriteriaTypes type, uint32 /*asset*/) const
|
||||
CriteriaList const& QuestObjectiveCriteriaMgr::GetCriteriaByType(CriteriaType type, uint32 /*asset*/) const
|
||||
{
|
||||
return sCriteriaMgr->GetQuestObjectiveCriteriaByType(type);
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ protected:
|
||||
void SendPacket(WorldPacket const* data) const override;
|
||||
|
||||
std::string GetOwnerInfo() const override;
|
||||
CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override;
|
||||
CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override;
|
||||
|
||||
private:
|
||||
Player* _owner;
|
||||
|
||||
@@ -495,11 +495,11 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in
|
||||
if (!factionEntry->FriendshipRepID && !paragonReputation)
|
||||
UpdateRankCounters(old_rank, new_rank);
|
||||
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_KNOWN_FACTIONS, factionEntry->ID);
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_GAIN_REPUTATION, factionEntry->ID);
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_GAIN_EXALTED_REPUTATION, factionEntry->ID);
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_GAIN_REVERED_REPUTATION, factionEntry->ID);
|
||||
_player->UpdateCriteria(CRITERIA_TYPE_GAIN_HONORED_REPUTATION, factionEntry->ID);
|
||||
_player->UpdateCriteria(CriteriaType::TotalFactionsEncountered, factionEntry->ID);
|
||||
_player->UpdateCriteria(CriteriaType::ReputationGained, factionEntry->ID);
|
||||
_player->UpdateCriteria(CriteriaType::TotalExaltedFactions, factionEntry->ID);
|
||||
_player->UpdateCriteria(CriteriaType::TotalReveredFactions, factionEntry->ID);
|
||||
_player->UpdateCriteria(CriteriaType::TotalHonoredFactions, factionEntry->ID);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -59,10 +59,10 @@ void InstanceScenario::SaveToDB()
|
||||
continue;
|
||||
|
||||
Criteria const* criteria = sCriteriaMgr->GetCriteria(iter->first);
|
||||
switch (CriteriaTypes(criteria->Entry->Type))
|
||||
switch (CriteriaType(criteria->Entry->Type))
|
||||
{
|
||||
// Blizzard only appears to store creature kills
|
||||
case CRITERIA_TYPE_KILL_CREATURE:
|
||||
case CriteriaType::KillCreature:
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
@@ -124,10 +124,10 @@ void InstanceScenario::LoadInstanceData(uint32 instanceId)
|
||||
if (criteria->Entry->StartTimer && time_t(date + criteria->Entry->StartTimer) < now)
|
||||
continue;
|
||||
|
||||
switch (CriteriaTypes(criteria->Entry->Type))
|
||||
switch (CriteriaType(criteria->Entry->Type))
|
||||
{
|
||||
// Blizzard appears to only stores creatures killed progress for unknown reasons. Either technical shortcoming or intentional
|
||||
case CRITERIA_TYPE_KILL_CREATURE:
|
||||
case CriteriaType::KillCreature:
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
|
||||
@@ -321,7 +321,7 @@ std::vector<WorldPackets::Achievement::CriteriaProgress> Scenario::GetCriteriasP
|
||||
return criteriasProgress;
|
||||
}
|
||||
|
||||
CriteriaList const& Scenario::GetCriteriaByType(CriteriaTypes type, uint32 /*asset*/) const
|
||||
CriteriaList const& Scenario::GetCriteriaByType(CriteriaType type, uint32 /*asset*/) const
|
||||
{
|
||||
return sCriteriaMgr->GetScenarioCriteriaByType(type);
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ class TC_GAME_API Scenario : public CriteriaHandler
|
||||
std::vector<WorldPackets::Scenario::BonusObjectiveData> GetBonusObjectivesData();
|
||||
std::vector<WorldPackets::Achievement::CriteriaProgress> GetCriteriasProgress();
|
||||
|
||||
CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override;
|
||||
CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override;
|
||||
ScenarioData const* _data;
|
||||
|
||||
private:
|
||||
|
||||
@@ -2728,14 +2728,14 @@ SpellMissInfo Spell::PreprocessSpellHit(Unit* unit, TargetInfo& hitInfo)
|
||||
if (Player* player = unit->ToPlayer())
|
||||
{
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::BeSpellTarget, m_spellInfo->Id);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, m_spellInfo->Id, 0, 0, m_caster);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET2, m_spellInfo->Id);
|
||||
player->UpdateCriteria(CriteriaType::BeSpellTarget, m_spellInfo->Id, 0, 0, m_caster);
|
||||
player->UpdateCriteria(CriteriaType::GainAura, m_spellInfo->Id);
|
||||
}
|
||||
|
||||
if (Player* player = m_caster->ToPlayer())
|
||||
{
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::CastSpell, m_spellInfo->Id);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_CAST_SPELL2, m_spellInfo->Id, 0, 0, unit);
|
||||
player->UpdateCriteria(CriteriaType::LandTargetedSpellOnTarget, m_spellInfo->Id, 0, 0, unit);
|
||||
}
|
||||
|
||||
if (m_caster != unit)
|
||||
@@ -3435,10 +3435,10 @@ void Spell::_cast(bool skipCheck)
|
||||
if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_ITEM) && m_CastItem)
|
||||
{
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::UseItem, m_CastItem->GetEntry());
|
||||
player->UpdateCriteria(CRITERIA_TYPE_USE_ITEM, m_CastItem->GetEntry());
|
||||
player->UpdateCriteria(CriteriaType::UseItem, m_CastItem->GetEntry());
|
||||
}
|
||||
|
||||
player->UpdateCriteria(CRITERIA_TYPE_CAST_SPELL, m_spellInfo->Id);
|
||||
player->UpdateCriteria(CriteriaType::CastSpell, m_spellInfo->Id);
|
||||
}
|
||||
|
||||
if (!(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST))
|
||||
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
return false;
|
||||
|
||||
target->ResetHonorStats();
|
||||
target->UpdateCriteria(CRITERIA_TYPE_EARN_HONORABLE_KILL);
|
||||
target->UpdateCriteria(CriteriaType::HonorableKills);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
+3
-3
@@ -206,9 +206,9 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
state = IN_PROGRESS;
|
||||
break;
|
||||
case DONE:
|
||||
DoUpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_DEFEAT_FACTION_CHAMPIONS);
|
||||
DoUpdateCriteria(CriteriaType::BeSpellTarget, SPELL_DEFEAT_FACTION_CHAMPIONS);
|
||||
if (ResilienceWillFixItTimer > 0)
|
||||
DoUpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_CHAMPIONS_KILLED_IN_MINUTE);
|
||||
DoUpdateCriteria(CriteriaType::BeSpellTarget, SPELL_CHAMPIONS_KILLED_IN_MINUTE);
|
||||
DoRespawnGameObject(GetGuidData(DATA_CRUSADERS_CHEST), 7 * DAY);
|
||||
if (GameObject* cache = GetGameObject(DATA_CRUSADERS_CHEST))
|
||||
cache->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
@@ -397,7 +397,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
break;
|
||||
case SNAKES_DONE:
|
||||
if (NotOneButTwoJormungarsTimer > 0)
|
||||
DoUpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_WORMS_KILLED_IN_10_SECONDS);
|
||||
DoUpdateCriteria(CriteriaType::BeSpellTarget, SPELL_WORMS_KILLED_IN_10_SECONDS);
|
||||
if (Creature* tirion = GetCreature(DATA_FORDRING))
|
||||
tirion->AI()->DoAction(ACTION_START_ICEHOWL);
|
||||
HandleNorthrendBeastsDone();
|
||||
|
||||
@@ -352,7 +352,7 @@ public:
|
||||
instance->SetData(DATA_CAVERN_ACTIVE, 0);
|
||||
|
||||
if (!instance->GetData(DATA_ICE_SHARDS_HIT))
|
||||
instance->DoUpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_DONT_LOOK_UP_ACHIEV_CREDIT, 0, player);
|
||||
instance->DoUpdateCriteria(CriteriaType::BeSpellTarget, SPELL_DONT_LOOK_UP_ACHIEV_CREDIT, 0, player);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -355,7 +355,7 @@ class boss_lady_deathwhisper : public CreatureScript
|
||||
livingAddEntries.insert(unit->GetEntry());
|
||||
|
||||
if (livingAddEntries.size() >= 5)
|
||||
instance->DoUpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_FULL_HOUSE, 0, me);
|
||||
instance->DoUpdateCriteria(CriteriaType::BeSpellTarget, SPELL_FULL_HOUSE, 0, me);
|
||||
|
||||
if (Creature* darnavan = ObjectAccessor::GetCreature(*me, _darnavanGUID))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user