mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-19 22:49:39 -04:00
Core/Quests: Add repeatable quest rate to world.reputation_reward_rate
This commit is contained in:
@@ -0,0 +1 @@
|
||||
ALTER TABLE `reputation_reward_rate` ADD `quest_repeteable_rate` FLOAT NOT NULL DEFAULT '1' AFTER `quest_weekly_rate`;
|
||||
@@ -6953,6 +6953,7 @@ int32 Player::CalculateReputationGain(ReputationSource source, uint32 creatureOr
|
||||
case REPUTATION_SOURCE_DAILY_QUEST:
|
||||
case REPUTATION_SOURCE_WEEKLY_QUEST:
|
||||
case REPUTATION_SOURCE_MONTHLY_QUEST:
|
||||
case REPUTATION_SOURCE_REPEATABLE_QUEST:
|
||||
rate = sWorld->getRate(RATE_REPUTATION_LOWLEVEL_QUEST);
|
||||
break;
|
||||
case REPUTATION_SOURCE_SPELL:
|
||||
@@ -6988,6 +6989,9 @@ int32 Player::CalculateReputationGain(ReputationSource source, uint32 creatureOr
|
||||
case REPUTATION_SOURCE_MONTHLY_QUEST:
|
||||
repRate = repData->questMonthlyRate;
|
||||
break;
|
||||
case REPUTATION_SOURCE_REPEATABLE_QUEST:
|
||||
repRate = repData->questRepeatableRate;
|
||||
break;
|
||||
case REPUTATION_SOURCE_SPELL:
|
||||
repRate = repData->spellRate;
|
||||
break;
|
||||
@@ -7091,6 +7095,8 @@ void Player::RewardReputation(Quest const* quest)
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_WEEKLY_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
else if (quest->IsMonthly())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_MONTHLY_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
else if (quest->IsRepeatable())
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_REPEATABLE_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
else
|
||||
rep = CalculateReputationGain(REPUTATION_SOURCE_QUEST, GetQuestLevel(quest), rep, quest->RewardFactionId[i], noQuestBonus);
|
||||
|
||||
|
||||
@@ -169,6 +169,7 @@ enum ReputationSource
|
||||
REPUTATION_SOURCE_DAILY_QUEST,
|
||||
REPUTATION_SOURCE_WEEKLY_QUEST,
|
||||
REPUTATION_SOURCE_MONTHLY_QUEST,
|
||||
REPUTATION_SOURCE_REPEATABLE_QUEST,
|
||||
REPUTATION_SOURCE_SPELL
|
||||
};
|
||||
|
||||
|
||||
@@ -6699,8 +6699,8 @@ void ObjectMgr::LoadReputationRewardRate()
|
||||
|
||||
_repRewardRateStore.clear(); // for reload case
|
||||
|
||||
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");
|
||||
uint32 count = 0; // 0 1 2 3 4 5 6 7
|
||||
QueryResult result = WorldDatabase.Query("SELECT faction, quest_rate, quest_daily_rate, quest_weekly_rate, quest_monthly_rate, quest_repeatable_rate, creature_rate, spell_rate FROM reputation_reward_rate");
|
||||
if (!result)
|
||||
{
|
||||
TC_LOG_ERROR(LOG_FILTER_SERVER_LOADING, ">> Loaded `reputation_reward_rate`, table is empty!");
|
||||
@@ -6719,8 +6719,9 @@ void ObjectMgr::LoadReputationRewardRate()
|
||||
repRate.questDailyRate = fields[2].GetFloat();
|
||||
repRate.questWeeklyRate = fields[3].GetFloat();
|
||||
repRate.questMonthlyRate = fields[4].GetFloat();
|
||||
repRate.creatureRate = fields[5].GetFloat();
|
||||
repRate.spellRate = fields[6].GetFloat();
|
||||
repRate.questRepeatableRate = fields[5].GetFloat();
|
||||
repRate.creatureRate = fields[6].GetFloat();
|
||||
repRate.spellRate = fields[7].GetFloat();
|
||||
|
||||
FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId);
|
||||
if (!factionEntry)
|
||||
@@ -6753,6 +6754,12 @@ void ObjectMgr::LoadReputationRewardRate()
|
||||
continue;
|
||||
}
|
||||
|
||||
if (repRate.questRepeatableRate < 0.0f)
|
||||
{
|
||||
TC_LOG_ERROR(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_repeatable_rate with invalid rate %f, skipping data for faction %u", repRate.questRepeatableRate, factionId);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (repRate.creatureRate < 0.0f)
|
||||
{
|
||||
TC_LOG_ERROR(LOG_FILTER_SQL, "Table reputation_reward_rate has creature_rate with invalid rate %f, skipping data for faction %u", repRate.creatureRate, factionId);
|
||||
|
||||
@@ -485,6 +485,7 @@ struct RepRewardRate
|
||||
float questDailyRate;
|
||||
float questWeeklyRate;
|
||||
float questMonthlyRate;
|
||||
float questRepeatableRate;
|
||||
float creatureRate; // no reputation are given at all for this faction/rate type.
|
||||
float spellRate;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user