Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
lee1991 committed Jan 5, 2017
2 parents 25a3b5f + f549a25 commit d63d3aa
Show file tree
Hide file tree
Showing 10 changed files with 216 additions and 118 deletions.
2 changes: 1 addition & 1 deletion data/doc
Submodule doc updated from 352f3c to 37da27
55 changes: 55 additions & 0 deletions data/sql/updates/pending_db_world/rev_1482409122200235830.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
INSERT INTO version_db_world (`sql_rev`) VALUES ('1482409122200235830');
-- creating `quest_template_addon` table
DROP TABLE IF EXISTS `quest_template_addon`;
CREATE TABLE IF NOT EXISTS `quest_template_addon` ( -- old names:
`ID` mediumint(8) unsigned NOT NULL DEFAULT '0', -- ID
`MaxLevel` tinyint(3) unsigned NOT NULL DEFAULT '0', -- MaxLevel
`AllowableClasses` int(10) unsigned NOT NULL DEFAULT '0', -- RequiredClasses
`SourceSpellID` mediumint(8) unsigned NOT NULL DEFAULT '0', -- SourceSpellId
`PrevQuestID` mediumint(8) NOT NULL DEFAULT '0', -- PrevQuestId
`NextQuestID` mediumint(8) NOT NULL DEFAULT '0', -- NextQuestId
`ExclusiveGroup` mediumint(8) NOT NULL DEFAULT '0', -- ExclusiveGroup
`RewardMailTemplateID` mediumint(8) unsigned NOT NULL DEFAULT '0', -- RewardMailTemplateId
`RewardMailDelay` int(10) unsigned NOT NULL DEFAULT '0', -- RewardMailDelay
`RequiredSkillID` smallint(5) unsigned NOT NULL DEFAULT '0', -- RequiredSkillId
`RequiredSkillPoints` smallint(5) unsigned NOT NULL DEFAULT '0', -- RequiredSkillPoints
`RequiredMinRepFaction` smallint(5) unsigned NOT NULL DEFAULT '0', -- RequiredMinRepFaction
`RequiredMaxRepFaction` smallint(5) unsigned NOT NULL DEFAULT '0', -- RequiredMaxRepFaction
`RequiredMinRepValue` mediumint(8) NOT NULL DEFAULT '0', -- RequiredMinRepValue
`RequiredMaxRepValue` mediumint(8) NOT NULL DEFAULT '0', -- RequiredMaxRepValue
`ProvidedItemCount` tinyint(3) unsigned NOT NULL DEFAULT '0', -- SourceItemCount
`SpecialFlags` tinyint(3) unsigned NOT NULL DEFAULT '0', -- SpecialFlags
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


-- moving data from `quest_template` to `quest_template_addon`
INSERT INTO `quest_template_addon`
(`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`)
(SELECT `ID`, `MaxLevel`, `RequiredClasses`, `SourceSpellId`, `PrevQuestId`, `NextQuestId`, `ExclusiveGroup`, `RewardMailTemplateId`, `RewardMailDelay`, `RequiredSkillId`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `SourceItemCount`, `SpecialFlags` FROM `quest_template`);


-- drop `quest_template` fields
ALTER TABLE `quest_template`
DROP `MaxLevel`,
DROP `RequiredClasses`,
DROP `SourceSpellId`,
DROP `PrevQuestId`,
DROP `NextQuestId`,
DROP `ExclusiveGroup`,
DROP `RewardMailTemplateId`,
DROP `RewardMailDelay`,
DROP `RequiredSkillId`,
DROP `RequiredSkillPoints`,
DROP `RequiredMinRepFaction`,
DROP `RequiredMaxRepFaction`,
DROP `RequiredMinRepValue`,
DROP `RequiredMaxRepValue`,
DROP `SourceItemCount`,
DROP `SpecialFlags`;


-- alter `quest_template` fields
ALTER TABLE `quest_template`
CHANGE COLUMN `Method` `QuestType` TINYINT(3) UNSIGNED NOT NULL DEFAULT '2' AFTER `ID`,
CHANGE COLUMN `QuestType` `QuestInfoID` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `QuestSortID`;
13 changes: 13 additions & 0 deletions src/game/Battlegrounds/BattlegroundQueue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,14 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, PvPDiffi
ginfo->_bracketId = bracketId;
ginfo->_groupType = index;

// announce world (this doesn't need mutex)
if (isRated && sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE))
{
ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(arenateamid);
if (team)
sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, team->GetName().c_str(), ginfo->ArenaType, ginfo->ArenaType, ginfo->ArenaTeamRating);
}

//add players from group to ginfo
if (grp)
{
Expand Down Expand Up @@ -307,6 +315,11 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool sentToBg, uint32 playerQu
// remove player queue info
m_QueuedPlayers.erase(itr);

// announce to world if arena team left queue for rated match, show only once
if (groupInfo->ArenaType && groupInfo->IsRated && groupInfo->Players.empty() && sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE))
if (ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(groupInfo->ArenaTeamId))
sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, team->GetName().c_str(), groupInfo->ArenaType, groupInfo->ArenaType, groupInfo->ArenaTeamRating);

// if player leaves queue and he is invited to a rated arena match, then count it as he lost
if (groupInfo->IsInvitedToBGInstanceGUID && groupInfo->IsRated && !sentToBg)
if (ArenaTeam* at = sArenaTeamMgr->GetArenaTeamById(groupInfo->ArenaTeamId))
Expand Down
65 changes: 43 additions & 22 deletions src/game/Globals/ObjectMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1529,7 +1529,7 @@ bool ObjectMgr::SetCreatureLinkedRespawn(uint32 guidLow, uint32 linkedGuidLow)
const CreatureData* slave = GetCreatureData(linkedGuidLow);
if (!slave)
{
//TC_LOG_ERROR("sql.sql", "Creature '%u' linking to non-existent creature '%u'.", guidLow, linkedGuidLow);
// sLog->outError("sql.sql", "Creature '%u' linking to non-existent creature '%u'.", guidLow, linkedGuidLow);
return false;
}

Expand Down Expand Up @@ -3852,36 +3852,36 @@ void ObjectMgr::LoadQuests()
mExclusiveQuestGroups.clear();

QueryResult result = WorldDatabase.Query("SELECT "
//0 1 2 3 4 5 6 7 8 9 10 11 12
"ID, Method, QuestLevel, MinLevel, MaxLevel, QuestSortID, QuestType, SuggestedGroupNum, TimeAllowed, RequiredClasses, AllowableRaces, RequiredSkillId, RequiredSkillPoints, "
// 13 14 15 16 17 18 19 20
"RequiredFactionId1, RequiredFactionId2, RequiredFactionValue1, RequiredFactionValue2, RequiredMinRepFaction, RequiredMaxRepFaction, RequiredMinRepValue, RequiredMaxRepValue, "
// 21 22 23 24 25 26 27 28 29 30 31
"PrevQuestId, NextQuestId, ExclusiveGroup, RewardNextQuest, RewardXPDifficulty, RewardMoney, RewardBonusMoney, RewardDisplaySpell, RewardSpell, RewardHonor, RewardKillHonor, "
// 32 33 34 35 36 37 38 39 40 41 42
"RewardMailTemplateId, RewardMailDelay, StartItem, SourceItemCount, SourceSpellId, Flags, SpecialFlags, RewardTitle, RequiredPlayerKills, RewardTalents, RewardArenaPoints, "
// 43 44 45 46 47 48 49 50
//0 1 2 3 4 5 6 7 8
"ID, QuestType, QuestLevel, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, TimeAllowed, AllowableRaces,"
// 9 10 11 12
"RequiredFactionId1, RequiredFactionId2, RequiredFactionValue1, RequiredFactionValue2, "
// 13 14 15 16 17 18 19 20
"RewardNextQuest, RewardXPDifficulty, RewardMoney, RewardBonusMoney, RewardDisplaySpell, RewardSpell, RewardHonor, RewardKillHonor, "
// 21 22 23 24 25 26
"StartItem, Flags, RewardTitle, RequiredPlayerKills, RewardTalents, RewardArenaPoints, "
// 27 28 29 30 31 32 33 34
"RewardItem1, RewardItem2, RewardItem3, RewardItem4, RewardAmount1, RewardAmount2, RewardAmount3, RewardAmount4, "
// 51 52 53 54 55 56 57 58 59 60 61 62
// 35 36 37 38 39 40 41 42 43 44 45 46
"RewardChoiceItemID1, RewardChoiceItemID2, RewardChoiceItemID3, RewardChoiceItemID4, RewardChoiceItemID5, RewardChoiceItemID6, RewardChoiceItemQuantity1, RewardChoiceItemQuantity2, RewardChoiceItemQuantity3, RewardChoiceItemQuantity4, RewardChoiceItemQuantity5, RewardChoiceItemQuantity6, "
// 63 64 65 66 67 68 69 70 71 72
// 47 48 49 50 51 52 53 54 55 56
"RewardFactionID1, RewardFactionID2, RewardFactionID3, RewardFactionID4, RewardFactionID5, RewardFactionValue1, RewardFactionValue2, RewardFactionValue3, RewardFactionValue4, RewardFactionValue5, "
// 73 74 75 76 77
// 57 58 59 60 61
"RewardFactionOverride1, RewardFactionOverride2, RewardFactionOverride3, RewardFactionOverride4, RewardFactionOverride5, "
// 78 79 80 81
// 62 63 64 65
"POIContinent, POIx, POIy, POIPriority, "
// 82 83 84 85 86 87 88
// 66 67 68 69 70 71 72
"LogTitle, LogDescription, QuestDescription, AreaDescription, OfferRewardText, RequestItemsText, QuestCompletionLog, "
// 89 90 91 92 93 94 95 96
// 73 74 75 76 77 78 79 80
"RequiredNpcOrGo1, RequiredNpcOrGo2, RequiredNpcOrGo3, RequiredNpcOrGo4, RequiredNpcOrGoCount1, RequiredNpcOrGoCount2, RequiredNpcOrGoCount3, RequiredNpcOrGoCount4, "
// 97 98 99 100 101 102 103 104
// 81 82 83 84 85 86 87 88
"ItemDrop1, ItemDrop2, ItemDrop3, ItemDrop4, ItemDropQuantity1, ItemDropQuantity2, ItemDropQuantity3, ItemDropQuantity4, "
// 105 106 107 108 109 110 111 112 113 114 115 116
// 89 90 91 92 93 94 95 96 97 98 99 100
"RequiredItemId1, RequiredItemId2, RequiredItemId3, RequiredItemId4, RequiredItemId5, RequiredItemId6, RequiredItemCount1, RequiredItemCount2, RequiredItemCount3, RequiredItemCount4, RequiredItemCount5, RequiredItemCount6, "
// 117 118 119 120 121 122 123 124 125 126 127 128 129
// 101 102 103 104 105 106 107 108 109 110 111 112 113
"Unknown0, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4, DetailsEmote1, DetailsEmote2, DetailsEmote3, DetailsEmote4, DetailsEmoteDelay1, DetailsEmoteDelay2, DetailsEmoteDelay3, DetailsEmoteDelay4, "
// 130 131 132 133 134 135 136 137 138 139 140
"EmoteOnIncomplete, EmoteOnComplete, OfferRewardEmote1, OfferRewardEmote2, OfferRewardEmote3, OfferRewardEmote4, OfferRewardEmoteDelay1, OfferRewardEmoteDelay2, OfferRewardEmoteDelay3, OfferRewardEmoteDelay4, VerifiedBuild"
// 114 115 116 117 118 119 120 121 122 123
"EmoteOnIncomplete, EmoteOnComplete, OfferRewardEmote1, OfferRewardEmote2, OfferRewardEmote3, OfferRewardEmote4, OfferRewardEmoteDelay1, OfferRewardEmoteDelay2, OfferRewardEmoteDelay3, OfferRewardEmoteDelay4"
" FROM quest_template");
if (!result)
{
Expand Down Expand Up @@ -3921,6 +3921,27 @@ void ObjectMgr::LoadQuests()

std::map<uint32, uint32> usedMailTemplates;

// Load `quest_template_addon`
// 0 1 2 3 4 5 6 7 8
result = WorldDatabase.Query("SELECT ID, MaxLevel, AllowableClasses, SourceSpellID, PrevQuestID, NextQuestID, ExclusiveGroup, RewardMailTemplateID, RewardMailDelay, "
//9 10 11 12 13 14 15 16
"RequiredSkillID, RequiredSkillPoints, RequiredMinRepFaction, RequiredMaxRepFaction, RequiredMinRepValue, RequiredMaxRepValue, ProvidedItemCount, SpecialFlags FROM quest_template_addon");

if (!result) {
sLog->outError(">> Loaded 0 quest template addons. DB table `quest_template_addon` is empty.");
} else {
do {
Field* fields = result->Fetch();
uint32 questId = fields[0].GetUInt32();

auto itr = _questTemplates.find(questId);
if (itr != _questTemplates.end())
itr->second->LoadQuestTemplateAddon(fields);
else
sLog->outError("Table `quest_template_addon` has data for quest %u but such quest does not exist", questId);
} while (result->NextRow());
}

// Post processing
for (QuestMap::iterator iter = _questTemplates.begin(); iter != _questTemplates.end(); ++iter)
{
Expand Down Expand Up @@ -9302,5 +9323,5 @@ void ObjectMgr::LoadCreatureQuestItems()
}
while (result->NextRow());

sLog->outString("server.loading", ">> Loaded %u creature quest items in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
sLog->outString(">> Loaded %u creature quest items in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
Loading

0 comments on commit d63d3aa

Please sign in to comment.