refactor(Scripts/Commands): Update cs_quest to the new model (#9267)

This commit is contained in:
Skjalf
2021-11-24 01:21:16 -03:00
committed by GitHub
parent 91552e240e
commit 2187470df7
12 changed files with 716 additions and 204 deletions

View File

@@ -184,38 +184,47 @@ void Quest::LoadQuestTemplateAddon(Field* fields)
Flags |= QUEST_FLAGS_AUTO_ACCEPT;
}
uint32 Quest::XPValue(Player* player) const
uint32 Quest::XPValue(uint8 playerLevel) const
{
if (player)
int32 quest_level = (Level == -1 ? playerLevel : Level);
const QuestXPEntry* xpentry = sQuestXPStore.LookupEntry(quest_level);
if (!xpentry)
{
int32 quest_level = (Level == -1 ? player->getLevel() : Level);
const QuestXPEntry* xpentry = sQuestXPStore.LookupEntry(quest_level);
if (!xpentry)
return 0;
int32 diffFactor = 2 * (quest_level - player->getLevel()) + 20;
if (diffFactor < 1)
diffFactor = 1;
else if (diffFactor > 10)
diffFactor = 10;
uint32 xp = diffFactor * xpentry->Exp[RewardXPDifficulty] / 10;
if (xp <= 100)
xp = 5 * ((xp + 2) / 5);
else if (xp <= 500)
xp = 10 * ((xp + 5) / 10);
else if (xp <= 1000)
xp = 25 * ((xp + 12) / 25);
else
xp = 50 * ((xp + 25) / 50);
return xp;
return 0;
}
return 0;
int32 diffFactor = 2 * (quest_level - playerLevel) + 20;
if (diffFactor < 1)
{
diffFactor = 1;
}
else if (diffFactor > 10)
{
diffFactor = 10;
}
uint32 xp = diffFactor * xpentry->Exp[RewardXPDifficulty] / 10;
if (xp <= 100)
{
xp = 5 * ((xp + 2) / 5);
}
else if (xp <= 500)
{
xp = 10 * ((xp + 5) / 10);
}
else if (xp <= 1000)
{
xp = 25 * ((xp + 12) / 25);
}
else
{
xp = 50 * ((xp + 25) / 50);
}
return xp;
}
int32 Quest::GetRewOrReqMoney(Player* player /*= nullptr*/) const
int32 Quest::GetRewOrReqMoney(uint8 playerLevel) const
{
int32 rewardedMoney = RewardMoney;
if (rewardedMoney < 0)
@@ -223,9 +232,9 @@ int32 Quest::GetRewOrReqMoney(Player* player /*= nullptr*/) const
return rewardedMoney;
}
if (player && RewardMoneyDifficulty)
if (playerLevel && RewardMoneyDifficulty)
{
if (uint32 questRewardedMoney = sObjectMgr->GetQuestMoneyReward(player->getLevel(), RewardMoneyDifficulty))
if (uint32 questRewardedMoney = sObjectMgr->GetQuestMoneyReward(playerLevel, RewardMoneyDifficulty))
{
rewardedMoney = questRewardedMoney;
}