diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 49 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 11 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 40 | ||||
| -rw-r--r-- | src/server/game/Quests/QuestDef.cpp | 204 | ||||
| -rw-r--r-- | src/server/game/Quests/QuestDef.h | 14 | ||||
| -rw-r--r-- | src/server/game/Reputation/ReputationMgr.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/QuestPackets.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/QuestPackets.h | 5 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_lookup.cpp | 40 |
10 files changed, 150 insertions, 224 deletions
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 142b379770c..2a15bfc310a 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -279,7 +279,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) { WorldPackets::NPC::ClientGossipText& text = packet.GossipText[count]; text.QuestID = questID; - text.ContentTuningID = quest->GetContentTuningId(); + text.ContentTuningID = 0; text.QuestType = item.QuestIcon; text.QuestFlags[0] = quest->GetFlags(); text.QuestFlags[1] = quest->GetFlagsEx(); @@ -407,7 +407,7 @@ void PlayerMenu::SendQuestGiverQuestListMessage(Object* questgiver) questList.QuestDataText.emplace_back(); WorldPackets::NPC::ClientGossipText& text = questList.QuestDataText.back(); text.QuestID = questID; - text.ContentTuningID = quest->GetContentTuningId(); + text.ContentTuningID = 0; text.QuestType = questMenuItem.QuestIcon; text.QuestFlags[0] = quest->GetFlags(); text.QuestFlags[1] = quest->GetFlagsEx(); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b0ec0e6dfd2..f17561bd77b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -13787,51 +13787,6 @@ uint32 Player::GetGossipMenuForSource(WorldObject* source) /*** QUEST SYSTEM ***/ /*********************************************************/ -int32 Player::GetQuestMinLevel(Quest const* quest) const -{ - return GetQuestMinLevel(quest->GetContentTuningId()); -} - -int32 Player::GetQuestMinLevel(uint32 contentTuningId) const -{ - if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(contentTuningId)) - { - ChrRacesEntry const* race = sChrRacesStore.AssertEntry(GetRace()); - FactionTemplateEntry const* raceFaction = sFactionTemplateStore.AssertEntry(race->FactionID); - int32 questFactionGroup = sContentTuningStore.AssertEntry(contentTuningId)->GetScalingFactionGroup(); - if (questFactionGroup && raceFaction->FactionGroup != questFactionGroup) - return questLevels->MaxLevel; - - return questLevels->MinLevelWithDelta; - } - - return 0; -} - -int32 Player::GetQuestLevel(Quest const* quest) const -{ - if (!quest) - return 0; - - return GetQuestLevel(quest->GetContentTuningId()); -} - -int32 Player::GetQuestLevel(uint32 contentTuningId) const -{ - if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(contentTuningId)) - { - int32 minLevel = GetQuestMinLevel(contentTuningId); - int32 maxLevel = questLevels->MaxLevel; - int32 level = GetLevel(); - if (level >= minLevel) - return std::min(level, maxLevel); - - return minLevel; - } - - return 0; -} - void Player::PrepareQuestMenu(ObjectGuid guid) { QuestRelationResult objectQR; @@ -13972,7 +13927,7 @@ bool Player::CanSeeStartQuest(Quest const* quest) const SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) && SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false) && SatisfyQuestExpansion(quest, false)) { - return int32(GetLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF)) >= GetQuestMinLevel(quest); + return int32(GetLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF)) >= quest->GetQuestMinLevel(); } return false; @@ -14931,7 +14886,7 @@ bool Player::SatisfyQuestLevel(Quest const* qInfo, bool msg) const bool Player::SatisfyQuestMinLevel(Quest const* qInfo, bool msg) const { - if (GetLevel() < GetQuestMinLevel(qInfo)) + if (GetLevel() < qInfo->GetQuestMinLevel()) { if (msg) { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 39e3562ade2..2fd292adc0d 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1504,10 +1504,13 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> /*** QUEST SYSTEM ***/ /*********************************************************/ - int32 GetQuestMinLevel(Quest const* quest) const; - int32 GetQuestMinLevel(uint32 contentTuningId) const; - int32 GetQuestLevel(Quest const* quest) const; - int32 GetQuestLevel(uint32 contentTuningId) const; + int32 GetQuestLevel(Quest const* quest) const + { + if (!quest) + return GetLevel(); + return quest->GetQuestLevel() > 0 ? quest->GetQuestLevel() : std::min<int32>(GetLevel(), quest->GetQuestMaxScalingLevel()); + } + void PrepareQuestMenu(ObjectGuid guid); void SendPreparedQuest(WorldObject* source); bool IsActiveQuest(uint32 quest_id) const; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 69ed68c6dd1..7fa2f56f1fb 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4476,37 +4476,37 @@ void ObjectMgr::LoadQuests() _exclusiveQuestGroups.clear(); QueryResult result = WorldDatabase.Query("SELECT " - //0 1 2 3 4 5 6 7 8 9 - "ID, QuestType, QuestPackageID, ContentTuningID, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " - //10 11 12 13 14 15 16 + //0 1 2 3 4 5 6 7 8 9 10 11 12 + "ID, QuestType, QuestLevel, QuestScalingFactionGroup, QuestMaxScalingLevel, QuestPackageID, QuestMinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " + //13 14 15 16 17 18 19 "RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " - //17 18 19 20 21 22 + //20 21 22 23 24 25 "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, " - //23 24 25 26 27 28 29 30 + //26 27 28 29 30 31 32 33 "RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " - //31 32 33 34 35 36 37 38 + //34 35 36 37 38 39 40 41 "RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " - //39 40 41 42 43 44 + //42 43 44 45 46 47 "RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " - //45 46 47 48 49 50 + //48 49 50 51 52 53 "RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " - //51 52 53 54 55 56 + //54 55 56 57 58 59 "RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " - //57 58 59 60 61 62 63 64 + //60 61 62 63 64 65 66 67 "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, " - //65 66 67 68 + //68 69 70 71 "PortraitGiver, PortraitGiverMount, PortraitGiverModelSceneID, PortraitTurnIn, " - //69 70 71 72 73 74 75 76 + //72 73 74 75 76 77 78 79 "RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, " - //77 78 79 80 81 82 83 84 + //80 81 82 83 84 85 86 87 "RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, " - //85 86 87 88 89 + //88 89 90 91 92 "RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " - //90 91 92 93 94 95 96 97 + //93 94 95 96 97 98 99 100 "RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " - //98 99 100 101 102 103 104 105 106 + //101 102 103 104 105 106 107 108 109 "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, TreasurePickerID, Expansion, ManagedWorldStateID, QuestSessionBonus, " - //107 108 109 110 111 112 113 114 115 + //110 111 112 113 114 115 116 117 118 "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog " "FROM quest_template"); if (!result) @@ -4717,12 +4717,6 @@ void ObjectMgr::LoadQuests() } } - if (qinfo->_contentTuningID && !sContentTuningStore.LookupEntry(qinfo->_contentTuningID)) - { - TC_LOG_ERROR("sql.sql", "Quest {} has `ContentTuningID` = {} but content tuning with this id does not exist.", - qinfo->GetQuestId(), qinfo->_contentTuningID); - } - // client quest log visual (area case) if (qinfo->_questSortID > 0) { diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 68de71f0c69..c8e27e41795 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -33,34 +33,37 @@ Quest::Quest(Field* questRecord) { _id = questRecord[0].GetUInt32(); _type = questRecord[1].GetUInt8(); - _packageID = questRecord[2].GetUInt32(); - _contentTuningID = questRecord[3].GetInt32(); - _questSortID = questRecord[4].GetInt16(); - _questInfoID = questRecord[5].GetUInt16(); - _suggestedPlayers = questRecord[6].GetUInt8(); - _nextQuestInChain = questRecord[7].GetUInt32(); - _rewardXPDifficulty = questRecord[8].GetUInt32(); - _rewardXPMultiplier = questRecord[9].GetFloat(); - _rewardMoneyDifficulty = questRecord[10].GetUInt32(); - _rewardMoneyMultiplier = questRecord[11].GetFloat(); - _rewardBonusMoney = questRecord[12].GetUInt32(); - _rewardSpell = questRecord[13].GetUInt32(); - _rewardHonor = questRecord[14].GetUInt32(); - _rewardKillHonor = questRecord[15].GetUInt32(); - _sourceItemId = questRecord[16].GetUInt32(); - _rewardArtifactXPDifficulty = questRecord[17].GetUInt32(); - _rewardArtifactXPMultiplier = questRecord[18].GetFloat(); - _rewardArtifactCategoryID = questRecord[19].GetUInt32(); - _flags = questRecord[20].GetUInt32(); - _flagsEx = questRecord[21].GetUInt32(); - _flagsEx2 = questRecord[22].GetUInt32(); + _level = questRecord[2].GetInt32(); + _scalingFactionGroup = questRecord[3].GetInt32(); + _maxScalingLevel = questRecord[4].GetInt32(); + _packageID = questRecord[5].GetUInt32(); + _minLevel = questRecord[6].GetUInt32(); + _questSortID = questRecord[7].GetInt16(); + _questInfoID = questRecord[8].GetUInt16(); + _suggestedPlayers = questRecord[9].GetUInt8(); + _nextQuestInChain = questRecord[10].GetUInt32(); + _rewardXPDifficulty = questRecord[11].GetUInt32(); + _rewardXPMultiplier = questRecord[12].GetFloat(); + _rewardMoneyDifficulty = questRecord[13].GetUInt32(); + _rewardMoneyMultiplier = questRecord[14].GetFloat(); + _rewardBonusMoney = questRecord[15].GetUInt32(); + _rewardSpell = questRecord[16].GetUInt32(); + _rewardHonor = questRecord[17].GetUInt32(); + _rewardKillHonor = questRecord[18].GetUInt32(); + _sourceItemId = questRecord[19].GetUInt32(); + _rewardArtifactXPDifficulty = questRecord[20].GetUInt32(); + _rewardArtifactXPMultiplier = questRecord[21].GetFloat(); + _rewardArtifactCategoryID = questRecord[22].GetUInt32(); + _flags = questRecord[23].GetUInt32(); + _flagsEx = questRecord[24].GetUInt32(); + _flagsEx2 = questRecord[25].GetUInt32(); for (uint32 i = 0; i < QUEST_ITEM_DROP_COUNT; ++i) { - RewardItemId[i] = questRecord[23 + i * 4].GetUInt32(); - RewardItemCount[i] = questRecord[24 + i * 4].GetUInt32(); - ItemDrop[i] = questRecord[25 + i * 4].GetUInt32(); - ItemDropQuantity[i] = questRecord[26 + i * 4].GetUInt32(); + RewardItemId[i] = questRecord[26 + i * 4].GetUInt32(); + RewardItemCount[i] = questRecord[27 + i * 4].GetUInt32(); + ItemDrop[i] = questRecord[28 + i * 4].GetUInt32(); + ItemDropQuantity[i] = questRecord[29 + i * 4].GetUInt32(); if (RewardItemId[i]) ++_rewItemsCount; @@ -68,67 +71,67 @@ Quest::Quest(Field* questRecord) for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { - RewardChoiceItemId[i] = questRecord[39 + i * 3].GetUInt32(); - RewardChoiceItemCount[i] = questRecord[40 + i * 3].GetUInt32(); - RewardChoiceItemDisplayId[i] = questRecord[41 + i * 3].GetUInt32(); + RewardChoiceItemId[i] = questRecord[42 + i * 3].GetUInt32(); + RewardChoiceItemCount[i] = questRecord[43 + i * 3].GetUInt32(); + RewardChoiceItemDisplayId[i] = questRecord[44 + i * 3].GetUInt32(); if (RewardChoiceItemId[i]) ++_rewChoiceItemsCount; } - _poiContinent = questRecord[57].GetUInt32(); - _poix = questRecord[58].GetFloat(); - _poiy = questRecord[59].GetFloat(); - _poiPriority = questRecord[60].GetUInt32(); + _poiContinent = questRecord[60].GetUInt32(); + _poix = questRecord[61].GetFloat(); + _poiy = questRecord[62].GetFloat(); + _poiPriority = questRecord[63].GetUInt32(); - _rewardTitleId = questRecord[61].GetUInt32(); - _rewardArenaPoints = questRecord[62].GetUInt32(); - _rewardSkillId = questRecord[63].GetUInt32(); - _rewardSkillPoints = questRecord[64].GetUInt32(); + _rewardTitleId = questRecord[64].GetUInt32(); + _rewardArenaPoints = questRecord[65].GetUInt32(); + _rewardSkillId = questRecord[66].GetUInt32(); + _rewardSkillPoints = questRecord[67].GetUInt32(); - _questGiverPortrait = questRecord[65].GetUInt32(); - _questGiverPortraitMount = questRecord[66].GetUInt32(); - _questGiverPortraitModelSceneId = questRecord[67].GetInt32(); - _questTurnInPortrait = questRecord[68].GetUInt32(); + _questGiverPortrait = questRecord[68].GetUInt32(); + _questGiverPortraitMount = questRecord[69].GetUInt32(); + _questGiverPortraitModelSceneId = questRecord[70].GetInt32(); + _questTurnInPortrait = questRecord[71].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) { - RewardFactionId[i] = questRecord[69 + i * 4].GetUInt32(); - RewardFactionValue[i] = questRecord[70 + i * 4].GetInt32(); - RewardFactionOverride[i] = questRecord[71 + i * 4].GetInt32(); - RewardFactionCapIn[i] = questRecord[72 + i * 4].GetInt32(); + RewardFactionId[i] = questRecord[72 + i * 4].GetUInt32(); + RewardFactionValue[i] = questRecord[73 + i * 4].GetInt32(); + RewardFactionOverride[i] = questRecord[74 + i * 4].GetInt32(); + RewardFactionCapIn[i] = questRecord[75 + i * 4].GetInt32(); } - _rewardReputationMask = questRecord[89].GetUInt32(); + _rewardReputationMask = questRecord[92].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) { - RewardCurrencyId[i] = questRecord[90 + i * 2].GetUInt32(); - RewardCurrencyCount[i] = questRecord[91 + i * 2].GetUInt32(); + RewardCurrencyId[i] = questRecord[93 + i * 2].GetUInt32(); + RewardCurrencyCount[i] = questRecord[94 + i * 2].GetUInt32(); if (RewardCurrencyId[i]) ++_rewCurrencyCount; } - _soundAccept = questRecord[98].GetUInt32(); - _soundTurnIn = questRecord[99].GetUInt32(); - _areaGroupID = questRecord[100].GetUInt32(); - _limitTime = questRecord[101].GetInt64(); - _allowableRaces.RawValue = questRecord[102].GetUInt64(); - _treasurePickerID = questRecord[103].GetInt32(); - _expansion = questRecord[104].GetInt32(); - _managedWorldStateID = questRecord[105].GetInt32(); - _questSessionBonus = questRecord[106].GetInt32(); - - _logTitle = questRecord[107].GetString(); - _logDescription = questRecord[108].GetString(); - _questDescription = questRecord[109].GetString(); - _areaDescription = questRecord[110].GetString(); - _portraitGiverText = questRecord[111].GetString(); - _portraitGiverName = questRecord[112].GetString(); - _portraitTurnInText = questRecord[113].GetString(); - _portraitTurnInName = questRecord[114].GetString(); - _questCompletionLog = questRecord[115].GetString(); + _soundAccept = questRecord[101].GetUInt32(); + _soundTurnIn = questRecord[102].GetUInt32(); + _areaGroupID = questRecord[103].GetUInt32(); + _limitTime = questRecord[104].GetInt64(); + _allowableRaces.RawValue = questRecord[105].GetUInt64(); + _treasurePickerID = questRecord[106].GetInt32(); + _expansion = questRecord[107].GetInt32(); + _managedWorldStateID = questRecord[108].GetInt32(); + _questSessionBonus = questRecord[109].GetInt32(); + + _logTitle = questRecord[110].GetString(); + _logDescription = questRecord[111].GetString(); + _questDescription = questRecord[112].GetString(); + _areaDescription = questRecord[113].GetString(); + _portraitGiverText = questRecord[114].GetString(); + _portraitGiverName = questRecord[115].GetString(); + _portraitTurnInText = questRecord[116].GetString(); + _portraitTurnInName = questRecord[117].GetString(); + _questCompletionLog = questRecord[118].GetString(); } Quest::~Quest() @@ -385,41 +388,36 @@ void Quest::LoadConditionalConditionalQuestCompletionLog(Field* fields) uint32 Quest::XPValue(Player const* player) const { - return XPValue(player, GetContentTuningId(), _rewardXPDifficulty, _rewardXPMultiplier, _expansion); + return XPValue(player, player->GetQuestLevel(this), _rewardXPDifficulty, _rewardXPMultiplier); } -uint32 Quest::XPValue(Player const* player, uint32 contentTuningId, uint32 xpDifficulty, float xpMultiplier /*= 1.0f*/, int32 expansion /*= -1*/) +/*static*/ uint32 Quest::XPValue(Player const* player, int32 questLevel, uint32 xpDifficulty, float xpMultiplier /*= 1.0f*/) { - if (player) - { - uint32 questLevel = player->GetQuestLevel(contentTuningId); - QuestXPEntry const* questXp = sQuestXPStore.LookupEntry(questLevel); - if (!questXp || xpDifficulty >= 10) - return 0; - - uint32 xp = questXp->Difficulty[xpDifficulty]; - int32 diffFactor = 2 * (questLevel - player->GetLevel()) + 12; - if (diffFactor < 1) - diffFactor = 1; - else if (diffFactor > 10) - diffFactor = 10; + if (!player) + return 0; - xp = diffFactor * xp * xpMultiplier / 10; - if (player->GetLevel() >= GetMaxLevelForExpansion(CURRENT_EXPANSION - 1) && player->GetSession()->GetExpansion() == CURRENT_EXPANSION && expansion >= 0 && expansion < CURRENT_EXPANSION) - xp = uint32(xp / 9.0f); + QuestXPEntry const* questXp = sQuestXPStore.LookupEntry(questLevel); + if (!questXp || xpDifficulty >= 10) + return 0; - xp = RoundXPValue(xp); + float multiplier = 1.0f; + if (questLevel != player->GetLevel()) + multiplier = sXpGameTable.GetRow(std::min<int32>(player->GetLevel(), questLevel))->Divisor / sXpGameTable.GetRow(player->GetLevel())->Divisor; - if (sWorld->getIntConfig(CONFIG_MIN_QUEST_SCALED_XP_RATIO)) - { - uint32 minScaledXP = RoundXPValue(questXp->Difficulty[xpDifficulty] * xpMultiplier) * sWorld->getIntConfig(CONFIG_MIN_QUEST_SCALED_XP_RATIO) / 100; - xp = std::max(minScaledXP, xp); - } + int32 diffFactor = 2 * (questLevel - player->GetLevel()) + 20; + if (diffFactor < 1) + diffFactor = 1; + else if (diffFactor > 10) + diffFactor = 10; - return xp; + uint32 xp = RoundXPValue(diffFactor * questXp->Difficulty[xpDifficulty] / 10 * multiplier); + if (sWorld->getIntConfig(CONFIG_MIN_QUEST_SCALED_XP_RATIO)) + { + uint32 minScaledXP = RoundXPValue(questXp->Difficulty[xpDifficulty] * xpMultiplier) * sWorld->getIntConfig(CONFIG_MIN_QUEST_SCALED_XP_RATIO) / 100; + xp = std::max(minScaledXP, xp); } - return 0; + return xp; } /*static*/ bool Quest::IsTakingQuestEnabled(uint32 questId) @@ -438,21 +436,6 @@ uint32 Quest::MoneyValue(Player const* player) const return 0; } -uint32 Quest::MaxMoneyValue() const -{ - uint32 value = 0; - if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(GetContentTuningId(), 0)) - if (QuestMoneyRewardEntry const* money = sQuestMoneyRewardStore.LookupEntry(questLevels->MaxLevel)) - value = money->Difficulty[GetRewMoneyDifficulty()] * GetMoneyMultiplier(); - - return value; -} - -uint32 Quest::GetMaxMoneyReward() const -{ - return MaxMoneyValue() * sWorld->getRate(RATE_MONEY_QUEST); -} - Optional<QuestTagType> Quest::GetQuestTag() const { if (QuestInfoEntry const* questInfo = sQuestInfoStore.LookupEntry(GetQuestInfoID())) @@ -650,8 +633,11 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const response.Info.QuestID = GetQuestId(); response.Info.QuestType = GetQuestType(); - response.Info.ContentTuningID = GetContentTuningId(); + response.Info.QuestLevel = GetQuestLevel(); + response.Info.QuestScalingFactionGroup = GetQuestScalingFactionGroup(); + response.Info.QuestMaxScalingLevel = GetQuestMaxScalingLevel(); response.Info.QuestPackageID = GetQuestPackageID(); + response.Info.QuestMinLevel = GetQuestMinLevel(); response.Info.QuestSortID = GetZoneOrSort(); response.Info.QuestInfoID = GetQuestInfoID(); response.Info.SuggestedGroupNum = GetSuggestedPlayers(); @@ -660,7 +646,7 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const response.Info.RewardXPMultiplier = GetXPMultiplier(); if (!HasFlag(QUEST_FLAGS_HIDE_REWARD)) - response.Info.RewardMoney = player ? player->GetQuestMoneyReward(this) : GetMaxMoneyReward(); + response.Info.RewardMoney = player ? player->GetQuestMoneyReward(this) : 0; response.Info.RewardMoneyDifficulty = GetRewMoneyDifficulty(); response.Info.RewardMoneyMultiplier = GetMoneyMultiplier(); diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index e64bdee1124..0b327d31cd8 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -551,10 +551,8 @@ class TC_GAME_API Quest void LoadConditionalConditionalQuestCompletionLog(Field* fields); uint32 XPValue(Player const* player) const; - static uint32 XPValue(Player const* player, uint32 contentTuningId, uint32 xpDifficulty, float xpMultiplier = 1.0f, int32 expansion = -1); + static uint32 XPValue(Player const* player, int32 questLevel, uint32 xpDifficulty, float xpMultiplier = 1.0f); uint32 MoneyValue(Player const* player) const; - uint32 MaxMoneyValue() const; - uint32 GetMaxMoneyReward() const; Optional<QuestTagType> GetQuestTag() const; bool IsImportant() const; @@ -578,8 +576,11 @@ class TC_GAME_API Quest // table data accessors: uint32 GetQuestId() const { return _id; } uint32 GetQuestType() const { return _type; } + int32 GetQuestLevel() const { return _level; }; + int32 GetQuestScalingFactionGroup() const { return _scalingFactionGroup; }; + int32 GetQuestMaxScalingLevel() const { return _maxScalingLevel; }; uint32 GetQuestPackageID() const { return _packageID; } - uint32 GetContentTuningId() const { return _contentTuningID; } + int32 GetQuestMinLevel() const { return _minLevel; } int32 GetZoneOrSort() const { return _questSortID; } uint32 GetMaxLevel() const { return _maxLevel; } uint32 GetQuestInfoID() const { return _questInfoID; } @@ -725,8 +726,11 @@ class TC_GAME_API Quest // wdb data (quest query response) uint32 _id = 0; uint32 _type = 0; + int32 _level = 0; + int32 _scalingFactionGroup = 0; + int32 _maxScalingLevel = 0; uint32 _packageID = 0; - uint32 _contentTuningID = 0; + int32 _minLevel = 0; int32 _questSortID = 0; uint32 _questInfoID = 0; uint32 _suggestedPlayers = 0; diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index be7ca6a728f..6ce3e1731d2 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -863,5 +863,5 @@ bool ReputationMgr::CanGainParagonReputationForFaction(FactionEntry const* facti if (!quest) return false; - return _player->GetLevel() >= _player->GetQuestMinLevel(quest); + return _player->GetLevel() >= quest->GetQuestMinLevel(); } diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index f270a1efd44..e8617fd1a8e 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -104,8 +104,11 @@ WorldPacket const* QueryQuestInfoResponse::Write() { _worldPacket << int32(Info.QuestID); _worldPacket << int32(Info.QuestType); + _worldPacket << int32(Info.QuestLevel); + _worldPacket << int32(Info.QuestScalingFactionGroup); + _worldPacket << int32(Info.QuestMaxScalingLevel); _worldPacket << int32(Info.QuestPackageID); - _worldPacket << int32(Info.ContentTuningID); + _worldPacket << int32(Info.QuestMinLevel); _worldPacket << int32(Info.QuestSortID); _worldPacket << int32(Info.QuestInfoID); _worldPacket << int32(Info.SuggestedGroupNum); diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 1c30e309ecc..b488fe06d7e 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -135,8 +135,11 @@ namespace WorldPackets { int32 QuestID = 0; int32 QuestType = 0; // Accepted values: 0, 1 or 2. 0 == IsAutoComplete() (skip objectives/details) - int32 ContentTuningID = 0; + int32 QuestLevel = 0; + int32 QuestScalingFactionGroup = 0; + int32 QuestMaxScalingLevel = 0; int32 QuestPackageID = 0; + int32 QuestMinLevel = 0; int32 QuestSortID = 0; // zone or sort to display in quest log int32 QuestInfoID = 0; int32 SuggestedGroupNum = 0; diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index a53049d8a5b..8c377619e61 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -683,18 +683,11 @@ public: if (handler->GetSession()) { - int32 maxLevel = 0; - if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(questTemplatePair.second.GetContentTuningId())) - maxLevel = questLevels->MaxLevel; - - int32 scalingFactionGroup = 0; - if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(questTemplatePair.second.GetContentTuningId())) - scalingFactionGroup = contentTuning->GetScalingFactionGroup(); - handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, questTemplatePair.first, questTemplatePair.first, handler->GetSession()->GetPlayer()->GetQuestLevel(&questTemplatePair.second), - handler->GetSession()->GetPlayer()->GetQuestMinLevel(&questTemplatePair.second), - maxLevel, scalingFactionGroup, + questTemplatePair.second.GetQuestMinLevel(), + questTemplatePair.second.GetQuestMaxScalingLevel(), + questTemplatePair.second.GetQuestScalingFactionGroup(), title.c_str(), statusStr); } else @@ -742,18 +735,11 @@ public: if (handler->GetSession()) { - int32 maxLevel = 0; - if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(questTemplatePair.second.GetContentTuningId())) - maxLevel = questLevels->MaxLevel; - - int32 scalingFactionGroup = 0; - if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(questTemplatePair.second.GetContentTuningId())) - scalingFactionGroup = contentTuning->GetScalingFactionGroup(); - handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, questTemplatePair.first, questTemplatePair.first, handler->GetSession()->GetPlayer()->GetQuestLevel(&questTemplatePair.second), - handler->GetSession()->GetPlayer()->GetQuestMinLevel(&questTemplatePair.second), - maxLevel, scalingFactionGroup, + questTemplatePair.second.GetQuestMinLevel(), + questTemplatePair.second.GetQuestMaxScalingLevel(), + questTemplatePair.second.GetQuestScalingFactionGroup(), title.c_str(), statusStr); } else @@ -811,18 +797,10 @@ public: if (handler->GetSession()) { - int32 maxLevel = 0; - if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(quest->GetContentTuningId())) - maxLevel = questLevels->MaxLevel; - - int32 scalingFactionGroup = 0; - if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(quest->GetContentTuningId())) - scalingFactionGroup = contentTuning->GetScalingFactionGroup(); - handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, id, id, - handler->GetSession()->GetPlayer()->GetQuestLevel(quest), - handler->GetSession()->GetPlayer()->GetQuestMinLevel(quest), - maxLevel, scalingFactionGroup, + quest->GetQuestMinLevel(), + quest->GetQuestMaxScalingLevel(), + quest->GetQuestScalingFactionGroup(), title.c_str(), statusStr); } else |
