diff options
author | Vincent-Michael <Vincent_Michael@gmx.de> | 2012-12-04 15:56:40 +0100 |
---|---|---|
committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2012-12-04 15:58:57 +0100 |
commit | c90ec469db6987a55046d5bedd7f8b13c7f2821e (patch) | |
tree | e71d54cc580ff6931a8d8970ecd54a56e34c4d7d | |
parent | 2b3b124e0910c53daeaceacb280d51a298055b84 (diff) |
Core/Reputation:
- Fix copy and paste fail (thx zorix)
- Add new field for monthly rate quests
-rw-r--r-- | sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 1 |
5 files changed, 25 insertions, 7 deletions
diff --git a/sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql b/sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql new file mode 100644 index 00000000000..9f8341ea464 --- /dev/null +++ b/sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql @@ -0,0 +1 @@ +ALTER TABLE `reputation_reward_rate` ADD `quest_monthly_rate` FLOAT NOT NULL DEFAULT '1' AFTER `quest_weekly_rate`; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a0e732bb9f8..ee02baecd22 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6945,6 +6945,7 @@ int32 Player::CalculateReputationGain(ReputationSource source, uint32 creatureOr case REPUTATION_SOURCE_QUEST: case REPUTATION_SOURCE_DAYLIY_QUEST: case REPUTATION_SOURCE_WEEKLY_QUEST: + case REPUTATION_SOURCE_MONTHLY_QUEST: rate = sWorld->getRate(RATE_REPUTATION_LOWLEVEL_QUEST); break; case REPUTATION_SOURCE_SPELL: @@ -6977,6 +6978,9 @@ int32 Player::CalculateReputationGain(ReputationSource source, uint32 creatureOr case REPUTATION_SOURCE_WEEKLY_QUEST: repRate = repData->questWeeklyRate; break; + case REPUTATION_SOURCE_MONTHLY_QUEST: + repRate = repData->questMonthlyRate; + break; case REPUTATION_SOURCE_SPELL: repRate = repData->spellRate; break; @@ -7089,6 +7093,8 @@ void Player::RewardReputation(Quest const* quest) rep = CalculateReputationGain(REPUTATION_SOURCE_DAYLIY_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true); else if (quest->IsWeekly()) rep = CalculateReputationGain(REPUTATION_SOURCE_WEEKLY_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true); + else if (quest->IsMonthly()) + rep = CalculateReputationGain(REPUTATION_SOURCE_MONTHLY_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true); else rep = CalculateReputationGain(REPUTATION_SOURCE_QUEST, GetQuestLevel(quest), quest->RewardFactionValueIdOverride[i]/100, quest->RewardFactionId[i], true); @@ -7111,8 +7117,10 @@ void Player::RewardReputation(Quest const* quest) if (quest->IsDaily()) repPoints = CalculateReputationGain(REPUTATION_SOURCE_DAYLIY_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i], true); - else if (quest->IsDaily()) + else if (quest->IsWeekly()) repPoints = CalculateReputationGain(REPUTATION_SOURCE_WEEKLY_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i], true); + else if (quest->IsMonthly()) + repPoints = CalculateReputationGain(REPUTATION_SOURCE_MONTHLY_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i], true); else repPoints = CalculateReputationGain(REPUTATION_SOURCE_QUEST, GetQuestLevel(quest), repPoints, quest->RewardFactionId[i], true); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 108846e46dc..5787db5d81e 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -168,6 +168,7 @@ enum ReputationSource REPUTATION_SOURCE_QUEST, REPUTATION_SOURCE_DAYLIY_QUEST, REPUTATION_SOURCE_WEEKLY_QUEST, + REPUTATION_SOURCE_MONTHLY_QUEST, REPUTATION_SOURCE_SPELL }; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 7bf9d1c8fe2..74423e2b362 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6644,8 +6644,8 @@ void ObjectMgr::LoadReputationRewardRate() _repRewardRateStore.clear(); // for reload case - uint32 count = 0; // 0 1 2 3 4 5 - QueryResult result = WorldDatabase.Query("SELECT faction, quest_rate, quest_daily_rate, quest_weekly_rate, creature_rate, spell_rate FROM reputation_reward_rate"); + uint32 count = 0; // 0 1 2 3 4 5 6 + QueryResult result = WorldDatabase.Query("SELECT faction, quest_rate, quest_daily_rate, quest_weekly_rate, quest_monthly_rate, creature_rate, spell_rate FROM reputation_reward_rate"); if (!result) { sLog->outError(LOG_FILTER_SQL, ">> Loaded `reputation_reward_rate`, table is empty!"); @@ -6663,8 +6663,9 @@ void ObjectMgr::LoadReputationRewardRate() repRate.questRate = fields[1].GetFloat(); repRate.questDailyRate = fields[2].GetFloat(); repRate.questWeeklyRate = fields[3].GetFloat(); - repRate.creatureRate = fields[4].GetFloat(); - repRate.spellRate = fields[5].GetFloat(); + repRate.questMonthlyRate = fields[4].GetFloat(); + repRate.creatureRate = fields[5].GetFloat(); + repRate.spellRate = fields[6].GetFloat(); FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId); if (!factionEntry) @@ -6681,13 +6682,19 @@ void ObjectMgr::LoadReputationRewardRate() if (repRate.questDailyRate < 0.0f) { - sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_daily_rate with invalid rate %f, skipping data for faction %u", repRate.questRate, factionId); + sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_daily_rate with invalid rate %f, skipping data for faction %u", repRate.questDailyRate, factionId); continue; } if (repRate.questWeeklyRate < 0.0f) { - sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_weekly_rate with invalid rate %f, skipping data for faction %u", repRate.questRate, factionId); + sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_weekly_rate with invalid rate %f, skipping data for faction %u", repRate.questWeeklyRate, factionId); + continue; + } + + if (repRate.questMonthlyRate < 0.0f) + { + sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_monthly_rate with invalid rate %f, skipping data for faction %u", repRate.questMonthlyRate, factionId); continue; } diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 7f009bbd41d..e1df03b97b0 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -466,6 +466,7 @@ struct RepRewardRate float questRate; // We allow rate = 0.0 in database. For this case, it means that float questDailyRate; float questWeeklyRate; + float questMonthlyRate; float creatureRate; // no reputation are given at all for this faction/rate type. float spellRate; }; |