diff options
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) { |