65 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` for criteria (Entry: %u) has wrong data type (%u), ignored.", criteria->
ID,
dataType);
69 switch (criteria->
type)
98 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` has data for non-supported criteria type (Entry: %u Type: %u), ignored.", criteria->
ID, criteria->
type);
112 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_CREATURE (%u) has non-existing creature id in value1 (%u), ignored.",
120 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) must not have 0 in either value field, ignored.",
126 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) has non-existing class in value1 (%u), ignored.",
132 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) has non-existing race in value2 (%u), ignored.",
140 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_PLAYER_LESS_HEALTH (%u) has wrong percent value in value1 (%u), ignored.",
151 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type %s (%u) has wrong spell id in value1 (%u), ignored.",
155 if (
aura.effect_idx >= 3)
157 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type %s (%u) has wrong spell effect index in value2 (%u), ignored.",
163 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type %s (%u) has non-aura spell effect (ID: %u Effect: %u), ignores.",
172 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AREA (%u) has wrong area id in value1 (%u), ignored.",
180 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE (%u) has wrong ComparisionType in value2 (%u), ignored.",
188 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL (%u) has wrong minlevel in value1 (%u), ignored.",
196 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_GENDER (%u) has wrong gender in value1 (%u), ignored.",
204 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT (%u) does not have ScriptName set, ignored.",
212 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT (%u) has wrong max players count in value1 (%u), ignored.",
220 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM (%u) has unknown team in value1 (%u), ignored.",
228 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_DRUNK (%u) has unknown drunken state in value1 (%u), ignored.",
236 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_HOLIDAY (%u) has unknown holiday in value1 (%u), ignored.",
246 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_requirement` (Entry: %u Type: %u) for requirement ACHIEVEMENT_CRITERIA_REQUIRE_S_EQUIPED_ITEM (%u) has unknown quality state in value1 (%u), ignored.",
254 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) must not have 0 in either value field, ignored.",
260 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) has non-existing class in value1 (%u), ignored.",
266 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) has non-existing race in value2 (%u), ignored.",
272 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` (Entry: %u Type: %u) has data for non-supported data type (%u), ignored.", criteria->
ID, criteria->
type,
dataType);
313 return area.id == zoneId ||
area.id == areaId;
355 SF_LOG_ERROR(
"achievement",
"Achievement system call ACHIEVEMENT_CRITERIA_DATA_INSTANCE_SCRIPT (%u) for achievement criteria %u for non-dungeon/non-raid map %u",
362 SF_LOG_ERROR(
"achievement",
"Achievement system call ACHIEVEMENT_CRITERIA_DATA_INSTANCE_SCRIPT (%u) for achievement criteria %u for map %u but map does not have a instance script",
383 for (Storage::const_iterator itr =
storage.begin(); itr !=
storage.end(); ++itr)
384 if (!itr->Meets(
criteria_id, source, target, miscValue))
408 GetOwner()->GetSession()->SendPacket(data);
461 for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i != achievementCriteriaList.end(); ++i)
465 if (achievementCriteria->
failEvent != miscValue1)
532 if (!iter->second.changed)
546 iter->second.changed =
false;
554 if (!iter->second.changed)
562 if (iter->second.counter)
567 stmt->
setUInt32(2, iter->second.counter);
572 iter->second.changed =
false;
581 std::ostringstream guidstr;
584 if (!itr->second.changed)
596 for (std::set<uint64>::const_iterator gItr = itr->second.guids.begin(); gItr != itr->second.guids.end(); ++gItr)
607 if (!itr->second.changed)
633 if (achievementResult)
637 Field* fields = achievementResult->Fetch();
646 ca.
date = time_t(fields[1].GetUInt32());
658 if (reward->spellId < 0)
664 player->
addSpell(spellId,
true,
true,
false,
false,
true);
667 }
while (achievementResult->NextRow());
672 time_t now = time(NULL);
675 Field* fields = criteriaResult->Fetch();
678 time_t date = time_t(fields[2].GetUInt32());
684 SF_LOG_ERROR(
"achievement",
"Non-existing achievement criteria %u data removed from table `character_achievement_progress`.",
id);
698 progress.
date = date;
700 }
while (criteriaResult->NextRow());
707 if (achievementResult)
711 Field* fields = achievementResult->Fetch();
720 ca.
date = time_t(fields[1].GetUInt32());
721 Tokenizer guids(fields[2].GetString(),
' ');
728 }
while (achievementResult->NextRow());
733 time_t now = time(NULL);
736 Field* fields = criteriaResult->Fetch();
739 time_t date = time_t(fields[2].GetUInt32());
746 SF_LOG_ERROR(
"achievement",
"Non-existing achievement criteria %u data removed from table `guild_achievement_progress`.",
id);
759 progress.
date = date;
762 }
while (criteriaResult->NextRow());
777 data <<
uint32(iter->first);
785 data <<
uint32(iter->first);
813 data <<
uint32(iter->first);
838 bool GuildAchievement =
false;
844 SF_LOG_DEBUG(
"achievement",
"AchievementMgr::SendAchievementEarned(%u)", achievement->
ID);
850 guild->BroadcastWorker(say_do);
867 sWorld->SendGlobalMessage(&data);
927 bool GuildAchievement =
true;
942 sWorld->SendGlobalMessage(&data);
983 data <<
uint32(timedCompleted ? 0 : 1);
991 data <<
uint32(timeElapsed);
1070 { 321,
true,
true,
true },
1071 { 916,
false,
true,
false },
1072 { 917,
false,
true,
false },
1073 { 918,
true,
false,
false },
1074 { 2219,
false,
false,
true },
1075 { 0,
false,
false,
false }
1079template <
typename T>
static bool IsGuild() {
return false; }
1084 return categoryId == 15118 || categoryId == 15119 || categoryId == 15120;
1100 SF_LOG_DEBUG(
"achievement",
"UpdateAchievementCriteria: Wrong criteria type %u", type);
1104 if (!referencePlayer)
1106 SF_LOG_DEBUG(
"achievement",
"UpdateAchievementCriteria: Player is NULL! Cant update criteria");
1126 for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i != achievementCriteriaList.end(); ++i)
1130 if (!
CanUpdateCriteria(achievementCriteria, NULL, miscValue1, miscValue2, miscValue3, unit, referencePlayer))
1135 if (!data->Meets(referencePlayer, unit, miscValue1))
1237 time_t nextDailyResetTime =
sWorld->GetNextDailyQuestsResetTime();
1243 if (progress && progress->
date < (nextDailyResetTime - 2 *
DAY))
1252 else if (progress->
date < (nextDailyResetTime - 2 *
DAY))
1255 else if (progress->
date < (nextDailyResetTime -
DAY))
1270 for (RewardedQuestSet::const_iterator itr = rewQuests.begin(); itr != rewQuests.end(); ++itr)
1310 for (PlayerSpellMap::const_iterator spellIter = referencePlayer->
GetSpellMap().begin();
1311 spellIter != referencePlayer->
GetSpellMap().end();
1315 for (SkillLineAbilityMap::const_iterator skillIter = bounds.first; skillIter != bounds.second; ++skillIter)
1336 for (PlayerSpellMap::const_iterator spellIter = referencePlayer->
GetSpellMap().begin();
1337 spellIter != referencePlayer->
GetSpellMap().end();
1341 for (SkillLineAbilityMap::const_iterator skillIter = bounds.first; skillIter != bounds.second; ++skillIter)
1367 points += achievement->
points;
1462 for (AchievementCriteriaTreeList::const_iterator iter = achievementCriteriaTreeList.begin(); iter != achievementCriteriaTreeList.end(); ++iter)
1479 for (AchievementEntryList::const_iterator itr = achRefList->begin(); itr != achRefList->end(); ++itr)
1490 for (AchievementCriteriaTreeList::const_iterator iter = criteriaTreeList.begin(); iter != criteriaTreeList.end(); ++iter)
1509 if (!criteria || !achievement)
1517 for (AchievementCriteriaTreeList::const_iterator iter = treeList->begin(); iter != treeList->end(); ++iter)
1519 if ((*iter)->criteriaID == criteria->
ID)
1521 criteriaTree = *iter;
1607 return progress->
counter >= 1;
1611 return progress->
counter >= 9000;
1677 achievementForTestCount = criteriaTree->criteriaCount;
1681 for (AchievementCriteriaTreeList::const_iterator iter = list->begin(); iter != list->end(); ++iter)
1685 cList.push_back(criteria);
1697 for (AchievementCriteriaEntryList::const_iterator itr = cList.begin(); itr != cList.end(); ++itr)
1715 bool completed_all =
true;
1716 for (AchievementCriteriaEntryList::const_iterator itr = cList.begin(); itr != cList.end(); ++itr)
1726 completed_all =
false;
1729 if (achievementForTestCount > 0 && achievementForTestCount <= count)
1734 if (completed_all && achievementForTestCount == 0)
1748 return &(iter->second);
1767 if (changeValue == 0 && !entry->
timeLimit)
1771 progress->
counter = changeValue;
1779 newValue = changeValue;
1784 uint64 max_value = std::numeric_limits<uint64>::max();
1785 newValue = max_value - progress->
counter > changeValue ? progress->
counter + changeValue : max_value;
1789 newValue = progress->
counter < changeValue ? changeValue : progress->
counter;
1801 progress->
date = time(NULL);
1804 bool hasLinkedAchievement =
false;
1805 bool hasLiveEligibleAchievement =
false;
1808 for (AchievementCriteriaTreeList::const_iterator iter = criteriaList.begin(); iter != criteriaList.end(); ++iter)
1815 hasLinkedAchievement =
true;
1816 hasLiveEligibleAchievement = hasLiveEligibleAchievement
1828 if (criteriaComplete)
1848 if (itr->second <= timeDiff)
1856 itr->second -= timeDiff;
1872 for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i != achievementCriteriaList.end(); ++i)
1874 if ((*i)->timedCriteriaMiscId != entry)
1896 for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i != achievementCriteriaList.end(); ++i)
1898 if ((*i)->timedCriteriaMiscId != entry)
1928 if (!
GetOwner()->GetSession()->PlayerLoading())
1931 SF_LOG_INFO(
"achievement",
"AchievementMgr::CompletedAchievement(%u). Player: %s (%u)",
1935 ca.
date = time(NULL);
1951 battlePetMgr->OnAchievementEarned(achievement->
ID);
1979 int loc_idx =
GetOwner()->GetSession()->GetSessionDbLocaleIndex();
1982 std::string subject = reward->
subject;
1983 std::string text = reward->
text;
2013 SF_LOG_DEBUG(
"achievement",
"AchievementMgr<Guild>::CompletedAchievement(%u)", achievement->
ID);
2024 ca.
date = time(NULL);
2033 for (
GroupReference const* ref = group->GetFirstMember(); ref != NULL; ref = ref->
next())
2034 if (
Player const* groupMember = ref->GetSource())
2035 if (groupMember->GetGuildId() ==
GetOwner()->GetId())
2036 ca.
guids.insert(groupMember->GetGUID());
2067 ByteBuffer criteriaData(numCriteria * (4 + 4 + 4 + 4 + 8 + 8));
2068 ByteBuffer completedData(numAchievements * (4 + 4 + 4 + 4 + 8));
2077 counter = itr->second.counter;
2098 criteriaData <<
uint32(0);
2101 criteriaData <<
uint32(itr->first);
2114 criteriaData <<
uint32(0);
2122 if (!isVisible(*itr))
2134 completedData <<
uint32(itr->first);
2149 data.
append(completedData);
2150 data.
append(criteriaData);
2163 if (!isVisible(*itr))
2167 data <<
uint32(itr->first);
2183 ByteBuffer achievementsData(numAchievements * 24);
2196 counter = itr->second.counter;
2197 ObjectGuid guid2 = itr->second.CompletedGUID;
2218 criteriaData <<
uint32(0);
2222 criteriaData <<
uint32(itr->first);
2230 criteriaData <<
uint32(0);
2243 ObjectGuid guid3 = *(itr->second.guids.begin());
2257 achievementsData <<
uint32(0);
2258 achievementsData <<
uint32(itr->first);
2265 achievementsData <<
uint32(0);
2275 data.
append(achievementsData);
2276 data.
append(criteriaData);
2411 SF_LOG_TRACE(
"achievement",
"CanUpdateCriteria: (Id: %u Type %s) Disabled",
2418 SF_LOG_TRACE(
"achievement",
"CanUpdateCriteria: (Id: %u Type %s) Wrong map",
2426 SF_LOG_TRACE(
"achievement",
"CanUpdateCriteria: (Id: %u Type %s) Wrong faction",
2433 SF_LOG_TRACE(
"achievement",
"CanUpdateCriteria: (Id: %u Type %s) Is Completed",
2441 SF_LOG_TRACE(
"achievement",
"CanUpdateCriteria: (Id: %u Type %s) Requirements not satisfied",
2448 SF_LOG_TRACE(
"achievement",
"CanUpdateCriteria: (Id: %u Type %s) Additional requirements not satisfied",
2455 SF_LOG_TRACE(
"achievement",
"CanUpdateCriteria: (Id: %u Type %s) Conditions not satisfied",
2562 if (!miscValue1 || (achievementCriteria->
reach_battle_pet_level.
level && miscValue1 < achievementCriteria->reach_battle_pet_level.level))
2675 if (!miscValue1 || miscValue2 != achievementCriteria->
death_from.
type)
2694 if (!data->Meets(referencePlayer, unit))
2718 if (!miscValue1 || !miscValue2 || !miscValue3 || miscValue3 != achievementCriteria->
loot_type.
lootType)
2722 if (miscValue1 && achievementCriteria->
own_item.
itemID != miscValue1)
2726 if (!miscValue1 || achievementCriteria->
use_item.
itemID != miscValue1)
2730 if (!miscValue1 || miscValue1 != achievementCriteria->
own_item.
itemID)
2736 if (!worldOverlayEntry)
2739 bool matchFound =
false;
2747 if (exploreFlag < 0)
2786 if (!miscValue1 || miscValue1 != achievementCriteria->
do_emote.
emoteID)
2829 if (!miscValue1 || miscValue1 != achievementCriteria->
hk_class.
classID)
2833 if (!miscValue1 || miscValue1 != achievementCriteria->
hk_race.
raceID)
2845 if (!miscValue1 || !miscValue2 ||
int64(miscValue2) < 0
2872 for (ModifierTreeEntryList::const_iterator iter = list->begin(); iter != list->end(); ++iter)
2882 if (!unit || unit->
GetEntry() != reqValue)
2898 if (!referencePlayer->
HasAura(reqValue))
2902 if (!unit || !unit->
HasAura(reqValue))
2913 if (!item || item->
Quality < reqValue)
2921 if (!item || item->
Quality != reqValue)
2929 if (zoneId != reqValue && areaId != reqValue)
2939 if (zoneId != reqValue && areaId != reqValue)
2948 if (referencePlayer->
getRace() != reqValue)
2952 if (referencePlayer->
getClass() != reqValue)
2977 if (referencePlayer->
GetMapId() != reqValue)
2982 if (miscValue1 != reqValue)
2986 if (referencePlayer->
getLevel() != reqValue)
2990 if (!unit || unit->
getLevel() != reqValue)
2994 if (!unit || unit->
GetZoneId() != reqValue)
3002 if (reqValue >= 32 || !(
uint32(miscValue2) & (
uint32(1) << reqValue)))
3013 uint32 quality = reqValue;
3015 quality = qualityEntry->Quality;
3026 if (miscValue1 != reqValue)
3046 return "KILL_CREATURE";
3048 return "TYPE_WIN_BG";
3050 return "COMPLETE_RESEARCH";
3052 return "REACH_LEVEL";
3054 return "REACH_SKILL_LEVEL";
3056 return "COMPLETE_ACHIEVEMENT";
3058 return "COMPLETE_QUEST_COUNT";
3060 return "COMPLETE_DAILY_QUEST_DAILY";
3062 return "COMPLETE_QUESTS_IN_ZONE";
3066 return "DAMAGE_DONE";
3068 return "COMPLETE_DAILY_QUEST";
3070 return "COMPLETE_BATTLEGROUND";
3072 return "DEATH_AT_MAP";
3076 return "DEATH_IN_DUNGEON";
3078 return "COMPLETE_RAID";
3080 return "KILLED_BY_CREATURE";
3082 return "KILLED_BY_PLAYER";
3084 return "FALL_WITHOUT_DYING";
3086 return "DEATHS_FROM";
3088 return "COMPLETE_QUEST";
3090 return "BE_SPELL_TARGET";
3092 return "CAST_SPELL";
3094 return "BG_OBJECTIVE_CAPTURE";
3096 return "HONORABLE_KILL_AT_AREA";
3100 return "PLAY_ARENA";
3102 return "LEARN_SPELL";
3104 return "HONORABLE_KILL";
3108 return "WIN_RATED_ARENA";
3110 return "HIGHEST_TEAM_RATING";
3112 return "HIGHEST_PERSONAL_RATING";
3114 return "LEARN_SKILL_LEVEL";
3120 return "EXPLORE_AREA";
3124 return "BUY_BANK_SLOT";
3126 return "GAIN_REPUTATION";
3128 return "GAIN_EXALTED_REPUTATION";
3130 return "VISIT_BARBER_SHOP";
3132 return "EQUIP_EPIC_ITEM";
3134 return "ROLL_NEED_ON_LOOT";
3136 return "GREED_ON_LOOT";
3144 return "HEALING_DONE";
3146 return "GET_KILLING_BLOWS";
3148 return "EQUIP_ITEM";
3150 return "MONEY_FROM_VENDORS";
3152 return "GOLD_SPENT_FOR_TALENTS";
3154 return "NUMBER_OF_TALENT_RESETS";
3156 return "MONEY_FROM_QUEST_REWARD";
3158 return "GOLD_SPENT_FOR_TRAVELLING";
3160 return "GOLD_SPENT_AT_BARBER";
3162 return "GOLD_SPENT_FOR_MAIL";
3164 return "LOOT_MONEY";
3166 return "USE_GAMEOBJECT";
3168 return "BE_SPELL_TARGET2";
3170 return "SPECIAL_PVP_KILL";
3172 return "FISH_IN_GAMEOBJECT";
3174 return "EARNED_PVP_TITLE";
3176 return "LEARN_SKILLLINE_SPELLS";
3182 return "KILL_CREATURE_TYPE";
3184 return "GOLD_EARNED_BY_AUCTIONS";
3186 return "CREATE_AUCTION";
3188 return "HIGHEST_AUCTION_BID";
3190 return "WON_AUCTIONS";
3192 return "HIGHEST_AUCTION_SOLD";
3194 return "HIGHEST_GOLD_VALUE_OWNED";
3196 return "GAIN_REVERED_REPUTATION";
3198 return "GAIN_HONORED_REPUTATION";
3200 return "KNOWN_FACTIONS";
3202 return "LOOT_EPIC_ITEM";
3204 return "RECEIVE_EPIC_ITEM";
3208 return "ROLL_GREED";
3212 return "HIT_RECEIVED";
3214 return "TOTAL_DAMAGE_RECEIVED";
3216 return "HIGHEST_HEAL_CASTED";
3218 return "TOTAL_HEALING_RECEIVED";
3220 return "HIGHEST_HEALING_RECEIVED";
3222 return "QUEST_ABANDONED";
3224 return "FLIGHT_PATHS_TAKEN";
3228 return "CAST_SPELL2";
3230 return "LEARN_SKILL_LINE";
3232 return "EARN_HONORABLE_KILL";
3234 return "ACCEPTED_SUMMONINGS";
3236 return "EARN_ACHIEVEMENT_POINTS";
3238 return "PET_BATTLE_ACHIEVEMENT_POINTS";
3240 return "COLLECT_BATTLE_PET";
3242 return "COLLECT_BATTLE_PET_SPECIES";
3244 return "OWN_BATTLE_PET_COUNT";
3246 return "CAPTURE_BATTLE_PET";
3248 return "WIN_PET_BATTLE";
3250 return "REACH_BATTLE_PET_LEVEL";
3252 return "CAPTURE_BATTLE_PET2";
3254 return "USE_LFD_TO_GROUP_WITH_PLAYERS";
3256 return "SPENT_GOLD_GUILD_REPAIRS";
3258 return "REACH_GUILD_LEVEL";
3260 return "CRAFT_ITEMS_GUILD";
3262 return "CATCH_FROM_POOL";
3264 return "BUY_GUILD_BANK_SLOTS";
3266 return "EARN_GUILD_ACHIEVEMENT_POINTS";
3268 return "WIN_RATED_BATTLEGROUND";
3270 return "REACH_BG_RATING";
3272 return "BUY_GUILD_TABARD";
3274 return "COMPLETE_QUESTS_GUILD";
3276 return "HONORABLE_KILLS_GUILD";
3278 return "KILL_CREATURE_TYPE_GUILD";
3280 return "GUILD_CHALLENGE_TYPE";
3282 return "GUILD_CHALLENGE";
3284 return "MISSING_TYPE";
3297 SF_LOG_ERROR(
"server.loading",
">> Loaded 0 achievement criteria.");
3354 SF_LOG_INFO(
"server.loading",
">> Loaded 0 achievement references.");
3388 QueryResult result =
WorldDatabase.Query(
"SELECT criteria_id, type, value1, value2, ScriptName FROM achievement_criteria_data");
3392 SF_LOG_INFO(
"server.loading",
">> Loaded 0 additional achievement criteria data. DB table `achievement_criteria_data` is empty.");
3400 Field* fields = result->Fetch();
3407 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` has data for non-existing criteria (Entry: %u), ignore.", criteria_id);
3412 std::string scriptName = fields[4].
GetString();
3414 if (scriptName.length())
3417 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_criteria_data` has ScriptName set for non-scripted data type (Entry: %u, type %u), useless data.", criteria_id, dataType);
3419 scriptId =
sObjectMgr->GetScriptId(scriptName.c_str());
3437 }
while (result->NextRow());
3450 SF_LOG_INFO(
"server.loading",
">> Loaded 0 realm first completed achievements. DB table `character_achievement` is empty.");
3456 Field* fields = result->Fetch();
3463 SF_LOG_ERROR(
"achievement",
"Non-existing achievement %u data removed from table `character_achievement`.", achievementId);
3473 }
while (result->NextRow());
3485 QueryResult result =
WorldDatabase.Query(
"SELECT entry, title_A, title_H, item, spell, sender, subject, text FROM achievement_reward");
3489 SF_LOG_ERROR(
"server.loading",
">> Loaded 0 achievement rewards. DB table `achievement_reward` is empty.");
3497 Field* fields = result->Fetch();
3502 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` has wrong achievement (Entry: %u), ignored.", entry);
3518 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) does not have title or item reward data, ignored.", entry);
3523 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) has title (A: %u H: %u) for only one team.", entry, reward.
titleId[0], reward.
titleId[1]);
3530 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_A`, set to 0", entry, reward.
titleId[0]);
3540 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_H`, set to 0", entry, reward.
titleId[1]);
3550 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) has invalid creature entry %u as sender, mail reward skipped.", entry, reward.
sender);
3557 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) does not have sender data but has item reward, item will not be rewarded.", entry);
3560 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) does not have sender data but has mail subject.", entry);
3562 if (!reward.
text.empty())
3563 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) does not have sender data but has mail text.", entry);
3570 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) has invalid item id %u, reward mail will not contain item.", entry, reward.
itemId);
3579 SF_LOG_ERROR(
"sql.sql",
"Table `achievement_reward` (Entry: %u) has invalid spell id %u, skipped.", entry, reward.
spellId);
3586 }
while (result->NextRow());
3597 QueryResult result =
WorldDatabase.Query(
"SELECT entry, subject_loc1, text_loc1, subject_loc2, text_loc2, subject_loc3, text_loc3, subject_loc4, text_loc4, "
3598 "subject_loc5, text_loc5, subject_loc6, text_loc6, subject_loc7, text_loc7, subject_loc8, text_loc8, "
3599 "subject_loc9, text_loc9, subject_loc10, text_loc10, subject_loc11, text_loc11 "
3600 " FROM locales_achievement_reward");
3604 SF_LOG_INFO(
"server.loading",
">> Loaded 0 achievement reward locale strings. DB table `locales_achievement_reward` is empty");
3610 Field* fields = result->Fetch();
3616 SF_LOG_ERROR(
"sql.sql",
"Table `locales_achievement_reward` (Entry: %u) has locale strings for non-existing achievement reward.", entry);
3628 }
while (result->NextRow());
static const uint32 achievIdByArenaSlot[MAX_ARENA_SLOT]
static bool UpdatesPetBattleAchievementPoints(uint32 categoryId)
static bool IsPetBattleAchievementCategory(uint32 categoryId)
static const uint32 achievIdForDungeon[][4]
std::vector< CriteriaTreeEntry const * > AchievementCriteriaTreeList
std::vector< CriteriaEntry const * > AchievementCriteriaEntryList
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_GENDER
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AREA
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE
@ ACHIEVEMENT_CRITERIA_DATA_INSTANCE_SCRIPT
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_DRUNK
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AURA
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_HOLIDAY
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_AURA
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_CREATURE
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_LESS_HEALTH
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM
@ ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE
#define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE
std::vector< ModifierTreeEntry const * > ModifierTreeEntryList
UNORDERED_MAP< uint32, ModifierTreeEntryList > ModifierTreeEntryByTreeId
std::vector< AchievementEntry const * > AchievementEntryList
uint8 BattlePetAchievementCriteriaHealthPercent(uint32 payload)
uint8 BattlePetAchievementCriteriaQuality(uint32 payload)
bool BattlePetAchievementCriteriaIsPvp(uint32 payload)
@ CHAR_INS_GUILD_ACHIEVEMENT_CRITERIA
@ CHAR_DEL_ALL_GUILD_ACHIEVEMENTS
@ CHAR_DEL_CHAR_ACHIEVEMENT_PROGRESS_BY_CRITERIA
@ CHAR_INS_CHAR_ACHIEVEMENT_PROGRESS
@ CHAR_INS_CHAR_ACHIEVEMENT
@ CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT
@ CHAR_DEL_INVALID_ACHIEVMENT
@ CHAR_DEL_CHAR_ACHIEVEMENT_PROGRESS
@ CHAR_INS_GUILD_ACHIEVEMENT
@ CHAR_DEL_GUILD_ACHIEVEMENT
@ CHAR_DEL_GUILD_ACHIEVEMENT_CRITERIA
@ CHAR_DEL_ALL_GUILD_ACHIEVEMENT_CRITERIA
@ CHAR_DEL_INVALID_ACHIEV_PROGRESS_CRITERIA
@ CHAR_DEL_INVALID_ACHIEV_PROGRESS_CRITERIA_GUILD
@ CHAR_DEL_CHAR_ACHIEVEMENT
const uint8 TOTAL_LOCALES
DB2Storage< BattlePetBreedQualityEntry > sBattlePetBreedQualityStore(BattlePetBreedQualityfmt)
@ ACHIEVEMENT_FACTION_HORDE
@ ACHIEVEMENT_FACTION_ALLIANCE
@ ACHIEVEMENT_FACTION_ANY
AchievementCriteriaAdditionalCondition
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_CREATURE_TYPE
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_PLAYER
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_SOURCE_LEVEL
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TITLE_BIT_INDEX
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_HEALTH_PCT
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_SOURCE_AREA_OR_ZONE
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_AREA_OR_ZONE
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_MAX_GROUP_MEMBERS
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_SOURCE_CLASS
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_QUALITY
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_MIN
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_DEAD
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_SOURCE_MAP
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_ENEMY
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_SOURCE_RACE
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_PET_BATTLE_AGAINST_TAMER
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_CLASS
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_SOURCE_HAS_AURA
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA_TYPE
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_RACE
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_CREATURE_ENTRY
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_SPECIES
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_MAP_DIFFICULTY
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_ZONE
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_HEALTH_PERCENT_BELOW
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_LEVEL
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_FAMILY
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_EQUALS
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA
@ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_PET_BATTLE_PVP
AchievementCriteriaTimedTypes
@ ACHIEVEMENT_FLAG_COUNTER
@ ACHIEVEMENT_FLAG_SHOW_GUILD_MEMBERS
@ ACHIEVEMENT_FLAG_HIDDEN
@ ACHIEVEMENT_FLAG_REALM_FIRST_REACH
@ ACHIEVEMENT_FLAG_REALM_FIRST_KILL
@ ACHIEVEMENT_FLAG_SHOW_IN_GUILD_HEADER
@ ACHIEVEMENT_FLAG_SHOW_IN_GUILD_NEWS
@ ACHIEVEMENT_FLAG_SHOW_CRITERIA_MEMBERS
@ ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION
@ ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE
@ ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY
@ ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED
@ ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL
@ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
@ ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM
@ ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA
@ ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT
@ ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING
@ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED
@ ACHIEVEMENT_CRITERIA_TYPE_REACH_BATTLE_PET_LEVEL
@ ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM
@ ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP
@ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILLS_GUILD
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST
@ ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND
@ ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT
@ ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_TABARD
@ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER
@ ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT
@ ACHIEVEMENT_CRITERIA_TYPE_REACH_BG_RATING
@ ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE
@ ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED
@ ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION
@ ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS
@ ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED
@ ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP
@ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL
@ ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT
@ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED
@ ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL
@ ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL
@ ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE
@ ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION
@ ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD
@ ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED
@ ACHIEVEMENT_CRITERIA_TYPE_CATCH_FROM_POOL
@ ACHIEVEMENT_CRITERIA_TYPE_CURRENCY
@ ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER
@ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING
@ ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM
@ ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL
@ ACHIEVEMENT_CRITERIA_TYPE_CRAFT_ITEMS_GUILD
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT
@ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION
@ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CASTED
@ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE
@ ACHIEVEMENT_CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS
@ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS
@ ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS
@ ACHIEVEMENT_CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS
@ ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE
@ ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED
@ ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET_COUNT
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA
@ ACHIEVEMENT_CRITERIA_TYPE_HK_RACE
@ ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS
@ ACHIEVEMENT_CRITERIA_TYPE_DEATH
@ ACHIEVEMENT_CRITERIA_TYPE_PET_BATTLE_ACHIEVEMENT_POINTS
@ ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA
@ ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS
@ ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS
@ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL
@ ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE
@ ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE
@ ACHIEVEMENT_CRITERIA_TYPE_COLLECT_BATTLE_PET_SPECIES
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD
@ ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE
@ ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT
@ ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET
@ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_BG
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION
@ ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_GUILD
@ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
@ ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS
@ ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA
@ ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT
@ ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET2
@ ACHIEVEMENT_CRITERIA_TYPE_COLLECT_BATTLE_PET
@ ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE
@ ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM
@ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING
@ ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_BATTLEGROUND
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_PET_BATTLE
@ ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL
#define ACHIEVEMENT_CRITERIA_TYPE_TOTAL
DBCStorage< CharTitlesEntry > sCharTitlesStore(CharTitlesEntryfmt)
DBCStorage< CriteriaTreeEntry > sCriteriaTreeStore(CriteriaTreefmt)
int32 GetAreaFlagByAreaID(uint32 area_id)
DBCStorage< ModifierTreeEntry > sModifierTreeStore(ModifierTreefmt)
DBCStorage< HolidaysEntry > sHolidaysStore(Holidaysfmt)
DBCStorage< AchievementEntry > sAchievementStore(Achievementfmt)
DBCStorage< WorldMapOverlayEntry > sWorldMapOverlayStore(WorldMapOverlayEntryfmt)
AreaTableEntry const * GetAreaEntryByAreaID(uint32 area_id)
DBCStorage< CriteriaEntry > sCriteriaStore(Criteriafmt)
#define MAX_WORLD_MAP_OVERLAY_AREA_IDX
@ DISABLE_TYPE_ACHIEVEMENT_CRITERIA
bool IsHolidayActive(HolidayIds id)
TypeMapContainer< AllWorldObjectTypes > WorldTypeMapContainer
CoordPair< TOTAL_NUMBER_OF_CELLS_PER_MAP > CellCoord
@ GUILD_NEWS_GUILD_ACHIEVEMENT
@ GUILD_NEWS_PLAYER_ACHIEVEMENT
@ LANG_ACHIEVEMENT_EARNED
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
#define SF_LOG_TRACE(filterType__,...)
#define SF_LOG_INFO(filterType__,...)
uint32 GUID_LOPART(uint64 x)
char const * GetLogNameForGuid(uint64 guid)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
std::set< uint32 > RewardedQuestSet
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
@ CHAT_MSG_GUILD_ACHIEVEMENT
#define CLASSMASK_ALL_PLAYABLE
#define RACEMASK_ALL_PLAYABLE
std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
@ PLAYER_FIELD_EXPLORED_ZONES
@ PLAYER_FIELD_LIFETIME_HONORABLE_KILLS
bool CompareValues(ComparisionType type, T val1, T val2)
void LoadCompletedAchievements()
AchievementCriteriaEntryList m_AchievementCriteriasByType[ACHIEVEMENT_CRITERIA_TYPE_TOTAL]
ModifierTreeEntryByTreeId m_ModifierTreeEntryByTreeId
AchievementEntryByCriteriaTree m_AchievementEntryByCriteriaTree
void LoadAchievementCriteriaData()
SubCriteriaTreeListById m_SubCriteriaTreeListById
void LoadAchievementCriteriaList()
AchievementRewards m_achievementRewards
AchievementListByReferencedId m_AchievementListByReferencedId
void LoadAchievementReferenceList()
static char const * GetCriteriaTypeString(AchievementCriteriaTypes type)
AchievementRewardLocales m_achievementRewardLocales
AchievementCriteriaTreeByCriteriaId m_AchievementCriteriaTreeByCriteriaId
AllCompletedAchievements m_allCompletedAchievements
AchievementCriteriaDataMap m_criteriaDataMap
AchievementEntry const * GetAchievement(uint32 achievementId) const
AchievementCriteriaEntryList m_AchievementCriteriasByTimedType[ACHIEVEMENT_TIMED_TYPE_MAX]
CriteriaEntry const * GetAchievementCriteria(uint32 achievementId) const
CriteriaProgressMap m_criteriaProgress
void SendPacket(WorldPacket *data) const
void SendPacket(WorldPacket *data) const
bool HasAchieved(uint32 achievementId) const
CompletedAchievementMap m_completedAchievements
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost=0)
void SendCriteriaUpdate(CriteriaEntry const *entry, CriteriaProgress const *progress, uint32 timeElapsed, bool timedCompleted) const
bool IsCompletedCriteriaForAchievement(CriteriaEntry const *criteria, AchievementEntry const *achievementEntry)
bool IsCompletedCriteria(CriteriaEntry const *criteria)
void SetCriteriaProgress(CriteriaEntry const *entry, uint64 changeValue, Player *referencePlayer, ProgressType ptype=PROGRESS_SET)
void CompletedAchievement(AchievementEntry const *entry, Player *referencePlayer)
void CompletedCriteriaFor(AchievementEntry const *achievement, Player *referencePlayer)
void RemoveCriteriaProgress(CriteriaEntry const *entry)
void UpdateTimedAchievements(uint32 timeDiff)
uint32 _achievementPoints
void SendAllAchievementData(Player *receiver) const
void SendAchievementEarned(AchievementEntry const *achievement) const
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint64 miscValue1=0, uint64 miscValue2=0, uint64 miscValue3=0, Unit const *unit=NULL, Player *referencePlayer=NULL)
bool RequirementsSatisfied(CriteriaEntry const *criteria, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, Unit const *unit, Player *referencePlayer) const
void CheckAllAchievementCriteria(Player *referencePlayer)
static void DeleteFromDB(uint32 lowguid)
void SendAchievementInfo(Player *receiver, uint32 achievementId=0) const
void DeleteFromDB(uint32 lowguid)
void RemoveTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
TimedAchievementMap m_timedAchievements
void SaveToDB(SQLTransaction &trans)
void ResetAchievementCriteria(AchievementCriteriaTypes type, uint64 miscValue1=0, uint64 miscValue2=0, bool evenIfCriteriaComplete=false)
bool CanUpdateCriteria(CriteriaEntry const *criteria, AchievementEntry const *achievement, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, Unit const *unit, Player *referencePlayer)
void RemoveCriteriaProgress(CriteriaEntry const *entry)
bool ConditionsSatisfied(CriteriaEntry const *criteria, Player *referencePlayer) const
void SendAchievementEarned(AchievementEntry const *achievement) const
CriteriaProgress * GetCriteriaProgress(CriteriaEntry const *entry)
bool IsCompletedAchievement(AchievementEntry const *entry)
void LoadFromDB(PreparedQueryResult achievementResult, PreparedQueryResult criteriaResult)
bool AdditionalRequirementsSatisfied(CriteriaEntry const *criteria, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, Unit const *unit, Player *referencePlayer) const
uint32 GetTeamScore(uint32 TeamID) const
void WriteGuidBytes(const ObjectGuid &guid, Offsets... offsets)
bool WriteBit(uint32 bit)
void WriteGuidMask(const ObjectGuid &guid, Offsets... offsets)
void WriteString(std::string const &str)
void WriteBits(T value, size_t bits)
void AppendPackedTime(time_t time)
void WriteByteSeq(uint8 b)
static size_t BuildChatPacket(WorldPacket &data, ChatMsg chatType, Language language, ObjectGuid senderGUID, ObjectGuid receiverGUID, std::string const &message, uint8 chatTag, std::string const &senderName="", std::string const &receiverName="", uint32 achievementId=0, bool gmMessage=false, std::string const &channelName="", std::string const &addonPrefix="")
std::string GetString() const
uint32 GetMembersCount() const
virtual bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=NULL, uint32=0)
virtual void SaveToDB(SQLTransaction &trans)
static Item * CreateItem(uint32 itemEntry, uint32 count, Player const *player=NULL)
void SendMailTo(SQLTransaction &trans, MailReceiver const &receiver, MailSender const &sender, MailCheckMask checked=MAIL_CHECK_MASK_NONE, uint32 deliver_delay=0)
MailDraft & AddItem(Item *item)
DifficultyID GetDifficulty() const
uint32 GetPlayersCountExceptGMs() const
uint32 GetUInt32Value(uint16 index) const
static void AddLocaleString(std::string const &s, LocaleConstant locale, StringVector &data)
static void GetLocaleString(const StringVector &data, int loc_idx, std::string &value)
uint32 GetGuildId() const
RewardedQuestSet const & getRewardedQuests() const
uint8 GetDrunkValue() const
bool GetQuestRewardStatus(uint32 quest_id) const
BattlePetMgr * GetBattlePetMgr()
uint8 GetBankBagSlotCount() const
bool addSpell(uint32 spellId, bool active, bool learning, bool dependent, bool disabled, bool loading=false)
WorldSession * GetSession() const
static uint32 TeamForRace(uint8 race)
uint16 GetBaseSkillValue(uint32 skill) const
PlayerSpellMap const & GetSpellMap() const
uint16 GetPureMaxSkillValue(uint32 skill) const
Battleground * GetBattleground() const
bool IsGameMaster() const
void learnSpell(uint32 spell_id, bool dependent)
bool HasSpell(uint32 spell) const override
size_t GetRewardedQuestCount() const
ReputationMgr & GetReputationMgr()
static DrunkenState GetDrunkenstateByValue(uint8 value)
void setString(const uint8 index, const std::string &value)
void setUInt16(const uint8 index, const uint16 value)
void setUInt64(const uint8 index, const uint64 value)
void setUInt32(const uint8 index, const uint32 value)
int32 GetZoneOrSort() const
uint8 GetHonoredFactionCount() const
uint8 GetReveredFactionCount() const
int32 GetReputation(uint32 faction_id) const
uint8 GetExaltedFactionCount() const
uint8 GetVisibleFactionCount() const
AchievementChatBuilder(Player const &player, ChatMsg msgtype, int32 textId, uint32 ach_id)
void operator()(WorldPacket &data, LocaleConstant loc_idx)
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
bool HealthAbovePct(int32 pct) const
float GetHealthPct() const
bool HasAuraEffect(uint32 spellId, uint8 effIndex, uint64 caster=0) const
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
bool HasAura(uint32 spellId, uint64 casterGUID=0, uint64 itemCasterGUID=0, uint32 reqEffMask=0) const
uint32 GetCreatureType() const
bool HasAuraType(AuraType auraType) const
bool IsHostileTo(Unit const *unit) const
std::string const & GetName() const
void GetZoneAndAreaId(uint32 &zoneid, uint32 &areaid) const
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
WorldDatabaseWorkerPool WorldDatabase
Accessor to the world database.
@ SMSG_ACHIEVEMENT_EARNED
@ SMSG_SERVER_FIRST_ACHIEVEMENT
@ SMSG_GUILD_ACHIEVEMENT_EARNED
@ SMSG_RESPOND_INSPECT_ACHIEVEMENTS
@ SMSG_GUILD_CRITERIA_DELETED
@ SMSG_GUILD_CRITERIA_DATA
@ SMSG_GUILD_ACHIEVEMENT_DELETED
@ SMSG_GUILD_ACHIEVEMENT_DATA
@ SMSG_ALL_ACHIEVEMENT_DATA
@ SMSG_ACHIEVEMENT_DELETED
uint32 realmID
Id of the realm.
@ CONFIG_GUILD_LEVELING_ENABLED
@ CONFIG_LISTEN_RANGE_SAY
bool IsDisabledFor(DisableType type, uint32 entry, Unit const *unit, uint8 flags)
bool IsLiveCriteriaTypeEligible(uint32 criteriaType)
bool IsLiveCriteriaProgressEligible(uint32 achievementFlags)
bool ShouldSendLiveCriteriaProgress(bool hasLinkedAchievement, bool hasLiveEligibleAchievement)
CellCoord ComputeCellCoord(float x, float y)
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@024174374254033004277026301075062165130262072115 bg_loss_team_score
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@242275372266152233237245200135230111133067133327 drunk
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@057072032343071104215271130142020325273334150275 level
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@216021007006316026312235077267015221071344272202 aura
bool Meets(uint32 criteria_id, Player const *source, Unit const *target, uint32 miscValue1=0) const
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@336320011221331007167071255301216365172157057155 creature
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@320377026037266164246202240071302363266115322001 area
AchievementCriteriaDataType dataType
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@056275250256040003142024016221011315062167165214 health
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@244322361360134003272016350324260205076224125117 holiday
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@172302147354037330143253231262341126300056164132 classRace
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@107316206207337342166046010026175222131076365132 map_players
bool IsValid(CriteriaEntry const *criteria)
struct AchievementCriteriaData::@106234210224313230010274346235221313360252063263::@127266277105012275312221217150103304016252214022 equipped_item
void Add(AchievementCriteriaData const &data)
bool Meets(Player const *source, Unit const *target, uint32 miscValue=0) const
void SetCriteriaId(uint32 id)
std::vector< std::string > text
std::vector< std::string > subject
void Visit(CellCoord const &, TypeContainerVisitor< T, CONTAINER > &visitor, Map &, WorldObject const &, float) const
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@155054343104315247226070332164215206302033027366 bg_objective
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@363072277046354060141332027202235316302276212336 gain_reputation
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@170213076040032203356242316360022040077201163357 reach_skill_level
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@315274205240162012350307044336136237232251153207 collect_battle_pet_species
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@365330015044177022354332336123067002370060350076 do_emote
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@377337335252316161360312250372213142222074313246 own_item
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@046316241355326241376163066335143213363124144336 hk_race
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@345234236313026077117152255011006124312363305150 learn_spell
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@174144145255077235152273004223233200017324167264 currencyGain
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@021203240056244120276046036233301230266254012265 complete_quest
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@272036164363073024020074101121067213256041074141 complete_battleground
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@303224370273354123156275070201154037203323021040 learn_skill_line
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@252141276047360231264041005143012263253252060321 equip_epic_item
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@155224045270122077025256231335026265046243154254 cast_spell
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@200263160026040337222023353106312212300036340373 learn_skillline_spell
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@137206212146252026123010125054215361112224112331 win_arena
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@202032204316306143021314120023223157357053237132 roll_greed_on_loot
uint32 timedCriteriaStartType
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@124155230370177343123035335307267321042041343165 complete_quests_in_zone
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@145020032061045307244276146151306076241166343074 kill_creature
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@040126152076004320345151123073342161374077106175 win_bg
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@377251333175221103040333313262154062016061002177 use_gameobject
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@344224337173133016032174023000100210306163234367 honorable_kill_at_area
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@226166206351331214306246166272022103053025012230 reach_battle_pet_level
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@177214247114106113217220330146125332371234032103 hk_class
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@043245350336207244022374376310206337252016003124 learn_skill_level
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@156371326021026040167240312273017356056170321234 be_spell_target
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@257014116243264075112106007135041333265226315121 explore_area
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@234250345245021161254340245153131216233003346165 killed_by_creature
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@345223042050174377263075217177002173065115333020 use_item
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@166000337046172330023301127054026235073161252152 complete_achievement
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@070241247357031051035113042322125241115042267040 collect_battle_pet
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@017210121314152347012226254260077214375242224331 death_from
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@203206252056004136317074254276154324014203311247 death_at_map
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@212237251022357172040173021300062006341106034137 loot_type
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@200167322244331233113111044210152015217015334006 fish_in_gameobject
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@033317225107033255210024347312044247305221351170 equip_item
bool operator()(CompletedAchievementMap::value_type const &val)
uint32 areatableID[MAX_WORLD_MAP_OVERLAY_AREA_IDX]