diff options
22 files changed, 284 insertions, 21 deletions
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 4e81308119f..f02ae80e472 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1946,6 +1946,30 @@ LOCK TABLES `lag_reports` WRITE; UNLOCK TABLES; -- +-- Table structure for table `lfg_data` +-- + +DROP TABLE IF EXISTS `lfg_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `lfg_data` ( + `guid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', + `dungeon` INT(10) UNSIGNED NOT NULL DEFAULT '0', + `state` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`) +) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='LFG Data'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `lfg_data` +-- + +LOCK TABLES `lfg_data` WRITE; +/*!40000 ALTER TABLE `lfg_data` DISABLE KEYS */; +/*!40000 ALTER TABLE `lfg_data` ENABLE KEYS */; +UNLOCK TABLES; + +-- -- Table structure for table `mail` -- diff --git a/sql/old/3.3.5a/2011_11_21_01_pilgrim_achievement_reward.sql b/sql/old/3.3.5a/2011_11_21_01_world_pilgrim_achievement_reward.sql index 7083107a8c2..7083107a8c2 100644 --- a/sql/old/3.3.5a/2011_11_21_01_pilgrim_achievement_reward.sql +++ b/sql/old/3.3.5a/2011_11_21_01_world_pilgrim_achievement_reward.sql diff --git a/sql/old/3.3.5a/2011_11_21_02_pilgrim_achievement_criteria_data.sql b/sql/old/3.3.5a/2011_11_21_02_world_pilgrim_achievement_criteria_data.sql index 589dbb0b2a4..589dbb0b2a4 100644 --- a/sql/old/3.3.5a/2011_11_21_02_pilgrim_achievement_criteria_data.sql +++ b/sql/old/3.3.5a/2011_11_21_02_world_pilgrim_achievement_criteria_data.sql diff --git a/sql/old/3.3.5a/2011_11_21_03_pilgrim_misc.sql b/sql/old/3.3.5a/2011_11_21_03_world_pilgrim_misc.sql index 6547fe9a53a..6547fe9a53a 100644 --- a/sql/old/3.3.5a/2011_11_21_03_pilgrim_misc.sql +++ b/sql/old/3.3.5a/2011_11_21_03_world_pilgrim_misc.sql diff --git a/sql/old/3.3.5a/2011_11_21_04_pilgrim_misc.sql b/sql/old/3.3.5a/2011_11_21_04_world_pilgrim_misc.sql index 194c084ebc5..194c084ebc5 100644 --- a/sql/old/3.3.5a/2011_11_21_04_pilgrim_misc.sql +++ b/sql/old/3.3.5a/2011_11_21_04_world_pilgrim_misc.sql diff --git a/sql/old/3.3.5a/2011_11_21_05_pilgrim_tables.sql b/sql/old/3.3.5a/2011_11_21_05_world_pilgrim_tables.sql index 18881e14eaf..18881e14eaf 100644 --- a/sql/old/3.3.5a/2011_11_21_05_pilgrim_tables.sql +++ b/sql/old/3.3.5a/2011_11_21_05_world_pilgrim_tables.sql diff --git a/sql/updates/world/2012_01_19_00_world_quest_template.sql b/sql/updates/world/2012_01_19_00_world_quest_template.sql new file mode 100644 index 00000000000..f1af6e7eedd --- /dev/null +++ b/sql/updates/world/2012_01_19_00_world_quest_template.sql @@ -0,0 +1,17 @@ +-- Non sword wielders quests +UPDATE `quest_template` SET `RequiredClasses`=`RequiredClasses` +|16 -- Priest +|64 -- Shaman +|1024 -- Druid +WHERE `Id` IN (24795,24798,24798); + +-- Sword wielders quests +UPDATE `quest_template` SET `RequiredClasses`=`RequiredClasses` +|1 -- Warrior +|2 -- Paladin +|4 -- Hunter +|8 -- Rouge +|32 -- Death Kinght +|128 -- Mage +|256 -- Warlock +WHERE `Id` IN (24796,24800,24801); diff --git a/sql/updates/world/2012_01_19_01_world_sai.sql b/sql/updates/world/2012_01_19_01_world_sai.sql new file mode 100644 index 00000000000..94e8c08292b --- /dev/null +++ b/sql/updates/world/2012_01_19_01_world_sai.sql @@ -0,0 +1,30 @@ +-- [Q] Mounting Hodir's Helm + +-- Hodir's Helm KC Bunny SAI +SET @ENTRY := 30210; +SET @SPELL_READ_PRONOUNCEMENT := 56278; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,1,8,0,100,0,@SPELL_READ_PRONOUNCEMENT,0,0,0,33,@ENTRY,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hodir's Helm KC Bunny - On Spellhit - Quest Credit"), +(@ENTRY,0,1,2,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Hodir's Helm KC Bunny - On Spellhit - Say Line 0"), +(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,50,192080,30000,0,0,0,0,8,0,0,0,7390.143066,-2725.382080,874.256104,2.973291,"Hodir's Helm KC Bunny - On Spellhit - Summon Hodir's Helm"); + +-- Text +DELETE FROM `creature_text` WHERE `entry`=@ENTRY; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(@ENTRY,0,0,"Sons of Hodir! I humbly present to you... The Helm of Hodir!",42,0,100,0,0,0,"Hodir's Helm KC Bunny"); + +-- Update from sniff +UPDATE `gameobject_template` SET `flags`=`flags`|36 WHERE `entry`=192080; + +-- Conditions for Read Pronouncement +DELETE FROM `conditions` WHERE `SourceEntry`=@SPELL_READ_PRONOUNCEMENT AND `ConditionValue2`=@ENTRY; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`Comment`) VALUES +(13,0,@SPELL_READ_PRONOUNCEMENT,18,1,@ENTRY,"Read Pronouncement targets Hodir's Helm KC Bunny"); + +-- Spawn a helm bunny +SET @GUID := 40266; -- gap +DELETE FROM `creature` WHERE `id`=@ENTRY; +INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES +(@GUID,@ENTRY,571,1,1,0,0,7390.14,-2725.38,874.256,2.90103,300,0,0,42,0,0,0,0,0); diff --git a/sql/updates/world/2012_01_19_02_world_quest_template.sql b/sql/updates/world/2012_01_19_02_world_quest_template.sql new file mode 100644 index 00000000000..7bff373242d --- /dev/null +++ b/sql/updates/world/2012_01_19_02_world_quest_template.sql @@ -0,0 +1 @@ +UPDATE `quest_template` SET `SpecialFlags`=0 WHERE `id`=9545; diff --git a/sql/updates/world/2012_01_19_03_world_sai.sql b/sql/updates/world/2012_01_19_03_world_sai.sql new file mode 100644 index 00000000000..d75568ea668 --- /dev/null +++ b/sql/updates/world/2012_01_19_03_world_sai.sql @@ -0,0 +1,18 @@ +-- [Q] [A] The Escape +-- William Pestle SAI +SET @ENTRY := 253; +SET @QUEST := 114; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=@QUEST; +DELETE FROM `quest_start_scripts` WHERE `id`=@QUEST; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY,@ENTRY*100); +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,19,0,100,0,@QUEST,0,0,0,80,@ENTRY*100,0,2,0,0,0,1,0,0,0,0,0,0,0,"William Pestle - On Quest Accept - Run Script"), +(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"William Pestle - On Script - Say Line 0"), +(@ENTRY*100,9,1,0,0,0,100,0,5000,5000,0,0,1,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"William Pestle - On Script - Say Line 1"); +-- Text +DELETE FROM `db_script_string` WHERE `entry` IN (2000000080,2000000081); +DELETE FROM `creature_text` WHERE `entry`=@ENTRY; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(@ENTRY,0,0,"This shouldn't take long...",12,0,100,432,0,0,"William Pestle"), +(@ENTRY,1,0,"The invisibility liquer is ready for you, $N.",12,0,100,0,0,0,"William Pestle"); diff --git a/sql/updates/world/2012_01_19_04_world_sai.sql b/sql/updates/world/2012_01_19_04_world_sai.sql new file mode 100644 index 00000000000..b518f923e77 --- /dev/null +++ b/sql/updates/world/2012_01_19_04_world_sai.sql @@ -0,0 +1,13 @@ +-- [Q] [A/H] This Is Going to Be Hard +-- Lotwil Veriatus SAI +SET @ENTRY := 2921; +SET @QUEST := 778; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=@QUEST; +DELETE FROM `quest_start_scripts` WHERE `id`=@QUEST; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY,@ENTRY*100); +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,19,0,100,0,@QUEST,0,0,0,80,@ENTRY*100,0,2,0,0,0,1,0,0,0,0,0,0,0,"Lotwil Veriatus - On Quest Accept - Run Script"), +(@ENTRY*100,9,0,0,0,0,100,0,4000,4000,0,0,11,5001,0,0,0,0,0,1,0,0,0,0,0,0,0,"Lotwil Veriatus - On Script - Cast Lotwil's Summoning"), +(@ENTRY*100,9,1,0,0,0,100,0,1000,1000,0,0,12,2919,1,240000,0,0,0,8,0,0,0,-6666.27,-2728.12,243.136,6.28,"Lotwil Veriatus - On Script - Summon Fam'retor Guardian"), +(@ENTRY*100,9,2,0,0,0,100,0,0,0,0,0,11,5002,0,0,0,0,0,1,0,0,0,0,0,0,0,"Lotwil Veriatus - On Script - Cast Lotwil's Summon Complete"); diff --git a/sql/updates/world/2012_01_19_05_world_sai.sql b/sql/updates/world/2012_01_19_05_world_sai.sql new file mode 100644 index 00000000000..2e6a743167e --- /dev/null +++ b/sql/updates/world/2012_01_19_05_world_sai.sql @@ -0,0 +1,10 @@ +-- [Q] [A] The Dormant Shade +-- Lillith's Dinner Table SAI +SET @ENTRY := 1557; +SET @QUEST := 410; +UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=@ENTRY; +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=@QUEST; +DELETE FROM `quest_end_scripts` WHERE `id`=@QUEST; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=1; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,1,0,0,20,0,100,0,@QUEST,0,0,0,12,1946,1,180000,0,0,0,8,0,0,0,2468.28,15.26,23.89,0.37,"Lillith's Dinner Table - On Quest Complete - Summon Lillith Nefara"); diff --git a/sql/updates/world/2012_01_19_06_world_sai.sql b/sql/updates/world/2012_01_19_06_world_sai.sql new file mode 100644 index 00000000000..817d6bd9aaa --- /dev/null +++ b/sql/updates/world/2012_01_19_06_world_sai.sql @@ -0,0 +1,10 @@ +-- [Q] [A/H] Ledger from Tanaris +-- Wooden Outhouse SAI +SET @ENTRY := 173265; +SET @QUEST := 4450; +UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=@ENTRY; +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=@QUEST; +DELETE FROM `quest_start_scripts` WHERE `id`=@QUEST; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=1; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,1,0,0,19,0,100,0,@QUEST,0,0,0,70,0,0,0,0,0,0,14,47578,173266,0,0,0,0,0,"Wooden Outhouse - On Quest Accept - Respawn Goodsteel Ledger (GO)"); diff --git a/sql/updates/world/2012_01_19_07_world_sai.sql b/sql/updates/world/2012_01_19_07_world_sai.sql new file mode 100644 index 00000000000..d4061981f77 --- /dev/null +++ b/sql/updates/world/2012_01_19_07_world_sai.sql @@ -0,0 +1,19 @@ +-- [Q] [A/H] Making Sense of It +-- J.D. Collie SAI +SET @ENTRY := 9117; +SET @QUEST := 4321; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=@QUEST; +DELETE FROM `quest_start_scripts` WHERE `id`=@QUEST; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY,@ENTRY*100); +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,19,0,100,0,@QUEST,0,0,0,80,@ENTRY*100,0,2,0,0,0,1,0,0,0,0,0,0,0,"J.D. Collie - On Quest Accept - Run Script"), +(@ENTRY*100,9,0,0,0,0,100,0,6000,6000,0,0,5,6,0,0,0,0,0,1,0,0,0,0,0,0,0,"J.D. Collie - On Script - Emote ONESHOT_QUESTION"), +(@ENTRY*100,9,1,0,0,0,100,0,4000,4000,0,0,5,22,0,0,0,0,0,1,0,0,0,0,0,0,0,"J.D. Collie - On Script - Emote ONESHOT_SHOUT"), +(@ENTRY*100,9,2,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"J.D. Collie - On Script - Say Line 0"), +(@ENTRY*100,9,3,0,0,0,100,0,10000,10000,0,0,15,@QUEST,0,0,0,0,7,0,0,0,0,0,0,0,0,"J.D. Collie - On Script - Quest Credit"); +-- Text +DELETE FROM `db_script_string` WHERE `entry`=2000000030; +DELETE FROM `creature_text` WHERE `entry`=@ENTRY; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(@ENTRY,0,0,"This makes sense!",12,0,100,0,0,0,"J.D. Collie"); diff --git a/sql/updates/world/2012_01_19_08_world_sai.sql b/sql/updates/world/2012_01_19_08_world_sai.sql new file mode 100644 index 00000000000..c89bc5d8c40 --- /dev/null +++ b/sql/updates/world/2012_01_19_08_world_sai.sql @@ -0,0 +1,104 @@ +-- [QUEST] A Rough Ride (12536) + +-- NPC entry 28298 (Captive Crocolisk) +SET @ENTRY := 28298; +SET @GOSSIP := 9674; +SET @TEXT_ID := 13120; +UPDATE `creature_template` SET `gossip_menu_id`=@GOSSIP,`npcflag`=npcflag|1,`VehicleId`=0 WHERE `entry`=@ENTRY; +DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP; +INSERT INTO `gossip_menu` (`entry`,`text_id`) +VALUES (@GOSSIP,@TEXT_ID); + +-- Added condition so player can only select it once he has the quest +SET @GOSSIP_ENTRY := 9674; +SET @QUEST := 12536; +DELETE FROM `conditions` WHERE `SourceGroup`=@GOSSIP_ENTRY AND `SourceTypeOrReferenceId`=15; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) +VALUES (15,@GOSSIP_ENTRY,0,0,9,@QUEST,0,0,0,0, 'Only show gossip 9674 when quest 12536 is added'); + +-- Add missing gossip +SET @GOSSIP := 9674; +DELETE FROM `gossip_menu_option` WHERE `menu_id`=9674 AND `id`=0; +INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) +VALUES +(@GOSSIP,0,0,"You look safe enough... let's do this.",1,1,0,0,0,0, ''); + +-- [SAI] On gossip select - mount and waypoint +SET @ENTRY := 28298; +SET @GOSSIP := 9674; +SET @SPELL := 51258; +SET @ENTRY_MOUNT := 28308; +SET @MODELID_MOUNT := 25107; +SET @QUEST := 12536; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@ENTRY,@ENTRY_MOUNT); +UPDATE `creature_template` SET `VehicleId`=115 WHERE `entry`=@ENTRY_MOUNT; +UPDATE `creature_template` SET `InhabitType`=3 WHERE `entry`=@ENTRY_MOUNT; +UPDATE `creature_template` SET `unit_flags`=`unit_flags`|512|256 WHERE `entry`=@ENTRY_MOUNT; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY,@ENTRY_MOUNT) AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY_MOUNT*100 AND `source_type`=9; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) +VALUES +(@ENTRY,0,0,0,62,0,100,0,@GOSSIP,0,0,0,11,@SPELL,0,0,0,0,0,7,0,0,0,0,0,0,0, 'On gossip select - cast spell 51258 - Captive Crocolisk'), +(@ENTRY_MOUNT,0,1,0,54,0,100,0,0,0,0,0,80,@ENTRY_MOUNT*100,0,2,0,0,0,1,0,0,0,0,0,0,0, 'On summon - run script - Captive Crocolisk'), +(@ENTRY_MOUNT*100,9,1,0,0,0,100,0,0,0,0,0,53,1,@ENTRY_MOUNT,0,@QUEST,0,1,1,0,0,0,0,0,0,0, 'Start wp - Captive Crocolisk'), +(@ENTRY_MOUNT,0,2,3,58,0,100,0,47,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'on wp end - despawn - Captive Crocolisk'), +(@ENTRY_MOUNT,0,3,0,61,0,100,0,@ENTRY_MOUNT,0,0,0,15,@QUEST,0,0,0,0,0,7,0,0,0,0,0,0,0, 'on despawn - call area explored of event happens'); + +-- Waypoints +DELETE FROM `waypoints` WHERE `entry`=@ENTRY_MOUNT; +INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) +VALUES +(@ENTRY_MOUNT,1,5268.226,4425.439,-95.55899, 'Captive Crocolisk'), +(@ENTRY_MOUNT,2,5249.557,4405.892,-96.04365, 'Captive Crocolisk'), +(@ENTRY_MOUNT,3,5266.678,4365.464,-98.19455, 'Captive Crocolisk'), +(@ENTRY_MOUNT,4,5289.138,4366.553,-102.234, 'Captive Crocolisk'), +(@ENTRY_MOUNT,5,5330.018,4363.27,-121.0311, 'Captive Crocolisk'), +(@ENTRY_MOUNT,6,5349.229,4341.059,-134.0126, 'Captive Crocolisk'), +(@ENTRY_MOUNT,7,5268.226,4425.439,-95.55899, 'Captive Crocolisk'), +(@ENTRY_MOUNT,8,5249.557,4405.892,-96.04365, 'Captive Crocolisk'), +(@ENTRY_MOUNT,9,5266.678,4365.464,-98.19455, 'Captive Crocolisk'), +(@ENTRY_MOUNT,10,5289.138,4366.553,-102.234, 'Captive Crocolisk'), +(@ENTRY_MOUNT,11,5330.018,4363.27,-121.0311, 'Captive Crocolisk'), +(@ENTRY_MOUNT,12,5349.229,4341.059,-134.0126, 'Captive Crocolisk'), +(@ENTRY_MOUNT,13,5365.038,4333.716,-141.5817, 'Captive Crocolisk'), +(@ENTRY_MOUNT,14,5405.443,4307.841,-142.03, 'Captive Crocolisk'), +(@ENTRY_MOUNT,15,5434.999,4305.659,-136.4706, 'Captive Crocolisk'), +(@ENTRY_MOUNT,16,5464.708,4302.066,-133.1981, 'Captive Crocolisk'), +(@ENTRY_MOUNT,17,5490.555,4294.395,-127.5203, 'Captive Crocolisk'), +(@ENTRY_MOUNT,18,5503.808,4269.717,-110.3168, 'Captive Crocolisk'), +(@ENTRY_MOUNT,19,5518.324,4255.308,-103.0638, 'Captive Crocolisk'), +(@ENTRY_MOUNT,20,5540.53,4259.77,-102.3979, 'Captive Crocolisk'), +(@ENTRY_MOUNT,21,5564.194,4263.45,-102.7574, 'Captive Crocolisk'), +(@ENTRY_MOUNT,22,5585.45,4261.137,-99.54807, 'Captive Crocolisk'), +(@ENTRY_MOUNT,23,5609.614,4259.657,-98.87333, 'Captive Crocolisk'), +(@ENTRY_MOUNT,24,5633.434,4259.228,-98.53442, 'Captive Crocolisk'), +(@ENTRY_MOUNT,25,5681.639,4266.31,-99.26748, 'Captive Crocolisk'), +(@ENTRY_MOUNT,26,5708.126,4273.348,-102.9183, 'Captive Crocolisk'), +(@ENTRY_MOUNT,27,5748.732,4284.135,-112.0557, 'Captive Crocolisk'), +(@ENTRY_MOUNT,28,5839.82,4368.61,-112.0805, 'Captive Crocolisk'), +(@ENTRY_MOUNT,29,5865.922,4371.208,-105.5544, 'Captive Crocolisk'), +(@ENTRY_MOUNT,30,5897.276,4408.44,-95.25065, 'Captive Crocolisk'), +(@ENTRY_MOUNT,31,5925.311,4440.624,-94.77592, 'Captive Crocolisk'), +(@ENTRY_MOUNT,32,5953.005,4476.29,-94.3763, 'Captive Crocolisk'), +(@ENTRY_MOUNT,33,5964.229,4503.729,-92.81553, 'Captive Crocolisk'), +(@ENTRY_MOUNT,34,5960.583,4546.558,-95.65462, 'Captive Crocolisk'), +(@ENTRY_MOUNT,35,5965.167,4579.141,-97.39779, 'Captive Crocolisk'), +(@ENTRY_MOUNT,36,5969.295,4613.739,-98.05751, 'Captive Crocolisk'), +(@ENTRY_MOUNT,37,5975.809,4659.289,-99.27143, 'Captive Crocolisk'), +(@ENTRY_MOUNT,38,5992.961,4699.554,-99.30317, 'Captive Crocolisk'), +(@ENTRY_MOUNT,39,6015.139,4743.752,-97.52377, 'Captive Crocolisk'), +(@ENTRY_MOUNT,40,6035.183,4788.787,-94.66938, 'Captive Crocolisk'), +(@ENTRY_MOUNT,41,6064.951,4827.502,-94.54885, 'Captive Crocolisk'), +(@ENTRY_MOUNT,42,6065.57,4870.553,-94.47726, 'Captive Crocolisk'), +(@ENTRY_MOUNT,43,6096.612,4885.741,-94.44479, 'Captive Crocolisk'), +(@ENTRY_MOUNT,44,6120.387,4902.048,-95.06882, 'Captive Crocolisk'), +(@ENTRY_MOUNT,45,6139.616,4913.349,-94.8635, 'Captive Crocolisk'), +(@ENTRY_MOUNT,46,6139.616,4913.349,-94.93861, 'Captive Crocolisk'), +(@ENTRY_MOUNT,47,6139.616,4913.349,-94.93861, 'Captive Crocolisk'); + +-- Spawn Zepik +SET @GUID := 40267; +DELETE FROM `creature` WHERE `id`=28216; +INSERT INTO `creature` VALUES +(@GUID,28216,571,1,1,0,0,6147.37,4917.29,-94.094,3.42155,300,0,0,42,0,0,0,0,0); + diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ed65e1ce527..ce80d7a7af3 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12814,6 +12814,14 @@ void Player::SplitItem(uint16 src, uint16 dst, uint32 count) return; } + //! If trading + if (TradeData* tradeData = GetTradeData()) + { + //! If current item is in trade window (only possible with packet spoofing - silent return) + if (tradeData->GetTradeSlotForItem(pSrcItem->GetGUID()) != TRADE_SLOT_INVALID) + return; + } + sLog->outDebug(LOG_FILTER_PLAYER_ITEMS, "STORAGE: SplitItem bag = %u, slot = %u, item = %u, count = %u", dstbag, dstslot, pSrcItem->GetEntry(), count); Item* pNewItem = pSrcItem->CloneItem(count, this); if (!pNewItem) @@ -12883,17 +12891,6 @@ void Player::SplitItem(uint16 src, uint16 dst, uint32 count) EquipItem(dest, pNewItem, true); AutoUnequipOffhandIfNeed(); } - - //! Make sure that code below only is executed when trading - if (!GetTradeData()) - return; - - //! Update item count in trade window, prevent spoofing - //! Since pSrcItem has its count updated (see above), Item::GetCount() will return the new count - //! in the underlying packet builder function - TradeSlots const slot = GetTradeData()->GetTradeSlotForItem(pSrcItem->GetGUID()); - if (slot != TRADE_SLOT_INVALID) - GetTradeData()->SetItem(slot, pSrcItem); } void Player::SwapItem(uint16 src, uint16 dst) diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 19bc1ab7dea..b31b632e963 100755 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -203,7 +203,9 @@ void Group::LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup, // skip non-existed member if (!sObjectMgr->GetPlayerNameByGUID(member.guid, member.name)) { - CharacterDatabase.PQuery("DELETE FROM group_member WHERE memberGuid=%u", guidLow); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP_MEMBER); + stmt->setUInt32(0, guidLow); + CharacterDatabase.Execute(stmt); return; } diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index c17f5096748..8975a2d7d7b 100755 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -307,7 +307,7 @@ void MotionMaster::MoveLand(uint32 id, Position const& pos, float speed) init.SetVelocity(speed); init.SetAnimation(Movement::ToGround); init.Launch(); - Mutate(new EffectMovementGenerator(id), MOTION_SLOT_CONTROLLED); + Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE); } void MotionMaster::MoveTakeoff(uint32 id, Position const& pos, float speed) @@ -322,7 +322,7 @@ void MotionMaster::MoveTakeoff(uint32 id, Position const& pos, float speed) init.SetVelocity(speed); init.SetAnimation(Movement::ToFly); init.Launch(); - Mutate(new EffectMovementGenerator(id), MOTION_SLOT_CONTROLLED); + Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE); } void MotionMaster::MoveKnockbackFrom(float srcX, float srcY, float speedXY, float speedZ) @@ -365,7 +365,10 @@ void MotionMaster::MoveJump(float x, float y, float z, float speedXY, float spee init.SetParabolic(max_height,0); init.SetVelocity(speedXY); init.Launch(); - Mutate(new EffectMovementGenerator(id), MOTION_SLOT_CONTROLLED); + if (i_owner->GetTypeId() == TYPEID_PLAYER) + Mutate(new EffectMovementGenerator(id), MOTION_SLOT_CONTROLLED); + else + Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE); } void MotionMaster::MoveFall(uint32 id/*=0*/) diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index bded2fd512c..b03e13f91f4 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -211,6 +211,19 @@ void ChaseMovementGenerator<T>::Reset(T &owner) Initialize(owner); } +template<class T> +void ChaseMovementGenerator<T>::MovementInform(T & /*unit*/) +{ +} + +template<> +void ChaseMovementGenerator<Creature>::MovementInform(Creature &unit) +{ + // Pass back the GUIDLow of the target. If it is pet's owner then PetAI will handle + if (unit.AI()) + unit.AI()->MovementInform(CHASE_MOTION_TYPE, i_target.getTarget()->GetGUIDLow()); +} + //-----------------------------------------------// template<> bool FollowMovementGenerator<Creature>::EnableWalking() const @@ -300,6 +313,7 @@ template void ChaseMovementGenerator<Player>::Finalize(Player &); template void ChaseMovementGenerator<Creature>::Finalize(Creature &); template void ChaseMovementGenerator<Player>::Reset(Player &); template void ChaseMovementGenerator<Creature>::Reset(Creature &); +template void ChaseMovementGenerator<Player>::MovementInform(Player &unit); template void FollowMovementGenerator<Player>::Finalize(Player &); template void FollowMovementGenerator<Creature>::Finalize(Creature &); diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h index 785d12ba6d2..982f7fc875c 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h @@ -76,7 +76,7 @@ class ChaseMovementGenerator : public TargetedMovementGeneratorMedium<T, ChaseMo void Initialize(T &); void Finalize(T &); void Reset(T &); - void MovementInform(T &){} + void MovementInform(T &); static void _clearUnitStateMove(T &u) { u.ClearUnitState(UNIT_STAT_CHASE_MOVE); } static void _addUnitStateMove(T &u) { u.AddUnitState(UNIT_STAT_CHASE_MOVE); } diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index ea858eaba84..ce8628af1ca 100755 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -84,6 +84,7 @@ void WaypointMovementGenerator<Creature>::OnArrived(Creature& creature) // Inform script MovementInform(creature); + creature.UpdateWaypointID(i_currentNode); Stop(i_path->at(i_currentNode)->delay); } @@ -94,13 +95,11 @@ bool WaypointMovementGenerator<Creature>::StartMove(Creature &creature) if (Stopped()) return true; - const WaypointData *node = i_path->at(i_currentNode); - if (m_isArrivalDone) { if ((i_currentNode == i_path->size() - 1) && !repeating) // If that's our last waypoint { - creature.SetHomePosition(node->x, node->y, node->z, creature.GetOrientation()); + creature.SetHomePosition(i_path->at(i_currentNode)->x, i_path->at(i_currentNode)->y, i_path->at(i_currentNode)->z, creature.GetOrientation()); creature.GetMotionMaster()->Initialize(); return false; } @@ -108,6 +107,8 @@ bool WaypointMovementGenerator<Creature>::StartMove(Creature &creature) i_currentNode = (i_currentNode+1) % i_path->size(); } + const WaypointData *node = i_path->at(i_currentNode); + m_isArrivalDone = false; creature.AddUnitState(UNIT_STAT_ROAMING_MOVE); diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 1b6a6c6fdcf..57932ef56c6 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -130,7 +130,7 @@ public: { uint32 tguid = chr->GetTransport()->AddNPCPassenger(0, id, chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); if (tguid > 0) - WorldDatabase.PQuery("INSERT INTO creature_transport (guid, npc_entry, transport_entry, TransOffsetX, TransOffsetY, TransOffsetZ, TransOffsetO) values (%u, %u, %f, %f, %f, %f, %u)", tguid, id, chr->GetTransport()->GetEntry(), chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); + WorldDatabase.PExecute("INSERT INTO creature_transport (guid, npc_entry, transport_entry, TransOffsetX, TransOffsetY, TransOffsetZ, TransOffsetO) values (%u, %u, %f, %f, %f, %f, %u)", tguid, id, chr->GetTransport()->GetEntry(), chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); return true; } @@ -679,7 +679,7 @@ public: if (target->GetTransport()) if (target->GetGUIDTransport()) - WorldDatabase.PQuery("UPDATE creature_transport SET emote=%u WHERE transport_entry=%u AND guid=%u", emote, target->GetTransport()->GetEntry(), target->GetGUIDTransport()); + WorldDatabase.PExecute("UPDATE creature_transport SET emote=%u WHERE transport_entry=%u AND guid=%u", emote, target->GetTransport()->GetEntry(), target->GetGUIDTransport()); target->SetUInt32Value(UNIT_NPC_EMOTESTATE, emote); |