2643{
2645
2647
2648 QueryResult result =
WorldDatabase.Query(
"SELECT criteria_id, type, value1, value2, ScriptName FROM achievement_criteria_data");
2649
2650 if (!result)
2651 {
2652 LOG_WARN(
"server.loading",
">> Loaded 0 additional achievement criteria data. DB table `achievement_criteria_data` is empty.");
2654 return;
2655 }
2656
2658
2659 do
2660 {
2661 Field* fields = result->Fetch();
2663
2665
2666 if (!criteria)
2667 {
2668 LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` has data for non-existing criteria (Entry: {}), ignore.", criteria_id);
2669 continue;
2670 }
2671
2673 std::string scriptName = fields[4].
Get<std::string>();
2675 if (scriptName.length())
2676 {
2678 LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` has ScriptName set for non-scripted data type (Entry: {}, type {}), useless data.", criteria_id, dataType);
2679 else
2680 scriptId =
sObjectMgr->GetScriptId(scriptName.c_str());
2681 }
2682
2684
2685 if (!data.IsValid(criteria))
2686 continue;
2687
2688
2691
2692
2695
2696
2697 ++count;
2698 } while (result->NextRow());
2699
2700
2702 {
2704 if (!criteria)
2705 continue;
2706
2708 {
2725
2726 break;
2728 {
2730 if (!achievement)
2731 continue;
2732
2733
2734 if (achievement->
ID == 1282)
2735 break;
2736
2737 continue;
2738 }
2741 continue;
2742 break;
2745 continue;
2746 break;
2749 continue;
2750 break;
2753 continue;
2754 break;
2757 {
2759 if (!achievement)
2760 continue;
2762 continue;
2763 break;
2764 }
2765 default:
2766 continue;
2767 }
2768
2770 LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` does not have expected data for criteria (Entry: {} Type: {}) for achievement {}.", criteria->
ID, criteria->
requiredType, criteria->
referredAchievement);
2771 }
2772
2773 LOG_INFO(
"server.loading",
">> Loaded {} additional achievement criteria data in {} ms", count,
GetMSTimeDiffToNow(oldMSTime));
2775}
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
#define LOG_INFO(filterType__,...)
Definition: Log.h:167
#define LOG_ERROR(filterType__,...)
Definition: Log.h:159
#define LOG_WARN(filterType__,...)
Definition: Log.h:163
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:131
uint32 getMSTime()
Definition: Timer.h:103
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition: DatabaseEnv.cpp:20
std::shared_ptr< ResultSet > QueryResult
Definition: DatabaseEnvFwd.h:28
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT
Definition: AchievementMgr.h:57
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE
Definition: AchievementMgr.h:46
@ DISABLE_TYPE_ACHIEVEMENT_CRITERIA
Definition: DisableMgr.h:33
DBCStorage< AchievementCriteriaEntry > sAchievementCriteriaStore(AchievementCriteriafmt)
#define sObjectMgr
Definition: ObjectMgr.h:1640
@ ACHIEVEMENT_CRITERIA_CONDITION_NO_LOSE
Definition: DBCEnums.h:97
@ ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE
Definition: DBCEnums.h:222
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2
Definition: DBCEnums.h:187
@ ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM
Definition: DBCEnums.h:161
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
Definition: DBCEnums.h:148
@ ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING
Definition: DBCEnums.h:145
@ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL
Definition: DBCEnums.h:149
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST
Definition: DBCEnums.h:137
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT
Definition: DBCEnums.h:171
@ ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE
Definition: DBCEnums.h:174
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE
Definition: DBCEnums.h:194
@ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL
Definition: DBCEnums.h:155
@ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2
Definition: DBCEnums.h:223
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST
Definition: DBCEnums.h:147
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA
Definition: DBCEnums.h:157
@ ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM
Definition: DBCEnums.h:169
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE
Definition: DBCEnums.h:128
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL
Definition: DBCEnums.h:192
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_BG
Definition: DBCEnums.h:129
@ ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL
Definition: DBCEnums.h:188
@ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
Definition: DBCEnums.h:150
@ ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS
Definition: DBCEnums.h:176
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT
Definition: DBCEnums.h:170
@ ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN
Definition: DBCEnums.h:190
@ CATEGORY_CHILDRENS_WEEK
Definition: DBCEnums.h:234
bool IsDisabledFor(DisableType type, uint32 entry, Unit const *unit, uint8 flags)
Definition: DisableMgr.cpp:306
Class used to access individual fields of database query result.
Definition: Field.h:99
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition: Field.h:113
Definition: AchievementMgr.h:85
Definition: AchievementMgr.h:233
void Add(AchievementCriteriaData const &data)
Definition: AchievementMgr.h:236
void SetCriteriaId(uint32 id)
Definition: AchievementMgr.h:238
AchievementCriteriaDataSet const * GetCriteriaDataSet(AchievementCriteriaEntry const *achievementCriteria) const
Definition: AchievementMgr.h:381
Definition: DBCStructure.h:40
uint32 categoryId
Definition: DBCStructure.h:49
uint32 ID
Definition: DBCStructure.h:41
Definition: DBCStructure.h:70
struct AchievementCriteriaEntry::@293::@338 do_emote
struct AchievementCriteriaEntry::@293::@348 win_duel
uint32 lootTypeCount
Definition: DBCStructure.h:471
struct AchievementCriteriaEntry::@295 additionalRequirements[MAX_CRITERIA_REQUIREMENTS]
uint32 count
Definition: DBCStructure.h:223
uint32 duelCount
Definition: DBCStructure.h:440
uint32 ID
Definition: DBCStructure.h:71
uint32 requiredType
Definition: DBCStructure.h:73
uint32 additionalRequirement_type
Definition: DBCStructure.h:503
uint32 referredAchievement
Definition: DBCStructure.h:72
struct AchievementCriteriaEntry::@293::@353 loot_type