mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 10:37:02 +00:00
[11759] Fixed money reward for max level and repeatable quests
* Remove excluding normal repeatable quests not first cases for money/xp rewards. This is not confirmed functionality and possible related wrong repeating flag set for "first" repeating quest versions. Whern exist normal quest and second repeating quest with same details. * At max level positive RewOrReqMoney already included in RewMoneyMaxLevel and then not need rewarded\ * When RewOrReqMoney > RewMoneyMaxLevel then RewMoneyMaxLevel values ignored and always used RewOrReqMoney as money reward. Thanks to Lynx3d for original problem research.
This commit is contained in:
parent
2fab507ed6
commit
0220101f7e
2 changed files with 22 additions and 18 deletions
|
|
@ -13985,33 +13985,37 @@ void Player::RewardQuest(Quest const *pQuest, uint32 reward, Object* questGiver,
|
||||||
|
|
||||||
QuestStatusData& q_status = mQuestStatus[quest_id];
|
QuestStatusData& q_status = mQuestStatus[quest_id];
|
||||||
|
|
||||||
// Not give XP in case already completed once repeatable quest
|
// Used for client inform but rewarded only in case not max level
|
||||||
uint32 xp = 0;
|
uint32 xp = uint32(pQuest->XPValue(this) * sWorld.getConfig(CONFIG_FLOAT_RATE_XP_QUEST));
|
||||||
|
|
||||||
// Not give XP (and money replacement) in case already completed once repeatable quest (not daily/weekly cases)
|
|
||||||
if (!q_status.m_rewarded || pQuest->IsDailyOrWeekly())
|
|
||||||
{
|
|
||||||
xp = uint32(pQuest->XPValue(this)*sWorld.getConfig(CONFIG_FLOAT_RATE_XP_QUEST));
|
|
||||||
|
|
||||||
if (getLevel() < sWorld.getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL))
|
if (getLevel() < sWorld.getConfig(CONFIG_UINT32_MAX_PLAYER_LEVEL))
|
||||||
|
{
|
||||||
GiveXP(xp , NULL);
|
GiveXP(xp , NULL);
|
||||||
|
|
||||||
|
// Give player extra money (for max level already included in pQuest->GetRewMoneyMaxLevel())
|
||||||
|
if (pQuest->GetRewOrReqMoney() > 0)
|
||||||
|
{
|
||||||
|
ModifyMoney(pQuest->GetRewOrReqMoney());
|
||||||
|
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, pQuest->GetRewOrReqMoney());
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// reward money for max level already included in pQuest->GetRewMoneyMaxLevel()
|
||||||
uint32 money = uint32(pQuest->GetRewMoneyMaxLevel() * sWorld.getConfig(CONFIG_FLOAT_RATE_DROP_MONEY));
|
uint32 money = uint32(pQuest->GetRewMoneyMaxLevel() * sWorld.getConfig(CONFIG_FLOAT_RATE_DROP_MONEY));
|
||||||
|
|
||||||
|
// reward money used if > xp replacement money
|
||||||
|
if (pQuest->GetRewOrReqMoney() > int32(money))
|
||||||
|
money = pQuest->GetRewOrReqMoney();
|
||||||
|
|
||||||
ModifyMoney(money);
|
ModifyMoney(money);
|
||||||
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, money);
|
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, money);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Give player extra money if GetRewOrReqMoney > 0 and get ReqMoney if negative
|
// req money case
|
||||||
if (pQuest->GetRewOrReqMoney())
|
if (pQuest->GetRewOrReqMoney() < 0)
|
||||||
{
|
|
||||||
ModifyMoney(pQuest->GetRewOrReqMoney());
|
ModifyMoney(pQuest->GetRewOrReqMoney());
|
||||||
|
|
||||||
if (pQuest->GetRewOrReqMoney() > 0)
|
|
||||||
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, pQuest->GetRewOrReqMoney());
|
|
||||||
}
|
|
||||||
|
|
||||||
// honor reward
|
// honor reward
|
||||||
if (uint32 honor = pQuest->CalculateRewardHonor(getLevel()))
|
if (uint32 honor = pQuest->CalculateRewardHonor(getLevel()))
|
||||||
RewardHonor(NULL, 0, honor);
|
RewardHonor(NULL, 0, honor);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11758"
|
#define REVISION_NR "11759"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue