aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README12
-rw-r--r--sql/updates/world/2013_06_02_03_world_conditions.sql14
-rw-r--r--sql/updates/world/2013_06_03_00_world_trinity_string.sql (renamed from sql/updates/world/2013_05_26_00_world_trinity_string.sql)2
-rw-r--r--sql/updates/world/2013_06_03_02_world_conditions.sql264
-rw-r--r--sql/updates/world/2013_06_03_03_world_conditions.sql95
-rw-r--r--sql/updates/world/2013_06_03_04_world_conditions.sql8
-rw-r--r--sql/updates/world/2013_06_03_05_world_gossip.sql301
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp93
-rw-r--r--src/server/game/Entities/Creature/Creature.h2
-rw-r--r--src/server/game/Entities/Object/Object.cpp6
-rw-r--r--src/server/game/Entities/Player/Player.cpp17
-rw-r--r--src/server/game/Handlers/NPCHandler.cpp7
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp8
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp2
-rw-r--r--src/server/scripts/Northrend/Gundrak/gundrak.h4
-rw-r--r--src/server/scripts/World/npcs_special.cpp4
16 files changed, 697 insertions, 142 deletions
diff --git a/README b/README
index b274e53dc32..3eea1dccdc5 100644
--- a/README
+++ b/README
@@ -41,16 +41,20 @@ project website at http://www.TrinityCore.org
Documentation including installation instructions can be found inside
the doc directory.
-SQL files to create the database can be found in the sql directory. Files
-to update your database from an older revision/version can be found in the
-sql/updates directory.
+SQL files to create the database can be found in the sql/create and sql/base directory.
+You need to download world database from http://www.trinitycore.org/f/files/ be sure you get the higher numbered database.
+When installing a core the 1st time you need to import also the files at sql/updates/world directory.
+To save time importing multiple files, you can use copy *.sql world_updates.sql under Windows or cat *.sql > world_updates under Linux.
+You need to update your core (recompile and overwrite binaries) when updating your database, usually you can't use one older core with a newer database or a newer core with a older database.
+When updating your core you also need to import the files at sql/updates/auth and sql/updates/characters along with sql/updates/world files.
+You can't merge all the sql files on sql/updates into a single file, because they belong to 3 different databases and they don't use database name.
TrinityCore Requirements
Platform: Linux, Windows or Mac
Processor with SSE2 support
ACE ≥ 5.8.3
MySQL ≥ 5.1.0
-CMake ≥ 2.8.0
+CMake ≥ 2.8.0 (max 2.8.9 under linux)
OpenSSL ≥ 0.9.8o
GCC ≥ 4.3 (Linux only)
MS Visual Studio ≥ 9 (2008) (Windows only)
diff --git a/sql/updates/world/2013_06_02_03_world_conditions.sql b/sql/updates/world/2013_06_02_03_world_conditions.sql
index c2d730ffc6d..f38ce3caf3e 100644
--- a/sql/updates/world/2013_06_02_03_world_conditions.sql
+++ b/sql/updates/world/2013_06_02_03_world_conditions.sql
@@ -1,5 +1,5 @@
-- Add option conditions for Paladin trainers
-DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (2304,4556,4557,4469,4470,4471,4662,4663,4664,4677,4678,7260,8111);
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (2304,4556,4557,4469,4470,4471,4662,4463,4464,4677,4678,7260,8111);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(15,2304,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
(15,2304,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
@@ -22,12 +22,12 @@ INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,
(15,4662,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
(15,4662,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
(15,4662,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
-(15,4663,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
-(15,4663,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
-(15,4663,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
-(15,4664,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
-(15,4664,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
-(15,4664,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4463,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4463,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4463,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4464,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4464,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4464,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
(15,4677,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
(15,4677,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
(15,4677,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
diff --git a/sql/updates/world/2013_05_26_00_world_trinity_string.sql b/sql/updates/world/2013_06_03_00_world_trinity_string.sql
index 591021a5f84..80ad953b3b7 100644
--- a/sql/updates/world/2013_05_26_00_world_trinity_string.sql
+++ b/sql/updates/world/2013_06_03_00_world_trinity_string.sql
@@ -1,4 +1,4 @@
-DELETE FROM `trinity_string` WHERE `entry`=854 LIMIT 1;
+DELETE FROM `trinity_string` WHERE `entry`=854 LIMIT 1;
INSERT INTO `trinity_string` (`entry`, `content_default`, content_loc1, content_loc2, content_loc3, content_loc4, content_loc5, content_loc6, content_loc7, content_loc8) VALUES
(854, '└ Mails: %d Read/%u Total', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
diff --git a/sql/updates/world/2013_06_03_02_world_conditions.sql b/sql/updates/world/2013_06_03_02_world_conditions.sql
new file mode 100644
index 00000000000..6b542fef131
--- /dev/null
+++ b/sql/updates/world/2013_06_03_02_world_conditions.sql
@@ -0,0 +1,264 @@
+-- Gossip Condition for Ultham Ironhorn "Dwarf riding trainer"
+SET @GOSSIP := 4014;
+SET @TEXTYES := 4871;
+SET @TEXTNO := 5858;
+SET @FACTION := 47;
+SET @RACE := 4;
+SET @NOTRACE := 1787;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Dwarf'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Ironforge'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Dwarf'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Ironforge'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Dwarf'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Ironforge');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+UPDATE `creature_template` SET `gossip_menu_id`=@GOSSIP WHERE `entry`=4772;
+
+-- Gossip Condition for Velma Warnam "Forsaken riding trainer"
+SET @GOSSIP := 4015;
+SET @TEXTYES := 4873;
+SET @TEXTNO := 5859;
+SET @FACTION := 68;
+SET @RACE := 16;
+SET @NOTRACE := 1775;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Forsaken'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Undercity'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Forsaken'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Undercity'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Forsaken'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Undercity');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+
+-- Gossip Condition for Benjy Featherwhistle "Gnomeregan riding trainer"
+SET @GOSSIP := 4016;
+SET @TEXTYES := 4878;
+SET @TEXTNO := 5860;
+SET @FACTION := 54;
+SET @RACE := 64;
+SET @NOTRACE := 1727;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Gnome'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Gnomeregan'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Gnome'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Gnomeregan'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Gnome'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Gnomeregan');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+
+-- Gossip Condition for Randel Hunter "Human riding trainer"
+SET @GOSSIP := 4018;
+SET @TEXTYES := 4876;
+SET @TEXTNO := 5861;
+SET @FACTION := 72;
+SET @RACE := 1;
+SET @NOTRACE := 1790;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Human'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Stormwind'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Human'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Stormwind'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Human'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Stormwind');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+
+-- Gossip Condition for Jartsam "Night Elf riding trainer"
+SET @GOSSIP := 4019;
+SET @TEXTYES := 4877;
+SET @TEXTNO := 5862;
+SET @FACTION := 69;
+SET @RACE := 8;
+SET @NOTRACE := 1783;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Night Elf'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Darnassus'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Night Elf'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Darnassus'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Night Elf'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Darnassus');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+
+-- Gossip Condition for Kildar "Orc riding trainer"
+SET @GOSSIP := 4020;
+SET @TEXTYES := 4879;
+SET @TEXTNO := 5863;
+SET @FACTION := 76;
+SET @RACE := 2;
+SET @NOTRACE := 1789;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is an Orc'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Orgrimmar'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not an Orc'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Orgrimmar'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is an Orc'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Orgrimmar');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+
+-- Gossip Condition for Kar Stormsinger "Tauren riding trainer"
+SET @GOSSIP := 4021;
+SET @TEXTYES := 4874;
+SET @TEXTNO := 5864;
+SET @FACTION := 81;
+SET @RACE := 32;
+SET @NOTRACE := 1759;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Tauren'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Thunder Bluff'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Tauren'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Thunder Bluff'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Tauren'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Thunder Bluff');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+
+-- Gossip Condition for Xar'Ti "Troll riding trainer"
+SET @GOSSIP := 4022;
+SET @TEXTYES := 4875;
+SET @TEXTNO := 5865;
+SET @FACTION := 530;
+SET @RACE := 128;
+SET @NOTRACE := 1663;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Troll'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Darkspear Trolls'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Troll'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Darkspear Trolls'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Troll'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Darkspear Trolls');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+UPDATE `creature_template` SET `gossip_menu_id`=@GOSSIP WHERE `entry`=7953;
+
+-- Gossip Condition for Perascamin "Blood Elf riding trainer"
+SET @GOSSIP := 8275;
+SET @TEXTYES := 10308;
+SET @TEXTNO := 10310;
+SET @FACTION := 911;
+SET @RACE := 512;
+SET @NOTRACE := 1279;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Blood Elf'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Silvermoon City'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Blood Elf'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Silvermoon City'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Blood Elf'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Silvermoon City');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+UPDATE `creature_template` SET `gossip_menu_id`=@GOSSIP WHERE `entry`=16280;
+
+-- Gossip Condition for Aalun "Draenei riding trainer"
+SET @GOSSIP := 8553;
+SET @TEXTYES := 10792;
+SET @TEXTNO := 10705;
+SET @FACTION := 930;
+SET @RACE := 1024;
+SET @NOTRACE := 767;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,16,@RACE,0,0,0,'','Show gossip text if player is a Draenei'),
+(14,@GOSSIP,@TEXTYES,1,5,@FACTION,128,0,0,'','Show gossip text if player is Exalted with Exodar'),
+(14,@GOSSIP,@TEXTNO,0,16,@NOTRACE,0,0,0,'','Show gossip text if player is not a Draenei'),
+(14,@GOSSIP,@TEXTNO,0,5,@FACTION,127,0,0,'','Show gossip text if player is Not Exalted with Exodar'),
+(15,@GOSSIP,0,0,16,@RACE,0,0,0,'','Show gossip option if player is a Draenei'),
+(15,@GOSSIP,0,1,5,@FACTION,128,0,0,'','Show gossip option if player is a Exalted with Exodar');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"I seek training to ride a steed.",5,16,0,0,0,0,'');
+
+-- Gossip Condition for Olrokk "Riding trainer"
+SET @GOSSIP := 8628;
+SET @TEXT := 10817;
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXT;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXT);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Train me.",5,16,0,0,0,0,'');
+UPDATE `creature_template` SET `gossip_menu_id`=@GOSSIP WHERE `entry`=20500;
diff --git a/sql/updates/world/2013_06_03_03_world_conditions.sql b/sql/updates/world/2013_06_03_03_world_conditions.sql
new file mode 100644
index 00000000000..3edbde56d5b
--- /dev/null
+++ b/sql/updates/world/2013_06_03_03_world_conditions.sql
@@ -0,0 +1,95 @@
+-- Add option conditions for Rogue trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceEntry`=4 AND `SourceGroup` IN (85,141,381,410,411,436,3984,4502,4512,4513,4540,4541,4542,4561,4562,4575,4576,4577,4658,4659,4676,4690,5061,6650);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`NegativeCondition`,`ScriptName`,`Comment`) VALUES
+(15,85,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,85,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,85,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,85,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,141,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,141,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,141,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,141,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,410,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,410,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,410,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,410,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,411,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,411,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,411,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,411,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,436,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,436,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,436,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,436,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,3984,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,3984,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,3984,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,3984,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4502,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4502,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4502,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4502,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4512,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4512,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4512,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4512,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4513,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4513,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4513,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4513,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4540,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4540,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4540,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4540,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4541,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4541,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4541,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4541,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4542,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4542,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4542,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4542,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4561,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4561,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4561,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4561,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4562,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4562,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4562,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4562,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4575,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4575,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4575,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4575,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4576,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4576,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4576,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4576,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4577,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4577,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4577,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4577,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4658,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4658,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4658,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4658,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4659,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4659,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4659,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4659,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4676,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4676,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4676,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4676,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,4690,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4690,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,4690,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,4690,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,5061,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,5061,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,5061,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,5061,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681'),
+(15,6650,4,0,15,8,0,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,6650,4,0,27,24,3,0,0,0,'','Show gossip option if player is level 24 or higher'),
+(15,6650,4,0,2,17126,1,0,0,0,'','Show gossip option if player has Elegant Letter'),
+(15,6650,4,0,28,6681,0,0,0,1,'','Show gossip option if player has not completed quest 6681');
diff --git a/sql/updates/world/2013_06_03_04_world_conditions.sql b/sql/updates/world/2013_06_03_04_world_conditions.sql
new file mode 100644
index 00000000000..f18492fc34a
--- /dev/null
+++ b/sql/updates/world/2013_06_03_04_world_conditions.sql
@@ -0,0 +1,8 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (4463,4464,4663,4664);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,4463,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4463,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4463,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4464,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4464,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4464,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin');
diff --git a/sql/updates/world/2013_06_03_05_world_gossip.sql b/sql/updates/world/2013_06_03_05_world_gossip.sql
new file mode 100644
index 00000000000..7f21d072162
--- /dev/null
+++ b/sql/updates/world/2013_06_03_05_world_gossip.sql
@@ -0,0 +1,301 @@
+-- XXXXXXXXXXXXXXXXXXXXX
+-- X Shaman Trainers X
+-- XXXXXXXXXXXXXXXXXXXXX
+
+UPDATE `creature_template` SET `gossip_menu_id`=7357 WHERE `entry`=23127;
+UPDATE `creature_template` SET `gossip_menu_id`=7377 WHERE `entry`=17204;
+UPDATE `creature_template` SET `gossip_menu_id`=4104 WHERE `entry`=986;
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4103;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4104;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4515;
+SET @TEXTYES := 5007;
+SET @TEXTNO := 5008;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4516;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4528;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4529;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4530;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 4652;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 5123;
+SET @TEXTYES := 5005;
+SET @TEXTNO := 5006;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 7357;
+SET @TEXTYES := 8786;
+SET @TEXTNO := 8785;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 7467;
+SET @TEXTYES := 9050;
+SET @TEXTNO := 8785;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 7522;
+SET @TEXTYES := 9122;
+SET @TEXTNO := 8785;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 8110;
+SET @TEXTYES := 10043;
+SET @TEXTNO := 10040;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,2,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
+
+-- Gossip Condition for Shaman Trainers
+SET @GOSSIP := 7377;
+SET @TEXTYES := 8829;
+SET @TEXTNO := 8828;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,@GOSSIP,@TEXTYES,0,15,64,0,0,0,'','Show gossip text if player is a Shaman'),
+(14,@GOSSIP,@TEXTNO,0,15,1471,0,0,0,'','Show gossip text if player is not a Shaman');
+-- Add Any Missing Gossip Menu item
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTYES;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTYES);
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP AND `text_id`=@TEXTNO;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIP,@TEXTNO);
+DELETE FROM `gossip_menu` WHERE `entry` BETWEEN 7502 AND 7509;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(7502,9098),(7503,9099),(7504,9100),(7505,9101),
+(7506,9102),(7507,9103),(7508,9104),(7509,9105);
+-- Add Any Missing Gossip Option
+DELETE FROM `gossip_menu_option` WHERE menu_id BETWEEN 7502 AND 7508;
+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
+(7502,0,0,"Yes, please continue.",1,1,7503,0,0,0,''),
+(7503,0,0,"Yes, please, if you do not mind.",1,1,7504,0,0,0,''),
+(7504,0,0,"Nobundo, please continue.",1,1,7505,0,0,0,''),
+(7505,0,0,"What did it say to you?",1,1,7506,0,0,0,''),
+(7506,0,0,"What was that?",1,1,7507,0,0,0,''),
+(7507,0,0,"What did you do then?",1,1,7508,0,0,0,''),
+(7508,0,0,"Please, go on.",1,1,7509,0,0,0,'');
+DELETE FROM `gossip_menu_option` WHERE menu_id=@GOSSIP;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(@GOSSIP,0,3,"Teach me the ways of the spirits.",5,16,0,0,0,0,''),
+(@GOSSIP,1,0,"Tell me of your past, Farseer.",1,1,7502,0,0,0,''),
+(@GOSSIP,2,0,"I wish to unlearn my talents.",16,16,4461,0,0,0,''),
+(@GOSSIP,3,0,"I wish to know about Dual Talent Specialization.",1,1,10371,0,0,0,'');
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index f274f201e04..b3deb7ae7de 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -871,92 +871,6 @@ void Creature::InitializeReactState()
SetReactState(REACT_DEFENSIVE);*/;
}
-bool Creature::isCanTrainingOf(Player* player, bool msg) const
-{
- if (!isTrainer())
- return false;
-
- TrainerSpellData const* trainer_spells = GetTrainerSpells();
-
- if ((!trainer_spells || trainer_spells->spellList.empty()) && GetCreatureTemplate()->trainer_type != TRAINER_TYPE_PETS)
- {
- TC_LOG_ERROR(LOG_FILTER_SQL, "Creature %u (Entry: %u) have UNIT_NPC_FLAG_TRAINER but have empty trainer spell list.",
- GetGUIDLow(), GetEntry());
- return false;
- }
-
- switch (GetCreatureTemplate()->trainer_type)
- {
- case TRAINER_TYPE_CLASS:
- if (player->getClass() != GetCreatureTemplate()->trainer_class)
- {
- if (msg)
- {
- player->PlayerTalkClass->ClearMenus();
- switch (GetCreatureTemplate()->trainer_class)
- {
- case CLASS_DRUID: player->PlayerTalkClass->SendGossipMenu(4913, GetGUID()); break;
- case CLASS_HUNTER: player->PlayerTalkClass->SendGossipMenu(10090, GetGUID()); break;
- case CLASS_MAGE: player->PlayerTalkClass->SendGossipMenu(328, GetGUID()); break;
- case CLASS_PALADIN:player->PlayerTalkClass->SendGossipMenu(1635, GetGUID()); break;
- case CLASS_PRIEST: player->PlayerTalkClass->SendGossipMenu(4436, GetGUID()); break;
- case CLASS_ROGUE: player->PlayerTalkClass->SendGossipMenu(4797, GetGUID()); break;
- case CLASS_SHAMAN: player->PlayerTalkClass->SendGossipMenu(5003, GetGUID()); break;
- case CLASS_WARLOCK:player->PlayerTalkClass->SendGossipMenu(5836, GetGUID()); break;
- case CLASS_WARRIOR:player->PlayerTalkClass->SendGossipMenu(4985, GetGUID()); break;
- }
- }
- return false;
- }
- break;
- case TRAINER_TYPE_PETS:
- if (player->getClass() != CLASS_HUNTER)
- {
- player->PlayerTalkClass->ClearMenus();
- player->PlayerTalkClass->SendGossipMenu(3620, GetGUID());
- return false;
- }
- break;
- case TRAINER_TYPE_MOUNTS:
- if (GetCreatureTemplate()->trainer_race && player->getRace() != GetCreatureTemplate()->trainer_race)
- {
- if (msg)
- {
- player->PlayerTalkClass->ClearMenus();
- switch (GetCreatureTemplate()->trainer_race)
- {
- case RACE_DWARF: player->PlayerTalkClass->SendGossipMenu(5865, GetGUID()); break;
- case RACE_GNOME: player->PlayerTalkClass->SendGossipMenu(4881, GetGUID()); break;
- case RACE_HUMAN: player->PlayerTalkClass->SendGossipMenu(5861, GetGUID()); break;
- case RACE_NIGHTELF: player->PlayerTalkClass->SendGossipMenu(5862, GetGUID()); break;
- case RACE_ORC: player->PlayerTalkClass->SendGossipMenu(5863, GetGUID()); break;
- case RACE_TAUREN: player->PlayerTalkClass->SendGossipMenu(5864, GetGUID()); break;
- case RACE_TROLL: player->PlayerTalkClass->SendGossipMenu(5816, GetGUID()); break;
- case RACE_UNDEAD_PLAYER:player->PlayerTalkClass->SendGossipMenu(624, GetGUID()); break;
- case RACE_BLOODELF: player->PlayerTalkClass->SendGossipMenu(5862, GetGUID()); break;
- case RACE_DRAENEI: player->PlayerTalkClass->SendGossipMenu(5864, GetGUID()); break;
- }
- }
- return false;
- }
- break;
- case TRAINER_TYPE_TRADESKILLS:
- if (GetCreatureTemplate()->trainer_spell && !player->HasSpell(GetCreatureTemplate()->trainer_spell))
- {
- if (msg)
- {
- player->PlayerTalkClass->ClearMenus();
- player->PlayerTalkClass->SendGossipMenu(11031, GetGUID());
- }
- return false;
- }
- break;
- default:
- return false; // checked and error output at creature_template loading
- }
- return true;
-}
-
bool Creature::isCanInteractWithBattleMaster(Player* player, bool msg) const
{
if (!isBattleMaster())
@@ -989,13 +903,6 @@ bool Creature::isCanInteractWithBattleMaster(Player* player, bool msg) const
return true;
}
-bool Creature::isCanTrainingAndResetTalentsOf(Player* player) const
-{
- return player->getLevel() >= 10
- && GetCreatureTemplate()->trainer_type == TRAINER_TYPE_CLASS
- && player->getClass() == GetCreatureTemplate()->trainer_class;
-}
-
Player* Creature::GetLootRecipient() const
{
if (!m_lootRecipient)
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index 1b59c273d52..6459b80a063 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -482,9 +482,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapCreature
void InitializeReactState();
/// @todo Rename these properly
- bool isCanTrainingOf(Player* player, bool msg) const;
bool isCanInteractWithBattleMaster(Player* player, bool msg) const;
- bool isCanTrainingAndResetTalentsOf(Player* player) const;
bool canCreatureAttack(Unit const* victim, bool force = true) const;
bool IsImmunedToSpell(SpellInfo const* spellInfo) const; // override Unit::IsImmunedToSpell
bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index) const; // override Unit::IsImmunedToSpellEffect
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 6d6c0be5666..262d1b1a475 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -579,12 +579,6 @@ void Object::_BuildValuesUpdate(uint8 updateType, ByteBuffer* data, UpdateMask*
{
if (!target->canSeeSpellClickOn(this->ToCreature()))
appendValue &= ~UNIT_NPC_FLAG_SPELLCLICK;
-
- if (appendValue & UNIT_NPC_FLAG_TRAINER)
- {
- if (!creature->isCanTrainingOf(target, false))
- appendValue &= ~(UNIT_NPC_FLAG_TRAINER | UNIT_NPC_FLAG_TRAINER_CLASS | UNIT_NPC_FLAG_TRAINER_PROFESSION);
- }
}
*data << uint32(appendValue);
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 1d3eebf4c58..7b183c508ae 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -14374,18 +14374,6 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
}
break;
}
- case GOSSIP_OPTION_TRAINER:
- if (!creature->isCanTrainingOf(this, false))
- canTalk = false;
- break;
- case GOSSIP_OPTION_LEARNDUALSPEC:
- if (!(GetSpecsCount() == 1 && creature->isCanTrainingAndResetTalentsOf(this) && !(getLevel() < sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))))
- canTalk = false;
- break;
- case GOSSIP_OPTION_UNLEARNTALENTS:
- if (!creature->isCanTrainingAndResetTalentsOf(this))
- canTalk = false;
- break;
case GOSSIP_OPTION_UNLEARNPETTALENTS:
if (!GetPet() || GetPet()->getPetType() != HUNTER_PET || GetPet()->m_spells.size() <= 1 || creature->GetCreatureTemplate()->trainer_type != TRAINER_TYPE_PETS || creature->GetCreatureTemplate()->trainer_class != CLASS_HUNTER)
canTalk = false;
@@ -14405,6 +14393,9 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
case GOSSIP_OPTION_QUESTGIVER:
canTalk = false;
break;
+ case GOSSIP_OPTION_TRAINER:
+ case GOSSIP_OPTION_LEARNDUALSPEC:
+ case GOSSIP_OPTION_UNLEARNTALENTS:
case GOSSIP_OPTION_GOSSIP:
case GOSSIP_OPTION_SPIRITGUIDE:
case GOSSIP_OPTION_INNKEEPER:
@@ -14418,7 +14409,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
canTalk = false;
break;
default:
- TC_LOG_ERROR(LOG_FILTER_SQL, "Creature entry %u have unknown gossip option %u for menu %u", creature->GetEntry(), itr->second.OptionType, itr->second.MenuId);
+ TC_LOG_ERROR(LOG_FILTER_SQL, "Creature entry %u has unknown gossip option %u for menu %u", creature->GetEntry(), itr->second.OptionType, itr->second.MenuId);
canTalk = false;
break;
}
diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp
index e08373b642b..18023ae519c 100644
--- a/src/server/game/Handlers/NPCHandler.cpp
+++ b/src/server/game/Handlers/NPCHandler.cpp
@@ -132,10 +132,6 @@ void WorldSession::SendTrainerList(uint64 guid, const std::string& strTitle)
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
- // trainer list loaded at check;
- if (!unit->isCanTrainingOf(_player, true))
- return;
-
CreatureTemplate const* ci = unit->GetCreatureTemplate();
if (!ci)
@@ -254,9 +250,6 @@ void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket& recvData)
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
- if (!unit->isCanTrainingOf(_player, true))
- return;
-
// check present spell in trainer spell list
TrainerSpellData const* trainer_spells = unit->GetTrainerSpells();
if (!trainer_spells)
diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
index 227780daa1f..186723a1c43 100755
--- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
@@ -43,8 +43,8 @@ void PointMovementGenerator<T>::DoInitialize(T* unit)
if (speed > 0.0f)
init.SetVelocity(speed);
init.Launch();
-
- //Call for creature group update
+
+ // Call for creature group update
if (Creature* creature = unit->ToCreature())
if (creature->GetFormation() && creature->GetFormation()->getLeader() == creature)
creature->GetFormation()->LeaderMoveTo(i_x, i_y, i_z);
@@ -72,8 +72,8 @@ bool PointMovementGenerator<T>::DoUpdate(T* unit, uint32 /*diff*/)
if (speed > 0.0f) // Default value for point motion type is 0.0, if 0.0 spline will use GetSpeed on unit
init.SetVelocity(speed);
init.Launch();
-
- //Call for creature group update
+
+ // Call for creature group update
if (Creature* creature = unit->ToCreature())
if (creature->GetFormation() && creature->GetFormation()->getLeader() == creature)
creature->GetFormation()->LeaderMoveTo(i_x, i_y, i_z);
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index c49514cacc4..e6a7b096a34 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -1664,7 +1664,7 @@ public:
// Only fetch these fields if commander has sufficient rights)
if (handler->HasPermission(RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA) && // RBAC Perm. 48, Role 39
- (!handler->GetSession() || handler->GetSession()->GetSecurity() >= security))
+ (!handler->GetSession() || handler->GetSession()->GetSecurity() >= AccountTypes(security)))
{
eMail = fields[2].GetString();
lastIp = fields[3].GetString();
diff --git a/src/server/scripts/Northrend/Gundrak/gundrak.h b/src/server/scripts/Northrend/Gundrak/gundrak.h
index a43edb4fcd7..f47b71cd48e 100644
--- a/src/server/scripts/Northrend/Gundrak/gundrak.h
+++ b/src/server/scripts/Northrend/Gundrak/gundrak.h
@@ -51,7 +51,8 @@ enum mainCreatures
CREATURE_ECK = 29932
};
-enum Gameobjects {
+enum Gameobjects
+{
GO_SLADRAN_ALTAR = 192518,
GO_MOORABI_ALTAR = 192519,
@@ -67,7 +68,6 @@ enum Gameobjects {
GO_GALDARAH_DOOR3 = 192568,
GO_BRIDGE = 193188,
GO_COLLISION = 192633
-
};
#endif
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index 56841fcdaa1..6bd2132bf16 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -1263,10 +1263,10 @@ public:
if (creature->isTrainer())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
- if (creature->isCanTrainingAndResetTalentsOf(player))
+ if (player->getClass() == CLASS_ROGUE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_HELLO_ROGUE1, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_UNLEARNTALENTS);
- if (player->GetSpecsCount() == 1 && creature->isCanTrainingAndResetTalentsOf(player) && player->getLevel() >= sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))
+ if (player->GetSpecsCount() == 1 && player->getLevel() >= sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_HELLO_ROGUE3, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_LEARNDUALSPEC);
if (player->getClass() == CLASS_ROGUE && player->getLevel() >= 24 && !player->HasItemCount(17126) && !player->GetQuestRewardStatus(6681))