mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-17 02:50:29 +00:00
feat(Core/Quests): Implemented quest_money_rewards (for quest with Qu… (#8610)
Fixes #8440
This commit is contained in:
@@ -751,8 +751,10 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
}
|
||||
|
||||
// Give player extra money if GetRewOrReqMoney > 0 and get ReqMoney if negative
|
||||
if (quest->GetRewOrReqMoney())
|
||||
moneyRew += quest->GetRewOrReqMoney();
|
||||
if (int32 rewOrReqMoney = quest->GetRewOrReqMoney(this))
|
||||
{
|
||||
moneyRew += rewOrReqMoney;
|
||||
}
|
||||
|
||||
if (moneyRew)
|
||||
{
|
||||
@@ -2084,23 +2086,30 @@ void Player::MoneyChanged(uint32 count)
|
||||
if (!questid)
|
||||
continue;
|
||||
|
||||
Quest const* qInfo = sObjectMgr->GetQuestTemplate(questid);
|
||||
if (qInfo && qInfo->GetRewOrReqMoney() < 0)
|
||||
if (Quest const* qInfo = sObjectMgr->GetQuestTemplate(questid))
|
||||
{
|
||||
QuestStatusData& q_status = m_QuestStatus[questid];
|
||||
int32 rewOrReqMoney = qInfo->GetRewOrReqMoney();
|
||||
if (rewOrReqMoney < 0)
|
||||
{
|
||||
QuestStatusData& q_status = m_QuestStatus[questid];
|
||||
|
||||
if (q_status.Status == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
if (int32(count) >= -qInfo->GetRewOrReqMoney())
|
||||
if (q_status.Status == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
if (CanCompleteQuest(questid))
|
||||
CompleteQuest(questid);
|
||||
if (int32(count) >= -rewOrReqMoney)
|
||||
{
|
||||
if (CanCompleteQuest(questid))
|
||||
{
|
||||
CompleteQuest(questid);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (q_status.Status == QUEST_STATUS_COMPLETE)
|
||||
{
|
||||
if (int32(count) < -rewOrReqMoney)
|
||||
{
|
||||
IncompleteQuest(questid);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (q_status.Status == QUEST_STATUS_COMPLETE)
|
||||
{
|
||||
if (int32(count) < -qInfo->GetRewOrReqMoney())
|
||||
IncompleteQuest(questid);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2262,12 +2271,12 @@ void Player::SendQuestReward(Quest const* quest, uint32 XP)
|
||||
if (getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
data << uint32(XP);
|
||||
data << uint32(quest->GetRewOrReqMoney());
|
||||
data << uint32(quest->GetRewOrReqMoney(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
data << uint32(0);
|
||||
data << uint32(quest->GetRewOrReqMoney() + quest->GetRewMoneyMaxLevel());
|
||||
data << uint32(quest->GetRewOrReqMoney(this) + quest->GetRewMoneyMaxLevel());
|
||||
}
|
||||
|
||||
data << uint32(10 * quest->CalculateHonorGain(GetQuestLevel(quest)));
|
||||
|
||||
Reference in New Issue
Block a user