diff --git a/Source/Game/Collision/Management/VMapManager.cs b/Source/Game/Collision/Management/VMapManager.cs index 3e05ab65b..604caaf62 100644 --- a/Source/Game/Collision/Management/VMapManager.cs +++ b/Source/Game/Collision/Management/VMapManager.cs @@ -242,9 +242,10 @@ namespace Game.Collision WorldModel worldmodel = new WorldModel(); if (!worldmodel.readFile(VMapPath + filename + ".vmo")) { - Log.outError(LogFilter.Server, "VMapManager: could not load '{0}.vmo'", filename); + Log.outError(LogFilter.Server, "VMapManager: could not load '{0}'", filename); return null; } + Log.outDebug(LogFilter.Maps, "VMapManager: loading file '{0}'", filename); model = new ManagedModel(); model.setModel(worldmodel); @@ -260,6 +261,7 @@ namespace Game.Collision { lock (LoadedModelFilesLock) { + filename = filename.Replace("\0", ""); var model = iLoadedModelFiles.LookupByKey(filename); if (model == null) { diff --git a/Source/Game/Collision/Models/ModelInstance.cs b/Source/Game/Collision/Models/ModelInstance.cs index 200c8da24..fffd9ea4c 100644 --- a/Source/Game/Collision/Models/ModelInstance.cs +++ b/Source/Game/Collision/Models/ModelInstance.cs @@ -61,8 +61,8 @@ namespace Game.Collision Vector3 bHigh = reader.Read(); spawn.iBound = new AxisAlignedBox(bLow, bHigh); } - uint nameLen = reader.ReadUInt32(); + uint nameLen = reader.ReadUInt32(); spawn.name = reader.ReadString((int)nameLen); return true; } diff --git a/Source/Game/Network/Packets/QueryPackets.cs b/Source/Game/Network/Packets/QueryPackets.cs index defdb3640..91824e024 100644 --- a/Source/Game/Network/Packets/QueryPackets.cs +++ b/Source/Game/Network/Packets/QueryPackets.cs @@ -83,9 +83,9 @@ namespace Game.Network.Packets if (Allow) { - _worldPacket.WriteBits(Stats.Title.Length + 1, 11); - _worldPacket.WriteBits(Stats.TitleAlt.Length + 1, 11); - _worldPacket.WriteBits(Stats.CursorName.Length + 1, 6); + _worldPacket.WriteBits(Stats.Title.IsEmpty() ? 0 : Stats.Title.Length + 1, 11); + _worldPacket.WriteBits(Stats.TitleAlt.IsEmpty() ? 0 : Stats.TitleAlt.Length + 1, 11); + _worldPacket.WriteBits(Stats.CursorName.IsEmpty() ? 0 : Stats.CursorName.Length + 1, 6); _worldPacket.WriteBit(Stats.Leader); for (var i = 0; i < SharedConst.MaxCreatureNames; ++i) @@ -124,13 +124,13 @@ namespace Game.Network.Packets _worldPacket.WriteUInt32(Stats.RequiredExpansion); _worldPacket.WriteInt32(Stats.VignetteID); - if (!string.IsNullOrEmpty(Stats.Title)) + if (!Stats.Title.IsEmpty()) _worldPacket.WriteCString(Stats.Title); - if (!string.IsNullOrEmpty(Stats.TitleAlt)) + if (!Stats.TitleAlt.IsEmpty()) _worldPacket.WriteCString(Stats.TitleAlt); - if (!string.IsNullOrEmpty(Stats.CursorName)) + if (!Stats.CursorName.IsEmpty()) _worldPacket.WriteCString(Stats.CursorName); foreach (var questItem in Stats.QuestItems) @@ -693,9 +693,9 @@ namespace Game.Network.Packets public class CreatureStats { - public string Title = ""; - public string TitleAlt = ""; - public string CursorName = ""; + public string Title; + public string TitleAlt; + public string CursorName; public int CreatureType; public int CreatureFamily; public int Classification; diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 1084311bc..687f66af9 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -2821,6 +2821,7 @@ CREATE TABLE `item_instance_artifact` ( `itemGuid` bigint(20) unsigned NOT NULL, `xp` bigint(20) unsigned NOT NULL DEFAULT '0', `artifactAppearanceId` int(10) unsigned NOT NULL DEFAULT '0', + `artifactTierId` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`itemGuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -3385,17 +3386,17 @@ CREATE TABLE `pvpstats_players` ( `battleground_id` bigint(20) unsigned NOT NULL, `character_guid` bigint(20) unsigned NOT NULL, `winner` bit(1) NOT NULL, - `score_killing_blows` mediumint(8) unsigned NOT NULL, - `score_deaths` mediumint(8) unsigned NOT NULL, - `score_honorable_kills` mediumint(8) unsigned NOT NULL, - `score_bonus_honor` mediumint(8) unsigned NOT NULL, - `score_damage_done` mediumint(8) unsigned NOT NULL, - `score_healing_done` mediumint(8) unsigned NOT NULL, - `attr_1` mediumint(8) unsigned NOT NULL DEFAULT '0', - `attr_2` mediumint(8) unsigned NOT NULL DEFAULT '0', - `attr_3` mediumint(8) unsigned NOT NULL DEFAULT '0', - `attr_4` mediumint(8) unsigned NOT NULL DEFAULT '0', - `attr_5` mediumint(8) unsigned NOT NULL DEFAULT '0', + `score_killing_blows` int(10) unsigned NOT NULL, + `score_deaths` int(10) unsigned NOT NULL, + `score_honorable_kills` int(10) unsigned NOT NULL, + `score_bonus_honor` int(10) unsigned NOT NULL, + `score_damage_done` int(10) unsigned NOT NULL, + `score_healing_done` int(10) unsigned NOT NULL, + `attr_1` int(10) unsigned NOT NULL DEFAULT '0', + `attr_2` int(10) unsigned NOT NULL DEFAULT '0', + `attr_3` int(10) unsigned NOT NULL DEFAULT '0', + `attr_4` int(10) unsigned NOT NULL DEFAULT '0', + `attr_5` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`battleground_id`,`character_guid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -3563,7 +3564,9 @@ INSERT INTO `updates` VALUES ('2018_02_08_00_characters.sql','75FA162A9B85D678B26F972371265F1EC2C75187','ARCHIVED','2018-02-08 22:23:28',0), ('2018_02_19_00_characters.sql','75A0FFAFD0633921708DB0F72F9CC9796ACB960B','RELEASED','2018-02-19 22:33:32',117), ('2018_03_04_00_characters.sql','2A4CD2EE2547E718490706FADC78BF36F0DED8D6','RELEASED','2018-03-04 18:15:24',0), -('2018_04_28_00_characters.sql','CBD0FDC0F32DE3F456F7CE3D9CAD6933CD6A50F5','RELEASED','2018-04-28 12:44:09',0); +('2018_04_28_00_characters.sql','CBD0FDC0F32DE3F456F7CE3D9CAD6933CD6A50F5','RELEASED','2018-04-28 12:44:09',0), +('2018_07_28_00_characters.sql','31F66AE7831251A8915625EC7F10FA138AB8B654','RELEASED','2018-07-28 18:30:19',0), +('2018_07_31_00_characters.sql','7DA8D4A4534520B23E6F5BBD5B8EE205B799C798','RELEASED','2018-07-31 20:54:39',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2018_07_28_00_characters.sql b/sql/updates/characters/master/2018_07_28_00_characters.sql new file mode 100644 index 000000000..a70985f76 --- /dev/null +++ b/sql/updates/characters/master/2018_07_28_00_characters.sql @@ -0,0 +1,12 @@ +ALTER TABLE `pvpstats_players` + CHANGE `score_killing_blows` `score_killing_blows` int(10) unsigned NOT NULL, + CHANGE `score_deaths` `score_deaths` int(10) unsigned NOT NULL, + CHANGE `score_honorable_kills` `score_honorable_kills` int(10) unsigned NOT NULL, + CHANGE `score_bonus_honor` `score_bonus_honor` int(10) unsigned NOT NULL, + CHANGE `score_damage_done` `score_damage_done` int(10) unsigned NOT NULL, + CHANGE `score_healing_done` `score_healing_done` int(10) unsigned NOT NULL, + CHANGE `attr_1` `attr_1` int(10) unsigned NOT NULL, + CHANGE `attr_2` `attr_2` int(10) unsigned NOT NULL, + CHANGE `attr_3` `attr_3` int(10) unsigned NOT NULL, + CHANGE `attr_4` `attr_4` int(10) unsigned NOT NULL, + CHANGE `attr_5` `attr_5` int(10) unsigned NOT NULL; diff --git a/sql/updates/characters/master/2018_07_31_00_characters.sql b/sql/updates/characters/master/2018_07_31_00_characters.sql new file mode 100644 index 000000000..fed2be26b --- /dev/null +++ b/sql/updates/characters/master/2018_07_31_00_characters.sql @@ -0,0 +1 @@ +ALTER TABLE `item_instance_artifact` ADD `artifactTierId` int(10) unsigned NOT NULL DEFAULT '0' AFTER `artifactAppearanceId`; diff --git a/sql/updates/world/master/2018_07_25_00_world.sql b/sql/updates/world/master/2018_07_25_00_world.sql new file mode 100644 index 000000000..4235662b2 --- /dev/null +++ b/sql/updates/world/master/2018_07_25_00_world.sql @@ -0,0 +1,12 @@ +DELETE FROM `creature_equip_template` WHERE `CreatureID`= 1976 AND `ID`= 2; +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`) VALUES +(1976, 2, 1902, 0, 0); -- Stormwind City Patroller + +UPDATE `creature_addon` SET `bytes2`=256 WHERE `guid`=313937; +UPDATE `waypoint_data` SET `action`=9 WHERE `id`=3139370 AND `point`=9; +DELETE FROM `waypoint_scripts` WHERE `id`=9; +INSERT INTO `waypoint_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `guid`) VALUES +(9, 7, 31, 2, 0, 0, 0, 0, 0, 0, 950), +(9, 9, 1, 234, 0, 0, 0, 0, 0, 0, 951), +(9, 14, 1, 0, 0, 0, 0, 0, 0, 0, 952), +(9, 16, 31, 1, 0, 0, 0, 0, 0, 0, 953);