mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-25 14:46:24 +00:00
feat(Core/Quests): Implemented quest_money_rewards (for quest with Qu… (#8610)
Fixes #8440
This commit is contained in:
@@ -424,7 +424,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
|
||||
data << uint32(0);
|
||||
}
|
||||
|
||||
data << uint32(quest->GetRewOrReqMoney());
|
||||
data << uint32(quest->GetRewOrReqMoney(_session->GetPlayer()));
|
||||
data << uint32(quest->XPValue(_session->GetPlayer()) * _session->GetPlayer()->GetQuestRate());
|
||||
}
|
||||
|
||||
@@ -506,7 +506,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const
|
||||
if (quest->HasFlag(QUEST_FLAGS_HIDDEN_REWARDS))
|
||||
data << uint32(0); // Hide money rewarded
|
||||
else
|
||||
data << uint32(quest->GetRewOrReqMoney()); // reward money (below max lvl)
|
||||
data << uint32(quest->GetRewOrReqMoney(_session->GetPlayer())); // reward money (below max lvl)
|
||||
|
||||
data << uint32(quest->GetRewMoneyMaxLevel()); // used in XP calculation at client
|
||||
data << uint32(quest->GetRewSpell()); // reward spell, this spell will display (icon) (cast if RewSpellCast == 0)
|
||||
@@ -650,7 +650,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI
|
||||
data << uint32(0);
|
||||
}
|
||||
|
||||
data << uint32(quest->GetRewOrReqMoney());
|
||||
data << uint32(quest->GetRewOrReqMoney(_session->GetPlayer()));
|
||||
data << uint32(quest->XPValue(_session->GetPlayer()) * _session->GetPlayer()->GetQuestRate());
|
||||
|
||||
// rewarded honor points. Multiply with 10 to satisfy client
|
||||
|
||||
@@ -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