aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2013-06-03 18:19:18 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2013-06-03 18:19:18 +0200
commitefb4fb495971d6d4b9ee5666bef5e5dafbac6628 (patch)
tree48cd57614a5e2fd998ad577fa5b11f0238a6470c
parent6fed4f1f2fec3a1443af77ad381a44dda3b3d23b (diff)
parentf6c1a9a8c4c403996b5b40e565e807c807e47aaa (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/shared/Database/Implementation/CharacterDatabase.cpp
-rw-r--r--README12
-rw-r--r--sql/base/auth_database.sql22
-rw-r--r--sql/updates/auth/2013_05_26_00_auth_rbac.sql14
-rw-r--r--sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql5
-rw-r--r--sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql16
-rw-r--r--sql/updates/world/2013_06_02_01_world_conditions.sql78
-rw-r--r--sql/updates/world/2013_06_02_02_world_conditions.sql78
-rw-r--r--sql/updates/world/2013_06_02_03_world_conditions.sql42
-rw-r--r--sql/updates/world/2013_06_02_04_world_conditions.sql93
-rw-r--r--sql/updates/world/2013_06_02_05_world_conditions.sql49
-rw-r--r--sql/updates/world/2013_06_02_06_world_conditions.sql4
-rw-r--r--sql/updates/world/2013_06_02_07_world_conditions.sql80
-rw-r--r--sql/updates/world/2013_06_02_08_world_conditions.sql75
-rw-r--r--sql/updates/world/2013_06_02_09_world_conditions.sql99
-rw-r--r--sql/updates/world/2013_06_03_00_world_conditions.sql42
-rw-r--r--sql/updates/world/2013_06_03_00_world_trinity_string.sql9
-rw-r--r--src/server/game/Accounts/RBAC.h1
-rw-r--r--src/server/game/Miscellaneous/Language.h6
-rw-r--r--src/server/game/World/World.cpp2
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp112
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp48
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp6
22 files changed, 828 insertions, 65 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/base/auth_database.sql b/sql/base/auth_database.sql
index daa4e905970..eb47e39e274 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -110,6 +110,20 @@ LOCK TABLES `account_banned` WRITE;
UNLOCK TABLES;
--
+-- Dumping data for table `autobroadcast`
+--
+
+DROP TABLE IF EXISTS `autobroadcast`;
+
+CREATE TABLE `autobroadcast` (
+ `realmid` int(11) NOT NULL DEFAULT '-1',
+ `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
+ `weight` tinyint(3) unsigned DEFAULT '1',
+ `text` longtext NOT NULL,
+ PRIMARY KEY (`id`,`realmid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
-- Table structure for table `ip_banned`
--
@@ -292,7 +306,7 @@ CREATE TABLE `rbac_group_roles` (
LOCK TABLES `rbac_group_roles` WRITE;
/*!40000 ALTER TABLE `rbac_group_roles` DISABLE KEYS */;
-INSERT INTO `rbac_group_roles` VALUES (1,1),(2,2),(3,3),(4,4),(2,5),(1,6),(1,7),(2,8),(3,8),(4,8),(2,9),(3,9),(4,9),(2,10),(3,10),(4,10),(2,11),(3,11),(4,11),(2,12),(3,12),(4,12),(2,13),(3,13),(4,13),(2,14),(3,14),(4,14),(2,15),(3,15),(4,15),(2,16),(3,16),(4,16),(2,17),(3,17),(4,17),(4,18),(2,19),(3,19),(4,19),(2,20),(3,20),(4,20),(2,21),(3,21),(4,21),(2,22),(3,22),(4,22),(4,23),(2,24),(3,24),(4,24),(2,25),(3,25),(4,25),(2,26),(3,26),(4,26),(2,27),(3,27),(4,27),(2,28),(3,28),(4,28),(2,29),(3,29),(4,29),(2,30),(3,30),(4,30),(2,32),(3,32),(4,32),(2,33),(3,33),(4,33),(1,34),(2,35),(3,35),(4,35),(2,36),(3,36),(4,36),(2,37),(3,37),(4,37),(2,38),(3,38),(4,38);
+INSERT INTO `rbac_group_roles` VALUES (1,1),(2,2),(3,3),(4,4),(2,5),(1,6),(1,7),(2,8),(3,8),(4,8),(2,9),(3,9),(4,9),(2,10),(3,10),(4,10),(2,11),(3,11),(4,11),(2,12),(3,12),(4,12),(2,13),(3,13),(4,13),(2,14),(3,14),(4,14),(2,15),(3,15),(4,15),(2,16),(3,16),(4,16),(2,17),(3,17),(4,17),(4,18),(2,19),(3,19),(4,19),(2,20),(3,20),(4,20),(2,21),(3,21),(4,21),(2,22),(3,22),(4,22),(4,23),(2,24),(3,24),(4,24),(2,25),(3,25),(4,25),(2,26),(3,26),(4,26),(2,27),(3,27),(4,27),(2,28),(3,28),(4,28),(2,29),(3,29),(4,29),(2,30),(3,30),(4,30),(2,32),(3,32),(4,32),(2,33),(3,33),(4,33),(1,34),(2,35),(3,35),(4,35),(2,36),(3,36),(4,36),(2,37),(3,37),(4,37),(2,38),(3,38),(4,38),(3,39),(4,39);
/*!40000 ALTER TABLE `rbac_group_roles` ENABLE KEYS */;
UNLOCK TABLES;
@@ -340,7 +354,7 @@ CREATE TABLE `rbac_permissions` (
LOCK TABLES `rbac_permissions` WRITE;
/*!40000 ALTER TABLE `rbac_permissions` DISABLE KEYS */;
-INSERT INTO `rbac_permissions` VALUES (1,'Instant logout'),(2,'Skip Queue'),(3,'Join Normal Battleground'),(4,'Join Random Battleground'),(5,'Join Arenas'),(6,'Join Dungeon Finder'),(7,'Player Commands (Temporal till commands moved to rbac)'),(8,'Moderator Commands (Temporal till commands moved to rbac)'),(9,'GameMaster Commands (Temporal till commands moved to rbac)'),(10,'Administrator Commands (Temporal till commands moved to rbac)'),(11,'Log GM trades'),(13,'Skip Instance required bosses check'),(14,'Skip character creation team mask check'),(15,'Skip character creation class mask check'),(16,'Skip character creation race mask check'),(17,'Skip character creation reserved name check'),(18,'Skip character creation heroic min level check'),(19,'Skip needed requirements to use channel check'),(20,'Skip disable map check'),(21,'Skip reset talents when used more than allowed check'),(22,'Skip spam chat check'),(23,'Skip over-speed ping check'),(24,'Two side faction characters on the same account'),(25,'Allow say chat between factions'),(26,'Allow channel chat between factions'),(27,'Two side mail interaction'),(28,'See two side who list'),(29,'Add friends of other faction'),(30,'Save character without delay with .save command'),(31,'Use params with .unstuck command'),(32,'Can be assigned tickets with .assign ticket command'),(33,'Notify if a command was not found'),(34,'Check if should appear in list using .gm ingame command'),(35,'See all security levels with who command'),(36,'Filter whispers'),(37,'Use staff badge in chat'),(38,'Resurrect with full Health Points'),(39,'Restore saved gm setting states'),(40,'Allows to add a gm to friend list'),(41,'Use Config option START_GM_LEVEL to assign new character level'),(42,'Allows to use CMSG_WORLD_TELEPORT opcode'),(43,'Allows to use CMSG_WHOIS opcode'),(44,'Receive global GM messages/texts'),(45,'Join channels without announce'),(46,'Change channel settings without being channel moderator'),(47,'Enables lower security than target check');
+INSERT INTO `rbac_permissions` VALUES (1,'Instant logout'),(2,'Skip Queue'),(3,'Join Normal Battleground'),(4,'Join Random Battleground'),(5,'Join Arenas'),(6,'Join Dungeon Finder'),(7,'Player Commands (Temporal till commands moved to rbac)'),(8,'Moderator Commands (Temporal till commands moved to rbac)'),(9,'GameMaster Commands (Temporal till commands moved to rbac)'),(10,'Administrator Commands (Temporal till commands moved to rbac)'),(11,'Log GM trades'),(13,'Skip Instance required bosses check'),(14,'Skip character creation team mask check'),(15,'Skip character creation class mask check'),(16,'Skip character creation race mask check'),(17,'Skip character creation reserved name check'),(18,'Skip character creation heroic min level check'),(19,'Skip needed requirements to use channel check'),(20,'Skip disable map check'),(21,'Skip reset talents when used more than allowed check'),(22,'Skip spam chat check'),(23,'Skip over-speed ping check'),(24,'Two side faction characters on the same account'),(25,'Allow say chat between factions'),(26,'Allow channel chat between factions'),(27,'Two side mail interaction'),(28,'See two side who list'),(29,'Add friends of other faction'),(30,'Save character without delay with .save command'),(31,'Use params with .unstuck command'),(32,'Can be assigned tickets with .assign ticket command'),(33,'Notify if a command was not found'),(34,'Check if should appear in list using .gm ingame command'),(35,'See all security levels with who command'),(36,'Filter whispers'),(37,'Use staff badge in chat'),(38,'Resurrect with full Health Points'),(39,'Restore saved gm setting states'),(40,'Allows to add a gm to friend list'),(41,'Use Config option START_GM_LEVEL to assign new character level'),(42,'Allows to use CMSG_WORLD_TELEPORT opcode'),(43,'Allows to use CMSG_WHOIS opcode'),(44,'Receive global GM messages/texts'),(45,'Join channels without announce'),(46,'Change channel settings without being channel moderator'),(47,'Enables lower security than target check'),(48,'Enable IP, Last Login and EMail output in pinfo');
/*!40000 ALTER TABLE `rbac_permissions` ENABLE KEYS */;
UNLOCK TABLES;
@@ -367,7 +381,7 @@ CREATE TABLE `rbac_role_permissions` (
LOCK TABLES `rbac_role_permissions` WRITE;
/*!40000 ALTER TABLE `rbac_role_permissions` DISABLE KEYS */;
-INSERT INTO `rbac_role_permissions` VALUES (5,1),(5,2),(6,3),(6,4),(6,5),(7,6),(1,7),(2,8),(3,9),(4,10),(8,11),(9,13),(33,14),(33,15),(33,16),(33,17),(33,18),(27,19),(22,20),(23,21),(24,22),(17,23),(34,24),(28,25),(30,26),(19,27),(35,28),(36,29),(11,30),(12,31),(10,32),(20,33),(14,34),(37,35),(29,36),(15,37),(13,38),(25,39),(38,40),(26,41),(18,42),(18,43),(16,44),(31,45),(32,46),(21,47);
+INSERT INTO `rbac_role_permissions` VALUES (5,1),(5,2),(6,3),(6,4),(6,5),(7,6),(1,7),(2,8),(3,9),(4,10),(8,11),(9,13),(33,14),(33,15),(33,16),(33,17),(33,18),(27,19),(22,20),(23,21),(24,22),(17,23),(34,24),(28,25),(30,26),(19,27),(35,28),(36,29),(11,30),(12,31),(10,32),(20,33),(14,34),(37,35),(29,36),(15,37),(13,38),(25,39),(38,40),(26,41),(18,42),(18,43),(16,44),(31,45),(32,46),(21,47),(39,48);
/*!40000 ALTER TABLE `rbac_role_permissions` ENABLE KEYS */;
UNLOCK TABLES;
@@ -391,7 +405,7 @@ CREATE TABLE `rbac_roles` (
LOCK TABLES `rbac_roles` WRITE;
/*!40000 ALTER TABLE `rbac_roles` DISABLE KEYS */;
-INSERT INTO `rbac_roles` VALUES (1,'Player Commands'),(2,'Moderator Commands'),(3,'GameMaster Commands'),(4,'Administrator Commands'),(5,'Quick Login/Logout'),(6,'Use Battleground/Arenas'),(7,'Use Dungeon Finder'),(8,'Log GM trades'),(9,'Skip Instance required bosses check'),(10,'Ticket management'),(11,'Instant .save'),(12,'Allow params with .unstuck'),(13,'Full HP after resurrect'),(14,'Appear in GM ingame list'),(15,'Use staff badge in chat'),(16,'Receive global GM messages/texts'),(17,'Skip over-speed ping check'),(18,'Allows Admin Opcodes'),(19,'Two side mail interaction'),(20,'Notify if a command was not found'),(21,'Enables lower security than target check'),(22,'Skip disable map check'),(23,'Skip reset talents when used more than allowed check'),(24,'Skip spam chat check'),(25,'Restore saved gm setting states'),(26,'Use Config option START_GM_LEVEL to assign new character level'),(27,'Skip needed requirements to use channel check'),(28,'Allow say chat between factions'),(29,'Filter whispers'),(30,'Allow channel chat between factions'),(31,'Join channels without announce'),(32,'Change channel settings without being channel moderator'),(33,'Skip character creation checks'),(34,'Two side faction characters on the same account'),(35,'See two side who list'),(36,'Add friends of other faction'),(37,'See all security levels with who command'),(38,'Allows to add a gm to friend list');
+INSERT INTO `rbac_roles` VALUES (1,'Player Commands'),(2,'Moderator Commands'),(3,'GameMaster Commands'),(4,'Administrator Commands'),(5,'Quick Login/Logout'),(6,'Use Battleground/Arenas'),(7,'Use Dungeon Finder'),(8,'Log GM trades'),(9,'Skip Instance required bosses check'),(10,'Ticket management'),(11,'Instant .save'),(12,'Allow params with .unstuck'),(13,'Full HP after resurrect'),(14,'Appear in GM ingame list'),(15,'Use staff badge in chat'),(16,'Receive global GM messages/texts'),(17,'Skip over-speed ping check'),(18,'Allows Admin Opcodes'),(19,'Two side mail interaction'),(20,'Notify if a command was not found'),(21,'Enables lower security than target check'),(22,'Skip disable map check'),(23,'Skip reset talents when used more than allowed check'),(24,'Skip spam chat check'),(25,'Restore saved gm setting states'),(26,'Use Config option START_GM_LEVEL to assign new character level'),(27,'Skip needed requirements to use channel check'),(28,'Allow say chat between factions'),(29,'Filter whispers'),(30,'Allow channel chat between factions'),(31,'Join channels without announce'),(32,'Change channel settings without being channel moderator'),(33,'Skip character creation checks'),(34,'Two side faction characters on the same account'),(35,'See two side who list'),(36,'Add friends of other faction'),(37,'See all security levels with who command'),(38,'Allows to add a gm to friend list'),(39,'Enable IP, Last Login and EMail output in pinfo');
/*!40000 ALTER TABLE `rbac_roles` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/2013_05_26_00_auth_rbac.sql b/sql/updates/auth/2013_05_26_00_auth_rbac.sql
new file mode 100644
index 00000000000..aa05c842932
--- /dev/null
+++ b/sql/updates/auth/2013_05_26_00_auth_rbac.sql
@@ -0,0 +1,14 @@
+DELETE FROM `rbac_permissions` WHERE `id` = 48;
+INSERT INTO `rbac_permissions` (`id`, `name`) VALUES (48, 'Enable IP, Last Login and EMail output in pinfo');
+
+DELETE FROM `rbac_roles` WHERE `id` = 39;
+INSERT INTO `rbac_roles` (`id`, `name`) VALUES (39, 'Enable IP, Last Login and EMail output in pinfo');
+
+DELETE FROM `rbac_role_permissions` WHERE `roleId` = 39 AND `permissionId` = 48;
+INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES (39, 48);
+
+DELETE FROM `rbac_group_roles` WHERE `groupId` = 3 AND `roleId` = 39;
+INSERT INTO `rbac_group_roles` (`groupId`, `roleId`) VALUES (3, 39);
+
+DELETE FROM `rbac_group_roles` WHERE `groupId` = 4 AND `roleId` = 39;
+INSERT INTO `rbac_group_roles` (`groupId`, `roleId`) VALUES (4, 39);
diff --git a/sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql b/sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql
new file mode 100644
index 00000000000..2e689ffd64d
--- /dev/null
+++ b/sql/updates/auth/2013_06_02_00_auth_autobroadcast.sql
@@ -0,0 +1,5 @@
+ALTER TABLE `autobroadcast`
+ CHANGE `realmid` `realmid` INT(11) NOT NULL DEFAULT '-1',
+ CHANGE `id` `id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
+ CHANGE `weight` `weight` TINYINT(3) UNSIGNED DEFAULT '1',
+ ENGINE=INNODB;
diff --git a/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql
new file mode 100644
index 00000000000..053ade0486d
--- /dev/null
+++ b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql
@@ -0,0 +1,16 @@
+DELETE FROM `disables` WHERE `sourceType`=4 AND `entry` IN (10082,10083,10084,10085,10086,10087);
+
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10082,10083,10084,10085,10086,10087);
+INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES
+(10082, 11, 0, 0, 'achievement_assembly_i_choose_you'),
+(10082, 12, 0, 0, ''),
+(10083, 11, 0, 0, 'achievement_assembly_i_choose_you'),
+(10083, 12, 0, 0, ''),
+(10084, 11, 0, 0, 'achievement_assembly_i_choose_you'),
+(10084, 12, 0, 0, ''),
+(10085, 11, 0, 0, 'achievement_assembly_i_choose_you'),
+(10085, 12, 1, 0, ''),
+(10086, 11, 0, 0, 'achievement_assembly_i_choose_you'),
+(10086, 12, 1, 0, ''),
+(10087, 11, 0, 0, 'achievement_assembly_i_choose_you'),
+(10087, 12, 1, 0, '');
diff --git a/sql/updates/world/2013_06_02_01_world_conditions.sql b/sql/updates/world/2013_06_02_01_world_conditions.sql
new file mode 100644
index 00000000000..4f3993bd1e0
--- /dev/null
+++ b/sql/updates/world/2013_06_02_01_world_conditions.sql
@@ -0,0 +1,78 @@
+-- Add option conditions for mage trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (63,64,4484,4485,4486,4517,4518,4519,4520,4537,4538,4539,4552,4651,4654,4660,4661,4685,4686,6648,7264,9990,9580,7366,4535);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,63,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,63,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,63,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,64,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,64,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,64,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4484,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4484,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4484,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4485,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4485,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4485,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4486,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4486,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4486,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4517,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4517,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4517,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4518,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4518,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4518,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4519,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4519,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4519,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4520,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4520,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4520,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4537,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4537,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4537,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4538,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4538,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4538,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4539,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4539,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4539,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4552,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4552,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4552,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4651,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4651,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4651,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4654,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4654,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4654,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4660,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4660,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4660,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4661,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4661,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4661,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4685,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4685,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4685,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4686,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4686,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4686,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,6648,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,6648,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,6648,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,7264,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,7264,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,7264,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,9990,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,9990,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,9990,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,9580,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,9580,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,9580,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,7366,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,7366,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,7366,2,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4535,0,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4535,1,0,15,128,0,0,0,'','Show gossip option if player is a mage'),
+(15,4535,2,0,15,128,0,0,0,'','Show gossip option if player is a mage');
diff --git a/sql/updates/world/2013_06_02_02_world_conditions.sql b/sql/updates/world/2013_06_02_02_world_conditions.sql
new file mode 100644
index 00000000000..9d1b80e7a3f
--- /dev/null
+++ b/sql/updates/world/2013_06_02_02_world_conditions.sql
@@ -0,0 +1,78 @@
+-- Add option conditions for Warlock trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (1503,1522,2381,2383,2384,4503,4504,4505,4566,4567,4603,4604,4609,4610,4641,4643,4655,4656,4667,4681,4682,6628,7437,7566,4642);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,1503,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,1503,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,1503,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,1522,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,1522,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,1522,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2381,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2381,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2381,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2383,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2383,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2383,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2384,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2384,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,2384,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4503,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4503,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4503,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4504,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4504,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4504,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4505,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4505,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4505,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4566,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4566,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4566,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4567,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4567,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4567,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4603,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4603,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4603,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4604,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4604,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4604,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4609,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4609,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4609,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4610,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4610,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4610,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4641,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4641,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4641,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4643,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4643,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4643,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4655,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4655,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4655,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4656,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4656,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4656,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4667,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4667,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4667,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4681,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4681,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4681,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4682,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4682,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4682,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,6628,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,6628,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,6628,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,7437,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,7437,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,7437,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,7566,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,7566,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,7566,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4642,0,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4642,1,0,15,256,0,0,0,'','Show gossip option if player is a Warlock'),
+(15,4642,2,0,15,256,0,0,0,'','Show gossip option if player is a Warlock');
diff --git a/sql/updates/world/2013_06_02_03_world_conditions.sql b/sql/updates/world/2013_06_02_03_world_conditions.sql
new file mode 100644
index 00000000000..c2d730ffc6d
--- /dev/null
+++ b/sql/updates/world/2013_06_02_03_world_conditions.sql
@@ -0,0 +1,42 @@
+-- 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);
+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'),
+(15,2304,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4556,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4556,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4556,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4557,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4557,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4557,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4469,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4469,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4469,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4470,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4470,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4470,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4471,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4471,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4471,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(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,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'),
+(15,4678,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4678,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,4678,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,7260,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,7260,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,7260,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,8111,0,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,8111,1,0,15,2,0,0,0,'','Show gossip option if player is a Paladin'),
+(15,8111,2,0,15,2,0,0,0,'','Show gossip option if player is a Paladin');
diff --git a/sql/updates/world/2013_06_02_04_world_conditions.sql b/sql/updates/world/2013_06_02_04_world_conditions.sql
new file mode 100644
index 00000000000..82ee44df19d
--- /dev/null
+++ b/sql/updates/world/2013_06_02_04_world_conditions.sql
@@ -0,0 +1,93 @@
+-- Add option conditions for Warrior trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (523,655,656,4091,4475,4481,4482,4509,4511,4525,4526,4527,4546,4547,4548,4568,4569,4570,4578,4579,4581,4645,4649,4650,4653,4683,4684,4696,4697,7263);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,523,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,523,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,523,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,655,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,655,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,655,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,656,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,656,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,656,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4091,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4091,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4091,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4475,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4475,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4475,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4481,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4481,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4481,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4482,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4482,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4482,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4509,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4509,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4509,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4511,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4511,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4511,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4525,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4525,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4525,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4526,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4526,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4526,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4527,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4527,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4527,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4546,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4546,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4546,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4547,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4547,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4547,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4548,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4548,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4548,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4568,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4568,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4568,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4569,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4569,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4569,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4570,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4570,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4570,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4578,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4578,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4578,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4579,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4579,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4579,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4581,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4581,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4581,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4645,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4645,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4645,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4649,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4649,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4649,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4650,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4650,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4650,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4653,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4653,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4653,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4683,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4683,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4683,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4684,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4684,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4684,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4696,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4696,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4696,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4697,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4697,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,4697,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,7263,0,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,7263,1,0,15,1,0,0,0,'','Show gossip option if player is a Warrior'),
+(15,7263,2,0,15,1,0,0,0,'','Show gossip option if player is a Warrior');
diff --git a/sql/updates/world/2013_06_02_05_world_conditions.sql b/sql/updates/world/2013_06_02_05_world_conditions.sql
new file mode 100644
index 00000000000..fdee846a275
--- /dev/null
+++ b/sql/updates/world/2013_06_02_05_world_conditions.sql
@@ -0,0 +1,49 @@
+-- Add option conditions for Druid trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (1403,3921,3924,3925,3926,4507,4508,4571,4605,4606,4607,4687,4688,7567,4646);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,1403,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,1403,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,1403,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,1403,3,0,8,0,3781,0,0,'','Mathrengyl Bearwalker - Show gossip option if player has rewarded quest 3781'),
+(15,3921,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3921,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3921,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3924,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3924,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3924,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3925,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3925,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3925,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3926,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3926,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,3926,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4507,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4507,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4507,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4508,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4508,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4508,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4571,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4571,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4571,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4605,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4605,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4605,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4606,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4606,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4606,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4607,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4607,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4607,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4687,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4687,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4687,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4688,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4688,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4688,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,7567,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,7567,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,7567,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4646,0,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4646,1,0,15,1024,0,0,0,'','Show gossip option if player is a Druid'),
+(15,4646,2,0,15,1024,0,0,0,'','Show gossip option if player is a Druid');
diff --git a/sql/updates/world/2013_06_02_06_world_conditions.sql b/sql/updates/world/2013_06_02_06_world_conditions.sql
new file mode 100644
index 00000000000..b2605b97d26
--- /dev/null
+++ b/sql/updates/world/2013_06_02_06_world_conditions.sql
@@ -0,0 +1,4 @@
+-- Add option conditions for Druid trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (1403) AND `SourceEntry` IN (3);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,1403,3,0,8,0,3781,0,0,'','Mathrengyl Bearwalker - Show gossip option if player has rewarded quest 3781');
diff --git a/sql/updates/world/2013_06_02_07_world_conditions.sql b/sql/updates/world/2013_06_02_07_world_conditions.sql
new file mode 100644
index 00000000000..696c69ca62e
--- /dev/null
+++ b/sql/updates/world/2013_06_02_07_world_conditions.sql
@@ -0,0 +1,80 @@
+-- Add option conditions for Hunter trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (4008,4009,4010,4011,4012,4017,4023,4101,4472,4473,4474,4506,4524,4549,4550,4551,4647,4648,4657,4675,4693,4695,6652,7262,7368);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,4008,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4008,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4008,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4009,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4009,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4009,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4010,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4010,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4010,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4011,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4011,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4011,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4012,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4012,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4012,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4017,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4017,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4017,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4023,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4023,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4023,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4101,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4101,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4101,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4472,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4472,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4472,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4473,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4473,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4473,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4474,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4474,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4474,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4506,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4506,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4506,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4524,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4524,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4524,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4549,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4549,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4549,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4550,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4550,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4550,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4551,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4551,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4551,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4647,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4647,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4647,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4648,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4648,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4648,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4657,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4657,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4657,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4675,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4675,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4675,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4693,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4693,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4693,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4695,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4695,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,4695,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,6652,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,6652,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,6652,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,7262,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,7262,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,7262,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,7368,0,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,7368,1,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,7368,2,0,15,4,0,0,0,'','Show gossip option if player is a Hunter'),
+(15,7368,3,0,9,0,9454,0,0,'','Acteon - Show gossip option if player has quest 9454'),
+(15,7368,4,0,9,0,10324,0,0,'','Acteon - Show gossip option if player has quest 10324');
diff --git a/sql/updates/world/2013_06_02_08_world_conditions.sql b/sql/updates/world/2013_06_02_08_world_conditions.sql
new file mode 100644
index 00000000000..2fe812c1934
--- /dev/null
+++ b/sql/updates/world/2013_06_02_08_world_conditions.sql
@@ -0,0 +1,75 @@
+-- Add option conditions for Rogue trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) 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`,`ScriptName`,`Comment`) VALUES
+(15,85,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,85,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,85,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,141,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,141,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,141,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,381,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,381,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,381,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,410,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,410,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,410,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,411,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,411,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,411,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,436,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,436,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,436,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,3984,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,3984,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,3984,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4502,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4502,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4502,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4512,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4512,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4512,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4513,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4513,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4513,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4540,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4540,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4540,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4541,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4541,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4541,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4542,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4542,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4542,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4561,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4561,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4561,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4562,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4562,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4562,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4575,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4575,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4575,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4576,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4576,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4576,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4577,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4577,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4577,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4658,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4658,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4658,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4659,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4659,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4659,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4676,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4676,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4676,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4690,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4690,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,4690,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,5061,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,5061,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,5061,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,6650,0,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,6650,1,0,15,8,0,0,0,'','Show gossip option if player is a Rogue'),
+(15,6650,2,0,15,8,0,0,0,'','Show gossip option if player is a Rogue');
diff --git a/sql/updates/world/2013_06_02_09_world_conditions.sql b/sql/updates/world/2013_06_02_09_world_conditions.sql
new file mode 100644
index 00000000000..647e608df87
--- /dev/null
+++ b/sql/updates/world/2013_06_02_09_world_conditions.sql
@@ -0,0 +1,99 @@
+-- Add option conditions for Priest trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (3642,3643,3644,3645,4466,4467,4468,4521,4522,4523,4531,4532,4533,4543,4544,4545,4558,4559,4572,4573,4574,4665,4666,4679,4680,4691,4692,4801,6649,7265,7349,7438);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,3642,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3642,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3642,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3643,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3643,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3643,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3644,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3644,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3644,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3645,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3645,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,3645,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4466,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4466,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4466,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4467,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4467,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4467,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4468,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4468,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4468,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4521,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4521,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4521,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4522,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4522,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4522,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4523,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4523,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4523,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4531,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4531,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4531,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4532,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4532,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4532,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4533,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4533,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4533,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4543,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4543,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4543,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4544,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4544,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4544,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4545,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4545,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4545,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4558,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4558,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4558,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4559,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4559,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4559,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4572,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4572,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4572,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4573,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4573,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4573,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4574,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4574,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4574,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4665,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4665,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4665,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4666,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4666,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4666,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4679,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4679,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4679,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4680,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4680,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4680,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4691,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4691,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4691,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4692,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4692,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4692,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4801,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4801,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,4801,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,6649,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,6649,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,6649,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7265,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7265,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7265,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7349,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7349,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7349,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7438,0,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7438,1,0,15,16,0,0,0,'','Show gossip option if player is a Priest'),
+(15,7438,2,0,15,16,0,0,0,'','Show gossip option if player is a Priest');
diff --git a/sql/updates/world/2013_06_03_00_world_conditions.sql b/sql/updates/world/2013_06_03_00_world_conditions.sql
new file mode 100644
index 00000000000..518479930f2
--- /dev/null
+++ b/sql/updates/world/2013_06_03_00_world_conditions.sql
@@ -0,0 +1,42 @@
+-- Add option conditions for Shaman trainers
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (4103,4104,4515,4516,4528,4529,4530,4652,5123,7357,7467,7522,8110,7377);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,4103,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4103,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4103,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4104,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4104,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4104,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4515,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4515,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4515,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4516,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4516,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4516,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4528,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4528,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4528,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4529,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4529,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4529,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4530,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4530,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4530,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4652,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4652,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,4652,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,5123,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,5123,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,5123,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7357,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7357,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7357,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7467,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7467,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7467,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,8110,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,8110,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,8110,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7377,0,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7377,1,0,15,64,0,0,0,'','Show gossip option if player is a Shaman'),
+(15,7377,2,0,15,64,0,0,0,'','Show gossip option if player is a Shaman');
diff --git a/sql/updates/world/2013_06_03_00_world_trinity_string.sql b/sql/updates/world/2013_06_03_00_world_trinity_string.sql
new file mode 100644
index 00000000000..80ad953b3b7
--- /dev/null
+++ b/sql/updates/world/2013_06_03_00_world_trinity_string.sql
@@ -0,0 +1,9 @@
+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);
+
+DELETE FROM `trinity_string` WHERE `entry`=871 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
+(871, '│ Level: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+UPDATE `trinity_string` SET `content_default`='│ Level: %u (%u/%u XP (%u XP left))' WHERE `entry`=843 LIMIT 1;
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index 5a6514e5356..35024fc4152 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -95,6 +95,7 @@ enum RBACPermissions
RBAC_PERM_SILENTLY_JOIN_CHANNEL = 45,
RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR = 46,
RBAC_PERM_CHECK_FOR_LOWER_SECURITY = 47,
+ RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA = 48,
RBAC_PERM_MAX
};
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
index f3323682e1b..0c056d225c7 100644
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -820,7 +820,7 @@ enum TrinityStrings
LANG_PINFO_ACC_LASTLOGIN = 716,
LANG_PINFO_ACC_OS = 749,
LANG_PINFO_ACC_IP = 752,
- LANG_PINFO_CHR_LEVEL = 843,
+ LANG_PINFO_CHR_LEVEL_LOW = 843,
LANG_PINFO_CHR_RACE = 844,
LANG_PINFO_CHR_ALIVE = 845,
LANG_PINFO_CHR_PHASE = 846,
@@ -832,6 +832,7 @@ enum TrinityStrings
LANG_PINFO_CHR_GUILD_ONOTE = 852,
LANG_PINFO_CHR_PLAYEDTIME = 853,
LANG_PINFO_CHR_MAILS = 854,
+ LANG_PINFO_CHR_LEVEL_HIGH = 871,
LANG_CHARACTER_GENDER_MALE = 855,
LANG_CHARACTER_GENDER_FEMALE = 856,
@@ -850,7 +851,8 @@ enum TrinityStrings
LANG_ARENA_INFO_HEADER = 868,
LANG_ARENA_INFO_MEMBERS = 869,
LANG_ARENA_LOOKUP = 870,
- // Room for in-game strings 870-999 not used
+ // = 871, see LANG_PINFO_CHR_LEVEL_HIGH
+ // Room for in-game strings 872-999 not used
// Level 4 (CLI only commands)
LANG_COMMAND_EXIT = 1000,
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index b61c5ac5de3..700039983d3 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2711,7 +2711,6 @@ void World::SendAutoBroadcast()
if (abcenter == 0)
sWorld->SendWorldText(LANG_AUTO_BROADCAST, msg.c_str());
-
else if (abcenter == 1)
{
WorldPacket data(SMSG_NOTIFICATION, 2 + msg.length());
@@ -2720,7 +2719,6 @@ void World::SendAutoBroadcast()
data.WriteString(msg);
sWorld->SendGlobalMessage(&data);
}
-
else if (abcenter == 2)
{
sWorld->SendWorldText(LANG_AUTO_BROADCAST, msg.c_str());
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 10b54d7ad39..0108bbc1487 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -1586,7 +1586,12 @@ public:
std::string areaName = "<unknown>";
std::string zoneName = "<unknown>";
- // Guild data print is only defined if part of Guild
+ // Guild data print variables defined so that they exist, but are not necessarily used
+ uint32 guildId = 0;
+ std::string guildName;
+ std::string guildRank;
+ std::string note;
+ std::string officeNote;
// Mail data print is only defined if you have a mail
@@ -1625,18 +1630,19 @@ public:
if (!result)
return false;
- Field* fields = result->Fetch();
- totalPlayerTime = fields[0].GetUInt32();
- level = fields[1].GetUInt8();
- money = fields[2].GetUInt32();
- accId = fields[3].GetUInt32();
- raceid = fields[4].GetUInt8();
- classid = fields[5].GetUInt8();
- mapId = fields[6].GetUInt16();
- areaId = fields[7].GetUInt16();
- gender = fields[8].GetUInt8();
- uint32 health = fields[9].GetUInt32();
+ Field* fields = result->Fetch();
+ totalPlayerTime = fields[0].GetUInt32();
+ level = fields[1].GetUInt8();
+ money = fields[2].GetUInt32();
+ accId = fields[3].GetUInt32();
+ raceid = fields[4].GetUInt8();
+ classid = fields[5].GetUInt8();
+ mapId = fields[6].GetUInt16();
+ areaId = fields[7].GetUInt16();
+ gender = fields[8].GetUInt8();
+ uint32 health = fields[9].GetUInt32();
uint32 playerFlags = fields[10].GetUInt32();
+
if (!health || playerFlags & PLAYER_FLAGS_GHOST)
alive = "No";
else
@@ -1654,13 +1660,13 @@ public:
Field* fields = result->Fetch();
userName = fields[0].GetString();
security = fields[1].GetUInt8();
- eMail = fields[2].GetString();
- // Only fetch these fields if commander has sufficient rights AND is online (prevent cheating)
- /// @TODO: Add RBAC for "Can query ip and login data"
- if (!handler->GetSession() || handler->GetSession()->GetSecurity() >= AccountTypes(security))
+ // 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() >= AccountTypes(security)))
{
- lastIp = fields[3].GetString();
+ eMail = fields[2].GetString();
+ lastIp = fields[3].GetString();
lastLogin = fields[4].GetString();
uint32 ip = inet_addr(lastIp.c_str());
@@ -1677,6 +1683,12 @@ public:
lastIp.append(")");
}
}
+ else
+ {
+ eMail = "Unauthorized";
+ lastIp = "Unauthorized";
+ lastLogin = "Unauthorized";
+ }
muteTime = fields[5].GetUInt64();
muteReason = fields[6].GetString();
muteBy = fields[7].GetString();
@@ -1727,7 +1739,25 @@ public:
if (result4)
{
Field* fields = result4->Fetch();
- xp = fields[0].GetUInt32();
+ xp = fields[0].GetUInt32(); // Used for "current xp" output and "%u XP Left" calculation
+ uint32 gguid = fields[1].GetUInt32(); // We check if have a guild for the person, so we might not require to query it at all
+
+ if (gguid != 0)
+ {
+ // Guild Data - an own query, because it may not happen.
+ PreparedStatement* stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED);
+ stmt3->setUInt32(0, lowguid);
+ PreparedQueryResult result5 = CharacterDatabase.Query(stmt3);
+ if (result5)
+ {
+ Field* fields = result5->Fetch();
+ guildId = fields[0].GetUInt32();
+ guildName = fields[1].GetString();
+ guildRank = fields[2].GetString();
+ note = fields[3].GetString();
+ officeNote = fields[4].GetString();
+ }
+ }
}
// Initiate output
@@ -1759,7 +1789,10 @@ public:
handler->PSendSysMessage(LANG_PINFO_ACC_IP, lastIp.c_str(), locked ? "Yes" : "No");
// Output X. LANG_PINFO_CHR_LEVEL
- handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL, level, xp, xptotal, (xptotal - xp));
+ if (level != sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
+ handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL_LOW, level, xp, xptotal, (xptotal - xp));
+ else
+ handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL_HIGH, level);
// Output XI. LANG_PINFO_CHR_RACE
raceStr = GetRaceName(raceid, locale);
@@ -1794,27 +1827,15 @@ public:
if (target)
handler->PSendSysMessage(LANG_PINFO_CHR_MAP, map->name[locale], (!zoneName.empty() ? zoneName.c_str() : "<Unknown>"), (!areaName.empty() ? areaName.c_str() : "<Unknown>"));
- // Guild Data - an own query, because it may not happen.
- PreparedStatement* stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED);
- stmt3->setUInt32(0, lowguid);
- PreparedQueryResult result5 = CharacterDatabase.Query(stmt3);
- if (result5)
- {
- Field* fields = result5->Fetch();
- uint32 guildId = fields[0].GetUInt32();
- std::string guildName = fields[1].GetString();
- std::string guildRank = fields[2].GetString();
- std::string note = fields[3].GetString();
- std::string officeNote = fields[4].GetString();
-
- // Output XVII. - XX.
- handler->PSendSysMessage(LANG_PINFO_CHR_GUILD, guildName.c_str(), guildId);
- handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank.c_str());
- // Only output XIX and XX if they are not empty
- if (!note.empty())
- handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_NOTE, note.c_str());
- if (!officeNote.empty())
- handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_ONOTE, officeNote.c_str());
+ // Output XVII. - XX. if they are not empty
+ if (!guildName.empty())
+ {
+ handler->PSendSysMessage(LANG_PINFO_CHR_GUILD, guildName.c_str(), guildId);
+ handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank.c_str());
+ if (!note.empty())
+ handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_NOTE, note.c_str());
+ if (!officeNote.empty())
+ handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_ONOTE, officeNote.c_str());
}
// Output XXI. LANG_PINFO_CHR_PLAYEDTIME
@@ -1822,23 +1843,24 @@ public:
// Mail Data - an own query, because it may or may not be useful.
// SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?"
- stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
- stmt3->setUInt32(0, lowguid);
- PreparedQueryResult result6 = CharacterDatabase.Query(stmt3);
+ PreparedStatement* stmt4 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
+ stmt4->setUInt32(0, lowguid);
+ PreparedQueryResult result6 = CharacterDatabase.Query(stmt4);
if (result6)
{
// Define the variables, so the compiler knows they exist
uint32 rmailint = 0;
// Fetch the fields - readmail is a SUM(x) and given out as char! Thus...
+ // ... while totalmail is a COUNT(x), which is given out as INt64, which we just convert on fetch...
Field* fields = result6->Fetch();
std::string readmail = fields[0].GetString();
- uint64 totalmail = fields[1].GetUInt64();
+ uint32 totalmail = uint32(fields[1].GetUInt64());
// ... we have to convert it from Char to int. We can use totalmail as it is
rmailint = atol(readmail.c_str());
- // Output XXII. LANG_INFO_CHR_MAILS if at least one mails is given
+ // Output XXII. LANG_INFO_CHR_MAILS if at least one mail is given
if (totalmail >= 1)
handler->PSendSysMessage(LANG_PINFO_CHR_MAILS, rmailint, totalmail);
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
index 6ad70d38635..b3f5cc38c9f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
@@ -122,9 +122,11 @@ enum AssemblyYells
EMOTE_BRUNDIR_OVERLOAD = 7
};
-enum AssemblyNPCs
+enum Misc
{
- NPC_WORLD_TRIGGER = 22515
+ NPC_WORLD_TRIGGER = 22515,
+
+ DATA_PHASE_3 = 1
};
#define FLOOR_Z 427.28f
@@ -158,6 +160,14 @@ class boss_steelbreaker : public CreatureScript
events.ScheduleEvent(EVENT_FUSION_PUNCH, 15000);
}
+ uint32 GetData(uint32 type) const
+ {
+ if (type == DATA_PHASE_3)
+ return (phase >= 3) ? 1 : 0;
+
+ return 0;
+ }
+
void DoAction(int32 action)
{
switch (action)
@@ -184,7 +194,7 @@ class boss_steelbreaker : public CreatureScript
if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE)
{
- DoCastAOE(SPELL_KILL_CREDIT);
+ DoCastAOE(SPELL_KILL_CREDIT, true);
Talk(SAY_STEELBREAKER_ENCOUNTER_DEFEATED);
}
else
@@ -287,6 +297,14 @@ class boss_runemaster_molgeim : public CreatureScript
events.ScheduleEvent(EVENT_RUNE_OF_POWER, 20000);
}
+ uint32 GetData(uint32 type) const
+ {
+ if (type == DATA_PHASE_3)
+ return (phase >= 3) ? 1 : 0;
+
+ return 0;
+ }
+
void DoAction(int32 action)
{
switch (action)
@@ -313,7 +331,7 @@ class boss_runemaster_molgeim : public CreatureScript
if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE)
{
- DoCastAOE(SPELL_KILL_CREDIT);
+ DoCastAOE(SPELL_KILL_CREDIT, true);
Talk(SAY_MOLGEIM_ENCOUNTER_DEFEATED);
}
else
@@ -429,6 +447,14 @@ class boss_stormcaller_brundir : public CreatureScript
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default
}
+ uint32 GetData(uint32 type) const
+ {
+ if (type == DATA_PHASE_3)
+ return (phase >= 3) ? 1 : 0;
+
+ return 0;
+ }
+
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
@@ -470,7 +496,7 @@ class boss_stormcaller_brundir : public CreatureScript
if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE)
{
- DoCastAOE(SPELL_KILL_CREDIT);
+ DoCastAOE(SPELL_KILL_CREDIT, true);
Talk(SAY_BRUNDIR_ENCOUNTER_DEFEATED);
}
else
@@ -697,6 +723,17 @@ class spell_assembly_rune_of_summoning : public SpellScriptLoader
}
};
+class achievement_assembly_i_choose_you : public AchievementCriteriaScript
+{
+ public:
+ achievement_assembly_i_choose_you() : AchievementCriteriaScript("achievement_assembly_i_choose_you") { }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ return target && target->GetAI()->GetData(DATA_PHASE_3);
+ }
+};
+
void AddSC_boss_assembly_of_iron()
{
new boss_steelbreaker();
@@ -705,4 +742,5 @@ void AddSC_boss_assembly_of_iron()
new spell_shield_of_runes();
new spell_assembly_meltdown();
new spell_assembly_rune_of_summoning();
+ new achievement_assembly_i_choose_you();
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 4fb9c763f16..cc1a7f3fe32 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -45,12 +45,12 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_SEL_ENUM, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, "
"gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, cb.guid, c.slot "
"FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? LEFT JOIN guild_member AS gm ON c.guid = gm.guid "
- "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ?", CONNECTION_ASYNC);
+ "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name IS NULL", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_ENUM_DECLINED_NAME, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, "
"c.position_x, c.position_y, c.position_z, gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, "
"cb.guid, c.slot, cd.genitive FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? "
"LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid LEFT JOIN guild_member AS gm ON c.guid = gm.guid "
- "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ?", CONNECTION_ASYNC);
+ "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? AND c.deleteInfos_Name IS NULL", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_FREE_NAME, "SELECT guid, name FROM characters WHERE guid = ? AND account = ? AND (at_login & ?) = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_GUID_RACE_ACC_BY_NAME, "SELECT guid, race, account FROM characters WHERE name = ?", CONNECTION_BOTH);
PrepareStatement(CHAR_SEL_CHAR_RACE, "SELECT race FROM characters WHERE guid = ?", CONNECTION_SYNCH);
@@ -445,7 +445,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
//0: lowGUID
PrepareStatement(CHAR_SEL_PINFO_MAILS, "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?", CONNECTION_SYNCH);
//0: lowGUID
- PrepareStatement(CHAR_SEL_PINFO_XP, "SELECT xp FROM characters WHERE guid = ?", CONNECTION_SYNCH);
+ PrepareStatement(CHAR_SEL_PINFO_XP, "SELECT a.xp, b.guid FROM characters a LEFT JOIN guild_member b ON a.guid = b.guid WHERE a.guid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name FROM characters WHERE account = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_SEL_POOL_QUEST_SAVE, "SELECT quest_id FROM pool_quest_save WHERE pool_id = ?", CONNECTION_SYNCH);