aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql1
-rw-r--r--src/server/game/Entities/Player/Player.cpp10
-rw-r--r--src/server/game/Entities/Player/Player.h1
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp19
-rw-r--r--src/server/game/Globals/ObjectMgr.h1
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;
};