diff options
72 files changed, 1844 insertions, 96 deletions
diff --git a/sql/updates/world/2016_02_04_00_world.sql b/sql/updates/world/2016_02_04_00_world.sql new file mode 100644 index 00000000000..758286544af --- /dev/null +++ b/sql/updates/world/2016_02_04_00_world.sql @@ -0,0 +1,54 @@ +UPDATE `quest_template` SET `AllowableRaces`=1101 WHERE `ID`=11921; +UPDATE `quest_template` SET `AllowableRaces`=690 WHERE `ID`=11926; +UPDATE `quest_template` SET `TimeAllowed`=45 WHERE `ID` IN (11922,11731); +UPDATE `quest_template` SET `TimeAllowed`=90 WHERE `ID` IN (11921,11926); +UPDATE `quest_template_addon` SET `PrevQuestId`=11731 WHERE `ID`=11921; -- More Torch Tossing(A) requires Torch Tossing +UPDATE `quest_template_addon` SET `PrevQuestId`=11922 WHERE `ID`=11926; -- More Torch Tossing(H) requires Torch Tossing +UPDATE `quest_template_addon` SET `PrevQuestId`=11731 WHERE `ID`=11657; -- Torch Catching(A) requires Torch Tossing(A) +UPDATE `quest_template_addon` SET `PrevQuestId`=11922 WHERE `ID`=11923; -- Torch Catching(H) requires Torch Tossing(H) +UPDATE `quest_template_addon` SET `PrevQuestId`=11657 WHERE `ID`=11924; -- More Torch Catching(A) requires Torch Catching +UPDATE `quest_template_addon` SET `PrevQuestId`=11923 WHERE `ID`=11925; -- More Torch Catching(H) requires Torch Catching + +DELETE FROM `creature_queststarter` WHERE `id` IN (26113,25975); +-- Master Flame/Fire Eater SAI +UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry` IN (25975,26113); +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`IN (25975,26113); +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 +(25975,0,0,0,19,0,100,0,11731,0,0,0,11,45716,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Fire Eater - On Quest \'Torch Tossing\' Accepted - Cast \'Torch Tossing Training\''), +(25975,0,1,0,19,0,100,0,11921,0,0,0,11,46630,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Fire Eater - On Quest \'More Torch Tossing\' Accepted - Cast \'Torch Tossing Practice\''), +(26113,0,0,0,19,0,100,0,11922,0,0,0,11,45716,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Flame Eater - On Quest \'Torch Tossing\' Accepted - Cast \'Torch Tossing Training\''), +(26113,0,1,0,19,0,100,0,11926,0,0,0,11,46630,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Flame Eater - On Quest \'More Torch Tossing\' Accepted - Cast \'Torch Tossing Practice\''); + +-- [DNT] Torch Tossing Target Bunny +DELETE FROM `creature_template_addon` WHERE `entry`=25535; +INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES +(25535,0,0,0,0,0,45720); + +UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=25535; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=25535; +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 +(25535,0,0,0,8,0,100,0,45732,0,0,0,11,45724,2,0,0,0,0,7,0,0,0,0,0,0,0,'[DNT] Torch Tossing Target Bunny - On Spellhit \'Torch Land\' - Cast \'Brazzier Hit\''); + +-- [DNT] Torch Tossing Target Bunny Controller +UPDATE `creature_template` SET `ScriptName`='npc_torch_tossing_target_bunny_controller' WHERE `entry`=25536; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (45732); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition` ,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(13,1,45732,0,0,1,0,45723,0,0,0,0,'','Spell \'Torch Toss\' can only hit targets with Aura \'Target Indicator\''); + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (45719,46651,46630,45723,-46630,45716,-45716); +INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES +(45719,-46630,0,'Torch Tossing Success remove Torch Tossing Practice'), +(46651,-45716,0,'Torch Tossing Success remove Torch Tossing Training'), +(46630,45725 ,2,'Torch Tossing Practice trigger Detect Invisibility'), +(45716,45725 ,2,'Torch Tossing Training trigger Detect Invisibility'), +(46630,-45724,0,'Torch Tossing Practice remove Brazier Hit'), +(45716,-45724,0,'Torch Tossing Training remove Brazier Hit'), +(-46630,-45724,0,'Torch Tossing Practice expired - clear Braziers Hit!'), +(-45716,-45724,0,'Torch Tossing Training expired - clear Braziers Hit!'), +(45723,43313,2,'Target Indicator(duration) trigger Target Indicator(visual)'); + +-- Fix A Thief's Reward +DELETE FROM `creature_queststarter` WHERE `quest` IN (9365, 9339); +UPDATE `quest_template_addon` SET `NextQuestID`=9365 WHERE `ID` IN (9324,9325,9326,11935); +UPDATE `quest_template_addon` SET `NextQuestID`=9339 WHERE `ID` IN (9330,9331,9332,11933); diff --git a/sql/updates/world/2016_02_05_00_world.sql b/sql/updates/world/2016_02_05_00_world.sql new file mode 100644 index 00000000000..46f2b488b9a --- /dev/null +++ b/sql/updates/world/2016_02_05_00_world.sql @@ -0,0 +1,6 @@ +-- Implement "Toy Train Set" and "Wind-Up Train Wrecker" +UPDATE `gameobject_template` SET `ScriptName`="go_toy_train_set" WHERE `entry`=193963; +UPDATE `creature_template` SET `ScriptName`="npc_train_wrecker" WHERE `entry`=33404; +DELETE FROM `spell_script_names` WHERE `spell_id`=61551; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(61551,"spell_item_toy_train_set_pulse"); diff --git a/sql/updates/world/2016_02_06_00_world.sql b/sql/updates/world/2016_02_06_00_world.sql new file mode 100644 index 00000000000..d303a8b5b85 --- /dev/null +++ b/sql/updates/world/2016_02_06_00_world.sql @@ -0,0 +1,2 @@ +-- Implement Egbert's running +UPDATE creature_template SET ScriptName = "npc_egbert" WHERE entry = 23258; diff --git a/sql/updates/world/2016_02_06_01_world.sql b/sql/updates/world/2016_02_06_01_world.sql new file mode 100644 index 00000000000..6812c4af52e --- /dev/null +++ b/sql/updates/world/2016_02_06_01_world.sql @@ -0,0 +1,3 @@ +-- +-- Stinky + Precious - Knockbackimmunity +UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x40000000 WHERE `entry` IN (37025, 38064, 37217, 38103); diff --git a/sql/updates/world/2016_02_06_02_world.sql b/sql/updates/world/2016_02_06_02_world.sql new file mode 100644 index 00000000000..b9fd7cd9d63 --- /dev/null +++ b/sql/updates/world/2016_02_06_02_world.sql @@ -0,0 +1,20 @@ +-- +-- Knockbackimmunity Cleanup +UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x40000000 WHERE `entry` IN ( +-- npc_kinetic_bomb +38454, 38775, 38776, 38777, +-- npc_iron_roots +33088, 33396, 33168, 33397, +-- npc_saronite_vapors +33488, 33789, +-- NPC_GAS_CLOUD +37562, 38602, 38760, 38761, +-- NPC_VOLATILE_OOZE +37697, 38604, 38758, 38759, +-- npc_training_dummy +2673, 2674, 17578, 16111, 24792, 32543, 32546, 32547, 32542, 32545, 30527, 31143, 31144, 31146, 32541, 32666, 32667, +-- npc_tournament_training_dummy +33229, 33243, 33272, +-- npc_ice_tomb +36980, 38320, 38321, 38322 +); diff --git a/sql/updates/world/2016_02_06_03_world.sql b/sql/updates/world/2016_02_06_03_world.sql new file mode 100644 index 00000000000..85f8d3c6ae7 --- /dev/null +++ b/sql/updates/world/2016_02_06_03_world.sql @@ -0,0 +1,6 @@ +-- +-- Warsong Recruitment Officer gives dublicate quest +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND (`SourceEntry`=11586 OR `SourceEntry`=11585); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`Comment`) VALUES +(19, 11586, 14, 10172, "Accept quest 11586 - Quest 10172 needs to be incomplete"), +(19, 11585, 8, 10172, "Accept quest 11585 - Quest 10172 needs to be rewarded"); diff --git a/sql/updates/world/2016_02_06_04_world.sql b/sql/updates/world/2016_02_06_04_world.sql new file mode 100644 index 00000000000..188b3b5f2a7 --- /dev/null +++ b/sql/updates/world/2016_02_06_04_world.sql @@ -0,0 +1,6 @@ +-- +-- Quest: Scalps! +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=52090 AND `ElseGroup`=1; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 52090, 0, 1, 31, 1, 3, 28465, 0, 0, 173, 0, '', 'Item 38731 "Ahunae\'s Knife" targets 28465 "Heb\'Drakkar Striker'), +(17, 0, 52090, 0, 1, 36, 1, 0, 0, 0, 1, 173, 0, '', 'Item 38731 "Ahunae\'s Knife" targets 28465 "Heb\'Drakkar Striker'); diff --git a/sql/updates/world/2016_02_06_05_world.sql b/sql/updates/world/2016_02_06_05_world.sql new file mode 100644 index 00000000000..823a8abaca6 --- /dev/null +++ b/sql/updates/world/2016_02_06_05_world.sql @@ -0,0 +1,20 @@ +-- +-- Silithus Stone spells should ignore LoS +DELETE FROM `disables` WHERE `sourceType`=0 AND `entry` IN (24803,24745,24747,24757,24759,24761,24762,24766,24769,24771,24773,24785,24787,24791,24792,24793); +INSERT INTO `disables` (`sourceType`, `entry`, `flags`, `params_0`, `params_1`, `comment`) VALUES +(0, 24803, 64, '', '', 'Abyssal Punishment ignores LoS'), +(0, 24745, 64, '', '', 'Summon Templar, Trigger ignores LoS'), +(0, 24747, 64, '', '', 'Summon Templar Fire, Trigger ignores LoS'), +(0, 24757, 64, '', '', 'Summon Templar Air, Trigger ignores LoS'), +(0, 24759, 64, '', '', 'Summon Templar Earth, Trigger ignores LoS'), +(0, 24761, 64, '', '', 'Summon Templar Water, Trigger ignores LoS'), +(0, 24762, 64, '', '', 'Summon Duke, Trigger ignores LoS'), +(0, 24766, 64, '', '', 'Summon Duke Fire, Trigger ignores LoS'), +(0, 24769, 64, '', '', 'Summon Duke Air, Trigger ignores LoS'), +(0, 24771, 64, '', '', 'Summon Duke Earth, Trigger ignores LoS'), +(0, 24773, 64, '', '', 'Summon Duke Water, Trigger ignores LoS'), +(0, 24785, 64, '', '', 'Summon Royal, Trigger ignores LoS'), +(0, 24787, 64, '', '', 'Summon Royal Fire, Trigger ignores LoS'), +(0, 24791, 64, '', '', 'Summon Royal Air, Trigger ignores LoS'), +(0, 24792, 64, '', '', 'Summon Royal Earth, Trigger ignores LoS'), +(0, 24793, 64, '', '', 'Summon Royal Water, Trigger ignores LoS'); diff --git a/sql/updates/world/2016_02_06_06_world.sql b/sql/updates/world/2016_02_06_06_world.sql new file mode 100644 index 00000000000..37df2ef0868 --- /dev/null +++ b/sql/updates/world/2016_02_06_06_world.sql @@ -0,0 +1,7 @@ +-- +-- Defias Gunpowder SAI +SET @ENTRY := 17155; +UPDATE `gameobject_template` SET `AIName`="SmartGameObjectAI" WHERE `entry`=@ENTRY; +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,70,0,100,0,2,0,0,0,12,4417,3,120000,1,0,0,8,0,0,0,-123.77,-613.586,14.126,6.035,"Defias Gunpowder - On Gossip Hello - Summon Creature 'Defias Taskmaster' (No Repeat)"); diff --git a/sql/updates/world/2016_02_06_07_world.sql b/sql/updates/world/2016_02_06_07_world.sql new file mode 100644 index 00000000000..c5d6434321a --- /dev/null +++ b/sql/updates/world/2016_02_06_07_world.sql @@ -0,0 +1,8 @@ +-- +-- Pustulating Horror SAI +SET @ENTRY := 10404; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,0,0,100,0,2000,6000,10000,10000,11,71089,0,0,0,0,0,5,0,0,0,0,0,0,0,"Pustulating Horror - In Combat - Cast 'Bubbling Pus'"), +(@ENTRY,0,1,0,2,0,100,0,0,10,60000,60000,11,71088,0,0,0,0,0,1,0,0,0,0,0,0,0,"Pustulating Horror - Between 0-10% Health - Cast 'Blight Bomb'"); diff --git a/sql/updates/world/2016_02_06_08_world.sql b/sql/updates/world/2016_02_06_08_world.sql new file mode 100644 index 00000000000..f0855ba348a --- /dev/null +++ b/sql/updates/world/2016_02_06_08_world.sql @@ -0,0 +1,9 @@ +-- +-- DB/Creature: Koren - Gossipoptions +DELETE FROM `gossip_menu_option` WHERE `menu_id`=7435; +INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES +(7435, 0, 1, 'I\'m in need of your skill as a blacksmith, Koren.', 14188, 3, 128, 0, 0, 0, 0, NULL, 0); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceID` = 15 AND `SourceGroup` = 7435; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(15, 7435, 0, 0, 0, 5, 0, 967, 224, 0, 0, 0, 0, '', 'Koren - Show Vendor option if Honored Exalted with Violet Eye'); diff --git a/sql/updates/world/2016_02_06_09_world.sql b/sql/updates/world/2016_02_06_09_world.sql new file mode 100644 index 00000000000..bf92b89e1c2 --- /dev/null +++ b/sql/updates/world/2016_02_06_09_world.sql @@ -0,0 +1,3 @@ +-- +-- Fiery Payback mage talent +DELETE FROM `spell_ranks` WHERE `first_spell_id`=44440; diff --git a/sql/updates/world/2016_02_06_10_world.sql b/sql/updates/world/2016_02_06_10_world.sql new file mode 100644 index 00000000000..291bd0bb333 --- /dev/null +++ b/sql/updates/world/2016_02_06_10_world.sql @@ -0,0 +1,19 @@ + +-- Estelle Gendry - Gossip +DELETE FROM `gossip_menu_option` WHERE (`menu_id`=161 AND `id`=0); +INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES +(161, 0, 0, 'I need another set of thieves'' tools.', 2643, 1, 1, 0, 0, 0, 0, NULL, 0); + +-- Estelle Gendry SAI +SET @ENTRY := 6566; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,62,0,100,0,161,0,0,0,11,9949,2,0,0,0,0,7,0,0,0,0,0,0,0,"Estelle Gendry - On Gossip Option 0 Selected - Invoker Cast 'Thieves' Tool Rack Conjure'"), +(@ENTRY,0,1,0,61,0,100,0,161,0,0,0,72,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Estelle Gendry - On Gossip Option 0 Selected - Close Gossip"); + + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=161 AND `SourceEntry`=0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`, `NegativeCondition`) VALUES +(15,161,0,0,0,9,0,1999,0,0,0,"","Show Gossip if player has Quest: Tools of the Trade", 0), +(15,161,0,0,0,2,0,5060,1,1,0,"","Show Gossip if player has not item: Thieves' Tools", 1); diff --git a/sql/updates/world/2016_02_06_11_world.sql b/sql/updates/world/2016_02_06_11_world.sql new file mode 100644 index 00000000000..cea352fec36 --- /dev/null +++ b/sql/updates/world/2016_02_06_11_world.sql @@ -0,0 +1,2 @@ +-- Implement Pandaran Monk's pet abilitys +UPDATE creature_template SET ScriptName = "npc_pandaren_monk" WHERE entry = 36911; diff --git a/sql/updates/world/2016_02_06_12_world.sql b/sql/updates/world/2016_02_06_12_world.sql new file mode 100644 index 00000000000..df550156bc1 --- /dev/null +++ b/sql/updates/world/2016_02_06_12_world.sql @@ -0,0 +1,4 @@ +-- +-- DB/Conditions: Meridith the Mermaiden +UPDATE `conditions` SET `NegativeCondition`=0 WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=6658 AND `SourceEntry`=7916; +UPDATE `conditions` SET `NegativeCondition`=1 WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=6658 AND `SourceEntry`=7917; diff --git a/sql/updates/world/2016_02_06_13_world_335.sql b/sql/updates/world/2016_02_06_13_world_335.sql new file mode 100644 index 00000000000..22bd5596d98 --- /dev/null +++ b/sql/updates/world/2016_02_06_13_world_335.sql @@ -0,0 +1,3 @@ +-- +-- DB/Quest: Avenging The Fallen +UPDATE `quest_template_addon` SET `SpecialFlags`=0 WHERE `Id`=7830; diff --git a/sql/updates/world/2016_02_06_14_world.sql b/sql/updates/world/2016_02_06_14_world.sql new file mode 100644 index 00000000000..7bf05b61c71 --- /dev/null +++ b/sql/updates/world/2016_02_06_14_world.sql @@ -0,0 +1,3 @@ +-- +-- DB/Quest: Venomhide Eggs +UPDATE `quest_template_addon` SET `PrevQuestID`=13850 WHERE `ID`=13887; diff --git a/sql/updates/world/2016_02_07_00_world.sql b/sql/updates/world/2016_02_07_00_world.sql new file mode 100644 index 00000000000..5a49f8fd310 --- /dev/null +++ b/sql/updates/world/2016_02_07_00_world.sql @@ -0,0 +1,5 @@ +-- +-- Creature: Injured Goblin Miner conditional gossip +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceID` = 15 AND `SourceGroup` = 9859 AND `SourceEntry` = 0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(15,9859,0,0,0,9,0,12832,0,0,0,0,'','Injured Goblin Miner - Show gossip option 0 if player has taken quest ID 12832'); diff --git a/sql/updates/world/2016_02_07_01_world_335.sql b/sql/updates/world/2016_02_07_01_world_335.sql new file mode 100644 index 00000000000..5f1d5f4280e --- /dev/null +++ b/sql/updates/world/2016_02_07_01_world_335.sql @@ -0,0 +1,8 @@ +-- DB/Item: "Deprecated BKP "Impact" Shot" +-- Restore correct values for bullet item "Deprecated BKP "Impact" Shot": +UPDATE `item_template` SET `name`= 'Deprecated BKP "Impact" Shot', `Quality`= 1, + `Flags`= 16, `FlagsExtra`= 8192, `BuyCount`= 200, `BuyPrice`= 450, `SellPrice`= 0, + `ItemLevel`= 35, `RequiredLevel`= 30, `stackable`= 1000, `StatsCount`= 0, + `stat_type1`= 0, `stat_value1`= 0, `stat_type2`= 0, `stat_value2`= 0, `dmg_min1`= 9, + `dmg_max1`= 9, `armor`= 0, `delay`= 3000, `bonding`= 0, `MaxDurability`= 0, `BagFamily`= 2, + `RequiredDisenchantSkill`= -1, `DisenchantID`= 0 WHERE `entry`= 3034; diff --git a/sql/updates/world/2016_02_07_02_world_335.sql b/sql/updates/world/2016_02_07_02_world_335.sql new file mode 100644 index 00000000000..ea4608f3a6b --- /dev/null +++ b/sql/updates/world/2016_02_07_02_world_335.sql @@ -0,0 +1,13 @@ +-- +-- DB/Quest: Escape Through Force +DELETE FROM `smart_scripts` WHERE `entryorguid`=3692 AND `source_type`=0; +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 +(3692, 0, 0, 1, 19, 0, 100, 0, 994, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Volcor - On Quest \'Escape Through Force\' Taken - Store Targetlist'), +(3692, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 19, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Volcor - On Quest \'Escape Through Force\' Taken - Set Unit Flags'), +(3692, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 369200, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Volcor - On Quest \'Escape Through Force\' Taken - Run Script'), +(3692, 0, 3, 4, 19, 0, 100, 0, 995, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Volcor - On Quest \'Escape Through Stealth\' Taken - Store Targetlist'), +(3692, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 19, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Volcor - On Quest \'Escape Through Stealth\' Taken - Set Unit Flags'), +(3692, 0, 5, 0, 61, 0, 100, 0, 995, 0, 0, 0, 80, 369201, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Volcor - On Quest \'Escape Through Stealth\' Taken - Run Script'), +(3692, 0, 6, 0, 40, 0, 100, 0, 15, 3692, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Volcor - On Waypoint 15 Reached - Despawn 5 Seconds'); + +UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `entryorguid` IN(369200,369201) AND `source_type`=9 AND `id`IN(2,3); diff --git a/sql/updates/world/2016_02_07_03_world_335.sql b/sql/updates/world/2016_02_07_03_world_335.sql new file mode 100644 index 00000000000..8322ff59c4c --- /dev/null +++ b/sql/updates/world/2016_02_07_03_world_335.sql @@ -0,0 +1,65 @@ +-- +-- Sorrow Wing (3.3.5) loot items +DELETE FROM `creature_loot_template` WHERE `Entry`= 5928; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupID`,`MinCount`,`MaxCount`,`Comment`) VALUES +(5928, 5808,0, 50, 1,1,0,1,1,'Pridewing Venom Sac (Quest item)'), +(5928, 5137,0, 0.8, 0,1,0,1,2,'Bright Eyeball'), +(5928, 1686,0, 10, 0,1,0,1,2,'Bristly Whisker'), +(5928, 7073,0, 88, 0,1,0,1,2,'Broken Fang'), +(5928, 3381,0,0.19, 0,1,0,1,1,'Cross-Stitched Bracers'), +(5928, 1783,0, 0.3, 0,1,0,1,1,'Cross-Stitched Gloves'), +(5928, 2785,0,0.16, 0,1,0,1,1,'Stiff Recurve Bow'), +(5928, 2221,0, 0.2, 0,1,0,1,1,'Targe Shield'), +(5928, 1808,0,0.16, 0,1,0,1,1,'Tough Leather Pants'), +(5928, 5136,0, 0.8, 0,1,0,1,2,'Torn Furry Ear'), +(5928, 9837,0, 0.9, 0,1,0,1,1,'Banded Bracers'), +(5928, 9838,0, 1.3, 0,1,0,1,1,'Banded Cloak'), +(5928, 9839,0, 0.8, 0,1,0,1,1,'Banded Gauntlets'), +(5928, 9840,0, 0.3, 0,1,0,1,1,'Banded Girdle'), +(5928, 6592,0, 1.2, 0,1,0,1,1,'Battleforge Armor'), +(5928, 6590,0, 1.4, 0,1,0,1,1,'Battleforge Boots'), +(5928, 6595,0, 3, 0,1,0,1,1,'Battleforge Gauntlets'), +(5928, 6594,0, 3, 0,1,0,1,1,'Battleforge Girdle'), +(5928, 6596,0, 4, 0,1,0,1,1,'Battleforge Legguards'), +(5928, 6597,0, 3, 0,1,0,1,1,'Battleforge Shoulderguards'), +(5928, 6591,0, 3, 0,1,0,1,1,'Battleforge Wristguards'), +(5928, 6600,0, 3, 0,1,0,1,1,'Dervish Belt'), +(5928, 6601,0, 5, 0,1,0,1,1,'Dervish Boots'), +(5928, 6602,0, 3, 0,1,0,1,1,'Dervish Bracers'), +(5928, 6605,0, 3, 0,1,0,1,1,'Dervish Gloves'), +(5928, 7415,0, 1.5, 0,1,0,1,1,'Dervish Spaulders'), +(5928, 6607,0, 1.3, 0,1,0,1,1,'Dervish Leggings'), +(5928, 6603,0, 2, 0,1,0,1,1,'Dervish Tunic'), +(5928,10404,0, 1.6, 0,1,0,1,1,'Durable Belt'), +(5928, 9820,0, 0.4, 0,1,0,1,1,'Durable Boots'), +(5928, 9821,0, 1.1, 0,1,0,1,1,'Durable Bracers'), +(5928, 9822,0, 1.3, 0,1,0,1,1,'Durable Cape'), +(5928, 9823,0, 0.5, 0,1,0,1,1,'Durable Gloves'), +(5928, 7355,0, 0.8, 0,1,0,1,1,'Elders Bracers'), +(5928, 7356,0, 0.9, 0,1,0,1,1,'Elders Cloak'), +(5928, 7370,0, 0.7, 0,1,0,1,1,'Elders Sash'), +(5928, 4715,0, 6, 0,1,0,1,1,'Emblazoned Cloak'), +(5928, 7410,0, 0.7, 0,1,0,1,1,'Infiltrator Bracers'), +(5928, 7411,0, 0.6, 0,1,0,1,1,'Infiltrator Cloak'), +(5928, 9796,0, 3, 0,1,0,1,1,'Ivycloth Mantle'), +(5928, 9797,0, 3, 0,1,0,1,1,'Ivycloth Pants'), +(5928, 9791,0, 1.3, 0,1,0,1,1,'Ivycloth Tunic'), +(5928, 7416,0, 0.6, 0,1,0,1,1,'Phalanx Bracers'), +(5928, 7419,0, 1.1, 0,1,0,1,1,'Phalanx Cloak'), +(5928, 6612,0, 3, 0,1,0,1,1,'Sages Boots'), +(5928, 6613,0, 4, 0,1,0,1,1,'Sages Bracers'), +(5928,10288,0, 0.8, 0,1,0,1,1,'Sages Circlet'), +(5928, 6614,0, 4, 0,1,0,1,1,'Sages Cloak'), +(5928, 6615,0, 0.9, 0,1,0,1,1,'Sages Gloves'), +(5928, 6617,0, 1.2, 0,1,0,1,1,'Sages Mantle'), +(5928, 6611,0, 2, 0,1,0,1,1,'Sages Sash'), +(5928, 9831,0, 1.8, 0,1,0,1,1,'Scaled Cloak'), +(5928, 9827,0, 0.8, 0,1,0,1,1,'Scaled Leather Belt'), +(5928, 9828,0, 0.9, 0,1,0,1,1,'Scaled Leather Boots'), +(5928, 9829,0, 1.6, 0,1,0,1,1,'Scaled Leather Bracers'), +(5928, 9832,0, 0.9, 0,1,0,1,1,'Scaled Leather Gloves'), +(5928, 9806,0, 3, 0,1,0,1,1,'Superior Gloves'), +(5928, 9808,0, 3, 0,1,0,1,1,'Superior Leggings'), +(5928, 9807,0, 3, 0,1,0,1,1,'Superior Shoulders'), +(5928, 9809,0, 4, 0,1,0,1,1,'Superior Tunic'), +(5928,15539,0,0.03, 0,1,0,1,1,'Wicked Chain Waistband'); diff --git a/sql/updates/world/2016_02_07_04_world.sql b/sql/updates/world/2016_02_07_04_world.sql new file mode 100644 index 00000000000..3a3a7a393d7 --- /dev/null +++ b/sql/updates/world/2016_02_07_04_world.sql @@ -0,0 +1,67 @@ +-- DB/Quest: The Collapse +DELETE FROM `event_scripts` WHERE `id`=16929; +INSERT INTO `event_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`) VALUES +(16929, 10, 8, 25742, 0, 0, 0, 0, 0, 0), +(16929, 3, 10, 25742, 360000, 0, 3517.290039, 4538.782715, -12.983689, 4.428759), +(16929, 7, 10, 25629, 360000, 0, 3492.105469, 4478.011719, -12.997340, 0.210166), +(16929, 7, 10, 25652, 360000, 0, 3507.666260, 4509.300293, -14.792936, 0.945820), +(16929, 7, 10, 25652, 360000, 0, 3505.954834, 4506.928223, -14.817587, 0.945820), +(16929, 7, 10, 25652, 360000, 0, 3505.296631, 4506.016113, -14.837238, 0.945820), +(16929, 7, 10, 25652, 360000, 0, 3504.330322, 4504.676758, -14.837238, 0.945820); + +-- Alluvius SAI +SET @ENTRY := 25742; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,54,0,100,0,0,0,0,0,53,1,25742,0,0,0,0,1,0,0,0,0,0,0,0,"Alluvius - On Just Summoned - Start Waypoint"), +(@ENTRY,0,1,0,40,0,100,0,1,25742,0,0,80,@ENTRY*100+00,2,0,0,0,0,1,0,0,0,0,0,0,0,"Alluvius - On Waypoint 1 Reached - Run Script"); + +DELETE FROM `waypoints` WHERE `entry`=25742; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(25742, 1, 3511.336426, 4519.295898, -11.937509, 'Alluvius'); + +-- Actionlist SAI +SET @ENTRY := 2574200; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY 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,9,0,0,0,0,100,0,5000,5000,5000,5000,45,1,1,0,0,0,0,9,25652,0,25,0,0,0,0,"Alluvius - On Script - Set Data 1 1"), +(@ENTRY,9,1,0,0,0,100,0,0,0,0,0,5,36,0,0,0,0,0,1,0,0,0,0,0,0,0,"Alluvius - On Script - Play Emote 36"), +(@ENTRY,9,2,0,0,0,100,0,10000,10000,10000,10000,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Alluvius - On Script - Despawn Instant"); + +-- Nerub'ar Scarab SAI +SET @ENTRY := 25652; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,38,0,100,0,1,1,0,0,53,0,25652,0,0,0,0,1,0,0,0,0,0,0,0,"Nerub'ar Scarab - On Data Set 1 1 - Start Waypoint"), +(@ENTRY,0,1,0,40,0,100,0,6,25652,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Nerub'ar Scarab - On Waypoint 6 Reached - Despawn In 1000 ms"); + +DELETE FROM `waypoints` WHERE `entry`=25652; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(25652, 1, 3509.71, 4510.5, -14.6752, 'Nerub\'ar Scarab'), +(25652, 2, 3515.16, 4512.57, -13.4052, 'Nerub\'ar Scarab'), +(25652, 3, 3520.58, 4511.77, -12.5632, 'Nerub\'ar Scarab'), +(25652, 4, 3530.14, 4507.88, -12.9948, 'Nerub\'ar Scarab'), +(25652, 5, 3536.34, 4508.6, -12.9948, 'Nerub\'ar Scarab'), +(25652, 6, 3553.48, 4510.25, -12.9948, 'Nerub\'ar Scarab'); + +-- Lord Kryxix SAI +SET @ENTRY := 25629; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,54,0,100,0,0,0,0,0,53,1,25629,0,0,0,2,1,0,0,0,0,0,0,0,"Lord Kryxix - On Just Summoned - Start Waypoint"), +(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Lord Kryxix - On Just Summoned - Say Line 0"), +(@ENTRY,0,2,0,40,0,100,0,4,25629,0,0,49,0,0,0,0,0,0,21,80,0,0,0,0,0,0,"Lord Kryxix - On Waypoint 4 Reached - Start Attacking"); + +DELETE FROM `waypoints` WHERE `entry`=25629; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(25629, 1, 3529.33, 4490.55, -12.9951, 'Lord Kryxix'), +(25629, 2, 3534.51, 4509.94, -12.9951, 'Lord Kryxix'), +(25629, 3, 3533.52, 4527.86, -12.9951, 'Lord Kryxix'), +(25629, 4, 3512.91, 4539.59, -12.987, 'Lord Kryxix'); + +DELETE FROM `creature_text` WHERE `entry`=25629; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextId`) VALUES +(25629, 0, 0, 'Foolish elemental slave! You an your master will pay for your medding!', 14, 0, 100, 0, 0, 0, 'Lord Kryxix', 24956); diff --git a/sql/updates/world/2016_02_07_05_world_335.sql b/sql/updates/world/2016_02_07_05_world_335.sql new file mode 100644 index 00000000000..794b3d80411 --- /dev/null +++ b/sql/updates/world/2016_02_07_05_world_335.sql @@ -0,0 +1,4 @@ +-- +-- Wotlk armor value +UPDATE `creature_classlevelstats` SET `basearmor`=10643 WHERE `level`=83 AND `class`=1; +UPDATE `creature_classlevelstats` SET `basearmor`=10643 WHERE `level`=83 AND `class`=2; diff --git a/sql/updates/world/2016_02_07_06_world.sql b/sql/updates/world/2016_02_07_06_world.sql new file mode 100644 index 00000000000..31ecf826660 --- /dev/null +++ b/sql/updates/world/2016_02_07_06_world.sql @@ -0,0 +1,71 @@ +-- +-- Diremaul North Rndmemotes +-- Gordok Mauler SAI +SET @ENTRY := 11442; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=4; +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,4,0,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Mauler - Out of Combat - Play Random Emote (1, 11, 391)"); + +-- Gordok Mage-Lord SAI +SET @ENTRY := 11444; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=7; +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,7,0,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Mage Lord - Out of Combat - Play Random Emote (1, 11, 391)"); + +-- Gordok Brute SAI +SET @ENTRY := 11441; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=6; +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,6,0,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Brute - Out of Combat - Play Random Emote (1, 11, 391)"); + +-- Stomper Kreeg SAI +SET @ENTRY := 14322; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=6; +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,6,0,1,0,100,0,1000,1000,20000,20000,80,@ENTRY*100+00,2,0,0,0,0,1,0,0,0,0,0,0,0,"Stomper Kreeg - Out of Combat - Run Script"); +-- Actionlist SAI +SET @ENTRY := 1432200; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY 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,9,0,0,0,0,100,0,1000,1000,0,0,90,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Stomper Kreeg - On Script - Set Flag Standstate Sleep"), +(@ENTRY,9,1,0,0,0,100,0,8000,8000,0,0,91,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Stomper Kreeg - On Script - Remove Flag Standstate Sleep"), +(@ENTRY,9,2,0,0,0,100,0,2000,2000,0,0,17,10,0,0,0,0,0,1,0,0,0,0,0,0,0,"Stomper Kreeg - On Script - Set Emote State 10"); + +-- Gordok Bushwacker SAI +SET @ENTRY := 14351; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=3; +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,3,0,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Bushwacker - Out of Combat - Play Random Emote (1, 11, 391)"); + +-- Gordok Reaver SAI +SET @ENTRY := 11450; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=3; +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,3,0,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Reaver - Out of Combat - Play Random Emote (1, 11, 391)"); + +-- Gordok Warlock SAI +SET @ENTRY := 11448; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=7; +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,7,0,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Warlock - Out of Combat - Play Random Emote (1, 11, 391)"); + +-- Gordok Spirit SAI +SET @ENTRY := 11446; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Spirit - Out of Combat - Play Random Emote (1, 11, 397)"); + +-- Gordok Captain SAI +SET @ENTRY := 11445; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=4; +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,4,0,1,0,100,0,3000,3000,5000,10000,10,1,11,391,0,0,0,1,0,0,0,0,0,0,0,"Gordok Captain - Out of Combat - Play Random Emote (1, 11, 397)"); diff --git a/sql/updates/world/2016_02_07_07_world_335.sql b/sql/updates/world/2016_02_07_07_world_335.sql new file mode 100644 index 00000000000..af323a47bda --- /dev/null +++ b/sql/updates/world/2016_02_07_07_world_335.sql @@ -0,0 +1,6 @@ +-- +-- Remove skinning_loot_template 100008 from non-skinnable beasts: +UPDATE `creature_template` SET `skinloot`= 0 WHERE `skinloot`= 100008 AND `entry` NOT IN (1042,1043,1069); + +UPDATE `skinning_loot_template` SET `Comment`='Light Leather' WHERE `Item`= 2318 AND `Entry` IN (3098,3124); +UPDATE `skinning_loot_template` SET `Comment`='Ruined Leather Scraps' WHERE `Item`= 2934 AND `Entry` IN (3098,3124); diff --git a/sql/updates/world/2016_02_07_08_world_335.sql b/sql/updates/world/2016_02_07_08_world_335.sql new file mode 100644 index 00000000000..2b78a317f95 --- /dev/null +++ b/sql/updates/world/2016_02_07_08_world_335.sql @@ -0,0 +1,72 @@ +-- DB/Quest: Urok Doomhowl - Summonscript +SET @MAGUS = 10602; +SET @ENFORCER = 10601; +SET @UROK = 10584; +SET @OGUID = 21202; + +UPDATE `creature_template` SET `faction`=40 WHERE `entry`IN(10601,10602); + + +DELETE FROM `gameobject` WHERE `id` IN(175571,175584); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES +(@OGUID+0, 175571, 229, 3, 1, -47.90947, -369.0891, 51.54253, 1.378809, 0, 0, 0, 1, -1, 255, 1), -- 175571 (Area: 0) +(@OGUID+1, 175571, 229, 3, 1, -27.88039, -385.8911, 48.50668, 3.700105, 0, 0, 0, 1, -1, 255, 1), -- 175571 (Area: 0) +(@OGUID+2, 175571, 229, 3, 1, -13.72754, -384.8161, 48.97457, 3.68265, 0, 0, 0, 1, -1, 255, 1), -- 175571 (Area: 0) +(@OGUID+3, 175571, 229, 3, 1, -12.36894, -376.4748, 49.335, 5.044002, 0, 0, 0, 1, -1, 255, 1), -- 175571 (Area: 0) +(@OGUID+4, 175571, 229, 3, 1, -24.88243, -369.6189, 49.70592, 3.403396, 0, 0, 0, 1, -1, 255, 1), -- 175571 (Area: 0) +(@OGUID+5, 175584, 229, 3, 1, -14.3415, -395.7287, 48.53813, 2.862335, 0, 0, 0, 1, -1, 255, 0), -- 175584 (Area: 0) +(@OGUID+6, 175571, 229, 3, 1, -34.54366, -370.2325, 50.3396, 5.358161, 0, 0, 0, 1, -1, 255, 1); -- 175571 (Area: 0) + +UPDATE `gameobject` SET `position_y`=-395.729 WHERE `guid`=99791; + +DELETE FROM `event_scripts` WHERE `id`=4845; +INSERT INTO `event_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`) VALUES +(4845, 0, 9, @OGUID+0, 66, 0, 0, 0, 0, 0), +(4845, 0, 9, @OGUID+1, 66, 0, 0, 0, 0, 0), +(4845, 0, 9, @OGUID+2, 66, 0, 0, 0, 0, 0), +(4845, 0, 9, @OGUID+3, 66, 0, 0, 0, 0, 0), +(4845, 0, 9, @OGUID+4, 66, 0, 0, 0, 0, 0), +(4845, 0, 9, @OGUID+5, 66, 0, 0, 0, 0, 0), +(4845, 0, 9, @OGUID+6, 66, 0, 0, 0, 0, 0), + +(4845, 5, 10, @MAGUS, 900000, 0, -33.04, -385.57, 48.60, 5.98), +(4845, 5, 10, @ENFORCER, 900000, 0, -16.12, -376.99, 49.20, 4.89), +(4845, 5, 10, @ENFORCER, 900000, 0, -25.13, -376.60, 48.94, 5.17), +(4845, 13, 10, @MAGUS, 900000, 0, -14.93, -381.99, 49.04, 4.70), +(4845, 28, 10, @MAGUS, 900000, 0, -35.47, -371.36, 50.22, 4.79), +(4845, 28, 10, @ENFORCER, 900000, 0, -47.54, -368.11, 51.67, 5.70), +(4845, 42, 10, @MAGUS, 900000, 0, -33.04, -385.57, 48.60, 5.98), +(4845, 42, 10, @MAGUS, 900000, 0, -14.58, -375.16, 49.31, 4.73), +(4845, 42, 10, @ENFORCER, 900000, 0, -24.91, -376.41, 48.95, 4.67), +(4845, 58, 10, @MAGUS, 900000, 0, -47.54, -368.11, 51.67, 5.70), +(4845, 66, 10, @UROK, 900000, 0, -23.97, -391.89, 48.58, 1.68); + +-- Urok Ogre Magus SAI +SET @ENTRY := 10602; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,0,0,100,2,0,0,3400,4700,11,15979,64,0,0,0,0,2,0,0,0,0,0,0,0,"Urok Ogre Magus - In Combat - Cast 'Arcane Bolt' (Normal Dungeon)"), +(@ENTRY,0,1,2,2,0,100,3,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Urok Ogre Magus - Between 0-15% Health - Flee For Assist (No Repeat) (Normal Dungeon)"), +(@ENTRY,0,2,0,61,0,100,3,0,15,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Urok Ogre Magus - Between 0-15% Health - Say Line 0 (No Repeat) (Normal Dungeon)"), +(@ENTRY,0,3,0,16,0,100,2,6742,30,10000,15000,11,6742,0,0,0,0,0,7,0,0,0,0,0,0,0,"Urok Ogre Magus - On Friendly Unit Missing Buff 'Bloodlust' - Cast 'Bloodlust' (Normal Dungeon)"), +(@ENTRY,0,4,0,0,0,100,2,3000,4000,5000,8000,11,13747,1,0,0,0,0,2,0,0,0,0,0,0,0,"Urok Ogre Magus - In Combat - Cast 'Slow' (Normal Dungeon)"), +(@ENTRY,0,5,0,54,0,100,1,0,0,0,0,11,64195,2,0,0,0,0,1,0,0,0,0,0,0,0,"Urok Ogre Magus - On Just Summoned - Cast 'Simple Teleport' (No Repeat)"), +(@ENTRY,0,6,0,54,0,100,1,0,0,0,0,49,0,0,0,0,0,0,21,50,0,0,0,0,0,0,"Urok Ogre Magus - On Just Summoned - Start Attacking (No Repeat)"); + +-- NPC talk text insert +SET @ENTRY := 10602; +DELETE FROM `creature_text` WHERE `entry`=@ENTRY; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`, `BroadcastTextId`) VALUES +(@ENTRY,0,0, '%s attempts to run away in fear!',16,0,100,0,0,0, 'combat Flee', 1150); + +-- Urok Enforcer SAI +SET @ENTRY := 10601; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +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,0,0,100,2,3000,5000,3000,6000,11,16856,2,0,0,0,0,2,0,0,0,0,0,0,0,"Urok Enforcer - In Combat - Cast 'Mortal Strike' (Normal Dungeon)"), +(@ENTRY,0,1,0,0,0,100,1,0,1000,6000,7000,11,11084,2,0,0,0,0,2,0,0,0,0,0,0,0,"Urok Enforcer - In Combat - Cast 'Shock' (No Repeat)"), +(@ENTRY,0,2,0,0,0,100,2,8000,8000,12000,17000,11,14516,2,0,0,0,0,2,0,0,0,0,0,0,0,"Urok Enforcer - In Combat - Cast 'Strike' (Normal Dungeon)"), +(@ENTRY,0,3,0,54,0,100,1,0,0,0,0,11,64195,2,0,0,0,0,1,0,0,0,0,0,0,0,"Urok Enforcer - On Just Summoned - Cast 'Simple Teleport' (No Repeat)"), +(@ENTRY,0,4,0,54,0,100,1,0,0,0,0,49,0,0,0,0,0,0,21,50,0,0,0,0,0,0,"Urok Enforcer - On Just Summoned - Start Attacking (No Repeat)"); diff --git a/sql/updates/world/2016_02_07_09_world.sql b/sql/updates/world/2016_02_07_09_world.sql new file mode 100644 index 00000000000..8057534fbb8 --- /dev/null +++ b/sql/updates/world/2016_02_07_09_world.sql @@ -0,0 +1,6 @@ +-- +-- Solace of the Defeated/Solace of the Fallen (Normal/Heroic) proc fix +DELETE FROM `spell_proc_event` WHERE `entry` IN (67698,67752); +INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES +(67698, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(67752, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0); diff --git a/sql/updates/world/2016_02_07_10_world.sql b/sql/updates/world/2016_02_07_10_world.sql new file mode 100644 index 00000000000..c2e59c15d9c --- /dev/null +++ b/sql/updates/world/2016_02_07_10_world.sql @@ -0,0 +1,7 @@ +-- DB/Item: Bryntroll, the Bone Arbiter +UPDATE `item_template` SET `spellcooldown_1`=-1 WHERE `entry`=50415; +UPDATE `item_template` SET `spellppmRate_1`=2 WHERE `entry` IN (50415,50709); +DELETE FROM `spell_bonus_data` WHERE `entry` IN (71839,71838); +INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `ap_dot_bonus`, `comments`) VALUES +(71839,0,0,0,0,'Drain Life'), +(71838,0,0,0,0,'Drain Life'); diff --git a/sql/updates/world/2016_02_07_11_world.sql b/sql/updates/world/2016_02_07_11_world.sql new file mode 100644 index 00000000000..c40b663c205 --- /dev/null +++ b/sql/updates/world/2016_02_07_11_world.sql @@ -0,0 +1,29 @@ +-- +-- Razorthorn Ravager SAI +SET @ENTRY := 24922; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id` >=3; +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,3,4,8,0,100,0,44935,0,0,0,69,0,0,0,0,0,0,20,187073,30,0,0,0,0,0,"Razorthorn Ravager - On Spellhit 'Expose Razorthorn Root' - Move To Closest Gameobject 'Razorthorn Dirt Mound'"), +(@ENTRY,0,4,5,61,0,100,0,44935,0,0,0,45,1,1,0,0,0,0,20,187073,30,0,0,0,0,0,"Razorthorn Ravager - On Spellhit 'Expose Razorthorn Root' - Set Data 1 1"), +(@ENTRY,0,5,0,61,0,100,0,44935,0,0,0,80,@ENTRY*100,2,0,0,0,0,1,0,0,0,0,0,0,0,"Razorthorn Ravager - On Spellhit 'Expose Razorthorn Root' - Run Script"); + +-- Actionlist SAI +SET @ENTRY := 2492200; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY 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,9,0,0,0,0,100,0,3000,3000,0,0,11,44941,2,0,0,0,0,1,0,0,0,0,0,0,0,"On Script - Cast 'Summon Razorthorn Root'"); + +-- Razorthorn Dirt Mound SAI +SET @ENTRY := 187073; +UPDATE `gameobject_template` SET `AIName`="SmartGameObjectAI" WHERE `entry`=@ENTRY; +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,38,0,100,0,1,1,0,0,80,18707300,2,0,0,0,0,1,0,0,0,0,0,0,0,"Razorthorn Dirt Mound - On Data Set 1 1 - Run Script"); + +-- Actionlist SAI +SET @ENTRY := 18707300; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY 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,9,0,0,0,0,100,0,10,10,0,0,44,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"On Script - Set Phase 2"), +(@ENTRY,9,1,0,0,0,100,0,120000,120000,0,0,44,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"On Script - Set Phase 1"); diff --git a/sql/updates/world/2016_02_07_12_world.sql b/sql/updates/world/2016_02_07_12_world.sql new file mode 100644 index 00000000000..c85265d857d --- /dev/null +++ b/sql/updates/world/2016_02_07_12_world.sql @@ -0,0 +1,29 @@ +-- DB/Quest: Drop It then Rock It! +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (24640, 24015); + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (24640, 24015) AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (2464000, 24015*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 +(24640, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 80, 2464000, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - just summoned - Action list'), +(24640, 0, 1, 0, 0, 0, 100, 0, 1000, 1000, 2000, 2000, 19, 2048, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - IC- remove unit flag'), +(24640, 0, 2, 0, 1, 0, 100, 0, 1000, 1000, 2000, 2000, 19, 2048, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - OOC - remove unit flag'), +(2464000, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - Action list - Set react passif'), +(2464000, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - Action list - Set root'), +(2464000, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - Action list - Set health regen off'), +(2464000, 9, 3, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 12, 24015, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 1483.793091, -5352.790039, 192.023712, 1.431473, 'Alliance Banner - Action list - Summon Winterskorn Defender'), +(2464000, 9, 4, 0, 0, 0, 100, 0, 20000, 20000, 0, 0, 12, 24015, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 1460.096436, -5342.498535, 195.991714, 0.339768, 'Alliance Banner - Action list - Summon Winterskorn Defender'), +(2464000, 9, 5, 0, 0, 0, 100, 0, 20000, 20000, 0, 0, 12, 24015, 4, 60000, 0, 1, 0, 8, 0, 0, 0, 1468.549561, -5300.886230, 195.633850, 5.760584, 'Alliance Banner - Action list - Summon Winterskorn Defender'), +(2464000, 9, 6, 0, 0, 0, 100, 0, 20000, 20000, 0, 0, 11, 44124, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - Action list - Quest Credit'), +(2464000, 9, 7, 0, 0, 0, 100, 0, 100, 100, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Banner - Action list - Despawn'), + +(24015, 0, 0, 0, 0, 0, 100, 0, 3000, 5000, 5000, 7000, 11, 15496, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,0,'Winterskorn Defender - IC - Cast Cleave'), +(24015, 0, 1, 0, 0, 0, 100, 0, 5000, 10000, 10000, 15000, 11, 18812, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,0,'Winterskorn Defender - IC - Cast Knockdown'), +(24015, 0, 2, 0, 54, 0, 100, 0, 0, 0, 0, 0, 80, 24015*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,0,'Winterskorn Defender - Just sumoned - Action list'), +(24015*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, 'Winterskorn Defender - Action list - Talk'), +(24015*100, 9, 1, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1499.201538, -5319.049316, 195.300629, 0.451290, 'Winterskorn Defender - Action list - move to pos'); + +DELETE FROM `creature_text` WHERE `entry` IN (24015); +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(24015, 0, 0, 'Your remains will be fed TO the sharks of Daggercap!', 14, 0, 100, 0, 0, 0, 23619, 0, 'Winterskorn Defender'), +(24015, 0, 1, 'The sacrifices NOW bring themselves TO us? Have you NO sense!?', 14, 0, 100, 0, 0, 0, 23618, 0, 'Winterskorn Defender'), +(24015, 0, 2, 'You dare challenge Winterskorn?! I will impale you ON your own puny flag!', 14, 0, 100, 0, 0, 0, 23617, 0, 'Winterskorn Defender'); diff --git a/sql/updates/world/2016_02_07_13_world.sql b/sql/updates/world/2016_02_07_13_world.sql new file mode 100644 index 00000000000..612fef2274d --- /dev/null +++ b/sql/updates/world/2016_02_07_13_world.sql @@ -0,0 +1,413 @@ +DELETE FROM `creature_formations` WHERE `leaderGUID`=81531; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(81531, 81531, 0, 0, 1), +(81531, 81532, 2, 310, 2), +(81531, 81530, 2, 40, 2); + +-- Pathing for Sul'lithuz Sandcrawler Entry: 8095 'TDB FORMAT' +SET @NPC := 81531; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1843.703,`position_y`=1193.693,`position_z`=9.399462 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1843.703,1193.693,9.399462,0,0,0,0,100,0), -- 09:47:28 +(@PATH,2,1853.01,1172.636,11.64427,0,0,0,0,100,0), -- 09:47:34 +(@PATH,3,1866.308,1173.398,9.788191,0,0,0,0,100,0), -- 09:47:39 +(@PATH,4,1872.583,1166.405,9.729328,0,0,0,0,100,0), -- 09:47:46 +(@PATH,5,1871.299,1156.692,10.96628,0,0,0,0,100,0), -- 09:47:47 +(@PATH,6,1871.138,1151.655,11.56361,0,0,0,0,100,0), -- 09:47:52 +(@PATH,7,1868.171,1128.227,15.75623,0,0,0,0,100,0), -- 09:47:54 +(@PATH,8,1867.59,1117.35,10.0786,0,0,0,0,100,0), -- 09:48:03 +(@PATH,9,1867.531,1112.539,9.42872,0,0,0,0,100,0), -- 09:48:08 +(@PATH,10,1869.916,1103.111,9.419256,0,0,0,0,100,0), -- 09:48:11 +(@PATH,11,1885.483,1101.25,12.69302,0,0,0,0,100,0), -- 09:48:15 +(@PATH,12,1895.659,1106.266,13.07423,0,0,0,0,100,0), -- 09:48:20 +(@PATH,13,1899.068,1114.828,11.51437,0,0,0,0,100,0), -- 09:48:24 +(@PATH,14,1897.243,1124.311,9.819095,0,0,0,0,100,0), -- 09:48:27 +(@PATH,15,1895.536,1129.667,9.065989,0,0,0,0,100,0), -- 09:48:32 +(@PATH,16,1892.813,1140.595,9.251789,0,0,0,0,100,0), -- 09:48:36 +(@PATH,17,1895.494,1145.588,9.251789,0,0,0,0,100,0), -- 09:48:38 +(@PATH,18,1912.283,1152.97,9.721882,0,0,0,0,100,0), -- 09:48:42 +(@PATH,19,1918.871,1158.545,10.8794,0,0,0,0,100,0), -- 09:48:45 +(@PATH,20,1920.596,1160.717,11.4007,0,0,0,0,100,0), -- 09:48:49 +(@PATH,21,1918.562,1168.737,10.45978,0,0,0,0,100,0), -- 09:48:51 +(@PATH,22,1911.641,1178.46,9.442093,0,0,0,0,100,0), -- 09:48:55 +(@PATH,23,1909.036,1182.083,9.251789,0,0,0,0,100,0), -- 09:48:59 +(@PATH,24,1902.43,1192.171,9.225698,0,0,0,0,100,0), -- 09:49:02 +(@PATH,25,1901.362,1201.077,9.209784,0,0,0,0,100,0), -- 09:49:06 +(@PATH,26,1904.497,1211.609,9.074608,0,0,0,0,100,0), -- 09:49:10 +(@PATH,27,1909.629,1219.002,9.34004,0,0,0,0,100,0), -- 09:49:13 +(@PATH,28,1893.508,1226.117,9.880462,0,0,0,0,100,0), -- 09:49:16 +(@PATH,29,1882.001,1223.113,9.380271,0,0,0,0,100,0), -- 09:49:20 +(@PATH,30,1874.822,1220.509,9.350756,0,0,0,0,100,0), -- 09:49:27 +(@PATH,31,1857.651,1200.784,9.280435,0,0,0,0,100,0), -- 09:49:33 +(@PATH,32,1856.005,1198.657,9.078081,0,0,0,0,100,0); -- 09:49:37 +-- 0x1C16F41A2007E7C00020100000370E69 .go 1843.703 1193.693 9.399462 + +DELETE FROM `creature_formations` WHERE `leaderGUID`=81581; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(81581, 81581, 0, 0, 1), +(81581, 81583, 2, 310, 2), +(81581, 81582, 2, 40, 2); + +-- Pathing for Sul'lithuz Sandcrawler Entry: 8095 'TDB FORMAT' +SET @NPC := 81581; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1675.997,`position_y`=1232.113,`position_z`=8.987229 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1675.997,1232.113,8.987229,0,0,0,0,100,0), -- 09:41:26 +(@PATH,2,1664.236,1222.652,9.116917,0,0,0,0,100,0), -- 09:41:35 +(@PATH,3,1652.006,1213.038,9.562586,0,0,0,0,100,0), -- 09:41:42 +(@PATH,4,1637.653,1203.694,9.001921,0,0,0,0,100,0), -- 09:41:48 +(@PATH,5,1629.32,1192.027,9.076674,0,0,0,0,100,0), -- 09:41:52 +(@PATH,6,1625.091,1172.658,10.96705,0,0,0,0,100,0), -- 09:41:57 +(@PATH,7,1626.96,1164.297,9.917568,0,0,0,0,100,0), -- 09:42:02 +(@PATH,8,1629.299,1156.629,9.361486,0,0,0,0,100,0), -- 09:42:07 +(@PATH,9,1636.125,1149.019,9.258444,0,0,0,0,100,0), -- 09:42:11 +(@PATH,10,1643.561,1144.494,9.247617,0,0,0,0,100,0), -- 09:42:13 +(@PATH,11,1655.12,1139.766,9.255368,0,0,0,0,100,0), -- 09:42:18 +(@PATH,12,1661.656,1140.804,9.253,0,0,0,0,100,0), -- 09:42:20 +(@PATH,13,1668.802,1147.428,9.253811,0,0,0,0,100,0), -- 09:42:24 +(@PATH,14,1676.315,1157.238,9.244503,0,0,0,0,100,0), -- 09:42:29 +(@PATH,15,1685.79,1169.683,9.239374,0,0,0,0,100,0), -- 09:42:34 +(@PATH,16,1692.607,1177.311,9.237229,0,0,0,0,100,0), -- 09:42:37 +(@PATH,17,1699.878,1182.912,9.244503,0,0,0,0,100,0), -- 09:42:41 +(@PATH,18,1713.954,1196.856,10.56152,0,0,0,0,100,0), -- 09:42:44 +(@PATH,19,1723.85,1206.719,12.34495,0,0,0,0,100,0), -- 09:42:49 +(@PATH,20,1727.292,1213.318,11.02762,0,0,0,0,100,0), -- 09:42:54 +(@PATH,21,1729.919,1225.602,9.878916,0,0,0,0,100,0), -- 09:42:57 +(@PATH,22,1731.314,1244.776,10.92413,0,0,0,0,100,0), -- 09:43:04 +(@PATH,23,1728.812,1260.437,12.06071,0,0,0,0,100,0), -- 09:43:10 +(@PATH,24,1727.822,1263.875,12.22826,0,0,0,0,100,0), -- 09:43:15 +(@PATH,25,1711.478,1264.379,11.21737,0,0,0,0,100,0), -- 09:43:20 +(@PATH,26,1713.401,1265.821,11.66045,0,0,0,0,100,0), -- 09:43:25 +(@PATH,27,1716.675,1267.497,11.77379,0,0,0,0,100,0), -- 09:43:28 +(@PATH,28,1729.911,1256.21,11.58052,0,0,0,0,100,0), -- 09:43:32 +(@PATH,29,1731.174,1235.849,10.49311,0,0,0,0,100,0), -- 09:43:38 +(@PATH,30,1731.024,1231.776,10.09937,0,0,0,0,100,0), -- 09:43:44 +(@PATH,31,1725.16,1208.78,11.51352,0,0,0,0,100,0), -- 09:43:50 +(@PATH,32,1720.919,1203.628,11.9393,0,0,0,0,100,0), -- 09:43:54 +(@PATH,33,1709.198,1192.878,9.553079,0,0,0,0,100,0), -- 09:43:57 +(@PATH,34,1706.149,1190.558,9.102777,0,0,0,0,100,0), -- 09:44:02 +(@PATH,35,1699.551,1182.485,9.240244,0,0,0,0,100,0), -- 09:44:06 +(@PATH,36,1692.22,1177.217,9.237229,0,0,0,0,100,0), -- 09:44:10 +(@PATH,37,1685.667,1169.501,9.244503,0,0,0,0,100,0), -- 09:44:13 +(@PATH,38,1675.968,1157.188,9.250818,0,0,0,0,100,0), -- 09:44:19 +(@PATH,39,1668.579,1147.053,9.257448,0,0,0,0,100,0), -- 09:44:23 +(@PATH,40,1661.406,1140.643,9.253025,0,0,0,0,100,0), -- 09:44:26 +(@PATH,41,1655.021,1139.765,9.252222,0,0,0,0,100,0), -- 09:44:29 +(@PATH,42,1643.208,1144.652,9.247617,0,0,0,0,100,0), -- 09:44:34 +(@PATH,43,1635.916,1149.401,9.287905,0,0,0,0,100,0), -- 09:44:37 +(@PATH,44,1626.234,1167.293,10.93676,0,0,0,0,100,0), -- 09:44:41 +(@PATH,45,1623.834,1178.643,9.497221,0,0,0,0,100,0), -- 09:44:45 +(@PATH,46,1623.34,1181.442,9.245241,0,0,0,0,100,0), -- 09:44:49 +(@PATH,47,1629.774,1192.288,9.232269,0,0,0,0,100,0), -- 09:44:54 +(@PATH,48,1637.901,1204.049,9.117538,0,0,0,0,100,0), -- 09:44:59 +(@PATH,49,1652.142,1213.244,9.560089,0,0,0,0,100,0), -- 09:45:05 +(@PATH,50,1664.489,1222.979,8.98844,0,0,0,0,100,0); -- 09:45:11 +-- 0x1C16F41A2007E7C00020100000370E6A .go 1675.997 1232.113 8.987229 + +DELETE FROM `creature_formations` WHERE `leaderGUID`=81587; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(81587, 81587, 0, 0, 1), +(81587, 81601, 2, 310, 2), +(81587, 81588, 2, 40, 2); + +-- Pathing for Sul'lithuz Sandcrawler Entry: 8095 'TDB FORMAT' +SET @NPC := 81587; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1600.69,`position_y`=1126.462,`position_z`=12.41756 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1600.69,1126.462,12.41756,0,0,0,0,100,0), -- 09:39:21 +(@PATH,2,1598.398,1122.63,11.59186,0,0,0,0,100,0), -- 09:39:26 +(@PATH,3,1593.572,1109.275,10.02831,0,0,0,0,100,0), -- 09:39:30 +(@PATH,4,1592.7,1107.054,9.462294,0,0,0,0,100,0), -- 09:39:33 +(@PATH,5,1588.454,1097.563,9.271156,0,0,0,0,100,0), -- 09:39:38 +(@PATH,6,1583.779,1087.09,9.251778,0,0,0,0,100,0), -- 09:39:42 +(@PATH,7,1577.599,1072.18,9.251631,0,0,0,0,100,0), -- 09:39:48 +(@PATH,8,1572.181,1059.509,9.217859,0,0,0,0,100,0), -- 09:39:53 +(@PATH,9,1566.106,1048.195,9.189631,0,0,0,0,100,0), -- 09:39:58 +(@PATH,10,1561.209,1038.885,9.217978,0,0,0,0,100,0), -- 09:40:01 +(@PATH,11,1554.598,1029.24,9.240252,0,0,0,0,100,0), -- 09:40:05 +(@PATH,12,1551.634,1018.51,9.219183,0,0,0,0,100,0), -- 09:40:10 +(@PATH,13,1564.537,989.8197,10.66319,0,0,0,0,100,0), -- 09:40:17 +(@PATH,14,1573.23,992.3699,9.814154,0,0,0,0,100,0), -- 09:40:23 +(@PATH,15,1585.951,1004.943,9.409527,0,0,0,0,100,0), -- 09:40:32 +(@PATH,16,1583.934,1017.611,9.291721,0,0,0,0,100,0), -- 09:40:36 +(@PATH,17,1570.175,1035.014,9.251503,0,0,0,0,100,0), -- 09:40:45 +(@PATH,18,1572.35,1046.109,9.251484,0,0,0,0,100,0), -- 09:40:48 +(@PATH,19,1579.434,1059.837,9.251631,0,0,0,0,100,0), -- 09:40:55 +(@PATH,20,1580.449,1072.369,9.251754,0,0,0,0,100,0), -- 09:40:59 +(@PATH,21,1584.936,1085.009,9.251778,0,0,0,0,100,0), -- 09:41:04 +(@PATH,22,1588.972,1094.886,9.251778,0,0,0,0,100,0), -- 09:41:08 +(@PATH,23,1596.379,1107.74,9.251778,0,0,0,0,100,0), -- 09:41:13 +(@PATH,24,1603.914,1114.008,9.251778,0,0,0,0,100,0), -- 09:41:16 +(@PATH,25,1613.207,1117.757,9.251778,0,0,0,0,100,0), -- 09:41:20 +(@PATH,26,1622.645,1121.169,9.251778,0,0,0,0,100,0), -- 09:41:24 +(@PATH,27,1626.143,1131.002,9.106209,0,0,0,0,100,0), -- 09:41:27 +(@PATH,28,1613.163,1134.797,10.02532,0,0,0,0,100,0); -- 09:41:31 +-- 0x1C16F41A2007E7C00020100000B70E69 .go 1600.69 1126.462 12.41756 + +-- Pathing for Sandfury Blood Drinker Entry: 5649 'TDB FORMAT' +SET @NPC := 45709; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1617.601,`position_y`=983.7964,`position_z`=9.916536 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1617.601,983.7964,9.916536,0,0,0,0,100,0), -- 09:32:38 +(@PATH,2,1633.528,955.7834,9.235924,0,0,0,0,100,0), -- 09:32:59 +(@PATH,3,1648.17,936.5194,9.250045,0,0,0,0,100,0), -- 09:33:09 +(@PATH,4,1676.1,915.9411,9.25178,0,0,0,0,100,0), -- 09:33:22 +(@PATH,5,1688.716,903.3527,9.251783,0,0,0,0,100,0), -- 09:33:29 +(@PATH,6,1688.836,903.3895,9.001781,0,0,0,0,100,0), -- 09:33:39 +(@PATH,7,1688.783,903.5739,9.251781,0,0,0,0,100,0), -- 09:33:45 +(@PATH,8,1675.767,916.0085,9.251778,0,0,0,0,100,0), -- 09:33:52 +(@PATH,9,1647.774,936.6549,9.231987,0,0,0,0,100,0), -- 09:34:05 +(@PATH,10,1633.304,956.1119,9.007839,0,0,0,0,100,0); -- 09:34:15 +-- 0x1C16F41A200584400020100000B70E69 .go 1617.601 983.7964 9.916536 + +DELETE FROM `creature_formations` WHERE `leaderGUID`=44170; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(44170, 44170, 0, 0, 1), +(44170, 44177, 4, 0, 2); + +-- Pathing for Sandfury Shadowhunter Entry: 7246 'TDB FORMAT' +SET @NPC := 44170; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1655.273,`position_y`=905.2343,`position_z`=9.25178 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1655.273,905.2343,9.25178,0,0,0,0,100,0), -- 09:33:10 +(@PATH,2,1655.911,899.7297,9.251781,0,0,0,0,100,0), -- 09:33:13 +(@PATH,3,1659.89,895.1904,9.251783,0,0,0,0,100,0), -- 09:33:15 +(@PATH,4,1666.527,892.6587,9.251785,0,0,0,0,100,0), -- 09:33:19 +(@PATH,5,1671.451,893.4264,9.251785,0,0,0,0,100,0), -- 09:33:20 +(@PATH,6,1677.89,896.6896,9.251787,0,0,0,0,100,0), -- 09:33:24 +(@PATH,7,1682.431,897.1668,9.251787,0,0,0,0,100,0), -- 09:33:25 +(@PATH,8,1687.213,895.057,9.251787,0,0,0,0,100,0), -- 09:33:27 +(@PATH,9,1691.418,891.8385,9.251787,0,0,0,0,100,0), -- 09:33:30 +(@PATH,10,1707.106,892.9658,9.001792,0,0,0,0,100,0), -- 09:33:35 +(@PATH,11,1707.17,893.1018,9.251791,0,0,0,0,100,0), -- 09:33:37 +(@PATH,12,1707.188,899.764,9.251793,0,0,0,0,100,0), -- 09:33:41 +(@PATH,13,1705.826,907.7333,9.051537,0,0,0,0,100,0), -- 09:33:43 +(@PATH,14,1696.466,915.4108,10.69149,0,0,0,0,100,0), -- 09:33:45 +(@PATH,15,1695.094,916.186,11.46166,0,0,0,0,100,0), -- 09:33:49 +(@PATH,16,1684.856,919.5836,10.99732,0,0,0,0,100,0), -- 09:33:51 +(@PATH,17,1683.066,920.494,10.5781,0,0,0,0,100,0), -- 09:33:54 +(@PATH,18,1674.156,923.7375,10.20567,0,0,0,0,100,0), -- 09:33:57 +(@PATH,19,1664.302,928.6282,9.453308,0,0,0,0,100,0), -- 09:34:00 +(@PATH,20,1661.029,929.8394,9.146419,0,0,0,0,100,0), -- 09:34:04 +(@PATH,21,1655.01,926.2007,9.26087,0,0,0,0,100,0), -- 09:34:07 +(@PATH,22,1652.682,919.4923,9.257462,0,0,0,0,100,0), -- 09:34:10 +(@PATH,23,1651.4,910.429,9.254412,0,0,0,0,100,0), -- 09:34:13 +(@PATH,24,1647.536,904.8036,9.126776,0,0,0,0,100,0), -- 09:34:16 +(@PATH,25,1644.714,900.452,9.315964,0,0,0,0,100,0), -- 09:34:18 +(@PATH,26,1643.629,893.2144,9.066956,0,0,0,0,100,0), -- 09:34:21 +(@PATH,27,1647.002,888.5004,9.251783,0,0,0,0,100,0), -- 09:34:23 +(@PATH,28,1653.137,885.6685,9.281507,0,0,0,0,100,0), -- 09:34:26 +(@PATH,29,1662.074,885.7325,10.57716,0,0,0,0,100,0), -- 09:34:29 +(@PATH,30,1671.613,886.2659,10.16994,0,0,0,0,100,0), -- 09:34:32 +(@PATH,31,1674.008,886.346,9.495081,0,0,0,0,100,0), -- 09:34:35 +(@PATH,32,1681.862,881.2953,9.280839,0,0,0,0,100,0), -- 09:34:39 +(@PATH,33,1685.906,877.4709,9.251787,0,0,0,0,100,0), -- 09:34:41 +(@PATH,34,1691.133,874.519,9.251787,0,0,0,0,100,0), -- 09:34:44 +(@PATH,35,1698.035,875.4692,9.251789,0,0,0,0,100,0), -- 09:34:46 +(@PATH,36,1701.057,884.8716,9.251791,0,0,0,0,100,0), -- 09:34:50 +(@PATH,37,1700.372,888.9851,9.251789,0,0,0,0,100,0), -- 09:34:52 +(@PATH,38,1697.707,894.2527,9.251787,0,0,0,0,100,0), -- 09:34:55 +(@PATH,39,1695.577,900.1669,9.251783,0,0,0,0,100,0), -- 09:34:57 +(@PATH,40,1691.47,905.3853,9.251781,0,0,0,0,100,0), -- 09:34:59 +(@PATH,41,1685.541,907.8835,9.251781,0,0,0,0,100,0), -- 09:35:02 +(@PATH,42,1677.038,912.5565,9.251781,0,0,0,0,100,0), -- 09:35:06 +(@PATH,43,1673.069,915.2619,9.251778,0,0,0,0,100,0), -- 09:35:08 +(@PATH,44,1663.253,918.3373,9.251777,0,0,0,0,100,0), -- 09:35:12 +(@PATH,45,1657.931,912.8817,9.251776,0,0,0,0,100,0); -- 09:35:15 +-- 0x1C16F41A200713800020100003B70E69 .go 1655.273 905.2343 9.25178 + +UPDATE `creature` SET `id`=7246 WHERE `guid`=81449; + +-- Pathing for Sandfury Shadowhunter Entry: 7246 'TDB FORMAT' +SET @NPC := 81449; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1714.547,`position_y`=751.6357,`position_z`=31.01397 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1714.547,751.6357,31.01397,0,0,0,0,100,0), -- 09:33:36 +(@PATH,2,1706.419,767.5251,20.53269,0,0,0,0,100,0), -- 09:33:47 +(@PATH,3,1713.905,783.2459,18.27732,0,0,0,0,100,0), -- 09:33:56 +(@PATH,4,1736.666,804.5889,19.37791,0,0,0,0,100,0), -- 09:34:06 +(@PATH,5,1756.694,816.8251,17.76507,0,0,0,0,100,0), -- 09:34:16 +(@PATH,6,1777.771,811.2102,24.82411,0,0,0,0,100,0), -- 09:34:28 +(@PATH,7,1798.088,809.4211,17.09367,0,0,0,0,100,0), -- 09:34:38 +(@PATH,8,1799.94,798.6746,14.59042,0,0,0,0,100,0), -- 09:34:46 +(@PATH,9,1796.858,772.2805,14.40658,0,0,0,0,100,0), -- 09:34:55 +(@PATH,10,1795.703,767.491,14.4094,0,0,0,0,100,0), -- 09:35:03 +(@PATH,11,1783.244,740.9023,16.0862,0,0,0,0,100,0), -- 09:35:12 +(@PATH,12,1753.258,723.8399,20.43831,0,0,0,0,100,0), -- 09:35:20 +(@PATH,13,1739.673,704.8474,24.96986,0,0,0,0,100,0), -- 09:35:30 +(@PATH,14,1732.086,695.3857,29.82811,0,0,0,0,100,0), -- 09:35:41 +(@PATH,15,1730.985,682.3048,37.22635,0,0,0,0,100,0), -- 09:35:46 +(@PATH,16,1730.52,664.7642,46.17672,0,0,0,0,100,0), -- 09:35:52 +(@PATH,17,1730.83,680.5409,37.68767,0,0,0,0,100,0), -- 09:36:01 +(@PATH,18,1730.119,692.5168,32.08631,0,0,0,0,100,0), -- 09:36:09 +(@PATH,19,1737.599,702.1305,26.13027,0,0,0,0,100,0), -- 09:36:14 +(@PATH,20,1749.973,719.9585,21.75875,0,0,0,0,100,0), -- 09:36:18 +(@PATH,21,1770.449,731.5471,16.75012,0,0,0,0,100,0), -- 09:36:29 +(@PATH,22,1787.836,744.8066,15.48635,0,0,0,0,100,0), -- 09:36:39 +(@PATH,23,1790.129,746.8105,14.82397,0,0,0,0,100,0), -- 09:36:48 +(@PATH,24,1800.35,786.1299,15.01233,0,0,0,0,100,0), -- 09:36:56 +(@PATH,25,1799.381,808.5591,16.25235,0,0,0,0,100,0), -- 09:37:05 +(@PATH,26,1784.557,809.4543,26.70631,0,0,0,0,100,0), -- 09:37:13 +(@PATH,27,1768.491,817.0541,16.94501,0,0,0,0,100,0), -- 09:37:22 +(@PATH,28,1740.522,807.2539,18.77644,0,0,0,0,100,0), -- 09:37:32 +(@PATH,29,1719.27,792.5435,17.62323,0,0,0,0,100,0), -- 09:37:44 +(@PATH,30,1707.021,770.4479,18.85983,0,0,0,0,100,0); -- 09:37:53 +-- 0x1C16F41A200713800020100003B70E6B .go 1714.547 751.6357 31.01397 + +-- Pathing for Hydromancer Velratha Entry: 7795 'TDB FORMAT' +SET @NPC := 81570; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1680.114,`position_y`=1177.732,`position_z`=8.987229 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1680.114,1177.732,8.987229,2.303835,0,0,0,100,0), -- 09:34:01 +(@PATH,2,1700.927,1195.028,9.603146,0,0,0,0,100,0), -- 09:34:01 +(@PATH,3,1707.2,1200.687,9.403647,0,0,0,0,100,0), -- 09:34:14 +(@PATH,4,1692.938,1213.952,8.987229,3.909538,0,0,0,100,0), -- 09:34:23 +(@PATH,5,1680.51,1225.099,8.987229,0,0,0,0,100,0), -- 09:34:42 +(@PATH,6,1680.468,1225.099,9.265305,0,0,0,0,100,0), -- 09:34:48 +(@PATH,7,1660.3,1205.108,9.04338,5.5676,0,0,0,100,0), -- 09:35:00 +(@PATH,8,1681.249,1229.22,8.987229,0,0,0,0,100,0), -- 09:35:00 +(@PATH,9,1701.589,1207.354,9.564609,0,0,0,0,100,0), -- 09:35:12 +(@PATH,10,1694.085,1190.304,9.394554,0,0,0,0,100,0); -- 09:35:27 +-- 0x1C16F41A20079CC00020100000370E68 .go 1680.114 1177.732 8.987229 + +UPDATE `creature` SET `id`=5650 WHERE `guid`=81575; +UPDATE `creature` SET `id`=5649 WHERE `guid`=81623; + +-- Pathing for Sandfury Blood Drinker Entry: 5649 'TDB FORMAT' +SET @NPC := 81623; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1467.867,`position_y`=814.7855,`position_z`=9.265823 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1467.867,814.7855,9.265823,0,0,0,0,100,0), -- 09:33:47 +(@PATH,2,1487.211,800.545,9.218481,0,0,0,0,100,0), -- 09:33:56 +(@PATH,3,1511.808,811.0946,9.178488,0,0,0,0,100,0), -- 09:34:07 +(@PATH,4,1515.796,829.2292,9.161482,0,0,0,0,100,0), -- 09:34:16 +(@PATH,5,1536.178,831.7927,8.960844,0,0,0,0,100,0), -- 09:34:23 +(@PATH,6,1571.074,854.2294,9.261095,0,0,0,0,100,0), -- 09:34:40 +(@PATH,7,1591.516,871.9385,9.265827,0,0,0,0,100,0), -- 09:34:51 +(@PATH,8,1607.848,876.8568,9.265826,0,0,0,0,100,0), -- 09:34:58 +(@PATH,9,1607.711,876.7318,9.015826,0,0,0,0,100,0), -- 09:35:10 +(@PATH,10,1607.748,876.855,9.265827,0,0,0,0,100,0), -- 09:35:19 +(@PATH,11,1591.351,871.8887,9.265827,0,0,0,0,100,0), -- 09:35:26 +(@PATH,12,1570.754,854.1002,9.208826,0,0,0,0,100,0), -- 09:35:37 +(@PATH,13,1535.719,831.4611,9.164757,0,0,0,0,100,0), -- 09:35:54 +(@PATH,14,1515.512,828.9963,9.170406,0,0,0,0,100,0), -- 09:36:03 +(@PATH,15,1511.881,810.6445,8.968481,0,0,0,0,100,0), -- 09:36:10 +(@PATH,16,1486.829,800.4541,9.261948,0,0,0,0,100,0); -- 09:36:21 +-- 0x1C16F41A200584400020100004370E69 .go 1467.867 814.7855 9.265823 + +-- Update spawn distance & movementype so they move around randomly +UPDATE `creature` SET `spawndist`=10, `MovementType`=1 WHERE `guid` IN (81566, 81569, 81580, 81568, 81597, 81598, 81539, 81538, 81542, 81548, 81551, 45710, 81482, 81517, 81515, 81518, 81468, 81452, 81579, 81460, 81461, 81512, 81516); + +UPDATE `creature` SET `id`=5650 WHERE `guid`=81578; + +-- Pathing for Sandfury Witch Doctor Entry: 5650 'TDB FORMAT' +SET @NPC := 81578; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1676.368,`position_y`=1157.151,`position_z`=9.249697 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1676.368,1157.151,9.249697,0,0,0,0,100,0), -- 13:40:40 +(@PATH,2,1653.736,1135.86,9.245178,0,0,0,0,100,0), -- 13:40:52 +(@PATH,3,1626.023,1177.506,9.271156,0,0,0,0,100,0), -- 13:41:05 +(@PATH,4,1625.849,1178.628,9.327552,0,0,0,0,100,0), -- 13:41:14 +(@PATH,5,1641.739,1209.753,9.657928,0,0,0,0,100,0), -- 13:41:25 +(@PATH,6,1681.225,1250.528,10.47596,0,0,0,0,100,0), -- 13:41:38 +(@PATH,7,1696.953,1250.462,10.17584,0,0,0,0,100,0), -- 13:41:54 +(@PATH,8,1714.498,1240.271,9.738787,0,0,0,0,100,0), -- 13:42:06 +(@PATH,9,1717.624,1219.73,9.457044,0,0,0,0,100,0), -- 13:42:15 +(@PATH,10,1704.706,1187.339,9.265233,0,0,0,0,100,0); -- 13:42:29 +-- 0x1C16F41A2005848000491D0001B743F7 .go 1676.368 1157.151 9.249697 + +-- Pathing for Sandfury Witch Doctor Entry: 5650 'TDB FORMAT' +SET @NPC := 81526; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1879.829,`position_y`=1016.147,`position_z`=9.251789 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1879.829,1016.147,9.251789,0,0,0,0,100,0), -- 13:59:01 +(@PATH,2,1866.291,1028.589,9.251736,0,0,0,0,100,0), -- 13:59:23 +(@PATH,3,1853.719,1035.176,9.251698,0,0,0,0,100,0), -- 13:59:28 +(@PATH,4,1847.862,1044.768,9.251684,0,0,0,0,100,0), -- 13:59:33 +(@PATH,5,1853.86,1062.672,9.252108,0,0,0,0,100,0), -- 13:59:40 +(@PATH,6,1870.639,1091.271,9.252114,0,0,0,0,100,0), -- 13:59:53 +(@PATH,7,1875.563,1107.849,9.25185,0,0,0,0,100,0), -- 14:00:00 +(@PATH,8,1890.563,1129.902,9.251789,0,0,0,0,100,0), -- 14:00:11 +(@PATH,9,1888.277,1155.863,9.251789,0,0,0,0,100,0), -- 14:00:21 +(@PATH,10,1895.958,1173.92,9.251789,0,0,0,0,100,0), -- 14:00:30 +(@PATH,11,1903.501,1197.795,9.251789,0,0,0,0,100,0), -- 14:00:39 +(@PATH,12,1899.594,1215.067,9.227224,0,0,0,0,100,0), -- 14:00:47 +(@PATH,13,1899.237,1214.72,9.001789,0,0,0,0,100,0), -- 14:00:57 +(@PATH,14,1899.508,1214.759,9.285032,0,0,0,0,100,0), -- 14:01:05 +(@PATH,15,1903.433,1197.489,9.251789,0,0,0,0,100,0), -- 14:01:12 +(@PATH,16,1895.648,1173.515,9.251789,0,0,0,0,100,0), -- 14:01:22 +(@PATH,17,1888.245,1155.736,9.251789,0,0,0,0,100,0), -- 14:01:30 +(@PATH,18,1890.73,1129.828,9.25179,0,0,0,0,100,0), -- 14:01:40 +(@PATH,19,1875.201,1107.714,9.25216,0,0,0,0,100,0), -- 14:01:51 +(@PATH,20,1870.43,1091.029,9.252037,0,0,0,0,100,0), -- 14:01:58 +(@PATH,21,1853.549,1062.582,9.251722,0,0,0,0,100,0), -- 14:02:12 +(@PATH,22,1847.7,1044.523,9.251684,0,0,0,0,100,0), -- 14:02:19 +(@PATH,23,1853.871,1034.924,9.251736,0,0,0,0,100,0), -- 14:02:24 +(@PATH,24,1866.429,1028.186,9.251782,0,0,0,0,100,0); -- 14:02:30 +-- 0x1C16F41A2005848000491D0001B743F4 .go 1879.829 1016.147 9.251789 + +UPDATE `creature` SET `id`=5649 WHERE `guid`=81505; + +-- Pathing for Sandfury Blood Drinker Entry: 5649 'TDB FORMAT' +SET @NPC := 81505; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1822.724,`position_y`=914.1884,`position_z`=9.001788 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,1822.724,914.1884,9.001788,0,0,0,0,100,0), -- 13:59:35 +(@PATH,2,1829.56,924.1556,9.251788,0,0,0,0,100,0), -- 13:59:41 +(@PATH,3,1837.984,936.5698,9.251788,0,0,0,0,100,0), -- 13:59:47 +(@PATH,4,1844.23,947.9322,9.251788,0,0,0,0,100,0), -- 13:59:53 +(@PATH,5,1853.508,963.5331,9.251788,0,0,0,0,100,0), -- 14:00:00 +(@PATH,6,1858.897,971.714,9.251788,0,0,0,0,100,0), -- 14:00:04 +(@PATH,7,1862.767,977.868,9.251788,0,0,0,0,100,0), -- 14:00:06 +(@PATH,8,1862.533,977.6647,9.001788,0,0,0,0,100,0), -- 14:00:13 +(@PATH,9,1862.49,977.5964,9.251788,0,0,0,0,100,0), -- 14:00:17 +(@PATH,10,1858.673,971.532,9.251788,0,0,0,0,100,0), -- 14:00:19 +(@PATH,11,1853.258,963.3405,9.251788,0,0,0,0,100,0), -- 14:00:24 +(@PATH,12,1844.16,947.6928,9.251788,0,0,0,0,100,0), -- 14:00:32 +(@PATH,13,1837.749,936.4601,9.251788,0,0,0,0,100,0), -- 14:00:36 +(@PATH,14,1829.292,923.94,9.251788,0,0,0,0,100,0); -- 14:00:43 +-- 0x1C16F41A2005844000491D00033743F5 .go 1822.724 914.1884 9.001788 diff --git a/sql/updates/world/2016_02_07_14_world.sql b/sql/updates/world/2016_02_07_14_world.sql new file mode 100644 index 00000000000..6550e53f9c9 --- /dev/null +++ b/sql/updates/world/2016_02_07_14_world.sql @@ -0,0 +1,55 @@ +-- An end to the suffering +UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry`=28416; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` =28416; +DELETE FROM `smart_scripts` WHERE `entryorguid`=28416 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=2841600 AND `source_type`=9; + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(-113558,-113482,-113483,-113481) AND `source_type`=0; + +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 +(-113558, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Cast \'Rhunok\'s Chains\''), +(-113558, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 92, 0, 51607, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Remove Aura \'Rhunok\'s Chains\''), +(-113558, 0, 2, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Spawn - Cast \'Rhunok\'s Chains\''), +(-113482, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Cast \'Rhunok\'s Chains\''), +(-113482, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 92, 0, 51607, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Remove Aura \'Rhunok\'s Chains\''), +(-113482, 0, 2, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Spawn - Cast \'Rhunok\'s Chains\''), +(-113483, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Cast \'Rhunok\'s Chains\''), +(-113483, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 92, 0, 51607, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Remove Aura \'Rhunok\'s Chains\''), +(-113483, 0, 2, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Spawn - Cast \'Rhunok\'s Chains\''), +(-113481, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Cast \'Rhunok\'s Chains\''), +(-113481, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 92, 0, 51607, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Data Set - Remove Aura \'Rhunok\'s Chains\''), +(-113481, 0, 2, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 11, 51607, 0, 0, 0, 0, 0, 10, 95460, 28416, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny (scale x0.01) Large - On Spawn - Cast \'Rhunok\'s Chains\''), +(28416, 0, 0, 1, 25, 0, 100, 0, 0, 0, 0, 0, 18, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - On Reset - Set Unit Flags'), +(28416, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 90, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - On Reset - Set Bytes 1'), +(28416, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, 113558, 26298, 0, 0, 0, 0, 0, 'Rhunok - On Reset - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), +(28416, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, 113482, 26298, 0, 0, 0, 0, 0, 'Rhunok - On Reset - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), +(28416, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, 113481, 26298, 0, 0, 0, 0, 0, 'Rhunok - On Reset - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), +(28416, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, 113483, 26298, 0, 0, 0, 0, 0, 'Rhunok - On Reset - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), +(28416, 0, 6, 7, 8, 0, 100, 0, 51964, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 10, 113558, 26298, 0, 0, 0, 0, 0, 'Rhunok - Spellhit - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), -- 17:16:47.641 +(28416, 0, 7, 8, 61, 0, 100, 0, 0, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 10, 113481, 26298, 0, 0, 0, 0, 0, 'Rhunok - Spellhit - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), +(28416, 0, 8, 9, 61, 0, 100, 0, 0, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 10, 113482, 26298, 0, 0, 0, 0, 0, 'Rhunok - Spellhit - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), +(28416, 0, 9, 10, 61, 0, 100, 0, 0, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 10, 113483, 26298, 0, 0, 0, 0, 0, 'Rhunok - Spellhit - Set Data on ELM General Purpose Bunny (scale x0.01) Large'), +(28416, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 2841600, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - Spellhit - Run Script'), +(28416, 0, 11, 0, 9, 0, 100, 0, 0, 5, 1000, 5000, 11, 34298, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - On Range - Cast Maul'), +(28416, 0, 12, 0, 2, 0, 100, 1, 0, 25, 0, 0, 11, 57861, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - On 25% HP - Cast Roar of Rhunok'), +(28416, 0, 13, 0, 8, 0, 100, 0, 51603, 0, 0, 0, 4, 477, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - On Spellhit - Play Sound'), +(2841600, 9, 0, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 91, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - Script - Remove Bytes 1'), +(2841600, 9, 1, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - Script - Face Invoker'), +(2841600, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 45111, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - Script - Cast Enrage'), +(2841600, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - Script - Say'), +(2841600, 9, 4, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 19, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhunok - Script - Remove Unit Flags'), +(2841600, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 'Rhunok - Script - Start Attack'); + +DELETE FROM `creature_text` WHERE `entry`=28416; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextID`, `comment`) VALUES +(28416, 0, 0, 'I will not simply lay here and allow you to slay me! You will have to earn your right to draw another breath if you want to kill me, mortal!', 14, 0, 100, 0, 0, 478, 28544, 'Rhunok to Player'); + +DELETE FROM `disables` WHERE `sourceType`=0 AND `entry`=51964; +INSERT INTO `disables` (`sourceType`, `entry`, `flags`, `params_0`, `params_1`, `comment`) VALUES +(0, 51964, 64, '', '', 'Ignore LOS on Tormentor''s Incense'); +-- Catching up with Brann linking +UPDATE quest_template_addon SET PrevQuestID = 12917 WHERE ID = 12920; +-- Valkyrion Must Burn +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (30066) AND `source_type`=0 AND `id`=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 +(30066,0,1,0,28,0,100,0,0,0,0,0,81,16777216,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Valkyrion Harpoon Gun - On Passenger Dismounted - Set NPC Flags'); diff --git a/sql/updates/world/2016_02_07_15_world.sql b/sql/updates/world/2016_02_07_15_world.sql new file mode 100644 index 00000000000..ceec02f881b --- /dev/null +++ b/sql/updates/world/2016_02_07_15_world.sql @@ -0,0 +1,175 @@ +SET @Guid := 52030; + +DELETE FROM `creature` WHERE `id` IN(37964,37981,36817); +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES +(@Guid, 37964, 0, 0, 0, 1, 1, 0, 0, 1484.662, 348.019, -64.54687, 0.8377581, 120, 0, 0, 1, 0, 0, 0, 0, 0, 0), +(@Guid+1, 37981, 1, 0, 0, 1, 1, 0, 0, 9843.134, 2430.733, 1313.6, 5.5676, 120, 0, 0, 1, 0, 0, 0, 0, 0, 0), +(@Guid+2, 36817, 0, 0, 0, 1, 1, 0, 0, -8796.021, 775.0364, 95.22309, 0.01745329, 120, 0, 0, 1, 0, 0, 0, 0, 0, 0); + +DELETE FROM `game_event_creature` WHERE `eventEntry`=8 AND `guid` BETWEEN @Guid AND @Guid+2; +INSERT INTO `game_event_creature` (`eventEntry`, `guid`) VALUES +(8, @Guid), +(8, @Guid+1), +(8, @Guid+2); + +UPDATE `creature_template` SET `InhabitType`=4,`npcflag`=16777216,`VehicleId`=616,`IconName`='vehichleCursor' WHERE `entry` =37966; +UPDATE `creature_template` SET `InhabitType`=4,`npcflag`=16777216,`VehicleId`=615,`IconName`='vehichleCursor' WHERE `entry` =37980; +UPDATE `creature_template` SET `InhabitType`=4,`npcflag`=16777216,`VehicleId`=548,`IconName`='vehichleCursor' WHERE `entry`=36812; + +UPDATE `creature_template` SET `ainame`='SmartAI', `scriptname`='' WHERE `entry` IN(37966,37964,37981,37980,36817,36812); + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(37966,37964,37980,37981,36817,36812) AND `source_type`=0; + +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 +(37964, 0, 0, 0, 1, 0, 100, 0, 0, 0, 20000, 20000, 11, 70846, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '[DND] Love Boat Summoner 02 - OOC - Cast Love Boat Summon'), +(37981, 0, 0, 0, 1, 0, 100, 0, 0, 0, 20000, 20000, 11, 70863, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '[DND] Love Boat Summoner 03 - OOC - Cast Love Boat Summon'), +(36817, 0, 0, 0, 1, 0, 100, 0, 0, 0, 20000, 20000, 11, 69371, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '[DND] Love Boat Summoner - OOC - Cast Love Boat Summon'), +(37964, 0, 1, 0, 11, 0, 100, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '[DND] Love Boat Summoner 02 - On Spawn - Set Active'), +(37981, 0, 1, 0, 11, 0, 100, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '[DND] Love Boat Summoner 03 - On Spawn - Set Active'), +(36817, 0, 1, 0, 11, 0, 100, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '[DND] Love Boat Summoner - On Spawn - Set Active'), +(37966, 0, 0, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 53, 0, 37966, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Undercity Love Boat - OOC - Start WP'), +(37966, 0, 1, 2, 40, 0, 100, 0, 31, 37966, 0, 0, 11, 50630, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Undercity Love Boat - On Reached WP31 - Cast Eject All Passengers'), +(37966, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Undercity Love Boat - On Reached WP31 - Despawn'), +(37966, 0, 3, 4, 54, 0, 100, 0, 0, 0, 0, 0, 11, 70143, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Undercity Love Boat - On Just Summoned - Cast Vehicle Test'), +(37966, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Undercity Love Boat - On Just Summoned - Set Active'), +(37966, 0, 5, 0, 1, 0, 100, 0, 0, 0, 3000, 3000, 75, 69341, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Undercity Love Boat - OOC - Cast Love Boat'), +(37966, 0, 6, 0, 23, 0, 100, 0, 69342, 2, 1000, 1000, 75, 62011, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 'Undercity Love Boat - On Has Aura (2) - Add Aura'), +(37966, 0, 7, 0, 28, 0, 100, 0, 0, 0, 0, 0, 28, 62011, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 'Undercity Love Boat - On Passenger Dismounted - Remove Aura'), +(37980, 0, 0, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 53, 0, 37980, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Darnassus Love Boat - OOC - Start WP'), +(37980, 0, 1, 2, 40, 0, 100, 0, 60, 37980, 0, 0, 11, 50630, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Darnassus Love Boat - On Reached WP60 - Cast Eject All Passengers'), +(37980, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Darnassus Love Boat - On Reached WP31 - Despawn'), +(37980, 0, 3, 4, 54, 0, 100, 0, 0, 0, 0, 0, 11, 70143, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Darnassus Love Boat - On Just Summoned - Cast Vehicle Test'), +(37980, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Darnassus Love Boat - On Just Summoned - Set Active'), +(37980, 0, 5, 0, 1, 0, 100, 0, 0, 0, 3000, 3000, 75, 69341, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Darnassus Love Boat - On Passenger Boarded - Cast Love Boat'), +(37980, 0, 6, 0, 23, 0, 100, 0, 69342, 2, 1000, 1000, 75, 62011, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 'Darnassus Love Boat - On Has Aura (2) - Add Aura'), +(37980, 0, 7, 0, 28, 0, 100, 0, 0, 0, 0, 0, 28, 62011, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 'Darnassus Love Boat - On Passenger Removed - Remove Aura'), +(36812, 0, 0, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 53, 0, 36812, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Stormwind Love Boat - OOC - Start WP'), +(36812, 0, 1, 2, 40, 0, 100, 0, 21, 36812, 0, 0, 11, 50630, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Stormwind Love Boat - On Reached WP21 - Cast Eject All Passengers'), +(36812, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Stormwind Love Boat - On Reached 19 - Despawn'), +(36812, 0, 3, 4, 54, 0, 100, 0, 0, 0, 0, 0, 11, 70143, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Stormwind Love Boat - On Just Summoned - Cast Vehicle Test'), +(36812, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Stormwind - Love Boat - On Just Summoned - Set Active'), +(36812, 0, 5, 0, 1, 0, 100, 0, 0, 0, 3000, 3000, 75, 69341, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Stormwind Love Boat - OOC - Cast Love Boat'), +(36812, 0, 6, 0, 23, 0, 100, 0, 69342, 2, 1000, 1000, 75, 62011, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 'Stormwind Love Boat - On Has Aura (2) - Add Aura'), +(36812, 0, 7, 0, 28, 0, 100, 0, 0, 0, 0, 0, 28, 62011, 0, 0, 0, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 'Stormwind Love Boat - On Pasenger Removed - Remove Aura'); + +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`IN(37966,37980,36812); +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(37966, 69342, 1, 0), +(37980, 69342, 1, 0), +(36812, 69342, 1, 0); + + +DELETE FROM `waypoints` WHERE `entry` IN(37966,37980,36812); +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(37966, 1, 1485.332, 348.7621, -64.54687, 'Undercity Love Boat'), +(37966, 2, 1487.063, 350.9445, -64.86743, 'Undercity Love Boat'), +(37966, 3, 1494.434, 360.592, -64.86742, 'Undercity Love Boat'), +(37966, 4, 1505.792, 368.026, -64.81186, 'Undercity Love Boat'), +(37966, 5, 1520.413, 376.7361, -64.81187, 'Undercity Love Boat'), +(37966, 6, 1542.724, 389.7309, -64.81187, 'Undercity Love Boat'), +(37966, 7, 1555.352, 393.1875, -64.81187, 'Undercity Love Boat'), +(37966, 8, 1577.076, 397.1563, -64.81187, 'Undercity Love Boat'), +(37966, 9, 1618.071, 395.9705, -64.81187, 'Undercity Love Boat'), +(37966, 10, 1642.727, 391.0139, -64.81187, 'Undercity Love Boat'), +(37966, 11, 1685.007, 370.4167, -64.81187, 'Undercity Love Boat'), +(37966, 12, 1711.104, 350.4514, -64.81187, 'Undercity Love Boat'), +(37966, 13, 1738.417, 310.0278, -64.81187, 'Undercity Love Boat'), +(37966, 14, 1746.345, 286.441, -64.81187, 'Undercity Love Boat'), +(37966, 15, 1752.087, 240.5399, -64.81187, 'Undercity Love Boat'), +(37966, 16, 1750.016, 206.7309, -64.81187, 'Undercity Love Boat'), +(37966, 17, 1737.47, 167.8559, -64.81187, 'Undercity Love Boat'), +(37966, 18, 1707.885, 128.5122, -64.81187, 'Undercity Love Boat'), +(37966, 19, 1667.977, 99.80035, -64.81187, 'Undercity Love Boat'), +(37966, 20, 1624.948, 85.43229, -64.81187, 'Undercity Love Boat'), +(37966, 21, 1583.814, 83.33507, -64.81187, 'Undercity Love Boat'), +(37966, 22, 1539.444, 94.43403, -64.81187, 'Undercity Love Boat'), +(37966, 23, 1502.849, 114.3142, -64.81187, 'Undercity Love Boat'), +(37966, 24, 1482.955, 132.6806, -64.81187, 'Undercity Love Boat'), +(37966, 25, 1456.214, 170.0521, -64.81187, 'Undercity Love Boat'), +(37966, 26, 1441.738, 207.8819, -64.81187, 'Undercity Love Boat'), +(37966, 27, 1438.825, 244.4427, -64.81187, 'Undercity Love Boat'), +(37966, 28, 1450.882, 299.3177, -64.81187, 'Undercity Love Boat'), +(37966, 29, 1462.38, 320.4583, -64.81187, 'Undercity Love Boat'), +(37966, 30, 1467.97, 333.1337, -64.81187, 'Undercity Love Boat'), +(37966, 31, 1471.193, 337.8559, -64.81187, 'Undercity Love Boat'), +(37980, 1, 9843.134, 2430.733, 1313.6, 'Darnassus Love Boat'), +(37980, 2, 9847.023, 2427.627, 1313.516, 'Darnassus Love Boat'), +(37980, 3, 9856.224, 2423.156, 1313.516, 'Darnassus Love Boat'), +(37980, 4, 9871.393, 2416.719, 1313.516, 'Darnassus Love Boat'), +(37980, 5, 9888.688, 2408.337, 1313.516, 'Darnassus Love Boat'), +(37980, 6, 9901.832, 2399.545, 1313.516, 'Darnassus Love Boat'), +(37980, 7, 9915.912, 2390.616, 1313.516, 'Darnassus Love Boat'), +(37980, 8, 9930.722, 2381.382, 1313.516, 'Darnassus Love Boat'), +(37980, 9, 9946.339, 2377.861, 1313.516, 'Darnassus Love Boat'), +(37980, 10, 9964.972, 2377.967, 1313.516, 'Darnassus Love Boat'), +(37980, 11, 9977.46, 2379.141, 1313.516, 'Darnassus Love Boat'), +(37980, 12, 9989.397, 2375.556, 1313.516, 'Darnassus Love Boat'), +(37980, 13, 10006.68, 2364.491, 1313.516, 'Darnassus Love Boat'), +(37980, 14, 10022.01, 2353.608, 1313.516, 'Darnassus Love Boat'), +(37980, 15, 10031.78, 2353.427, 1313.516, 'Darnassus Love Boat'), +(37980, 16, 10041.6, 2366.207, 1313.516, 'Darnassus Love Boat'), +(37980, 17, 10043.1, 2373.267, 1313.516, 'Darnassus Love Boat'), +(37980, 18, 10040.94, 2384.248, 1313.516, 'Darnassus Love Boat'), +(37980, 19, 10040.11, 2396.392, 1313.516, 'Darnassus Love Boat'), +(37980, 20, 10043.54, 2406.759, 1313.516, 'Darnassus Love Boat'), +(37980, 21, 10051.08, 2414.868, 1313.516, 'Darnassus Love Boat'), +(37980, 22, 10059.58, 2421.014, 1313.516, 'Darnassus Love Boat'), +(37980, 23, 10061.45, 2433.856, 1313.516, 'Darnassus Love Boat'), +(37980, 24, 10056.65, 2445.88, 1313.516, 'Darnassus Love Boat'), +(37980, 25, 10049.1, 2453.844, 1313.516, 'Darnassus Love Boat'), +(37980, 26, 10039.64, 2458.193, 1313.516, 'Darnassus Love Boat'), +(37980, 27, 10030.21, 2461.353, 1313.516, 'Darnassus Love Boat'), +(37980, 28, 10013.85, 2465.007, 1313.516, 'Darnassus Love Boat'), +(37980, 29, 10007.3, 2472.648, 1313.516, 'Darnassus Love Boat'), +(37980, 30, 10001.77, 2490.97, 1313.516, 'Darnassus Love Boat'), +(37980, 31, 10007.02, 2503.859, 1313.516, 'Darnassus Love Boat'), +(37980, 32, 10014.66, 2519.925, 1313.516, 'Darnassus Love Boat'), +(37980, 33, 10022.5, 2532.248, 1313.516, 'Darnassus Love Boat'), +(37980, 34, 10032.06, 2559.106, 1313.516, 'Darnassus Love Boat'), +(37980, 35, 10032.88, 2579.188, 1313.516, 'Darnassus Love Boat'), +(37980, 36, 10032.36, 2598.909, 1313.516, 'Darnassus Love Boat'), +(37980, 37, 10029.7, 2612.815, 1313.516, 'Darnassus Love Boat'), +(37980, 38, 10022.64, 2648.693, 1313.516, 'Darnassus Love Boat'), +(37980, 39, 9999.638, 2667.306, 1313.516, 'Darnassus Love Boat'), +(37980, 40, 9985.304, 2673.353, 1313.516, 'Darnassus Love Boat'), +(37980, 41, 9967.442, 2671.7, 1313.516, 'Darnassus Love Boat'), +(37980, 42, 9938.718, 2668.114, 1313.516, 'Darnassus Love Boat'), +(37980, 43, 9898.393, 2665.895, 1313.516, 'Darnassus Love Boat'), +(37980, 44, 9874.026, 2660.383, 1313.516, 'Darnassus Love Boat'), +(37980, 45, 9848.894, 2657.903, 1313.516, 'Darnassus Love Boat'), +(37980, 46, 9834.57, 2658.452, 1313.516, 'Darnassus Love Boat'), +(37980, 47, 9820.689, 2652.576, 1313.516, 'Darnassus Love Boat'), +(37980, 48, 9802.497, 2636.835, 1313.516, 'Darnassus Love Boat'), +(37980, 49, 9795.239, 2622.99, 1313.516, 'Darnassus Love Boat'), +(37980, 50, 9785.92, 2605.789, 1313.516, 'Darnassus Love Boat'), +(37980, 51, 9784.899, 2593.911, 1313.516, 'Darnassus Love Boat'), +(37980, 52, 9793.405, 2574.175, 1313.516, 'Darnassus Love Boat'), +(37980, 53, 9812.471, 2555.666, 1313.516, 'Darnassus Love Boat'), +(37980, 54, 9829.779, 2539.537, 1313.516, 'Darnassus Love Boat'), +(37980, 55, 9841.714, 2520.574, 1313.516, 'Darnassus Love Boat'), +(37980, 56, 9847.395, 2499.439, 1313.516, 'Darnassus Love Boat'), +(37980, 57, 9850.591, 2481.936, 1313.516, 'Darnassus Love Boat'), +(37980, 58, 9846.033, 2466.465, 1313.516, 'Darnassus Love Boat'), +(37980, 59, 9838.938, 2451.995, 1313.516, 'Darnassus Love Boat'), +(37980, 60, 9833.917, 2446.236, 1313.516, 'Darnassus Love Boat'), +(36812, 1, -8795.021, 775.0364, 95.22309, 'Stormwind Love Boat'), +(36812, 2, -8791.573, 776.316, 95.0583, 'Stormwind Love Boat'), +(36812, 3, -8783.189, 778.1111, 95.0583, 'Stormwind Love Boat'), +(36812, 4, -8769.04, 777.9063, 95.0583, 'Stormwind Love Boat'), +(36812, 5, -8757.161, 764.092, 95.0583, 'Stormwind Love Boat'), +(36812, 6, -8750.976, 741.6354, 95.08608, 'Stormwind Love Boat'), +(36812, 7, -8733.618, 717.3299, 95.08608, 'Stormwind Love Boat'), +(36812, 8, -8717.854, 698.5886, 95.0583, 'Stormwind Love Boat'), +(36812, 9, -8698.192, 662.2465, 95.0583, 'Stormwind Love Boat'), +(36812, 10, -8688.56, 630.1719, 95.11386, 'Stormwind Love Boat'), +(36812, 11, -8696.212, 596.9983, 95.08608, 'Stormwind Love Boat'), +(36812, 12, -8702.024, 577.2761, 95.0583, 'Stormwind Love Boat'), +(36812, 13, -8691.561, 565.0538, 95.0583, 'Stormwind Love Boat'), +(36812, 14, -8671.857, 565.382, 95.0583, 'Stormwind Love Boat'), +(36812, 15, -8646.634, 563.7743, 95.0583, 'Stormwind Love Boat'), +(36812, 16, -8631.895, 554.441, 95.0583, 'Stormwind Love Boat'), +(36812, 17, -8618.281, 557.4114, 95.0583, 'Stormwind Love Boat'), +(36812, 18, -8608.049, 577.191, 95.0583, 'Stormwind Love Boat'), +(36812, 19, -8602.768, 595.4983, 95.0583, 'Stormwind Love Boat'), +(36812, 20, -8594.357, 623.566, 95.0583, 'Stormwind Love Boat'), +(36812, 21, -8581.717, 629.7882, 95.08608, 'Stormwind Love Boat'); diff --git a/sql/updates/world/2016_02_08_00_world_335.sql b/sql/updates/world/2016_02_08_00_world_335.sql new file mode 100644 index 00000000000..83091035e3c --- /dev/null +++ b/sql/updates/world/2016_02_08_00_world_335.sql @@ -0,0 +1,2 @@ +-- http://wowwiki.wikia.com/wiki/Love_Rocket?oldid=2190122 +UPDATE `item_template` SET `BuyCount`=5 WHERE `entry`=34258; diff --git a/sql/updates/world/2016_02_08_01_world.sql b/sql/updates/world/2016_02_08_01_world.sql new file mode 100644 index 00000000000..9f8fa3dc4ed --- /dev/null +++ b/sql/updates/world/2016_02_08_01_world.sql @@ -0,0 +1,25 @@ +SET @JOVAAN := 21633; -- Deathbringer Jovaan +SET @TRIGGER := 4548; -- Smart Trigger +SET @DEVICE := 184833;-- Legion Communication Device +SET @GO_INFERNAL := 184834;-- Gobject that needs to be despawned during the script +SET @GO_INFERNAL2 := 184835;-- Gobject that needs to be despawned during the script +SET @EVENTID := 13852; -- From spell_dbc id 37492 + +DELETE FROM event_scripts WHERE id =@EVENTID; +INSERT INTO event_scripts (id, command, datalong, datalong2, x, y, z, o) VALUES +(@EVENTID, 10, @JOVAAN, 57000, -3310.995, 2951.892, 171.2171, 5.5355); + +DELETE FROM areatrigger_scripts WHERE entry=@TRIGGER; +DELETE FROM smart_scripts WHERE entryorguid=@TRIGGER AND source_type=2; + +UPDATE gameobject_template SET AIName ='' WHERE entry =@DEVICE; +DELETE FROM smart_scripts WHERE source_type=1 AND entryorguid =@DEVICE; + +DELETE FROM smart_scripts WHERE entryorguid=@JOVAAN AND source_type=0; +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 +(@JOVAAN,0,0,1,11,0,100,0,0,0,0,0,11,34427,0,0,0,0,0,1,0,0,0,0,0,0,0,'Deathbringer Jovaan - Just summoned - Spellcast Etheral Teleport'), +(@JOVAAN,0,1,2,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,14,25737,@GO_INFERNAL,0,0,0,0,0,'Deathbringer Jovaan - Just summoned - Set Data GO'), +(@JOVAAN,0,2,3,61,0,100,0,0,0,0,0,45,0,2,0,0,0,0,14,25738,@GO_INFERNAL2,0,0,0,0,0,'Deathbringer Jovaan - Just summoned Set Data GO'), +(@JOVAAN,0,3,0,61,0,100,0,0,0,0,0,53,0,@JOVAAN,0,0,0,0,1,0,0,0,0,0,0,0,'Deathbringer Jovaan - Just summoned - Start WP movement'), +(@JOVAAN,0,4,5,40,0,100,0,4,@JOVAAN,0,0,54,45000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Deathbringer Jovaan - On WP 4 reached - Pause 45 seconds'), +(@JOVAAN,0,5,0,61,0,100,0,0,0,0,0,80,@JOVAAN*100,2,0,0,0,0,1,0,0,0,0,0,0,0,'Deathbringer Jovaan - On WP 4 reached - Run Script'); diff --git a/sql/updates/world/2016_02_08_02_world.sql b/sql/updates/world/2016_02_08_02_world.sql new file mode 100644 index 00000000000..0f22abafe8e --- /dev/null +++ b/sql/updates/world/2016_02_08_02_world.sql @@ -0,0 +1,10 @@ +-- +UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`|1|2|4|8|16|32|64|256|512|1024|2048|4096|8192|65536|131072|524288|4194304|8388608|33554432|67108864|536870912 WHERE `entry` IN ( +37697, -- 10N Volatile Ooze +38604, -- 10H Volatile Ooze +38758, -- 25N Volatize Ooze +38759, -- 25H Volatile Ooze +37562, -- 10N Gas Cloud +38602, -- 10H Gas Cloud +38760, -- 25N Gas Cloud +38761); -- 25H Gas Cloud diff --git a/sql/updates/world/2016_02_08_03_world.sql b/sql/updates/world/2016_02_08_03_world.sql new file mode 100644 index 00000000000..fe429cf42c8 --- /dev/null +++ b/sql/updates/world/2016_02_08_03_world.sql @@ -0,0 +1,5 @@ +-- +-- DB/Creature: Frost Freeze Trap - Spellcast +DELETE FROM `disables` WHERE `sourceType`=0 AND `entry`=70460; +INSERT INTO `disables` (`sourceType`, `entry`, `flags`, `params_0`, `params_1`, `comment`) VALUES +(0, 70460, 64, '', '', 'Ignore LOS for Coldflame Jets'); diff --git a/sql/updates/world/2016_02_08_04_world.sql b/sql/updates/world/2016_02_08_04_world.sql new file mode 100644 index 00000000000..f8a9e2c776a --- /dev/null +++ b/sql/updates/world/2016_02_08_04_world.sql @@ -0,0 +1,2 @@ +-- Lock and Load - Procc +UPDATE `spell_proc_event` SET `SchoolMask`=0, `SpellFamilyName`=9, `SpellFamilyMask0`=0, `SpellFamilyMask1`=0, `SpellFamilyMask2`=0, `procFlags`=2430272, `procEx`=0, `ppmRate`=0, `CustomChance`=0, `Cooldown`=22 WHERE (`entry`=-56342); diff --git a/sql/updates/world/2016_02_08_05_world.sql b/sql/updates/world/2016_02_08_05_world.sql new file mode 100644 index 00000000000..d2cc597a6ac --- /dev/null +++ b/sql/updates/world/2016_02_08_05_world.sql @@ -0,0 +1,2 @@ +-- diseases immunity tbc +UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` &~ 2097152 WHERE `exp` = 1; diff --git a/sql/updates/world/2016_02_08_06_world.sql b/sql/updates/world/2016_02_08_06_world.sql new file mode 100644 index 00000000000..c9e93889790 --- /dev/null +++ b/sql/updates/world/2016_02_08_06_world.sql @@ -0,0 +1,2 @@ +-- fix quest reward text for "The Key to the Focusing Iris" and "The Key to the Heroic Focusing Iris" +UPDATE `quest_offer_reward` SET `RewardText`="These keys are held by the most ancient members of the blue dragonflight. Only they are entrusted with them by their master, Malygos.$b$bThis is the break that we've been waiting for to strike at the Aspect of Magic!$b$b<The queen of dragons studies you for a brief moment.>$b$bYou are not able to use the key as-is to access the Focusing Iris, but I can imbue you with a portion of my power; enough to enable you to use it to open the iris a fraction.$b$bIt will be enough to draw Malygos's ire!" WHERE `ID` in (13372,13375); diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index f3c20750069..035d9af4369 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -573,6 +573,14 @@ void AuctionHouseObject::Update() if (AuctionsMap.empty()) return; + // Clear expired throttled players + for (PlayerGetAllThrottleMap::const_iterator itr = GetAllThrottleMap.begin(); itr != GetAllThrottleMap.end();) + { + if (itr->second <= curTime) + itr = GetAllThrottleMap.erase(itr); + else + ++itr; + } SQLTransaction trans = CharacterDatabase.BeginTransaction(); @@ -648,13 +656,40 @@ void AuctionHouseObject::BuildListOwnerItems(WorldPacket& data, Player* player, void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player, std::wstring const& wsearchedname, uint32 listfrom, uint8 levelmin, uint8 levelmax, uint8 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, - uint32& count, uint32& totalcount) + uint32& count, uint32& totalcount, bool getall) { int loc_idx = player->GetSession()->GetSessionDbLocaleIndex(); int locdbc_idx = player->GetSession()->GetSessionDbcLocale(); time_t curTime = sWorld->GetGameTime(); + PlayerGetAllThrottleMap::const_iterator itr = GetAllThrottleMap.find(player->GetGUID()); + time_t throttleTime = itr != GetAllThrottleMap.end() ? itr->second : curTime; + + if (getall && throttleTime <= curTime) + { + for (AuctionEntryMap::const_iterator itr = AuctionsMap.begin(); itr != AuctionsMap.end(); ++itr) + { + AuctionEntry* Aentry = itr->second; + // Skip expired auctions + if (Aentry->expire_time < curTime) + continue; + + Item* item = sAuctionMgr->GetAItem(Aentry->itemGUIDLow); + if (!item) + continue; + + ++count; + ++totalcount; + Aentry->BuildAuctionInfo(data, item); + + if (count >= MAX_GETALL_RETURN) + break; + } + GetAllThrottleMap[player->GetGUID()] = curTime + sWorld->getIntConfig(CONFIG_AUCTION_GETALL_DELAY); + return; + } + for (AuctionEntryMap::const_iterator itr = AuctionsMap.begin(); itr != AuctionsMap.end(); ++itr) { AuctionEntry* Aentry = itr->second; @@ -744,16 +779,16 @@ void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player if (count < 50 && totalcount >= listfrom) { ++count; - Aentry->BuildAuctionInfo(data); + Aentry->BuildAuctionInfo(data, item); } ++totalcount; } } //this function inserts to WorldPacket auction's data -bool AuctionEntry::BuildAuctionInfo(WorldPacket& data) const +bool AuctionEntry::BuildAuctionInfo(WorldPacket& data, Item* sourceItem) const { - Item* item = sAuctionMgr->GetAItem(itemGUIDLow); + Item* item = (sourceItem) ? sourceItem : sAuctionMgr->GetAItem(itemGUIDLow); if (!item) { TC_LOG_ERROR("misc", "AuctionEntry::BuildAuctionInfo: Auction %u has a non-existent item: %u", Id, itemGUIDLow); diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 4a2b79ab170..fe4b9ed07de 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -30,6 +30,7 @@ class WorldPacket; #define MIN_AUCTION_TIME (12*HOUR) #define MAX_AUCTION_ITEMS 160 +#define MAX_GETALL_RETURN 55000 enum AuctionError { @@ -90,7 +91,7 @@ struct AuctionEntry uint8 GetHouseId() const { return houseId; } uint32 GetAuctionCut() const; uint32 GetAuctionOutBid() const; - bool BuildAuctionInfo(WorldPacket & data) const; + bool BuildAuctionInfo(WorldPacket & data, Item* sourceItem = nullptr) const; void DeleteFromDB(SQLTransaction& trans) const; void SaveToDB(SQLTransaction& trans) const; bool LoadFromDB(Field* fields); @@ -110,6 +111,7 @@ class AuctionHouseObject } typedef std::map<uint32, AuctionEntry*> AuctionEntryMap; + typedef std::unordered_map<ObjectGuid, time_t> PlayerGetAllThrottleMap; uint32 Getcount() const { return AuctionsMap.size(); } @@ -133,10 +135,15 @@ class AuctionHouseObject void BuildListAuctionItems(WorldPacket& data, Player* player, std::wstring const& searchedname, uint32 listfrom, uint8 levelmin, uint8 levelmax, uint8 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, - uint32& count, uint32& totalcount); + uint32& count, uint32& totalcount, bool getall = false); private: AuctionEntryMap AuctionsMap; + + // Map of throttled players for GetAll, and throttle expiry time + // Stored here, rather than player object to maintain persistence after logout + PlayerGetAllThrottleMap GetAllThrottleMap; + }; class AuctionHouseMgr diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index 9ab96383ed1..1942ac9d648 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -389,6 +389,8 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) { if (TotalTime >= BG_SA_ROUNDLENGTH) { + CastSpellOnTeam(SPELL_END_OF_ROUND, ALLIANCE); + CastSpellOnTeam(SPELL_END_OF_ROUND, HORDE); RoundScores[0].winner = Attackers; RoundScores[0].time = BG_SA_ROUNDLENGTH; TotalTime = 0; @@ -401,8 +403,6 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) ToggleTimer(); ResetObjs(); GetBgMap()->UpdateAreaDependentAuras(); - CastSpellOnTeam(SPELL_END_OF_ROUND, ALLIANCE); - CastSpellOnTeam(SPELL_END_OF_ROUND, HORDE); return; } } @@ -410,6 +410,8 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) { if (TotalTime >= EndRoundTimer) { + CastSpellOnTeam(SPELL_END_OF_ROUND, ALLIANCE); + CastSpellOnTeam(SPELL_END_OF_ROUND, HORDE); RoundScores[1].time = BG_SA_ROUNDLENGTH; RoundScores[1].winner = (Attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE; if (RoundScores[0].time == RoundScores[1].time) diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp index 5f1de673294..c73350872cc 100644 --- a/src/server/game/DataStores/DBCStores.cpp +++ b/src/server/game/DataStores/DBCStores.cpp @@ -91,6 +91,9 @@ DBCStorage <DurabilityCostsEntry> sDurabilityCostsStore(DurabilityCostsfmt); DBCStorage <EmotesEntry> sEmotesStore(EmotesEntryfmt); DBCStorage <EmotesTextEntry> sEmotesTextStore(EmotesTextEntryfmt); +typedef std::tuple<uint32, uint32, uint32> EmotesTextSoundKey; +static std::map<EmotesTextSoundKey, EmotesTextSoundEntry const*> sEmotesTextSoundMap; +DBCStorage <EmotesTextSoundEntry> sEmotesTextSoundStore(EmotesTextSoundEntryfmt); typedef std::map<uint32, SimpleFactionsList> FactionTeamMap; static FactionTeamMap sFactionTeamMap; @@ -338,6 +341,10 @@ void LoadDBCStores(const std::string& dataPath) LoadDBC(availableDbcLocales, bad_dbc_files, sDurabilityQualityStore, dbcPath, "DurabilityQuality.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sEmotesStore, dbcPath, "Emotes.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sEmotesTextStore, dbcPath, "EmotesText.dbc"); + LoadDBC(availableDbcLocales, bad_dbc_files, sEmotesTextSoundStore, dbcPath, "EmotesTextSound.dbc"); + for (uint32 i = 0; i < sEmotesTextSoundStore.GetNumRows(); ++i) + if (EmotesTextSoundEntry const* entry = sEmotesTextSoundStore.LookupEntry(i)) + sEmotesTextSoundMap[EmotesTextSoundKey(entry->EmotesTextId, entry->RaceId, entry->SexId)] = entry; LoadDBC(availableDbcLocales, bad_dbc_files, sFactionStore, dbcPath, "Faction.dbc"); for (uint32 i=0; i<sFactionStore.GetNumRows(); ++i) { @@ -1060,3 +1067,8 @@ ResponseCodes ValidateName(std::string const& name, LocaleConstant locale) return CHAR_NAME_SUCCESS; } + +EmotesTextSoundEntry const* FindTextSoundEmoteFor(uint32 emote, uint32 race, uint32 gender) +{ + return sEmotesTextSoundMap[EmotesTextSoundKey(emote, race, gender)]; +} diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h index 41a97382b0b..14f59b04e6d 100644 --- a/src/server/game/DataStores/DBCStores.h +++ b/src/server/game/DataStores/DBCStores.h @@ -82,6 +82,8 @@ SkillRaceClassInfoEntry const* GetSkillRaceClassInfo(uint32 skill, uint8 race, u ResponseCodes ValidateName(std::string const& name, LocaleConstant locale); +EmotesTextSoundEntry const* FindTextSoundEmoteFor(uint32 emote, uint32 race, uint32 gender); + extern DBCStorage <AchievementEntry> sAchievementStore; extern DBCStorage <AchievementCriteriaEntry> sAchievementCriteriaStore; extern DBCStorage <AreaTableEntry> sAreaStore;// recommend access using functions @@ -113,6 +115,7 @@ extern DBCStorage <DurabilityCostsEntry> sDurabilityCostsStore; extern DBCStorage <DurabilityQualityEntry> sDurabilityQualityStore; extern DBCStorage <EmotesEntry> sEmotesStore; extern DBCStorage <EmotesTextEntry> sEmotesTextStore; +extern DBCStorage <EmotesTextSoundEntry> sEmotesTextSoundStore; extern DBCStorage <FactionEntry> sFactionStore; extern DBCStorage <FactionTemplateEntry> sFactionTemplateStore; extern DBCStorage <GameObjectDisplayInfoEntry> sGameObjectDisplayInfoStore; diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index d1794a0ea90..2f4820d0353 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -926,6 +926,15 @@ struct EmotesTextEntry uint32 textid; }; +struct EmotesTextSoundEntry +{ + uint32 Id; // 0 + uint32 EmotesTextId; // 1 + uint32 RaceId; // 2 + uint32 SexId; // 3, 0 male / 1 female + uint32 SoundId; // 4 +}; + struct FactionEntry { uint32 ID; // 0 m_ID diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h index aade6d91d61..22a01dae9f0 100644 --- a/src/server/game/DataStores/DBCfmt.h +++ b/src/server/game/DataStores/DBCfmt.h @@ -52,6 +52,7 @@ char const DurabilityCostsfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiiiiiii"; char const DurabilityQualityfmt[] = "nf"; char const EmotesEntryfmt[] = "nxxiiix"; char const EmotesTextEntryfmt[] = "nxixxxxxxxxxxxxxxxx"; +char const EmotesTextSoundEntryfmt[] = "niiii"; char const FactionEntryfmt[] = "niiiiiiiiiiiiiiiiiiffixssssssssssssssssxxxxxxxxxxxxxxxxxx"; char const FactionTemplateEntryfmt[] = "niiiiiiiiiiiii"; char const GameObjectDisplayInfofmt[] = "nsxxxxxxxxxxffffffx"; diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 73b9e0580cf..8711cd1a5f5 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -369,13 +369,13 @@ bool Creature::InitEntry(uint32 entry, CreatureData const* data /*= nullptr*/) SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender); // Load creature equipment - if (!data || data->equipmentId == 0) - LoadEquipment(); // use default equipment (if available) - else if (data && data->equipmentId != 0) // override, 0 means no equipment + if (data && data->equipmentId != 0) { m_originalEquipmentId = data->equipmentId; LoadEquipment(data->equipmentId); } + else + LoadEquipment(0, true); SetName(normalInfo->Name); // at normal entry always @@ -905,6 +905,12 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, u if (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING) AddUnitState(UNIT_STATE_IGNORE_PATHFINDING); + if (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK) + { + ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); + ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true); + } + return true; } @@ -1403,6 +1409,7 @@ void Creature::LoadEquipment(int8 id, bool force /*= true*/) SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + i, 0); m_equipmentId = 0; } + return; } @@ -1411,7 +1418,7 @@ void Creature::LoadEquipment(int8 id, bool force /*= true*/) return; m_equipmentId = id; - for (uint8 i = 0; i < 3; ++i) + for (uint8 i = 0; i < MAX_EQUIPMENT_ITEMS; ++i) SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + i, einfo->ItemEntry[i]); } diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index a2d8dda7a7c..49bd854ef2f 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -56,7 +56,8 @@ enum CreatureFlagsExtra CREATURE_FLAG_EXTRA_ALL_DIMINISH = 0x00100000, // creature is subject to all diminishing returns as player are CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ = 0x00200000, // creature does not need to take player damage for kill credit CREATURE_FLAG_EXTRA_DUNGEON_BOSS = 0x10000000, // creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB) - CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING = 0x20000000 // creature ignore pathfinding + CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING = 0x20000000, // creature ignore pathfinding + CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK = 0x40000000 // creature is immune to knockback effects }; #define CREATURE_FLAG_EXTRA_DB_ALLOWED (CREATURE_FLAG_EXTRA_INSTANCE_BIND | CREATURE_FLAG_EXTRA_CIVILIAN | \ @@ -64,7 +65,7 @@ enum CreatureFlagsExtra CREATURE_FLAG_EXTRA_NO_CRUSH | CREATURE_FLAG_EXTRA_NO_XP_AT_KILL | CREATURE_FLAG_EXTRA_TRIGGER | \ CREATURE_FLAG_EXTRA_NO_TAUNT | CREATURE_FLAG_EXTRA_WORLDEVENT | CREATURE_FLAG_EXTRA_NO_CRIT | \ CREATURE_FLAG_EXTRA_NO_SKILLGAIN | CREATURE_FLAG_EXTRA_TAUNT_DIMINISH | CREATURE_FLAG_EXTRA_ALL_DIMINISH | \ - CREATURE_FLAG_EXTRA_GUARD | CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING | CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ) + CREATURE_FLAG_EXTRA_GUARD | CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING | CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ | CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK) #define CREATURE_REGEN_INTERVAL 2 * IN_MILLISECONDS diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 95e76a25763..8ce78f88906 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2406,7 +2406,7 @@ bool Player::CanInteractWithQuestGiver(Object* questGiver) return false; } -Creature* Player::GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask) +Creature* Player::GetNPCIfCanInteractWith(ObjectGuid const& guid, uint32 npcflagmask) { // unit checks if (!guid) @@ -2450,7 +2450,21 @@ Creature* Player::GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask) return creature; } -GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid guid, GameobjectTypes type) const +GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid const& guid) const +{ + if (GameObject* go = GetMap()->GetGameObject(guid)) + { + if (go->IsWithinDistInMap(this, go->GetInteractionDistance())) + return go; + + TC_LOG_DEBUG("maps", "GetGameObjectIfCanInteractWith: GameObject '%s' [GUID: %u] is too far away from player %s [GUID: %u] to be used by him (distance=%f, maximal %f is allowed)", go->GetGOInfo()->name.c_str(), + go->GetGUID().GetCounter(), GetName().c_str(), GetGUID().GetCounter(), go->GetDistance(this), go->GetInteractionDistance()); + } + + return nullptr; +} + +GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid const& guid, GameobjectTypes type) const { if (GameObject* go = GetMap()->GetGameObject(guid)) { @@ -2459,12 +2473,12 @@ GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid guid, GameobjectTy if (go->IsWithinDistInMap(this, go->GetInteractionDistance())) return go; - TC_LOG_DEBUG("maps", "GetGameObjectIfCanInteractWith: GameObject '%s' [GUID: %u] is too far away from player %s [GUID: %u] to be used by him (distance=%f, maximal 10 is allowed)", go->GetGOInfo()->name.c_str(), - go->GetGUID().GetCounter(), GetName().c_str(), GetGUID().GetCounter(), go->GetDistance(this)); + TC_LOG_DEBUG("maps", "GetGameObjectIfCanInteractWith: GameObject '%s' [GUID: %u] is too far away from player %s [GUID: %u] to be used by him (distance=%f, maximal %f is allowed)", go->GetGOInfo()->name.c_str(), + go->GetGUID().GetCounter(), GetName().c_str(), GetGUID().GetCounter(), go->GetDistance(this), go->GetInteractionDistance()); } } - return NULL; + return nullptr; } bool Player::IsUnderWater() const diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index e7af827e9c7..9b64023698c 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1050,8 +1050,9 @@ class Player : public Unit, public GridObject<Player> void SendInstanceResetWarning(uint32 mapid, Difficulty difficulty, uint32 time, bool welcome); bool CanInteractWithQuestGiver(Object* questGiver); - Creature* GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask); - GameObject* GetGameObjectIfCanInteractWith(ObjectGuid guid, GameobjectTypes type) const; + Creature* GetNPCIfCanInteractWith(ObjectGuid const& guid, uint32 npcflagmask); + GameObject* GetGameObjectIfCanInteractWith(ObjectGuid const& guid) const; + GameObject* GetGameObjectIfCanInteractWith(ObjectGuid const& guid, GameobjectTypes type) const; void ToggleAFK(); void ToggleDND(); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index d2064092a65..327bccd7e19 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1756,7 +1756,7 @@ void ObjectMgr::LoadCreatures() if (!ok) continue; - // -1 random, 0 no equipment, + // -1 random, 0 no equipment if (data.equipmentId != 0) { if (!GetEquipmentInfo(data.id, data.equipmentId)) diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index f23888cab03..efe0526baae 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -706,7 +706,7 @@ void WorldSession::HandleAuctionListItems(WorldPacket& recvData) TC_LOG_DEBUG("network", "WORLD: Received CMSG_AUCTION_LIST_ITEMS"); std::string searchedname; - uint8 levelmin, levelmax, usable; + uint8 levelmin, levelmax, usable, getAll; uint32 listfrom, auctionSlotID, auctionMainCategory, auctionSubCategory, quality; ObjectGuid guid; @@ -718,7 +718,7 @@ void WorldSession::HandleAuctionListItems(WorldPacket& recvData) recvData >> auctionSlotID >> auctionMainCategory >> auctionSubCategory; recvData >> quality >> usable; - recvData.read_skip<uint8>(); // unk + recvData >> getAll; // this block looks like it uses some lame byte packing or similar... uint8 unkCnt; @@ -760,11 +760,11 @@ void WorldSession::HandleAuctionListItems(WorldPacket& recvData) auctionHouse->BuildListAuctionItems(data, _player, wsearchedname, listfrom, levelmin, levelmax, usable, auctionSlotID, auctionMainCategory, auctionSubCategory, quality, - count, totalcount); + count, totalcount, (getAll != 0 && sWorld->getIntConfig(CONFIG_AUCTION_GETALL_DELAY) != 0)); data.put<uint32>(0, count); data << (uint32) totalcount; - data << (uint32) 300; // unk 2.3.0 const? + data << (uint32) sWorld->getIntConfig(CONFIG_AUCTION_SEARCH_DELAY); SendPacket(&data); } diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 758d5af83f7..6cd8bfc014e 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -105,7 +105,7 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recvData) GameObject* go = NULL; if (guid.IsCreatureOrVehicle()) { - unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE); + unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_GOSSIP); if (!unit) { TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found or you can't interact with him.", guid.ToString().c_str()); @@ -114,10 +114,10 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recvData) } else if (guid.IsGameObject()) { - go = _player->GetMap()->GetGameObject(guid); + go = _player->GetGameObjectIfCanInteractWith(guid); if (!go) { - TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found.", guid.ToString().c_str()); + TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found or you can't interact with it.", guid.ToString().c_str()); return; } } diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index f272cd4a034..1e00c25a0c3 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -292,7 +292,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData) ObjectGuid guid; recvData >> guid; - Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE); + Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_GOSSIP); if (!unit) { TC_LOG_DEBUG("network", "WORLD: HandleGossipHelloOpcode - %s not found or you can not interact with him.", guid.ToString().c_str()); @@ -334,47 +334,6 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData) unit->AI()->sGossipHello(_player); } -/*void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recvData) -{ - TC_LOG_DEBUG("network", "WORLD: CMSG_GOSSIP_SELECT_OPTION"); - - uint32 option; - uint32 unk; - uint64 guid; - std::string code = ""; - - recvData >> guid >> unk >> option; - - if (_player->PlayerTalkClass->GossipOptionCoded(option)) - { - TC_LOG_DEBUG("network", "reading string"); - recvData >> code; - TC_LOG_DEBUG("network", "string read: %s", code.c_str()); - } - - Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE); - if (!unit) - { - TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - Unit (GUID: %u) not found or you can't interact with him.", uint32(GUID_LOPART(guid))); - return; - } - - // remove fake death - if (GetPlayer()->HasUnitState(UNIT_STATE_DIED)) - GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH); - - if (!code.empty()) - { - if (!Script->GossipSelectWithCode(_player, unit, _player->PlayerTalkClass->GossipOptionSender (option), _player->PlayerTalkClass->GossipOptionAction(option), code.c_str())) - unit->OnGossipSelect (_player, option); - } - else - { - if (!Script->OnGossipSelect (_player, unit, _player->PlayerTalkClass->GossipOptionSender (option), _player->PlayerTalkClass->GossipOptionAction (option))) - unit->OnGossipSelect (_player, option); - } -}*/ - void WorldSession::HandleSpiritHealerActivateOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: CMSG_SPIRIT_HEALER_ACTIVATE"); diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 002adc19a86..a7db18deddb 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -75,7 +75,7 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket& recvData) TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_HELLO %s", guid.ToString().c_str()); - Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE); + Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_QUESTGIVER); if (!creature) { TC_LOG_DEBUG("network", "WORLD: HandleQuestgiverHelloOpcode - %s not found or you can't interact with him.", diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 0943d9db26a..6be1fd30ae3 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -268,11 +268,8 @@ void WorldSession::HandleGameObjectUseOpcode(WorldPacket& recvData) TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_GAMEOBJ_USE Message [%s]", guid.ToString().c_str()); - if (GameObject* obj = GetPlayer()->GetMap()->GetGameObject(guid)) + if (GameObject* obj = GetPlayer()->GetGameObjectIfCanInteractWith(guid)) { - if (!obj->IsWithinDistInMap(GetPlayer(), obj->GetInteractionDistance())) - return; - // ignore for remote control state if (GetPlayer()->m_mover != GetPlayer()) if (!(GetPlayer()->IsOnVehicle(GetPlayer()->m_mover) || GetPlayer()->IsMounted()) && !obj->GetGOInfo()->IsUsableMounted()) @@ -293,17 +290,13 @@ void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket) if (_player->m_mover != _player) return; - GameObject* go = GetPlayer()->GetMap()->GetGameObject(guid); - if (!go) - return; - - if (!go->IsWithinDistInMap(_player, INTERACTION_DISTANCE)) - return; - - if (go->AI()->GossipHello(_player)) - return; + if (GameObject* go = GetPlayer()->GetGameObjectIfCanInteractWith(guid)) + { + if (go->AI()->GossipHello(_player)) + return; - _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT, go->GetEntry()); + _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT, go->GetEntry()); + } } void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 09cc9180a57..289a4d47666 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -575,6 +575,13 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_ADDON_CHANNEL] = sConfigMgr->GetBoolDefault("AddonChannel", true); m_bool_configs[CONFIG_CLEAN_CHARACTER_DB] = sConfigMgr->GetBoolDefault("CleanCharacterDB", false); m_int_configs[CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS] = sConfigMgr->GetIntDefault("PersistentCharacterCleanFlags", 0); + m_int_configs[CONFIG_AUCTION_GETALL_DELAY] = sConfigMgr->GetIntDefault("Auction.GetAllScanDelay", 900); + m_int_configs[CONFIG_AUCTION_SEARCH_DELAY] = sConfigMgr->GetIntDefault("Auction.SearchDelay", 300); + if (m_int_configs[CONFIG_AUCTION_SEARCH_DELAY] < 100 || m_int_configs[CONFIG_AUCTION_SEARCH_DELAY] > 10000) + { + TC_LOG_ERROR("server.loading", "Auction.SearchDelay (%i) must be between 100 and 10000. Using default of 300ms", m_int_configs[CONFIG_AUCTION_SEARCH_DELAY]); + m_int_configs[CONFIG_AUCTION_SEARCH_DELAY] = 300; + } m_int_configs[CONFIG_CHAT_CHANNEL_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Channel", 1); m_int_configs[CONFIG_CHAT_WHISPER_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Whisper", 1); m_int_configs[CONFIG_CHAT_SAY_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Say", 1); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index a624fd6e6a7..00b244c9efb 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -356,6 +356,8 @@ enum WorldIntConfigs CONFIG_CHARTER_COST_ARENA_5v5, CONFIG_NO_GRAY_AGGRO_ABOVE, CONFIG_NO_GRAY_AGGRO_BELOW, + CONFIG_AUCTION_GETALL_DELAY, + CONFIG_AUCTION_SEARCH_DELAY, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 7580e9a07d3..fbd199b99db 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -43,7 +43,7 @@ struct EnumName #define CREATE_NAMED_ENUM(VALUE) { VALUE, STRINGIZE(VALUE) } #define NPCFLAG_COUNT 24 -#define FLAGS_EXTRA_COUNT 18 +#define FLAGS_EXTRA_COUNT 19 EnumName<NPCFlags, int32> const npcFlagTexts[NPCFLAG_COUNT] = { @@ -164,7 +164,8 @@ EnumName<CreatureFlagsExtra> const flagsExtra[FLAGS_EXTRA_COUNT] = CREATE_NAMED_ENUM(CREATURE_FLAG_EXTRA_ALL_DIMINISH), CREATE_NAMED_ENUM(CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ), CREATE_NAMED_ENUM(CREATURE_FLAG_EXTRA_DUNGEON_BOSS), - CREATE_NAMED_ENUM(CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING) + CREATE_NAMED_ENUM(CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING), + CREATE_NAMED_ENUM(CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK) }; class npc_commandscript : public CommandScript diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index b8e7dcc91d5..f59701b9c25 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -1222,7 +1222,6 @@ class npc_kinetic_bomb : public CreatureScript _x = 0.f; _y = 0.f; _groundZ = 0.f; - me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); } void Reset() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 0f721148b72..2db9d206a00 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -317,14 +317,12 @@ class boss_professor_putricide : public CreatureScript // no possible aura seen in sniff adding the aurastate summon->ModifyAuraState(AURA_STATE_UNKNOWN22, true); summon->CastSpell(summon, SPELL_GASEOUS_BLOAT_PROC, true); - summon->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); summon->SetReactState(REACT_PASSIVE); break; case NPC_VOLATILE_OOZE: // no possible aura seen in sniff adding the aurastate summon->ModifyAuraState(AURA_STATE_UNKNOWN19, true); summon->CastSpell(summon, SPELL_OOZE_ERUPTION_SEARCH_PERIODIC, true); - summon->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); summon->SetReactState(REACT_PASSIVE); break; case NPC_CHOKING_GAS_BOMB: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index dbb00fa252e..89868fc7bf2 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -979,6 +979,9 @@ class go_celestial_planetarium_access : public GameObjectScript bool GossipHello(Player* player) override { + if (go->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE)) + return true; + bool hasKey = true; if (LockEntry const* lock = sLockStore.LookupEntry(go->GetGOInfo()->goober.lockId)) { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index c77f5b2bce3..01c4704592f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1186,6 +1186,7 @@ class npc_brann_bronzebeard_ulduar_intro : public CreatureScript { if (menuId == GOSSIP_MENU_BRANN_BRONZEBEARD && gossipListId == GOSSIP_OPTION_BRANN_BRONZEBEARD) { + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); player->PlayerTalkClass->SendCloseGossip(); if (Creature* loreKeeper = _instance->GetCreature(DATA_LORE_KEEPER_OF_NORGANNON)) loreKeeper->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); @@ -1238,6 +1239,7 @@ class npc_lorekeeper : public CreatureScript { if (menuId == GOSSIP_MENU_LORE_KEEPER && gossipListId == GOSSIP_OPTION_LORE_KEEPER) { + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); player->PlayerTalkClass->SendCloseGossip(); _instance->instance->LoadGrid(364, -16); // make sure leviathan is loaded @@ -1250,6 +1252,7 @@ class npc_lorekeeper : public CreatureScript { if (Creature* brann = _instance->GetCreature(DATA_BRANN_BRONZEBEARD_INTRO)) { + brann->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); delorah->GetMotionMaster()->MovePoint(0, brann->GetPositionX() - 4, brann->GetPositionY(), brann->GetPositionZ()); /// @todo delorah->AI()->Talk(xxxx, brann->GetGUID()); when reached at branz } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index df5877d9220..05beacca638 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -222,7 +222,6 @@ class npc_iron_roots : public CreatureScript { SetCombatMovement(false); - me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip me->setFaction(14); me->SetReactState(REACT_PASSIVE); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp index 385f7d6a69d..09d95b34521 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -380,7 +380,6 @@ class npc_saronite_vapors : public CreatureScript { Talk(EMOTE_VAPORS); instance = me->GetInstanceScript(); - me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect me->SetReactState(REACT_PASSIVE); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index 820332791c8..f435c669935 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -1634,8 +1634,11 @@ class go_mimiron_hardmode_button : public GameObjectScript public: go_mimiron_hardmode_button() : GameObjectScript("go_mimiron_hardmode_button") { } - bool OnGossipHello(Player* /*player*/, GameObject* go) + bool OnGossipHello(Player* /*player*/, GameObject* go) override { + if (go->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE)) + return true; + InstanceScript* instance = go->GetInstanceScript(); if (!instance) return false; diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 88217cb384e..1e020edd10a 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -213,7 +213,6 @@ class npc_tournament_training_dummy : public CreatureScript void Reset() override { me->SetControlled(true, UNIT_STATE_STUNNED); - me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); Initialize(); // Cast Defend spells to max stack size diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 9475da91a77..0abff255e4b 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -29,6 +29,7 @@ #include "SpellAuraEffects.h" #include "SkillDiscovery.h" #include "Battleground.h" +#include "DBCStores.h" // Generic script for handling item dummy effects which trigger another spell. class spell_item_trigger_spell : public SpellScriptLoader @@ -2630,6 +2631,43 @@ public: } }; +class spell_item_toy_train_set_pulse : public SpellScriptLoader +{ +public: + spell_item_toy_train_set_pulse() : SpellScriptLoader("spell_item_toy_train_set_pulse") { } + + class spell_item_toy_train_set_pulse_SpellScript : public SpellScript + { + PrepareSpellScript(spell_item_toy_train_set_pulse_SpellScript); + + void HandleDummy(SpellEffIndex /*index*/) + { + if (Player* target = GetHitUnit()->ToPlayer()) + { + target->HandleEmoteCommand(EMOTE_ONESHOT_TRAIN); + if (EmotesTextSoundEntry const* soundEntry = FindTextSoundEmoteFor(TEXT_EMOTE_TRAIN, target->getRace(), target->getGender())) + target->PlayDistanceSound(soundEntry->SoundId); + } + } + + void HandleTargets(std::list<WorldObject*>& targetList) + { + targetList.remove_if([](WorldObject const* obj) { return obj->GetTypeId() != TYPEID_PLAYER; }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_item_toy_train_set_pulse_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_item_toy_train_set_pulse_SpellScript::HandleTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ALLY); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_item_toy_train_set_pulse_SpellScript(); + } +}; + void AddSC_item_spell_scripts() { // 23074 Arcanite Dragonling @@ -2698,4 +2736,5 @@ void AddSC_item_spell_scripts() new spell_item_chicken_cover(); new spell_item_muisek_vessel(); new spell_item_greatmothers_soulcatcher(); + new spell_item_toy_train_set_pulse(); } diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index ef4a2b0e32f..b90839f50c5 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -41,6 +41,7 @@ go_tadpole_cage go_amberpine_outhouse go_hive_pod go_veil_skith_cage +go_toy_train_set EndContentData */ #include "ScriptMgr.h" @@ -1196,6 +1197,48 @@ public: } }; + +enum ToyTrainSpells +{ + SPELL_TOY_TRAIN_PULSE = 61551, +}; + +class go_toy_train_set : public GameObjectScript +{ + public: + go_toy_train_set() : GameObjectScript("go_toy_train_set") { } + + struct go_toy_train_setAI : public GameObjectAI + { + go_toy_train_setAI(GameObject* go) : GameObjectAI(go), _pulseTimer(3 * IN_MILLISECONDS) { } + + void UpdateAI(uint32 diff) override + { + if (diff < _pulseTimer) + _pulseTimer -= diff; + else + { + go->CastSpell(nullptr, SPELL_TOY_TRAIN_PULSE, true); + _pulseTimer = 6 * IN_MILLISECONDS; + } + } + + // triggered on wrecker'd + void DoAction(int32 /*action*/) override + { + go->Delete(); + } + + private: + uint32 _pulseTimer; + }; + + GameObjectAI* GetAI(GameObject* go) const override + { + return new go_toy_train_setAI(go); + } +}; + void AddSC_go_scripts() { new go_cat_figurine(); @@ -1231,4 +1274,5 @@ void AddSC_go_scripts() new go_veil_skith_cage(); new go_frostblade_shrine(); new go_midsummer_bonfire(); + new go_toy_train_set(); } diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 16b95e555bb..56d48949fac 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -38,6 +38,7 @@ npc_snake_trap_serpents 80% AI for snakes that summoned by Snake Trap npc_shadowfiend 100% restore 5% of owner's mana when shadowfiend die from damage npc_locksmith 75% list of keys needs to be confirmed npc_firework 100% NPC's summoned by rockets and rocket clusters, for making them cast visual +npc_train_wrecker 100% Wind-Up Train Wrecker that kills train set EndContentData */ #include "ScriptMgr.h" @@ -56,6 +57,7 @@ EndContentData */ #include "SpellHistory.h" #include "SpellAuras.h" #include "Pet.h" +#include "PetAI.h" #include "CreatureTextMgr.h" #include "SmartAI.h" @@ -519,6 +521,67 @@ public: }; /*###### +## npc_torch_tossing_target_bunny_controller +######*/ + +enum TorchTossingTarget +{ + NPC_TORCH_TOSSING_TARGET_BUNNY = 25535, + SPELL_TARGET_INDICATOR = 45723 +}; + +class npc_torch_tossing_target_bunny_controller : public CreatureScript +{ +public: + npc_torch_tossing_target_bunny_controller() : CreatureScript("npc_torch_tossing_target_bunny_controller") { } + + struct npc_torch_tossing_target_bunny_controllerAI : public ScriptedAI + { + npc_torch_tossing_target_bunny_controllerAI(Creature* creature) : ScriptedAI(creature) + { + _targetTimer = 3000; + } + + ObjectGuid DoSearchForTargets(ObjectGuid lastTargetGUID) + { + std::list<Creature*> targets; + me->GetCreatureListWithEntryInGrid(targets, NPC_TORCH_TOSSING_TARGET_BUNNY, 60.0f); + targets.remove_if([lastTargetGUID](Creature* creature) { return creature->GetGUID() == lastTargetGUID; }); + + if (!targets.empty()) + { + _lastTargetGUID = Trinity::Containers::SelectRandomContainerElement(targets)->GetGUID(); + + return _lastTargetGUID; + } + return ObjectGuid::Empty; + } + + void UpdateAI(uint32 diff) override + { + if (_targetTimer < diff) + { + if (Unit* target = ObjectAccessor::GetUnit(*me, DoSearchForTargets(_lastTargetGUID))) + target->CastSpell(target, SPELL_TARGET_INDICATOR, true); + + _targetTimer = 3000; + } + else + _targetTimer -= diff; + } + + private: + uint32 _targetTimer; + ObjectGuid _lastTargetGUID; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_torch_tossing_target_bunny_controllerAI(creature); + } +}; + +/*###### ## Triage quest ######*/ @@ -1422,7 +1485,6 @@ public: void Reset() override { me->SetControlled(true, UNIT_STATE_STUNNED);//disable rotate - me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);//imune to knock aways like blast wave _events.Reset(); _damageTimes.clear(); @@ -2387,12 +2449,289 @@ class npc_stable_master : public CreatureScript } }; +enum TrainWrecker +{ + GO_TOY_TRAIN = 193963, + SPELL_TOY_TRAIN_PULSE = 61551, + SPELL_WRECK_TRAIN = 62943, + ACTION_WRECKED = 1, + EVENT_DO_JUMP = 1, + EVENT_DO_FACING = 2, + EVENT_DO_WRECK = 3, + EVENT_DO_DANCE = 4, + MOVEID_CHASE = 1, + MOVEID_JUMP = 2 +}; +class npc_train_wrecker : public CreatureScript +{ + public: + npc_train_wrecker() : CreatureScript("npc_train_wrecker") { } + + struct npc_train_wreckerAI : public NullCreatureAI + { + npc_train_wreckerAI(Creature* creature) : NullCreatureAI(creature), _isSearching(true), _nextAction(0), _timer(1 * IN_MILLISECONDS) { } + + GameObject* VerifyTarget() const + { + if (GameObject* target = ObjectAccessor::GetGameObject(*me, _target)) + return target; + me->HandleEmoteCommand(EMOTE_ONESHOT_RUDE); + me->DespawnOrUnsummon(3 * IN_MILLISECONDS); + return nullptr; + } + + void UpdateAI(uint32 diff) override + { + if (_isSearching) + { + if (diff < _timer) + _timer -= diff; + else + { + if (GameObject* target = me->FindNearestGameObject(GO_TOY_TRAIN, 15.0f)) + { + _isSearching = false; + _target = target->GetGUID(); + me->SetWalk(true); + me->GetMotionMaster()->MovePoint(MOVEID_CHASE, target->GetNearPosition(3.0f, target->GetAngle(me))); + } + else + _timer = 3 * IN_MILLISECONDS; + } + } + else + { + switch (_nextAction) + { + case EVENT_DO_JUMP: + if (GameObject* target = VerifyTarget()) + me->GetMotionMaster()->MoveJump(*target, 5.0, 10.0, MOVEID_JUMP); + _nextAction = 0; + break; + case EVENT_DO_FACING: + if (GameObject* target = VerifyTarget()) + { + me->SetFacingTo(target->GetOrientation()); + me->HandleEmoteCommand(EMOTE_ONESHOT_ATTACK1H); + _timer = 1.5 * IN_MILLISECONDS; + _nextAction = EVENT_DO_WRECK; + } + else + _nextAction = 0; + break; + case EVENT_DO_WRECK: + if (diff < _timer) + { + _timer -= diff; + break; + } + if (GameObject* target = VerifyTarget()) + { + me->CastSpell(target, SPELL_WRECK_TRAIN, false); + target->AI()->DoAction(ACTION_WRECKED); + _timer = 2 * IN_MILLISECONDS; + _nextAction = EVENT_DO_DANCE; + } + else + _nextAction = 0; + break; + case EVENT_DO_DANCE: + if (diff < _timer) + { + _timer -= diff; + break; + } + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_DANCE); + me->DespawnOrUnsummon(5 * IN_MILLISECONDS); + _nextAction = 0; + break; + default: + break; + } + } + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + if (id == MOVEID_CHASE) + _nextAction = EVENT_DO_JUMP; + else if (id == MOVEID_JUMP) + _nextAction = EVENT_DO_FACING; + } + + private: + bool _isSearching; + uint8 _nextAction; + uint32 _timer; + ObjectGuid _target; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_train_wreckerAI(creature); + } +}; + +enum EgbertMisc +{ + EVENT_MOVE_POS = 1, + EVENT_RETURN = 2 +}; + +class npc_egbert : public CreatureScript +{ +public: + npc_egbert() : CreatureScript("npc_egbert") {} + + struct npc_egbertAI : public PetAI + { + npc_egbertAI(Creature* creature) : PetAI(creature) + { + if (Unit* owner = me->GetCharmerOrOwner()) + if (owner->GetMap()->GetEntry()->addon > 1) + me->SetCanFly(true); + } + + void Reset() override + { + _events.Reset(); + _events.ScheduleEvent(EVENT_MOVE_POS, urandms(1, 20)); + } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_MOVE_POS: + if (Unit* owner = me->GetCharmerOrOwner()) + { + me->GetMotionMaster()->Clear(); + me->GetMotionMaster()->MovePoint(0, owner->GetPositionX() + frand(-30.0f, 30.0f), owner->GetPositionY() + frand(-30.0f, 30.0f), owner->GetPositionZ()); + } + _events.ScheduleEvent(EVENT_RETURN, urandms(3, 4)); + break; + case EVENT_RETURN: + if (Unit* owner = me->GetCharmerOrOwner()) + me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, me->GetFollowAngle()); + _events.ScheduleEvent(EVENT_MOVE_POS, urandms(1, 20)); + break; + default: + break; + } + } + } + private: + EventMap _events; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_egbertAI(creature); + } +}; + +enum PandarenMonkMisc +{ + SPELL_PANDAREN_MONK = 69800, + EVENT_FOCUS = 1, + EVENT_EMOTE = 2, + EVENT_FOLLOW = 3, + EVENT_DRINK = 4 +}; + +class npc_pandaren_monk : public CreatureScript +{ +public: + npc_pandaren_monk() : CreatureScript("npc_pandaren_monk") {} + + struct npc_pandaren_monkAI : public NullCreatureAI + { + npc_pandaren_monkAI(Creature* creature) : NullCreatureAI(creature) { } + + void Reset() override + { + _events.Reset(); + _events.ScheduleEvent(EVENT_FOCUS, 1000); + } + + void EnterEvadeMode(EvadeReason why) override + { + if (!_EnterEvadeMode(why)) + return; + + Reset(); + } + + void ReceiveEmote(Player* /*player*/, uint32 emote) override + { + me->InterruptSpell(CURRENT_CHANNELED_SPELL); + me->StopMoving(); + + switch (emote) + { + case TEXT_EMOTE_BOW: + _events.ScheduleEvent(EVENT_FOCUS, 1000); + break; + case TEXT_EMOTE_DRINK: + _events.ScheduleEvent(EVENT_DRINK, 1000); + break; + } + } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + if (Unit* owner = me->GetCharmerOrOwner()) + if (!me->IsWithinDist(owner, 30.f)) + me->InterruptSpell(CURRENT_CHANNELED_SPELL); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_FOCUS: + if (Unit* owner = me->GetCharmerOrOwner()) + me->SetFacingToObject(owner); + _events.ScheduleEvent(EVENT_EMOTE, 1000); + break; + case EVENT_EMOTE: + me->HandleEmoteCommand(EMOTE_ONESHOT_BOW); + _events.ScheduleEvent(EVENT_FOLLOW, 1000); + break; + case EVENT_FOLLOW: + if (Unit* owner = me->GetCharmerOrOwner()) + me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + break; + case EVENT_DRINK: + me->CastSpell(me, SPELL_PANDAREN_MONK, false); + break; + default: + break; + } + } + } + private: + EventMap _events; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_pandaren_monkAI(creature); + } +}; + void AddSC_npcs_special() { new npc_air_force_bots(); new npc_lunaclaw_spirit(); new npc_chicken_cluck(); new npc_dancing_flames(); + new npc_torch_tossing_target_bunny_controller(); new npc_doctor(); new npc_injured_patient(); new npc_garments_of_quests(); @@ -2410,4 +2749,7 @@ void AddSC_npcs_special() new npc_spring_rabbit(); new npc_imp_in_a_ball(); new npc_stable_master(); + new npc_train_wrecker(); + new npc_egbert(); + new npc_pandaren_monk(); } diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 5b07dde22bb..217995cb88a 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -406,6 +406,24 @@ CleanCharacterDB = 0 PersistentCharacterCleanFlags = 0 # +# Auction.GetAllScanDelay +# Description: Sets the minimum time in seconds, a single player character can perform a getall scan. +# The value is only held in memory so a server restart will clear it. +# Setting this to zero, will disable GetAll functions completely. +# Default: 900 - (GetAll scan limited to once every 15mins per player character) + +Auction.GetAllScanDelay = 900 + +# +# Auction.SearchDelay +# Description: Sets the minimum time in milliseconds (seconds x 1000), that the client must wait between +# auction search operations. This can be increased if somehow Auction House activity is causing +# too much load. +# Default: 300 - (Time delay between auction searches set to 0.3secs) + +Auction.SearchDelay = 300 + +# ################################################################################################### ################################################################################################### |