From 5b8a862df9c3452ffffcf6ce0e4e12974988eee1 Mon Sep 17 00:00:00 2001 From: Sarjuuk Date: Sun, 19 Jul 2015 19:36:46 +0200 Subject: [PATCH] DB/Structure (thx @Carbenium for the heads up & suggestions) * adapted structure to TDB 335.59 * dropped questItem[1-6] fields from ?_creature and ?_object (why were they even there) - removed a function-stub from Util (already forgot, what it was supposed to achieve) --- README.md | Bin 9230 -> 9230 bytes includes/shared.php | 2 +- includes/utilities.php | 10 --- pages/item.php | 4 +- pages/npc.php | 14 ++-- pages/object.php | 4 +- pages/skill.php | 8 +-- pages/spell.php | 8 +-- setup/db_structure.sql | 12 ---- setup/tools/sqlGen.class.php | 2 +- setup/tools/sqlgen/creature.func.php | 1 - setup/tools/sqlgen/objects.func.php | 56 ++++++++-------- setup/tools/sqlgen/quests.func.php | 94 +++++++++++++-------------- setup/tools/sqlgen/source.func.php | 88 ++++++++++++------------- setup/tools/sqlgen/spawns.func.php | 2 +- setup/tools/sqlgen/spell.func.php | 4 +- setup/tools/sqlgen/titles.func.php | 6 +- setup/updates/1437329787_01.sql | 15 +++++ 18 files changed, 163 insertions(+), 167 deletions(-) create mode 100644 setup/updates/1437329787_01.sql diff --git a/README.md b/README.md index 8b15c2973550876be5a2d8a11f59217b0765328c..009beae1327fa1ec71f0b14f9d179bdd5428060c 100644 GIT binary patch delta 24 fcmeD4==0bR#?ELt*_Km#aua(Lqvhti?1nM`WB><@ delta 24 fcmeD4==0bR#?ELl*_Km#aua(Lqs8XC?1nM`W9kQr diff --git a/includes/shared.php b/includes/shared.php index 65ebaad2..06367e18 100644 --- a/includes/shared.php +++ b/includes/shared.php @@ -1,6 +1,6 @@ selectRow('SELECT *, text as Text_loc0 FROM page_text pt LEFT JOIN locales_page_text lpt ON pt.entry = lpt.entry WHERE pt.entry = ?d', $next)) + if ($row = DB::World()->selectRow('SELECT *, Text as Text_loc0 FROM page_text pt LEFT JOIN locales_page_text lpt ON pt.ID = lpt.entry WHERE pt.ID = ?d', $next)) { - $next = $row['next_page']; + $next = $row['NextPageID']; $this->pageText[] = Util::parseHtmlText(Util::localizedString($row, 'Text')); } else diff --git a/pages/npc.php b/pages/npc.php index 84547d53..f0689583 100644 --- a/pages/npc.php +++ b/pages/npc.php @@ -451,14 +451,14 @@ class NpcPage extends GenericPage if ($this->subject->getField('npcflag') & NPC_FLAG_TRAINER) { $teachQuery = ' - SELECT IFNULL(t2.spell, t1.spell) AS ARRAY_KEY, - IFNULL(t2.spellcost, t1.spellcost) AS cost, - IFNULL(t2.reqskill, t1.reqskill) AS reqSkillId, - IFNULL(t2.reqskillvalue, t1.reqskillvalue) AS reqSkillValue, - IFNULL(t2.reqlevel, t1.reqlevel) AS reqLevel + SELECT IFNULL(t2.SpellID, t1.SpellID) AS ARRAY_KEY, + IFNULL(t2.MoneyCost, t1.MoneyCost) AS cost, + IFNULL(t2.ReqSkillLine, t1.ReqSkillLine) AS reqSkillId, + IFNULL(t2.ReqSkillRank, t1.ReqSkillRank) AS reqSkillValue, + IFNULL(t2.ReqLevel, t1.ReqLevel) AS reqLevel FROM npc_trainer t1 - LEFT JOIN npc_trainer t2 ON t2.entry = IF(t1.spell < 0, -t1.spell, null) - WHERE t1.entry = ?d + LEFT JOIN npc_trainer t2 ON t2.ID = IF(t1.SpellID < 0, -t1.SpellID, null) + WHERE t1.ID = ?d '; if ($tSpells = DB::World()->select($teachQuery, $this->typeId)) diff --git a/pages/object.php b/pages/object.php index 62bfd490..a57f5074 100644 --- a/pages/object.php +++ b/pages/object.php @@ -206,9 +206,9 @@ class ObjectPage extends GenericPage { while ($next) { - if ($row = DB::World()->selectRow('SELECT *, text as Text_loc0 FROM page_text pt LEFT JOIN locales_page_text lpt ON pt.entry = lpt.entry WHERE pt.entry = ?d', $next)) + if ($row = DB::World()->selectRow('SELECT *, Text as Text_loc0 FROM page_text pt LEFT JOIN locales_page_text lpt ON pt.ID = lpt.entry WHERE pt.ID = ?d', $next)) { - $next = $row['next_page']; + $next = $row['NextPageID']; $pageText[] = Util::parseHtmlText(Util::localizedString($row, 'Text')); } else diff --git a/pages/skill.php b/pages/skill.php index 53f37e14..17570054 100644 --- a/pages/skill.php +++ b/pages/skill.php @@ -250,7 +250,7 @@ class SkillPage extends GenericPage { $list = []; if (!empty(Util::$trainerTemplates[TYPE_SKILL][$this->typeId])) - $list = DB::World()->selectCol('SELECT DISTINCT entry FROM npc_trainer WHERE spell IN (?a) AND entry < 200000', Util::$trainerTemplates[TYPE_SKILL][$this->typeId]); + $list = DB::World()->selectCol('SELECT DISTINCT ID FROM npc_trainer WHERE SpellID IN (?a) AND ID < 200000', Util::$trainerTemplates[TYPE_SKILL][$this->typeId]); else { $mask = 0; @@ -266,10 +266,10 @@ class SkillPage extends GenericPage ); $list = $spellIds ? DB::World()->selectCol(' - SELECT IF(t1.entry > 200000, t2.entry, t1.entry) + SELECT IF(t1.ID > 200000, t2.ID, t1.ID) FROM npc_trainer t1 - LEFT JOIN npc_trainer t2 ON t2.spell = -t1.entry - WHERE t1.spell IN (?a)', + LEFT JOIN npc_trainer t2 ON t2.SpellID = -t1.ID + WHERE t1.SpellID IN (?a)', $spellIds ) : []; } diff --git a/pages/spell.php b/pages/spell.php index 07b2854b..3c4fe5cc 100644 --- a/pages/spell.php +++ b/pages/spell.php @@ -1010,7 +1010,7 @@ class SpellPage extends GenericPage } if ($tt) - $list = DB::World()->selectCol('SELECT DISTINCT entry FROM npc_trainer WHERE spell IN (?a) AND entry < 200000', $tt); + $list = DB::World()->selectCol('SELECT DISTINCT ID FROM npc_trainer WHERE SpellID IN (?a) AND ID < 200000', $tt); else { $mask = 0; @@ -1019,10 +1019,10 @@ class SpellPage extends GenericPage $mask |= 1 << $idx; $list = DB::World()->selectCol(' - SELECT IF(t1.entry > 200000, t2.entry, t1.entry) + SELECT IF(t1.ID > 200000, t2.ID, t1.ID) FROM npc_trainer t1 - LEFT JOIN npc_trainer t2 ON t2.spell = -t1.entry - WHERE t1.spell = ?d', + LEFT JOIN npc_trainer t2 ON t2.SpellID = -t1.ID + WHERE t1.SpellID IN (?a)', $this->typeId ); } diff --git a/setup/db_structure.sql b/setup/db_structure.sql index 10b46f1c..abba0c58 100644 --- a/setup/db_structure.sql +++ b/setup/db_structure.sql @@ -468,12 +468,6 @@ CREATE TABLE `aowow_creature` ( `armorMin` mediumint(8) unsigned NOT NULL DEFAULT '1', `armorMax` mediumint(8) unsigned NOT NULL DEFAULT '1', `racialLeader` tinyint(3) unsigned NOT NULL DEFAULT '0', - `questItem1` int(10) unsigned NOT NULL DEFAULT '0', - `questItem2` int(10) unsigned NOT NULL DEFAULT '0', - `questItem3` int(10) unsigned NOT NULL DEFAULT '0', - `questItem4` int(10) unsigned NOT NULL DEFAULT '0', - `questItem5` int(10) unsigned NOT NULL DEFAULT '0', - `questItem6` int(10) unsigned NOT NULL DEFAULT '0', `mechanicImmuneMask` int(10) unsigned NOT NULL DEFAULT '0', `flagsExtra` int(10) unsigned NOT NULL DEFAULT '0', `scriptName` varchar(50) NOT NULL DEFAULT '', @@ -1273,12 +1267,6 @@ CREATE TABLE `aowow_objects` ( `faction` smallint(5) unsigned NOT NULL DEFAULT '0', `flags` int(10) unsigned NOT NULL DEFAULT '0', `cuFlags` int(10) unsigned NOT NULL DEFAULT '0', - `questItem1` int(11) unsigned NOT NULL DEFAULT '0', - `questItem2` int(11) unsigned NOT NULL DEFAULT '0', - `questItem3` int(11) unsigned NOT NULL DEFAULT '0', - `questItem4` int(11) unsigned NOT NULL DEFAULT '0', - `questItem5` int(11) unsigned NOT NULL DEFAULT '0', - `questItem6` int(11) unsigned NOT NULL DEFAULT '0', `lootId` mediumint(8) unsigned NOT NULL DEFAULT '0', `lockId` smallint(5) unsigned NOT NULL DEFAULT '0', `reqSkill` smallint(5) unsigned NOT NULL DEFAULT '0', diff --git a/setup/tools/sqlGen.class.php b/setup/tools/sqlGen.class.php index d6d126b5..9bc7445e 100644 --- a/setup/tools/sqlGen.class.php +++ b/setup/tools/sqlGen.class.php @@ -49,7 +49,7 @@ class SqlGen 'creature' => [null, null, null, ['creature_template', 'locales_creature', 'creature_classlevelstats', 'instance_encounters']], 'currencies' => [null, null, null, ['item_template', 'locales_item']], 'events' => [null, null, null, ['game_event', 'game_event_prerequisite']], - 'objects' => [null, null, null, ['gameobject_template', 'locales_gameobject']], + 'objects' => [null, null, null, ['gameobject_template', 'locales_gameobject', 'gameobject_questitem']], 'pet' => [null, null, null, ['creature_template', 'creature']], 'quests' => [null, null, null, ['quest_template', 'locales_quest', 'game_event', 'game_event_seasonal_questrelation']], 'quests_startend' => [null, null, null, ['creature_queststarter', 'creature_questender', 'game_event_creature_quest', 'gameobject_queststarter', 'gameobject_questender', 'game_event_gameobject_quest', 'item_template']], diff --git a/setup/tools/sqlgen/creature.func.php b/setup/tools/sqlgen/creature.func.php index adc958b3..8fe0fccb 100644 --- a/setup/tools/sqlgen/creature.func.php +++ b/setup/tools/sqlgen/creature.func.php @@ -72,7 +72,6 @@ function creature(array $ids = []) min.basearmor * ct.ArmorModifier AS armorMin, max.basearmor * ct.ArmorModifier AS armorMax, RacialLeader, - questItem1, questItem2, questItem3, questItem4, questItem5, questItem6, mechanic_immune_mask, flags_extra, ScriptName diff --git a/setup/tools/sqlgen/objects.func.php b/setup/tools/sqlgen/objects.func.php index 9c0b2e69..b455fcb6 100644 --- a/setup/tools/sqlgen/objects.func.php +++ b/setup/tools/sqlgen/objects.func.php @@ -10,6 +10,7 @@ if (!CLI) /* deps: * gameobject_template * locales_gameobject + * gameobject_questitem */ @@ -24,8 +25,8 @@ function objects(array $ids = []) go.entry, `type`, IF(`type` = 2, -2, -- quests 1 - IF(`type` = 8 AND data0 IN (1, 2, 3, 4, 1552), -6, -- tools - IF(`type` = 3 AND questitem1 <> 0, -2, -- quests 2 + IF(`type` = 8 AND Data0 IN (1, 2, 3, 4, 1552), -6, -- tools + IF(`type` = 3 AND IFNULL(gqi.ItemId, 0) <> 0, -2, -- quests 2 IF(`type` IN (3, 9, 25), `type`, 0)))), -- regular chests, books, pools 0 AS event, -- linked worldevent displayId, @@ -33,40 +34,43 @@ function objects(array $ids = []) faction, flags, 0 AS cuFlags, -- custom Flags - questItem1, questItem2, questItem3, questItem4, questItem5, questItem6, - IF(`type` IN (3, 25), data1, 0), -- lootId - IF(`type` IN (2, 3, 6, 10, 13, 24, 26), data0, IF(`type` IN (0, 1), data1, 0)), -- lockId + IF(`type` IN (3, 25), Data1, 0), -- lootId + IF(`type` IN (2, 3, 6, 10, 13, 24, 26), Data0, IF(`type` IN (0, 1), Data1, 0)), -- lockId 0 AS reqSkill, -- reqSkill - IF(`type` = 9, data0, IF(`type` = 10, data7, 0)), -- pageTextId - IF(`type` = 1, data3, -- linkedTrapIds - IF(`type` = 3, data7, - IF(`type` = 10, data12, - IF(`type` = 8, data2, 0)))), - IF(`type` = 5, data5, -- reqQuest - IF(`type` = 3, data8, - IF(`type` = 10, data1, - IF(`type` = 8, data4, 0)))), - IF(`type` = 8, data0, 0), -- spellFocusId - IF(`type` = 10, data10, -- onUseSpell - IF(`type` IN (18, 24), data1, - IF(`type` = 26, data2, - IF(`type` = 22, data0, 0)))), - IF(`type` = 18, data4, 0), -- onSuccessSpell - IF(`type` = 18, data2, IF(`type` = 24, data3, 0)), -- auraSpell - IF(`type` = 30, data2, IF(`type` = 24, data4, IF(`type` = 6, data3, 0))), -- triggeredSpell - IF(`type` = 29, CONCAT_WS(" ", data14, data15, data16, data17, data0), -- miscInfo: capturePoint - IF(`type` = 3, CONCAT_WS(" ", data4, data5, data2), -- miscInfo: loot v - IF(`type` = 25, CONCAT_WS(" ", data2, data3, 0), - IF(`type` = 23, CONCAT_WS(" ", data0, data1, data2), "")))), -- miscInfo: meetingStone + IF(`type` = 9, Data0, IF(`type` = 10, Data7, 0)), -- pageTextId + IF(`type` = 1, Data3, -- linkedTrapIds + IF(`type` = 3, Data7, + IF(`type` = 10, Data12, + IF(`type` = 8, Data2, 0)))), + IF(`type` = 5, Data5, -- reqQuest + IF(`type` = 3, Data8, + IF(`type` = 10, Data1, + IF(`type` = 8, Data4, 0)))), + IF(`type` = 8, Data0, 0), -- spellFocusId + IF(`type` = 10, Data10, -- onUseSpell + IF(`type` IN (18, 24), Data1, + IF(`type` = 26, Data2, + IF(`type` = 22, Data0, 0)))), + IF(`type` = 18, Data4, 0), -- onSuccessSpell + IF(`type` = 18, Data2, IF(`type` = 24, Data3, 0)), -- auraSpell + IF(`type` = 30, Data2, IF(`type` = 24, Data4, IF(`type` = 6, Data3, 0))), -- triggeredSpell + IF(`type` = 29, CONCAT_WS(" ", Data14, Data15, Data16, Data17, Data0), -- miscInfo: capturePoint + IF(`type` = 3, CONCAT_WS(" ", Data4, Data5, Data2), -- miscInfo: loot v + IF(`type` = 25, CONCAT_WS(" ", Data2, Data3, 0), + IF(`type` = 23, CONCAT_WS(" ", Data0, Data1, Data2), "")))), -- miscInfo: meetingStone IF(ScriptName <> "", ScriptName, AIName) FROM gameobject_template go LEFT JOIN locales_gameobject lgo ON go.entry = lgo.entry + LEFT JOIN + gameobject_questitem gqi ON gqi.GameObjectEntry = go.entry { WHERE go.entry IN (?a) } + GROUP BY + go.entry LIMIT ?d, ?d'; diff --git a/setup/tools/sqlgen/quests.func.php b/setup/tools/sqlgen/quests.func.php index cf5e67a6..7df3116f 100644 --- a/setup/tools/sqlgen/quests.func.php +++ b/setup/tools/sqlgen/quests.func.php @@ -23,15 +23,15 @@ function quests(array $ids = []) { $baseQuery = ' SELECT - q.Id, + q.ID, Method, - Level, + QuestLevel, MinLevel, MaxLevel, - ZoneOrSort, - ZoneOrSort AS zoneOrSortBak, -- ZoneOrSortBak - Type, - SuggestedPlayers, + QuestSortID, + QuestSortID AS zoneOrSortBak, -- ZoneOrSortBak + QuestType, + SuggestedGroupNum, LimitTime, IFNULL(gesqr.eventEntry, 0) AS eventId, PrevQuestId, @@ -41,60 +41,60 @@ function quests(array $ids = []) Flags, SpecialFlags, 0 AS cuFlags, -- cuFlags - RequiredClasses, RequiredRaces, - RequiredSkillId, RequiredSkillPoints, - RequiredFactionId1, RequiredFactionId2, - RequiredFactionValue1, RequiredFactionValue2, - RequiredMinRepFaction, RequiredMaxRepFaction, - RequiredMinRepValue, RequiredMaxRepValue, + RequiredClasses, RequiredRaces, + RequiredSkillId, RequiredSkillPoints, + RequiredFactionId1, RequiredFactionId2, + RequiredFactionValue1, RequiredFactionValue2, + RequiredMinRepFaction, RequiredMaxRepFaction, + RequiredMinRepValue, RequiredMaxRepValue, RequiredPlayerKills, - SourceItemId, SourceItemCount, + SourceItemId, SourceItemCount, SourceSpellId, RewardXPId, -- QuestXP.dbc x level RewardOrRequiredMoney, RewardMoneyMaxLevel, - RewardSpell, RewardSpellCast, + RewardSpell, RewardSpellCast, RewardHonor * 124 * RewardHonorMultiplier, -- alt calculation in QuestDef.cpp -> Quest::CalculateHonorGain(playerLevel) - RewardMailTemplateId, RewardMailDelay, - RewardTitleId, + RewardMailTemplateId, RewardMailDelay, + RewardTitle, RewardTalents, RewardArenaPoints, - RewardItemId1, RewardItemId2, RewardItemId3, RewardItemId4, - RewardItemCount1, RewardItemCount2, RewardItemCount3, RewardItemCount4, - RewardChoiceItemId1, RewardChoiceItemId2, RewardChoiceItemId3, RewardChoiceItemId4, RewardChoiceItemId5, RewardChoiceItemId6, - RewardChoiceItemCount1, RewardChoiceItemCount2, RewardChoiceItemCount3, RewardChoiceItemCount4, RewardChoiceItemCount5, RewardChoiceItemCount6, - RewardFactionId1, RewardFactionId2, RewardFactionId3, RewardFactionId4, RewardFactionId5, - IF (RewardFactionValueIdOverride1 <> 0, RewardFactionValueIdOverride1 / 100, RewardFactionValueId1), - IF (RewardFactionValueIdOverride2 <> 0, RewardFactionValueIdOverride2 / 100, RewardFactionValueId2), - IF (RewardFactionValueIdOverride3 <> 0, RewardFactionValueIdOverride3 / 100, RewardFactionValueId3), - IF (RewardFactionValueIdOverride4 <> 0, RewardFactionValueIdOverride4 / 100, RewardFactionValueId4), - IF (RewardFactionValueIdOverride5 <> 0, RewardFactionValueIdOverride5 / 100, RewardFactionValueId5), - Title, Title_loc2, Title_loc3, Title_loc6, Title_loc8, - Objectives, Objectives_loc2, Objectives_loc3, Objectives_loc6, Objectives_loc8, - Details, Details_loc2, Details_loc3, Details_loc6, Details_loc8, - EndText, EndText_loc2, EndText_loc3, EndText_loc6, EndText_loc8, - OfferRewardText, OfferRewardText_loc2, OfferRewardText_loc3, OfferRewardText_loc6, OfferRewardText_loc8, - RequestItemsText, RequestItemsText_loc2, RequestItemsText_loc3, RequestItemsText_loc6, RequestItemsText_loc8, - CompletedText, CompletedText_loc2, CompletedText_loc3, CompletedText_loc6, CompletedText_loc8, - RequiredNpcOrGo1, RequiredNpcOrGo2, RequiredNpcOrGo3, RequiredNpcOrGo4, - RequiredNpcOrGoCount1, RequiredNpcOrGoCount2, RequiredNpcOrGoCount3, RequiredNpcOrGoCount4, - RequiredSourceItemId1, RequiredSourceItemId2, RequiredSourceItemId3, RequiredSourceItemId4, - RequiredSourceItemCount1,RequiredSourceItemCount2,RequiredSourceItemCount3,RequiredSourceItemCount4, - RequiredItemId1, RequiredItemId2, RequiredItemId3, RequiredItemId4, RequiredItemId5, RequiredItemId6, - RequiredItemCount1, RequiredItemCount2, RequiredItemCount3, RequiredItemCount4, RequiredItemCount5, RequiredItemCount6, - ObjectiveText1, ObjectiveText1_loc2, ObjectiveText1_loc3, ObjectiveText1_loc6, ObjectiveText1_loc8, - ObjectiveText2, ObjectiveText2_loc2, ObjectiveText2_loc3, ObjectiveText2_loc6, ObjectiveText2_loc8, - ObjectiveText3, ObjectiveText3_loc2, ObjectiveText3_loc3, ObjectiveText3_loc6, ObjectiveText3_loc8, - ObjectiveText4, ObjectiveText4_loc2, ObjectiveText4_loc3, ObjectiveText4_loc6, ObjectiveText4_loc8 + RewardItem1, RewardItem2, RewardItem3, RewardItem4, + RewardAmount1, RewardAmount2, RewardAmount3, RewardAmount4, + RewardChoiceItemID1, RewardChoiceItemID2, RewardChoiceItemID3, RewardChoiceItemID4, RewardChoiceItemID5, RewardChoiceItemID6, + RewardChoiceItemQuantity1, RewardChoiceItemQuantity2, RewardChoiceItemQuantity3, RewardChoiceItemQuantity4, RewardChoiceItemQuantity5, RewardChoiceItemQuantity6, + RewardFactionID1, RewardFactionID2, RewardFactionID3, RewardFactionID4, RewardFactionID5, + IF (RewardFactionOverride1 <> 0, RewardFactionOverride1 / 100, RewardFactionValue1), + IF (RewardFactionOverride2 <> 0, RewardFactionOverride2 / 100, RewardFactionValue2), + IF (RewardFactionOverride3 <> 0, RewardFactionOverride3 / 100, RewardFactionValue3), + IF (RewardFactionOverride4 <> 0, RewardFactionOverride4 / 100, RewardFactionValue4), + IF (RewardFactionOverride5 <> 0, RewardFactionOverride5 / 100, RewardFactionValue5), + LogTitle, Title_loc2, Title_loc3, Title_loc6, Title_loc8, + LogDescription, Objectives_loc2, Objectives_loc3, Objectives_loc6, Objectives_loc8, + QuestDescription, Details_loc2, Details_loc3, Details_loc6, Details_loc8, + EndText, EndText_loc2, EndText_loc3, EndText_loc6, EndText_loc8, + OfferRewardText, OfferRewardText_loc2, OfferRewardText_loc3, OfferRewardText_loc6, OfferRewardText_loc8, + RequestItemsText, RequestItemsText_loc2, RequestItemsText_loc3, RequestItemsText_loc6, RequestItemsText_loc8, + QuestCompletionLog, CompletedText_loc2, CompletedText_loc3, CompletedText_loc6, CompletedText_loc8, + RequiredNpcOrGo1, RequiredNpcOrGo2, RequiredNpcOrGo3, RequiredNpcOrGo4, + RequiredNpcOrGoCount1, RequiredNpcOrGoCount2, RequiredNpcOrGoCount3, RequiredNpcOrGoCount4, + RequiredSourceItemId1, RequiredSourceItemId2, RequiredSourceItemId3, RequiredSourceItemId4, + RequiredSourceItemCount1, RequiredSourceItemCount2, RequiredSourceItemCount3, RequiredSourceItemCount4, + RequiredItemId1, RequiredItemId2, RequiredItemId3, RequiredItemId4, RequiredItemId5, RequiredItemId6, + RequiredItemCount1, RequiredItemCount2, RequiredItemCount3, RequiredItemCount4, RequiredItemCount5, RequiredItemCount6, + ObjectiveText1, ObjectiveText1_loc2, ObjectiveText1_loc3, ObjectiveText1_loc6, ObjectiveText1_loc8, + ObjectiveText2, ObjectiveText2_loc2, ObjectiveText2_loc3, ObjectiveText2_loc6, ObjectiveText2_loc8, + ObjectiveText3, ObjectiveText3_loc2, ObjectiveText3_loc3, ObjectiveText3_loc6, ObjectiveText3_loc8, + ObjectiveText4, ObjectiveText4_loc2, ObjectiveText4_loc3, ObjectiveText4_loc6, ObjectiveText4_loc8 FROM quest_template q LEFT JOIN - locales_quest lq ON q.Id = lq.Id + locales_quest lq ON q.ID = lq.Id LEFT JOIN - game_event_seasonal_questrelation gesqr ON gesqr.questId = q.Id + game_event_seasonal_questrelation gesqr ON gesqr.questId = q.ID { WHERE - q.Id IN (?a) + q.ID IN (?a) } LIMIT ?d, ?d'; @@ -156,7 +156,7 @@ function quests(array $ids = []) for ($i = 1; $i < 6; $i++) DB::Aowow()->query($repQuery, $i, $i, $i, $i, $ids ?: DBSIMPLE_SKIP); - // update zoneOrSort .. well .. now "not documenting" bites me in the ass .. ~700 quests were changed, i don't know by what method + // update zoneOrSort/QuestSortID .. well .. now "not documenting" bites me in the ass .. ~700 quests were changed, i don't know by what method $eventSet = DB::World()->selectCol('SELECT holiday AS ARRAY_KEY, eventEntry FROM game_event WHERE holiday <> 0'); $holidaySorts = array( 141 => -1001, 181 => -374, 201 => -1002, diff --git a/setup/tools/sqlgen/source.func.php b/setup/tools/sqlgen/source.func.php index e290876f..8f34be00 100644 --- a/setup/tools/sqlgen/source.func.php +++ b/setup/tools/sqlgen/source.func.php @@ -8,32 +8,32 @@ if (!CLI) /* deps: - * reference_loot_template - * item_loot_template - * creature_loot_template - * gameobject_loot_template - * mail_loot_template - * disenchant_loot_template - * fishing_loot_template - * skinning_loot_template - * milling_loot_template - * prospecting_loot_template - * pickpocketing_loot_template + * reference_loot_template + * item_loot_template + * creature_loot_template + * gameobject_loot_template + * mail_loot_template + * disenchant_loot_template + * fishing_loot_template + * skinning_loot_template + * milling_loot_template + * prospecting_loot_template + * pickpocketing_loot_template - * item_template - * creature_template - * gameobject_template - * quest_template + * item_template + * creature_template + * gameobject_template + * quest_template - * npc_trainer - * npc_vendor - * game_event_npc_vendor - * creature + * npc_trainer + * npc_vendor + * game_event_npc_vendor + * creature - * playercreateinfo_item - * playercreateinfo_spell - * achievement_reward - * skill_discovery_template + * playercreateinfo_item + * playercreateinfo_spell + * achievement_reward + * skill_discovery_template */ $customData = array( @@ -250,11 +250,11 @@ function source(array $ids = []) FROM gameobject_loot_template glt JOIN - gameobject_template gt ON glt.entry = gt.data1 + gameobject_template gt ON glt.entry = gt.Data1 LEFT JOIN item_template it ON it.entry = glt.Item AND glt.Reference <= 0 WHERE - `type` = 3 AND gt.data1 > 0 AND gt.data0 NOT IN (?a) + `type` = 3 AND gt.Data1 > 0 AND gt.Data0 NOT IN (?a) GROUP BY ARRAY_KEY', $exclLocks @@ -388,17 +388,17 @@ function source(array $ids = []) $spellBuff = []; $itemBuff = []; $quests = DB::World()->select( - 'SELECT n.item AS ARRAY_KEY, n.Id AS quest, SUM(n.qty) AS qty, BIT_OR(n.side) AS side, it.class, it.subclass, it.spellid_1, it.spelltrigger_1, it.spellid_2, it.spelltrigger_2 FROM ( - SELECT rewardChoiceItemId1 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardChoiceItemId1 > 0 GROUP BY item UNION - SELECT rewardChoiceItemId2 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardChoiceItemId2 > 0 GROUP BY item UNION - SELECT rewardChoiceItemId3 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardChoiceItemId3 > 0 GROUP BY item UNION - SELECT rewardChoiceItemId4 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardChoiceItemId4 > 0 GROUP BY item UNION - SELECT rewardChoiceItemId5 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardChoiceItemId5 > 0 GROUP BY item UNION - SELECT rewardChoiceItemId6 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardChoiceItemId6 > 0 GROUP BY item UNION - SELECT rewardItemId1 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardItemId1 > 0 GROUP BY item UNION - SELECT rewardItemId2 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardItemId2 > 0 GROUP BY item UNION - SELECT rewardItemId3 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardItemId3 > 0 GROUP BY item UNION - SELECT rewardItemId4 AS item, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE rewardItemId4 > 0 GROUP BY item + 'SELECT n.item AS ARRAY_KEY, n.ID AS quest, SUM(n.qty) AS qty, BIT_OR(n.side) AS side, it.class, it.subclass, it.spellid_1, it.spelltrigger_1, it.spellid_2, it.spelltrigger_2 FROM ( + SELECT RewardChoiceItemID1 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardChoiceItemID1 > 0 GROUP BY item UNION + SELECT RewardChoiceItemID2 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardChoiceItemID2 > 0 GROUP BY item UNION + SELECT RewardChoiceItemID3 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardChoiceItemID3 > 0 GROUP BY item UNION + SELECT RewardChoiceItemID4 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardChoiceItemID4 > 0 GROUP BY item UNION + SELECT RewardChoiceItemID5 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardChoiceItemID5 > 0 GROUP BY item UNION + SELECT RewardChoiceItemID6 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardChoiceItemID6 > 0 GROUP BY item UNION + SELECT RewardItem1 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardItem1 > 0 GROUP BY item UNION + SELECT RewardItem2 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardItem2 > 0 GROUP BY item UNION + SELECT RewardItem3 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardItem3 > 0 GROUP BY item UNION + SELECT RewardItem4 AS item, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE RewardItem4 > 0 GROUP BY item ) n JOIN item_template it ON it.entry = n.item GROUP BY item' ); @@ -413,7 +413,7 @@ function source(array $ids = []) $mailLoot = DB::World()->select(' SELECT IF(mlt.Reference > 0, -mlt.Reference, mlt.Item) AS ARRAY_KEY, - qt.Id AS entry, + qt.ID AS entry, it.class, it.subclass, it.spellid_1, it.spelltrigger_1, it.spellid_2, it.spelltrigger_2, count(1) AS qty, BIT_OR(IF(qt.RequiredRaces & 0x2B2 AND !(qt.RequiredRaces & 0x44D), 2, IF(qt.RequiredRaces & 0x44D AND !(qt.RequiredRaces & 0x2B2), 1, 3))) AS side @@ -635,7 +635,7 @@ function source(array $ids = []) count(1) AS qty FROM ( SELECT 0 AS entry, IF(flt.Reference > 0, -flt.Reference, flt.Item) itemOrRef FROM fishing_loot_template flt UNION - SELECT gt.entry, IF(glt.Reference > 0, -glt.Reference, glt.Item) itemOrRef FROM gameobject_template gt JOIN gameobject_loot_template glt ON glt.entry = gt.data1 WHERE `type` = 25 AND gt.data1 > 0 + SELECT gt.entry, IF(glt.Reference > 0, -glt.Reference, glt.Item) itemOrRef FROM gameobject_template gt JOIN gameobject_loot_template glt ON glt.entry = gt.Data1 WHERE `type` = 25 AND gt.Data1 > 0 ) src LEFT JOIN item_template it ON src.itemOrRef > 0 AND src.itemOrRef = it.entry @@ -688,7 +688,7 @@ function source(array $ids = []) src.srcType FROM ( SELECT ct.entry, IF(slt.Reference > 0, -slt.Reference, slt.Item) itemOrRef, ?d AS srcType FROM creature_template ct JOIN skinning_loot_template slt ON slt.entry = ct.skinloot WHERE (type_flags & ?d) AND ct.skinloot > 0 UNION - SELECT gt.entry, IF(glt.Reference > 0, -glt.Reference, glt.Item) itemOrRef, ?d AS srcType FROM gameobject_template gt JOIN gameobject_loot_template glt ON glt.entry = gt.data1 WHERE gt.`type` = 3 AND gt.data1 > 0 AND data0 IN (?a) + SELECT gt.entry, IF(glt.Reference > 0, -glt.Reference, glt.Item) itemOrRef, ?d AS srcType FROM gameobject_template gt JOIN gameobject_loot_template glt ON glt.entry = gt.Data1 WHERE gt.`type` = 3 AND gt.Data1 > 0 AND Data0 IN (?a) ) src LEFT JOIN item_template it ON src.itemOrRef > 0 AND src.itemOrRef = it.entry @@ -794,7 +794,7 @@ function source(array $ids = []) src.srcType FROM ( SELECT ct.entry, IF(slt.Reference > 0, -slt.Reference, slt.Item) itemOrRef, ?d AS srcType FROM creature_template ct JOIN skinning_loot_template slt ON slt.entry = ct.skinloot WHERE (type_flags & ?d) AND ct.skinloot > 0 UNION - SELECT gt.entry, IF(glt.Reference > 0, -glt.Reference, glt.Item) itemOrRef, ?d AS srcType FROM gameobject_template gt JOIN gameobject_loot_template glt ON glt.entry = gt.data1 WHERE gt.`type` = 3 AND gt.data1 > 0 AND data0 IN (?a) + SELECT gt.entry, IF(glt.Reference > 0, -glt.Reference, glt.Item) itemOrRef, ?d AS srcType FROM gameobject_template gt JOIN gameobject_loot_template glt ON glt.entry = gt.Data1 WHERE gt.`type` = 3 AND gt.Data1 > 0 AND Data0 IN (?a) ) src LEFT JOIN item_template it ON src.itemOrRef > 0 AND src.itemOrRef = it.entry @@ -1045,9 +1045,9 @@ function source(array $ids = []) CLISetup::log(' * #4 Quest'); $quests = DB::World()->select(' SELECT spell AS ARRAY_KEY, id, SUM(qty) AS qty, BIT_OR(side) AS side FROM ( - SELECT IF(rewardSpellCast = 0, rewardSpell, rewardSpellCast) AS spell, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE IF(rewardSpellCast = 0, rewardSpell, rewardSpellCast) > 0 GROUP BY spell + SELECT IF(rewardSpellCast = 0, rewardSpell, rewardSpellCast) AS spell, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE IF(rewardSpellCast = 0, rewardSpell, rewardSpellCast) > 0 GROUP BY spell UNION - SELECT SourceSpellId AS spell, Id, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE SourceSpellId > 0 GROUP BY spell + SELECT SourceSpellId AS spell, ID, COUNT(1) AS qty, IF(RequiredRaces & 0x2B2 AND !(RequiredRaces & 0x44D), 2, IF(RequiredRaces & 0x44D AND !(RequiredRaces & 0x2B2), 1, 3)) AS side FROM quest_template WHERE SourceSpellId > 0 GROUP BY spell ) t GROUP BY spell'); if ($quests) @@ -1071,7 +1071,7 @@ function source(array $ids = []) # 6: Trainer CLISetup::log(' * #6 Trainer'); - if ($tNpcs = DB::World()->select('SELECT spell AS ARRAY_KEY, entry, COUNT(1) AS qty FROM npc_trainer WHERE spell > 0 GROUP BY ARRAY_KEY')) + if ($tNpcs = DB::World()->select('SELECT SpellID AS ARRAY_KEY, ID AS entry, COUNT(1) AS qty FROM npc_trainer WHERE SpellID > 0 GROUP BY ARRAY_KEY')) { $tSpells = DB::Aowow()->select('SELECT Id AS ARRAY_KEY, effect1Id, effect2Id, effect3Id, effect1TriggerSpell, effect2TriggerSpell, effect3TriggerSpell FROM dbc_spell WHERE Id IN (?a)', array_keys($tNpcs)); $buff = []; @@ -1167,7 +1167,7 @@ function source(array $ids = []) # 4: Quest CLISetup::log(' * #4 Quest'); - if ($quests = DB::World()->select('SELECT ?d, RewardTitleId, 1, ?d, Id FROM quest_template WHERE RewardTitleId > 0', TYPE_TITLE, TYPE_QUEST)) + if ($quests = DB::World()->select('SELECT ?d, RewardTitle, 1, ?d, ID FROM quest_template WHERE RewardTitle > 0', TYPE_TITLE, TYPE_QUEST)) DB::Aowow()->query(queryfy('[V]', $quests, $insMore), 4, 4, 4); # 12: Achievement diff --git a/setup/tools/sqlgen/spawns.func.php b/setup/tools/sqlgen/spawns.func.php index d7fdd919..ee0d6bc7 100644 --- a/setup/tools/sqlgen/spawns.func.php +++ b/setup/tools/sqlgen/spawns.func.php @@ -134,7 +134,7 @@ function spawns() // and waypoints /* offsets for transports */ /**************************/ - $transports = DB::World()->selectCol('SELECT data0 AS pathId, data6 AS ARRAY_KEY FROM gameobject_template WHERE type = 15 AND data6 <> 0'); + $transports = DB::World()->selectCol('SELECT Data0 AS pathId, Data6 AS ARRAY_KEY FROM gameobject_template WHERE type = 15 AND Data6 <> 0'); foreach ($transports as &$t) $t = DB::Aowow()->selectRow('SELECT posX, posY, mapId FROM dbc_taxipathnode tpn WHERE tpn.pathId = ?d AND nodeIdx = 0', $t); diff --git a/setup/tools/sqlgen/spell.func.php b/setup/tools/sqlgen/spell.func.php index 60ef5423..f5b30bc9 100644 --- a/setup/tools/sqlgen/spell.func.php +++ b/setup/tools/sqlgen/spell.func.php @@ -353,7 +353,7 @@ function spell() } // fill learnedAt, trainingCost from trainer - if ($trainer = DB::World()->select('SELECT spell AS ARRAY_KEY, MIN(reqskillvalue) AS reqSkill, MIN(spellcost) AS cost, COUNT(*) as count FROM npc_trainer GROUP BY spell')) + if ($trainer = DB::World()->select('SELECT SpellID AS ARRAY_KEY, MIN(ReqSkillRank) AS reqSkill, MIN(MoneyCost) AS cost, COUNT(*) AS count FROM npc_trainer GROUP BY SpellID')) { $spells = DB::Aowow()->select('SELECT Id AS ARRAY_KEY, effect1Id, effect2Id, effect3Id, effect1TriggerSpell, effect2TriggerSpell, effect3TriggerSpell FROM dbc_spell WHERE Id IN (?a)', array_keys($trainer)); $links = []; @@ -489,7 +489,7 @@ function spell() 201032 => 10658 ); foreach ($specs as $tt => $req) - if ($spells = DB::World()->selectCol('SELECT spell FROM npc_trainer WHERE entry = ?d', $tt)) + if ($spells = DB::World()->selectCol('SELECT SpellID FROM npc_trainer WHERE ID = ?d', $tt)) DB::Aowow()->query('UPDATE ?_spell SET reqSpellId = ?d WHERE id IN (?a)', $req, $spells); $itemReqs = DB::World()->selectCol('SELECT entry AS ARRAY_KEY, requiredSpell FROM item_template WHERE requiredSpell NOT IN (?a)', [0, 34090, 34091]); // not riding diff --git a/setup/tools/sqlgen/titles.func.php b/setup/tools/sqlgen/titles.func.php index a084930b..21382c03 100644 --- a/setup/tools/sqlgen/titles.func.php +++ b/setup/tools/sqlgen/titles.func.php @@ -37,17 +37,17 @@ function titles() $questQuery = ' SELECT - qt.RewardTitleId AS ARRAY_KEY, + qt.RewardTitle AS ARRAY_KEY, qt.RequiredRaces, ge.eventEntry FROM quest_template qt LEFT JOIN - game_event_seasonal_questrelation sq ON sq.questId = qt.id + game_event_seasonal_questrelation sq ON sq.questId = qt.ID LEFT JOIN game_event ge ON ge.eventEntry = sq.eventEntry WHERE - qt.RewardTitleId <> 0'; + qt.RewardTitle <> 0'; DB::Aowow()->query('REPLACE INTO ?_titles SELECT Id, 0, 0, 0, 0, 0, 0, 0, male_loc0, male_loc2, male_loc3, male_loc6, male_loc8, female_loc0, female_loc2, female_loc3, female_loc6, female_loc8 FROM dbc_chartitles'); diff --git a/setup/updates/1437329787_01.sql b/setup/updates/1437329787_01.sql new file mode 100644 index 00000000..4d1e8434 --- /dev/null +++ b/setup/updates/1437329787_01.sql @@ -0,0 +1,15 @@ +ALTER TABLE `aowow_objects` + DROP COLUMN `questItem1`, + DROP COLUMN `questItem2`, + DROP COLUMN `questItem3`, + DROP COLUMN `questItem4`, + DROP COLUMN `questItem5`, + DROP COLUMN `questItem6`; + +ALTER TABLE `aowow_creature` + DROP COLUMN `questItem1`, + DROP COLUMN `questItem2`, + DROP COLUMN `questItem3`, + DROP COLUMN `questItem4`, + DROP COLUMN `questItem5`, + DROP COLUMN `questItem6`;