aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2013_04_11_00_world_misc.sql168
-rw-r--r--sql/updates/world/2013_04_11_01_world_misc.sql64
-rw-r--r--sql/updates/world/2013_04_11_02_world_misc.sql69
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp32
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h13
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp1
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp3
-rw-r--r--src/server/scripts/Outland/zone_shattrath_city.cpp196
9 files changed, 335 insertions, 213 deletions
diff --git a/sql/updates/world/2013_04_11_00_world_misc.sql b/sql/updates/world/2013_04_11_00_world_misc.sql
new file mode 100644
index 00000000000..53e2ffcb716
--- /dev/null
+++ b/sql/updates/world/2013_04_11_00_world_misc.sql
@@ -0,0 +1,168 @@
+SET @NPC_URSOC := 26633;
+SET @NPC_RAGEPAW := 27328;
+SET @NPC_SPIRIT := 27373;
+SET @NPC_BLOOD := 28854;
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=9496 AND `id`=0;
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=9497 AND `id` IN (0,1,2);
+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
+(9496,0,0, 'We have the purified ashes of Vordrassil''s sapling. If we can subdue Ursoc, we might be able to heal his soul.',1,1,9497,0,0,0, ''),
+(9497,0,0, 'Assume your druidic bear form, Tur.',1,1,0,0,0,0, ''),
+(9497,1,0, 'Help us subdue him.',1,1,0,0,0,0, ''),
+(9497,2,0, 'We could use a healer.',1,1,0,0,0,0, '');
+
+DELETE FROM `gossip_menu` WHERE `entry`=9496 AND `text_id`=12785;
+DELETE FROM `gossip_menu` WHERE `entry`=9497 AND `text_id`=12787;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(9496,12785),
+(9497,12787);
+
+UPDATE `creature_template` SET `faction_A`=16, `faction_H`=16, `dmg_multiplier`=4.6, `unit_flags`=32832 WHERE `entry`=@NPC_URSOC;
+UPDATE `creature_template` SET `gossip_menu_id`=9496, `speed_walk`=0.666667, `speed_run`=0.992063 WHERE `entry`=@NPC_RAGEPAW;
+UPDATE `creature_template` SET `speed_run`=0.357143 WHERE `entry`=@NPC_BLOOD;
+
+UPDATE `creature_model_info` SET `bounding_radius`=3.666, `combat_reach`=9 WHERE `modelid`=23964;
+
+DELETE FROM `creature_template_addon` WHERE `entry`=28854;
+INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES
+(28854,1,'52561');
+
+UPDATE `creature` SET `spawntimesecs`=0 WHERE `guid` IN (104065,104066,114077);
+
+DELETE FROM `creature_addon` WHERE `guid` IN (104065,104066,104068,104069,104070,104071);
+INSERT INTO `creature_addon` (`guid`,`auras`) VALUES
+(104065,'16245'),
+(104066,'16245'),
+(104068,'16245'),
+(104069,'16245'),
+(104070,'16245'),
+(104071,'16245');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (48398,48399);
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9496 AND `SourceEntry`=0;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry` IN (52551,52554);
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@NPC_RAGEPAW;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,48398,0,0,31,0,3,24921,0,0,'','Spell Tur''s Chains targets Cosmetic Trigger - LAB'),
+(13,1,48398,0,0,29,0,@NPC_RAGEPAW,2,0,0,'','Spell Tur''s Chains target needs to be within 2y of Tur Ragepaw'),
+(13,1,48399,0,0,31,0,3,24921,0,0,'','Spell Tur''s Chains targets Cosmetic Trigger - LAB'),
+(13,1,48399,0,0,29,0,@NPC_RAGEPAW,2,0,0,'','Spell Tur''s Chains target needs to be within 2y of Tur Ragepaw'),
+(15,9496,0,0,0,9,0,12236,0,0,0,'','Tur Ragepaw - Show gossip option only if player has taken quest Ursoc, the Bear God'),
+(15,9496,0,0,1,9,0,12249,0,0,0,'','Tur Ragepaw - Show gossip option only if player has taken quest Ursoc, the Bear God'),
+(17,0,52551,0,0,38,1,80,4,0,0,'','Spell Lifebloom will be casted only if target has less than 80% health'),
+(17,0,52554,0,0,38,1,65,4,0,0,'','Spell Nourish will be casted only if target has less than 65% health'),
+(22,14,@NPC_RAGEPAW,0,0,1,1,48368,1,0,0,'','SAI of Tur Ragepaw triggers only if under the effect of aura Bearform'),
+(22,16,@NPC_RAGEPAW,0,0,1,1,48369,1,0,0,'','SAI of Tur Ragepaw triggers only if under the effect of aura Moonkin Form'),
+(22,17,@NPC_RAGEPAW,0,0,1,1,48371,1,0,0,'','SAI of Tur Ragepaw triggers only if under the effect of aura Tree of Life');
+
+DELETE FROM `creature_text` WHERE `entry` IN (@NPC_RAGEPAW,@NPC_SPIRIT);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@NPC_RAGEPAW,0,0, 'Stay behind me, $r. I will do my best to protect you.',12,0,100,0,0,0, 'Tur Ragepaw'),
+(@NPC_RAGEPAW,1,0, 'My freedom means nothing if we fail to save Ursoc. Make haste, $N.',12,0,100,0,0,0, 'Tur Ragepaw'),
+(@NPC_RAGEPAW,2,0, 'I will watch over you and your allies, $r.',12,0,100,0,0,0, 'Tur Ragepaw'),
+(@NPC_RAGEPAW,3,0, 'Ursoc, brother of Ursol and guardian of the furbolg tribes... show yourself!',12,0,100,0,0,0, 'Tur Ragepaw'),
+(@NPC_SPIRIT,0,0, 'I thank you all. The druids of old were wise to tear down Vordrassil, for its roots seep deep into the dwelling of an ancient evil.',12,0,100,0,0,0, 'Spirit of Ursoc'),
+(@NPC_SPIRIT,1,0, 'You know their kind as old gods. Beware Yogg-Saron, the beast with a thousand maws. His evil extends beyond Vordrassil''s roots.',12,0,100,0,0,0, 'Spirit of Ursoc');
+
+DELETE FROM `waypoints` WHERE `entry`=@NPC_RAGEPAW;
+INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
+(@NPC_RAGEPAW, 1, 4688.4, -3854.87, 327.0471, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 2, 4705.639, -3845.388, 327.5565, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 3, 4726.497, -3846.529, 330.2256, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 4, 4743.628, -3848.904, 332.7676, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 5, 4756.063, -3847.442, 333.9136, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 6, 4782.305, -3843.417, 333.9443, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 7, 4813.348, -3838.03, 336.6674, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 8, 4835.112, -3837.782, 338.4213, 'Tur Ragepaw'),
+(@NPC_RAGEPAW, 9, 4865.375, -3842.427, 338.2963, 'Tur Ragepaw');
+
+DELETE FROM `creature_ai_scripts` WHERE `creature_id` IN (@NPC_URSOC,@NPC_BLOOD);
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@NPC_URSOC,@NPC_RAGEPAW,@NPC_SPIRIT,@NPC_BLOOD);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (-104065,-104066,-104068,-104069,-104070,-104071,@NPC_URSOC,@NPC_RAGEPAW,@NPC_SPIRIT,@NPC_BLOOD) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@NPC_RAGEPAW*100+0,@NPC_RAGEPAW*100+1,@NPC_RAGEPAW*100+2,@NPC_RAGEPAW*100+3,@NPC_SPIRIT*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
+(-104068,0,0,0,38,0,100,0,0,1,0,0,11,48399,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104068,0,1,0,38,0,100,0,0,2,0,0,11,48334,0,0,0,0,0,19,@NPC_RAGEPAW,20,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104069,0,0,0,38,0,100,0,0,1,0,0,11,48398,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104069,0,1,0,38,0,100,0,0,2,0,0,11,48334,0,0,0,0,0,19,@NPC_RAGEPAW,20,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104070,0,0,0,38,0,100,0,0,1,0,0,11,48399,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104070,0,1,0,38,0,100,0,0,2,0,0,11,48334,0,0,0,0,0,19,@NPC_RAGEPAW,20,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104071,0,0,0,38,0,100,0,0,1,0,0,11,48398,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104071,0,1,0,38,0,100,0,0,2,0,0,11,48334,0,0,0,0,0,19,@NPC_RAGEPAW,20,0,0,0,0,0,'Cosmetic Trigger - LAB - On data 0 1 set - Spellcast Tur''s Chains'),
+(-104065,0,0,0,8,0,100,0,48399,0,0,0,69,1,0,0,0,0,0,8,0,0,0,4672.254,-3872.959,327.6967,0,'Cosmetic Trigger - LAB - On spellhit Tur''s Chains - Move to position'),
+(-104065,0,1,0,34,0,100,0,0,1,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cosmetic Trigger - LAB - On movement inform - Despawn'),
+(-104066,0,0,0,8,0,100,0,48398,0,0,0,69,1,0,0,0,0,0,8,0,0,0,4677.567,-3874.965,323.9017,0,'Cosmetic Trigger - LAB - On spellhit Tur''s Chains - Move to position'),
+(-104066,0,1,0,34,0,100,0,0,1,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cosmetic Trigger - LAB - On movement inform - Despawn'),
+
+(@NPC_URSOC,0,0,0,54,0,100,0,0,0,0,0,5,53,0,0,0,0,0,1,0,0,0,0,0,0,0,'Ursoc - Just summoned - Play emote'),
+(@NPC_URSOC,0,1,0,0,0,100,0,7000,8000,20000,20000,11,52560,0,0,0,0,0,1,0,0,0,0,0,0,0,'Ursoc - On update IC - Spellcast Summon Blood of the Old God'),
+(@NPC_URSOC,0,2,0,0,0,100,0,10000,13000,21000,25000,11,52583,0,0,0,0,0,18,50,0,0,0,0,0,0,'Ursoc - On update IC - Spellcast Old God''s Influence'),
+(@NPC_URSOC,0,3,0,9,0,100,0,0,5,9000,12000,11,52581,0,0,0,0,0,2,0,0,0,0,0,0,0,'Ursoc - On target within 5y - Spellcast Crunch Armor'),
+(@NPC_URSOC,0,4,0,8,0,100,0,48549,0,0,0,12,@NPC_SPIRIT,3,25000,0,0,0,1,0,0,0,0,0,0,0,'Ursoc - On spellhit Ashes of Vordrassil - Summon Spirit of Ursoc'),
+(@NPC_URSOC,0,5,0,6,0,100,0,0,0,0,0,45,0,1,0,0,0,0,10,114077,@NPC_RAGEPAW,0,0,0,0,0,'Ursoc - On death - Set data 0 1 Tur Ragepaw'),
+
+(@NPC_RAGEPAW,0,0,1,11,0,100,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On spawn - Set faction default'),
+(@NPC_RAGEPAW,0,1,2,61,0,100,0,0,0,0,0,45,0,2,0,0,0,0,9,24921,2,20,0,0,0,0,'Tur Ragepaw - On spawn - Set data 0 2 Cosmetic Trigger - LAB'),
+(@NPC_RAGEPAW,0,2,3,61,0,100,0,0,0,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On spawn - Set unit_field_bytes1 (kneel)'),
+(@NPC_RAGEPAW,0,3,4,61,0,100,0,0,0,0,0,82,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On spawn - Set npcflag gossip'),
+(@NPC_RAGEPAW,0,4,0,61,0,100,0,0,0,0,0,8,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On spawn - Set reaction defensive'),
+(@NPC_RAGEPAW,0,5,8,62,0,100,0,9497,0,0,0,80,@NPC_RAGEPAW*100+0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On gossip select - Run script 0'),
+(@NPC_RAGEPAW,0,6,8,62,0,100,0,9497,1,0,0,80,@NPC_RAGEPAW*100+1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On gossip select - Run script 1'),
+(@NPC_RAGEPAW,0,7,8,62,0,100,0,9497,2,0,0,80,@NPC_RAGEPAW*100+2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On gossip select - Run script 2'),
+(@NPC_RAGEPAW,0,8,9,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Tur Ragepaw - On gossip select - Close gossip'),
+(@NPC_RAGEPAW,0,9,10,61,0,100,0,0,0,0,0,83,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On gossip select - Remove npcflag gossip'),
+(@NPC_RAGEPAW,0,10,0,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,9,24921,2,20,0,0,0,0,'Tur Ragepaw - On gossip select - Set data 0 1 Cosmetic Trigger - LAB'),
+(@NPC_RAGEPAW,0,11,0,38,0,100,0,0,1,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On data 0 1 set - Despawn'),
+(@NPC_RAGEPAW,0,12,0,40,0,100,0,9,@NPC_RAGEPAW,0,0,80,@NPC_RAGEPAW*100+3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On WP 9 Reached - Run script 3'),
+(@NPC_RAGEPAW,0,13,14,25,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On reset - Set event phase 1'),
+(@NPC_RAGEPAW,0,14,0,61,0,100,0,0,0,0,0,28,52507,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On reset - Remove aura Ragepaw''s Presence'),
+(@NPC_RAGEPAW,0,15,0,25,0,100,0,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On reset - Set event phase 2'),
+(@NPC_RAGEPAW,0,16,0,25,0,100,0,0,0,0,0,22,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On reset - Set event phase 3'),
+(@NPC_RAGEPAW,0,17,0,4,1,100,0,0,0,0,0,11,52507,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On aggro (phase 1) - Spellcast Ragepaw''s Presence'),
+(@NPC_RAGEPAW,0,18,0,9,1,100,0,0,5,2500,4000,11,52504,0,0,0,0,0,2,0,0,0,0,0,0,0,'Tur Ragepaw - On target within 5y (phase 1) - Spellcast Lacerate'),
+(@NPC_RAGEPAW,0,19,0,9,1,100,0,0,5,6000,8000,11,52506,0,0,0,0,0,2,0,0,0,0,0,0,0,'Tur Ragepaw - On target within 5y (phase 1) - Spellcast Maul'),
+(@NPC_RAGEPAW,0,20,0,14,1,100,0,2000,30,20000,20000,11,6795,0,0,0,0,0,2,0,0,0,0,0,0,0,'Tur Ragepaw - On friendly attacked (phase 1) - Spellcast Growl'),
+(@NPC_RAGEPAW,0,21,0,4,2,100,0,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On aggro (phase 2) - Stop combat movement'),
+(@NPC_RAGEPAW,0,22,0,9,2,100,0,0,40,2500,4000,11,52501,0,0,0,0,0,2,0,0,0,0,0,0,0,'Tur Ragepaw - On target within 40y (phase 2) - Spellcast Wrath'),
+(@NPC_RAGEPAW,0,23,0,9,2,100,0,0,40,13000,14000,11,52502,0,0,0,0,0,2,0,0,0,0,0,0,0,'Tur Ragepaw - On target within 40y (phase 2) - Spellcast Moonfire'),
+(@NPC_RAGEPAW,0,24,0,0,4,100,0,0,0,1500,1500,11,52554,0,0,0,0,0,18,40,0,0,0,0,0,0,'Tur Ragepaw - On update IC (phase 4) - Spellcast Nourish'),
+(@NPC_RAGEPAW,0,25,0,0,4,100,0,50,50,1700,1700,11,52551,0,0,0,0,0,18,40,0,0,0,0,0,0,'Tur Ragepaw - On update IC (phase 4) - Spellcast Lifebloom'),
+(@NPC_RAGEPAW,0,26,0,4,4,100,0,0,0,0,0,8,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw - On aggro (phase 4) - Set reaction aggressive'),
+
+(@NPC_SPIRIT,0,0,0,54,0,100,0,0,0,0,0,80,@NPC_SPIRIT*100,2,0,0,0,0,1,0,0,0,0,0,0,0,'Spirit of Ursoc - Just summoned - Run script'),
+
+(@NPC_BLOOD,0,0,0,9,0,100,1,0,1.5,0,0,11,52564,0,0,0,0,0,1,0,0,0,0,0,0,0,'Blood of the Old God - On target within 1.5y - Spellcast Corruption of the Old God'),
+
+(@NPC_RAGEPAW*100+0,9,0,0,0,0,100,0,0,0,0,0,11,48368,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 0 - Spellcast Bearform'),
+(@NPC_RAGEPAW*100+0,9,1,0,0,0,100,0,300,300,0,0,2,250,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 0 - Set faction'),
+(@NPC_RAGEPAW*100+0,9,2,0,0,0,100,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 0 - Remove unit_field_bytes1 (kneel)'),
+(@NPC_RAGEPAW*100+0,9,3,0,0,0,100,0,2500,2500,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Tur Ragepaw script 0 - Say line'),
+(@NPC_RAGEPAW*100+0,9,4,0,0,0,100,0,4700,4700,0,0,53,1,@NPC_RAGEPAW,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 0 - Start WP movement'),
+(@NPC_RAGEPAW*100+0,9,6,0,0,0,100,0,0,0,0,0,8,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 0 - Set reaction aggressive'),
+(@NPC_RAGEPAW*100+0,9,5,0,0,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 0 - Set event phase 1'),
+
+(@NPC_RAGEPAW*100+1,9,0,0,0,0,100,0,0,0,0,0,11,48369,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Spellcast Moonkin Form'),
+(@NPC_RAGEPAW*100+1,9,1,0,0,0,100,0,300,300,0,0,2,250,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Set faction'),
+(@NPC_RAGEPAW*100+1,9,2,0,0,0,100,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Remove unit_field_bytes1 (kneel)'),
+(@NPC_RAGEPAW*100+1,9,3,0,0,0,100,0,0,0,0,0,11,24905,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Spellcast Moonkin Form (Passive)'),
+(@NPC_RAGEPAW*100+1,9,4,0,0,0,100,0,0,0,0,0,11,24907,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Spellcast Moonkin Aura'),
+(@NPC_RAGEPAW*100+1,9,5,0,0,0,100,0,400,400,0,0,11,52503,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Spellcast Empowered Moonkin Aura'),
+(@NPC_RAGEPAW*100+1,9,6,0,0,0,100,0,2500,2500,0,0,1,1,0,0,0,0,0,7,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Say line'),
+(@NPC_RAGEPAW*100+1,9,7,0,0,0,100,0,4700,4700,0,0,53,1,@NPC_RAGEPAW,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Start WP movement'),
+(@NPC_RAGEPAW*100+1,9,8,0,0,0,100,0,0,0,0,0,8,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Set reaction aggressive'),
+(@NPC_RAGEPAW*100+1,9,9,0,0,0,100,0,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 1 - Set event phase 2'),
+
+(@NPC_RAGEPAW*100+2,9,0,0,0,0,100,0,0,0,0,0,11,48371,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 2 - Spellcast Tree of Life'),
+(@NPC_RAGEPAW*100+2,9,1,0,0,0,100,0,100,100,0,0,11,52553,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 2 - Spellcast Empowered Tree of Life'),
+(@NPC_RAGEPAW*100+2,9,2,0,0,0,100,0,0,0,0,0,2,113,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 2 - Set faction'),
+(@NPC_RAGEPAW*100+2,9,3,0,0,0,100,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 2 - Remove unit_field_bytes1 (kneel)'),
+(@NPC_RAGEPAW*100+2,9,4,0,0,0,100,0,2600,2600,0,0,1,2,0,0,0,0,0,7,0,0,0,0,0,0,0,'Tur Ragepaw script 2 - Say line'),
+(@NPC_RAGEPAW*100+2,9,5,0,0,0,100,0,4700,4700,0,0,53,1,@NPC_RAGEPAW,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 2 - Start WP movement'),
+(@NPC_RAGEPAW*100+2,9,6,0,0,0,100,0,0,0,0,0,22,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 2 - Set event phase 3'),
+
+(@NPC_RAGEPAW*100+3,9,0,0,0,0,100,0,0,0,0,0,101,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 3 - Set homeposition'),
+(@NPC_RAGEPAW*100+3,9,1,0,0,0,100,0,6000,6000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Tur Ragepaw script 3 - Say line'),
+(@NPC_RAGEPAW*100+3,9,2,0,0,0,100,0,300,300,0,0,12,@NPC_URSOC,6,60000,0,0,0,8,0,0,0,4893.267,-3842.415,337.6485,3.124139,'Tur Ragepaw script 3 - Summon Ursoc'),
+
+(@NPC_SPIRIT*100,9,0,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Spirit of Ursoc script 0 - Say line'),
+(@NPC_SPIRIT*100,9,1,0,0,0,100,0,5000,5000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Spirit of Ursoc script 0 - Say line');
diff --git a/sql/updates/world/2013_04_11_01_world_misc.sql b/sql/updates/world/2013_04_11_01_world_misc.sql
new file mode 100644
index 00000000000..699f65f1c5a
--- /dev/null
+++ b/sql/updates/world/2013_04_11_01_world_misc.sql
@@ -0,0 +1,64 @@
+SET @NPC_LARRY := 19720;
+SET @NPC_MALONE := 19725;
+SET @NPC_JACK := 19726;
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=8033;
+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
+(8033, 0, 0, 'Ezekiel said that you might have a certain book...', 1, 1, 0, 0, 0, 0, '');
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry` IN (@NPC_LARRY,@NPC_MALONE,@NPC_JACK);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@NPC_LARRY,@NPC_MALONE,@NPC_JACK) 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
+(@NPC_LARRY,0,0,1,25,0,100,0,0,0,0,0,2,1194,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Dirty" Larry - On reset - Set faction'),
+(@NPC_LARRY,0,1,2,61,0,100,0,0,0,0,0,18,256,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Dirty" Larry - On reset - Set unit_flags IMMUNE_TO_PC'),
+(@NPC_LARRY,0,2,3,61,0,100,0,0,0,0,0,81,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Dirty" Larry - On reset - Set npcflag gossip, questgiver'),
+(@NPC_LARRY,0,3,4,61,0,100,0,0,0,0,0,45,1,2,0,0,0,0,10,70376,@NPC_MALONE,0,0,0,0,0,'Dirty" Larry - On reset - Set data 1 2 "Epic" Malone'),
+(@NPC_LARRY,0,4,0,61,0,100,0,0,0,0,0,45,1,2,0,0,0,0,10,70377,@NPC_JACK,0,0,0,0,0,'Dirty" Larry - On reset - Set data 1 2 "Creepjack"'),
+(@NPC_LARRY,0,5,6,62,0,100,0,8033,0,0,0,64,1,0,0,0,0,0,7,0,0,0,0,0,0,0,'Dirty" Larry - On gossip select - Store targetlist'),
+(@NPC_LARRY,0,6,7,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Dirty" Larry - On gossip select - Close Gossip'),
+(@NPC_LARRY,0,7,8,61,0,100,0,0,0,0,0,1,0,5000,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On gossip select - Say line'),
+(@NPC_LARRY,0,8,9,61,0,100,0,0,0,0,0,81,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On gossip select - Set npcflag none'),
+(@NPC_LARRY,0,9,10,61,0,100,0,0,0,0,0,70,0,0,0,0,0,0,10,70376,@NPC_MALONE,0,0,0,0,0,'Dirty" Larry - On gossip select - Respawn "Epic" Malone '),
+(@NPC_LARRY,0,10,0,61,0,100,0,0,0,0,0,70,0,0,0,0,0,0,10,70377,@NPC_JACK,0,0,0,0,0,'Dirty" Larry - On gossip select - Respawn "Creepjack" '),
+(@NPC_LARRY,0,11,0,52,0,100,0,0,@NPC_LARRY,0,0,1,1,5000,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On text over - Say line'),
+(@NPC_LARRY,0,12,0,52,0,100,0,1,@NPC_LARRY,0,0,1,2,2000,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On text over - Say line'),
+(@NPC_LARRY,0,13,0,52,0,100,0,2,@NPC_LARRY,0,0,1,3,2000,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On text over - Say line'),
+(@NPC_LARRY,0,14,0,52,0,100,0,3,@NPC_LARRY,0,0,1,4,2000,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On text over - Say line'),
+(@NPC_LARRY,0,15,16,52,0,100,0,4,@NPC_LARRY,0,0,2,14,0,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On text over - Set faction'),
+(@NPC_LARRY,0,16,17,61,0,100,0,0,0,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On text over - Remove unit_flags IMMUNE_TO_PC'),
+(@NPC_LARRY,0,17,18,61,0,100,0,0,0,0,0,49,0,0,0,0,0,0,12,1,0,0,0,0,0,0,'Dirty" Larry - On text over - Attack'),
+(@NPC_LARRY,0,18,19,61,0,100,0,0,0,0,0,100,1,0,0,0,0,0,10,70376,@NPC_MALONE,0,0,0,0,0,'Dirty" Larry - On text over - Send targetlist to "Epic" Malone'),
+(@NPC_LARRY,0,19,20,61,0,100,0,0,0,0,0,45,1,1,0,0,0,0,10,70376,@NPC_MALONE,0,0,0,0,0,'Dirty" Larry - On text over - Set data 1 1 "Epic" Malone'),
+(@NPC_LARRY,0,20,21,61,0,100,0,0,0,0,0,100,1,0,0,0,0,0,10,70377,@NPC_JACK,0,0,0,0,0,'Dirty" Larry - On text over - Send targetlist to "Creepjack"'),
+(@NPC_LARRY,0,21,0,61,0,100,0,0,0,0,0,45,1,1,0,0,0,0,10,70377,@NPC_JACK,0,0,0,0,0,'Dirty" Larry - On text over - Set data 1 1 "Creepjack"'),
+(@NPC_LARRY,0,22,23,2,0,100,0,0,20,0,0,15,10231,0,0,0,0,0,16,0,0,0,0,0,0,0,'Dirty" Larry - On health below 20% - Quest credit'),
+(@NPC_LARRY,0,23,24,61,0,100,0,0,0,0,0,1,5,0,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On health below 20% - Say line'),
+(@NPC_LARRY,0,24,3,61,0,100,0,0,0,0,0,24,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On health below 20% - Evade'),
+(@NPC_LARRY,0,25,0,11,0,100,0,0,0,0,0,42,0,15,0,0,0,0,1,0,0,0,0,0,0,0,'Dirty" Larry - On spawn - Set invincibility HP level'),
+
+(@NPC_MALONE,0,0,1,25,0,100,0,0,0,0,0,2,1194,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Epic" Malone - On reset - Set faction'),
+(@NPC_MALONE,0,1,0,61,0,100,0,0,0,0,0,18,256,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Epic" Malone - On reset - Set unit_flags IMMUNE_TO_PC'),
+(@NPC_MALONE,0,2,3,38,0,100,0,1,1,0,0,2,14,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Epic" Malone - On data 1 1 set - Set faction'),
+(@NPC_MALONE,0,3,4,61,0,100,0,0,0,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Epic" Malone - On data 1 1 set - Remove unit_flags IMMUNE_TO_PC'),
+(@NPC_MALONE,0,4,0,61,0,100,0,0,0,0,0,49,0,0,0,0,0,0,12,1,0,0,0,0,0,0,'"Epic" Malone - On data 1 1 set - Attack'),
+(@NPC_MALONE,0,5,0,38,0,100,0,1,2,0,0,24,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Epic" Malone - On data 1 2 set - Evade'),
+
+(@NPC_JACK,0,0,1,25,0,100,0,0,0,0,0,2,1194,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Creepjack" - On reset - Set faction'),
+(@NPC_JACK,0,1,0,61,0,100,0,0,0,0,0,18,256,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Creepjack" - On reset - Set unit_flags IMMUNE_TO_PC'),
+(@NPC_JACK,0,2,3,38,0,100,0,1,1,0,0,2,14,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Creepjack" - On data 1 1 set - Set faction'),
+(@NPC_JACK,0,3,4,61,0,100,0,0,0,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Creepjack" - On data 1 1 set - Remove unit_flags IMMUNE_TO_PC'),
+(@NPC_JACK,0,4,0,61,0,100,0,0,0,0,0,49,0,0,0,0,0,0,12,1,0,0,0,0,0,0,'"Creepjack" - On data 1 1 set - Attack'),
+(@NPC_JACK,0,5,0,38,0,100,0,1,2,0,0,24,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'"Creepjack" - On data 1 2 set - Evade');
+
+DELETE FROM `creature_text` WHERE `entry`=@NPC_LARRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES
+(@NPC_LARRY, 0, 0, 'Time to teach you a lesson in manners, little boy! ', 12, 0, 100, 0, 0, 0, '"Dirty" Larry'),
+(@NPC_LARRY, 1, 0, 'I''m now going to give you to the count of "3" to get out of here before I sick the dogs on you.', 12, 0, 100, 0, 0, 0, '"Dirty" Larry'),
+(@NPC_LARRY, 2, 0, '1...', 12, 0, 100, 0, 0, 0, '"Dirty" Larry'),
+(@NPC_LARRY, 3, 0, '2...', 12, 0, 100, 0, 0, 0, '"Dirty" Larry'),
+(@NPC_LARRY, 4, 0, 'Time to meet your maker!', 12, 0, 100, 0, 0, 0, '"Dirty" Larry'),
+(@NPC_LARRY, 5, 0, 'Alright, we give up! Don''t hurt us!', 12, 0, 100, 0, 0, 0, '"Dirty" Larry');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=8033;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,8033,0,0,9,10231,0,0,0,'','"Dirty" Larry only show gossip if player is on and has not completed What Book? I Dont See Any Book');
diff --git a/sql/updates/world/2013_04_11_02_world_misc.sql b/sql/updates/world/2013_04_11_02_world_misc.sql
new file mode 100644
index 00000000000..be9652a13bb
--- /dev/null
+++ b/sql/updates/world/2013_04_11_02_world_misc.sql
@@ -0,0 +1,69 @@
+SET @NPC_HEBJIN := 28636;
+SET @NPC_BAT := 28639;
+SET @GO_DRUM := 190695;
+
+DELETE FROM `creature` WHERE `guid` IN (117079,117301);
+
+UPDATE `creature_template` SET `speed_run`=0.857143, `unit_flags`=33024, `AIName`='SmartAI' WHERE `entry`=@NPC_HEBJIN;
+UPDATE `creature_template` SET `speed_run`=2, `unit_flags`=256, `AIName`='SmartAI', `InhabitType`=4 WHERE `entry`=@NPC_BAT;
+
+DELETE FROM `event_scripts` WHERE `id`=18773;
+INSERT INTO `event_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES
+(18773,0,10,@NPC_HEBJIN,180000,0,5988.715,-3878.036,417.1502,2.356194);
+
+DELETE FROM `creature_text` WHERE `entry`=@NPC_HEBJIN;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@NPC_HEBJIN,0,0,'Who''s that beatin'' on my drum?',14,0,100,5,0,12009,'Heb''Jin'),
+(@NPC_HEBJIN,1,0,'I''m gonna come down there and kill you good, $r!',14,0,100,15,0,0,'Heb''Jin'),
+(@NPC_HEBJIN,2,0,'Now you gonna die!',14,0,100,0,0,0,'Heb''Jin');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=52151;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,52151,0,31,3,@NPC_BAT,0,0,'','Spell Bat Net targets Heb''Jin''s Bat');
+
+DELETE FROM `waypoints` WHERE `entry`=@NPC_BAT;
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@NPC_BAT,1,5982.633,-3879.573,422.4082,'Heb''Jin''s Bat'),
+(@NPC_BAT,2,5968.549,-3869.597,420.1865,'Heb''Jin''s Bat'),
+(@NPC_BAT,3,5954.345,-3851.714,395.2976,'Heb''Jin''s Bat'),
+(@NPC_BAT,4,5934.977,-3822.782,369.5197,'Heb''Jin''s Bat');
+
+UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=@GO_DRUM;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@NPC_HEBJIN,@NPC_BAT) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@GO_DRUM AND `source_type`=1;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@NPC_HEBJIN*100,@NPC_BAT*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
+(@NPC_HEBJIN,0,0,0,54,0,100,0,0,0,0,0,80,@NPC_HEBJIN*100,2,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - Just summoned - Run script'),
+(@NPC_HEBJIN,0,1,2,38,0,100,0,0,1,0,0,11,52354,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Spellcast Script Effect - Creature Attack GUID from Dot Variable'),
+(@NPC_HEBJIN,0,2,3,61,0,100,0,0,0,0,0,69,0,0,0,0,0,0,8,0,0,0,5937.22,-3820.871,366.5563,0, 'Heb''Jin - On data 0 1 set - Move to position'),
+(@NPC_HEBJIN,0,3,4,61,0,100,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Say line'),
+(@NPC_HEBJIN,0,4,5,61,0,100,0,0,0,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Remove unit_flags IMMUNE_TO_PC'),
+(@NPC_HEBJIN,0,5,0,61,0,100,0,0,0,0,0,49,0,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Start attack'),
+(@NPC_HEBJIN,0,6,0,0,0,100,0,1000,1000,7000,8000,11,12734,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On update IC - Spellcast Ground Smash'),
+(@NPC_HEBJIN,0,7,0,0,0,100,0,5000,5000,10000,12000,11,15548,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On update IC - Spellcast Thunder Clap'),
+(@NPC_HEBJIN,0,8,0,13,0,100,0,12000,15000,0,0,11,12555,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Heb''Jin - On target casting - Spellcast Pummel'),
+
+(@NPC_BAT,0,0,1,11,0,100,0,0,0,0,0,91,7,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spawn - Remove unit_field_bytes1 (dead)'),
+(@NPC_BAT,0,1,2,61,0,100,0,0,0,0,0,11,52353,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spawn - Spellcast Script Effect - Creature Capture GUID to Dot Variable'),
+(@NPC_BAT,0,2,0,61,0,100,0,0,0,0,0,4,10892,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spawn - Play sound'),
+(@NPC_BAT,0,3,0,27,0,100,1,0,0,0,0,53,1,@NPC_BAT,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On passenger boarded - Start WP movement'),
+(@NPC_BAT,0,4,5,40,0,100,0,4,@NPC_BAT,0,0,28,43671,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On WP 4 reached - Remove aura Ride Vehicle'),
+(@NPC_BAT,0,5,6,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,19,@NPC_HEBJIN,10,0,0,0,0,0, 'Heb''Jin''s Bat - On WP 4 reached - Set data 0 1 Heb''Jin'),
+(@NPC_BAT,0,6,0,61,0,100,0,0,0,0,0,80,@NPC_BAT*100,2,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On WP 4 reached - Run script'),
+(@NPC_BAT,0,7,8,8,0,100,0,52151,0,0,0,18,256,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spellhit Bat Net - Set unit_flags IMMUNE_TO_PC'),
+(@NPC_BAT,0,8,9,61,0,100,0,0,0,0,0,90,7,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spellhit Bat Net - Set unit_field_bytes1 (dead)'),
+(@NPC_BAT,0,9,0,61,0,100,0,0,0,0,0,41,5000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spellhit Bat Net - Despawn after 5 seconds'),
+
+(@GO_DRUM,1,0,1,70,0,100,0,2,0,0,0,64,1,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Heb''Jin''s Drum - On state changed - Store targetlist'),
+(@GO_DRUM,1,1,0,61,0,100,0,0,0,0,0,100,1,0,0,0,0,0,19,@NPC_HEBJIN,100,0,0,0,0,0, 'Heb''Jin''s Drum - On state changed - Send targetlist to Heb''Jin'),
+
+(@NPC_HEBJIN*100,9,0,0,0,0,100,0,0,0,0,0,11,52353,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin script - Spellcast Script Effect - Creature Capture GUID to Dot Variable'),
+(@NPC_HEBJIN*100,9,1,0,0,0,100,0,3200,3200,0,0,11,52154,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin script - Spellcast Taunt'),
+(@NPC_HEBJIN*100,9,2,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin script - Say line'),
+(@NPC_HEBJIN*100,9,3,0,0,0,100,0,300,300,0,0,12,@NPC_BAT,8,0,0,0,0,8,0,0,0,5984.547,-3882.621,417.4379,1.919862, 'Heb''Jin script - Summon Heb''Jin''s Bat'),
+(@NPC_HEBJIN*100,9,4,0,0,0,100,0,0,0,0,0,100,1,0,0,0,0,0,19,@NPC_BAT,10,0,0,0,0,0, 'Heb''Jin script - Send targetlist'),
+(@NPC_HEBJIN*100,9,5,0,0,0,100,0,5700,5700,0,0,1,1,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin script - Say line'),
+(@NPC_HEBJIN*100,9,6,0,0,0,100,0,2400,2400,0,0,11,43671,0,0,0,0,0,19,@NPC_BAT,10,0,0,0,0,0, 'Heb''Jin script - Spellcast Ride Vehicle'),
+
+(@NPC_BAT*100,9,0,0,0,0,100,0,2000,2000,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat script 1 - Remove unit_flags IMMUNE_TO_PC'),
+(@NPC_BAT*100,9,1,0,0,0,100,0,0,0,0,0,49,0,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin''s Bat script 1 - Start attack');
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 4717832a727..9807e7a016d 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2392,8 +2392,6 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
case SUMMON_CATEGORY_VEHICLE:
// Summoning spells (usually triggered by npc_spellclick) that spawn a vehicle and that cause the clicker
// to cast a ride vehicle spell on the summoned unit.
- float x, y, z;
- m_caster->GetClosePoint(x, y, z, DEFAULT_WORLD_OBJECT_SIZE);
summon = m_originalCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, m_caster, m_spellInfo->Id);
if (!summon || !summon->IsVehicle())
return;
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index 3d22bac4376..c335c90cc30 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -136,9 +136,7 @@ class boss_tyrannus : public CreatureScript
void InitializeAI()
{
- if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != sObjectMgr->GetScriptId(PoSScriptName))
- me->IsAIEnabled = false;
- else if (instance->GetBossState(DATA_TYRANNUS) != DONE)
+ if (instance->GetBossState(DATA_TYRANNUS) != DONE)
Reset();
else
me->DespawnOrUnsummon();
@@ -281,7 +279,7 @@ class boss_tyrannus : public CreatureScript
CreatureAI* GetAI(Creature* creature) const
{
- return new boss_tyrannusAI(creature);
+ return GetPitOfSaronAI<boss_tyrannusAI>(creature);
}
};
@@ -387,32 +385,32 @@ class boss_rimefang : public CreatureScript
class player_overlord_brandAI : public PlayerAI
{
public:
- player_overlord_brandAI(Player* player) : PlayerAI(player)
+ player_overlord_brandAI(Player* player) : PlayerAI(player), _tyrannus(0)
{
- tyrannus = NULL;
}
void SetGUID(uint64 guid, int32 /*type*/)
{
- tyrannus = ObjectAccessor::GetCreature(*me, guid);
- me->IsAIEnabled = tyrannus != NULL;
+ _tyrannus = guid;
}
void DamageDealt(Unit* /*victim*/, uint32& damage, DamageEffectType /*damageType*/)
{
- if (tyrannus->getVictim())
- me->CastCustomSpell(SPELL_OVERLORD_BRAND_DAMAGE, SPELLVALUE_BASE_POINT0, damage, tyrannus->getVictim(), true, NULL, NULL, tyrannus->GetGUID());
+ if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannus))
+ if (tyrannus->getVictim())
+ me->CastCustomSpell(SPELL_OVERLORD_BRAND_DAMAGE, SPELLVALUE_BASE_POINT0, damage, tyrannus->getVictim(), true, NULL, NULL, tyrannus->GetGUID());
}
void HealDone(Unit* /*target*/, uint32& addHealth)
{
- me->CastCustomSpell(SPELL_OVERLORD_BRAND_HEAL, SPELLVALUE_BASE_POINT0, int32(addHealth*5.5f), tyrannus, true, NULL, NULL, tyrannus->GetGUID());
+ if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannus))
+ me->CastCustomSpell(SPELL_OVERLORD_BRAND_HEAL, SPELLVALUE_BASE_POINT0, int32(addHealth*5.5f), tyrannus, true, NULL, NULL, tyrannus->GetGUID());
}
void UpdateAI(uint32 /*diff*/) { }
private:
- Creature* tyrannus;
+ uint64 _tyrannus;
};
class spell_tyrannus_overlord_brand : public SpellScriptLoader
@@ -424,6 +422,11 @@ class spell_tyrannus_overlord_brand : public SpellScriptLoader
{
PrepareAuraScript(spell_tyrannus_overlord_brand_AuraScript);
+ bool Load()
+ {
+ return GetCaster() && GetCaster()->GetEntry() == NPC_TYRANNUS;
+ }
+
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (GetTarget()->GetTypeId() != TYPEID_PLAYER)
@@ -440,9 +443,10 @@ class spell_tyrannus_overlord_brand : public SpellScriptLoader
if (GetTarget()->GetTypeId() != TYPEID_PLAYER)
return;
- delete GetTarget()->GetAI();
- GetTarget()->SetAI(oldAI);
GetTarget()->IsAIEnabled = oldAIState;
+ UnitAI* thisAI = GetTarget()->GetAI();
+ GetTarget()->SetAI(oldAI);
+ delete thisAI;
}
void Register()
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
index 94bca5ffaf7..a9b88ca3066 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
@@ -18,6 +18,9 @@
#ifndef DEF_PIT_OF_SARON_H
#define DEF_PIT_OF_SARON_H
+#include "Map.h"
+#include "Creature.h"
+
#define PoSScriptName "instance_pit_of_saron"
#define MAX_ENCOUNTER 3
@@ -94,4 +97,14 @@ enum GameObjectIds
GO_HALLS_OF_REFLECTION_PORTCULLIS = 201848,
};
+template<class AI>
+AI* GetPitOfSaronAI(Creature* creature)
+{
+ if (InstanceMap* instance = creature->GetMap()->ToInstanceMap())
+ if (instance->GetInstanceScript())
+ if (instance->GetScriptId() == sObjectMgr->GetScriptId(PoSScriptName))
+ return new AI(creature);
+ return NULL;
+}
+
#endif
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index f4df90c49e8..938b2e94d02 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -73,7 +73,6 @@ enum Spells
enum Shadowmourne
{
QUEST_BLOOD_INFUSION = 24756,
- ITEM_SHADOW_S_EDGE = 49888,
SPELL_GUSHING_WOUND = 72132,
SPELL_THIRST_QUENCHED = 72154,
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index ea74d8ec61c..7294e4a5571 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -1131,7 +1131,8 @@ class spell_sindragosa_frost_breath : public SpellScriptLoader
if (!target)
return;
- if (target->GetQuestStatus(QUEST_FROST_INFUSION) != QUEST_STATUS_INCOMPLETE)
+ // Check difficulty and quest status
+ if (!(target->GetRaidDifficulty() & RAID_DIFFICULTY_MASK_25MAN) || target->GetQuestStatus(QUEST_FROST_INFUSION) != QUEST_STATUS_INCOMPLETE)
return;
// Check if player has Shadow's Edge equipped and not ready for infusion
diff --git a/src/server/scripts/Outland/zone_shattrath_city.cpp b/src/server/scripts/Outland/zone_shattrath_city.cpp
index 4af11191708..1fb0210bb73 100644
--- a/src/server/scripts/Outland/zone_shattrath_city.cpp
+++ b/src/server/scripts/Outland/zone_shattrath_city.cpp
@@ -19,7 +19,7 @@
/* ScriptData
SDName: Shattrath_City
SD%Complete: 100
-SDComment: Quest support: 10004, 10009, 10211, 10231. Flask vendors, Teleport to Caverns of Time
+SDComment: Quest support: 10004, 10009, 10211. Flask vendors, Teleport to Caverns of Time
SDCategory: Shattrath City
EndScriptData */
@@ -29,7 +29,6 @@ npc_salsalabim
npc_shattrathflaskvendors
npc_zephyr
npc_kservant
-npc_dirty_larry
npc_ishanah
npc_khadgar
EndContentData */
@@ -425,198 +424,6 @@ public:
};
/*######
-# npc_dirty_larry
-######*/
-
-#define GOSSIP_BOOK "Ezekiel said that you might have a certain book..."
-
-enum DirtyLarry
-{
- SAY_1 = 0,
- SAY_2 = 1,
- SAY_3 = 2,
- SAY_4 = 3,
- SAY_5 = 4,
- SAY_GIVEUP = 5,
-
- QUEST_WBI = 10231,
- NPC_CREEPJACK = 19726,
- NPC_MALONE = 19725
-};
-
-class npc_dirty_larry : public CreatureScript
-{
-public:
- npc_dirty_larry() : CreatureScript("npc_dirty_larry") { }
-
- struct npc_dirty_larryAI : public ScriptedAI
- {
- npc_dirty_larryAI(Creature* creature) : ScriptedAI(creature) {}
-
- bool Event;
- bool Attack;
- bool Done;
-
- uint64 PlayerGUID;
-
- uint32 SayTimer;
- uint32 Step;
-
- void Reset()
- {
- Event = false;
- Attack = false;
- Done = false;
-
- PlayerGUID = 0;
- SayTimer = 0;
- Step = 0;
-
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- me->setFaction(1194);
- if (Creature* Creepjack = me->FindNearestCreature(NPC_CREEPJACK, 20))
- {
- Creepjack->AI()->EnterEvadeMode();
- Creepjack->setFaction(1194);
- Creepjack->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
-
- if (Creature* Malone = me->FindNearestCreature(NPC_MALONE, 20))
- {
- Malone->AI()->EnterEvadeMode();
- Malone->setFaction(1194);
- Malone->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
- }
-
- uint32 NextStep(uint32 Step)
- {
- Player* player = Unit::GetPlayer(*me, PlayerGUID);
-
- switch (Step)
- {
- case 0:{ me->SetInFront(player);
- Unit* Creepjack = me->FindNearestCreature(NPC_CREEPJACK, 20);
- if (Creepjack)
- Creepjack->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
- Unit* Malone = me->FindNearestCreature(NPC_MALONE, 20);
- if (Malone)
- Malone->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
- me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); }return 2000;
- case 1: Talk(SAY_1, player->GetGUID()); return 3000;
- case 2: Talk(SAY_2, player->GetGUID()); return 5000;
- case 3: Talk(SAY_3, player->GetGUID()); return 2000;
- case 4: Talk(SAY_4, player->GetGUID()); return 2000;
- case 5: Talk(SAY_5, player->GetGUID()); return 2000;
- case 6: Attack = true; return 2000;
- default: return 0;
- }
- }
-
- void EnterCombat(Unit* /*who*/){}
-
- void UpdateAI(uint32 diff)
- {
- if (SayTimer <= diff)
- {
- if (Event)
- SayTimer = NextStep(++Step);
- }
- else
- SayTimer -= diff;
-
- if (Attack)
- {
- me->setFaction(14);
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- if (Player* player = Unit::GetPlayer(*me, PlayerGUID))
- {
- if (Creature* Creepjack = me->FindNearestCreature(NPC_CREEPJACK, 20))
- {
- Creepjack->Attack(player, true);
- Creepjack->setFaction(14);
- Creepjack->GetMotionMaster()->MoveChase(player);
- Creepjack->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
-
- if (Creature* Malone = me->FindNearestCreature(NPC_MALONE, 20))
- {
- Malone->Attack(player, true);
- Malone->setFaction(14);
- Malone->GetMotionMaster()->MoveChase(player);
- Malone->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
- DoStartMovement(player);
- AttackStart(player);
- }
- Attack = false;
- }
-
- if (HealthBelowPct(5) && !Done)
- {
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- me->RemoveAllAuras();
-
- if (Creature* Creepjack = me->FindNearestCreature(NPC_CREEPJACK, 20))
- {
- Creepjack->AI()->EnterEvadeMode();
- Creepjack->setFaction(1194);
- Creepjack->GetMotionMaster()->MoveTargetedHome();
- Creepjack->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
-
- if (Creature* Malone = me->FindNearestCreature(NPC_MALONE, 20))
- {
- Malone->AI()->EnterEvadeMode();
- Malone->setFaction(1194);
- Malone->GetMotionMaster()->MoveTargetedHome();
- Malone->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
- me->setFaction(1194);
- Done = true;
- Talk(SAY_GIVEUP);
- me->DeleteThreatList();
- me->CombatStop();
- me->GetMotionMaster()->MoveTargetedHome();
- if (Player* player = Unit::GetPlayer(*me, PlayerGUID))
- player->GroupEventHappens(QUEST_WBI, me);
- }
- DoMeleeAttackIfReady();
- }
- };
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- player->PlayerTalkClass->ClearMenus();
- if (action == GOSSIP_ACTION_INFO_DEF+1)
- {
- CAST_AI(npc_dirty_larry::npc_dirty_larryAI, creature->AI())->Event = true;
- CAST_AI(npc_dirty_larry::npc_dirty_larryAI, creature->AI())->PlayerGUID = player->GetGUID();
- player->CLOSE_GOSSIP_MENU();
- }
-
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (creature->isQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestStatus(QUEST_WBI) == QUEST_STATUS_INCOMPLETE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BOOK, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
-
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- return true;
- }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_dirty_larryAI (creature);
- }
-};
-
-/*######
# npc_ishanah
######*/
@@ -727,7 +534,6 @@ void AddSC_shattrath_city()
new npc_shattrathflaskvendors();
new npc_zephyr();
new npc_kservant();
- new npc_dirty_larry();
new npc_ishanah();
new npc_khadgar();
}