diff options
| author | megamage <none@none> | 2009-02-24 11:14:28 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-02-24 11:14:28 -0600 |
| commit | 699bc588b86a5176fce0900804fb7d00425383fe (patch) | |
| tree | 18dde44b0118d86bfeaf294f7917c7ff0310fbbd /src/game/AchievementMgr.cpp | |
| parent | 9d160c855fe950d96386165fe7f6e484b427b89d (diff) | |
[7330] Code warnings and style cleanups. Some bugs fixes. Author: VladimirMangos
1) comparison singed and unsigned values
2) redundent includes
3) wrong constructor :-part field initilization
4) unused not-/*name*/-guarded args in template/virtual functions that not required like args.
5) explicitly list not implemented achievement types.
Also bugs fixed:
1) Drop wrong phase mask 0 check in WorldObject::InSamePhase.
2) ArenaTeamMember::ModifyPersonalRating incorrect work with move points in negative with infinity values in result.
3) ArenaTeam::SaveToDB code send uint64 value to string with arg format %u.
--HG--
branch : trunk
Diffstat (limited to 'src/game/AchievementMgr.cpp')
| -rw-r--r-- | src/game/AchievementMgr.cpp | 140 |
1 files changed, 105 insertions, 35 deletions
diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 7b902869fcc..989c1be35d9 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -293,7 +293,7 @@ void AchievementMgr::LoadFromDB(QueryResult *achievementResult, QueryResult *cri time_t date = time_t(fields[2].GetUInt64()); AchievementCriteriaEntry const* criteria = sAchievementCriteriaStore.LookupEntry(id); - if(!criteria || criteria->timeLimit && date + criteria->timeLimit < time(NULL)) + if (!criteria || (criteria->timeLimit && time_t(date + criteria->timeLimit) < time(NULL))) continue; CriteriaProgress& progress = m_criteriaProgress[id]; @@ -401,8 +401,8 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui if(!achievement) continue; - if(achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_HORDE && GetPlayer()->GetTeam() != HORDE || - achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_ALLIANCE && GetPlayer()->GetTeam() != ALLIANCE) + if ((achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_HORDE && GetPlayer()->GetTeam() != HORDE) || + (achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_ALLIANCE && GetPlayer()->GetTeam() != ALLIANCE)) continue; switch (type) @@ -440,7 +440,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui for(QuestStatusMap::iterator itr = GetPlayer()->getQuestStatusMap().begin(); itr!=GetPlayer()->getQuestStatusMap().end(); itr++) { Quest const* quest = objmgr.GetQuestTemplate(itr->first); - if(itr->second.m_rewarded && quest->GetZoneOrSort() == achievementCriteria->complete_quests_in_zone.zoneID) + if(itr->second.m_rewarded && quest->GetZoneOrSort() >= 0 && uint32(quest->GetZoneOrSort()) == achievementCriteria->complete_quests_in_zone.zoneID) counter++; } SetCriteriaProgress(achievementCriteria, counter); @@ -650,6 +650,77 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui SetCriteriaProgress(achievementCriteria, 1, true); break; } + case ACHIEVEMENT_CRITERIA_TYPE_WIN_BG: + case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY: + case ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE: + case ACHIEVEMENT_CRITERIA_TYPE_DEATH: + case ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON: + case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID: + case ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM: + case ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: + case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: + case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA: + case ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA: + case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL: + case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING: + case ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING: + case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL: + case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK: + case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS: + case ACHIEVEMENT_CRITERIA_TYPE_HK_RACE: + case ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE: + case ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE: + case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS: + case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS: + case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS: + case ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS: + case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD: + case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING: + case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER: + case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL: + case ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY: + case ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT: + case ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL: + case ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT: + case ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE: + case ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL: + case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE: + case ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS: + case ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID: + case ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED: + case ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION: + case ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION: + case ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS: + case ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED: + case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_POWER: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_STAT: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_ARMOR: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED: + case ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CASTED: + case ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED: + case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED: + case ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED: + case ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN: + case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: + case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE: + case ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL: + case ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS: + case ACHIEVEMENT_CRITERIA_TYPE_TOTAL: + break; // Not implemented yet :( } if(IsCompletedCriteria(achievementCriteria)) CompletedCriteria(achievementCriteria); @@ -682,27 +753,27 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve switch(achievementCriteria->requiredType) { case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL: - if(achievement->ID == 467 && GetPlayer()->getClass() != CLASS_SHAMAN || - achievement->ID == 466 && GetPlayer()->getClass() != CLASS_DRUID || - achievement->ID == 465 && GetPlayer()->getClass() != CLASS_PALADIN || - achievement->ID == 464 && GetPlayer()->getClass() != CLASS_PRIEST || - achievement->ID == 463 && GetPlayer()->getClass() != CLASS_WARLOCK || - achievement->ID == 462 && GetPlayer()->getClass() != CLASS_HUNTER || - achievement->ID == 461 && GetPlayer()->getClass() != CLASS_DEATH_KNIGHT || - achievement->ID == 460 && GetPlayer()->getClass() != CLASS_MAGE || - achievement->ID == 459 && GetPlayer()->getClass() != CLASS_WARRIOR || - achievement->ID == 458 && GetPlayer()->getClass() != CLASS_ROGUE || - - achievement->ID == 1404 && GetPlayer()->getRace() != RACE_GNOME || - achievement->ID == 1405 && GetPlayer()->getRace() != RACE_BLOODELF || - achievement->ID == 1406 && GetPlayer()->getRace() != RACE_DRAENEI || - achievement->ID == 1407 && GetPlayer()->getRace() != RACE_DWARF || - achievement->ID == 1408 && GetPlayer()->getRace() != RACE_HUMAN || - achievement->ID == 1409 && GetPlayer()->getRace() != RACE_NIGHTELF || - achievement->ID == 1410 && GetPlayer()->getRace() != RACE_ORC || - achievement->ID == 1411 && GetPlayer()->getRace() != RACE_TAUREN || - achievement->ID == 1412 && GetPlayer()->getRace() != RACE_TROLL || - achievement->ID == 1413 && GetPlayer()->getRace() != RACE_UNDEAD_PLAYER ) + if ((achievement->ID == 467 && GetPlayer()->getClass() != CLASS_SHAMAN ) || + (achievement->ID == 466 && GetPlayer()->getClass() != CLASS_DRUID ) || + (achievement->ID == 465 && GetPlayer()->getClass() != CLASS_PALADIN ) || + (achievement->ID == 464 && GetPlayer()->getClass() != CLASS_PRIEST ) || + (achievement->ID == 463 && GetPlayer()->getClass() != CLASS_WARLOCK ) || + (achievement->ID == 462 && GetPlayer()->getClass() != CLASS_HUNTER ) || + (achievement->ID == 461 && GetPlayer()->getClass() != CLASS_DEATH_KNIGHT)|| + (achievement->ID == 460 && GetPlayer()->getClass() != CLASS_MAGE ) || + (achievement->ID == 459 && GetPlayer()->getClass() != CLASS_WARRIOR ) || + (achievement->ID == 458 && GetPlayer()->getClass() != CLASS_ROGUE ) || + + (achievement->ID == 1404 && GetPlayer()->getRace() != RACE_GNOME ) || + (achievement->ID == 1405 && GetPlayer()->getRace() != RACE_BLOODELF ) || + (achievement->ID == 1406 && GetPlayer()->getRace() != RACE_DRAENEI ) || + (achievement->ID == 1407 && GetPlayer()->getRace() != RACE_DWARF ) || + (achievement->ID == 1408 && GetPlayer()->getRace() != RACE_HUMAN ) || + (achievement->ID == 1409 && GetPlayer()->getRace() != RACE_NIGHTELF ) || + (achievement->ID == 1410 && GetPlayer()->getRace() != RACE_ORC ) || + (achievement->ID == 1411 && GetPlayer()->getRace() != RACE_TAUREN ) || + (achievement->ID == 1412 && GetPlayer()->getRace() != RACE_TROLL ) || + (achievement->ID == 1413 && GetPlayer()->getRace() != RACE_UNDEAD_PLAYER) ) return false; return progress->counter >= achievementCriteria->reach_level.level; case ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT: @@ -837,10 +908,9 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entry, if(entry->timeLimit) { time_t now = time(NULL); - if(progress->date + entry->timeLimit < now) - { + if(time_t(progress->date + entry->timeLimit) < now) progress->counter = 1; - } + // also it seems illogical, the timeframe will be extended at every criteria update progress->date = now; } @@ -972,7 +1042,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaList() barGoLink bar(1); bar.step(); - sLog.outString(""); + sLog.outString(); sLog.outErrorDb(">> Loaded 0 achievement criteria."); return; } @@ -1003,7 +1073,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements() barGoLink bar(1); bar.step(); - sLog.outString(""); + sLog.outString(); sLog.outString(">> Loaded 0 realm completed achievements . DB table `character_achievement` is empty."); return; } @@ -1018,7 +1088,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements() delete result; - sLog.outString(""); + sLog.outString(); sLog.outString(">> Loaded %u realm completed achievements.",m_allCompletedAchievements.size()); } @@ -1035,7 +1105,7 @@ void AchievementGlobalMgr::LoadRewards() bar.step(); - sLog.outString(""); + sLog.outString(); sLog.outErrorDb(">> Loaded 0 achievement rewards. DB table `achievement_reward` is empty."); return; } @@ -1144,7 +1214,7 @@ void AchievementGlobalMgr::LoadRewardLocales() bar.step(); - sLog.outString(""); + sLog.outString(); sLog.outString(">> Loaded 0 achievement reward locale strings. DB table `locales_achievement_reward` is empty."); return; } @@ -1174,7 +1244,7 @@ void AchievementGlobalMgr::LoadRewardLocales() int idx = objmgr.GetOrNewIndexForLocale(LocaleConstant(i)); if(idx >= 0) { - if(data.subject.size() <= idx) + if(data.subject.size() <= size_t(idx)) data.subject.resize(idx+1); data.subject[idx] = str; @@ -1186,7 +1256,7 @@ void AchievementGlobalMgr::LoadRewardLocales() int idx = objmgr.GetOrNewIndexForLocale(LocaleConstant(i)); if(idx >= 0) { - if(data.text.size() <= idx) + if(data.text.size() <= size_t(idx)) data.text.resize(idx+1); data.text[idx] = str; |
