diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Achievements/AchievementMgr.cpp | 11 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.h | 8 | ||||
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/QuestHandler.cpp | 14 |
3 files changed, 20 insertions, 13 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index fdf5c610486..a78f6d32b82 100755 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -868,7 +868,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui break; case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT: { - SetCriteriaProgress(achievementCriteria, GetPlayer()->getRewardedQuests().size()); + SetCriteriaProgress(achievementCriteria, GetPlayer()->GetRewardedQuestCount()); break; } case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY: @@ -907,12 +907,14 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui if (miscValue1 && miscValue1 != achievementCriteria->complete_quests_in_zone.zoneID) continue; - uint32 counter =0; - for (RewardedQuestSet::const_iterator itr = GetPlayer()->getRewardedQuests().begin(); itr != GetPlayer()->getRewardedQuests().end(); ++itr) + uint32 counter = 0; + + const RewardedQuestSet &rewQuests = GetPlayer()->getRewardedQuests(); + for (RewardedQuestSet::const_iterator itr = rewQuests.begin(); itr != rewQuests.end(); ++itr) { Quest const* quest = sObjectMgr->GetQuestTemplate(*itr); if (quest && quest->GetZoneOrSort() >= 0 && uint32(quest->GetZoneOrSort()) == achievementCriteria->complete_quests_in_zone.zoneID) - counter++; + ++counter; } SetCriteriaProgress(achievementCriteria, counter); break; @@ -2422,7 +2424,6 @@ void AchievementGlobalMgr::LoadRewards() do { - Field *fields = result->Fetch(); uint32 entry = fields[0].GetUInt32(); const AchievementEntry* pAchievement = sAchievementStore.LookupEntry(entry); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 6520b67183c..89e4839b967 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1525,9 +1525,15 @@ class Player : public Unit, public GridObject<Player> UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED); } - RewardedQuestSet& getRewardedQuests() { return m_RewardedQuests; } + const RewardedQuestSet& getRewardedQuests() const { return m_RewardedQuests; } QuestStatusMap& getQuestStatusMap() { return m_QuestStatus; }; + size_t GetRewardedQuestCount() const { return m_RewardedQuests.size(); } + bool IsQuestRewarded(uint32 quest_id) const + { + return m_RewardedQuests.find(quest_id) != m_RewardedQuests.end(); + } + const uint64& GetSelection() const { return m_curSelection; } Unit *GetSelectedUnit() const; Player *GetSelectedPlayer() const; diff --git a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp index 5a0c1ccde15..47ccd013f75 100755 --- a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp @@ -31,9 +31,6 @@ #include "Battleground.h" #include "BattlegroundAV.h" #include "ScriptMgr.h" -#include "ConditionMgr.h" -#include "Creature.h" -#include "CreatureAI.h" #include "GameObjectAI.h" void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recv_data) @@ -692,7 +689,7 @@ uint32 WorldSession::getDialogStatus(Player *pPlayer, Object* questgiver, uint32 { if (pPlayer->SatisfyQuestLevel(pQuest, false)) { - if (pQuest->IsAutoComplete() || (pQuest->IsRepeatable() && pPlayer->getRewardedQuests().find(quest_id) != pPlayer->getRewardedQuests().end())) + if (pQuest->IsAutoComplete() || (pQuest->IsRepeatable() && pPlayer->IsQuestRewarded(quest_id))) result2 = DIALOG_STATUS_REWARD_REP; else if (pPlayer->getLevel() <= ((pPlayer->GetQuestLevel(pQuest) == -1) ? pPlayer->getLevel() : pPlayer->GetQuestLevel(pQuest) + sWorld->getIntConfig(CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF))) { @@ -769,10 +766,13 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket void WorldSession::HandleQueryQuestsCompleted(WorldPacket & /*recv_data*/) { - WorldPacket data(SMSG_QUERY_QUESTS_COMPLETED_RESPONSE, 4+4*_player->getRewardedQuests().size()); - data << uint32(_player->getRewardedQuests().size()); + size_t rew_count = _player->GetRewardedQuestCount(); - for (RewardedQuestSet::const_iterator itr = _player->getRewardedQuests().begin(); itr != _player->getRewardedQuests().end(); ++itr) + WorldPacket data(SMSG_QUERY_QUESTS_COMPLETED_RESPONSE, 4 + 4 * rew_count); + data << uint32(rew_count); + + const RewardedQuestSet &rewQuests = _player->getRewardedQuests(); + for (RewardedQuestSet::const_iterator itr = rewQuests.begin(); itr != rewQuests.end(); ++itr) data << uint32(*itr); SendPacket(&data); |