diff options
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 82 |
1 files changed, 47 insertions, 35 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 8e61eb33baa..9bd7d5c107d 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3876,35 +3876,35 @@ void ObjectMgr::LoadQuests() mExclusiveQuestGroups.clear(); QueryResult result = WorldDatabase.Query("SELECT " - //0 1 2 3 4 5 6 7 8 9 10 - "ID, QuestType, QuestLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " - //11 12 13 14 15 16 17 18 19 20 21 + //0 1 2 3 4 5 6 7 8 9 10 11 + "ID, QuestType, QuestLevel, MaxScalingLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " + //12 13 14 15 16 17 18 19 20 21 22 "RewardMoney, RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardDisplaySpell1, RewardDisplaySpell2, RewardDisplaySpell3, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " - //22 23 24 25 26 + //23 24 25 26 27 "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, " - //27 28 29 30 31 32 33 34 + //28 29 30 31 32 33 34 35 "RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " - //35 36 37 38 39 40 41 42 + //36 37 38 39 40 41 42 43 "RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " - //43 44 45 46 47 48 + //44 45 46 47 48 49 "RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " - //49 50 51 52 53 54 + //50 51 52 53 54 55 "RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " - //55 56 57 58 59 60 + //56 57 58 59 60 61 "RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " - //61 62 63 64 65 66 67 68 69 70 + //62 63 64 65 66 67 68 69 70 71 "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, PortraitGiver, PortraitTurnIn, " - //71 72 73 74 75 76 77 78 + //72 73 74 75 76 77 78 79 "RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, " - //79 80 81 82 83 84 85 86 + //80 81 82 83 84 85 86 87 "RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, " - //87 88 89 90 91 + //88 89 90 91 92 "RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " - //92 93 94 95 96 97 98 99 + //93 94 95 96 97 98 99 100 "RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " - //100 101 102 103 104 105 106 + //101 102 103 104 105 106 107 "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, QuestRewardID, Expansion, " - //107 108 109 110 111 112 113 114 115 + //108 109 110 111 112 113 114 115 116 "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog" " FROM quest_template"); if (!result) @@ -4199,12 +4199,12 @@ void ObjectMgr::LoadQuests() } } // AllowableRaces, can be -1/RACEMASK_ALL_PLAYABLE to allow any race - if (qinfo->AllowableRaces != -1) + if (qinfo->AllowableRaces != uint64(-1)) { - if (qinfo->AllowableRaces > 0 && !(uint32(qinfo->AllowableRaces) & RACEMASK_ALL_PLAYABLE)) + if (qinfo->AllowableRaces > 0 && !(qinfo->AllowableRaces & RACEMASK_ALL_PLAYABLE)) { - TC_LOG_ERROR("sql.sql", "Quest %u does not contain any playable races in `AllowableRaces` (%d), value set to 0 (all races).", qinfo->GetQuestId(), qinfo->AllowableRaces); - qinfo->AllowableRaces = -1; + TC_LOG_ERROR("sql.sql", "Quest %u does not contain any playable races in `AllowableRaces` (" UI64FMTD "), value set to 0 (all races).", qinfo->GetQuestId(), qinfo->AllowableRaces); + qinfo->AllowableRaces = uint64(-1); } } // RequiredSkillId, can be 0 @@ -7573,8 +7573,8 @@ void ObjectMgr::LoadQuestPOI() uint32 count = 0; - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - QueryResult result = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1 FROM quest_poi order by QuestID, Idx1"); + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + QueryResult result = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1, AlwaysAllowMergingBlobs FROM quest_poi order by QuestID, Idx1"); if (!result) { TC_LOG_ERROR("server.loading", ">> Loaded 0 quest POI definitions. DB table `quest_poi` is empty."); @@ -7628,11 +7628,12 @@ void ObjectMgr::LoadQuestPOI() int32 WorldEffectID = fields[11].GetInt32(); int32 PlayerConditionID = fields[12].GetInt32(); int32 WoDUnk1 = fields[13].GetInt32(); + bool AlwaysAllowMergingBlobs = fields[14].GetBool(); if (!sObjectMgr->GetQuestTemplate(QuestID)) TC_LOG_ERROR("sql.sql", "`quest_poi` quest id (%u) Idx1 (%u) does not exist in `quest_template`", QuestID, Idx1); - QuestPOI POI(BlobIndex, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1); + QuestPOI POI(BlobIndex, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1, AlwaysAllowMergingBlobs); if (QuestID < int32(POIs.size()) && Idx1 < int32(POIs[QuestID].size())) { POI.points = POIs[QuestID][Idx1]; @@ -9645,10 +9646,10 @@ PlayerInfo const* ObjectMgr::GetPlayerInfo(uint32 race, uint32 class_) const void ObjectMgr::LoadRaceAndClassExpansionRequirements() { uint32 oldMSTime = getMSTime(); - _raceExpansionRequirementStore.clear(); + _raceUnlockRequirementStore.clear(); - // 0 1 - QueryResult result = WorldDatabase.Query("SELECT raceID, expansion FROM `race_expansion_requirement`"); + // 0 1 2 + QueryResult result = WorldDatabase.Query("SELECT raceID, expansion, achievementId FROM `race_unlock_requirement`"); if (result) { @@ -9657,28 +9658,37 @@ void ObjectMgr::LoadRaceAndClassExpansionRequirements() { Field* fields = result->Fetch(); - uint8 raceID = fields[0].GetInt8(); - uint8 expansion = fields[1].GetInt8(); + uint8 raceID = fields[0].GetUInt8(); + uint8 expansion = fields[1].GetUInt8(); + uint32 achievementId = fields[2].GetUInt32(); ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(raceID); if (!raceEntry) { - TC_LOG_ERROR("sql.sql", "Race %u defined in `race_expansion_requirement` does not exists, skipped.", raceID); + TC_LOG_ERROR("sql.sql", "Race %u defined in `race_unlock_requirement` does not exists, skipped.", raceID); continue; } - if (expansion >= MAX_EXPANSIONS) + if (expansion >= MAX_ACCOUNT_EXPANSIONS) + { + TC_LOG_ERROR("sql.sql", "Race %u defined in `race_unlock_requirement` has incorrect expansion %u, skipped.", raceID, expansion); + continue; + } + + if (achievementId && !sAchievementStore.LookupEntry(achievementId)) { - TC_LOG_ERROR("sql.sql", "Race %u defined in `race_expansion_requirement` has incorrect expansion %u, skipped.", raceID, expansion); + TC_LOG_ERROR("sql.sql", "Race %u defined in `race_unlock_requirement` has incorrect achievement %u, skipped.", raceID, achievementId); continue; } - _raceExpansionRequirementStore[raceID] = expansion; + RaceUnlockRequirement& raceUnlockRequirement = _raceUnlockRequirementStore[raceID]; + raceUnlockRequirement.Expansion = expansion; + raceUnlockRequirement.AchievementId = achievementId; ++count; } while (result->NextRow()); - TC_LOG_INFO("server.loading", ">> Loaded %u race expansion requirements in %u ms.", count, GetMSTimeDiffToNow(oldMSTime)); + TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " race expansion requirements in %u ms.", _raceUnlockRequirementStore.size(), GetMSTimeDiffToNow(oldMSTime)); } else TC_LOG_INFO("server.loading", ">> Loaded 0 race expansion requirements. DB table `race_expansion_requirement` is empty."); @@ -9910,7 +9920,7 @@ void ObjectMgr::LoadPlayerChoices() uint32 oldMSTime = getMSTime(); _playerChoices.clear(); - QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, Question FROM playerchoice"); + QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, Question, HideWarboardHeader FROM playerchoice"); if (!choices) { @@ -9932,7 +9942,9 @@ void ObjectMgr::LoadPlayerChoices() PlayerChoice& choice = _playerChoices[choiceId]; choice.ChoiceId = choiceId; - choice.Question = fields[1].GetString(); + choice.UiTextureKitId = fields[1].GetInt32(); + choice.Question = fields[2].GetString(); + choice.HideWarboardHeader = fields[3].GetBool(); } while (choices->NextRow()); |