diff options
20 files changed, 581 insertions, 38 deletions
diff --git a/sql/updates/world/2012_02_01_00_world_sai.sql b/sql/updates/world/2012_01_02_00_world_sai.sql index 3b9abd4c746..3b9abd4c746 100644 --- a/sql/updates/world/2012_02_01_00_world_sai.sql +++ b/sql/updates/world/2012_01_02_00_world_sai.sql diff --git a/sql/updates/world/2012_01_02_01_world_game_event.sql b/sql/updates/world/2012_01_02_01_world_game_event.sql new file mode 100644 index 00000000000..11267a6b296 --- /dev/null +++ b/sql/updates/world/2012_01_02_01_world_game_event.sql @@ -0,0 +1,4 @@ +-- More Darkmoon Faerie synchronization +UPDATE `game_event` SET `start_time`='2012-02-05 00:01:00' WHERE `eventEntry`=3; +UPDATE `game_event` SET `start_time`='2012-03-04 00:01:00' WHERE `eventEntry`=4; +UPDATE `game_event` SET `start_time`='2012-01-01 00:01:00' WHERE `eventEntry`=5; diff --git a/sql/updates/world/2012_01_02_02_world_creature_template.sql b/sql/updates/world/2012_01_02_02_world_creature_template.sql new file mode 100644 index 00000000000..ed95c4450fd --- /dev/null +++ b/sql/updates/world/2012_01_02_02_world_creature_template.sql @@ -0,0 +1,21 @@ +-- Kill xp exploit, mobs spawned by portal keepers don't gives xp on retail. (ie mobs 30662, 30664) +UPDATE `creature_template` SET `flags_extra`= `flags_extra`|64 WHERE `entry` IN ( +-- NORMAL +30661, -- CREATURE_AZURE_INVADER_1 +30961, -- CREATURE_AZURE_INVADER_2 +30662, -- CREATURE_AZURE_SPELLBREAKER_1 +30962, -- CREATURE_AZURE_SPELLBREAKER_2 +30663, -- CREATURE_AZURE_BINDER_1 +30918, -- CREATURE_AZURE_BINDER_2 +30664, -- CREATURE_AZURE_MAGE_SLAYER_1 +30963, -- CREATURE_AZURE_MAGE_SLAYER_2 +-- HEROIC: +31487, -- Azure Invader +31494, -- Azure Spellbreaker +31483, -- Azure Binder +31497, -- Azure Mage Slayer +31484, -- Azure Binder +31488, -- Azure Invader +31495, -- Azure Spellbreaker +31498 -- Azure Mage Slayer +); diff --git a/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql b/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql new file mode 100644 index 00000000000..282fc58dd3b --- /dev/null +++ b/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql @@ -0,0 +1,57 @@ +-- The Oculus hero +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (31558, 31561, 31560, 31559, 30901, 30902, 30903, 30904, 30905, 30906, 30907, 30908, 30909, 30910, 30911, 30912, 30913, 30914, 30991, 30915, 30916, 30879); +INSERT INTO `creature_onkill_reputation` VALUES +(31558, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(31561, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(31560, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(31559, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30901, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30902, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30903, 1037, 1052, 7, 0, 30, 7, 0, 30, 1), +(30904, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30905, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30991, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30906, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30907, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30908, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30909, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30910, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30911, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30912, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30913, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30914, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30879, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30915, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30916, 1037, 1052, 7, 0, 15, 7, 0, 15, 1); + +-- Utgarde Pinnacle hero +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (30774, 30788, 30807, 30810, 30756, 30762, 30764, 30765, 30766, 30767, 30770, 30772, 30779, 30790, 30803, 30775, 30791, 30804, 30806, 30809, 30816, 30817, 30818, 30819, 30820, 30821, 30822, 30823); +INSERT INTO `creature_onkill_reputation` VALUES +(30774, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30788, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30807, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30810, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30756, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30762, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30764, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30765, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30766, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30767, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30770, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30772, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30779, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30790, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30803, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30775, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30791, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30804, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30806, 1037, 1052, 7, 0, 30, 7, 0, 30, 1), +(30809, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30816, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30817, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30818, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30819, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30820, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30821, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30822, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30823, 1037, 1052, 7, 0, 2, 7, 0, 2, 1); diff --git a/sql/updates/world/2012_01_03_00_world_gossip_menu.sql b/sql/updates/world/2012_01_03_00_world_gossip_menu.sql new file mode 100644 index 00000000000..9e9bba43b1a --- /dev/null +++ b/sql/updates/world/2012_01_03_00_world_gossip_menu.sql @@ -0,0 +1,17 @@ +-- Gossip Menu insert from sniff +DELETE FROM `gossip_menu` WHERE `entry`=9918 AND `text_id`=13792; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9918,13792); +DELETE FROM `gossip_menu` WHERE `entry`=9859 AND `text_id`=13650; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9859,13650); +DELETE FROM `gossip_menu` WHERE `entry`=9857 AND `text_id`=13651; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9857,13651); +-- Creature Gossip_menu_id Update from sniff +UPDATE `creature_template` SET `gossip_menu_id`=10316 WHERE `entry`=33224; +UPDATE `creature_template` SET `gossip_menu_id`=9918 WHERE `entry`=29430; +UPDATE `creature_template` SET `gossip_menu_id`=9859 WHERE `entry`=29434; +-- Creature Gossip_menu_option Update from sniff +DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (10316,9857,9917) AND `id` IN (0); +INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES +(10316,0,0, 'Glad to help, my lady. I''m told you were once the guardian of a fabled sword. Do you know where I might find it?',1,1,10315,0,0,0, ''), +(9857,0,0, 'I''m ready - lets get you out of here.',1,1,0,0,0,0, ''), +(9917,0,0, 'I am ready to head further into Storm Peaks.',1,1,0,0,0,0, ''); diff --git a/sql/updates/world/2012_01_03_01_world_quest_template.sql b/sql/updates/world/2012_01_03_01_world_quest_template.sql new file mode 100644 index 00000000000..f35ea3be65b --- /dev/null +++ b/sql/updates/world/2012_01_03_01_world_quest_template.sql @@ -0,0 +1 @@ +UPDATE `quest_template` SET `OfferRewardText`='<Getry looks you over.>$B$BThis is all Ickoris could send?' WHERE `id`=11703; diff --git a/sql/updates/world/2012_01_03_02_world_sai.sql b/sql/updates/world/2012_01_03_02_world_sai.sql new file mode 100644 index 00000000000..61ae8aab575 --- /dev/null +++ b/sql/updates/world/2012_01_03_02_world_sai.sql @@ -0,0 +1,27 @@ +-- Add text for Lynn Hyal +DELETE FROM `creature_text` WHERE `entry`=23768; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES +(23768, 1, 0, 'James? James... No, you\'re not James, but I know who you are...', 12, 0, 100, 0, 0, 0, 'Lynn Hyal'), +(23768, 2, 0, 'You\'re the one who tracked down the brutes who did this to us.', 12, 0, 100, 0, 0, 0, 'Lynn Hyal'), +(23768, 3, 0, 'I tried so hard to tell Jim... to tell anyone... who was behind this, but I couldn\'t find a way...', 12, 0, 100, 0, 0, 0, 'Lynn Hyal'), +(23768, 4, 0, 'Thank you for helping us and for helping Jim. If you see him, tell him little Jimmy and I love him and that we\'re waiting for him.', 12, 0, 100, 0, 0, 0, 'Lynn Hyal'), +(23768, 5, 0, 'I don\'t know when we\'ll see Daddy again, Jimmy, but I know he loves you and he misses you very much.', 12, 0, 100, 0, 0, 0, 'Lynn Hyal'); +-- Add text for Jimmy Hyal +DELETE FROM `creature_text` WHERE `entry`=23769; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES +(23769, 1, 0, 'Mommy, when will we see Daddy again?', 12, 0, 100, 0, 0, 0, 'Jimmy Hyal'); +-- add smart ai dialog for Lynn Hyal and quest credit at end of dialog +UPDATE `creature_template` SET AIName="SmartAI" WHERE `entry`=23768; +DELETE FROM `smart_scripts` WHERE `entryorguid`=23768; +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 +(23768, 0, 0, 0, 1, 0, 100, 1, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lynn Hyal - on spawn - talk 1'), +(23768, 0, 1, 0, 1, 0, 100, 1, 2000, 2000, 0, 0, 84, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lynn Hyal - after 2 sec - talk 2'), +(23768, 0, 2, 0, 1, 0, 100, 1, 5000, 5000, 0, 0, 84, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lynn Hyal - after 5 sec - talk 3'), +(23768, 0, 3, 0, 1, 0, 100, 1, 8000, 8000, 0, 0, 84, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lynn Hyal - after 8 sec - talk 4'), +(23768, 0, 4, 0, 1, 0, 100, 1, 12000, 12000, 0, 0, 84, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lynn Hyal - after 12 sec - reply to jimmy'), +(23768, 0, 5, 0, 1, 0, 100, 1, 12000, 12000, 0, 0, 33, 23768, 0, 0, 0, 0, 0, 18, 5, 0, 0, 0, 0, 0, 0, 'Lynn Hyal - after 12 sec - kill credit quest complete'); +-- add smart ai dialog for Jimmy Hyal +UPDATE `creature_template` SET AIName="SmartAI" WHERE `entry`=23769; +DELETE FROM `smart_scripts` WHERE `entryorguid`=23769; +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 +(23769, 0, 0, 0, 1, 0, 100, 1, 10000, 10000, 0, 0, 84, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Jimmy Hyal - after 10 sec - talk 1'); diff --git a/sql/updates/world/2012_01_03_03_world_creature_template.sql b/sql/updates/world/2012_01_03_03_world_creature_template.sql new file mode 100644 index 00000000000..29d0e802abe --- /dev/null +++ b/sql/updates/world/2012_01_03_03_world_creature_template.sql @@ -0,0 +1,2 @@ +-- Update faction for Frostmane Troll Whelp "From Sniff" +UPDATE `creature_template` SET `faction_A`=7,`faction_H`=7 WHERE `entry`=706; diff --git a/sql/updates/world/2012_01_03_04_world_gameobject_questrelation.sql b/sql/updates/world/2012_01_03_04_world_gameobject_questrelation.sql new file mode 100644 index 00000000000..519fa99e2d5 --- /dev/null +++ b/sql/updates/world/2012_01_03_04_world_gameobject_questrelation.sql @@ -0,0 +1,8 @@ +DELETE FROM `gameobject_questrelation` WHERE `quest` IN (12345, 12377); +INSERT INTO `gameobject_questrelation` VALUES +(190035, 12345), +(190079, 12377); +DELETE FROM `gameobject_involvedrelation` WHERE `quest` IN (12345, 12377); +INSERT INTO `gameobject_involvedrelation` VALUES +(190035, 12345), +(190079, 12377); diff --git a/sql/updates/world/2012_01_03_05_world_creature.sql b/sql/updates/world/2012_01_03_05_world_creature.sql new file mode 100644 index 00000000000..b30ca2d5ef4 --- /dev/null +++ b/sql/updates/world/2012_01_03_05_world_creature.sql @@ -0,0 +1,180 @@ +SET @GUID := 72707; -- need 62; +SET @NPC_WILDSPAWN_SATYR = 11451; +SET @NPC_WILDSPAWN_ROGUE := 11452; +SET @NPC_WILDSPAWN_BETRAYER := 11454; +SET @NPC_WILDSPAWN_FELSWORN := 11455; +SET @NPC_WILDSPAWN_SHADOWSTALKER := 11456; +SET @NPC_WILDSPAWN_HELLCALLER := 11457; +SET @NPC_WARPWOOD_TREANT = 11462; +SET @NPC_WARPWOOD_CRUSHER := 13021; +SET @NPC_WHIP_LASHER := 13022; +SET @NPC_PHASE_LASHER := 13196; +SET @NPC_FEL_LASH := 13197; + +-- add movement +SET @ENTRY := 56992; -- single Wildspawn Felsworn instance +UPDATE creature SET `MovementType`=2 WHERE `guid`=@ENTRY; +DELETE FROM `creature_addon` WHERE `guid`=@ENTRY; +INSERT INTO `creature_addon`(`guid`,`path_id`) VALUES +(@ENTRY,@ENTRY*10); + +-- Add waypoints to Wildspawn Felsworn instance +DELETE FROM `waypoint_data` WHERE `id`=@ENTRY*10; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@ENTRY*10,1,57.4000,-737.329,-25.1524,0,0,0,100,0), +(@ENTRY*10,2,26.45,-682.69,-24.98,0,0,0,100,0); + +-- Smart AI for Wildspawn Shadowstalker +SET @ENTRY := @NPC_WILDSPAWN_SHADOWSTALKER; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE creature SET `MovementType`=1,`spawndist`=3 WHERE `id`=@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,11,0,100,0,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Shadowstalker - On Spawn - cast Sneak on self'), +(@ENTRY,0,1,0,0,0,100,0,4000,8000,5000,8000,11,22416,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Shadowstalker - In Combat - Cast Backstab'), +(@ENTRY,0,2,0,0,0,100,0,6000,7000,8000,9000,11,7992,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Shadowstalker - In Combat - Cast Slowing Posion'); + +-- add movement +SET @ENTRY := 56967; -- single Wildspawn Shadowstalker instance +UPDATE creature SET `MovementType`=2 WHERE `guid`=@ENTRY; +DELETE FROM `creature_addon` WHERE `guid`=@ENTRY; +INSERT INTO `creature_addon`(`guid`,`path_id`) VALUES +(@ENTRY,@ENTRY*10); + +-- Add waypoints to Wildspawn Shadowstalker instance +DELETE FROM `waypoint_data` WHERE `id`=@ENTRY*10; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@ENTRY*10,1,45.4305,-675.9378,-25.1612,0,0,0,100,0), +(@ENTRY*10,2,36.5939,-646.3212,-25.1506,0,0,0,100,0), +(@ENTRY*10,3,58.3292,-605.7308,-25.0700,0,0,0,100,0), +(@ENTRY*10,4,52.3244,-584.9519,-23.3673,0,0,0,100,0), +(@ENTRY*10,5,52.1407,-565.7738,-19.4151,0,0,0,100,0), +(@ENTRY*10,6,56.5794,-558.3062,-19.2307,0,0,0,100,0), +(@ENTRY*10,7,76.8705,-545.9866,-15.2457,0,0,0,100,0), +(@ENTRY*10,8,97.9787,-544.0214,-11.0777,0,0,0,100,0), +(@ENTRY*10,9,76.8705,-545.9866,-15.2457,0,0,0,100,0), +(@ENTRY*10,10,56.5794,-558.3062,-19.2307,0,0,0,100,0), +(@ENTRY*10,11,52.1407,-565.7738,-19.4151,0,0,0,100,0), +(@ENTRY*10,12,52.3244,-584.9519,-23.3673,0,0,0,100,0), +(@ENTRY*10,13,58.3292,-605.7308,-25.0700,0,0,0,100,0), +(@ENTRY*10,14,36.5939,-646.3212,-25.1506,0,0,0,100,0), +(@ENTRY*10,15,45.4305,-675.9378,-25.1612,0,0,0,100,0), +(@ENTRY*10,16,62.53,-681.04,-24.98,0,0,0,100,0); + +-- Spawn the mobs +DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+62; +INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES +(@GUID+1,@NPC_WARPWOOD_TREANT,429,1,1,0,0,72.5524,-197.561,-4.14211,3.13356,7200,0,0,7842,0,2), +(@GUID+2,@NPC_WARPWOOD_TREANT,429,1,1,0,0,20.3687,-203.068,-4.0968,3.10349,7200,0,0,7842,0,2), +(@GUID+3,@NPC_WARPWOOD_TREANT,429,1,1,0,0,30.1582,-195.841,-4.12466,3.01317,7200,0,0,7599,0,2), +(@GUID+4,@NPC_WARPWOOD_TREANT,429,1,1,0,0,25.8537,-206.521,-4.06996,3.01317,7200,0,0,7599,0,2), +(@GUID+5,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-107.769,-200.032,-4.10429,0.153016,7200,0,0,7842,0,2), +(@GUID+6,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-113.89,-195.466,-4.14424,0.0626954,7200,0,0,7842,0,2), +(@GUID+7,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-117.388,-207.58,-4.06716,0.0476419,7200,0,0,7842,0,2), +(@GUID+8,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-142.675,-350.105,-4.11237,1.70352,7200,0,0,7599,0,2), +(@GUID+9,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-145.689,-356.994,-4.13712,1.66338,7200,0,0,7599,0,2), +(@GUID+10,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-138.62,-360.106,-4.13313,1.66338,7200,0,0,7599,0,2), +(@GUID+11,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-115.225,-347.295,-4.05097,6.26559,7200,0,0,7599,0,2), +(@GUID+12,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-109.451,-350.449,-4.07628,6.28064,7200,0,0,7599,0,2), +(@GUID+13,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-120.637,-353.502,-4.10136,6.26747,7200,0,0,7842,0,2), +(@GUID+14,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-46.8699,-355.781,-4.11898,0.109725,7200,0,0,7599,0,2), +(@GUID+15,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-57.5391,-352.691,-4.09353,0.121943,7200,0,0,7842,0,2), +(@GUID+16,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-60.9243,-359.466,-4.14508,0.0617289,7200,0,0,7842,0,2), +(@GUID+17,@NPC_WARPWOOD_TREANT,429,1,1,0,0,54.2367,-348.114,-4.05781,6.25459,7200,0,0,7599,0,2), +(@GUID+18,@NPC_WARPWOOD_TREANT,429,1,1,0,0,43.279,-352.861,-4.0973,0.0633858,7200,0,0,7842,0,2), +(@GUID+19,@NPC_WARPWOOD_TREANT,429,1,1,0,0,39.8267,-343.521,-4.02135,6.18098,7200,0,0,7842,0,2), +(@GUID+20,@NPC_WARPWOOD_TREANT,429,1,1,0,0,111.859,-366.456,-4.14992,1.56459,7200,0,0,7842,0,2), +(@GUID+21,@NPC_WARPWOOD_TREANT,429,1,1,0,0,116.012,-372.374,-4.09262,1.52947,7200,0,0,7842,0,2), +(@GUID+22,@NPC_WARPWOOD_TREANT,429,1,1,0,0,107.625,-377.033,-4.07882,1.53449,7200,0,0,7842,0,2), +(@GUID+23,@NPC_WARPWOOD_CRUSHER,429,1,1,0,0,141.391,-355.109,-4.15258,3.22692,7200,0,0,16194,0,0), +(@GUID+24,@NPC_PHASE_LASHER,429,1,1,0,0,81.2447,-361.592,-4.14699,1.54781,7200,0,0,15684,0,0), +(@GUID+25,@NPC_WHIP_LASHER,429,1,1,0,0,34.9898,-347.58,-4.05484,0.017372,7200,0,0,1900,0,0), +(@GUID+26,@NPC_WHIP_LASHER,429,1,1,0,0,36.7793,-352.448,-4.09411,0.00231851,7200,0,0,1900,0,0), +(@GUID+27,@NPC_WHIP_LASHER,429,1,1,0,0,41.2793,-352.437,-4.09411,0.00231851,7200,0,0,1900,0,0), +(@GUID+28,@NPC_WHIP_LASHER,429,1,1,0,0,44.3212,-352.43,-4.09411,0.00231851,7200,0,0,1900,0,0), +(@GUID+29,@NPC_WHIP_LASHER,429,1,1,0,0,44.315,-349.742,-4.07234,0.0588672,7200,0,0,1900,0,0), +(@GUID+30,@NPC_WHIP_LASHER,429,1,1,0,0,39.4515,-350.029,-4.0749,0.063885,7200,0,0,1900,0,0), +(@GUID+31,@NPC_WHIP_LASHER,429,1,1,0,0,39.2745,-347.262,-4.05348,0.063885,7200,0,0,1900,0,0), +(@GUID+32,@NPC_WARPWOOD_CRUSHER,429,1,1,0,0,-20.953,-371.52,-4.05577,1.58638,7200,0,0,16194,0,0), +(@GUID+33,@NPC_PHASE_LASHER,429,1,1,0,0,-52.0524,-361.703,-4.14598,1.7679,7200,0,0,15684,0,0), +(@GUID+34,@NPC_WHIP_LASHER,429,1,1,0,0,-62.1186,-349.8,-4.07015,6.09414,7200,0,0,1900,0,0), +(@GUID+35,@NPC_WHIP_LASHER,429,1,1,0,0,-69.5873,-354.282,-4.1069,6.17944,7200,0,0,1900,0,0), +(@GUID+36,@NPC_WHIP_LASHER,429,1,1,0,0,-66.7331,-351.805,-4.08577,6.18948,7200,0,0,1900,0,0), +(@GUID+37,@NPC_WHIP_LASHER,429,1,1,0,0,-73.9811,-351.124,-4.08116,6.18948,7200,0,0,1900,0,0), +(@GUID+38,@NPC_WHIP_LASHER,429,1,1,0,0,-69.8854,-349.117,-4.06468,6.2798,7200,0,0,1900,0,0), +(@GUID+39,@NPC_WHIP_LASHER,429,1,1,0,0,-65.6902,-346.108,-4.0402,6.2798,7200,0,0,1900,0,0), +(@GUID+40,@NPC_WARPWOOD_CRUSHER,429,1,1,0,0,-73.7821,-346.08,-4.0402,6.2798,7200,0,0,1900,0,0), +(@GUID+41,@NPC_WARPWOOD_TREANT,429,1,1,0,0,-93.8011,-363.618,-4.14738,1.65316,7200,0,0,16194,0,0), +(@GUID+42,@NPC_PHASE_LASHER,429,1,1,0,0,-131.311,-365.627,-4.15058,1.51265,7200,0,0,15198,0,0), +(@GUID+43,@NPC_WHIP_LASHER,429,1,1,0,0,-143.839,-340.391,-4.12014,1.83881,7200,0,0,1900,0,0), +(@GUID+44,@NPC_WHIP_LASHER,429,1,1,0,0,-142.296,-336.529,-4.10736,1.85386,7200,0,0,1900,0,0), +(@GUID+45,@NPC_WHIP_LASHER,429,1,1,0,0,-138.49,-341.197,-4.07808,1.73845,7200,0,0,1900,0,0), +(@GUID+46,@NPC_WHIP_LASHER,429,1,1,0,0,-134.462,-337.194,-4.04726,1.70944,7200,0,0,1900,0,0), +(@GUID+47,@NPC_WHIP_LASHER,429,1,1,0,0,-135.424,-330.303,-4.0528,1.70944,7200,0,0,1900,0,0), +(@GUID+48,@NPC_WHIP_LASHER,429,1,1,0,0,-142.163,-331.244,-4.1045,1.71445,7200,0,0,1900,0,0), +(@GUID+49,@NPC_WHIP_LASHER,429,1,1,0,0,-138.62,-333.245,-4.07944,1.71947,7200,0,0,1900,0,0), +(@GUID+50,@NPC_WARPWOOD_CRUSHER,429,1,1,0,0,-138.38,-275.724,-4.07674,3.17049,7200,0,0,16194,0,0), +(@GUID+51,@NPC_PHASE_LASHER,429,1,1,0,0,-162.835,-275.863,-4.14791,6.27238,7200,0,0,15684,0,0), +(@GUID+52,@NPC_WHIP_LASHER,429,1,1,0,0,-158.318,-204.325,-4.15232,0.0694766,7200,0,0,1900,0,0), +(@GUID+53,@NPC_WHIP_LASHER,429,1,1,0,0,-154.646,-204.07,-4.15232,0.0694766,7200,0,0,1900,0,0), +(@GUID+54,@NPC_WHIP_LASHER,429,1,1,0,0,-153.089,-196.695,-4.15243,0.0343519,7200,0,0,1900,0,0), +(@GUID+55,@NPC_WHIP_LASHER,429,1,1,0,0,-160.393,-196.946,-4.15243,0.0343519,7200,0,0,1900,0,0), +(@GUID+56,@NPC_WHIP_LASHER,429,1,1,0,0,-162.052,-201.486,-4.15243,0.0393697,7200,0,0,1900,0,0), +(@GUID+57,@NPC_WHIP_LASHER,429,1,1,0,0,-152.686,-201.117,-4.15243,0.0393697,7200,0,0,1900,0,0), +(@GUID+58,@NPC_WHIP_LASHER,429,1,1,0,0,-156.996,-199.83,-4.15243,0.059441,7200,0,0,1900,0,0), +(@GUID+59,@NPC_PHASE_LASHER,429,1,1,0,0,-86.8965,-210.681,-4.03141,1.56479,7200,0,0,15198,0,0), +(@GUID+60,@NPC_WARPWOOD_CRUSHER,429,1,1,0,0,-87.0174,-180.571,-2.71439,4.76202,7200,0,0,16194,0,0), +(@GUID+61,@NPC_PHASE_LASHER,429,1,1,0,0,-27.3846,-207.58,-4.06107,0.888256,7200,0,0,15684,0,0), +(@GUID+62,@NPC_WARPWOOD_CRUSHER,429,1,1,0,0,-15.3937,-177.684,-2.71439,4.81219,7200,0,0,16194,0,0); + +-- Add movement to some mobs +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @GUID+1 AND @GUID+22; +INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES +(@GUID+1,(@GUID+1)*10), +(@GUID+2,(@GUID+2)*10), +(@GUID+3,(@GUID+2)*10), +(@GUID+4,(@GUID+2)*10), +(@GUID+5,(@GUID+6)*10), +(@GUID+6,(@GUID+6)*10), +(@GUID+7,(@GUID+6)*10), +(@GUID+8,(@GUID+8)*10), +(@GUID+9,(@GUID+8)*10), +(@GUID+10,(@GUID+8)*10), +(@GUID+11,(@GUID+11)*10), +(@GUID+12,(@GUID+11)*10), +(@GUID+13,(@GUID+11)*10), +(@GUID+14,(@GUID+14)*10), +(@GUID+15,(@GUID+14)*10), +(@GUID+16,(@GUID+14)*10), +(@GUID+17,(@GUID+17)*10), +(@GUID+18,(@GUID+17)*10), +(@GUID+19,(@GUID+17)*10), +(@GUID+20,(@GUID+20)*10), +(@GUID+21,(@GUID+20)*10), +(@GUID+22,(@GUID+20)*10); + +-- Add waypoints to mobs +DELETE FROM `waypoint_data` WHERE `id` = (@GUID+1)*10; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +((@GUID+1)*10,1,70.6901,-197.173,-4.14434,0,1,0,100,0), +((@GUID+1)*10,2,-104.169,-199.817,-4.12389,0,1,0,100,0), +((@GUID+2)*10,1,-73.5443,-202.239,-4.10251,0,1,0,100,0), +((@GUID+2)*10,2,35.4205,-201.467,-4.11061,0,1,0,100,0), +((@GUID+6)*10,1,-20.2122,-201.982,-4.11082,0,1,0,100,0), +((@GUID+6)*10,2,-130.665,-201.733,-4.10813,0,1,0,100,0), +((@GUID+8)*10,1,-166.248,-199.501,-4.15228,0,1,0,100,0), +((@GUID+8)*10,2,-131.595,-354.127,-4.10839,0,1,0,100,0), +((@GUID+11)*10,1,-35.5988,-348.525,-4.06037,0,1,0,100,0), +((@GUID+11)*10,2,-21.0353,-356.517,-4.12553,0,1,0,100,0), +((@GUID+11)*10,3,4.10672,-354.436,-4.11233,0,1,0,100,0), +((@GUID+11)*10,4,-62.8668,-351.204,-4.083,0,1,0,100,0), +((@GUID+11)*10,5,-113.908,-346.958,-4.04887,0,1,0,100,0), +((@GUID+14)*10,1,49.0152,-351.975,-4.09131,0,1,0,100,0), +((@GUID+14)*10,2,-68.801,-355.361,-4.11568,0,1,0,100,0), +((@GUID+17)*10,1,140.938,-354.573,-4.15133,0,1,0,100,0), +((@GUID+17)*10,2, -17.9066,-352.038,-4.09042,0,1,0,100,0), +((@GUID+20)*10,1,134.04,-337.362,-4.14977,0,1,0,100,0), +((@GUID+20)*10,2,117.337,-367.835,-4.15199,0,1,0,100,0), +((@GUID+20)*10,3,68.2814,-346.911,-4.04935,0,1,0,100,0), +((@GUID+20)*10,4,111.089,-364.118,-4.14948,0,1,0,100,0); diff --git a/sql/updates/world/2012_01_03_06_world_sai.sql b/sql/updates/world/2012_01_03_06_world_sai.sql new file mode 100644 index 00000000000..858dc3f498d --- /dev/null +++ b/sql/updates/world/2012_01_03_06_world_sai.sql @@ -0,0 +1,82 @@ +SET @NPC_WILDSPAWN_SATYR = 11451; +SET @NPC_WILDSPAWN_ROGUE := 11452; +SET @NPC_WILDSPAWN_BETRAYER := 11454; +SET @NPC_WILDSPAWN_FELSWORN := 11455; +SET @NPC_WILDSPAWN_SHADOWSTALKER := 11456; +SET @NPC_WILDSPAWN_HELLCALLER := 11457; +SET @NPC_WARPWOOD_TREANT = 11462; +SET @NPC_WARPWOOD_CRUSHER := 13021; +SET @NPC_WHIP_LASHER := 13022; +SET @NPC_PHASE_LASHER := 13196; +SET @NPC_FEL_LASH := 13197; + +-- SmartAI for Wildspawn Hellcaller +SET @ENTRY := @NPC_WILDSPAWN_HELLCALLER; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE creature SET `MovementType`=1,`spawndist`=3 WHERE `id`=@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,4,0,100,0,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - On Aggro - Prevent Combat Movement'), +(@ENTRY,0,1,2,4,0,100,0,0,0,0,0,11,15228,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Hellcaller - On Aggro - Cast Fireball '), +(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - On Aggro - Set Phase 1'), +(@ENTRY,0,3,0,9,1,100,0,0,40,2400,3800,11,15228,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Hellcaller - Phase 1 - Cast Fireball'), +(@ENTRY,0,4,5,3,1,100,0,0,15,0,0,21,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller -In Phase 1 - Start Combat Movement'), +(@ENTRY,0,5,0,61,1,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - Mana at 15% (Phase 1) - Set Phase 2'), +(@ENTRY,0,6,0,9,1,100,0,35,80,0,0,21,1,0,0,0,0,0,0,0,0,0,0,0,0,0,'Wildspawn Hellcaller - At 35 Yards (Phase 1) - Start Combat Movement'), +(@ENTRY,0,7,0,9,1,100,0,5,15,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - at 15 Yards (Phase 1) - Prevent Combat Movement '), +(@ENTRY,0,8,0,9,1,100,0,0,5,0,0,21,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - Below 5 Yards (Phase 1) - Start Combat Movement'), +(@ENTRY,0,9,0,3,2,100,0,0,30,100,100,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - Mana is above 30% (Phase 2) - Set Phase 1'), +(@ENTRY,0,10,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'Wildspawn Hellcaller - Set Phase 1 when Mana is above 30% (Phase 2)'), +(@ENTRY,0,11,0,0,0,100,0,8000,14000,18000,25000,11,20754,3,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Hellcaller - In Combat - Cast Rain of Fire'), +(@ENTRY,0,12,0,2,0,100,1,0,15,0,0,21,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - At 15% HP - Start Combat Movement'), +(@ENTRY,0,13,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Betrayer - At 15% HP - Flee'), +(@ENTRY,0,14,0,7,0,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - On Evade - Set Phase to 0'); + +-- SmartAI for Wildspawn Felsworn +SET @ENTRY := @NPC_WILDSPAWN_FELSWORN; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE creature SET `MovementType`=1,`spawndist`=3 WHERE `id`=@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,1,1000,1000,1800000,1800000,11,12542,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - Cast Chaotic Focus'), +(@ENTRY,0,1,0,4,0,100,0,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - On Aggro - Prevent Combat Movement'), +(@ENTRY,0,2,3,4,0,100,0,0,0,0,0,11,15537,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Felsworn - On Aggro - Cast Shadow Bolt'), +(@ENTRY,0,3,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - On Aggro - Set Phase 1'), +(@ENTRY,0,4,0,9,1,100,0,0,40,2400,3800,11,15537,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Felsworn - Phase 1 - Cast Shadow Bolt'), +(@ENTRY,0,5,6,3,1,100,0,0,15,0,0,21,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn -In Phase 1 - Start Combat Movement'), +(@ENTRY,0,6,0,61,1,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - Mana at 15% (Phase 1) - Set Phase 2'), +(@ENTRY,0,7,0,9,1,100,0,35,80,0,0,21,1,0,0,0,0,0,0,0,0,0,0,0,0,0,'Wildspawn Felsworn - At 35 Yards (Phase 1) - Start Combat Movement'), +(@ENTRY,0,8,0,9,1,100,0,5,15,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - at 15 Yards (Phase 1) - Prevent Combat Movement '), +(@ENTRY,0,9,0,9,1,100,0,0,5,0,0,21,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - Below 5 Yards (Phase 1) - Start Combat Movement'), +(@ENTRY,0,10,0,3,2,100,0,0,30,100,100,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - Mana is above 30% (Phase 2) - Set Phase 1'), +(@ENTRY,0,11,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'Wildspawn Felsworn - Set Phase 1 when Mana is above 30% (Phase 2)'), +(@ENTRY,0,12,0,0,0,100,0,7000,12000,38000,45000,11,22417,1,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - In Phase 1 - Cast Shadow Shield'), +(@ENTRY,0,13,0,0,1,100,0,11000,17000,23000,30000,11,15654,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Felsworn - In Phase 1 - Cast Shadow Word: Pain'), +(@ENTRY,0,14,0,0,0,100,0,6000,10000,10000,15000,11,12542,1,0,0,0,0,5,0,0,0,0,0,0,0,'Wildspawn Felsworn - In Combat - Cast Fear (on random target)'), +(@ENTRY,0,15,0,7,0,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - On Evade - Set Phase to 0'); + +-- add movement +SET @ENTRY := 56992; -- single Wildspawn Felsworn instance +UPDATE creature SET `MovementType`=2 WHERE `guid`=@ENTRY; +DELETE FROM `creature_addon` WHERE `guid`=@ENTRY; +INSERT INTO `creature_addon`(`guid`,`path_id`) VALUES +(@ENTRY,@ENTRY*10); + +-- Add waypoints to Wildspawn Felsworn instance +DELETE FROM `waypoint_data` WHERE `id`=@ENTRY*10; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@ENTRY*10,1,57.4000,-737.329,-25.1524,0,0,0,100,0), +(@ENTRY*10,2,26.45,-682.69,-24.98,0,0,0,100,0); + +-- Smart AI for Wildspawn Shadowstalker +SET @ENTRY := @NPC_WILDSPAWN_SHADOWSTALKER; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE creature SET `MovementType`=1,`spawndist`=3 WHERE `id`=@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,11,0,100,0,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Shadowstalker - On Spawn - cast Sneak on self'), +(@ENTRY,0,1,0,0,0,100,0,4000,8000,5000,8000,11,22416,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Shadowstalker - In Combat - Cast Backstab'), +(@ENTRY,0,2,0,0,0,100,0,6000,7000,8000,9000,11,7992,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Shadowstalker - In Combat - Cast Slowing Posion'); diff --git a/sql/updates/world/2012_01_03_07_world_creature.sql b/sql/updates/world/2012_01_03_07_world_creature.sql new file mode 100644 index 00000000000..5098901b564 --- /dev/null +++ b/sql/updates/world/2012_01_03_07_world_creature.sql @@ -0,0 +1,46 @@ +-- Spawn & Pathing for Horace Alder Entry: 27704 "Not Spawned" +SET @NPC := 1846; +DELETE FROM `creature` WHERE `guid` IN (@NPC); +INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES +(@NPC,27704,1,1,1,0,0,-3738.565,-4442.265,56.23981,0.41887,300,0,0,1,0,2); +SET @PATH := @NPC * 10; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-3740.015,-4437.762,56.23981,0,0,0,0,100,0), +(@PATH,2,-3742.823,-4433.892,56.23981,0,0,0,0,100,0), +(@PATH,3,-3746.757,-4431.049,56.23981,0,0,0,0,100,0), +(@PATH,4,-3751.263,-4429.58,56.23981,0,0,0,0,100,0), +(@PATH,5,-3756.035,-4429.627,56.23981,0,0,0,0,100,0), +(@PATH,6,-3760.625,-4431.113,56.23981,0,0,0,0,100,0), +(@PATH,7,-3764.42,-4433.888,56.22611,0,0,0,0,100,0), +(@PATH,8,-3767.252,-4437.716,56.23981,0,0,0,0,100,0), +(@PATH,9,-3768.719,-4442.307,56.23982,0,0,0,0,100,0), +(@PATH,10,-3768.664,-4447.081,56.22474,0,0,0,0,100,0), +(@PATH,11,-3767.221,-4451.627,56.23982,0,0,0,0,100,0), +(@PATH,12,-3764.422,-4455.48,56.23981,0,0,0,0,100,0), +(@PATH,13,-3767.221,-4451.627,56.23982,0,0,0,0,100,0), +(@PATH,14,-3768.664,-4447.081,56.22474,0,0,0,0,100,0), +(@PATH,15,-3768.719,-4442.307,56.23982,0,0,0,0,100,0), +(@PATH,16,-3767.255,-4437.724,56.20177,0,0,0,0,100,0), +(@PATH,17,-3764.42,-4433.888,56.22611,0,0,0,0,100,0), +(@PATH,18,-3760.625,-4431.113,56.23981,0,0,0,0,100,0), +(@PATH,19,-3756.035,-4429.627,56.23981,0,0,0,0,100,0), +(@PATH,20,-3751.263,-4429.58,56.23981,0,0,0,0,100,0), +(@PATH,21,-3746.757,-4431.049,56.23981,0,0,0,0,100,0), +(@PATH,22,-3742.823,-4433.892,56.23981,0,0,0,0,100,0), +(@PATH,23,-3740.015,-4437.762,56.23981,0,0,0,0,100,0), +(@PATH,24,-3738.565,-4442.265,56.23981,0,0,0,0,100,0), +(@PATH,25,-3738.577,-4447.063,56.23981,0,0,0,0,100,0), +(@PATH,26,-3740.03,-4451.584,56.23981,0,0,0,0,100,0), +(@PATH,27,-3742.872,-4455.448,56.23981,0,0,0,0,100,0), +(@PATH,28,-3746.699,-4458.252,56.23982,0,0,0,0,100,0), +(@PATH,29,-3751.217,-4459.749,56.26265,0,0,0,0,100,0), +(@PATH,30,-3756.021,-4459.732,56.23981,0,0,0,0,100,0), +(@PATH,31,-3751.217,-4459.749,56.26265,0,0,0,0,100,0), +(@PATH,32,-3746.699,-4458.252,56.23982,0,0,0,0,100,0), +(@PATH,33,-3742.872,-4455.448,56.23981,0,0,0,0,100,0), +(@PATH,34,-3740.03,-4451.584,56.23981,0,0,0,0,100,0), +(@PATH,35,-3738.577,-4447.063,56.23981,0,0,0,0,100,0), +(@PATH,36,-3738.565,-4442.265,56.23981,0,0,0,0,100,0); diff --git a/sql/updates/world/2012_01_04_00_world_gossip_menu.sql b/sql/updates/world/2012_01_04_00_world_gossip_menu.sql new file mode 100644 index 00000000000..cf11ba74eb2 --- /dev/null +++ b/sql/updates/world/2012_01_04_00_world_gossip_menu.sql @@ -0,0 +1,70 @@ +-- Update npc_text from sniff +UPDATE `npc_text` SET `prob0`=1,`text0_0`='I wandered for the rest of my natural life in search of knowledge, seeing more wonder and meeting more strange and mysterious races than any of my people before me. I travelled across the length and breadth of ancient Kalimdor until there was no more to see, no new lands across the horizon.$B$BYet... there was still so much I did not know as I felt my final journey approaching and I wept for the things I would never know.$B$BAs I fell, my life at an end, that is when they found me.',`WDBVerified`=14545 WHERE `ID`=14121; +UPDATE `npc_text` SET `prob0`=1,`text0_0`='The bronze dragonflight. They snatched me from the brink of death and took me before their master, Nozdormu. He said they had been watching me and wanted me to continue my hunt. He granted me immortality as a watcher, tasked to bear witness to the history of Azeroth as one of his agents.$B$BI am Xarantaur the Witness, and it is my duty to preserve the true history of Azeroth lest it be forgotten.',`WDBVerified`=14545 WHERE `ID`=14122; + +-- Gossip Menu insert from sniff +DELETE FROM `gossip_menu` WHERE `entry`=10217 AND `text_id`=14204; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (10217,14204); +DELETE FROM `gossip_menu` WHERE `entry`=10174 AND `text_id`=14118; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (10174,14118); + +-- Creature Gossip_menu_id Update from sniff +UPDATE `creature_template` SET `gossip_menu_id`=10217 WHERE `entry`=30824; +UPDATE `creature_template` SET `gossip_menu_id`=10038 WHERE `entry`=31261; +UPDATE `creature_template` SET `gossip_menu_id`=10174 WHERE `entry`=30825; + +-- Creature Gossip_menu_option Update from sniff +DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (10026,10174) AND `id` IN (0); +INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES +(10026,0,0, 'Take me to the ship.',1,1,0,0,0,0, ''), +(10174,0,1, 'I want to browse your goods.',3,128,0,0,0,0, ''); + +-- Gossip Menu insert from sniff +DELETE FROM `gossip_menu` WHERE `entry`=9806 AND `text_id`=13525; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9806,13525); +DELETE FROM `gossip_menu` WHERE `entry`=9807 AND `text_id`=13526; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9807,13526); +DELETE FROM `gossip_menu` WHERE `entry`=9808 AND `text_id`=13527; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9808,13527); +DELETE FROM `gossip_menu` WHERE `entry`=9809 AND `text_id`=13528; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9809,13528); +DELETE FROM `gossip_menu` WHERE `entry`=9810 AND `text_id`=13529; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9810,13529); +DELETE FROM `gossip_menu` WHERE `entry`=9811 AND `text_id`=13530; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9811,13530); +DELETE FROM `gossip_menu` WHERE `entry`=9812 AND `text_id`=13531; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9812,13531); +DELETE FROM `gossip_menu` WHERE `entry`=9813 AND `text_id`=13534; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9813,13534); + +-- Creature Gossip_menu_id Update from sniff +UPDATE `creature_template` SET `gossip_menu_id`=9806 WHERE `entry`=29344; +UPDATE `creature_template` SET `gossip_menu_id`=9813 WHERE `entry`=29396; + +-- Creature Gossip_menu_option Update from sniff +DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (9806,9807,9808,9809,9810,9811,9812) AND `id` IN (0); +DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (9808,9809,9810,9811,9812) AND `id` IN (1); +INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES +(9806,0,0, 'Lord-Commander, I would hear your tale.',1,1,9807,0,0,0, ''), +(9807,0,0, '<You nod slightly but do not complete the motion as the lord-commander narrows his eyes before he continues.>',1,1,9808,0,0,0, ''), +(9808,0,0, 'I thought that they now called themselves the Scarlet Onslaught?',1,1,9809,0,0,0, ''), +(9808,1,0, 'Lord-Commander, would you repeat what you said before?',1,1,9807,0,0,0, ''), +(9809,0,0, 'Where did the grand admiral go?',1,1,9810,0,0,0, ''), +(9809,1,0, 'Lord-Commander, would you repeat what you said before?',1,1,9808,0,0,0, ''), +(9810,0,0, 'That''s fine. When do I start?',1,1,9811,0,0,0, ''), +(9810,1,0, 'Lord-Commander, would you repeat what you said before?',1,1,9809,0,0,0, ''), +(9811,0,0, 'Let''s finish this!',1,1,9812,0,0,0, ''), +(9811,1,0, 'Lord-Commander, would you repeat what you said before?',1,1,9810,0,0,0, ''), +(9812,0,0, 'That''s quite a tale, lord-commander.',1,1,0,0,0,0, ''), +(9812,1,0, 'Lord-Commander, would you repeat what you said before?',1,1,9811,0,0,0, ''); + +-- Gossip Menu insert from sniff +DELETE FROM `gossip_menu` WHERE `entry`=9168 AND `text_id`=12427; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9168,12427); +DELETE FROM `gossip_menu` WHERE `entry`=9184 AND `text_id`=12472; +INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (9184,12472); + +-- Creature Gossip_menu_id Update from sniff +UPDATE `creature_template` SET `gossip_menu_id`=9168 WHERE `entry`=25504; +UPDATE `creature_template` SET `gossip_menu_id`=9184 WHERE `entry`=25379; +UPDATE `creature_template` SET `gossip_menu_id`=348 WHERE `entry`=25278; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 46a2994d653..a2e70e9cbf2 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1336,8 +1336,6 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u target = targets->front(); } - bool run = e.action.setRun.run ? true : false; - CAST_AI(SmartAI, me->AI())->SetRun(run); if(!target) me->GetMotionMaster()->MovePoint(0, e.target.x, e.target.y, e.target.z); else diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 2bee996eab0..3cd02d05a90 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1672,6 +1672,9 @@ bool WorldObject::canSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo if (Player const* player = this->ToPlayer()) viewpoint = player->GetViewpoint(); + if (!viewpoint) + viewpoint = this; + if (!corpseCheck && !viewpoint->IsWithinDist(obj, GetSightRange(obj), false)) return false; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c152b911fe2..6d6a8fd5071 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23072,11 +23072,8 @@ void Player::SetViewpoint(WorldObject* target, bool apply) WorldObject* Player::GetViewpoint() const { if (uint64 guid = GetUInt64Value(PLAYER_FARSIGHT)) - { - WorldObject* viewpoint = (WorldObject*) ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER); - return viewpoint ? viewpoint : (WorldObject*) this; // always expected not NULL - } - return (WorldObject*) this; + return (WorldObject*)ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER); + return NULL; } bool Player::CanUseBattlegroundObject() @@ -23303,6 +23300,9 @@ void Player::RemoveRunesByAuraEffect(AuraEffect const* aura) void Player::RestoreBaseRune(uint8 index) { AuraEffect const* aura = m_runes->runes[index].ConvertAura; + // If rune was converted by a non-pasive aura that still active we should keep it converted + if (aura && !(aura->GetSpellInfo()->Attributes & SPELL_ATTR0_PASSIVE)) + return; ConvertRune(index, GetBaseRune(index)); SetRuneConvertAura(index, NULL); // Don't drop passive talents providing rune convertion diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 7d470d663d2..4e9e273e628 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1127,7 +1127,7 @@ void Unit::DealSpellDamage(SpellNonMeleeDamage* damageInfo, bool durabilityLoss) SpellInfo const* spellProto = sSpellMgr->GetSpellInfo(damageInfo->SpellID); if (spellProto == NULL) { - sLog->outDebug(LOG_FILTER_UNITS, "Unit::DealSpellDamage have wrong damageInfo->SpellID: %u", damageInfo->SpellID); + sLog->outDebug(LOG_FILTER_UNITS, "Unit::DealSpellDamage has wrong damageInfo->SpellID: %u", damageInfo->SpellID); return; } @@ -2397,7 +2397,7 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit* victim, SpellInfo const* spell) case MELEE_HIT_BLOCK: canBlock = false; break; case MELEE_HIT_PARRY: canParry = false; break; default: - sLog->outStaticDebug("Spell %u SPELL_AURA_IGNORE_COMBAT_RESULT have unhandled state %d", (*i)->GetId(), (*i)->GetMiscValue()); + sLog->outStaticDebug("Spell %u SPELL_AURA_IGNORE_COMBAT_RESULT has unhandled state %d", (*i)->GetId(), (*i)->GetMiscValue()); break; } } @@ -4643,7 +4643,7 @@ void Unit::AddGameObject(GameObject* gameObj) SpellInfo const* createBySpell = sSpellMgr->GetSpellInfo(gameObj->GetSpellId()); // Need disable spell use for owner if (createBySpell && createBySpell->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE) - // note: item based cooldowns and cooldown spell mods with charges ignored (unknown existed cases) + // note: item based cooldowns and cooldown spell mods with charges ignored (unknown existing cases) ToPlayer()->AddSpellAndCategoryCooldowns(createBySpell, 0, NULL, true); } } @@ -4673,7 +4673,7 @@ void Unit::RemoveGameObject(GameObject* gameObj, bool del) SpellInfo const* createBySpell = sSpellMgr->GetSpellInfo(spellid); // Need activate spell use for owner if (createBySpell && createBySpell->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE) - // note: item based cooldowns and cooldown spell mods with charges ignored (unknown existed cases) + // note: item based cooldowns and cooldown spell mods with charges ignored (unknown existing cases) ToPlayer()->SendCooldownEvent(createBySpell); } } @@ -4968,7 +4968,7 @@ bool Unit::HandleHasteAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere if (!triggerEntry) { - sLog->outError("Unit::HandleHasteAuraProc: Spell %u have not existed triggered spell %u", hasteSpell->Id, triggered_spell_id); + sLog->outError("Unit::HandleHasteAuraProc: Spell %u has non-existing triggered spell %u", hasteSpell->Id, triggered_spell_id); return false; } @@ -5026,7 +5026,7 @@ bool Unit::HandleSpellCritChanceAuraProc(Unit* victim, uint32 /*damage*/, AuraEf if (!triggerEntry) { - sLog->outError("Unit::HandleHasteAuraProc: Spell %u have not existed triggered spell %u", triggeredByAuraSpell->Id, triggered_spell_id); + sLog->outError("Unit::HandleHasteAuraProc: Spell %u has non-existing triggered spell %u", triggeredByAuraSpell->Id, triggered_spell_id); return false; } @@ -5622,7 +5622,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere case SPELLFAMILY_MAGE: { // Magic Absorption - if (dummySpell->SpellIconID == 459) // only this spell have SpellIconID == 459 and dummy aura + if (dummySpell->SpellIconID == 459) // only this spell has SpellIconID == 459 and dummy aura { if (getPowerType() != POWER_MANA) return false; @@ -7124,7 +7124,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere SpellInfo const* windfurySpellInfo = sSpellMgr->GetSpellInfo(spellId); if (!windfurySpellInfo) { - sLog->outError("Unit::HandleDummyAuraProc: non existed spell id: %u (Windfury)", spellId); + sLog->outError("Unit::HandleDummyAuraProc: non-existing spell id: %u (Windfury)", spellId); return false; } @@ -7431,7 +7431,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere return false; } // Lightning Overload - if (dummySpell->SpellIconID == 2018) // only this spell have SpellFamily Shaman SpellIconID == 2018 and dummy aura + if (dummySpell->SpellIconID == 2018) // only this spell has SpellFamily Shaman SpellIconID == 2018 and dummy aura { if (!procSpell || GetTypeId() != TYPEID_PLAYER || !victim) return false; @@ -7483,7 +7483,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere if (!roll_chance_f(chance)) return false; - // Remove cooldown (Chain Lightning - have Category Recovery time) + // Remove cooldown (Chain Lightning - has Category Recovery time) ToPlayer()->RemoveSpellCooldown(spellId); } @@ -7794,7 +7794,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere SpellInfo const* triggerEntry = sSpellMgr->GetSpellInfo(triggered_spell_id); if (!triggerEntry) { - sLog->outError("Unit::HandleDummyAuraProc: Spell %u have not existed triggered spell %u", dummySpell->Id, triggered_spell_id); + sLog->outError("Unit::HandleDummyAuraProc: Spell %u has non-existing triggered spell %u", dummySpell->Id, triggered_spell_id); return false; } @@ -7852,7 +7852,7 @@ bool Unit::HandleObsModEnergyAuraProc(Unit* victim, uint32 /*damage*/, AuraEffec // Try handle unknown trigger spells if (!triggerEntry) { - sLog->outError("Unit::HandleObsModEnergyAuraProc: Spell %u have not existed triggered spell %u", dummySpell->Id, triggered_spell_id); + sLog->outError("Unit::HandleObsModEnergyAuraProc: Spell %u has non-existing triggered spell %u", dummySpell->Id, triggered_spell_id); return false; } @@ -7905,7 +7905,7 @@ bool Unit::HandleModDamagePctTakenAuraProc(Unit* victim, uint32 /*damage*/, Aura if (!triggerEntry) { - sLog->outError("Unit::HandleModDamagePctTakenAuraProc: Spell %u have not existed triggered spell %u", dummySpell->Id, triggered_spell_id); + sLog->outError("Unit::HandleModDamagePctTakenAuraProc: Spell %u has non-existing triggered spell %u", dummySpell->Id, triggered_spell_id); return false; } @@ -8651,8 +8651,8 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg SpellInfo const* triggerEntry = sSpellMgr->GetSpellInfo(trigger_spell_id); if (triggerEntry == NULL) { - // Not cast unknown spell - // sLog->outError("Unit::HandleProcTriggerSpell: Spell %u have 0 in EffectTriggered[%d], not handled custom case?", auraSpellInfo->Id, triggeredByAura->GetEffIndex()); + // Don't cast unknown spell + // sLog->outError("Unit::HandleProcTriggerSpell: Spell %u has 0 in EffectTriggered[%d]. Unhandled custom case?", auraSpellInfo->Id, triggeredByAura->GetEffIndex()); return false; } @@ -8739,7 +8739,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg if (!victim || !victim->isAlive()) return false; - // Not give if target already have full health + // Doesn't proc if target already has full health if (victim->IsFullHealth()) return false; // If your Greater Heal brings the target to full health, you gain $37595s1 mana. @@ -8950,7 +8950,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg if ((maelstrom->GetStackAmount() == maelstrom->GetSpellInfo()->StackAmount) && roll_chance_i(aurEff->GetAmount())) CastSpell(this, 70831, true, castItem, triggeredByAura); - // have rank dependent proc chance, ignore too often cases + // has rank dependant proc chance, ignore too often cases // PPM = 2.5 * (rank of talent), uint32 rank = auraSpellInfo->GetRank(); // 5 rank -> 100% 4 rank -> 80% and etc from full rate @@ -9304,7 +9304,7 @@ ReputationRank Unit::GetReactionTo(Unit const* target) const && selfPlayerOwner->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP)) return REP_HOSTILE; - // if faction have reputation then hostile state dependent only from at_war state + // if faction has reputation, hostile state depends only from AtWar state if (selfPlayerOwner->GetReputationMgr().IsAtWar(targetFactionEntry)) return REP_HOSTILE; return REP_FRIENDLY; @@ -10450,7 +10450,7 @@ uint32 Unit::SpellDamageBonus(Unit* victim, SpellInfo const* spellProto, uint32 { if (victim->HasAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, spellProto, this)) { - // effect 0 have expected value but in negative state + // effect 0 has expected value but in negative state int32 bonus = -(*i)->GetBase()->GetEffect(0)->GetAmount(); AddPctN(DoneTotalMod, bonus); } @@ -11708,7 +11708,7 @@ void Unit::MeleeDamageBonus(Unit* victim, uint32 *pdamage, WeaponAttackType attT { if (victim->HasAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, spellProto, this)) { - // effect 0 have expected value but in negative state + // effect 0 has expected value but in negative state int32 bonus = -(*i)->GetBase()->GetEffect(0)->GetAmount(); AddPctN(DoneTotalMod, bonus); } @@ -12973,7 +12973,7 @@ Unit* Creature::SelectVictim() // last case when creature must not go to evade mode: // it in combat but attacker not make any damage and not enter to aggro radius to have record in threat list // for example at owner command to pet attack some far away creature - // Note: creature not have targeted movement generator but have attacker in this case + // Note: creature does not have targeted movement generator but has attacker in this case for (AttackerSet::const_iterator itr = m_attackers.begin(); itr != m_attackers.end(); ++itr) { if ((*itr) && !canCreatureAttack(*itr) && (*itr)->GetTypeId() != TYPEID_PLAYER @@ -13359,7 +13359,7 @@ bool Unit::HandleStatModifier(UnitMods unitMod, UnitModifierType modifierType, f { if (unitMod >= UNIT_MOD_END || modifierType >= MODIFIER_TYPE_END) { - sLog->outError("ERROR in HandleStatModifier(): non existed UnitMods or wrong UnitModifierType!"); + sLog->outError("ERROR in HandleStatModifier(): non-existing UnitMods or wrong UnitModifierType!"); return false; } @@ -13424,7 +13424,7 @@ float Unit::GetModifierValue(UnitMods unitMod, UnitModifierType modifierType) co { if (unitMod >= UNIT_MOD_END || modifierType >= MODIFIER_TYPE_END) { - sLog->outError("trial to access non existed modifier value from UnitMods!"); + sLog->outError("attempt to access non-existing modifier value from UnitMods!"); return 0.0f; } @@ -13454,7 +13454,7 @@ float Unit::GetTotalAuraModValue(UnitMods unitMod) const { if (unitMod >= UNIT_MOD_END) { - sLog->outError("trial to access non existed UnitMods in GetTotalAuraModValue()!"); + sLog->outError("attempt to access non-existing UnitMods in GetTotalAuraModValue()!"); return 0.0f; } @@ -13683,7 +13683,7 @@ void Unit::SetMaxPower(Powers power, uint32 val) uint32 Unit::GetCreatePowers(Powers power) const { - // POWER_FOCUS and POWER_HAPPINESS only have hunter pet + // Only hunter pets have POWER_FOCUS and POWER_HAPPINESS switch (power) { case POWER_MANA: return GetCreateMana(); @@ -14111,12 +14111,12 @@ bool InitTriggerAuraData() isTriggerAura[SPELL_AURA_DUMMY] = true; isTriggerAura[SPELL_AURA_MOD_CONFUSE] = true; isTriggerAura[SPELL_AURA_MOD_THREAT] = true; - isTriggerAura[SPELL_AURA_MOD_STUN] = true; // Aura not have charges but need remove him on trigger + isTriggerAura[SPELL_AURA_MOD_STUN] = true; // Aura does not have charges but needs to be removed on trigger isTriggerAura[SPELL_AURA_MOD_DAMAGE_DONE] = true; isTriggerAura[SPELL_AURA_MOD_DAMAGE_TAKEN] = true; isTriggerAura[SPELL_AURA_MOD_RESISTANCE] = true; isTriggerAura[SPELL_AURA_MOD_STEALTH] = true; - isTriggerAura[SPELL_AURA_MOD_FEAR] = true; // Aura not have charges but need remove him on trigger + isTriggerAura[SPELL_AURA_MOD_FEAR] = true; // Aura does not have charges but needs to be removed on trigger isTriggerAura[SPELL_AURA_MOD_ROOT] = true; isTriggerAura[SPELL_AURA_TRANSFORM] = true; isTriggerAura[SPELL_AURA_REFLECT_SPELLS] = true; @@ -15325,7 +15325,7 @@ bool Unit::HandleAuraRaidProcFromCharge(AuraEffect* triggeredByAura) damageSpellId = 43594; break; default: - sLog->outError("Unit::HandleAuraRaidProcFromCharge, received not handled spell: %u", spellProto->Id); + sLog->outError("Unit::HandleAuraRaidProcFromCharge, received unhandled spell: %u", spellProto->Id); return false; } @@ -15738,7 +15738,7 @@ void Unit::SetStunned(bool apply) if (!owner || (owner->GetTypeId() == TYPEID_PLAYER && !owner->ToPlayer()->IsMounted())) RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); - if (!HasUnitState(UNIT_STAT_ROOT)) // prevent allow move if have also root effect + if (!HasUnitState(UNIT_STAT_ROOT)) // prevent moving if it also has root effect { WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 8+4); data.append(GetPackGUID()); @@ -15780,7 +15780,7 @@ void Unit::SetRooted(bool apply) } else { - if (!HasUnitState(UNIT_STAT_STUNNED)) // prevent allow move if have also stun effect + if (!HasUnitState(UNIT_STAT_STUNNED)) // prevent moving if it also has stun effect { if (GetTypeId() == TYPEID_PLAYER) { diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index c3c73598af7..5fd1c788c7f 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -7003,10 +7003,35 @@ void Spell::EffectActivateRune(SpellEffIndex effIndex) { if (player->GetRuneCooldown(j) && player->GetCurrentRune(j) == RuneType(m_spellInfo->Effects[effIndex].MiscValue)) { + if (m_spellInfo->Id == 45529) + if (player->GetBaseRune(j) != RuneType(m_spellInfo->Effects[effIndex].MiscValueB)) + continue; player->SetRuneCooldown(j, 0); --count; } } + + // Blood Tap + if (m_spellInfo->Id == 45529 && count > 0) + { + for (uint32 l = 0; l < MAX_RUNES && count > 0; ++l) + { + // Check if both runes are on cd as that is the only time when this needs to come into effect + if ((player->GetRuneCooldown(l) && player->GetCurrentRune(l) == RuneType(m_spellInfo->Effects[effIndex].MiscValueB)) && (player->GetRuneCooldown(l+1) && player->GetCurrentRune(l+1) == RuneType(m_spellInfo->Effects[effIndex].MiscValueB))) + { + // Should always update the rune with the lowest cd + if (player->GetRuneCooldown(l) >= player->GetRuneCooldown(l+1)) + l++; + player->SetRuneCooldown(l, 0); + --count; + // is needed to push through to the client that the rune is active + player->ResyncRunes(MAX_RUNES); + } + else + break; + } + } + // Empower rune weapon if (m_spellInfo->Id == 47568) { diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index f05a2721276..426a93fda57 100755 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1959,7 +1959,9 @@ void World::Update(uint32 diff) /// <li> Handle all other objects ///- Update objects when the timer has passed (maps, transport, creatures, ...) + RecordTimeDiff(NULL); sMapMgr->Update(diff); + RecordTimeDiff("UpdateMapMgr"); if (sWorld->getBoolConfig(CONFIG_AUTOBROADCAST)) { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 7c8121f475f..f62c2d6c596 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -436,7 +436,7 @@ class boss_freya : public CreatureScript break; case EVENT_WAVE: SpawnWave(); - if (waveCount < 6) + if (waveCount <= 6) // If set to 6 The Bombs appear during the Final Add wave events.ScheduleEvent(EVENT_WAVE, WAVE_TIME); else events.ScheduleEvent(EVENT_NATURE_BOMB, urand(10000, 20000)); |