aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-04-17 00:03:44 +0200
committerShauren <shauren.trinity@gmail.com>2017-04-17 00:03:44 +0200
commit0b9548a1cc429a336481edaf0b447d86aeb15c9b (patch)
tree636deb1563fc9e23891fe4444248eec68103c3ab
parent7e8583ee8146d2a28d332d515df28a39a2911c01 (diff)
Core: Updated GameTables to 7.2.0
Tools/Extractors: Updated to 7.2.0 Tools/ConnectionPatcher: Updated patterns to 7.2.0 Supported version is now 7.2.0.23911
-rw-r--r--sql/base/auth_database.sql6
-rw-r--r--sql/updates/auth/master/2017_04_17_00_auth.sql3
-rw-r--r--src/common/DataStores/DB2FileLoader.cpp74
-rw-r--r--src/common/DataStores/DB2FileLoader.h7
-rw-r--r--src/server/game/DataStores/GameTables.cpp32
-rw-r--r--src/server/game/DataStores/GameTables.h33
-rw-r--r--src/server/game/DataStores/M2Stores.cpp18
-rw-r--r--src/server/game/DataStores/M2Stores.h18
-rw-r--r--src/server/game/Entities/Item/Item.cpp10
-rw-r--r--src/server/game/Entities/Player/CinematicMgr.cpp27
-rw-r--r--src/server/game/Entities/Player/CinematicMgr.h6
-rw-r--r--src/server/game/Handlers/ArtifactHandler.cpp8
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp7
-rw-r--r--src/tools/connection_patcher/Patches/Mac.hpp2
-rw-r--r--src/tools/connection_patcher/Patterns/Mac.hpp2
-rw-r--r--src/tools/connection_patcher/Patterns/Windows.hpp4
-rw-r--r--src/tools/map_extractor/System.cpp41
-rw-r--r--src/tools/map_extractor/loadlib/DBFilesClientList.h33
-rw-r--r--src/tools/vmap4_extractor/gameobject_extract.cpp5
-rw-r--r--src/tools/vmap4_extractor/vmapexport.cpp11
20 files changed, 231 insertions, 116 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index d6df43f61bc..63c497e0a23 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -716,7 +716,7 @@ CREATE TABLE `realmlist` (
`timezone` tinyint(3) unsigned NOT NULL DEFAULT '0',
`allowedSecurityLevel` tinyint(3) unsigned NOT NULL DEFAULT '0',
`population` float unsigned NOT NULL DEFAULT '0',
- `gamebuild` int(10) unsigned NOT NULL DEFAULT '23420',
+ `gamebuild` int(10) unsigned NOT NULL DEFAULT '23911',
`Region` tinyint(3) unsigned NOT NULL DEFAULT '2',
`Battlegroup` tinyint(3) unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
@@ -730,7 +730,7 @@ CREATE TABLE `realmlist` (
LOCK TABLES `realmlist` WRITE;
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
-INSERT INTO `realmlist` VALUES (1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,2,1,0,0,23420,2,1);
+INSERT INTO `realmlist` VALUES (1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,2,1,0,0,23911,2,1);
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
UNLOCK TABLES;
@@ -757,7 +757,7 @@ CREATE TABLE `updates` (
LOCK TABLES `updates` WRITE;
/*!40000 ALTER TABLE `updates` DISABLE KEYS */;
-INSERT INTO `updates` VALUES ('2014_10_04_00_auth.sql','C3BC70A6EC381474B7308F442346F1E721176BC6','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_19_00_auth.sql','7472B490A4F86C9D3DA609CDD3197499CB80C87C','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_26_00_auth.sql','75CC67ADE2A3B2E54FD57D6B0DCAA8FE50F4EE35','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_03_00_auth.sql','5948C9F286CF0FEA8E241785C0259FF36B73BDC5','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_04_00_auth.sql','3AFC68B2375C2A417DDEA94583C53AFF83DE50DF','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_09_00_auth.sql','B8DD1A7047C0FDDB80344B239343EC33BF1A0D97','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth.sql','8FBA737A1D3FF4631A1E662A5B500A8BD304EC63','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth_from_335.sql','0E3CB119442D09DD88E967015319BBC8DAFBBFE0','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_01_auth.sql','327E77A1DA3546D5275AB249915DD57EDD6FDD3D','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_23_00_auth.sql','0BBEB3EB3AED0FEF277A062819B6B2C00084A742','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_25_00_auth.sql','4F45CDB26BDBB3EE83F1988E3D7818C5926ADC02','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_05_00_auth.sql','6A7BBCEF43111C73A2D2C3CCB6911BE50DE7DD94','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_10_00_auth.sql','821703A96D80F9080074852B5A46E2909C9562EA','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_19_00_auth.sql','44D8E12FFF327AD07878FBDF8D9C16B6B7DCB122','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_20_00_auth.sql','4DAA02AE285C02AE6C82EA2C8B97AC71990F1085','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_25_00_auth.sql','61411930F482BC73FC7FD2C370C811E944F5FF92','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_27_00_auth.sql','CE2E5D2CD82E79C25294539ADED27A1429105B43','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_28_00_auth.sql','0A913217610E76AFF119C27259737BBC523090E6','ARCHIVED','2015-03-21 16:55:52',0),('2015_02_22_00_auth.sql','21CCCF8B01252E16CA3D6C9E3E8DAA4C9B28ED6E','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_01_00_auth.sql','911881E273207FF6182D1FDAC8C85FFAE8F1C852','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_10_00_auth.sql','2CC8502C11412EFEB5C11BE166761A8754A59009','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_00_auth.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_01_auth.sql','5CCEDF20C8189FB1E8DF064A9F0DDC342841FBF0','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_02_auth.sql','85E4ACD9AA099C0C4AC034575F2BB07D348EAC72','ARCHIVED','2015-03-21 16:56:46',0),('2015_03_15_00_auth.sql','1D8E107FBEFE5E7F47E09F45240DFF499B77CDED','ARCHIVED','2015-05-02 13:57:57',0),('2015_03_26_00_auth.sql','34AC8543E6A9C6C832DE58EAB33618EEEF70B9F9','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_04_00_auth.sql','57146B35E54A2EC7869C945034AB078358020311','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_06_00_auth.sql','2A8049DC2923420A002D42FB6F02C2FFCC5CDD22','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_08_00_auth.sql','4D7D8EEF285C982BB676836602266501BEC26764','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_10_00_auth.sql','4AE68FD97A95CEE5143EA20FD33F5D557367AC1F','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_11_00_auth.sql','80A71C8921CFEBB547D264558B6DE27201685B84','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_11_01_auth.sql','3E88183E1A85D11BFD74CF9A32A725C44AE02EEC','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_21_00_auth.sql','1B3B48DBA06368B985C548D166C515C9DD598CB9','ARCHIVED','2015-05-02 13:57:57',0),('2015_05_02_00_auth.sql','96AB595E0D2A088750E3F48B0AF0A8A14F3CFE1E','ARCHIVED','2015-05-02 13:57:57',0),('2015_05_02_01_auth.sql','FB11FB834E488B0FD3AFDABCC1A3113092E7C2E5','ARCHIVED','2015-05-02 13:57:57',0),('2015_07_02_00_auth.sql','E5EE3842AB9B01851E49B360FBAF6FFEEAB2A8DA','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_06_00_auth.sql','6D1ADBA496DC6E6D7B3BF887DA8D4D17D3FBACE0','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_08_00_auth.sql','CB54020AFD1E31742FD8BF9CE16879625E289788','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_08_01_auth.sql','74D281CB82E0DA36D628BDC7AC797AE5498DB461','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_16_00_auth.sql','A057E95B5553B6A57A1642FE3FEC8E2E62EDE3C6','ARCHIVED','2015-10-10 08:30:48',0),('2015_07_29_00_auth.sql','0000FECBC413E96C7C45F303D162E263EFBA7116','ARCHIVED','2015-10-10 08:30:48',0),('2015_08_26_00_auth.sql','3071C02A2EB7DCBF4CEE10279FEFAB7C29A43A3A','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_05_00_auth.sql','F765D82B37873FA67447347D5B83C99C159FB452','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_05_01_auth.sql','97A72DBCBF14D27A1863834A22296905FF276086','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_09_00_auth.sql','495A0CF1B1C49205D4A5D3C25A4E1EB95616D6B4','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_15_00_auth.sql','D1FEFDA4C98F30384DF4B64D5A53187303EB5786','ARCHIVED','2015-10-10 08:30:48',0),('2015_10_09_00_auth.sql','B6D643D444C6AE711503F73B96B6252A852913D6','ARCHIVED','2015-10-10 08:30:48',0),('2015_10_16_00_auth.sql','366AFFD1088762866091A81CE1EC64138B8B35F1','ARCHIVED','2015-11-08 00:46:02',62),('2015_10_17_00_auth.sql','AC0D45E905033F42093852D2C4476663BDACCB3D','ARCHIVED','2015-10-17 12:39:12',0),('2015_11_01_00_auth_2015_08_21_00.sql','C31A9E1D28E11B60BE8F8198637DD51F6D75123F','ARCHIVED','2015-11-01 14:50:26',0),('2015_11_08_00_auth.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','ARCHIVED','2015-11-08 00:51:45',0),('2015_11_21_00_auth.sql','575A1D697CC6C7C517F7CCB950988267C99CE7FA','ARCHIVED','2015-11-21 21:25:38',0),('2015_12_07_00_auth.sql','24A07AC1F38E5D26A3599FC06D29E267418F69F3','ARCHIVED','2015-12-07 20:55:48',0),('2016_01_13_00_auth.sql','114527BCCB0DE286CBE6FDA3029DD0523D1037FA','ARCHIVED','2016-01-13 21:39:13',0),('2016_03_22_01_auth_2016_01_13_00_auth.sql','24615CC69B3CD7BB4699874647C35BA86E8A93FD','ARCHIVED','2016-03-22 22:55:13',0),('2016_03_28_00_auth.sql','BA14D23D81FA24565F04A359090DE86C5E195209','ARCHIVED','2016-03-28 16:49:32',0),('2016_04_11_00_auth.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','ARCHIVED','2016-04-11 02:24:14',30),('2016_04_17_00_auth.sql','83399B64D1221B56F73A0FFB51889F11A70521BC','ARCHIVED','2016-04-17 00:22:05',0),('2016_05_07_00_auth.sql','7E36DCC4F06FCDCDA7155AF3C5EDF8D3A720565F','ARCHIVED','2016-05-07 01:00:21',0),('2016_05_19_00_auth.sql','FB52E6BF35682CE6FA667B552B551F4FBD72AC30','ARCHIVED','2016-05-19 22:18:06',0),('2016_07_19_00_auth.sql','D5498F28A1E21F4AD0E0D7C2B96FCF7292C14C4D','ARCHIVED','2016-07-19 14:00:28',0),('2016_07_19_01_auth.sql','EBFE5D7D7E7CFA0CDA76AC49A1E8D4FA461A12BE','ARCHIVED','2016-07-19 16:06:39',0),('2016_07_23_00_auth.sql','1048F6A922ACD9BFC2E4518A71AF7037F79A85C4','ARCHIVED','2016-07-23 14:39:21',0),('2016_07_23_01_auth.sql','5897C7D8B8DE15895286FBCD1535FC75E1B70F62','ARCHIVED','2016-07-23 17:35:11',0),('2016_07_30_00_auth.sql','0FD4147840F7F02E2F1828A904B269F5B66097E0','ARCHIVED','2016-07-30 15:07:02',0),('2016_08_07_00_auth.sql','D9DD23851822E32E1312FFABEE2DB721C8651443','ARCHIVED','2016-08-07 15:33:42',0),('2016_08_11_00_auth.sql','0C79A86A4DFC53746BECF3D8A145482F94AE5FC9','ARCHIVED','2016-08-11 17:02:20',0),('2016_08_13_00_auth.sql','ED2286C4FF3D80D0F4DEE3D3121BCC15544470BE','ARCHIVED','2016-08-13 01:11:49',0),('2016_08_26_00_auth.sql','3C566371B6026EFEEA19CD215EC9F02C6DA9EAB3','ARCHIVED','2016-08-26 14:09:52',19),('2016_08_27_00_auth.sql','65ABEF7ACBCEA974C744ED42F95FBBD29226917B','ARCHIVED','2016-08-27 07:02:45',0),('2016_08_30_00_auth.sql','E16C19A938FE6370921658D2B713EE28A633FD56','ARCHIVED','2016-08-30 00:00:00',0),('2016_09_02_00_auth.sql','08932DAC4BDE74D3C39A43DDE404522F23EDD035','ARCHIVED','2016-09-02 00:00:00',0),('2016_09_03_00_auth_2016_05_11_00_auth.sql','401EFD3586772BDED66B4A944C20A1AC18A22D3A','ARCHIVED','2016-09-03 11:29:38',0),('2016_09_03_01_auth.sql','08B5ABCB74BBF25A30D37AF639F0EA1B10640673','ARCHIVED','2016-09-03 13:24:32',0),('2016_09_03_02_auth_2016_06_06_00_auth.sql','A0A8D73A952D0618833416513D53F73A70E7EA25','ARCHIVED','2016-09-03 15:56:50',0),('2016_09_03_03_auth.sql','9BF1C03EE39B6DC7E817BA46BE7D12A41AFBFDF7','ARCHIVED','2016-09-03 15:56:50',0),('2016_09_15_00_auth.sql','CD65F822AF1B5B7776E39804D0362F3E34AA6445','ARCHIVED','2016-09-15 16:30:36',0),('2016_09_21_00_auth.sql','57219A16B88080240EED94CDD41FC2764B8A32C5','ARCHIVED','2016-09-21 17:08:43',0),('2016_09_25_00_auth.sql','E811EFD8CE92ABEC5B8C02A09E643035939CF96D','ARCHIVED','2016-09-25 15:56:58',0),('2016_10_01_00_auth.sql','7C444FF1B03BA3C83472BDA409854754D052D6FB','ARCHIVED','2016-10-01 13:32:43',0),('2016_10_06_00_auth.sql','6A415F9813EFB5B95EB2AA2B326E1A6791E25EDB','ARCHIVED','2016-10-06 23:16:24',0),('2016_10_12_00_auth.sql','671D57BBA183AC70B9580DEE19B7EC046AF2EA87','ARCHIVED','2016-10-12 00:01:05',0),('2016_10_17_00_auth.sql','A0EF594CD73690D46A46031137DB0E895F079235','RELEASED','2016-10-16 16:33:05',19),('2016_10_25_00_auth.sql','5743FB1AC3F564FE4192DCFA90260BAD5E501882','RELEASED','2016-10-25 19:27:02',0),('2016_10_28_00_auth.sql','C1B9B1DD20B2183C6CB44CAED9B91BA7C63B8C49','RELEASED','2016-10-28 00:07:48',0),('2016_11_04_00_auth.sql','3F4FE06DCE019EB3223B5A6E0F80E2239078967F','RELEASED','2016-11-04 20:25:23',0),('2016_11_09_00_auth.sql','56432F8AEC2943A398A5B8B77843138B5B704257','RELEASED','2016-11-09 18:46:48',0),('2016_11_17_00_auth.sql','18E8F8FC93CC38755AB571638960AAFB98C0F3F1','RELEASED','2016-11-17 23:47:51',0),('2016_12_04_00_auth.sql','B1623681EAB651D2A091E3F4D4D4E476CF6D3AEA','RELEASED','2016-12-04 00:41:36',0),('2016_12_11_00_auth.sql','24CA34537DB697962DDD69EEE4BB5E79D2A573DA','RELEASED','2016-12-11 18:18:59',0),('2016_12_18_00_auth.sql','7AB53E033680CF7439F142EF83CD13E6F5D0ACB9','RELEASED','2016-12-18 12:15:48',0),('2017_01_14_00_auth.sql','1B514D1364042DB4CE68929EB54A94F86983441D','RELEASED','2017-01-14 20:50:47',0),('2017_01_26_00_auth.sql','723E1B69981A32A2F28A67C64902BA1AE7E98E48','RELEASED','2017-01-26 17:10:15',0),('2017_01_29_00_auth.sql','B76C514678903F540302505AF66886F7D2C89E30','RELEASED','2017-01-29 00:00:00',0),('2017_03_11_00_auth.sql','2F2F67E51439346B212C27B7224E4614C00E1AEB','RELEASED','2017-03-11 00:00:00',0),('2017_03_17_00_auth.sql','4902E9B1B063F399F928C2DD7AFD60427738E227','RELEASED','2017-03-17 18:58:01',0);
+INSERT INTO `updates` VALUES ('2014_10_04_00_auth.sql','C3BC70A6EC381474B7308F442346F1E721176BC6','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_19_00_auth.sql','7472B490A4F86C9D3DA609CDD3197499CB80C87C','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_26_00_auth.sql','75CC67ADE2A3B2E54FD57D6B0DCAA8FE50F4EE35','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_03_00_auth.sql','5948C9F286CF0FEA8E241785C0259FF36B73BDC5','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_04_00_auth.sql','3AFC68B2375C2A417DDEA94583C53AFF83DE50DF','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_09_00_auth.sql','B8DD1A7047C0FDDB80344B239343EC33BF1A0D97','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth.sql','8FBA737A1D3FF4631A1E662A5B500A8BD304EC63','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth_from_335.sql','0E3CB119442D09DD88E967015319BBC8DAFBBFE0','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_01_auth.sql','327E77A1DA3546D5275AB249915DD57EDD6FDD3D','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_23_00_auth.sql','0BBEB3EB3AED0FEF277A062819B6B2C00084A742','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_25_00_auth.sql','4F45CDB26BDBB3EE83F1988E3D7818C5926ADC02','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_05_00_auth.sql','6A7BBCEF43111C73A2D2C3CCB6911BE50DE7DD94','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_10_00_auth.sql','821703A96D80F9080074852B5A46E2909C9562EA','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_19_00_auth.sql','44D8E12FFF327AD07878FBDF8D9C16B6B7DCB122','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_20_00_auth.sql','4DAA02AE285C02AE6C82EA2C8B97AC71990F1085','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_25_00_auth.sql','61411930F482BC73FC7FD2C370C811E944F5FF92','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_27_00_auth.sql','CE2E5D2CD82E79C25294539ADED27A1429105B43','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_28_00_auth.sql','0A913217610E76AFF119C27259737BBC523090E6','ARCHIVED','2015-03-21 16:55:52',0),('2015_02_22_00_auth.sql','21CCCF8B01252E16CA3D6C9E3E8DAA4C9B28ED6E','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_01_00_auth.sql','911881E273207FF6182D1FDAC8C85FFAE8F1C852','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_10_00_auth.sql','2CC8502C11412EFEB5C11BE166761A8754A59009','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_00_auth.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_01_auth.sql','5CCEDF20C8189FB1E8DF064A9F0DDC342841FBF0','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_02_auth.sql','85E4ACD9AA099C0C4AC034575F2BB07D348EAC72','ARCHIVED','2015-03-21 16:56:46',0),('2015_03_15_00_auth.sql','1D8E107FBEFE5E7F47E09F45240DFF499B77CDED','ARCHIVED','2015-05-02 13:57:57',0),('2015_03_26_00_auth.sql','34AC8543E6A9C6C832DE58EAB33618EEEF70B9F9','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_04_00_auth.sql','57146B35E54A2EC7869C945034AB078358020311','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_06_00_auth.sql','2A8049DC2923420A002D42FB6F02C2FFCC5CDD22','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_08_00_auth.sql','4D7D8EEF285C982BB676836602266501BEC26764','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_10_00_auth.sql','4AE68FD97A95CEE5143EA20FD33F5D557367AC1F','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_11_00_auth.sql','80A71C8921CFEBB547D264558B6DE27201685B84','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_11_01_auth.sql','3E88183E1A85D11BFD74CF9A32A725C44AE02EEC','ARCHIVED','2015-05-02 13:57:57',0),('2015_04_21_00_auth.sql','1B3B48DBA06368B985C548D166C515C9DD598CB9','ARCHIVED','2015-05-02 13:57:57',0),('2015_05_02_00_auth.sql','96AB595E0D2A088750E3F48B0AF0A8A14F3CFE1E','ARCHIVED','2015-05-02 13:57:57',0),('2015_05_02_01_auth.sql','FB11FB834E488B0FD3AFDABCC1A3113092E7C2E5','ARCHIVED','2015-05-02 13:57:57',0),('2015_07_02_00_auth.sql','E5EE3842AB9B01851E49B360FBAF6FFEEAB2A8DA','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_06_00_auth.sql','6D1ADBA496DC6E6D7B3BF887DA8D4D17D3FBACE0','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_08_00_auth.sql','CB54020AFD1E31742FD8BF9CE16879625E289788','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_08_01_auth.sql','74D281CB82E0DA36D628BDC7AC797AE5498DB461','ARCHIVED','2015-07-10 19:30:56',0),('2015_07_16_00_auth.sql','A057E95B5553B6A57A1642FE3FEC8E2E62EDE3C6','ARCHIVED','2015-10-10 08:30:48',0),('2015_07_29_00_auth.sql','0000FECBC413E96C7C45F303D162E263EFBA7116','ARCHIVED','2015-10-10 08:30:48',0),('2015_08_26_00_auth.sql','3071C02A2EB7DCBF4CEE10279FEFAB7C29A43A3A','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_05_00_auth.sql','F765D82B37873FA67447347D5B83C99C159FB452','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_05_01_auth.sql','97A72DBCBF14D27A1863834A22296905FF276086','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_09_00_auth.sql','495A0CF1B1C49205D4A5D3C25A4E1EB95616D6B4','ARCHIVED','2015-10-10 08:30:48',0),('2015_09_15_00_auth.sql','D1FEFDA4C98F30384DF4B64D5A53187303EB5786','ARCHIVED','2015-10-10 08:30:48',0),('2015_10_09_00_auth.sql','B6D643D444C6AE711503F73B96B6252A852913D6','ARCHIVED','2015-10-10 08:30:48',0),('2015_10_16_00_auth.sql','366AFFD1088762866091A81CE1EC64138B8B35F1','ARCHIVED','2015-11-08 00:46:02',62),('2015_10_17_00_auth.sql','AC0D45E905033F42093852D2C4476663BDACCB3D','ARCHIVED','2015-10-17 12:39:12',0),('2015_11_01_00_auth_2015_08_21_00.sql','C31A9E1D28E11B60BE8F8198637DD51F6D75123F','ARCHIVED','2015-11-01 14:50:26',0),('2015_11_08_00_auth.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','ARCHIVED','2015-11-08 00:51:45',0),('2015_11_21_00_auth.sql','575A1D697CC6C7C517F7CCB950988267C99CE7FA','ARCHIVED','2015-11-21 21:25:38',0),('2015_12_07_00_auth.sql','24A07AC1F38E5D26A3599FC06D29E267418F69F3','ARCHIVED','2015-12-07 20:55:48',0),('2016_01_13_00_auth.sql','114527BCCB0DE286CBE6FDA3029DD0523D1037FA','ARCHIVED','2016-01-13 21:39:13',0),('2016_03_22_01_auth_2016_01_13_00_auth.sql','24615CC69B3CD7BB4699874647C35BA86E8A93FD','ARCHIVED','2016-03-22 22:55:13',0),('2016_03_28_00_auth.sql','BA14D23D81FA24565F04A359090DE86C5E195209','ARCHIVED','2016-03-28 16:49:32',0),('2016_04_11_00_auth.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','ARCHIVED','2016-04-11 02:24:14',30),('2016_04_17_00_auth.sql','83399B64D1221B56F73A0FFB51889F11A70521BC','ARCHIVED','2016-04-17 00:22:05',0),('2016_05_07_00_auth.sql','7E36DCC4F06FCDCDA7155AF3C5EDF8D3A720565F','ARCHIVED','2016-05-07 01:00:21',0),('2016_05_19_00_auth.sql','FB52E6BF35682CE6FA667B552B551F4FBD72AC30','ARCHIVED','2016-05-19 22:18:06',0),('2016_07_19_00_auth.sql','D5498F28A1E21F4AD0E0D7C2B96FCF7292C14C4D','ARCHIVED','2016-07-19 14:00:28',0),('2016_07_19_01_auth.sql','EBFE5D7D7E7CFA0CDA76AC49A1E8D4FA461A12BE','ARCHIVED','2016-07-19 16:06:39',0),('2016_07_23_00_auth.sql','1048F6A922ACD9BFC2E4518A71AF7037F79A85C4','ARCHIVED','2016-07-23 14:39:21',0),('2016_07_23_01_auth.sql','5897C7D8B8DE15895286FBCD1535FC75E1B70F62','ARCHIVED','2016-07-23 17:35:11',0),('2016_07_30_00_auth.sql','0FD4147840F7F02E2F1828A904B269F5B66097E0','ARCHIVED','2016-07-30 15:07:02',0),('2016_08_07_00_auth.sql','D9DD23851822E32E1312FFABEE2DB721C8651443','ARCHIVED','2016-08-07 15:33:42',0),('2016_08_11_00_auth.sql','0C79A86A4DFC53746BECF3D8A145482F94AE5FC9','ARCHIVED','2016-08-11 17:02:20',0),('2016_08_13_00_auth.sql','ED2286C4FF3D80D0F4DEE3D3121BCC15544470BE','ARCHIVED','2016-08-13 01:11:49',0),('2016_08_26_00_auth.sql','3C566371B6026EFEEA19CD215EC9F02C6DA9EAB3','ARCHIVED','2016-08-26 14:09:52',19),('2016_08_27_00_auth.sql','65ABEF7ACBCEA974C744ED42F95FBBD29226917B','ARCHIVED','2016-08-27 07:02:45',0),('2016_08_30_00_auth.sql','E16C19A938FE6370921658D2B713EE28A633FD56','ARCHIVED','2016-08-30 00:00:00',0),('2016_09_02_00_auth.sql','08932DAC4BDE74D3C39A43DDE404522F23EDD035','ARCHIVED','2016-09-02 00:00:00',0),('2016_09_03_00_auth_2016_05_11_00_auth.sql','401EFD3586772BDED66B4A944C20A1AC18A22D3A','ARCHIVED','2016-09-03 11:29:38',0),('2016_09_03_01_auth.sql','08B5ABCB74BBF25A30D37AF639F0EA1B10640673','ARCHIVED','2016-09-03 13:24:32',0),('2016_09_03_02_auth_2016_06_06_00_auth.sql','A0A8D73A952D0618833416513D53F73A70E7EA25','ARCHIVED','2016-09-03 15:56:50',0),('2016_09_03_03_auth.sql','9BF1C03EE39B6DC7E817BA46BE7D12A41AFBFDF7','ARCHIVED','2016-09-03 15:56:50',0),('2016_09_15_00_auth.sql','CD65F822AF1B5B7776E39804D0362F3E34AA6445','ARCHIVED','2016-09-15 16:30:36',0),('2016_09_21_00_auth.sql','57219A16B88080240EED94CDD41FC2764B8A32C5','ARCHIVED','2016-09-21 17:08:43',0),('2016_09_25_00_auth.sql','E811EFD8CE92ABEC5B8C02A09E643035939CF96D','ARCHIVED','2016-09-25 15:56:58',0),('2016_10_01_00_auth.sql','7C444FF1B03BA3C83472BDA409854754D052D6FB','ARCHIVED','2016-10-01 13:32:43',0),('2016_10_06_00_auth.sql','6A415F9813EFB5B95EB2AA2B326E1A6791E25EDB','ARCHIVED','2016-10-06 23:16:24',0),('2016_10_12_00_auth.sql','671D57BBA183AC70B9580DEE19B7EC046AF2EA87','ARCHIVED','2016-10-12 00:01:05',0),('2016_10_17_00_auth.sql','A0EF594CD73690D46A46031137DB0E895F079235','RELEASED','2016-10-16 16:33:05',19),('2016_10_25_00_auth.sql','5743FB1AC3F564FE4192DCFA90260BAD5E501882','RELEASED','2016-10-25 19:27:02',0),('2016_10_28_00_auth.sql','C1B9B1DD20B2183C6CB44CAED9B91BA7C63B8C49','RELEASED','2016-10-28 00:07:48',0),('2016_11_04_00_auth.sql','3F4FE06DCE019EB3223B5A6E0F80E2239078967F','RELEASED','2016-11-04 20:25:23',0),('2016_11_09_00_auth.sql','56432F8AEC2943A398A5B8B77843138B5B704257','RELEASED','2016-11-09 18:46:48',0),('2016_11_17_00_auth.sql','18E8F8FC93CC38755AB571638960AAFB98C0F3F1','RELEASED','2016-11-17 23:47:51',0),('2016_12_04_00_auth.sql','B1623681EAB651D2A091E3F4D4D4E476CF6D3AEA','RELEASED','2016-12-04 00:41:36',0),('2016_12_11_00_auth.sql','24CA34537DB697962DDD69EEE4BB5E79D2A573DA','RELEASED','2016-12-11 18:18:59',0),('2016_12_18_00_auth.sql','7AB53E033680CF7439F142EF83CD13E6F5D0ACB9','RELEASED','2016-12-18 12:15:48',0),('2017_01_14_00_auth.sql','1B514D1364042DB4CE68929EB54A94F86983441D','RELEASED','2017-01-14 20:50:47',0),('2017_01_26_00_auth.sql','723E1B69981A32A2F28A67C64902BA1AE7E98E48','RELEASED','2017-01-26 17:10:15',0),('2017_01_29_00_auth.sql','B76C514678903F540302505AF66886F7D2C89E30','RELEASED','2017-01-29 00:00:00',0),('2017_03_11_00_auth.sql','2F2F67E51439346B212C27B7224E4614C00E1AEB','RELEASED','2017-03-11 00:00:00',0),('2017_03_17_00_auth.sql','4902E9B1B063F399F928C2DD7AFD60427738E227','RELEASED','2017-03-17 18:58:01',0),('2017_04_17_00_auth.sql','86299FAB21D895E84272286309CC8EE80F9DA8C7','RELEASED','2017-04-17 00:00:00',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/master/2017_04_17_00_auth.sql b/sql/updates/auth/master/2017_04_17_00_auth.sql
new file mode 100644
index 00000000000..f4f5af9acec
--- /dev/null
+++ b/sql/updates/auth/master/2017_04_17_00_auth.sql
@@ -0,0 +1,3 @@
+UPDATE `realmlist` SET `gamebuild`=23911 WHERE `gamebuild`=23420;
+
+ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int(10) unsigned NOT NULL DEFAULT '23911';
diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp
index 7578eace9b6..204f4bd316b 100644
--- a/src/common/DataStores/DB2FileLoader.cpp
+++ b/src/common/DataStores/DB2FileLoader.cpp
@@ -44,6 +44,23 @@ uint32 DB2FileLoadInfo::GetStringFieldCount(bool localizedOnly) const
return stringFields;
}
+std::pair<int32, int32> DB2FileLoadInfo::GetFieldIndexByName(char const* fieldName) const
+{
+ std::size_t ourIndex = Meta->HasIndexFieldInData() ? 0 : 1;
+ for (uint32 i = 0; i < Meta->FieldCount; ++i)
+ {
+ for (uint8 arr = 0; arr < Meta->ArraySizes[i]; ++arr)
+ {
+ if (!strcmp(Fields[ourIndex].Name, fieldName))
+ return std::make_pair(int32(i), int32(arr));
+
+ ++ourIndex;
+ }
+ }
+
+ return std::make_pair(-1, -1);
+}
+
DB2FileSource::~DB2FileSource()
{
}
@@ -61,6 +78,7 @@ public:
virtual uint32 GetRecordCount() const = 0;
virtual uint32 GetRecordCopyCount() const = 0;
virtual uint32 GetMaxId() const = 0;
+ virtual DB2FileLoadInfo const* GetLoadInfo() const = 0;
private:
friend class DB2Record;
@@ -91,6 +109,7 @@ public:
uint32 GetRecordCount() const override;
uint32 GetRecordCopyCount() const override;
uint32 GetMaxId() const override;
+ DB2FileLoadInfo const* GetLoadInfo() const override;
private:
void FillCommonValues(char** indexTable);
@@ -139,12 +158,13 @@ public:
bool Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo, DB2Header const* header) override;
char* AutoProduceData(uint32& records, char**& indexTable, std::vector<char*>& stringPool) override;
char* AutoProduceStrings(char* dataTable, uint32 locale) override;
- void AutoProduceRecordCopies(uint32 /*records*/, char** /*indexTable*/, char* /*dataTable*/) override { }
+ void AutoProduceRecordCopies(uint32 records, char** indexTable, char* dataTable) override { }
DB2Record GetRecord(uint32 recordNumber) const override;
DB2RecordCopy GetRecordCopy(uint32 copyNumber) const override;
uint32 GetRecordCount() const override;
uint32 GetRecordCopyCount() const override;
uint32 GetMaxId() const override;
+ DB2FileLoadInfo const* GetLoadInfo() const override;
private:
unsigned char const* GetRawRecordData(uint32 recordNumber) const override;
@@ -744,6 +764,11 @@ uint32 DB2FileLoaderRegularImpl::GetMaxId() const
return maxId;
}
+DB2FileLoadInfo const* DB2FileLoaderRegularImpl::GetLoadInfo() const
+{
+ return _loadInfo;
+}
+
DB2FileLoaderSparseImpl::DB2FileLoaderSparseImpl()
{
fileName = nullptr;
@@ -1165,6 +1190,11 @@ uint32 DB2FileLoaderSparseImpl::GetMaxId() const
return _header->MaxId;
}
+DB2FileLoadInfo const* DB2FileLoaderSparseImpl::GetLoadInfo() const
+{
+ return _loadInfo;
+}
+
DB2Record::DB2Record(DB2FileLoaderImpl const& db2, uint32 recordIndex, std::size_t* fieldOffsets)
: _db2(db2), _recordIndex(recordIndex), _recordData(db2.GetRawRecordData(recordIndex)), _fieldOffsets(fieldOffsets)
{
@@ -1190,31 +1220,73 @@ uint8 DB2Record::GetUInt8(uint32 field, uint32 arrayIndex) const
return _db2.RecordGetUInt8(_recordData, field, arrayIndex);
}
+uint8 DB2Record::GetUInt8(char const* fieldName) const
+{
+ std::pair<int32, int32> fieldIndex = _db2.GetLoadInfo()->GetFieldIndexByName(fieldName);
+ ASSERT(fieldIndex.first != -1, "Field with name %s does not exist!", fieldName);
+ return _db2.RecordGetUInt8(_recordData, uint32(fieldIndex.first), uint32(fieldIndex.second));
+}
+
uint16 DB2Record::GetUInt16(uint32 field, uint32 arrayIndex) const
{
return _db2.RecordGetUInt16(_recordData, field, arrayIndex);
}
+uint16 DB2Record::GetUInt16(char const* fieldName) const
+{
+ std::pair<int32, int32> fieldIndex = _db2.GetLoadInfo()->GetFieldIndexByName(fieldName);
+ ASSERT(fieldIndex.first != -1, "Field with name %s does not exist!", fieldName);
+ return _db2.RecordGetUInt16(_recordData, uint32(fieldIndex.first), uint32(fieldIndex.second));
+}
+
uint32 DB2Record::GetUInt32(uint32 field, uint32 arrayIndex) const
{
return _db2.RecordGetUInt32(_recordData, field, arrayIndex);
}
+uint32 DB2Record::GetUInt32(char const* fieldName) const
+{
+ std::pair<int32, int32> fieldIndex = _db2.GetLoadInfo()->GetFieldIndexByName(fieldName);
+ ASSERT(fieldIndex.first != -1, "Field with name %s does not exist!", fieldName);
+ return _db2.RecordGetUInt32(_recordData, uint32(fieldIndex.first), uint32(fieldIndex.second));
+}
+
int32 DB2Record::GetInt32(uint32 field, uint32 arrayIndex) const
{
return _db2.RecordGetInt32(_recordData, field, arrayIndex);
}
+int32 DB2Record::GetInt32(char const* fieldName) const
+{
+ std::pair<int32, int32> fieldIndex = _db2.GetLoadInfo()->GetFieldIndexByName(fieldName);
+ ASSERT(fieldIndex.first != -1, "Field with name %s does not exist!", fieldName);
+ return _db2.RecordGetInt32(_recordData, uint32(fieldIndex.first), uint32(fieldIndex.second));
+}
+
float DB2Record::GetFloat(uint32 field, uint32 arrayIndex) const
{
return _db2.RecordGetFloat(_recordData, field, arrayIndex);
}
+float DB2Record::GetFloat(char const* fieldName) const
+{
+ std::pair<int32, int32> fieldIndex = _db2.GetLoadInfo()->GetFieldIndexByName(fieldName);
+ ASSERT(fieldIndex.first != -1, "Field with name %s does not exist!", fieldName);
+ return _db2.RecordGetFloat(_recordData, uint32(fieldIndex.first), uint32(fieldIndex.second));
+}
+
char const* DB2Record::GetString(uint32 field, uint32 arrayIndex) const
{
return _db2.RecordGetString(_recordData, field, arrayIndex);
}
+char const* DB2Record::GetString(char const* fieldName) const
+{
+ std::pair<int32, int32> fieldIndex = _db2.GetLoadInfo()->GetFieldIndexByName(fieldName);
+ ASSERT(fieldIndex.first != -1, "Field with name %s does not exist!", fieldName);
+ return _db2.RecordGetString(_recordData, uint32(fieldIndex.first), uint32(fieldIndex.second));
+}
+
void DB2Record::MakePersistent()
{
_fieldOffsets = _db2.RecordCreateDetachedFieldOffsets(_fieldOffsets);
diff --git a/src/common/DataStores/DB2FileLoader.h b/src/common/DataStores/DB2FileLoader.h
index 3812fe3cd67..cf34794a7a1 100644
--- a/src/common/DataStores/DB2FileLoader.h
+++ b/src/common/DataStores/DB2FileLoader.h
@@ -53,6 +53,7 @@ struct TC_COMMON_API DB2FileLoadInfo
DB2FileLoadInfo(DB2FieldMeta const* fields, std::size_t fieldCount, DB2Meta const* meta);
uint32 GetStringFieldCount(bool localizedOnly) const;
+ std::pair<int32/*fieldIndex*/, int32/*arrayIndex*/> GetFieldIndexByName(char const* fieldName) const;
DB2FieldMeta const* Fields;
std::size_t FieldCount;
@@ -88,11 +89,17 @@ public:
uint32 GetId() const;
uint8 GetUInt8(uint32 field, uint32 arrayIndex) const;
+ uint8 GetUInt8(char const* fieldName) const;
uint16 GetUInt16(uint32 field, uint32 arrayIndex) const;
+ uint16 GetUInt16(char const* fieldName) const;
uint32 GetUInt32(uint32 field, uint32 arrayIndex) const;
+ uint32 GetUInt32(char const* fieldName) const;
int32 GetInt32(uint32 field, uint32 arrayIndex) const;
+ int32 GetInt32(char const* fieldName) const;
float GetFloat(uint32 field, uint32 arrayIndex) const;
+ float GetFloat(char const* fieldName) const;
char const* GetString(uint32 field, uint32 arrayIndex) const;
+ char const* GetString(char const* fieldName) const;
// Creates its own heap allocated copy of _fieldOffsets
// by default _fieldOffets point to a shared array inside Loader to avoid heap allocations
diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp
index b78a512c1df..ca0d3615f19 100644
--- a/src/server/game/DataStores/GameTables.cpp
+++ b/src/server/game/DataStores/GameTables.cpp
@@ -22,19 +22,20 @@
#include <boost/filesystem/path.hpp>
#include <fstream>
-GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable;
-GameTable<GtArtifactLevelXPEntry> sArtifactLevelXPGameTable;
-GameTable<GtBarberShopCostBaseEntry> sBarberShopCostBaseGameTable;
-GameTable<GtBaseMPEntry> sBaseMPGameTable;
-GameTable<GtCombatRatingsEntry> sCombatRatingsGameTable;
-GameTable<GtCombatRatingsMultByILvl> sCombatRatingsMultByILvlGameTable;
-GameTable<GtHpPerStaEntry> sHpPerStaGameTable;
-GameTable<GtItemSocketCostPerLevelEntry> sItemSocketCostPerLevelGameTable;
-GameTable<GtNpcDamageByClassEntry> sNpcDamageByClassGameTable[MAX_EXPANSIONS];
-GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
-GameTable<GtNpcTotalHpEntry> sNpcTotalHpGameTable[MAX_EXPANSIONS];
-GameTable<GtSpellScalingEntry> sSpellScalingGameTable;
-GameTable<GtXpEntry> sXpGameTable;
+GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable;
+GameTable<GtArtifactKnowledgeMultiplierEntry> sArtifactKnowledgeMultiplierGameTable;
+GameTable<GtArtifactLevelXPEntry> sArtifactLevelXPGameTable;
+GameTable<GtBarberShopCostBaseEntry> sBarberShopCostBaseGameTable;
+GameTable<GtBaseMPEntry> sBaseMPGameTable;
+GameTable<GtCombatRatingsEntry> sCombatRatingsGameTable;
+GameTable<GtCombatRatingsMultByILvl> sCombatRatingsMultByILvlGameTable;
+GameTable<GtHpPerStaEntry> sHpPerStaGameTable;
+GameTable<GtItemSocketCostPerLevelEntry> sItemSocketCostPerLevelGameTable;
+GameTable<GtNpcDamageByClassEntry> sNpcDamageByClassGameTable[MAX_EXPANSIONS];
+GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
+GameTable<GtNpcTotalHpEntry> sNpcTotalHpGameTable[MAX_EXPANSIONS];
+GameTable<GtSpellScalingEntry> sSpellScalingGameTable;
+GameTable<GtXpEntry> sXpGameTable;
template<class T>
inline uint32 LoadGameTable(std::vector<std::string>& errors, GameTable<T>& storage, boost::filesystem::path const& path)
@@ -109,7 +110,8 @@ void LoadGameTables(std::string const& dataPath)
#define LOAD_GT(store, file) gameTableCount += LoadGameTable(bad_gt_files, store, gtPath / file); ++expectedGameTableCount;
LOAD_GT(sArmorMitigationByLvlGameTable, "ArmorMitigationByLvl.txt");
- LOAD_GT(sArtifactLevelXPGameTable, "artifactLevelXP.txt");
+ LOAD_GT(sArtifactKnowledgeMultiplierGameTable, "ArtifactKnowledgeMultiplier.txt");
+ LOAD_GT(sArtifactLevelXPGameTable, "ArtifactLevelXP.txt");
LOAD_GT(sBarberShopCostBaseGameTable, "BarberShopCostBase.txt");
LOAD_GT(sBaseMPGameTable, "BaseMp.txt");
LOAD_GT(sCombatRatingsGameTable, "CombatRatings.txt");
@@ -123,7 +125,7 @@ void LoadGameTables(std::string const& dataPath)
LOAD_GT(sNpcDamageByClassGameTable[4], "NpcDamageByClassExp4.txt");
LOAD_GT(sNpcDamageByClassGameTable[5], "NpcDamageByClassExp5.txt");
LOAD_GT(sNpcDamageByClassGameTable[6], "NpcDamageByClassExp6.txt");
- LOAD_GT(sNpcManaCostScalerGameTable, "NpcManaCostScaler.txt");
+ LOAD_GT(sNpcManaCostScalerGameTable, "NPCManaCostScaler.txt");
LOAD_GT(sNpcTotalHpGameTable[0], "NpcTotalHp.txt");
LOAD_GT(sNpcTotalHpGameTable[1], "NpcTotalHpExp1.txt");
LOAD_GT(sNpcTotalHpGameTable[2], "NpcTotalHpExp2.txt");
diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h
index 3da05662116..a9d1a01b1c3 100644
--- a/src/server/game/DataStores/GameTables.h
+++ b/src/server/game/DataStores/GameTables.h
@@ -26,9 +26,15 @@ struct GtArmorMitigationByLvlEntry
float Mitigation = 0.0f;
};
+struct GtArtifactKnowledgeMultiplierEntry
+{
+ float Multiplier = 0.0f;
+};
+
struct GtArtifactLevelXPEntry
{
float XP = 0.0f;
+ float XP2 = 0.0f;
};
struct GtBarberShopCostBaseEntry
@@ -194,19 +200,20 @@ private:
std::vector<T> _data;
};
-TC_GAME_API extern GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable;
-TC_GAME_API extern GameTable<GtArtifactLevelXPEntry> sArtifactLevelXPGameTable;
-TC_GAME_API extern GameTable<GtBarberShopCostBaseEntry> sBarberShopCostBaseGameTable;
-TC_GAME_API extern GameTable<GtBaseMPEntry> sBaseMPGameTable;
-TC_GAME_API extern GameTable<GtCombatRatingsEntry> sCombatRatingsGameTable;
-TC_GAME_API extern GameTable<GtCombatRatingsMultByILvl> sCombatRatingsMultByILvlGameTable;
-TC_GAME_API extern GameTable<GtHpPerStaEntry> sHpPerStaGameTable;
-TC_GAME_API extern GameTable<GtItemSocketCostPerLevelEntry> sItemSocketCostPerLevelGameTable;
-TC_GAME_API extern GameTable<GtNpcDamageByClassEntry> sNpcDamageByClassGameTable[MAX_EXPANSIONS];
-TC_GAME_API extern GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
-TC_GAME_API extern GameTable<GtNpcTotalHpEntry> sNpcTotalHpGameTable[MAX_EXPANSIONS];
-TC_GAME_API extern GameTable<GtSpellScalingEntry> sSpellScalingGameTable;
-TC_GAME_API extern GameTable<GtXpEntry> sXpGameTable;
+TC_GAME_API extern GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable;
+TC_GAME_API extern GameTable<GtArtifactKnowledgeMultiplierEntry> sArtifactKnowledgeMultiplierGameTable;
+TC_GAME_API extern GameTable<GtArtifactLevelXPEntry> sArtifactLevelXPGameTable;
+TC_GAME_API extern GameTable<GtBarberShopCostBaseEntry> sBarberShopCostBaseGameTable;
+TC_GAME_API extern GameTable<GtBaseMPEntry> sBaseMPGameTable;
+TC_GAME_API extern GameTable<GtCombatRatingsEntry> sCombatRatingsGameTable;
+TC_GAME_API extern GameTable<GtCombatRatingsMultByILvl> sCombatRatingsMultByILvlGameTable;
+TC_GAME_API extern GameTable<GtHpPerStaEntry> sHpPerStaGameTable;
+TC_GAME_API extern GameTable<GtItemSocketCostPerLevelEntry> sItemSocketCostPerLevelGameTable;
+TC_GAME_API extern GameTable<GtNpcDamageByClassEntry> sNpcDamageByClassGameTable[MAX_EXPANSIONS];
+TC_GAME_API extern GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
+TC_GAME_API extern GameTable<GtNpcTotalHpEntry> sNpcTotalHpGameTable[MAX_EXPANSIONS];
+TC_GAME_API extern GameTable<GtSpellScalingEntry> sSpellScalingGameTable;
+TC_GAME_API extern GameTable<GtXpEntry> sXpGameTable;
TC_GAME_API void LoadGameTables(std::string const& dataPath);
diff --git a/src/server/game/DataStores/M2Stores.cpp b/src/server/game/DataStores/M2Stores.cpp
index f9c46e0a17c..9fb2f9fec2b 100644
--- a/src/server/game/DataStores/M2Stores.cpp
+++ b/src/server/game/DataStores/M2Stores.cpp
@@ -15,18 +15,19 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "DB2Stores.h"
-#include "M2Structure.h"
#include "M2Stores.h"
#include "Common.h"
#include "Containers.h"
+#include "DB2Stores.h"
#include "Log.h"
+#include "M2Structure.h"
#include "World.h"
+#include <boost/filesystem/path.hpp>
#include <fstream>
#include <iostream>
#include <iomanip>
-#include <boost/filesystem/path.hpp>
+typedef std::vector<FlyByCamera> FlyByCameraCollection;
std::unordered_map<uint32, FlyByCameraCollection> sFlyByCameraStore;
// Convert the geomoetry from a spline value, to an actual WoW XYZ
@@ -183,15 +184,17 @@ bool readCamera(M2Camera const* cam, uint32 buffSize, M2Header const* header, Ci
return true;
}
-TC_GAME_API void LoadM2Cameras(boost::filesystem::path const& dataPath)
+TC_GAME_API void LoadM2Cameras(std::string const& dataPath)
{
sFlyByCameraStore.clear();
TC_LOG_INFO("server.loading", ">> Loading Cinematic Camera files");
+ boost::filesystem::path camerasPath = boost::filesystem::path(dataPath) / "cameras";
+
uint32 oldMSTime = getMSTime();
for (CinematicCameraEntry const* cameraEntry : sCinematicCameraStore)
{
- boost::filesystem::path filename = dataPath / Trinity::StringFormat("FILE%08X.xxx", cameraEntry->ModelFileDataID);
+ boost::filesystem::path filename = camerasPath / Trinity::StringFormat("FILE%08X.xxx", cameraEntry->ModelFileDataID);
// Convert to native format
filename.make_preferred();
@@ -272,3 +275,8 @@ TC_GAME_API void LoadM2Cameras(boost::filesystem::path const& dataPath)
}
TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " cinematic waypoint sets in %u ms", sFlyByCameraStore.size(), GetMSTimeDiffToNow(oldMSTime));
}
+
+std::vector<FlyByCamera> const* GetFlyByCameras(uint32 cinematicCameraId)
+{
+ return Trinity::Containers::MapGetValuePtr(sFlyByCameraStore, cinematicCameraId);
+}
diff --git a/src/server/game/DataStores/M2Stores.h b/src/server/game/DataStores/M2Stores.h
index b766d89ac03..336269624a8 100644
--- a/src/server/game/DataStores/M2Stores.h
+++ b/src/server/game/DataStores/M2Stores.h
@@ -18,16 +18,8 @@
#ifndef TRINITY_M2STORES_H
#define TRINITY_M2STORES_H
-#include "Common.h"
-#include "G3D/Vector4.h"
-
-namespace boost
-{
- namespace filesystem
- {
- class path;
- }
-}
+#include "Define.h"
+#include <G3D/Vector4.h>
struct FlyByCamera
{
@@ -35,10 +27,8 @@ struct FlyByCamera
G3D::Vector4 locations;
};
-typedef std::vector<FlyByCamera> FlyByCameraCollection;
-
-TC_GAME_API extern std::unordered_map<uint32, FlyByCameraCollection> sFlyByCameraStore;
+TC_GAME_API void LoadM2Cameras(std::string const& dataPath);
-TC_GAME_API void LoadM2Cameras(boost::filesystem::path const& dataPath);
+TC_GAME_API std::vector<FlyByCamera> const* GetFlyByCameras(uint32 cinematicCameraId);
#endif
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 58be06c21bf..407b0f4bf51 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -2417,13 +2417,15 @@ void Item::GiveArtifactXp(uint64 amount, Item* sourceItem, uint32 artifactCatego
{
if (ArtifactCategoryEntry const* artifactCategory = sArtifactCategoryStore.LookupEntry(artifactCategoryId))
{
- uint32 artifactKnowledgeLevel = 0;
+ uint32 artifactKnowledgeLevel = 1;
if (sourceItem && sourceItem->GetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL))
- artifactKnowledgeLevel = sourceItem->GetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL) - 1;
+ artifactKnowledgeLevel = sourceItem->GetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL);
else
- artifactKnowledgeLevel = owner->GetCurrency(artifactCategory->ArtifactKnowledgeCurrencyID);
+ artifactKnowledgeLevel = owner->GetCurrency(artifactCategory->ArtifactKnowledgeCurrencyID) + 1;
+
+ if (GtArtifactKnowledgeMultiplierEntry const* artifactKnowledge = sArtifactKnowledgeMultiplierGameTable.GetRow(artifactKnowledgeLevel))
+ amount = uint64(amount * artifactKnowledge->Multiplier);
- amount = uint64(amount * sDB2Manager.GetCurveValueAt(artifactCategory->ArtifactKnowledgeMultiplierCurveID, artifactKnowledgeLevel));
if (amount >= 5000)
amount = 50 * (amount / 50);
else if (amount >= 1000)
diff --git a/src/server/game/Entities/Player/CinematicMgr.cpp b/src/server/game/Entities/Player/CinematicMgr.cpp
index f0da551c43b..cbb7d933e99 100644
--- a/src/server/game/Entities/Player/CinematicMgr.cpp
+++ b/src/server/game/Entities/Player/CinematicMgr.cpp
@@ -17,6 +17,7 @@
#include "CinematicMgr.h"
#include "Creature.h"
+#include "M2Stores.h"
#include "Player.h"
#include "TemporarySummon.h"
@@ -44,21 +45,21 @@ void CinematicMgr::BeginCinematic()
if (m_activeCinematicCameraId == 0)
return;
- auto itr = sFlyByCameraStore.find(m_activeCinematicCameraId);
- if (itr != sFlyByCameraStore.end())
+ if (std::vector<FlyByCamera> const* flyByCameras = GetFlyByCameras(m_activeCinematicCameraId))
{
// Initialize diff, and set camera
m_cinematicDiff = 0;
- m_cinematicCamera = &itr->second;
+ m_cinematicCamera = flyByCameras;
- FlyByCameraCollection::const_iterator camitr = m_cinematicCamera->begin();
- if (camitr != m_cinematicCamera->end())
+ auto camitr = m_cinematicCamera->begin();
+ if (!m_cinematicCamera->empty())
{
- Position pos(camitr->locations.x, camitr->locations.y, camitr->locations.z, camitr->locations.w);
+ FlyByCamera const& firstCamera = m_cinematicCamera->front();
+ Position pos(firstCamera.locations.x, firstCamera.locations.y, firstCamera.locations.z, firstCamera.locations.w);
if (!pos.IsPositionValid())
return;
- player->GetMap()->LoadGrid(camitr->locations.x, camitr->locations.y);
+ player->GetMap()->LoadGrid(firstCamera.locations.x, firstCamera.locations.y);
m_CinematicObject = player->SummonCreature(VISUAL_WAYPOINT, pos.m_positionX, pos.m_positionY, pos.m_positionZ, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 5 * MINUTE * IN_MILLISECONDS);
if (m_CinematicObject)
{
@@ -67,11 +68,7 @@ void CinematicMgr::BeginCinematic()
}
// Get cinematic length
- FlyByCameraCollection::const_reverse_iterator camrevitr = m_cinematicCamera->rbegin();
- if (camrevitr != m_cinematicCamera->rend())
- m_cinematicLength = camrevitr->timeStamp;
- else
- m_cinematicLength = 0;
+ m_cinematicLength = m_cinematicCamera->back().timeStamp;
}
}
}
@@ -105,7 +102,7 @@ void CinematicMgr::UpdateCinematicLocation(uint32 /*diff*/)
uint32 nextTimestamp = 0;
// Obtain direction of travel
- for (FlyByCamera cam : *m_cinematicCamera)
+ for (FlyByCamera const& cam : *m_cinematicCamera)
{
if (cam.timeStamp > m_cinematicDiff)
{
@@ -128,7 +125,7 @@ void CinematicMgr::UpdateCinematicLocation(uint32 /*diff*/)
workDiff += static_cast<int32>(float(CINEMATIC_LOOKAHEAD) * cos(angle));
// Get an iterator to the last entry in the cameras, to make sure we don't go beyond the end
- FlyByCameraCollection::const_reverse_iterator endItr = m_cinematicCamera->rbegin();
+ auto endItr = m_cinematicCamera->rbegin();
if (endItr != m_cinematicCamera->rend() && workDiff > static_cast<int32>(endItr->timeStamp))
workDiff = endItr->timeStamp;
@@ -137,7 +134,7 @@ void CinematicMgr::UpdateCinematicLocation(uint32 /*diff*/)
workDiff = m_cinematicDiff;
// Obtain the previous and next waypoint based on timestamp
- for (FlyByCamera cam : *m_cinematicCamera)
+ for (FlyByCamera const& cam : *m_cinematicCamera)
{
if (static_cast<int32>(cam.timeStamp) >= workDiff)
{
diff --git a/src/server/game/Entities/Player/CinematicMgr.h b/src/server/game/Entities/Player/CinematicMgr.h
index e27369f6bd5..2c5bcd6f883 100644
--- a/src/server/game/Entities/Player/CinematicMgr.h
+++ b/src/server/game/Entities/Player/CinematicMgr.h
@@ -20,12 +20,12 @@
#include "Define.h"
#include "Object.h"
-#include "M2Stores.h"
#define CINEMATIC_LOOKAHEAD (2 * IN_MILLISECONDS)
#define CINEMATIC_UPDATEDIFF 500
class Player;
+struct FlyByCamera;
class TC_GAME_API CinematicMgr
{
@@ -50,9 +50,9 @@ protected:
uint32 m_lastCinematicCheck;
uint32 m_activeCinematicCameraId;
uint32 m_cinematicLength;
- FlyByCameraCollection* m_cinematicCamera;
+ std::vector<FlyByCamera> const* m_cinematicCamera;
Position m_remoteSightPosition;
- TempSummon* m_CinematicObject;
+ TempSummon* m_CinematicObject;
};
#endif // CinematicMgr_h__
diff --git a/src/server/game/Handlers/ArtifactHandler.cpp b/src/server/game/Handlers/ArtifactHandler.cpp
index e4a7afba5f0..a5143b81c07 100644
--- a/src/server/game/Handlers/ArtifactHandler.cpp
+++ b/src/server/game/Handlers/ArtifactHandler.cpp
@@ -35,7 +35,7 @@ void WorldSession::HandleArtifactAddPower(WorldPackets::Artifact::ArtifactAddPow
uint64 xpCost = 0;
if (GtArtifactLevelXPEntry const* cost = sArtifactLevelXPGameTable.GetRow(artifact->GetTotalPurchasedArtifactPowers() + 1))
- xpCost = uint64(cost->XP);
+ xpCost = uint64(artifact->GetModifier(ITEM_MODIFIER_ARTIFACT_TIER) == 1 ? cost->XP2 : cost->XP);
if (xpCost > artifact->GetUInt64Value(ITEM_FIELD_ARTIFACT_XP))
return;
@@ -168,9 +168,9 @@ void WorldSession::HandleConfirmArtifactRespec(WorldPackets::Artifact::ConfirmAr
if (!artifact)
return;
- uint32 xpCost = 0;
+ uint64 xpCost = 0;
if (GtArtifactLevelXPEntry const* cost = sArtifactLevelXPGameTable.GetRow(artifact->GetTotalPurchasedArtifactPowers() + 1))
- xpCost = uint32(cost->XP);
+ xpCost = uint64(artifact->GetModifier(ITEM_MODIFIER_ARTIFACT_TIER) == 1 ? cost->XP2 : cost->XP);
if (xpCost > artifact->GetUInt64Value(ITEM_FIELD_ARTIFACT_XP))
return;
@@ -178,7 +178,7 @@ void WorldSession::HandleConfirmArtifactRespec(WorldPackets::Artifact::ConfirmAr
uint64 newAmount = artifact->GetUInt64Value(ITEM_FIELD_ARTIFACT_XP) - xpCost;
for (uint32 i = 0; i <= artifact->GetTotalPurchasedArtifactPowers(); ++i)
if (GtArtifactLevelXPEntry const* cost = sArtifactLevelXPGameTable.GetRow(i))
- newAmount += uint64(cost->XP);
+ newAmount += uint64(artifact->GetModifier(ITEM_MODIFIER_ARTIFACT_TIER) == 1 ? cost->XP2 : cost->XP);
for (ItemDynamicFieldArtifactPowers const& artifactPower : artifact->GetArtifactPowers())
{
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index a56e687757c..1992235e257 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -133,17 +133,16 @@ public:
}
// Dump camera locations
- std::unordered_map<uint32, FlyByCameraCollection>::const_iterator itr = sFlyByCameraStore.find(cineSeq->Camera[0]);
- if (itr != sFlyByCameraStore.end())
+ if (std::vector<FlyByCamera> const* flyByCameras = GetFlyByCameras(cineSeq->Camera[0]))
{
handler->PSendSysMessage("Waypoints for sequence %u, camera %u", id, cineSeq->Camera[0]);
uint32 count = 1;
- for (FlyByCamera cam : itr->second)
+ for (FlyByCamera const& cam : *flyByCameras)
{
handler->PSendSysMessage("%02u - %7ums [%f, %f, %f] Facing %f (%f degrees)", count, cam.timeStamp, cam.locations.x, cam.locations.y, cam.locations.z, cam.locations.w, cam.locations.w * (180 / M_PI));
count++;
}
- handler->PSendSysMessage("%u waypoints dumped", itr->second.size());
+ handler->PSendSysMessage(SZFMTD " waypoints dumped", flyByCameras->size());
}
handler->GetSession()->GetPlayer()->SendCinematicStart(id);
diff --git a/src/tools/connection_patcher/Patches/Mac.hpp b/src/tools/connection_patcher/Patches/Mac.hpp
index a8294e84feb..33b851bf3e7 100644
--- a/src/tools/connection_patcher/Patches/Mac.hpp
+++ b/src/tools/connection_patcher/Patches/Mac.hpp
@@ -30,7 +30,7 @@ namespace Connection_Patcher
struct x64
{
static const std::vector<unsigned char> CertBundleCASCLocalFile() { return{ 0x48, 0x8D, 0x55, 0xC4, 0x31, 0xDB, 0xB1, 0x01 }; }
- static const std::vector<unsigned char> CertBundleSignatureCheck() { return{ 0x45, 0x84, 0xFF, 0xB0, 0x01, 0x90, 0x90, 0x90, 0x90 }; }
+ static const std::vector<unsigned char> CertBundleSignatureCheck() { return{ 0x45, 0x84, 0xFF, 0xB0, 0x01, 0xEB, 0x06, 0x8B, 0x85 }; }
};
};
}
diff --git a/src/tools/connection_patcher/Patterns/Mac.hpp b/src/tools/connection_patcher/Patterns/Mac.hpp
index 05ac242416f..6a936622854 100644
--- a/src/tools/connection_patcher/Patterns/Mac.hpp
+++ b/src/tools/connection_patcher/Patterns/Mac.hpp
@@ -30,7 +30,7 @@ namespace Connection_Patcher
struct x64
{
static const std::vector<unsigned char> CertBundleCASCLocalFile() { return{ 0x48, 0x8D, 0x55, 0xC4, 0x31, 0xDB, 0x31, 0xC9 }; }
- static const std::vector<unsigned char> CertBundleSignatureCheck() { return{ 0x45, 0x84, 0xFF, 0xB0, 0x01, 0x75, 0x00, 0x88, 0xD8 }; }
+ static const std::vector<unsigned char> CertBundleSignatureCheck() { return{ 0x45, 0x84, 0xFF, 0xB0, 0x01, 0x75, 0x06, 0x8B, 0x85 }; }
};
};
}
diff --git a/src/tools/connection_patcher/Patterns/Windows.hpp b/src/tools/connection_patcher/Patterns/Windows.hpp
index dc9842e3915..3c5db972de8 100644
--- a/src/tools/connection_patcher/Patterns/Windows.hpp
+++ b/src/tools/connection_patcher/Patterns/Windows.hpp
@@ -35,8 +35,8 @@ namespace Connection_Patcher
struct x64
{
- static const std::vector<unsigned char> CertBundleCASCLocalFile() { return{ 0x45, 0x33, 0xC9, 0x48, 0x89, 0xBC, 0x24, 0x00, 0x02 }; }
- static const std::vector<unsigned char> CertBundleSignatureCheck() { return{ 0x75, 0x19, 0x48, 0xFF, 0xC3, 0x48, 0x83, 0xFB, 0x02 }; }
+ static const std::vector<unsigned char> CertBundleCASCLocalFile() { return{ 0x45, 0x33, 0xC9, 0x48, 0x89, 0x9C, 0x24, 0xF0, 0x01 }; }
+ static const std::vector<unsigned char> CertBundleSignatureCheck() { return{ 0x75, 0x0B, 0x48, 0xFF, 0xC7, 0x48, 0x83, 0xFF, 0x02 }; }
};
};
}
diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp
index e1a5d860946..84be793bb44 100644
--- a/src/tools/map_extractor/System.cpp
+++ b/src/tools/map_extractor/System.cpp
@@ -59,16 +59,17 @@ struct CinematicCameraLoadInfo
static DB2FieldMeta const fields[] =
{
{ false, FT_INT, "ID" },
- { false, FT_STRING_NOT_LOCALIZED, "Model" },
+ { false, FT_INT, "SoundID" },
{ false, FT_FLOAT, "OriginX" },
{ false, FT_FLOAT, "OriginY" },
{ false, FT_FLOAT, "OriginZ" },
{ false, FT_FLOAT, "OriginFacing" },
- { false, FT_SHORT, "SoundID" },
+ { false, FT_INT, "ModelFileDataID" },
};
- static char const* types = "sffh";
+ static char const* types = "iffi";
static uint8 const arraySizes[4] = { 1, 3, 1, 1 };
- static DB2Meta const meta(-1, 4, 0xA7B95349, types, arraySizes);
+ static DB2FieldDefault const fieldDefaults[4] = { uint32(0), float(0), float(0), uint32(0) };
+ static DB2Meta const meta(-1, 4, 0x85F98D68, types, arraySizes, fieldDefaults);
static DB2FileLoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, &meta);
return &loadInfo;
}
@@ -134,7 +135,8 @@ struct LiquidTypeLoadInfo
};
static char const* types = "sifffffsifihhbbbbbi";
static uint8 const arraySizes[19] = { 1, 1, 1, 1, 1, 1, 1, 6, 2, 18, 4, 1, 1, 1, 1, 1, 1, 6, 1 };
- static DB2Meta const meta(-1, 19, 0x99FC34E5, types, arraySizes);
+ static DB2FieldDefault const fieldDefaults[19] = { "", uint32(0), float(0), float(0), float(0), float(0), float(0), "", uint32(0), float(0), uint32(0), uint16(0), uint16(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint32(0) };
+ static DB2Meta const meta(-1, 19, 0xEB9E4B52, types, arraySizes, fieldDefaults);
static DB2FileLoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, &meta);
return &loadInfo;
}
@@ -156,6 +158,8 @@ struct MapLoadInfo
{ false, FT_STRING, "MapName" },
{ false, FT_STRING, "MapDescription0" },
{ false, FT_STRING, "MapDescription1" },
+ { false, FT_STRING, "ShortDescription" },
+ { false, FT_STRING, "LongDescription" },
{ false, FT_SHORT, "AreaTableID" },
{ false, FT_SHORT, "LoadingScreenID" },
{ true, FT_SHORT, "CorpseMapID" },
@@ -169,9 +173,10 @@ struct MapLoadInfo
{ false, FT_BYTE, "MaxPlayers" },
{ false, FT_BYTE, "TimeOffset" },
};
- static char const* types = "siffssshhhhhhhbbbbb";
- static uint8 const arraySizes[19] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
- static DB2Meta const meta(-1, 19, 0xF7CF2DA2, types, arraySizes);
+ static char const* types = "siffssssshhhhhhhbbbbb";
+ static uint8 const arraySizes[21] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+ static DB2FieldDefault const fieldDefaults[21] = { "", uint32(0), float(0), float(0), "", "", "", "", "", uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0) };
+ static DB2Meta const meta(-1, 21, 0xC34CD39B, types, arraySizes, fieldDefaults);
static DB2FileLoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, &meta);
return &loadInfo;
}
@@ -386,7 +391,7 @@ void ReadMapDBC()
DB2Record record = db2.GetRecord(x);
map_ids[x].id = record.GetId();
- const char* map_name = record.GetString(0, 0);
+ const char* map_name = record.GetString("Directory");
size_t max_map_name_length = sizeof(map_ids[x].name);
if (strlen(map_name) >= max_map_name_length)
{
@@ -432,7 +437,7 @@ void ReadLiquidTypeTableDBC()
for (uint32 x = 0; x < db2.GetRecordCount(); ++x)
{
DB2Record record = db2.GetRecord(x);
- LiqType[record.GetId()] = record.GetUInt8(13, 0);
+ LiqType[record.GetId()] = record.GetUInt8("Type");
}
for (uint32 x = 0; x < db2.GetRecordCopyCount(); ++x)
@@ -455,14 +460,7 @@ bool ReadCinematicCameraDBC()
// get camera file list from DB2
for (size_t i = 0; i < db2.GetRecordCount(); ++i)
- {
- DB2Record record = db2.GetRecord(i);
- std::string camFile(record.GetString(0, 0));
- size_t loc = camFile.find(".mdx");
- if (loc != std::string::npos)
- camFile.replace(loc, 4, ".m2");
- CameraFileNames.insert(camFile);
- }
+ CameraFileNames.insert(Trinity::StringFormat("FILE%08X.xxx", db2.GetRecord(i).GetUInt32("ModelFileDataID")));
printf("Done! (" SZFMTD " CinematicCameras loaded)\n", CameraFileNames.size());
return true;
@@ -1285,11 +1283,12 @@ void ExtractGameTables()
char const* GameTables[] =
{
"GameTables\\ArmorMitigationByLvl.txt",
- "GameTables\\artifactLevelXP.txt",
+ "GameTables\\ArtifactKnowledgeMultiplier.txt",
+ "GameTables\\ArtifactLevelXP.txt",
"GameTables\\BarberShopCostBase.txt",
"GameTables\\BaseMp.txt",
"GameTables\\BattlePetTypeDamageMod.txt",
- "GameTables\\battlePetXP.txt",
+ "GameTables\\BattlePetXP.txt",
"GameTables\\ChallengeModeDamage.txt",
"GameTables\\ChallengeModeHealth.txt",
"GameTables\\CombatRatings.txt",
@@ -1304,7 +1303,7 @@ void ExtractGameTables()
"GameTables\\NpcDamageByClassExp4.txt",
"GameTables\\NpcDamageByClassExp5.txt",
"GameTables\\NpcDamageByClassExp6.txt",
- "GameTables\\NpcManaCostScaler.txt",
+ "GameTables\\NPCManaCostScaler.txt",
"GameTables\\NpcTotalHp.txt",
"GameTables\\NpcTotalHpExp1.txt",
"GameTables\\NpcTotalHpExp2.txt",
diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h
index 9e5afa773d3..a7e1552462e 100644
--- a/src/tools/map_extractor/loadlib/DBFilesClientList.h
+++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h
@@ -30,6 +30,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\AnimKitConfig.db2",
"DBFilesClient\\AnimKitConfigBoneSet.db2",
"DBFilesClient\\AnimKitPriority.db2",
+ "DBFilesClient\\AnimKitReplacement.db2",
"DBFilesClient\\AnimKitSegment.db2",
"DBFilesClient\\AnimReplacement.db2",
"DBFilesClient\\AnimReplacementSet.db2",
@@ -51,8 +52,10 @@ char const* DBFilesClientList[] =
"DBFilesClient\\ArtifactCategory.db2",
"DBFilesClient\\ArtifactPower.db2",
"DBFilesClient\\ArtifactPowerLink.db2",
+ "DBFilesClient\\ArtifactPowerPicker.db2",
"DBFilesClient\\ArtifactPowerRank.db2",
"DBFilesClient\\ArtifactQuestXP.db2",
+ "DBFilesClient\\ArtifactTier.db2",
"DBFilesClient\\ArtifactUnlock.db2",
"DBFilesClient\\AuctionHouse.db2",
"DBFilesClient\\BankBagSlotPrices.db2",
@@ -72,6 +75,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\BattlePetState.db2",
"DBFilesClient\\BattlePetVisual.db2",
"DBFilesClient\\BattlemasterList.db2",
+ "DBFilesClient\\BeamEffect.db2",
"DBFilesClient\\BoneWindModifierModel.db2",
"DBFilesClient\\BoneWindModifiers.db2",
"DBFilesClient\\Bounty.db2",
@@ -81,6 +85,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\CameraEffectEntry.db2",
"DBFilesClient\\CameraMode.db2",
"DBFilesClient\\CastableRaidBuffs.db2",
+ "DBFilesClient\\CelestialBody.db2",
"DBFilesClient\\Cfg_Categories.db2",
"DBFilesClient\\Cfg_Configs.db2",
"DBFilesClient\\Cfg_Regions.db2",
@@ -117,12 +122,14 @@ char const* DBFilesClientList[] =
"DBFilesClient\\CombatCondition.db2",
"DBFilesClient\\ComponentModelFileData.db2",
"DBFilesClient\\ComponentTextureFileData.db2",
+ "DBFilesClient\\Contribution.db2",
"DBFilesClient\\ConversationLine.db2",
"DBFilesClient\\Creature.db2",
"DBFilesClient\\CreatureDifficulty.db2",
"DBFilesClient\\CreatureDispXUiCamera.db2",
"DBFilesClient\\CreatureDisplayInfo.db2",
"DBFilesClient\\CreatureDisplayInfoCond.db2",
+ "DBFilesClient\\CreatureDisplayInfoEvt.db2",
"DBFilesClient\\CreatureDisplayInfoExtra.db2",
"DBFilesClient\\CreatureDisplayInfoTrn.db2",
"DBFilesClient\\CreatureFamily.db2",
@@ -131,6 +138,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\CreatureMovementInfo.db2",
"DBFilesClient\\CreatureSoundData.db2",
"DBFilesClient\\CreatureType.db2",
+ "DBFilesClient\\CreatureXContribution.db2",
"DBFilesClient\\Criteria.db2",
"DBFilesClient\\CriteriaTree.db2",
"DBFilesClient\\CriteriaTreeXEffect.db2",
@@ -198,6 +206,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\GarrFollowerType.db2",
"DBFilesClient\\GarrFollowerUICreature.db2",
"DBFilesClient\\GarrFollowerXAbility.db2",
+ "DBFilesClient\\GarrItemLevelUpgradeData.db2",
"DBFilesClient\\GarrMechanic.db2",
"DBFilesClient\\GarrMechanicSetXMechanic.db2",
"DBFilesClient\\GarrMechanicType.db2",
@@ -242,6 +251,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\HolidayDescriptions.db2",
"DBFilesClient\\HolidayNames.db2",
"DBFilesClient\\Holidays.db2",
+ "DBFilesClient\\Hotfix.db2",
"DBFilesClient\\ImportPriceArmor.db2",
"DBFilesClient\\ImportPriceQuality.db2",
"DBFilesClient\\ImportPriceShield.db2",
@@ -273,6 +283,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\ItemEffect.db2",
"DBFilesClient\\ItemExtendedCost.db2",
"DBFilesClient\\ItemGroupSounds.db2",
+ "DBFilesClient\\ItemLevelSelector.db2",
"DBFilesClient\\ItemLimitCategory.db2",
"DBFilesClient\\ItemLimitCategoryCondition.db2",
"DBFilesClient\\ItemModifiedAppearance.db2",
@@ -286,7 +297,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\ItemSearchName.db2",
"DBFilesClient\\ItemSet.db2",
"DBFilesClient\\ItemSetSpell.db2",
- "DBFilesClient\\Item-sparse.db2",
+ "DBFilesClient\\ItemSparse.db2",
"DBFilesClient\\ItemSpec.db2",
"DBFilesClient\\ItemSpecOverride.db2",
"DBFilesClient\\ItemSubClass.db2",
@@ -329,12 +340,16 @@ char const* DBFilesClientList[] =
"DBFilesClient\\LockType.db2",
"DBFilesClient\\LookAtController.db2",
"DBFilesClient\\MailTemplate.db2",
+ "DBFilesClient\\ManagedWorldState.db2",
+ "DBFilesClient\\ManagedWorldStateBuff.db2",
+ "DBFilesClient\\ManagedWorldStateInput.db2",
"DBFilesClient\\ManifestInterfaceActionIcon.db2",
"DBFilesClient\\ManifestInterfaceData.db2",
"DBFilesClient\\ManifestInterfaceItemIcon.db2",
"DBFilesClient\\ManifestInterfaceTOCData.db2",
"DBFilesClient\\ManifestMP3.db2",
"DBFilesClient\\Map.db2",
+ "DBFilesClient\\MapCelestialBody.db2",
"DBFilesClient\\MapChallengeMode.db2",
"DBFilesClient\\MapDifficulty.db2",
"DBFilesClient\\MapDifficultyXCondition.db2",
@@ -348,6 +363,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\Mount.db2",
"DBFilesClient\\MountCapability.db2",
"DBFilesClient\\MountTypeXCapability.db2",
+ "DBFilesClient\\MountXDisplay.db2",
"DBFilesClient\\Movie.db2",
"DBFilesClient\\MovieFileData.db2",
"DBFilesClient\\MovieVariation.db2",
@@ -366,6 +382,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\OverrideSpellData.db2",
"DBFilesClient\\PageTextMaterial.db2",
"DBFilesClient\\PaperDollItemFrame.db2",
+ "DBFilesClient\\ParagonReputation.db2",
"DBFilesClient\\ParticleColor.db2",
"DBFilesClient\\Path.db2",
"DBFilesClient\\PathNode.db2",
@@ -385,6 +402,8 @@ char const* DBFilesClientList[] =
"DBFilesClient\\PvpDifficulty.db2",
"DBFilesClient\\PvpItem.db2",
"DBFilesClient\\PvpReward.db2",
+ "DBFilesClient\\PvpScalingEffect.db2",
+ "DBFilesClient\\PvpScalingEffectType.db2",
"DBFilesClient\\PvpTalent.db2",
"DBFilesClient\\PvpTalentUnlock.db2",
"DBFilesClient\\QuestFactionReward.db2",
@@ -400,8 +419,8 @@ char const* DBFilesClientList[] =
"DBFilesClient\\QuestSort.db2",
"DBFilesClient\\QuestV2.db2",
"DBFilesClient\\QuestV2CliTask.db2",
- "DBFilesClient\\QuestXP.db2",
"DBFilesClient\\QuestXGroupActivity.db2",
+ "DBFilesClient\\QuestXP.db2",
"DBFilesClient\\RacialMounts.db2",
"DBFilesClient\\RandPropPoints.db2",
"DBFilesClient\\ResearchBranch.db2",
@@ -436,6 +455,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\SoundAmbience.db2",
"DBFilesClient\\SoundAmbienceFlavor.db2",
"DBFilesClient\\SoundBus.db2",
+ "DBFilesClient\\SoundBusOverride.db2",
"DBFilesClient\\SoundEmitterPillPoints.db2",
"DBFilesClient\\SoundEmitters.db2",
"DBFilesClient\\SoundFilter.db2",
@@ -469,14 +489,12 @@ char const* DBFilesClientList[] =
"DBFilesClient\\SpellDuration.db2",
"DBFilesClient\\SpellEffect.db2",
"DBFilesClient\\SpellEffectEmission.db2",
- "DBFilesClient\\SpellEffectExtra.db2",
"DBFilesClient\\SpellEffectGroupSize.db2",
"DBFilesClient\\SpellEffectScaling.db2",
"DBFilesClient\\SpellEquippedItems.db2",
"DBFilesClient\\SpellFlyout.db2",
"DBFilesClient\\SpellFlyoutItem.db2",
"DBFilesClient\\SpellFocusObject.db2",
- "DBFilesClient\\SpellIcon.db2",
"DBFilesClient\\SpellInterrupts.db2",
"DBFilesClient\\SpellItemEnchantment.db2",
"DBFilesClient\\SpellItemEnchantmentCondition.db2",
@@ -514,6 +532,7 @@ char const* DBFilesClientList[] =
"DBFilesClient\\SpellVisualKitModelAttach.db2",
"DBFilesClient\\SpellVisualMissile.db2",
"DBFilesClient\\SpellXSpellVisual.db2",
+ "DBFilesClient\\StartupFiles.db2",
"DBFilesClient\\Startup_Strings.db2",
"DBFilesClient\\Stationery.db2",
"DBFilesClient\\StringLookups.db2",
@@ -534,7 +553,9 @@ char const* DBFilesClientList[] =
"DBFilesClient\\TradeSkillCategory.db2",
"DBFilesClient\\TradeSkillItem.db2",
"DBFilesClient\\TransformMatrix.db2",
+ "DBFilesClient\\TransmogHoliday.db2",
"DBFilesClient\\TransmogSet.db2",
+ "DBFilesClient\\TransmogSetGroup.db2",
"DBFilesClient\\TransmogSetItem.db2",
"DBFilesClient\\TransportAnimation.db2",
"DBFilesClient\\TransportPhysics.db2",
@@ -545,6 +566,10 @@ char const* DBFilesClientList[] =
"DBFilesClient\\UiCamera.db2",
"DBFilesClient\\UiCameraType.db2",
"DBFilesClient\\UiMapPOI.db2",
+ "DBFilesClient\\UiModelScene.db2",
+ "DBFilesClient\\UiModelSceneActor.db2",
+ "DBFilesClient\\UiModelSceneActorDisplay.db2",
+ "DBFilesClient\\UiModelSceneCamera.db2",
"DBFilesClient\\UiTextureAtlas.db2",
"DBFilesClient\\UiTextureAtlasMember.db2",
"DBFilesClient\\UiTextureKit.db2",
diff --git a/src/tools/vmap4_extractor/gameobject_extract.cpp b/src/tools/vmap4_extractor/gameobject_extract.cpp
index 73fa7130f24..137e301dcfd 100644
--- a/src/tools/vmap4_extractor/gameobject_extract.cpp
+++ b/src/tools/vmap4_extractor/gameobject_extract.cpp
@@ -77,7 +77,8 @@ struct GameobjectDisplayInfoLoadInfo
};
static char const* types = "ifffh";
static uint8 const arraySizes[5] = { 1, 6, 1, 1, 1 };
- static DB2Meta const meta(-1, 5, 0xE2D6FAB7, types, arraySizes);
+ static DB2FieldDefault const fieldDefaults[5] = { uint32(0), float(0), float(0), float(0), uint16(0) };
+ static DB2Meta const meta(-1, 5, 0x9EF36BC0, types, arraySizes, fieldDefaults);
static DB2FileLoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, &meta);
return &loadInfo;
}
@@ -130,7 +131,7 @@ void ExtractGameobjectModels()
for (uint32 rec = 0; rec < db2.GetRecordCount(); ++rec)
{
DB2Record record = db2.GetRecord(rec);
- uint32 fileId = record.GetUInt32(0, 0);
+ uint32 fileId = record.GetUInt32("FileDataID");
if (!fileId)
continue;
diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp
index 02d0df202de..ce9bb6453ca 100644
--- a/src/tools/vmap4_extractor/vmapexport.cpp
+++ b/src/tools/vmap4_extractor/vmapexport.cpp
@@ -85,6 +85,8 @@ struct MapLoadInfo
{ false, FT_STRING, "MapName" },
{ false, FT_STRING, "MapDescription0" },
{ false, FT_STRING, "MapDescription1" },
+ { false, FT_STRING, "ShortDescription" },
+ { false, FT_STRING, "LongDescription" },
{ false, FT_SHORT, "AreaTableID" },
{ false, FT_SHORT, "LoadingScreenID" },
{ true, FT_SHORT, "CorpseMapID" },
@@ -98,9 +100,10 @@ struct MapLoadInfo
{ false, FT_BYTE, "MaxPlayers" },
{ false, FT_BYTE, "TimeOffset" },
};
- static char const* types = "siffssshhhhhhhbbbbb";
- static uint8 const arraySizes[19] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
- static DB2Meta const meta(-1, 19, 0xF7CF2DA2, types, arraySizes);
+ static char const* types = "siffssssshhhhhhhbbbbb";
+ static uint8 const arraySizes[21] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+ static DB2FieldDefault const fieldDefaults[21] = { "", uint32(0), float(0), float(0), "", "", "", "", "", uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint16(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0) };
+ static DB2Meta const meta(-1, 21, 0xC34CD39B, types, arraySizes, fieldDefaults);
static DB2FileLoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, &meta);
return &loadInfo;
}
@@ -479,7 +482,7 @@ int main(int argc, char ** argv)
DB2Record record = db2.GetRecord(x);
map_ids[x].id = record.GetId();
- const char* map_name = record.GetString(0, 0);
+ const char* map_name = record.GetString("Directory");
size_t max_map_name_length = sizeof(map_ids[x].name);
if (strlen(map_name) >= max_map_name_length)
{