diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 68 | ||||
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/Chat/ChatLink.cpp | 2 | ||||
-rw-r--r-- | src/server/game/DataStores/DBCStructure.h | 29 | ||||
-rw-r--r-- | src/server/game/DataStores/DBCfmt.h | 2 |
5 files changed, 52 insertions, 51 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 0ee49095d72..7cadbe4d7fa 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -669,7 +669,7 @@ void AchievementMgr<Player>::LoadFromDB(PreparedQueryResult achievementResult, P ca.date = time_t(fields[1].GetUInt32()); ca.changed = false; - _achievementPoints += achievement->points; + _achievementPoints += achievement->Points; // title achievement rewards are retroactive if (AchievementReward const* reward = sAchievementMgr->GetAchievementReward(achievement)) @@ -739,7 +739,7 @@ void AchievementMgr<Guild>::LoadFromDB(PreparedQueryResult achievementResult, Pr ca.changed = false; - _achievementPoints += achievement->points; + _achievementPoints += achievement->Points; } while (achievementResult->NextRow()); } @@ -851,7 +851,7 @@ template<class T> void AchievementMgr<T>::SendAchievementEarned(AchievementEntry const* achievement) const { // Don't send for achievements with ACHIEVEMENT_FLAG_HIDDEN - if (achievement->flags & ACHIEVEMENT_FLAG_HIDDEN) + if (achievement->Flags & ACHIEVEMENT_FLAG_HIDDEN) return; TC_LOG_DEBUG("achievement", "AchievementMgr::SendAchievementEarned(%u)", achievement->ID); @@ -863,7 +863,7 @@ void AchievementMgr<T>::SendAchievementEarned(AchievementEntry const* achievemen guild->BroadcastWorker(_localizer, GetOwner()); } - if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH)) + if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH)) { // broadcast realm first reached WorldPacket data(SMSG_SERVER_FIRST_ACHIEVEMENT, GetOwner()->GetName().size() + 1 + 8 + 4 + 4); @@ -1476,7 +1476,7 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type, // check again the completeness for SUMM and REQ COUNT achievements, // as they don't depend on the completed criteria but on the sum of the progress of each individual criteria - if (achievement->flags & ACHIEVEMENT_FLAG_SUMM) + if (achievement->Flags & ACHIEVEMENT_FLAG_SUMM) if (IsCompletedAchievement(achievement)) CompletedAchievement(achievement, referencePlayer); @@ -1502,10 +1502,10 @@ bool AchievementMgr<T>::IsCompletedCriteria(AchievementCriteriaEntry const* achi return false; // counter can never complete - if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER) + if (achievement->Flags & ACHIEVEMENT_FLAG_COUNTER) return false; - if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL)) + if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL)) { // someone on this realm has already completed that achievement if (sAchievementMgr->IsRealmCompleted(achievement, GetInstanceId(GetOwner()))) @@ -1667,7 +1667,7 @@ template<class T> void AchievementMgr<T>::CompletedCriteriaFor(AchievementEntry const* achievement, Player* referencePlayer) { // counter can never complete - if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER) + if (achievement->Flags & ACHIEVEMENT_FLAG_COUNTER) return; // already completed and stored @@ -1682,12 +1682,12 @@ template<class T> bool AchievementMgr<T>::IsCompletedAchievement(AchievementEntry const* entry) { // counter can never complete - if (entry->flags & ACHIEVEMENT_FLAG_COUNTER) + if (entry->Flags & ACHIEVEMENT_FLAG_COUNTER) return false; // for achievement with referenced achievement criterias get from referenced and counter from self - uint32 achievementForTestId = entry->refAchievement ? entry->refAchievement : entry->ID; - uint32 achievementForTestCount = entry->count; + uint32 achievementForTestId = entry->SharesCriteria ? entry->SharesCriteria : entry->ID; + uint32 achievementForTestCount = entry->MinimumCriteria; AchievementCriteriaEntryList const* cList = sAchievementMgr->GetAchievementCriteriaByAchievement(achievementForTestId); if (!cList) @@ -1696,7 +1696,7 @@ bool AchievementMgr<T>::IsCompletedAchievement(AchievementEntry const* entry) // For SUMM achievements, we have to count the progress of each criteria of the achievement. // Oddly, the target count is NOT contained in the achievement, but in each individual criteria - if (entry->flags & ACHIEVEMENT_FLAG_SUMM) + if (entry->Flags & ACHIEVEMENT_FLAG_SUMM) { for (AchievementCriteriaEntryList::const_iterator itr = cList->begin(); itr != cList->end(); ++itr) { @@ -1818,7 +1818,7 @@ void AchievementMgr<T>::SetCriteriaProgress(AchievementCriteriaEntry const* entr m_timedAchievements.erase(timedIter); } - if (criteriaComplete && achievement->flags & ACHIEVEMENT_FLAG_SHOW_CRITERIA_MEMBERS && !progress->CompletedGUID) + if (criteriaComplete && achievement->Flags & ACHIEVEMENT_FLAG_SHOW_CRITERIA_MEMBERS && !progress->CompletedGUID) progress->CompletedGUID = referencePlayer->GetGUID(); SendCriteriaUpdate(entry, progress, timeElapsed, criteriaComplete); @@ -1905,12 +1905,12 @@ void AchievementMgr<Player>::CompletedAchievement(AchievementEntry const* achiev if (GetOwner()->IsGameMaster()) return; - if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID)) + if (achievement->Flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID)) return; - if (achievement->flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_NEWS) + if (achievement->Flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_NEWS) if (Guild* guild = referencePlayer->GetGuild()) - guild->AddGuildNews(GUILD_NEWS_PLAYER_ACHIEVEMENT, referencePlayer->GetGUID(), achievement->flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_HEADER, achievement->ID); + guild->AddGuildNews(GUILD_NEWS_PLAYER_ACHIEVEMENT, referencePlayer->GetGUID(), achievement->Flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_HEADER, achievement->ID); if (!GetOwner()->GetSession()->PlayerLoading()) SendAchievementEarned(achievement); @@ -1924,10 +1924,10 @@ void AchievementMgr<Player>::CompletedAchievement(AchievementEntry const* achiev sAchievementMgr->SetRealmCompleted(achievement, GetOwner()->GetInstanceId()); - _achievementPoints += achievement->points; + _achievementPoints += achievement->Points; UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, 0, 0, 0, NULL, referencePlayer); - UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->points, 0, 0, NULL, referencePlayer); + UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->Points, 0, 0, NULL, referencePlayer); // reward items and titles if any AchievementReward const* reward = sAchievementMgr->GetAchievementReward(achievement); @@ -1991,19 +1991,19 @@ void AchievementMgr<Guild>::CompletedAchievement(AchievementEntry const* achieve { TC_LOG_DEBUG("achievement", "AchievementMgr<Guild>::CompletedAchievement(%u)", achievement->ID); - if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID)) + if (achievement->Flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID)) return; - if (achievement->flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_NEWS) + if (achievement->Flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_NEWS) if (Guild* guild = referencePlayer->GetGuild()) - guild->AddGuildNews(GUILD_NEWS_GUILD_ACHIEVEMENT, ObjectGuid::Empty, achievement->flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_HEADER, achievement->ID); + guild->AddGuildNews(GUILD_NEWS_GUILD_ACHIEVEMENT, ObjectGuid::Empty, achievement->Flags & ACHIEVEMENT_FLAG_SHOW_IN_GUILD_HEADER, achievement->ID); SendAchievementEarned(achievement); CompletedAchievementData& ca = m_completedAchievements[achievement->ID]; ca.date = time(NULL); ca.changed = true; - if (achievement->flags & ACHIEVEMENT_FLAG_SHOW_GUILD_MEMBERS) + if (achievement->Flags & ACHIEVEMENT_FLAG_SHOW_GUILD_MEMBERS) { if (referencePlayer->GetGuildId() == GetOwner()->GetId()) ca.guids.insert(referencePlayer->GetGUID()); @@ -2017,10 +2017,10 @@ void AchievementMgr<Guild>::CompletedAchievement(AchievementEntry const* achieve sAchievementMgr->SetRealmCompleted(achievement, referencePlayer->GetInstanceId()); - _achievementPoints += achievement->points; + _achievementPoints += achievement->Points; UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, 0, 0, 0, NULL, referencePlayer); - UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->points, 0, 0, NULL, referencePlayer); + UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->Points, 0, 0, NULL, referencePlayer); } struct VisibleAchievementPred @@ -2028,7 +2028,7 @@ struct VisibleAchievementPred bool operator()(CompletedAchievementMap::value_type const& val) { AchievementEntry const* achievement = sAchievementMgr->GetAchievement(val.first); - return achievement && !(achievement->flags & ACHIEVEMENT_FLAG_HIDDEN); + return achievement && !(achievement->Flags & ACHIEVEMENT_FLAG_HIDDEN); } }; @@ -2329,15 +2329,15 @@ bool AchievementMgr<T>::CanUpdateCriteria(AchievementCriteriaEntry const* criter return false; } - if (achievement->mapID != -1 && referencePlayer->GetMapId() != uint32(achievement->mapID)) + if (achievement->InstanceID != -1 && referencePlayer->GetMapId() != uint32(achievement->InstanceID)) { TC_LOG_TRACE("achievement", "CanUpdateCriteria: %s (Id: %u Type %s) Wrong map", criteria->name, criteria->ID, AchievementGlobalMgr::GetCriteriaTypeString(criteria->type)); return false; } - if ((achievement->requiredFaction == ACHIEVEMENT_FACTION_HORDE && referencePlayer->GetTeam() != HORDE) || - (achievement->requiredFaction == ACHIEVEMENT_FACTION_ALLIANCE && referencePlayer->GetTeam() != ALLIANCE)) + if ((achievement->Faction == ACHIEVEMENT_FACTION_HORDE && referencePlayer->GetTeam() != HORDE) || + (achievement->Faction == ACHIEVEMENT_FACTION_ALLIANCE && referencePlayer->GetTeam() != ALLIANCE)) { TC_LOG_TRACE("achievement", "CanUpdateCriteria: %s (Id: %u Type %s) Wrong faction", criteria->name, criteria->ID, AchievementGlobalMgr::GetCriteriaTypeString(criteria->type)); @@ -3154,7 +3154,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaList() m_AchievementCriteriaListByAchievement[criteria->achievement].push_back(criteria); - if (achievement && achievement->flags & ACHIEVEMENT_FLAG_GUILD) + if (achievement && achievement->Flags & ACHIEVEMENT_FLAG_GUILD) ++guildCriterias, m_GuildAchievementCriteriasByType[criteria->type].push_back(criteria); else ++criterias, m_AchievementCriteriasByType[criteria->type].push_back(criteria); @@ -3181,16 +3181,16 @@ void AchievementGlobalMgr::LoadAchievementReferenceList() for (uint32 entryId = 0; entryId < sAchievementStore.GetNumRows(); ++entryId) { AchievementEntry const* achievement = sAchievementMgr->GetAchievement(entryId); - if (!achievement || !achievement->refAchievement) + if (!achievement || !achievement->SharesCriteria) continue; - m_AchievementListByReferencedId[achievement->refAchievement].push_back(achievement); + m_AchievementListByReferencedId[achievement->SharesCriteria].push_back(achievement); ++count; } // Once Bitten, Twice Shy (10 player) - Icecrown Citadel if (AchievementEntry const* achievement = sAchievementMgr->GetAchievement(4539)) - const_cast<AchievementEntry*>(achievement)->mapID = 631; // Correct map requirement (currently has Ulduar) + const_cast<AchievementEntry*>(achievement)->InstanceID = 631; // Correct map requirement (currently has Ulduar) TC_LOG_INFO("server.loading", ">> Loaded %u achievement references in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); } @@ -3285,7 +3285,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements() continue; } - else if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL)) + else if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL)) m_allCompletedAchievements[achievementId] = uint32(0xFFFFFFFF); } while (result->NextRow()); @@ -3337,7 +3337,7 @@ void AchievementGlobalMgr::LoadRewards() continue; } - if (achievement->requiredFaction == ACHIEVEMENT_FACTION_ANY && (!reward.titleId[0] ^ !reward.titleId[1])) + if (achievement->Faction == ACHIEVEMENT_FACTION_ANY && (!reward.titleId[0] ^ !reward.titleId[1])) TC_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]); if (reward.titleId[0]) diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index 636f7398da6..90d52cd9101 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -359,7 +359,7 @@ class AchievementGlobalMgr if (itr == m_allCompletedAchievements.end()) return false; - if (achievement->flags & ACHIEVEMENT_FLAG_REALM_FIRST_KILL) + if (achievement->Flags & ACHIEVEMENT_FLAG_REALM_FIRST_KILL) return itr->second != instanceId; return true; diff --git a/src/server/game/Chat/ChatLink.cpp b/src/server/game/Chat/ChatLink.cpp index 3f32447a31f..7e4f1d1a0ff 100644 --- a/src/server/game/Chat/ChatLink.cpp +++ b/src/server/game/Chat/ChatLink.cpp @@ -372,7 +372,7 @@ bool AchievementChatLink::ValidateName(char* buffer, const char* context) { ChatLink::ValidateName(buffer, context); - if (*_achievement->name && strcmp(_achievement->name, buffer) == 0) + if (*_achievement->Title_lang && strcmp(_achievement->Title_lang, buffer) == 0) return true; TC_LOG_TRACE("chat.system", "ChatHandler::isValidChatMessage('%s'): linked achievement (id: %u) name wasn't found in any localization", context, _achievement->ID); diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index b9cf5431162..c7c5a201262 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -40,20 +40,21 @@ struct AchievementEntry { - uint32 ID; // 0 - int32 requiredFaction; // 1 -1=all, 0=horde, 1=alliance - int32 mapID; // 2 -1=none - //uint32 parentAchievement; // 3 its Achievement parent (can`t start while parent uncomplete, use its Criteria if don`t have own, use its progress on begin) - char* name; // 4 - //char* description; // 5 - uint32 categoryId; // 6 - uint32 points; // 7 reward points - //uint32 OrderInCategory; // 8 - uint32 flags; // 9 - //uint32 icon; // 10 icon (from SpellIcon.dbc) - //char* reward; // 11 - uint32 count; // 12 - need this count of completed criterias (own or referenced achievement criterias) - uint32 refAchievement; // 13 - referenced achievement (counting of all completed criterias) + uint32 ID; // 0 + int32 Faction; // 1 -1=all, 0=horde, 1=alliance + int32 InstanceID; // 2 MapID -1=none + //uint32 Supercedes; // 3 its Achievement parent (can`t start while parent uncomplete, use its Criteria if don`t have own, use its progress on begin) + char* Title_lang; // 4 + //char* Description_lang; // 5 + uint32 Category; // 6 + uint32 Points; // 7 reward points + //uint32 UIOrder; // 8 + uint32 Flags; // 9 + //uint32 IconID; // 10 icon (from SpellIcon.dbc) + //char* Reward_lang; // 11 + uint32 MinimumCriteria; // 12 - need this count of completed criterias (own or referenced achievement criterias) + uint32 SharesCriteria; // 13 - referenced achievement (counting of all completed criterias) + //uint32 CriteriaTree; // 14 }; struct AchievementCategoryEntry diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h index 3d69165c428..ca4232da630 100644 --- a/src/server/game/DataStores/DBCfmt.h +++ b/src/server/game/DataStores/DBCfmt.h @@ -22,7 +22,7 @@ // x - skip<uint32>, X - skip<uint8>, s - char*, f - float, i - uint32, b - uint8, d - index (not included) // n - index (included), l - bool, p - field present in sql dbc, a - field absent in sql dbc -char const Achievementfmt[] = "niixsxiixixxii"; +char const Achievementfmt[] = "niixsxiixixxiix"; const std::string CustomAchievementfmt = "pppaaaapapaapp"; const std::string CustomAchievementIndex = "ID"; char const AchievementCriteriafmt[] = "niiiliiiisiiiiixxiiiiii"; |