summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--data/sql/updates/db_auth/2017_08_19_00.sql27
-rw-r--r--data/sql/updates/db_characters/2016_11_18_00.sql4
-rw-r--r--data/sql/updates/db_characters/2016_11_19_00.sql2
-rw-r--r--data/sql/updates/db_world/2017_05_01_00.sql2
-rw-r--r--data/sql/updates/db_world/2017_05_28_00.sql332
-rw-r--r--data/sql/updates/db_world/2017_06_12_00.sql32
-rw-r--r--data/sql/updates/db_world/2017_06_14_00.sql37
-rw-r--r--data/sql/updates/db_world/2017_06_23_00.sql33
-rw-r--r--data/sql/updates/db_world/2017_06_27_00.sql34
-rw-r--r--data/sql/updates/db_world/2017_06_29_00.sql31
-rw-r--r--data/sql/updates/db_world/2017_08_18_00.sql27
-rw-r--r--data/sql/updates/db_world/2017_08_18_01.sql34
-rw-r--r--data/sql/updates/db_world/2017_08_18_02.sql30
-rw-r--r--data/sql/updates/db_world/2017_08_18_03.sql135
-rw-r--r--data/sql/updates/db_world/2017_08_19_00.sql37
-rw-r--r--data/sql/updates/db_world/2017_08_19_01.sql29
-rw-r--r--data/sql/updates/db_world/2017_08_19_02.sql214
-rw-r--r--data/sql/updates/pending_db_world/rev_1493320243875599900.sql15
-rw-r--r--data/sql/updates/pending_db_world/rev_1493320702119541800.sql15
-rw-r--r--data/sql/updates/pending_db_world/rev_1493321166929502700.sql24
-rw-r--r--data/sql/updates/pending_db_world/rev_1493321428049355400.sql98
-rw-r--r--data/sql/updates/pending_db_world/rev_1493321989278173500.sql229
-rw-r--r--data/sql/updates/pending_db_world/rev_1493343523138941000.sql6
-rw-r--r--data/sql/updates/pending_db_world/rev_1493344470069156600.sql2
-rw-r--r--data/sql/updates/pending_db_world/rev_1493344929793898700.sql2
-rw-r--r--data/sql/updates/pending_db_world/rev_1493346808800720600.sql45
-rw-r--r--data/sql/updates/pending_db_world/rev_1493347575872142000.sql7
-rw-r--r--data/sql/updates/pending_db_world/rev_1493349239278044600.sql24
-rw-r--r--modules/acore/startup-scripts/conf.sh.dist28
-rw-r--r--modules/acore/startup-scripts/examples/restarter-auth.sh2
-rw-r--r--modules/acore/startup-scripts/examples/restarter-world.sh2
-rw-r--r--modules/acore/startup-scripts/examples/starter-auth.sh2
-rw-r--r--modules/acore/startup-scripts/examples/starter-world.sh2
-rw-r--r--modules/acore/startup-scripts/run-engine11
-rwxr-xr-xmodules/acore/startup-scripts/starter6
-rw-r--r--src/authserver/Thumbs.dbbin17408 -> 0 bytes
-rw-r--r--src/game/AI/CoreAI/PetAI.cpp4
-rw-r--r--src/game/DungeonFinding/LFGMgr.cpp8
-rw-r--r--src/game/Entities/Pet/Pet.cpp19
-rw-r--r--src/game/Entities/Player/Player.cpp32
-rw-r--r--src/game/Entities/Unit/Unit.cpp40
-rw-r--r--src/game/Globals/ObjectMgr.cpp7
-rw-r--r--src/game/Globals/ObjectMgr.h6
-rw-r--r--src/game/Handlers/CharacterHandler.cpp5
-rw-r--r--src/game/Maps/Map.cpp2
-rw-r--r--src/game/Movement/Spline/MovementTypedefs.h6
-rw-r--r--src/game/Scripting/ScriptMgr.cpp20
-rw-r--r--src/game/Scripting/ScriptMgr.h11
-rw-r--r--src/game/Spells/Spell.cpp5
-rw-r--r--src/game/Spells/SpellInfo.cpp12
-rw-r--r--src/scripts/Commands/cs_character.cpp377
-rw-r--r--src/scripts/Commands/cs_wp.cpp2
-rw-r--r--src/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp2
-rw-r--r--src/scripts/EasternKingdoms/zone_hinterlands.cpp2
-rw-r--r--src/scripts/Events/midsummer.cpp56
-rw-r--r--src/scripts/Kalimdor/zone_dustwallow_marsh.cpp38
-rw-r--r--src/scripts/Kalimdor/zone_feralas.cpp6
-rw-r--r--src/scripts/Northrend/Naxxramas/boss_maexxna.cpp4
-rw-r--r--src/scripts/Northrend/zone_dalaran.cpp2
-rw-r--r--src/scripts/ScriptLoader.cpp2
-rw-r--r--src/scripts/Spells/spell_generic.cpp10
-rw-r--r--src/scripts/World/CMakeLists.txt1
-rw-r--r--src/scripts/World/areatrigger_scripts.cpp34
-rw-r--r--src/scripts/World/character_creation.cpp56
65 files changed, 2262 insertions, 68 deletions
diff --git a/README.md b/README.md
index 31012fda1f..6c64677402 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore
+[![GetBadges Game](https://azerothcore-azerothcore-wotlk.getbadges.io/shield/company/azerothcore-azerothcore-wotlk)](https://azerothcore-azerothcore-wotlk.getbadges.io/?ref=shield-game)
[![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=40032087)](https://www.bountysource.com/teams/azerothcore/bounties) [![Master Build Status](https://travis-ci.org/azerothcore/azerothcore-wotlk.svg)](https://travis-ci.org/azerothcore/azerothcore-wotlk) [![Issue Stats](http://www.issuestats.com/github/AzerothCore/azerothcore-wotlk/badge/issue)](http://www.issuestats.com/github/AzerothCore/azerothcore-wotlk) [![Issue Stats](http://www.issuestats.com/github/AzerothCore/azerothcore-wotlk/badge/pr)](http://www.issuestats.com/github/AzerothCore/azerothcore-wotlk)
## Introduction
diff --git a/data/sql/updates/db_auth/2017_08_19_00.sql b/data/sql/updates/db_auth/2017_08_19_00.sql
new file mode 100644
index 0000000000..9facbfff45
--- /dev/null
+++ b/data/sql/updates/db_auth/2017_08_19_00.sql
@@ -0,0 +1,27 @@
+-- DB update 2016_11_19_00 -> 2017_08_19_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2016_11_19_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_auth CHANGE COLUMN 2016_11_19_00 2017_08_19_00 bit;
+SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1503135763068847900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_auth (`sql_rev`) VALUES ('1503135763068847900');
+
+ALTER TABLE `account` CHANGE `expansion` `expansion` TINYINT(3) UNSIGNED DEFAULT 2 NOT NULL;
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_characters/2016_11_18_00.sql b/data/sql/updates/db_characters/2016_11_18_00.sql
index a7b9183433..587cd291db 100644
--- a/data/sql/updates/db_characters/2016_11_18_00.sql
+++ b/data/sql/updates/db_characters/2016_11_18_00.sql
@@ -4,7 +4,7 @@ CREATE PROCEDURE updateDb ()
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
SELECT COUNT(*) INTO @COLEXISTS
FROM information_schema.COLUMNS
-WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2016_08_25_00';
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_characters' AND COLUMN_NAME = '2016_08_25_00';
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
ALTER TABLE version_db_characters CHANGE COLUMN 2016_08_25_00 2016_11_18_00 bit;
@@ -19,4 +19,4 @@ END;
//
DELIMITER ;
CALL updateDb();
-DROP PROCEDURE IF EXISTS `updateDb`; \ No newline at end of file
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_characters/2016_11_19_00.sql b/data/sql/updates/db_characters/2016_11_19_00.sql
index 75261f940e..dc9722fc99 100644
--- a/data/sql/updates/db_characters/2016_11_19_00.sql
+++ b/data/sql/updates/db_characters/2016_11_19_00.sql
@@ -5,7 +5,7 @@ CREATE PROCEDURE updateDb ()
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
SELECT COUNT(*) INTO @COLEXISTS
FROM information_schema.COLUMNS
-WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2016_11_18_00';
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_characters' AND COLUMN_NAME = '2016_11_18_00';
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
START TRANSACTION;
ALTER TABLE version_db_characters CHANGE COLUMN 2016_11_18_00 2016_11_19_00 bit;
diff --git a/data/sql/updates/db_world/2017_05_01_00.sql b/data/sql/updates/db_world/2017_05_01_00.sql
index 449d0abcb0..9cc13140c0 100644
--- a/data/sql/updates/db_world/2017_05_01_00.sql
+++ b/data/sql/updates/db_world/2017_05_01_00.sql
@@ -162,7 +162,7 @@ INSERT INTO `npc_text` (`ID`, `text0_0`) VALUES
(100113, "The blade and Mograine were a singular entity. Do you understand? This act corrupted the blade and lead to Mograine's own corruption as a death knight of Kel'Thuzad. I swore that if I lived, I would expose the perpetrators of this heinous crime. For two days I remained under the rot and contagion of Scourge - gathering as much strength as possible to escape the razed city."),
(100114, "Aye, I did. Much to the dismay of the lesser Mograine, I made my way back to the Scarlet Monastery. I shouted and screamed. I told the tale to any that would listen. And I would be murdered in cold blood for my actions, dragged to this chamber - the dark secret of the order. But some did listen... some heard my words. Thus was born the Argent Dawn..."),
(100115, "I'm afraid that the blade which you hold in your hands is beyond saving. The hatred runs too deep. But do not lose hope, hero. Where one chapter has ended, a new one begins. $B Find his son - a more devout and pious man you may never meet.It is rumored that he is able to build the Ashbringer anew, without requiring the old, tainted blade."),
-(100116, "<High Inquisitor Fairbanks shakes his head.>\n\nNo, $C; only one of his sons is dead. The other lives...\n\n<High Inquisitor Fairbanks points to the sky>\n\nThe Outland... Find him there...");--
+(100116, "<High Inquisitor Fairbanks shakes his head.>\n\nNo, $C; only one of his sons is dead. The other lives...\n\n<High Inquisitor Fairbanks points to the sky>\n\nThe Outland... Find him there...");
-- END UPDATING QUERIES
--
COMMIT;
diff --git a/data/sql/updates/db_world/2017_05_28_00.sql b/data/sql/updates/db_world/2017_05_28_00.sql
new file mode 100644
index 0000000000..2f1d3f2361
--- /dev/null
+++ b/data/sql/updates/db_world/2017_05_28_00.sql
@@ -0,0 +1,332 @@
+-- DB update 2017_05_01_07 -> 2017_05_28_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_05_01_07';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_05_01_07 2017_05_28_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1494230174323886226'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1494230174323886226');
+
+-- Adds damage to pet_levelstats and fills it with correct damage and stats for every level for every pet
+
+ALTER TABLE `pet_levelstats`
+ ADD COLUMN `min_dmg` smallint(5) UNSIGNED NOT NULL default 0 AFTER `spi`,
+ ADD COLUMN `max_dmg` smallint(5) UNSIGNED NOT NULL default 0 AFTER `min_dmg`;
+
+-- IMP
+UPDATE `pet_levelstats` SET `str`= 20, `agi`= 20, `sta`= 20, `inte`= 24, `spi`= 23, `armor`= 20, `min_dmg`= 1, `max_dmg`= 2 WHERE `creature_entry`= 416 AND `level`= 1;
+UPDATE `pet_levelstats` SET `str`= 21, `agi`= 20, `sta`= 20, `inte`= 25, `spi`= 24, `armor`= 24, `min_dmg`= 2, `max_dmg`= 3 WHERE `creature_entry`= 416 AND `level`= 2;
+UPDATE `pet_levelstats` SET `str`= 22, `agi`= 20, `sta`= 21, `inte`= 26, `spi`= 25, `armor`= 28, `min_dmg`= 3, `max_dmg`= 5 WHERE `creature_entry`= 416 AND `level`= 3;
+UPDATE `pet_levelstats` SET `str`= 23, `agi`= 21, `sta`= 21, `inte`= 27, `spi`= 26, `armor`= 33, `min_dmg`= 4, `max_dmg`= 6 WHERE `creature_entry`= 416 AND `level`= 4;
+UPDATE `pet_levelstats` SET `str`= 23, `agi`= 21, `sta`= 22, `inte`= 28, `spi`= 27, `armor`= 49, `min_dmg`= 5, `max_dmg`= 8 WHERE `creature_entry`= 416 AND `level`= 5;
+UPDATE `pet_levelstats` SET `str`= 24, `agi`= 21, `sta`= 22, `inte`= 29, `spi`= 27, `armor`= 68, `min_dmg`= 6, `max_dmg`= 9 WHERE `creature_entry`= 416 AND `level`= 6;
+UPDATE `pet_levelstats` SET `str`= 25, `agi`= 21, `sta`= 23, `inte`= 30, `spi`= 28, `armor`= 92, `min_dmg`= 7, `max_dmg`= 12 WHERE `creature_entry`= 416 AND `level`= 7;
+UPDATE `pet_levelstats` SET `str`= 26, `agi`= 21, `sta`= 23, `inte`= 31, `spi`= 29, `armor`= 117, `min_dmg`= 8, `max_dmg`= 13 WHERE `creature_entry`= 416 AND `level`= 8;
+UPDATE `pet_levelstats` SET `str`= 27, `agi`= 21, `sta`= 23, `inte`= 32, `spi`= 30, `armor`= 147, `min_dmg`= 9, `max_dmg`= 14 WHERE `creature_entry`= 416 AND `level`= 9;
+UPDATE `pet_levelstats` SET `str`= 27, `agi`= 22, `sta`= 24, `inte`= 33, `spi`= 31, `armor`= 180, `min_dmg`= 9, `max_dmg`= 15 WHERE `creature_entry`= 416 AND `level`=10;
+UPDATE `pet_levelstats` SET `str`= 28, `agi`= 22, `sta`= 24, `inte`= 37, `spi`= 35, `armor`= 190, `min_dmg`= 10, `max_dmg`= 16 WHERE `creature_entry`= 416 AND `level`=11;
+UPDATE `pet_levelstats` SET `str`= 29, `agi`= 22, `sta`= 26, `inte`= 41, `spi`= 39, `armor`= 203, `min_dmg`= 11, `max_dmg`= 17 WHERE `creature_entry`= 416 AND `level`=12;
+UPDATE `pet_levelstats` SET `str`= 30, `agi`= 22, `sta`= 26, `inte`= 44, `spi`= 43, `armor`= 215, `min_dmg`= 11, `max_dmg`= 18 WHERE `creature_entry`= 416 AND `level`=13;
+UPDATE `pet_levelstats` SET `str`= 31, `agi`= 22, `sta`= 28, `inte`= 50, `spi`= 47, `armor`= 228, `min_dmg`= 11, `max_dmg`= 19 WHERE `creature_entry`= 416 AND `level`=14;
+UPDATE `pet_levelstats` SET `str`= 32, `agi`= 23, `sta`= 29, `inte`= 54, `spi`= 52, `armor`= 240, `min_dmg`= 12, `max_dmg`= 20 WHERE `creature_entry`= 416 AND `level`=15;
+UPDATE `pet_levelstats` SET `str`= 34, `agi`= 23, `sta`= 30, `inte`= 57, `spi`= 56, `armor`= 253, `min_dmg`= 13, `max_dmg`= 21 WHERE `creature_entry`= 416 AND `level`=16;
+UPDATE `pet_levelstats` SET `str`= 36, `agi`= 23, `sta`= 31, `inte`= 61, `spi`= 60, `armor`= 265, `min_dmg`= 14, `max_dmg`= 22 WHERE `creature_entry`= 416 AND `level`=17;
+UPDATE `pet_levelstats` SET `str`= 37, `agi`= 23, `sta`= 32, `inte`= 65, `spi`= 65, `armor`= 278, `min_dmg`= 15, `max_dmg`= 24 WHERE `creature_entry`= 416 AND `level`=18;
+UPDATE `pet_levelstats` SET `str`= 38, `agi`= 23, `sta`= 33, `inte`= 70, `spi`= 69, `armor`= 291, `min_dmg`= 15, `max_dmg`= 25 WHERE `creature_entry`= 416 AND `level`=19;
+UPDATE `pet_levelstats` SET `str`= 40, `agi`= 24, `sta`= 35, `inte`= 74, `spi`= 74, `armor`= 303, `min_dmg`= 16, `max_dmg`= 26 WHERE `creature_entry`= 416 AND `level`=20;
+UPDATE `pet_levelstats` SET `str`= 42, `agi`= 24, `sta`= 44, `inte`= 87, `spi`= 64, `armor`= 320, `min_dmg`= 17, `max_dmg`= 27 WHERE `creature_entry`= 416 AND `level`=21;
+UPDATE `pet_levelstats` SET `str`= 44, `agi`= 24, `sta`= 46, `inte`= 91, `spi`= 67, `armor`= 346, `min_dmg`= 18, `max_dmg`= 28 WHERE `creature_entry`= 416 AND `level`=22;
+UPDATE `pet_levelstats` SET `str`= 45, `agi`= 24, `sta`= 47, `inte`= 95, `spi`= 69, `armor`= 360, `min_dmg`= 18, `max_dmg`= 29 WHERE `creature_entry`= 416 AND `level`=23;
+UPDATE `pet_levelstats` SET `str`= 46, `agi`= 25, `sta`= 49, `inte`= 99, `spi`= 73, `armor`= 373, `min_dmg`= 19, `max_dmg`= 30 WHERE `creature_entry`= 416 AND `level`=24;
+UPDATE `pet_levelstats` SET `str`= 47, `agi`= 25, `sta`= 50, `inte`=104, `spi`= 75, `armor`= 386, `min_dmg`= 20, `max_dmg`= 31 WHERE `creature_entry`= 416 AND `level`=25;
+UPDATE `pet_levelstats` SET `str`= 49, `agi`= 25, `sta`= 51, `inte`=107, `spi`= 78, `armor`= 399, `min_dmg`= 21, `max_dmg`= 32 WHERE `creature_entry`= 416 AND `level`=26;
+UPDATE `pet_levelstats` SET `str`= 50, `agi`= 25, `sta`= 53, `inte`=111, `spi`= 81, `armor`= 411, `min_dmg`= 22, `max_dmg`= 34 WHERE `creature_entry`= 416 AND `level`=27;
+UPDATE `pet_levelstats` SET `str`= 52, `agi`= 25, `sta`= 54, `inte`=118, `spi`= 86, `armor`= 424, `min_dmg`= 22, `max_dmg`= 34 WHERE `creature_entry`= 416 AND `level`=28;
+UPDATE `pet_levelstats` SET `str`= 54, `agi`= 26, `sta`= 56, `inte`=122, `spi`= 89, `armor`= 436, `min_dmg`= 23, `max_dmg`= 35 WHERE `creature_entry`= 416 AND `level`=29;
+UPDATE `pet_levelstats` SET `str`= 54, `agi`= 26, `sta`= 57, `inte`=128, `spi`= 92, `armor`= 449, `min_dmg`= 24, `max_dmg`= 37 WHERE `creature_entry`= 416 AND `level`=30;
+UPDATE `pet_levelstats` SET `str`= 56, `agi`= 26, `sta`= 59, `inte`=131, `spi`= 95, `armor`= 462, `min_dmg`= 24, `max_dmg`= 38 WHERE `creature_entry`= 416 AND `level`=31;
+UPDATE `pet_levelstats` SET `str`= 57, `agi`= 26, `sta`= 61, `inte`=136, `spi`= 98, `armor`= 476, `min_dmg`= 25, `max_dmg`= 39 WHERE `creature_entry`= 416 AND `level`=32;
+UPDATE `pet_levelstats` SET `str`= 59, `agi`= 27, `sta`= 61, `inte`=139, `spi`=101, `armor`= 488, `min_dmg`= 25, `max_dmg`= 39 WHERE `creature_entry`= 416 AND `level`=33;
+UPDATE `pet_levelstats` SET `str`= 60, `agi`= 27, `sta`= 63, `inte`=143, `spi`=104, `armor`= 501, `min_dmg`= 26, `max_dmg`= 40 WHERE `creature_entry`= 416 AND `level`=34;
+UPDATE `pet_levelstats` SET `str`= 62, `agi`= 27, `sta`= 62, `inte`=145, `spi`=107, `armor`= 532, `min_dmg`= 27, `max_dmg`= 41 WHERE `creature_entry`= 416 AND `level`=35;
+UPDATE `pet_levelstats` SET `str`= 64, `agi`= 27, `sta`= 62, `inte`=147, `spi`=110, `armor`= 564, `min_dmg`= 28, `max_dmg`= 43 WHERE `creature_entry`= 416 AND `level`=36;
+UPDATE `pet_levelstats` SET `str`= 66, `agi`= 27, `sta`= 62, `inte`=149, `spi`=114, `armor`= 596, `min_dmg`= 29, `max_dmg`= 44 WHERE `creature_entry`= 416 AND `level`=37;
+UPDATE `pet_levelstats` SET `str`= 68, `agi`= 28, `sta`= 62, `inte`=151, `spi`=117, `armor`= 628, `min_dmg`= 30, `max_dmg`= 46 WHERE `creature_entry`= 416 AND `level`=38;
+UPDATE `pet_levelstats` SET `str`= 70, `agi`= 28, `sta`= 61, `inte`=153, `spi`=120, `armor`= 660, `min_dmg`= 31, `max_dmg`= 47 WHERE `creature_entry`= 416 AND `level`=39;
+UPDATE `pet_levelstats` SET `str`= 72, `agi`= 28, `sta`= 61, `inte`=155, `spi`=124, `armor`= 692, `min_dmg`= 32, `max_dmg`= 49 WHERE `creature_entry`= 416 AND `level`=40;
+UPDATE `pet_levelstats` SET `str`= 74, `agi`= 28, `sta`= 61, `inte`=157, `spi`=127, `armor`= 724, `min_dmg`= 33, `max_dmg`= 50 WHERE `creature_entry`= 416 AND `level`=41;
+UPDATE `pet_levelstats` SET `str`= 77, `agi`= 29, `sta`= 61, `inte`=159, `spi`=131, `armor`= 756, `min_dmg`= 35, `max_dmg`= 52 WHERE `creature_entry`= 416 AND `level`=42;
+UPDATE `pet_levelstats` SET `str`= 81, `agi`= 29, `sta`= 62, `inte`=163, `spi`=134, `armor`= 794, `min_dmg`= 36, `max_dmg`= 54 WHERE `creature_entry`= 416 AND `level`=43;
+UPDATE `pet_levelstats` SET `str`= 85, `agi`= 29, `sta`= 63, `inte`=167, `spi`=137, `armor`= 833, `min_dmg`= 38, `max_dmg`= 57 WHERE `creature_entry`= 416 AND `level`=44;
+UPDATE `pet_levelstats` SET `str`= 89, `agi`= 29, `sta`= 64, `inte`=171, `spi`=140, `armor`= 871, `min_dmg`= 40, `max_dmg`= 60 WHERE `creature_entry`= 416 AND `level`=45;
+UPDATE `pet_levelstats` SET `str`= 93, `agi`= 30, `sta`= 66, `inte`=175, `spi`=144, `armor`= 910, `min_dmg`= 42, `max_dmg`= 63 WHERE `creature_entry`= 416 AND `level`=46;
+UPDATE `pet_levelstats` SET `str`= 95, `agi`= 31, `sta`= 68, `inte`=180, `spi`=148, `armor`= 928, `min_dmg`= 44, `max_dmg`= 65 WHERE `creature_entry`= 416 AND `level`=47;
+UPDATE `pet_levelstats` SET `str`= 97, `agi`= 31, `sta`= 68, `inte`=184, `spi`=151, `armor`= 946, `min_dmg`= 46, `max_dmg`= 68 WHERE `creature_entry`= 416 AND `level`=48;
+UPDATE `pet_levelstats` SET `str`= 99, `agi`= 31, `sta`= 70, `inte`=188, `spi`=155, `armor`= 964, `min_dmg`= 48, `max_dmg`= 71 WHERE `creature_entry`= 416 AND `level`=49;
+UPDATE `pet_levelstats` SET `str`=101, `agi`= 32, `sta`= 72, `inte`=192, `spi`=158, `armor`= 983, `min_dmg`= 50, `max_dmg`= 74 WHERE `creature_entry`= 416 AND `level`=50;
+UPDATE `pet_levelstats` SET `str`=103, `agi`= 32, `sta`= 73, `inte`=196, `spi`=161, `armor`= 1001, `min_dmg`= 50, `max_dmg`= 75 WHERE `creature_entry`= 416 AND `level`=51;
+UPDATE `pet_levelstats` SET `str`=105, `agi`= 32, `sta`= 74, `inte`=200, `spi`=165, `armor`= 1019, `min_dmg`= 51, `max_dmg`= 76 WHERE `creature_entry`= 416 AND `level`=52;
+UPDATE `pet_levelstats` SET `str`=107, `agi`= 32, `sta`= 75, `inte`=204, `spi`=168, `armor`= 1037, `min_dmg`= 51, `max_dmg`= 77 WHERE `creature_entry`= 416 AND `level`=53;
+UPDATE `pet_levelstats` SET `str`=109, `agi`= 33, `sta`= 77, `inte`=209, `spi`=172, `armor`= 1055, `min_dmg`= 52, `max_dmg`= 79 WHERE `creature_entry`= 416 AND `level`=54;
+UPDATE `pet_levelstats` SET `str`=111, `agi`= 33, `sta`= 78, `inte`=215, `spi`=176, `armor`= 1073, `min_dmg`= 53, `max_dmg`= 80 WHERE `creature_entry`= 416 AND `level`=55;
+UPDATE `pet_levelstats` SET `str`=114, `agi`= 34, `sta`= 80, `inte`=221, `spi`=181, `armor`= 1091, `min_dmg`= 55, `max_dmg`= 82 WHERE `creature_entry`= 416 AND `level`=56;
+UPDATE `pet_levelstats` SET `str`=116, `agi`= 34, `sta`= 81, `inte`=231, `spi`=200, `armor`= 1109, `min_dmg`= 59, `max_dmg`= 88 WHERE `creature_entry`= 416 AND `level`=57;
+UPDATE `pet_levelstats` SET `str`=118, `agi`= 34, `sta`= 83, `inte`=242, `spi`=220, `armor`= 1127, `min_dmg`= 63, `max_dmg`= 94 WHERE `creature_entry`= 416 AND `level`=58;
+UPDATE `pet_levelstats` SET `str`=120, `agi`= 34, `sta`= 84, `inte`=253, `spi`=240, `armor`= 1145, `min_dmg`= 67, `max_dmg`=100 WHERE `creature_entry`= 416 AND `level`=59;
+UPDATE `pet_levelstats` SET `str`=122, `agi`= 35, `sta`= 86, `inte`=264, `spi`=260, `armor`= 1163, `min_dmg`= 72, `max_dmg`=107 WHERE `creature_entry`= 416 AND `level`=60;
+UPDATE `pet_levelstats` SET `str`=124, `agi`= 35, `sta`= 94, `inte`=296, `spi`=236, `armor`= 1985, `min_dmg`=109, `max_dmg`=136 WHERE `creature_entry`= 416 AND `level`=61;
+UPDATE `pet_levelstats` SET `str`=126, `agi`= 35, `sta`=102, `inte`=328, `spi`=212, `armor`= 2807, `min_dmg`=146, `max_dmg`=166 WHERE `creature_entry`= 416 AND `level`=62;
+UPDATE `pet_levelstats` SET `str`=128, `agi`= 35, `sta`=101, `inte`=327, `spi`=218, `armor`= 2999, `min_dmg`=154, `max_dmg`=182 WHERE `creature_entry`= 416 AND `level`=63;
+UPDATE `pet_levelstats` SET `str`=130, `agi`= 36, `sta`=101, `inte`=327, `spi`=224, `armor`= 3192, `min_dmg`=163, `max_dmg`=198 WHERE `creature_entry`= 416 AND `level`=64;
+UPDATE `pet_levelstats` SET `str`=133, `agi`= 36, `sta`=101, `inte`=327, `spi`=231, `armor`= 3384, `min_dmg`=172, `max_dmg`=214 WHERE `creature_entry`= 416 AND `level`=65;
+UPDATE `pet_levelstats` SET `str`=135, `agi`= 37, `sta`=101, `inte`=327, `spi`=237, `armor`= 3577, `min_dmg`=181, `max_dmg`=230 WHERE `creature_entry`= 416 AND `level`=66;
+UPDATE `pet_levelstats` SET `str`=137, `agi`= 37, `sta`=101, `inte`=327, `spi`=243, `armor`= 3769, `min_dmg`=190, `max_dmg`=247 WHERE `creature_entry`= 416 AND `level`=67;
+UPDATE `pet_levelstats` SET `str`=140, `agi`= 38, `sta`=101, `inte`=327, `spi`=250, `armor`= 3962, `min_dmg`=199, `max_dmg`=263 WHERE `creature_entry`= 416 AND `level`=68;
+UPDATE `pet_levelstats` SET `str`=142, `agi`= 38, `sta`=101, `inte`=327, `spi`=256, `armor`= 4154, `min_dmg`=207, `max_dmg`=279 WHERE `creature_entry`= 416 AND `level`=69;
+UPDATE `pet_levelstats` SET `str`=145, `agi`= 39, `sta`=101, `inte`=327, `spi`=263, `armor`= 4347, `min_dmg`=216, `max_dmg`=295 WHERE `creature_entry`= 416 AND `level`=70;
+UPDATE `pet_levelstats` SET `str`=160, `agi`= 43, `sta`=102, `inte`=331, `spi`=273, `armor`= 4540, `min_dmg`=225, `max_dmg`=312 WHERE `creature_entry`= 416 AND `level`=71;
+UPDATE `pet_levelstats` SET `str`=175, `agi`= 47, `sta`=104, `inte`=335, `spi`=283, `armor`= 4732, `min_dmg`=234, `max_dmg`=328 WHERE `creature_entry`= 416 AND `level`=72;
+UPDATE `pet_levelstats` SET `str`=190, `agi`= 51, `sta`=106, `inte`=339, `spi`=294, `armor`= 4925, `min_dmg`=243, `max_dmg`=344 WHERE `creature_entry`= 416 AND `level`=73;
+UPDATE `pet_levelstats` SET `str`=205, `agi`= 55, `sta`=107, `inte`=343, `spi`=304, `armor`= 5117, `min_dmg`=252, `max_dmg`=360 WHERE `creature_entry`= 416 AND `level`=74;
+UPDATE `pet_levelstats` SET `str`=221, `agi`= 59, `sta`=109, `inte`=348, `spi`=315, `armor`= 5310, `min_dmg`=260, `max_dmg`=376 WHERE `creature_entry`= 416 AND `level`=75;
+UPDATE `pet_levelstats` SET `str`=236, `agi`= 63, `sta`=111, `inte`=352, `spi`=325, `armor`= 5502, `min_dmg`=269, `max_dmg`=393 WHERE `creature_entry`= 416 AND `level`=76;
+UPDATE `pet_levelstats` SET `str`=251, `agi`= 67, `sta`=112, `inte`=356, `spi`=335, `armor`= 5695, `min_dmg`=278, `max_dmg`=409 WHERE `creature_entry`= 416 AND `level`=77;
+UPDATE `pet_levelstats` SET `str`=266, `agi`= 71, `sta`=114, `inte`=360, `spi`=346, `armor`= 5887, `min_dmg`=287, `max_dmg`=425 WHERE `creature_entry`= 416 AND `level`=78;
+UPDATE `pet_levelstats` SET `str`=281, `agi`= 75, `sta`=116, `inte`=364, `spi`=356, `armor`= 6080, `min_dmg`=296, `max_dmg`=441 WHERE `creature_entry`= 416 AND `level`=79;
+UPDATE `pet_levelstats` SET `str`=297, `agi`= 79, `sta`=118, `inte`=369, `spi`=367, `armor`= 6273, `min_dmg`=305, `max_dmg`=458 WHERE `creature_entry`= 416 AND `level`=80;
+-- VOIDWALKER
+UPDATE `pet_levelstats` SET `str`= 29, `agi`= 10, `sta`= 29, `inte`= 25, `spi`= 27, `armor`= 831, `min_dmg`= 8, `max_dmg`= 14 WHERE `creature_entry`=1860 AND `level`=10;
+UPDATE `pet_levelstats` SET `str`= 30, `agi`= 10, `sta`= 32, `inte`= 26, `spi`= 28, `armor`= 875, `min_dmg`= 9, `max_dmg`= 15 WHERE `creature_entry`=1860 AND `level`=11;
+UPDATE `pet_levelstats` SET `str`= 31, `agi`= 26, `sta`= 36, `inte`= 24, `spi`= 31, `armor`= 876, `min_dmg`= 10, `max_dmg`= 16 WHERE `creature_entry`=1860 AND `level`=12;
+UPDATE `pet_levelstats` SET `str`= 32, `agi`= 28, `sta`= 43, `inte`= 26, `spi`= 32, `armor`= 877, `min_dmg`= 11, `max_dmg`= 17 WHERE `creature_entry`=1860 AND `level`=13;
+UPDATE `pet_levelstats` SET `str`= 33, `agi`= 28, `sta`= 44, `inte`= 25, `spi`= 35, `armor`= 878, `min_dmg`= 12, `max_dmg`= 19 WHERE `creature_entry`=1860 AND `level`=14;
+UPDATE `pet_levelstats` SET `str`= 34, `agi`= 30, `sta`= 48, `inte`= 26, `spi`= 37, `armor`= 925, `min_dmg`= 13, `max_dmg`= 20 WHERE `creature_entry`=1860 AND `level`=15;
+UPDATE `pet_levelstats` SET `str`= 36, `agi`= 30, `sta`= 52, `inte`= 27, `spi`= 39, `armor`= 975, `min_dmg`= 14, `max_dmg`= 22 WHERE `creature_entry`=1860 AND `level`=16;
+UPDATE `pet_levelstats` SET `str`= 38, `agi`= 31, `sta`= 55, `inte`= 28, `spi`= 42, `armor`= 1022, `min_dmg`= 15, `max_dmg`= 23 WHERE `creature_entry`=1860 AND `level`=17;
+UPDATE `pet_levelstats` SET `str`= 39, `agi`= 33, `sta`= 59, `inte`= 28, `spi`= 44, `armor`= 1068, `min_dmg`= 16, `max_dmg`= 25 WHERE `creature_entry`=1860 AND `level`=18;
+UPDATE `pet_levelstats` SET `str`= 40, `agi`= 33, `sta`= 63, `inte`= 30, `spi`= 46, `armor`= 1120, `min_dmg`= 17, `max_dmg`= 26 WHERE `creature_entry`=1860 AND `level`=19;
+UPDATE `pet_levelstats` SET `str`= 42, `agi`= 35, `sta`= 67, `inte`= 31, `spi`= 49, `armor`= 1165, `min_dmg`= 18, `max_dmg`= 28 WHERE `creature_entry`=1860 AND `level`=20;
+UPDATE `pet_levelstats` SET `str`= 44, `agi`= 36, `sta`= 80, `inte`= 53, `spi`= 39, `armor`= 1232, `min_dmg`= 19, `max_dmg`= 29 WHERE `creature_entry`=1860 AND `level`=21;
+UPDATE `pet_levelstats` SET `str`= 46, `agi`= 36, `sta`= 84, `inte`= 54, `spi`= 41, `armor`= 1282, `min_dmg`= 20, `max_dmg`= 31 WHERE `creature_entry`=1860 AND `level`=22;
+UPDATE `pet_levelstats` SET `str`= 47, `agi`= 38, `sta`= 89, `inte`= 56, `spi`= 42, `armor`= 1330, `min_dmg`= 21, `max_dmg`= 32 WHERE `creature_entry`=1860 AND `level`=23;
+UPDATE `pet_levelstats` SET `str`= 49, `agi`= 39, `sta`= 93, `inte`= 57, `spi`= 43, `armor`= 1378, `min_dmg`= 22, `max_dmg`= 33 WHERE `creature_entry`=1860 AND `level`=24;
+UPDATE `pet_levelstats` SET `str`= 50, `agi`= 40, `sta`= 97, `inte`= 60, `spi`= 44, `armor`= 1427, `min_dmg`= 23, `max_dmg`= 35 WHERE `creature_entry`=1860 AND `level`=25;
+UPDATE `pet_levelstats` SET `str`= 52, `agi`= 41, `sta`=101, `inte`= 62, `spi`= 46, `armor`= 1474, `min_dmg`= 24, `max_dmg`= 36 WHERE `creature_entry`=1860 AND `level`=26;
+UPDATE `pet_levelstats` SET `str`= 53, `agi`= 42, `sta`=105, `inte`= 63, `spi`= 47, `armor`= 1524, `min_dmg`= 25, `max_dmg`= 38 WHERE `creature_entry`=1860 AND `level`=27;
+UPDATE `pet_levelstats` SET `str`= 55, `agi`= 43, `sta`=110, `inte`= 65, `spi`= 48, `armor`= 1572, `min_dmg`= 26, `max_dmg`= 39 WHERE `creature_entry`=1860 AND `level`=28;
+UPDATE `pet_levelstats` SET `str`= 57, `agi`= 44, `sta`=114, `inte`= 67, `spi`= 49, `armor`= 1619, `min_dmg`= 27, `max_dmg`= 41 WHERE `creature_entry`=1860 AND `level`=29;
+UPDATE `pet_levelstats` SET `str`= 57, `agi`= 46, `sta`=118, `inte`= 69, `spi`= 51, `armor`= 1667, `min_dmg`= 28, `max_dmg`= 42 WHERE `creature_entry`=1860 AND `level`=30;
+UPDATE `pet_levelstats` SET `str`= 59, `agi`= 47, `sta`=123, `inte`= 71, `spi`= 52, `armor`= 1715, `min_dmg`= 29, `max_dmg`= 44 WHERE `creature_entry`=1860 AND `level`=31;
+UPDATE `pet_levelstats` SET `str`= 60, `agi`= 47, `sta`=127, `inte`= 73, `spi`= 53, `armor`= 1766, `min_dmg`= 30, `max_dmg`= 45 WHERE `creature_entry`=1860 AND `level`=32;
+UPDATE `pet_levelstats` SET `str`= 62, `agi`= 49, `sta`=131, `inte`= 74, `spi`= 54, `armor`= 1812, `min_dmg`= 31, `max_dmg`= 47 WHERE `creature_entry`=1860 AND `level`=33;
+UPDATE `pet_levelstats` SET `str`= 63, `agi`= 50, `sta`=135, `inte`= 76, `spi`= 56, `armor`= 1861, `min_dmg`= 32, `max_dmg`= 48 WHERE `creature_entry`=1860 AND `level`=34;
+UPDATE `pet_levelstats` SET `str`= 65, `agi`= 51, `sta`=146, `inte`= 62, `spi`= 57, `armor`= 2238, `min_dmg`= 34, `max_dmg`= 50 WHERE `creature_entry`=1860 AND `level`=35;
+UPDATE `pet_levelstats` SET `str`= 66, `agi`= 52, `sta`=150, `inte`= 63, `spi`= 59, `armor`= 2415, `min_dmg`= 34, `max_dmg`= 51 WHERE `creature_entry`=1860 AND `level`=36;
+UPDATE `pet_levelstats` SET `str`= 68, `agi`= 53, `sta`=155, `inte`= 64, `spi`= 60, `armor`= 2602, `min_dmg`= 35, `max_dmg`= 54 WHERE `creature_entry`=1860 AND `level`=37;
+UPDATE `pet_levelstats` SET `str`= 70, `agi`= 55, `sta`=159, `inte`= 66, `spi`= 62, `armor`= 2795, `min_dmg`= 36, `max_dmg`= 55 WHERE `creature_entry`=1860 AND `level`=38;
+UPDATE `pet_levelstats` SET `str`= 72, `agi`= 56, `sta`=164, `inte`= 67, `spi`= 63, `armor`= 3002, `min_dmg`= 37, `max_dmg`= 57 WHERE `creature_entry`=1860 AND `level`=39;
+UPDATE `pet_levelstats` SET `str`= 74, `agi`= 57, `sta`=170, `inte`= 70, `spi`= 65, `armor`= 3219, `min_dmg`= 38, `max_dmg`= 58 WHERE `creature_entry`=1860 AND `level`=40;
+UPDATE `pet_levelstats` SET `str`= 77, `agi`= 58, `sta`=163, `inte`= 70, `spi`= 66, `armor`= 3222, `min_dmg`= 43, `max_dmg`= 65 WHERE `creature_entry`=1860 AND `level`=41;
+UPDATE `pet_levelstats` SET `str`= 81, `agi`= 59, `sta`=156, `inte`= 70, `spi`= 67, `armor`= 3225, `min_dmg`= 48, `max_dmg`= 73 WHERE `creature_entry`=1860 AND `level`=42;
+UPDATE `pet_levelstats` SET `str`= 86, `agi`= 61, `sta`=169, `inte`= 72, `spi`= 69, `armor`= 3228, `min_dmg`= 53, `max_dmg`= 81 WHERE `creature_entry`=1860 AND `level`=43;
+UPDATE `pet_levelstats` SET `str`= 91, `agi`= 62, `sta`=169, `inte`= 69, `spi`= 70, `armor`= 3392, `min_dmg`= 59, `max_dmg`= 88 WHERE `creature_entry`=1860 AND `level`=44;
+UPDATE `pet_levelstats` SET `str`= 96, `agi`= 64, `sta`=169, `inte`= 67, `spi`= 72, `armor`= 3557, `min_dmg`= 64, `max_dmg`= 96 WHERE `creature_entry`=1860 AND `level`=45;
+UPDATE `pet_levelstats` SET `str`= 98, `agi`= 65, `sta`=173, `inte`= 77, `spi`= 73, `armor`= 3722, `min_dmg`= 69, `max_dmg`=104 WHERE `creature_entry`=1860 AND `level`=46;
+UPDATE `pet_levelstats` SET `str`=100, `agi`= 66, `sta`=177, `inte`= 78, `spi`= 75, `armor`= 3796, `min_dmg`= 75, `max_dmg`=112 WHERE `creature_entry`=1860 AND `level`=47;
+UPDATE `pet_levelstats` SET `str`=102, `agi`= 68, `sta`=181, `inte`= 80, `spi`= 76, `armor`= 3868, `min_dmg`= 80, `max_dmg`=119 WHERE `creature_entry`=1860 AND `level`=48;
+UPDATE `pet_levelstats` SET `str`=104, `agi`= 69, `sta`=186, `inte`= 82, `spi`= 78, `armor`= 3943, `min_dmg`= 85, `max_dmg`=127 WHERE `creature_entry`=1860 AND `level`=49;
+UPDATE `pet_levelstats` SET `str`=107, `agi`= 71, `sta`=190, `inte`= 84, `spi`= 80, `armor`= 4013, `min_dmg`= 91, `max_dmg`=135 WHERE `creature_entry`=1860 AND `level`=50;
+UPDATE `pet_levelstats` SET `str`=109, `agi`= 72, `sta`=223, `inte`= 97, `spi`= 81, `armor`= 4086, `min_dmg`= 96, `max_dmg`=143 WHERE `creature_entry`=1860 AND `level`=51;
+UPDATE `pet_levelstats` SET `str`=111, `agi`= 73, `sta`=228, `inte`=100, `spi`= 82, `armor`= 4160, `min_dmg`=101, `max_dmg`=150 WHERE `creature_entry`=1860 AND `level`=52;
+UPDATE `pet_levelstats` SET `str`=113, `agi`= 75, `sta`=233, `inte`=102, `spi`= 84, `armor`= 4233, `min_dmg`=107, `max_dmg`=158 WHERE `creature_entry`=1860 AND `level`=53;
+UPDATE `pet_levelstats` SET `str`=115, `agi`= 76, `sta`=207, `inte`= 90, `spi`= 85, `armor`= 4307, `min_dmg`=112, `max_dmg`=166 WHERE `creature_entry`=1860 AND `level`=54;
+UPDATE `pet_levelstats` SET `str`=117, `agi`= 77, `sta`=227, `inte`= 99, `spi`= 87, `armor`= 4380, `min_dmg`=117, `max_dmg`=173 WHERE `creature_entry`=1860 AND `level`=55;
+UPDATE `pet_levelstats` SET `str`=120, `agi`= 79, `sta`=248, `inte`=108, `spi`= 89, `armor`= 4453, `min_dmg`=123, `max_dmg`=181 WHERE `creature_entry`=1860 AND `level`=56;
+UPDATE `pet_levelstats` SET `str`=122, `agi`= 80, `sta`=242, `inte`= 95, `spi`=108, `armor`= 4526, `min_dmg`=128, `max_dmg`=189 WHERE `creature_entry`=1860 AND `level`=57;
+UPDATE `pet_levelstats` SET `str`=124, `agi`= 81, `sta`=236, `inte`= 82, `spi`=127, `armor`= 4599, `min_dmg`=133, `max_dmg`=197 WHERE `creature_entry`=1860 AND `level`=58;
+UPDATE `pet_levelstats` SET `str`=127, `agi`= 83, `sta`=230, `inte`= 69, `spi`=147, `armor`= 4673, `min_dmg`=139, `max_dmg`=204 WHERE `creature_entry`=1860 AND `level`=59;
+UPDATE `pet_levelstats` SET `str`=129, `agi`= 85, `sta`=249, `inte`= 70, `spi`=150, `armor`= 4745, `min_dmg`=144, `max_dmg`=212 WHERE `creature_entry`=1860 AND `level`=60;
+UPDATE `pet_levelstats` SET `str`=131, `agi`= 60, `sta`=264, `inte`= 97, `spi`=126, `armor`= 5984, `min_dmg`=149, `max_dmg`=220 WHERE `creature_entry`=1860 AND `level`=61;
+UPDATE `pet_levelstats` SET `str`=133, `agi`= 36, `sta`=279, `inte`=124, `spi`=102, `armor`= 7223, `min_dmg`=155, `max_dmg`=228 WHERE `creature_entry`=1860 AND `level`=62;
+UPDATE `pet_levelstats` SET `str`=135, `agi`= 45, `sta`=279, `inte`=125, `spi`=104, `armor`= 7453, `min_dmg`=161, `max_dmg`=238 WHERE `creature_entry`=1860 AND `level`=63;
+UPDATE `pet_levelstats` SET `str`=138, `agi`= 54, `sta`=279, `inte`=126, `spi`=107, `armor`= 7684, `min_dmg`=167, `max_dmg`=248 WHERE `creature_entry`=1860 AND `level`=64;
+UPDATE `pet_levelstats` SET `str`=140, `agi`= 63, `sta`=279, `inte`=127, `spi`=109, `armor`= 7915, `min_dmg`=174, `max_dmg`=258 WHERE `creature_entry`=1860 AND `level`=65;
+UPDATE `pet_levelstats` SET `str`=143, `agi`= 72, `sta`=279, `inte`=128, `spi`=112, `armor`= 8146, `min_dmg`=180, `max_dmg`=269 WHERE `creature_entry`=1860 AND `level`=66;
+UPDATE `pet_levelstats` SET `str`=145, `agi`= 81, `sta`=279, `inte`=129, `spi`=114, `armor`= 8377, `min_dmg`=187, `max_dmg`=279 WHERE `creature_entry`=1860 AND `level`=67;
+UPDATE `pet_levelstats` SET `str`=148, `agi`= 90, `sta`=279, `inte`=130, `spi`=117, `armor`= 8608, `min_dmg`=193, `max_dmg`=289 WHERE `creature_entry`=1860 AND `level`=68;
+UPDATE `pet_levelstats` SET `str`=150, `agi`= 99, `sta`=279, `inte`=131, `spi`=119, `armor`= 8839, `min_dmg`=200, `max_dmg`=300 WHERE `creature_entry`=1860 AND `level`=69;
+UPDATE `pet_levelstats` SET `str`=153, `agi`=109, `sta`=280, `inte`=133, `spi`=122, `armor`= 9070, `min_dmg`=206, `max_dmg`=310 WHERE `creature_entry`=1860 AND `level`=70;
+UPDATE `pet_levelstats` SET `str`=163, `agi`=102, `sta`=284, `inte`=134, `spi`=134, `armor`= 9917, `min_dmg`=212, `max_dmg`=320 WHERE `creature_entry`=1860 AND `level`=71;
+UPDATE `pet_levelstats` SET `str`=173, `agi`= 95, `sta`=289, `inte`=136, `spi`=146, `armor`=10765, `min_dmg`=219, `max_dmg`=330 WHERE `creature_entry`=1860 AND `level`=72;
+UPDATE `pet_levelstats` SET `str`=183, `agi`= 88, `sta`=294, `inte`=138, `spi`=159, `armor`=11612, `min_dmg`=225, `max_dmg`=341 WHERE `creature_entry`=1860 AND `level`=73;
+UPDATE `pet_levelstats` SET `str`=193, `agi`= 81, `sta`=299, `inte`=139, `spi`=171, `armor`=12460, `min_dmg`=232, `max_dmg`=351 WHERE `creature_entry`=1860 AND `level`=74;
+UPDATE `pet_levelstats` SET `str`=203, `agi`= 74, `sta`=304, `inte`=141, `spi`=183, `armor`=13307, `min_dmg`=238, `max_dmg`=361 WHERE `creature_entry`=1860 AND `level`=75;
+UPDATE `pet_levelstats` SET `str`=214, `agi`= 67, `sta`=309, `inte`=143, `spi`=196, `armor`=14155, `min_dmg`=245, `max_dmg`=372 WHERE `creature_entry`=1860 AND `level`=76;
+UPDATE `pet_levelstats` SET `str`=236, `agi`= 72, `sta`=314, `inte`=144, `spi`=200, `armor`=14652, `min_dmg`=251, `max_dmg`=382 WHERE `creature_entry`=1860 AND `level`=77;
+UPDATE `pet_levelstats` SET `str`=262, `agi`= 78, `sta`=318, `inte`=146, `spi`=203, `armor`=15150, `min_dmg`=258, `max_dmg`=393 WHERE `creature_entry`=1860 AND `level`=78;
+UPDATE `pet_levelstats` SET `str`=288, `agi`= 84, `sta`=323, `inte`=148, `spi`=206, `armor`=15649, `min_dmg`=265, `max_dmg`=404 WHERE `creature_entry`=1860 AND `level`=79;
+UPDATE `pet_levelstats` SET `str`=314, `agi`= 90, `sta`=328, `inte`=150, `spi`=209, `armor`=16148, `min_dmg`=272, `max_dmg`=415 WHERE `creature_entry`=1860 AND `level`=80;
+-- SUCCUBUS
+UPDATE `pet_levelstats` SET `str`= 42, `agi`= 35, `sta`= 67, `inte`= 31, `spi`= 49, `armor`= 563, `min_dmg`= 20, `max_dmg`= 30 WHERE `creature_entry`=1863 AND `level`=20;
+UPDATE `pet_levelstats` SET `str`= 44, `agi`= 36, `sta`= 80, `inte`= 53, `spi`= 39, `armor`= 604, `min_dmg`= 20, `max_dmg`= 31 WHERE `creature_entry`=1863 AND `level`=21;
+UPDATE `pet_levelstats` SET `str`= 46, `agi`= 36, `sta`= 84, `inte`= 54, `spi`= 41, `armor`= 628, `min_dmg`= 21, `max_dmg`= 32 WHERE `creature_entry`=1863 AND `level`=22;
+UPDATE `pet_levelstats` SET `str`= 47, `agi`= 38, `sta`= 89, `inte`= 56, `spi`= 42, `armor`= 652, `min_dmg`= 22, `max_dmg`= 33 WHERE `creature_entry`=1863 AND `level`=23;
+UPDATE `pet_levelstats` SET `str`= 49, `agi`= 39, `sta`= 93, `inte`= 57, `spi`= 43, `armor`= 675, `min_dmg`= 22, `max_dmg`= 34 WHERE `creature_entry`=1863 AND `level`=24;
+UPDATE `pet_levelstats` SET `str`= 50, `agi`= 40, `sta`= 97, `inte`= 60, `spi`= 44, `armor`= 699, `min_dmg`= 23, `max_dmg`= 36 WHERE `creature_entry`=1863 AND `level`=25;
+UPDATE `pet_levelstats` SET `str`= 52, `agi`= 41, `sta`=101, `inte`= 62, `spi`= 46, `armor`= 721, `min_dmg`= 24, `max_dmg`= 37 WHERE `creature_entry`=1863 AND `level`=26;
+UPDATE `pet_levelstats` SET `str`= 53, `agi`= 42, `sta`=105, `inte`= 63, `spi`= 47, `armor`= 745, `min_dmg`= 25, `max_dmg`= 38 WHERE `creature_entry`=1863 AND `level`=27;
+UPDATE `pet_levelstats` SET `str`= 55, `agi`= 43, `sta`=110, `inte`= 65, `spi`= 48, `armor`= 768, `min_dmg`= 26, `max_dmg`= 40 WHERE `creature_entry`=1863 AND `level`=28;
+UPDATE `pet_levelstats` SET `str`= 57, `agi`= 44, `sta`=114, `inte`= 67, `spi`= 49, `armor`= 791, `min_dmg`= 27, `max_dmg`= 41 WHERE `creature_entry`=1863 AND `level`=29;
+UPDATE `pet_levelstats` SET `str`= 57, `agi`= 46, `sta`=118, `inte`= 69, `spi`= 51, `armor`= 815, `min_dmg`= 28, `max_dmg`= 43 WHERE `creature_entry`=1863 AND `level`=30;
+UPDATE `pet_levelstats` SET `str`= 59, `agi`= 47, `sta`=123, `inte`= 71, `spi`= 52, `armor`= 838, `min_dmg`= 28, `max_dmg`= 44 WHERE `creature_entry`=1863 AND `level`=31;
+UPDATE `pet_levelstats` SET `str`= 60, `agi`= 47, `sta`=127, `inte`= 73, `spi`= 53, `armor`= 862, `min_dmg`= 29, `max_dmg`= 45 WHERE `creature_entry`=1863 AND `level`=32;
+UPDATE `pet_levelstats` SET `str`= 62, `agi`= 49, `sta`=131, `inte`= 74, `spi`= 54, `armor`= 884, `min_dmg`= 30, `max_dmg`= 46 WHERE `creature_entry`=1863 AND `level`=33;
+UPDATE `pet_levelstats` SET `str`= 63, `agi`= 50, `sta`=135, `inte`= 76, `spi`= 56, `armor`= 908, `min_dmg`= 31, `max_dmg`= 47 WHERE `creature_entry`=1863 AND `level`=34;
+UPDATE `pet_levelstats` SET `str`= 65, `agi`= 51, `sta`=146, `inte`= 62, `spi`= 57, `armor`= 950, `min_dmg`= 32, `max_dmg`= 54 WHERE `creature_entry`=1863 AND `level`=35;
+UPDATE `pet_levelstats` SET `str`= 66, `agi`= 52, `sta`=150, `inte`= 63, `spi`= 59, `armor`= 990, `min_dmg`= 33, `max_dmg`= 56 WHERE `creature_entry`=1863 AND `level`=36;
+UPDATE `pet_levelstats` SET `str`= 68, `agi`= 53, `sta`=155, `inte`= 64, `spi`= 60, `armor`= 1038, `min_dmg`= 34, `max_dmg`= 59 WHERE `creature_entry`=1863 AND `level`=37;
+UPDATE `pet_levelstats` SET `str`= 70, `agi`= 55, `sta`=159, `inte`= 66, `spi`= 62, `armor`= 1095, `min_dmg`= 36, `max_dmg`= 61 WHERE `creature_entry`=1863 AND `level`=38;
+UPDATE `pet_levelstats` SET `str`= 72, `agi`= 56, `sta`=164, `inte`= 67, `spi`= 63, `armor`= 1163, `min_dmg`= 38, `max_dmg`= 64 WHERE `creature_entry`=1863 AND `level`=39;
+UPDATE `pet_levelstats` SET `str`= 74, `agi`= 57, `sta`=170, `inte`= 70, `spi`= 65, `armor`= 1244, `min_dmg`= 41, `max_dmg`= 66 WHERE `creature_entry`=1863 AND `level`=40;
+UPDATE `pet_levelstats` SET `str`= 77, `agi`= 58, `sta`=163, `inte`= 70, `spi`= 66, `armor`= 1338, `min_dmg`= 43, `max_dmg`= 67 WHERE `creature_entry`=1863 AND `level`=41;
+UPDATE `pet_levelstats` SET `str`= 81, `agi`= 59, `sta`=156, `inte`= 70, `spi`= 67, `armor`= 1448, `min_dmg`= 46, `max_dmg`= 69 WHERE `creature_entry`=1863 AND `level`=42;
+UPDATE `pet_levelstats` SET `str`= 86, `agi`= 61, `sta`=169, `inte`= 72, `spi`= 69, `armor`= 1544, `min_dmg`= 48, `max_dmg`= 72 WHERE `creature_entry`=1863 AND `level`=43;
+UPDATE `pet_levelstats` SET `str`= 91, `agi`= 62, `sta`=169, `inte`= 69, `spi`= 70, `armor`= 1641, `min_dmg`= 51, `max_dmg`= 76 WHERE `creature_entry`=1863 AND `level`=44;
+UPDATE `pet_levelstats` SET `str`= 96, `agi`= 64, `sta`=169, `inte`= 67, `spi`= 72, `armor`= 1738, `min_dmg`= 53, `max_dmg`= 79 WHERE `creature_entry`=1863 AND `level`=45;
+UPDATE `pet_levelstats` SET `str`= 98, `agi`= 65, `sta`=173, `inte`= 77, `spi`= 73, `armor`= 1773, `min_dmg`= 56, `max_dmg`= 83 WHERE `creature_entry`=1863 AND `level`=46;
+UPDATE `pet_levelstats` SET `str`=100, `agi`= 66, `sta`=177, `inte`= 78, `spi`= 75, `armor`= 1808, `min_dmg`= 59, `max_dmg`= 86 WHERE `creature_entry`=1863 AND `level`=47;
+UPDATE `pet_levelstats` SET `str`=102, `agi`= 68, `sta`=181, `inte`= 80, `spi`= 76, `armor`= 1843, `min_dmg`= 61, `max_dmg`= 90 WHERE `creature_entry`=1863 AND `level`=48;
+UPDATE `pet_levelstats` SET `str`=104, `agi`= 69, `sta`=186, `inte`= 82, `spi`= 78, `armor`= 1878, `min_dmg`= 64, `max_dmg`= 93 WHERE `creature_entry`=1863 AND `level`=49;
+UPDATE `pet_levelstats` SET `str`=107, `agi`= 71, `sta`=190, `inte`= 84, `spi`= 80, `armor`= 1912, `min_dmg`= 67, `max_dmg`= 97 WHERE `creature_entry`=1863 AND `level`=50;
+UPDATE `pet_levelstats` SET `str`=109, `agi`= 72, `sta`=223, `inte`= 97, `spi`= 81, `armor`= 2114, `min_dmg`= 77, `max_dmg`=112 WHERE `creature_entry`=1863 AND `level`=51;
+UPDATE `pet_levelstats` SET `str`=111, `agi`= 73, `sta`=228, `inte`=100, `spi`= 82, `armor`= 2316, `min_dmg`= 88, `max_dmg`=128 WHERE `creature_entry`=1863 AND `level`=52;
+UPDATE `pet_levelstats` SET `str`=113, `agi`= 75, `sta`=233, `inte`=102, `spi`= 84, `armor`= 2519, `min_dmg`= 98, `max_dmg`=143 WHERE `creature_entry`=1863 AND `level`=53;
+UPDATE `pet_levelstats` SET `str`=115, `agi`= 76, `sta`=207, `inte`= 90, `spi`= 85, `armor`= 2721, `min_dmg`=109, `max_dmg`=159 WHERE `creature_entry`=1863 AND `level`=54;
+UPDATE `pet_levelstats` SET `str`=117, `agi`= 77, `sta`=227, `inte`= 99, `spi`= 87, `armor`= 2923, `min_dmg`=119, `max_dmg`=174 WHERE `creature_entry`=1863 AND `level`=55;
+UPDATE `pet_levelstats` SET `str`=120, `agi`= 79, `sta`=248, `inte`=108, `spi`= 89, `armor`= 3126, `min_dmg`=130, `max_dmg`=190 WHERE `creature_entry`=1863 AND `level`=56;
+UPDATE `pet_levelstats` SET `str`=122, `agi`= 80, `sta`=242, `inte`= 95, `spi`=108, `armor`= 3328, `min_dmg`=141, `max_dmg`=206 WHERE `creature_entry`=1863 AND `level`=57;
+UPDATE `pet_levelstats` SET `str`=124, `agi`= 81, `sta`=236, `inte`= 82, `spi`=127, `armor`= 3530, `min_dmg`=151, `max_dmg`=221 WHERE `creature_entry`=1863 AND `level`=58;
+UPDATE `pet_levelstats` SET `str`=127, `agi`= 83, `sta`=230, `inte`= 69, `spi`=147, `armor`= 3733, `min_dmg`=162, `max_dmg`=237 WHERE `creature_entry`=1863 AND `level`=59;
+UPDATE `pet_levelstats` SET `str`=129, `agi`= 85, `sta`=249, `inte`= 70, `spi`=150, `armor`= 3935, `min_dmg`=172, `max_dmg`=252 WHERE `creature_entry`=1863 AND `level`=60;
+UPDATE `pet_levelstats` SET `str`=131, `agi`= 60, `sta`=264, `inte`= 97, `spi`=126, `armor`= 4137, `min_dmg`=183, `max_dmg`=268 WHERE `creature_entry`=1863 AND `level`=61;
+UPDATE `pet_levelstats` SET `str`=133, `agi`= 36, `sta`=279, `inte`=124, `spi`=102, `armor`= 4340, `min_dmg`=194, `max_dmg`=284 WHERE `creature_entry`=1863 AND `level`=62;
+UPDATE `pet_levelstats` SET `str`=135, `agi`= 45, `sta`=279, `inte`=125, `spi`=104, `armor`= 4638, `min_dmg`=204, `max_dmg`=298 WHERE `creature_entry`=1863 AND `level`=63;
+UPDATE `pet_levelstats` SET `str`=138, `agi`= 54, `sta`=279, `inte`=126, `spi`=107, `armor`= 4936, `min_dmg`=214, `max_dmg`=313 WHERE `creature_entry`=1863 AND `level`=64;
+UPDATE `pet_levelstats` SET `str`=140, `agi`= 63, `sta`=279, `inte`=127, `spi`=109, `armor`= 5234, `min_dmg`=224, `max_dmg`=328 WHERE `creature_entry`=1863 AND `level`=65;
+UPDATE `pet_levelstats` SET `str`=143, `agi`= 72, `sta`=279, `inte`=128, `spi`=112, `armor`= 5532, `min_dmg`=234, `max_dmg`=342 WHERE `creature_entry`=1863 AND `level`=66;
+UPDATE `pet_levelstats` SET `str`=145, `agi`= 81, `sta`=279, `inte`=129, `spi`=114, `armor`= 5830, `min_dmg`=244, `max_dmg`=357 WHERE `creature_entry`=1863 AND `level`=67;
+UPDATE `pet_levelstats` SET `str`=148, `agi`= 90, `sta`=279, `inte`=130, `spi`=117, `armor`= 6128, `min_dmg`=254, `max_dmg`=372 WHERE `creature_entry`=1863 AND `level`=68;
+UPDATE `pet_levelstats` SET `str`=150, `agi`= 99, `sta`=279, `inte`=131, `spi`=119, `armor`= 6426, `min_dmg`=264, `max_dmg`=387 WHERE `creature_entry`=1863 AND `level`=69;
+UPDATE `pet_levelstats` SET `str`=153, `agi`=109, `sta`=280, `inte`=133, `spi`=122, `armor`= 6724, `min_dmg`=274, `max_dmg`=401 WHERE `creature_entry`=1863 AND `level`=70;
+UPDATE `pet_levelstats` SET `str`=163, `agi`=102, `sta`=284, `inte`=134, `spi`=134, `armor`= 7023, `min_dmg`=284, `max_dmg`=416 WHERE `creature_entry`=1863 AND `level`=71;
+UPDATE `pet_levelstats` SET `str`=173, `agi`= 95, `sta`=289, `inte`=136, `spi`=146, `armor`= 7321, `min_dmg`=294, `max_dmg`=431 WHERE `creature_entry`=1863 AND `level`=72;
+UPDATE `pet_levelstats` SET `str`=183, `agi`= 88, `sta`=294, `inte`=138, `spi`=159, `armor`= 7619, `min_dmg`=304, `max_dmg`=445 WHERE `creature_entry`=1863 AND `level`=73;
+UPDATE `pet_levelstats` SET `str`=193, `agi`= 81, `sta`=299, `inte`=139, `spi`=171, `armor`= 7917, `min_dmg`=314, `max_dmg`=460 WHERE `creature_entry`=1863 AND `level`=74;
+UPDATE `pet_levelstats` SET `str`=203, `agi`= 74, `sta`=304, `inte`=141, `spi`=183, `armor`= 8215, `min_dmg`=324, `max_dmg`=475 WHERE `creature_entry`=1863 AND `level`=75;
+UPDATE `pet_levelstats` SET `str`=214, `agi`= 67, `sta`=309, `inte`=143, `spi`=196, `armor`= 8513, `min_dmg`=334, `max_dmg`=490 WHERE `creature_entry`=1863 AND `level`=76;
+UPDATE `pet_levelstats` SET `str`=236, `agi`= 72, `sta`=314, `inte`=144, `spi`=200, `armor`= 8811, `min_dmg`=344, `max_dmg`=504 WHERE `creature_entry`=1863 AND `level`=77;
+UPDATE `pet_levelstats` SET `str`=262, `agi`= 78, `sta`=318, `inte`=146, `spi`=203, `armor`= 9109, `min_dmg`=354, `max_dmg`=519 WHERE `creature_entry`=1863 AND `level`=78;
+UPDATE `pet_levelstats` SET `str`=288, `agi`= 84, `sta`=323, `inte`=148, `spi`=206, `armor`= 9407, `min_dmg`=364, `max_dmg`=534 WHERE `creature_entry`=1863 AND `level`=79;
+UPDATE `pet_levelstats` SET `str`=314, `agi`= 90, `sta`=328, `inte`=150, `spi`=209, `armor`= 9706, `min_dmg`=375, `max_dmg`=549 WHERE `creature_entry`=1863 AND `level`=80;
+-- FELHUNTER
+UPDATE `pet_levelstats` SET `str`= 57, `agi`= 46, `sta`=118, `inte`= 69, `spi`= 51, `armor`= 834, `min_dmg`= 18, `max_dmg`= 29 WHERE `creature_entry`= 417 AND `level`=30;
+UPDATE `pet_levelstats` SET `str`= 59, `agi`= 47, `sta`=123, `inte`= 71, `spi`= 52, `armor`= 857, `min_dmg`= 18, `max_dmg`= 30 WHERE `creature_entry`= 417 AND `level`=31;
+UPDATE `pet_levelstats` SET `str`= 60, `agi`= 47, `sta`=127, `inte`= 73, `spi`= 53, `armor`= 882, `min_dmg`= 19, `max_dmg`= 31 WHERE `creature_entry`= 417 AND `level`=32;
+UPDATE `pet_levelstats` SET `str`= 62, `agi`= 49, `sta`=131, `inte`= 74, `spi`= 54, `armor`= 905, `min_dmg`= 20, `max_dmg`= 32 WHERE `creature_entry`= 417 AND `level`=33;
+UPDATE `pet_levelstats` SET `str`= 63, `agi`= 50, `sta`=135, `inte`= 76, `spi`= 56, `armor`= 929, `min_dmg`= 20, `max_dmg`= 33 WHERE `creature_entry`= 417 AND `level`=34;
+UPDATE `pet_levelstats` SET `str`= 65, `agi`= 51, `sta`=146, `inte`= 62, `spi`= 57, `armor`= 998, `min_dmg`= 21, `max_dmg`= 34 WHERE `creature_entry`= 417 AND `level`=35;
+UPDATE `pet_levelstats` SET `str`= 66, `agi`= 52, `sta`=150, `inte`= 63, `spi`= 59, `armor`= 1067, `min_dmg`= 22, `max_dmg`= 36 WHERE `creature_entry`= 417 AND `level`=36;
+UPDATE `pet_levelstats` SET `str`= 68, `agi`= 53, `sta`=155, `inte`= 64, `spi`= 60, `armor`= 1137, `min_dmg`= 23, `max_dmg`= 37 WHERE `creature_entry`= 417 AND `level`=37;
+UPDATE `pet_levelstats` SET `str`= 70, `agi`= 55, `sta`=159, `inte`= 66, `spi`= 62, `armor`= 1206, `min_dmg`= 24, `max_dmg`= 38 WHERE `creature_entry`= 417 AND `level`=38;
+UPDATE `pet_levelstats` SET `str`= 72, `agi`= 56, `sta`=164, `inte`= 67, `spi`= 63, `armor`= 1275, `min_dmg`= 25, `max_dmg`= 40 WHERE `creature_entry`= 417 AND `level`=39;
+UPDATE `pet_levelstats` SET `str`= 74, `agi`= 57, `sta`=170, `inte`= 70, `spi`= 65, `armor`= 1345, `min_dmg`= 26, `max_dmg`= 41 WHERE `creature_entry`= 417 AND `level`=40;
+UPDATE `pet_levelstats` SET `str`= 77, `agi`= 58, `sta`=163, `inte`= 70, `spi`= 66, `armor`= 1414, `min_dmg`= 27, `max_dmg`= 42 WHERE `creature_entry`= 417 AND `level`=41;
+UPDATE `pet_levelstats` SET `str`= 81, `agi`= 59, `sta`=156, `inte`= 70, `spi`= 67, `armor`= 1484, `min_dmg`= 28, `max_dmg`= 44 WHERE `creature_entry`= 417 AND `level`=42;
+UPDATE `pet_levelstats` SET `str`= 86, `agi`= 61, `sta`=169, `inte`= 72, `spi`= 69, `armor`= 1709, `min_dmg`= 32, `max_dmg`= 50 WHERE `creature_entry`= 417 AND `level`=43;
+UPDATE `pet_levelstats` SET `str`= 91, `agi`= 62, `sta`=169, `inte`= 69, `spi`= 70, `armor`= 1934, `min_dmg`= 37, `max_dmg`= 56 WHERE `creature_entry`= 417 AND `level`=44;
+UPDATE `pet_levelstats` SET `str`= 96, `agi`= 64, `sta`=169, `inte`= 67, `spi`= 72, `armor`= 2159, `min_dmg`= 42, `max_dmg`= 63 WHERE `creature_entry`= 417 AND `level`=45;
+UPDATE `pet_levelstats` SET `str`= 98, `agi`= 65, `sta`=173, `inte`= 77, `spi`= 73, `armor`= 2236, `min_dmg`= 47, `max_dmg`= 71 WHERE `creature_entry`= 417 AND `level`=46;
+UPDATE `pet_levelstats` SET `str`=100, `agi`= 66, `sta`=177, `inte`= 78, `spi`= 75, `armor`= 2314, `min_dmg`= 53, `max_dmg`= 80 WHERE `creature_entry`= 417 AND `level`=47;
+UPDATE `pet_levelstats` SET `str`=102, `agi`= 68, `sta`=181, `inte`= 80, `spi`= 76, `armor`= 2391, `min_dmg`= 59, `max_dmg`= 88 WHERE `creature_entry`= 417 AND `level`=48;
+UPDATE `pet_levelstats` SET `str`=104, `agi`= 69, `sta`=186, `inte`= 82, `spi`= 78, `armor`= 2469, `min_dmg`= 65, `max_dmg`= 97 WHERE `creature_entry`= 417 AND `level`=49;
+UPDATE `pet_levelstats` SET `str`=107, `agi`= 71, `sta`=190, `inte`= 84, `spi`= 80, `armor`= 2547, `min_dmg`= 70, `max_dmg`=105 WHERE `creature_entry`= 417 AND `level`=50;
+UPDATE `pet_levelstats` SET `str`=109, `agi`= 72, `sta`=223, `inte`= 97, `spi`= 81, `armor`= 2624, `min_dmg`= 76, `max_dmg`=114 WHERE `creature_entry`= 417 AND `level`=51;
+UPDATE `pet_levelstats` SET `str`=111, `agi`= 73, `sta`=228, `inte`=100, `spi`= 82, `armor`= 2702, `min_dmg`= 82, `max_dmg`=122 WHERE `creature_entry`= 417 AND `level`=52;
+UPDATE `pet_levelstats` SET `str`=113, `agi`= 75, `sta`=233, `inte`=102, `spi`= 84, `armor`= 2780, `min_dmg`= 88, `max_dmg`=131 WHERE `creature_entry`= 417 AND `level`=53;
+UPDATE `pet_levelstats` SET `str`=115, `agi`= 76, `sta`=207, `inte`= 90, `spi`= 85, `armor`= 2857, `min_dmg`= 93, `max_dmg`=139 WHERE `creature_entry`= 417 AND `level`=54;
+UPDATE `pet_levelstats` SET `str`=117, `agi`= 77, `sta`=227, `inte`= 99, `spi`= 87, `armor`= 2935, `min_dmg`= 99, `max_dmg`=148 WHERE `creature_entry`= 417 AND `level`=55;
+UPDATE `pet_levelstats` SET `str`=120, `agi`= 79, `sta`=248, `inte`=108, `spi`= 89, `armor`= 3013, `min_dmg`=105, `max_dmg`=156 WHERE `creature_entry`= 417 AND `level`=56;
+UPDATE `pet_levelstats` SET `str`=122, `agi`= 80, `sta`=242, `inte`= 95, `spi`=108, `armor`= 3090, `min_dmg`=111, `max_dmg`=165 WHERE `creature_entry`= 417 AND `level`=57;
+UPDATE `pet_levelstats` SET `str`=124, `agi`= 81, `sta`=236, `inte`= 82, `spi`=127, `armor`= 3168, `min_dmg`=116, `max_dmg`=173 WHERE `creature_entry`= 417 AND `level`=58;
+UPDATE `pet_levelstats` SET `str`=127, `agi`= 83, `sta`=230, `inte`= 69, `spi`=147, `armor`= 3246, `min_dmg`=122, `max_dmg`=182 WHERE `creature_entry`= 417 AND `level`=59;
+UPDATE `pet_levelstats` SET `str`=129, `agi`= 85, `sta`=249, `inte`= 70, `spi`=150, `armor`= 3323, `min_dmg`=128, `max_dmg`=190 WHERE `creature_entry`= 417 AND `level`=60;
+UPDATE `pet_levelstats` SET `str`=131, `agi`= 60, `sta`=264, `inte`= 97, `spi`=126, `armor`= 3401, `min_dmg`=134, `max_dmg`=199 WHERE `creature_entry`= 417 AND `level`=61;
+UPDATE `pet_levelstats` SET `str`=133, `agi`= 36, `sta`=279, `inte`=124, `spi`=102, `armor`= 3479, `min_dmg`=140, `max_dmg`=208 WHERE `creature_entry`= 417 AND `level`=62;
+UPDATE `pet_levelstats` SET `str`=135, `agi`= 45, `sta`=279, `inte`=125, `spi`=104, `armor`= 3594, `min_dmg`=145, `max_dmg`=217 WHERE `creature_entry`= 417 AND `level`=63;
+UPDATE `pet_levelstats` SET `str`=138, `agi`= 54, `sta`=279, `inte`=126, `spi`=107, `armor`= 3709, `min_dmg`=151, `max_dmg`=227 WHERE `creature_entry`= 417 AND `level`=64;
+UPDATE `pet_levelstats` SET `str`=140, `agi`= 63, `sta`=279, `inte`=127, `spi`=109, `armor`= 3824, `min_dmg`=157, `max_dmg`=236 WHERE `creature_entry`= 417 AND `level`=65;
+UPDATE `pet_levelstats` SET `str`=143, `agi`= 72, `sta`=279, `inte`=128, `spi`=112, `armor`= 3939, `min_dmg`=163, `max_dmg`=246 WHERE `creature_entry`= 417 AND `level`=66;
+UPDATE `pet_levelstats` SET `str`=145, `agi`= 81, `sta`=279, `inte`=129, `spi`=114, `armor`= 4054, `min_dmg`=169, `max_dmg`=255 WHERE `creature_entry`= 417 AND `level`=67;
+UPDATE `pet_levelstats` SET `str`=148, `agi`= 90, `sta`=279, `inte`=130, `spi`=117, `armor`= 4169, `min_dmg`=175, `max_dmg`=265 WHERE `creature_entry`= 417 AND `level`=68;
+UPDATE `pet_levelstats` SET `str`=150, `agi`= 99, `sta`=279, `inte`=131, `spi`=119, `armor`= 4284, `min_dmg`=181, `max_dmg`=274 WHERE `creature_entry`= 417 AND `level`=69;
+UPDATE `pet_levelstats` SET `str`=153, `agi`=109, `sta`=280, `inte`=133, `spi`=122, `armor`= 4400, `min_dmg`=187, `max_dmg`=284 WHERE `creature_entry`= 417 AND `level`=70;
+UPDATE `pet_levelstats` SET `str`=163, `agi`=102, `sta`=284, `inte`=134, `spi`=134, `armor`= 4779, `min_dmg`=193, `max_dmg`=293 WHERE `creature_entry`= 417 AND `level`=71;
+UPDATE `pet_levelstats` SET `str`=173, `agi`= 95, `sta`=289, `inte`=136, `spi`=146, `armor`= 5158, `min_dmg`=199, `max_dmg`=303 WHERE `creature_entry`= 417 AND `level`=72;
+UPDATE `pet_levelstats` SET `str`=183, `agi`= 88, `sta`=294, `inte`=138, `spi`=159, `armor`= 5538, `min_dmg`=205, `max_dmg`=312 WHERE `creature_entry`= 417 AND `level`=73;
+UPDATE `pet_levelstats` SET `str`=193, `agi`= 81, `sta`=299, `inte`=139, `spi`=171, `armor`= 5917, `min_dmg`=211, `max_dmg`=322 WHERE `creature_entry`= 417 AND `level`=74;
+UPDATE `pet_levelstats` SET `str`=203, `agi`= 74, `sta`=304, `inte`=141, `spi`=183, `armor`= 6297, `min_dmg`=217, `max_dmg`=331 WHERE `creature_entry`= 417 AND `level`=75;
+UPDATE `pet_levelstats` SET `str`=214, `agi`= 67, `sta`=309, `inte`=143, `spi`=196, `armor`= 6676, `min_dmg`=223, `max_dmg`=341 WHERE `creature_entry`= 417 AND `level`=76;
+UPDATE `pet_levelstats` SET `str`=236, `agi`= 72, `sta`=314, `inte`=144, `spi`=200, `armor`= 7056, `min_dmg`=229, `max_dmg`=351 WHERE `creature_entry`= 417 AND `level`=77;
+UPDATE `pet_levelstats` SET `str`=262, `agi`= 78, `sta`=318, `inte`=146, `spi`=203, `armor`= 7298, `min_dmg`=235, `max_dmg`=360 WHERE `creature_entry`= 417 AND `level`=78;
+UPDATE `pet_levelstats` SET `str`=288, `agi`= 84, `sta`=323, `inte`=148, `spi`=206, `armor`= 7540, `min_dmg`=241, `max_dmg`=370 WHERE `creature_entry`= 417 AND `level`=79;
+UPDATE `pet_levelstats` SET `str`=314, `agi`= 90, `sta`=328, `inte`=150, `spi`=209, `armor`= 7782, `min_dmg`=247, `max_dmg`=380 WHERE `creature_entry`= 417 AND `level`=80;
+-- FELGUARD
+UPDATE `pet_levelstats` SET `str`=107, `agi`= 71, `sta`=190, `inte`= 84, `spi`= 80, `armor`= 3494, `min_dmg`=113, `max_dmg`=149 WHERE `creature_entry`=17252 AND `level`=50;
+UPDATE `pet_levelstats` SET `str`=109, `agi`= 72, `sta`=223, `inte`= 97, `spi`= 81, `armor`= 3559, `min_dmg`=122, `max_dmg`=160 WHERE `creature_entry`=17252 AND `level`=51;
+UPDATE `pet_levelstats` SET `str`=111, `agi`= 73, `sta`=228, `inte`=100, `spi`= 82, `armor`= 3624, `min_dmg`=127, `max_dmg`=167 WHERE `creature_entry`=17252 AND `level`=52;
+UPDATE `pet_levelstats` SET `str`=113, `agi`= 75, `sta`=233, `inte`=102, `spi`= 84, `armor`= 3686, `min_dmg`=129, `max_dmg`=169 WHERE `creature_entry`=17252 AND `level`=53;
+UPDATE `pet_levelstats` SET `str`=115, `agi`= 76, `sta`=207, `inte`= 90, `spi`= 85, `armor`= 3750, `min_dmg`=131, `max_dmg`=171 WHERE `creature_entry`=17252 AND `level`=54;
+UPDATE `pet_levelstats` SET `str`=117, `agi`= 77, `sta`=227, `inte`= 99, `spi`= 87, `armor`= 3814, `min_dmg`=133, `max_dmg`=173 WHERE `creature_entry`=17252 AND `level`=55;
+UPDATE `pet_levelstats` SET `str`=120, `agi`= 79, `sta`=248, `inte`=108, `spi`= 89, `armor`= 3878, `min_dmg`=135, `max_dmg`=176 WHERE `creature_entry`=17252 AND `level`=56;
+UPDATE `pet_levelstats` SET `str`=122, `agi`= 80, `sta`=242, `inte`= 95, `spi`=108, `armor`= 4277, `min_dmg`=152, `max_dmg`=201 WHERE `creature_entry`=17252 AND `level`=57;
+UPDATE `pet_levelstats` SET `str`=124, `agi`= 81, `sta`=236, `inte`= 82, `spi`=127, `armor`= 4677, `min_dmg`=170, `max_dmg`=227 WHERE `creature_entry`=17252 AND `level`=58;
+UPDATE `pet_levelstats` SET `str`=127, `agi`= 83, `sta`=230, `inte`= 69, `spi`=147, `armor`= 5077, `min_dmg`=187, `max_dmg`=252 WHERE `creature_entry`=17252 AND `level`=59;
+UPDATE `pet_levelstats` SET `str`=129, `agi`= 85, `sta`=249, `inte`= 70, `spi`=150, `armor`= 5476, `min_dmg`=205, `max_dmg`=278 WHERE `creature_entry`=17252 AND `level`=60;
+UPDATE `pet_levelstats` SET `str`=131, `agi`= 60, `sta`=264, `inte`= 97, `spi`=126, `armor`= 5876, `min_dmg`=222, `max_dmg`=303 WHERE `creature_entry`=17252 AND `level`=61;
+UPDATE `pet_levelstats` SET `str`=133, `agi`= 36, `sta`=279, `inte`=124, `spi`=102, `armor`= 6276, `min_dmg`=240, `max_dmg`=329 WHERE `creature_entry`=17252 AND `level`=62;
+UPDATE `pet_levelstats` SET `str`=135, `agi`= 45, `sta`=279, `inte`=125, `spi`=104, `armor`= 6482, `min_dmg`=244, `max_dmg`=338 WHERE `creature_entry`=17252 AND `level`=63;
+UPDATE `pet_levelstats` SET `str`=138, `agi`= 54, `sta`=279, `inte`=126, `spi`=107, `armor`= 6688, `min_dmg`=249, `max_dmg`=347 WHERE `creature_entry`=17252 AND `level`=64;
+UPDATE `pet_levelstats` SET `str`=140, `agi`= 63, `sta`=279, `inte`=127, `spi`=109, `armor`= 6895, `min_dmg`=254, `max_dmg`=356 WHERE `creature_entry`=17252 AND `level`=65;
+UPDATE `pet_levelstats` SET `str`=143, `agi`= 72, `sta`=279, `inte`=128, `spi`=112, `armor`= 7101, `min_dmg`=259, `max_dmg`=365 WHERE `creature_entry`=17252 AND `level`=66;
+UPDATE `pet_levelstats` SET `str`=145, `agi`= 81, `sta`=279, `inte`=129, `spi`=114, `armor`= 7307, `min_dmg`=264, `max_dmg`=375 WHERE `creature_entry`=17252 AND `level`=67;
+UPDATE `pet_levelstats` SET `str`=148, `agi`= 90, `sta`=279, `inte`=130, `spi`=117, `armor`= 7514, `min_dmg`=269, `max_dmg`=384 WHERE `creature_entry`=17252 AND `level`=68;
+UPDATE `pet_levelstats` SET `str`=150, `agi`= 99, `sta`=279, `inte`=131, `spi`=119, `armor`= 7720, `min_dmg`=274, `max_dmg`=393 WHERE `creature_entry`=17252 AND `level`=69;
+UPDATE `pet_levelstats` SET `str`=153, `agi`=109, `sta`=280, `inte`=133, `spi`=122, `armor`= 7927, `min_dmg`=279, `max_dmg`=402 WHERE `creature_entry`=17252 AND `level`=70;
+UPDATE `pet_levelstats` SET `str`=163, `agi`=102, `sta`=284, `inte`=134, `spi`=134, `armor`= 8537, `min_dmg`=284, `max_dmg`=412 WHERE `creature_entry`=17252 AND `level`=71;
+UPDATE `pet_levelstats` SET `str`=173, `agi`= 95, `sta`=289, `inte`=136, `spi`=146, `armor`= 9148, `min_dmg`=289, `max_dmg`=421 WHERE `creature_entry`=17252 AND `level`=72;
+UPDATE `pet_levelstats` SET `str`=183, `agi`= 88, `sta`=294, `inte`=138, `spi`=159, `armor`= 9758, `min_dmg`=294, `max_dmg`=430 WHERE `creature_entry`=17252 AND `level`=73;
+UPDATE `pet_levelstats` SET `str`=193, `agi`= 81, `sta`=299, `inte`=139, `spi`=171, `armor`=10369, `min_dmg`=299, `max_dmg`=439 WHERE `creature_entry`=17252 AND `level`=74;
+UPDATE `pet_levelstats` SET `str`=203, `agi`= 74, `sta`=304, `inte`=141, `spi`=183, `armor`=10980, `min_dmg`=304, `max_dmg`=448 WHERE `creature_entry`=17252 AND `level`=75;
+UPDATE `pet_levelstats` SET `str`=214, `agi`= 67, `sta`=309, `inte`=143, `spi`=196, `armor`=11590, `min_dmg`=309, `max_dmg`=458 WHERE `creature_entry`=17252 AND `level`=76;
+UPDATE `pet_levelstats` SET `str`=236, `agi`= 72, `sta`=314, `inte`=144, `spi`=200, `armor`=12201, `min_dmg`=314, `max_dmg`=467 WHERE `creature_entry`=17252 AND `level`=77;
+UPDATE `pet_levelstats` SET `str`=262, `agi`= 78, `sta`=318, `inte`=146, `spi`=203, `armor`=12811, `min_dmg`=319, `max_dmg`=476 WHERE `creature_entry`=17252 AND `level`=78;
+UPDATE `pet_levelstats` SET `str`=288, `agi`= 84, `sta`=323, `inte`=148, `spi`=206, `armor`=13422, `min_dmg`=324, `max_dmg`=485 WHERE `creature_entry`=17252 AND `level`=79;
+UPDATE `pet_levelstats` SET `str`=314, `agi`= 90, `sta`=328, `inte`=150, `spi`=209, `armor`=14033, `min_dmg`=329, `max_dmg`=495 WHERE `creature_entry`=17252 AND `level`=80;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_06_12_00.sql b/data/sql/updates/db_world/2017_06_12_00.sql
new file mode 100644
index 0000000000..03fde39023
--- /dev/null
+++ b/data/sql/updates/db_world/2017_06_12_00.sql
@@ -0,0 +1,32 @@
+-- DB update 2017_05_28_00 -> 2017_06_12_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_05_28_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_05_28_00 2017_06_12_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1475503571577105756'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world(`sql_rev`) VALUES ('1475503571577105756');
+DELETE FROM command WHERE name IN ('character delete', 'character deleted list', 'character deleted restore', 'character deleted delete', 'character deleted old', 'character erase');
+INSERT INTO command (name, security, help) VALUES
+('character erase',4,'Syntax: .character erase $name\r\n\r\nDelete character $name. Character finally deleted in case any deleting options.'),
+('character deleted delete', 4, 'Syntax: .character deleted delete #guid|$name\r\n\r\nCompletely deletes the selected characters.\r\nIf $name is supplied, only characters with that string in their name will be deleted, if #guid is supplied, only the character with that GUID will be deleted.'),
+('character deleted list', 3, 'Syntax: .character deleted list [#guid|$name]\r\n\r\nShows a list with all deleted characters.\r\nIf $name is supplied, only characters with that string in their name will be selected, if #guid is supplied, only the character with that GUID will be selected.'),
+('character deleted old', 4, 'Syntax: .character deleted old [#keepDays]\r\n\r\nCompletely deletes all characters with deleted time longer #keepDays. If #keepDays not provided the used value from mangosd.conf option ''CharDelete.KeepDays''. If referenced config option disabled (use 0 value) then command can''t be used without #keepDays.'),
+('character deleted restore', 3, 'Syntax: .character deleted restore #guid|$name [$newname] [#new account]\r\n\r\nRestores deleted characters.\r\nIf $name is supplied, only characters with that string in their name will be restored, if $guid is supplied, only the character with that GUID will be restored.\r\nIf $newname is set, the character will be restored with that name instead of the original one. If #newaccount is set, the character will be restored to specific account character list. This works only with one character!');
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_06_14_00.sql b/data/sql/updates/db_world/2017_06_14_00.sql
new file mode 100644
index 0000000000..cc1db6857a
--- /dev/null
+++ b/data/sql/updates/db_world/2017_06_14_00.sql
@@ -0,0 +1,37 @@
+-- DB update 2017_06_12_00 -> 2017_06_14_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_06_12_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_06_12_00 2017_06_14_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1494246194005123844'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1494246194005123844');
+
+DELETE FROM `areatrigger_involvedrelation` WHERE `id` in (302,1667);
+INSERT INTO `areatrigger_involvedrelation` VALUES (1667,1265);
+
+
+DELETE FROM `areatrigger_scripts` WHERE `entry` = 302;
+INSERT INTO `areatrigger_scripts` VALUES (302,'at_sentry_point');
+
+UPDATE `creature_template` SET `ScriptName` = 'npc_archmage_tervosh' WHERE `entry` = 4967;
+
+DELETE FROM `creature_text` WHERE `entry` = 4967 AND `groupid` = 0 and `id` = 0;
+INSERT INTO `creature_text` VALUES (4967, 0, 0, 'Go with grace, and may the Lady\'s magic protect you.', 12, 0, 100, 0, 0, 0, 1751, 0, 'SAY1');
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_06_23_00.sql b/data/sql/updates/db_world/2017_06_23_00.sql
new file mode 100644
index 0000000000..536d598f1a
--- /dev/null
+++ b/data/sql/updates/db_world/2017_06_23_00.sql
@@ -0,0 +1,33 @@
+-- DB update 2017_06_14_00 -> 2017_06_23_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_06_14_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_06_14_00 2017_06_23_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1498162085802969000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1498162085802969000');
+
+SET @ENTRY := 7207;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,19,0,100,0,2608,0,0,0,80,@ENTRY*100+00,2,0,0,0,0,1,0,0,0,0,0,0,0,"Doc Mixilpixil - On Quest '' Taken - Run Script"),
+(@ENTRY,0,1,0,40,0,100,0,3,7207,0,0,15,2608,0,0,0,0,0,7,0,0,0,0,0,0,0,"Doc Mixilpixil - On Waypoint 3 Reached - Quest Credit ''"),
+(@ENTRY,0,2,0,22,0,100,1,61,0,0,0,80,@ENTRY*100+00,0,0,0,0,0,1,0,0,0,0,0,0,0,"Doc Mixilpixil - Received Emote 61 - Run Script (No Repeat)");
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_06_27_00.sql b/data/sql/updates/db_world/2017_06_27_00.sql
new file mode 100644
index 0000000000..2588476362
--- /dev/null
+++ b/data/sql/updates/db_world/2017_06_27_00.sql
@@ -0,0 +1,34 @@
+-- DB update 2017_06_23_00 -> 2017_06_27_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_06_23_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_06_23_00 2017_06_27_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1498574003535346400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1498574003535346400');
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(25342,25343) AND `source_type`=0 AND `id`>2;
+UPDATE `smart_scripts` SET `event_flags`=1 WHERE `entryorguid` IN(25342,25343) AND `source_type`=0 AND `id`=2 AND `link`=3;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(25342, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 50, 182071, 30, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Spellhit \'Ragefist\'s Torch\' - Spawn GO Small Chapel Fire'),
+(25343, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 50, 182071, 30, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Spellhit \'Ragefist\'s Torch\' - Spawn GO Small Chapel Fire'),
+(25342, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 30000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Spellhit \'Ragefist\'s Torch\' - Despawn after 30 seconds'),
+(25343, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 30000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Spellhit \'Ragefist\'s Torch\' - Despawn after 30 seconds');
+UPDATE `creature_template_addon` SET `auras`='48602' WHERE `entry`=27292;
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_06_29_00.sql b/data/sql/updates/db_world/2017_06_29_00.sql
new file mode 100644
index 0000000000..1d00520bd6
--- /dev/null
+++ b/data/sql/updates/db_world/2017_06_29_00.sql
@@ -0,0 +1,31 @@
+-- DB update 2017_06_27_00 -> 2017_06_29_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_06_27_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_06_27_00 2017_06_29_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1498768729664877100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1498768729664877100');
+
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (43369, -43369, -68347);
+INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
+(43369, 68347, 0, "Worg Disguise"),
+(-43369, -68347, 0, "Worg Disguise"),
+(-68347, -43369, 0, "Worg Disguise");
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_08_18_00.sql b/data/sql/updates/db_world/2017_08_18_00.sql
new file mode 100644
index 0000000000..bee4471ca1
--- /dev/null
+++ b/data/sql/updates/db_world/2017_08_18_00.sql
@@ -0,0 +1,27 @@
+-- DB update 2017_06_29_00 -> 2017_08_18_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_06_29_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_06_29_00 2017_08_18_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1498835613715251400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1498835613715251400');
+
+UPDATE `creature_template` SET `modelid1` = '6485' WHERE `entry` = '7780';
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_08_18_01.sql b/data/sql/updates/db_world/2017_08_18_01.sql
new file mode 100644
index 0000000000..e2479f25f4
--- /dev/null
+++ b/data/sql/updates/db_world/2017_08_18_01.sql
@@ -0,0 +1,34 @@
+-- DB update 2017_08_18_00 -> 2017_08_18_01
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_08_18_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_08_18_00 2017_08_18_01 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1499101625045878500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1499101625045878500');
+
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (46337, 'spell_gen_crab_disguise');
+UPDATE `creature_template` SET `unit_class` = 8 WHERE `entry` = 25863;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(25863, 0, 0, 0, 4, 0, 100, 0, 1000, 1000, 1800000, 1800000, 11, 184, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Twilight Firesworn - On Aggro - Cast \'Fire Shield\''),
+(25863, 0, 1, 0, 0, 0, 100, 0, 0, 0, 3400, 5400, 11, 20793, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Twilight Firesworn - In Combat CMC - Cast \'Fireball\''),
+(25863, 0, 2, 0, 2, 0, 100, 1, 0, 15, 0, 0, 25, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Twilight Firesworn - Between 0-15% Health - Flee For Assist (No Repeat)');
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_08_18_02.sql b/data/sql/updates/db_world/2017_08_18_02.sql
new file mode 100644
index 0000000000..6dea4971f9
--- /dev/null
+++ b/data/sql/updates/db_world/2017_08_18_02.sql
@@ -0,0 +1,30 @@
+-- DB update 2017_08_18_01 -> 2017_08_18_02
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_08_18_01';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_08_18_01 2017_08_18_02 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1499115152422618300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1499115152422618300');
+
+UPDATE `quest_template_addon` SET `SpecialFlags` = '0' WHERE `ID` = '338';
+UPDATE `quest_template_addon` SET `SpecialFlags` = '0' WHERE `ID` = '339';
+UPDATE `quest_template_addon` SET `SpecialFlags` = '0' WHERE `ID` = '340';
+UPDATE `quest_template_addon` SET `SpecialFlags` = '0' WHERE `ID` = '341';
+UPDATE `quest_template_addon` SET `SpecialFlags` = '0' WHERE `ID` = '342';--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_08_18_03.sql b/data/sql/updates/db_world/2017_08_18_03.sql
new file mode 100644
index 0000000000..01aa65afdd
--- /dev/null
+++ b/data/sql/updates/db_world/2017_08_18_03.sql
@@ -0,0 +1,135 @@
+-- DB update 2017_08_18_02 -> 2017_08_18_03
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_08_18_02';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_08_18_02 2017_08_18_03 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1499118515042687600'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1499118515042687600');
+
+-- D.E.T.H.A TEXT AND SAI
+DELETE FROM `creature_text` WHERE `entry` IN (25808, 25809, 25819, 25812, 25811, 25810, 25838) AND `groupid` = 0;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(25808,0,0,' Do you think us fools! You\'re covered in animal blood!',12,0,100,5,4000,0,0,0,''),
+(25808,0,1,' BUTCHER! DIE!',12,0,100,5,4000,0,0,0,''),
+(25808,0,2,' Calf killer! Murderer! You will pay for this!',12,0,100,5,4000,0,0,0,''),
+--
+(25809,0,0,' Do you think us fools! You\'re covered in animal blood!',12,0,100,5,4000,0,0,0,''),
+(25809,0,1,' BUTCHER! DIE!',12,0,100,5,4000,0,0,0,''),
+(25809,0,2,' Calf killer! Murderer! You will pay for this!',12,0,100,5,4000,0,0,0,''),
+--
+(25812,0,0,' Do you think us fools! You\'re covered in animal blood!',12,0,100,5,4000,0,0,0,''),
+(25812,0,1,' BUTCHER! DIE!',12,0,100,5,4000,0,0,0,''),
+(25812,0,2,' Calf killer! Murderer! You will pay for this!',12,0,100,5,4000,0,0,0,''),
+--
+(25811,0,0,' Do you think us fools! You\'re covered in animal blood!',12,0,100,5,4000,0,0,0,''),
+(25811,0,1,' BUTCHER! DIE!',12,0,100,5,4000,0,0,0,''),
+(25811,0,2,' Calf killer! Murderer! You will pay for this!',12,0,100,5,4000,0,0,0,''),
+--
+(25810,0,0,' Do you think us fools! You\'re covered in animal blood!',12,0,100,5,4000,0,0,0,''),
+(25810,0,1,' BUTCHER! DIE!',12,0,100,5,4000,0,0,0,''),
+(25810,0,2,' Calf killer! Murderer! You will pay for this!',12,0,100,5,4000,0,0,0,''),
+--
+(25838,0,0,' Do you think us fools! You\'re covered in animal blood!',12,0,100,5,4000,0,0,0,''),
+(25838,0,1,' BUTCHER! DIE!',12,0,100,5,4000,0,0,0,''),
+(25838,0,2,' Calf killer! Murderer! You will pay for this!',12,0,100,5,4000,0,0,0,''),
+--
+(25819,0,0,' Do you think us fools! You\'re covered in animal blood!',12,0,100,5,4000,0,0,0,''),
+(25819,0,1,' BUTCHER! DIE!',12,0,100,5,4000,0,0,0,''),
+(25819,0,2,' Calf killer! Murderer! You will pay for this!',12,0,100,5,4000,0,0,0,'');
+
+SET @ENTRY := 25808;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"D.E.H.T.A. Enforcer - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,10,0,100,0,1,20,0,0,49,2,0,0,0,0,0,25,20,1,0,0,0,0,0,"D.E.H.T.A. Enforcer - Within 1-20 Range Out of Combat LoS - Start Attacking");
+
+DELETE FROM `creature_formations` WHERE `leaderGUID`= 132974;
+INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
+(132974,132974,0,0,2,0,0),
+(132974,132976,0,0,2,0,0);
+
+SET @ENTRY := 25819;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"D.E.H.T.A. Enforcer - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,10,0,100,0,1,20,0,0,49,0,0,0,0,0,0,25,20,1,0,0,0,0,0,"D.E.H.T.A. Enforcer - Within 1-20 Range Out of Combat LoS - Start Attacking"),
+(@ENTRY,0,2,0,4,0,100,0,0,0,0,0,91,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"D.E.H.T.A. Enforcer - On Aggro - Remove Flag Standstate Sit Down"),
+(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,90,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"D.E.H.T.A. Enforcer - On Reset - Set Flag Standstate Sit Down");
+
+SET @ENTRY := 25809;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arch Druid Lathorius - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,4,0,100,0,0,0,0,0,83,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arch Druid Lathorius - On Aggro - Remove Npc Flags Gossip & Questgiver"),
+(@ENTRY,0,2,0,10,0,100,0,1,20,0,0,49,0,0,0,0,0,0,25,20,1,0,0,0,0,0,"Arch Druid Lathorius - Within 1-20 Range Out of Combat LoS - Start Attacking"),
+(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,81,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arch Druid Lathorius - On Reset - Set Npc Flags Gossip & Questgiver");
+
+SET @ENTRY := 25811;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Zaza - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,4,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Zaza - On Aggro - Remove Npc Flag Questgiver"),
+(@ENTRY,0,2,0,10,0,100,0,1,20,0,0,49,0,0,0,0,0,0,25,20,1,0,0,0,0,0,"Zaza - Within 1-20 Range Out of Combat LoS - Start Attacking"),
+(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,81,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Zaza - On Reset - Set Npc Flag Questgiver");
+
+SET @ENTRY := 25810;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Cenius - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,4,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Cenius - On Aggro - Remove Npc Flag Questgiver"),
+(@ENTRY,0,2,0,10,0,100,0,1,20,0,0,49,0,0,0,0,0,0,25,20,1,0,0,0,0,0,"Hierophant Cenius - Within 1-20 Range Out of Combat LoS - Start Attacking"),
+(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,81,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Cenius - On Reset - Set Npc Flag Questgiver");
+
+SET @ENTRY := 25812;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Killinger the Den Watcher - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,4,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Killinger the Den Watcher - On Aggro - Remove Npc Flag Questgiver"),
+(@ENTRY,0,2,0,10,0,100,0,1,20,0,0,49,0,0,0,0,0,0,25,20,1,0,0,0,0,0,"Killinger the Den Watcher - Within 1-20 Range Out of Combat LoS - Start Attacking"),
+(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,81,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Killinger the Den Watcher - On Reset - Set Npc Flag Questgiver");
+
+SET @ENTRY := 25838;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Liandra - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,4,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Liandra - On Aggro - Remove Npc Flag Questgiver"),
+(@ENTRY,0,2,0,10,0,100,0,1,25,0,0,49,0,0,0,0,0,0,25,25,1,0,0,0,0,0,"Hierophant Liandra - Within 1-25 Range Out of Combat LoS - Start Attacking"),
+(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,81,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Liandra - On Reset - Set Npc Flag Questgiver"),
+(@ENTRY,0,4,0,4,0,100,0,0,0,0,0,91,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Liandra - On Aggro - Remove Flag Standstate Sit Down"),
+(@ENTRY,0,5,0,25,0,100,0,0,0,0,0,90,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hierophant Liandra - On Reset - Set Flag Standstate Sit Down");
+
+SET @ENTRY := 25839;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,0,5000,8000,60000,65000,11,5915,0,0,0,0,0,1,0,0,0,0,0,0,0,"Northsea Mercenary - In Combat - Cast 'Crazed'");
+
+SET @ENTRY := 25844;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,0,5000,8000,60000,65000,11,5915,0,0,0,0,0,1,0,0,0,0,0,0,0,"Northsea Thug - In Combat - Cast 'Crazed'");--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_08_19_00.sql b/data/sql/updates/db_world/2017_08_19_00.sql
new file mode 100644
index 0000000000..d171c2fe26
--- /dev/null
+++ b/data/sql/updates/db_world/2017_08_19_00.sql
@@ -0,0 +1,37 @@
+-- DB update 2017_08_18_03 -> 2017_08_19_00
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_08_18_03';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_08_18_03 2017_08_19_00 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1503072683748672200'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1503072683748672200');
+-- 'Clues in the Thicket' (Quest ID 9971) RewardText typo (Is it was/Is it what)
+UPDATE `quest_template`
+ SET `OfferRewardText`="So, I was right. That was the corpse of one of the Broken? And you can confirm that there was a strange object on the ground next to him?$B$BThis doesn't make any sense. What would one of the Broken be doing here? And what is that thing it had with him?$B$BIs it what caused all of this death?"
+ WHERE `ID`=9971;
+-- `An Unseen Hand` (Quest ID 10013) RewardText typo (2x "it to me")
+UPDATE `quest_template`
+ SET `OfferRewardText`="<Rokag takes the plans from you and looks them over.>$B$BSo Kaide was right! Those fel orc scum are up to something. I never would've guessed they were colluding with the blood elves, though.$B$BAccording to this map, the fel orcs are to keep us busy... but why? This is disturbing news, $N. You were correct in bringing it to me right away."
+ WHERE `ID` = 10013;
+-- 'Evil Draws Near' (Quest ID 10923) Progress typo (ben/been)
+UPDATE `quest_template`
+ SET `RequestItemsText` = "Has Teribus the Cursed been purged from the skies of Terokkar?"
+ WHERE `ID` = 10923;
+ --
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_08_19_01.sql b/data/sql/updates/db_world/2017_08_19_01.sql
new file mode 100644
index 0000000000..7ded5a4442
--- /dev/null
+++ b/data/sql/updates/db_world/2017_08_19_01.sql
@@ -0,0 +1,29 @@
+-- DB update 2017_08_19_00 -> 2017_08_19_01
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_08_19_00';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_08_19_00 2017_08_19_01 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1495461970084153283'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1495461970084153283');
+
+-- set Warbear Matriarch (NPC 29918) AI to PetAI
+UPDATE `creature_template` SET `AIName`= 'PetAI', `mindmg`=1360, `maxdmg`=1840, `dmg_multiplier`=1 WHERE `entry`= 29918;
+
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/db_world/2017_08_19_02.sql b/data/sql/updates/db_world/2017_08_19_02.sql
new file mode 100644
index 0000000000..a3e5ae1846
--- /dev/null
+++ b/data/sql/updates/db_world/2017_08_19_02.sql
@@ -0,0 +1,214 @@
+-- DB update 2017_08_19_01 -> 2017_08_19_02
+DROP PROCEDURE IF EXISTS `updateDb`;
+DELIMITER //
+CREATE PROCEDURE updateDb ()
+proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
+SELECT COUNT(*) INTO @COLEXISTS
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2017_08_19_01';
+IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
+START TRANSACTION;
+ALTER TABLE version_db_world CHANGE COLUMN 2017_08_19_01 2017_08_19_02 bit;
+SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1500226875532818300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
+--
+-- START UPDATING QUERIES
+--
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1500226875532818300');
+
+-- Brewfest Building
+DELETE FROM `gameobject` WHERE `id`=186737;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(66860, 186737, 0, 1, 1, -5188.76, -594.416, 397.176, -1.18682, 0, 0, -0.559193, 0.829038, 120, 255, 1, 12340),
+(66861, 186737, 0, 1, 1, -5140.78, -578.32, 397.176, -2.35619, 0, 0, -0.923879, 0.382686, 120, 255, 1, 12340),
+(66862, 186737, 0, 1, 1, -5155.75, -635.502, 397.177, 1.79769, 0, 0, 0.782608, 0.622515, 120, 255, 1, 12340);
+
+DELETE FROM `gameobject` WHERE `id`=186717;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(31406, 186717, 0, 1, 1, -5668.71, -475.584, 396.357, -1.67552, 0, 0, -0.743146, 0.669129, 180, 100, 1, 0),
+(31404, 186717, 0, 1, 1, -5620.1, -473.021, 396.96, -0.244346, 0, 0, -0.121869, 0.992546, 180, 100, 1, 0),
+(31403, 186717, 0, 1, 1, -5610.05, -457.484, 405.302, -0.366519, 0, 0, -0.182235, 0.983255, 180, 100, 1, 0),
+(31416, 186717, 0, 1, 1, -5218.61, -491.613, 387.889, 1.76278, 0, 0, 0.771624, 0.636079, 180, 100, 1, 0),
+(31415, 186717, 0, 1, 1, -5252.01, -477.25, 386.624, -1.37881, 0, 0, -0.636078, 0.771625, 180, 100, 1, 0),
+(31417, 186717, 0, 1, 1, -5236.78, -635.825, 421.801, 0.558505, 0, 0, 0.275637, 0.961262, 180, 100, 1, 0),
+(31418, 186717, 0, 1, 1, -5207.18, -535.754, 393.795, 1.78024, 0, 0, 0.777147, 0.629319, 180, 100, 1, 0),
+(31420, 186717, 0, 1, 1, -5205.45, -479.062, 389.146, 2.09439, 0, 0, 0.866024, 0.500002, 180, 100, 1, 0),
+(31422, 186717, 0, 1, 1, -5214.63, -514.152, 389.732, 1.74533, 0, 0, 0.766045, 0.642787, 180, 100, 1, 0),
+(31428, 186717, 0, 1, 1, -5189.3, -525.506, 392.525, 1.98968, 0, 0, 0.838672, 0.544637, 180, 100, 1, 0),
+(31429, 186717, 0, 1, 1, -5199.62, -432.817, 386.331, 2.72271, 0, 0, 0.978147, 0.207914, 180, 100, 1, 0),
+(31434, 186717, 0, 1, 1, -5197.21, -505.307, 388.598, 2.00713, 0, 0, 0.843392, 0.537299, 180, 100, 1, 0),
+(31438, 186717, 0, 1, 1, -5180.2, -615.989, 397.176, 0.418879, 0, 0, 0.207912, 0.978148, 180, 100, 1, 0),
+(31452, 186717, 0, 1, 1, -5134.11, -586.723, 397.176, -2.80998, 0, 0, -0.986286, 0.165048, 180, 100, 1, 0),
+(31455, 186717, 0, 1, 1, -5132.81, -616.437, 397.362, 2.49582, 0, 0, 0.948324, 0.317305, 180, 100, 1, 0),
+(31463, 186717, 0, 1, 1, -5139.14, -632.325, 397.179, 1.69297, 0, 0, 0.748956, 0.66262, 180, 100, 1, 0),
+(31467, 186717, 0, 1, 1, -5137.49, -622.278, 397.399, 2.33874, 0, 0, 0.920505, 0.390732, 180, 100, 1, 0),
+(31472, 186717, 0, 1, 1, -5191.74, -736.322, 447.284, 0.837758, 0, 0, 0.406737, 0.913545, 180, 100, 1, 0),
+(31512, 186717, 0, 1, 1, -5091.12, -734.743, 469.91, -1.48353, 0, 0, -0.67559, 0.737277, 180, 100, 1, 0),
+(31603, 186717, 0, 1, 1, -4920.19, -940.244, 501.572, -1.50098, 0, 0, -0.681997, 0.731355, 180, 100, 1, 0),
+(31604, 186717, 0, 1, 1, -4905.16, -956.521, 501.47, 2.9147, 0, 0, 0.993572, 0.113203, 180, 100, 1, 0),
+(31610, 186717, 0, 1, 1, -4960.08, -1200.38, 501.659, 0.680678, 0, 0, 0.333807, 0.942642, 180, 100, 1, 0),
+(31611, 186717, 0, 1, 1, -4983.49, -1204.28, 501.669, 2.32129, 0, 0, 0.91706, 0.398748, 180, 100, 1, 0),
+(31612, 186717, 0, 1, 1, -4969.79, -1222.8, 501.67, -0.785398, 0, 0, -0.382683, 0.92388, 180, 100, 1, 0),
+(31613, 186717, 0, 1, 1, -4678.11, -968.152, 501.659, -2.49582, 0, 0, -0.948324, 0.317305, 180, 100, 1, 0),
+(31614, 186717, 0, 1, 1, -4673.02, -935.651, 501.659, 2.23402, 0, 0, 0.898794, 0.438372, 180, 100, 1, 0),
+(31615, 186717, 0, 1, 1, -4649.49, -972.011, 501.66, -0.872665, 0, 0, -0.422618, 0.906308, 180, 100, 1, 0),
+(31616, 186717, 0, 1, 1, -4712.87, -1213.87, 501.659, 2.35619, 0, 0, 0.923879, 0.382686, 180, 100, 1, 0),
+(31617, 186717, 0, 1, 1, -4698.13, -1246.37, 501.659, -2.3911, 0, 0, -0.930417, 0.366502, 180, 100, 1, 0),
+(31618, 186717, 0, 1, 1, -4675.36, -1228.17, 501.659, 0.663225, 0, 0, 0.325568, 0.945519, 180, 100, 1, 0),
+(31620, 186717, 0, 1, 1, -9114.49, 342.775, 93.6672, 3.00197, 0, 0, 0.997564, 0.0697546, 180, 100, 1, 0),
+(31621, 186717, 0, 1, 1, -9137.06, 372.115, 90.5726, 1.46608, 0, 0, 0.669132, 0.743144, 180, 100, 1, 0),
+(31622, 186717, 0, 1, 1, -9137.36, 389.879, 90.9751, 0.366519, 0, 0, 0.182235, 0.983255, 180, 100, 1, 0),
+(31623, 186717, 0, 1, 1, -9124.61, 357.999, 92.9819, -2.37365, 0, 0, -0.927184, 0.374606, 180, 100, 1, 0),
+(31624, 186717, 0, 1, 1, -9150.72, 357.5, 89.9023, 2.80998, 0, 0, 0.986286, 0.165048, 180, 100, 1, 0),
+(31625, 186717, 0, 1, 1, -9128.24, 325.459, 93.502, 1.85005, 0, 0, 0.798636, 0.601815, 180, 100, 1, 0),
+(31626, 186717, 0, 1, 1, -9184.33, 335, 82.3169, -1.25664, 0, 0, -0.587786, 0.809016, 180, 100, 1, 0),
+(26217, 186717, 1, 1, 1, 1959.5, -4694.7, 26.7062, 2.67035, 0, 0, 0.972369, 0.233447, 180, 100, 1, 0),
+(26223, 186717, 1, 1, 1, 1934.4, -4678.79, 27.6517, 2.00713, 0, 0, 0.843392, 0.537299, 180, 100, 1, 0),
+(30370, 186717, 1, 1, 1, 1629.97, -4407.76, 16.2626, -3.10669, 0, 0, -0.999848, 0.0174505, 180, 100, 1, 0),
+(30382, 186717, 1, 1, 1, 1653.43, -4426.82, 16.7964, 2.26893, 0, 0, 0.906308, 0.422617, 180, 100, 1, 0),
+(31120, 186717, 1, 1, 1, 1655.14, -4395.29, 21.8413, 0.279253, 0, 0, 0.139173, 0.990268, 180, 100, 1, 0),
+(31637, 186717, 1, 1, 1, 1906.31, -4287.08, 30.3921, 2.46091, 0, 0, 0.942641, 0.333809, 180, 100, 1, 0),
+(31638, 186717, 1, 1, 1, 1938.49, -4297.15, 24.7353, -2.14675, 0, 0, -0.878816, 0.477161, 180, 100, 1, 0),
+(31639, 186717, 1, 1, 1, 1925.98, -4299.09, 24.9998, -1.29154, 0, 0, -0.601814, 0.798637, 180, 100, 1, 0),
+(31663, 186717, 1, 1, 1, 1571.62, -4201.77, 42.7313, -0.907571, 0, 0, -0.438371, 0.898794, 180, 100, 1, 0),
+(31664, 186717, 1, 1, 1, 1584.6, -4197.95, 41.3191, -1.55334, 0, 0, -0.700908, 0.713252, 180, 100, 1, 0),
+(31665, 186717, 1, 1, 1, 1555.37, -4175.87, 40.5492, 2.77507, 0, 0, 0.983255, 0.182237, 180, 100, 1, 0),
+(31688, 186717, 1, 1, 1, 1349.71, -4357.94, 26.9592, -0.593412, 0, 0, -0.292372, 0.956305, 120, 255, 1, 0),
+(31704, 186717, 1, 1, 1, 1294.07, -4439.13, 27.457, 1.8675, 0, 0, 0.803856, 0.594824, 180, 100, 1, 0),
+(31706, 186717, 1, 1, 1, 1294.49, -4412.17, 26.6057, 1.01229, 0, 0, 0.484809, 0.87462, 180, 100, 1, 0),
+(31710, 186717, 1, 1, 1, 1305.78, -4408.33, 26.0013, -1.309, 0, 0, -0.608763, 0.793352, 180, 100, 1, 0),
+(31711, 186717, 1, 1, 1, 1308.47, -4448.67, 26.1855, -1.27409, 0, 0, -0.594823, 0.803857, 180, 100, 1, 0),
+(31714, 186717, 1, 1, 1, 1309.91, -4371.14, 27.8511, -0.820305, 0, 0, -0.398749, 0.91706, 180, 100, 1, 0),
+(31716, 186717, 1, 1, 1, 1318.33, -4549.21, 23.3389, -1.53589, 0, 0, -0.694658, 0.71934, 180, 100, 1, 0),
+(31717, 186717, 1, 1, 1, 1314.64, -4599.17, 24.5226, -1.11701, 0, 0, -0.529919, 0.848048, 180, 100, 1, 0),
+(31719, 186717, 1, 1, 1, 1277.15, -4417.56, 26.4655, 2.75762, 0, 0, 0.981627, 0.190809, 180, 100, 1, 0),
+(31720, 186717, 1, 1, 1, 1227.34, -4433.46, 24.402, 1.81514, 0, 0, 0.78801, 0.615662, 180, 100, 1, 0),
+(31735, 186717, 1, 1, 1, 1161.78, -4398.23, 25.272, -1.71042, 0, 0, -0.754709, 0.65606, 180, 100, 1, 0),
+(31737, 186717, 1, 1, 1, 1176.38, -4300.89, 21.1914, 0.383972, 0, 0, 0.190809, 0.981627, 180, 100, 1, 0),
+(31742, 186717, 1, 1, 1, 1212.8, -4272.35, 21.0265, -2.14675, 0, 0, -0.878816, 0.477161, 180, 100, 1, 0),
+(31752, 186717, 1, 1, 1, 1218.07, -4278.28, 21.0851, -2.44346, 0, 0, -0.939692, 0.342021, 180, 100, 1, 0),
+(31754, 186717, 1, 1, 1, 1205.74, -4268.39, 21.0905, -1.88496, 0, 0, -0.809018, 0.587783, 180, 100, 1, 0),
+(31755, 186717, 1, 1, 1, 1198.63, -4266.14, 21.1134, -1.51844, 0, 0, -0.688356, 0.725373, 180, 100, 1, 0),
+(31764, 186717, 1, 1, 1, 1100.76, -4429.74, 20.5644, 2.21657, 0, 0, 0.894935, 0.446197, 180, 100, 1, 0),
+(31873, 186717, 1, 1, 1, -1418.73, 102.123, 14.946, -2.05949, 0, 0, -0.857168, 0.515037, 180, 100, 1, 0),
+(31880, 186717, 1, 1, 1, -1284.12, 120.319, 131.312, -0.907571, 0, 0, -0.438371, 0.898794, 180, 100, 1, 0),
+(31881, 186717, 1, 1, 1, -1291.39, 153.72, 129.813, -1.39626, 0, 0, -0.642786, 0.766046, 180, 100, 1, 0),
+(31882, 186717, 1, 1, 1, -1319.69, 185.807, 59.8067, 2.75762, 0, 0, 0.981627, 0.190809, 180, 100, 1, 0),
+(31883, 186717, 1, 1, 1, -1273.6, 211.756, 59.5917, 0.506145, 0, 0, 0.25038, 0.968148, 180, 100, 1, 0),
+(31884, 186717, 1, 1, 1, -1296.11, 219.047, 58.7385, -1.29154, 0, 0, -0.601814, 0.798637, 180, 100, 1, 0),
+(31885, 186717, 1, 1, 1, -1250.5, 232.533, 41.1638, 1.43117, 0, 0, 0.656059, 0.75471, 180, 100, 1, 0),
+(31920, 186717, 0, 1, 1, 1701.79, 242.017, 62.5471, -2.63545, 0, 0, -0.968148, 0.250379, 180, 100, 1, 0),
+(31921, 186717, 0, 1, 1, 1838.35, 235.119, 60.4209, 1.6057, 0, 0, 0.719339, 0.694659, 180, 100, 1, 0),
+(31922, 186717, 0, 1, 1, 1822.31, 259.144, 59.8849, -2.1293, 0, 0, -0.874619, 0.48481, 180, 100, 1, 0),
+(31923, 186717, 0, 1, 1, 1815.78, 218.117, 59.7101, 1.50098, 0, 0, 0.681997, 0.731355, 180, 100, 1, 0),
+(31924, 186717, 0, 1, 1, 1919.1, 246.858, 49.9504, 0.698132, 0, 0, 0.34202, 0.939693, 180, 100, 1, 0),
+(31925, 186717, 0, 1, 1, 1889.78, 227.193, 56.9169, 0.20944, 0, 0, 0.104529, 0.994522, 180, 100, 1, 0),
+(32290, 186717, 0, 1, 1, 1811.14, 316.887, 70.8147, 1.81514, 0, 0, 0.78801, 0.615662, 180, 100, 1, 0),
+(81075, 186717, 530, 1, 1, -1756.52, 5499.92, -12.4281, -2.07694, 0, 0, -0.861629, 0.507539, 180, 255, 1, 0),
+(81076, 186717, 530, 1, 1, -1791.72, 5550.14, -12.4281, -1.22173, 0, 0, -0.573576, 0.819152, 180, 255, 1, 0),
+(81077, 186717, 530, 1, 1, -1996.52, 5442.87, -12.4281, -1.83259, 0, 0, -0.793352, 0.608764, 180, 255, 1, 0),
+(81078, 186717, 530, 1, 1, -1884.83, 5488.84, -12.4281, -1.309, 0, 0, -0.608763, 0.793352, 180, 255, 1, 0),
+(81079, 186717, 530, 1, 1, -1869.96, 5574.38, -12.4281, -2.05949, 0, 0, -0.857168, 0.515037, 180, 255, 1, 0),
+(81080, 186717, 530, 1, 1, -1911.65, 5571.59, -12.4281, -1.39626, 0, 0, -0.642786, 0.766046, 180, 255, 1, 0),
+(81081, 186717, 530, 1, 1, -1932.64, 5562.31, -12.4281, -1.309, 0, 0, -0.608763, 0.793352, 180, 255, 1, 0),
+(59177, 186717, 530, 1, 1, -4008.29, -11857.1, 0.135722, 5.47893, 0, 0, 0.391377, -0.92023, 300, 0, 1, 0),
+(59178, 186717, 530, 1, 1, -4002.56, -11851, 0.205429, 5.13728, 0, 0, 0.542116, -0.840304, 300, 0, 1, 0),
+(59179, 186717, 1, 1, 1, 9962.87, 2218.32, 1329.82, 1.77101, 0, 0, 0.774235, 0.632899, 300, 0, 1, 0),
+(59180, 186717, 1, 1, 1, 9963.64, 2192.59, 1328.52, 4.74374, 0, 0, 0.695936, -0.718104, 300, 0, 1, 0),
+(59183, 186717, 530, 1, 1, 9319.23, -7265.19, 13.7578, 2.02761, 0, 0, 0.848849, 0.528635, 300, 0, 1, 0),
+(59184, 186717, 530, 1, 1, 9310.25, -7291.41, 14.4908, 2.53027, 0, 0, 0.953648, 0.300924, 300, 0, 1, 0),
+(66863, 186717, 0, 1, 1, -5209.84, -459.363, 386.537, 2.56563, 0, 0, 0.958819, 0.284016, 120, 255, 1, 12340),
+(66864, 186717, 0, 1, 1, -5226.54, -479.026, 386.534, 2.23402, 0, 0, 0.898793, 0.438373, 120, 255, 1, 12340),
+(66865, 186717, 0, 1, 1, -5233.38, -482.264, 386.337, 1.91986, 0, 0, 0.819152, 0.573577, 120, 255, 1, 12340),
+(66866, 186717, 0, 1, 1, -5206.92, -452.243, 386.808, 3.01941, 0, 0, 0.998135, 0.0610518, 120, 255, 1, 12340);
+
+DELETE FROM `gameobject` WHERE `id`=180052;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(13840, 180052, 0, 1, 1, -9583.73, 38.0032, 60.1551, 0.139626, 0, 0, 0.0697563, 0.997564, 180, 100, 1, 0),
+(66867, 180052, 0, 1, 1, -5175.3, -625.165, 397.176, 2.91469, 0, 0, 0.993571, 0.113208, 120, 255, 1, 12340);
+
+DELETE FROM `gameobject` WHERE `id`=186217;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(66868, 186217, 0, 1, 1, -5208.21, -456.072, 386.746, 2.70526, 0, 0, 0.976295, 0.216442, 120, 255, 1, 12340),
+(66869, 186217, 0, 1, 1, -5230.03, -480.293, 386.4, 2.1293, 0, 0, 0.874619, 0.48481, 120, 255, 1, 12340);
+
+DELETE FROM `gameobject` WHERE `id`=180026;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(13895, 180026, 0, 1, 1, -9515.77, 144.288, 59.698, -0.575959, 0, 0, -0.284016, 0.95882, 180, 100, 1, 0),
+(13829, 180026, 0, 1, 1, -9525.46, 71.1421, 58.898, 2.96706, 0, 0, 0.996195, 0.0871556, 180, 100, 1, 0),
+(31878, 180026, 1, 1, 1, -1461.98, 170.177, -7.74639, -0.122173, 0, 0, -0.0610485, 0.998135, 180, 100, 1, 0),
+(31914, 180026, 1, 1, 1, -1589.68, 101.771, -10.5788, -1.64061, 0, 0, -0.731354, 0.681998, 180, 100, 1, 0),
+(66870, 180026, 0, 1, 1, -5208.1, -455.96, 386.515, -2.9845, 0, 0, -0.996917, 0.0784664, 120, 255, 1, 12340),
+(66871, 180026, 0, 1, 1, -5229.86, -480.288, 386.363, 2.68781, 0, 0, 0.97437, 0.224951, 120, 255, 1, 12340);
+
+
+DELETE FROM `gameobject` WHERE `id`=180052;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(13840, 180052, 0, 1, 1, -9583.73, 38.0032, 60.1551, 0.139626, 0, 0, 0.0697563, 0.997564, 180, 100, 1, 0),
+(66867, 180052, 0, 1, 1, -5175.3, -625.165, 397.176, 2.91469, 0, 0, 0.993571, 0.113208, 120, 255, 1, 12340);
+
+DELETE FROM `gameobject` WHERE `id`=186217;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(66868, 186217, 0, 1, 1, -5208.21, -456.072, 386.746, 2.70526, 0, 0, 0.976295, 0.216442, 120, 255, 1, 12340),
+(66869, 186217, 0, 1, 1, -5230.03, -480.293, 386.4, 2.1293, 0, 0, 0.874619, 0.48481, 120, 255, 1, 12340);
+
+DELETE FROM `gameobject` WHERE `id`=180026;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`,`VerifiedBuild`) VALUES
+(13895, 180026, 0, 1, 1, -9515.77, 144.288, 59.698, -0.575959, 0, 0, -0.284016, 0.95882, 180, 100, 1, 0),
+(13829, 180026, 0, 1, 1, -9525.46, 71.1421, 58.898, 2.96706, 0, 0, 0.996195, 0.0871556, 180, 100, 1, 0),
+(31878, 180026, 1, 1, 1, -1461.98, 170.177, -7.74639, -0.122173, 0, 0, -0.0610485, 0.998135, 180, 100, 1, 0),
+(31914, 180026, 1, 1, 1, -1589.68, 101.771, -10.5788, -1.64061, 0, 0, -0.731354, 0.681998, 180, 100, 1, 0),
+(66870, 180026, 0, 1, 1, -5208.1, -455.96, 386.515, -2.9845, 0, 0, -0.996917, 0.0784664, 120, 255, 1, 12340),
+(66871, 180026, 0, 1, 1, -5229.86, -480.288, 386.363, 2.68781, 0, 0, 0.97437, 0.224951, 120, 255, 1, 12340);
+
+DELETE FROM `game_event` WHERE `eventEntry`=70;
+INSERT INTO `game_event` (`eventEntry`, `start_time`, `end_time`, `occurence`, `length`, `holiday`, `description`, `world_event`) VALUES (70, '2016-09-20 01:01:00', '2020-12-31 06:00:00', 525600, 4320, 0, 'Brewfest Building (Iron Forge)', 0);
+
+DELETE FROM `game_event_creature` WHERE abs(`eventEntry`) = 70;
+DELETE FROM `game_event_gameobject` WHERE abs(`eventEntry`) = 70;
+INSERT INTO `game_event_gameobject` (`guid`, `eventEntry`) VALUES
+(66860,70),
+(66861,70),
+(66862,70),
+(66863,70),
+(66864,70),
+(66865,70),
+(66866,70),
+(66867,70),
+(66868,70),
+(66869,70),
+(66870,70),
+(66871,70);
+
+-- Darkmoon Faire Building
+DELETE FROM `game_event` WHERE `eventEntry`=71;
+INSERT INTO `game_event` (`eventEntry`, `start_time`, `end_time`, `occurence`, `length`, `holiday`, `description`, `world_event`) VALUES (71, '2013-01-06 01:01:00', '2020-12-31 06:00:00', 131040, 8639, 0, 'Darkmoon Faire Building (Mulgore)', 0);
+
+DELETE FROM `game_event_creature` WHERE abs(`eventEntry`) = 71;
+INSERT INTO `game_event_creature` (`guid`, `eventEntry`) VALUES
+(54395,71);
+
+DELETE FROM `game_event_gameobject` WHERE abs(`eventEntry`) = 71;
+INSERT INTO `game_event_gameobject` (`guid`, `eventEntry`) VALUES
+(31872,71),
+(31874,71),
+(31875,71),
+(31876,71),
+(31877,71),
+(31878,71),
+(31879,71),
+(31912,71),
+(31913,71),
+(31914,71),
+(31915,71),
+(31916,71),
+(31918,71),
+(31919,71);
+--
+-- END UPDATING QUERIES
+--
+COMMIT;
+END;
+//
+DELIMITER ;
+CALL updateDb();
+DROP PROCEDURE IF EXISTS `updateDb`;
diff --git a/data/sql/updates/pending_db_world/rev_1493320243875599900.sql b/data/sql/updates/pending_db_world/rev_1493320243875599900.sql
new file mode 100644
index 0000000000..f1f54115b9
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493320243875599900.sql
@@ -0,0 +1,15 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493320243875599900');
+
+SET @R3D0 := 21690;
+
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@R3D0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@R3D0, @R3D0*100);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@R3D0, 0, 0, 0, 64, 0, 100, 0, 0, 0, 0, 0, 80, 2169000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "R-3D0 - On Gossip Hello - Call Actionlist"),
+(@R3D0*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 91, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "R-3D0 - On Script - Remove Standstate Sleep"),
+(@R3D0*100, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "R-3D0 - On Script - Talk"),
+(@R3D0*100, 9, 2, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 90, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "R-3D0 - On Gossip Hello - Set Standstate Sleep");
+
+DELETE FROM `creature_text` WHERE `entry`=@R3D0;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(@R3D0, 0, 0, "WARNING! WARNING! AWAY HOSTILE BEINGS! DO NOT HEAD UP THE RIDGE TO TOSHLEY'S STATION!", 12, 0, 100, 35, 0, 0, 19311, 0, "R-3D0");
diff --git a/data/sql/updates/pending_db_world/rev_1493320702119541800.sql b/data/sql/updates/pending_db_world/rev_1493320702119541800.sql
new file mode 100644
index 0000000000..22f1ad3a3f
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493320702119541800.sql
@@ -0,0 +1,15 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493320702119541800');
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=1476;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=1476;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(1476, 0, 0, 0, 1, 0, 100, 0, 5000, 30000, 300000, 600000, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Hargin Mundar - Out Of Combat - Talk"),
+(1476, 0, 1, 2, 1, 0, 100, 0, 35000, 45000, 300000, 600000, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Hargin Mundar - Out Of Combat - Talk"),
+(1476, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 41995, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Hargin Mundar - Out Of Combat - Cast Vomit");
+
+DELETE FROM `creature_text` WHERE `entry`=1476;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(1476, 0, 0, "Stormy seas out there. The sea spirits must be restless....hic!", 12, 6, 100, 0, 0, 0, 318, 0, "Hargin Mundar"),
+(1476, 0, 1, "I saw a Sea Giant once. It's not something I would care to see again. Burp!", 12, 6, 100, 0, 0, 0, 319, 0, "Hargin Mundar"),
+(1476, 0, 2, "I'd go out and clear out some of those gnolls, but this leg has seen better days and I am afraid I'd just wind up dead.", 12, 6, 100, 0, 0, 0, 320, 0, "Hargin Mundar"),
+(1476, 0, 3, "Watch your step out there. Many an adventure seeker has not returned from the marsh. hic!", 12, 6, 100, 0, 0, 0, 321, 0, "Hargin Mundar"),
+(1476, 1, 0, "Huuup...Huuup...Bleeeeehh!", 12, 0, 100, 0, 0, 0, 397, 0, "Hargin Mundar");
diff --git a/data/sql/updates/pending_db_world/rev_1493321166929502700.sql b/data/sql/updates/pending_db_world/rev_1493321166929502700.sql
new file mode 100644
index 0000000000..8d5cf95a6d
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493321166929502700.sql
@@ -0,0 +1,24 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493321166929502700');
+SET @BETHOR := 1498;
+SET @GUNTHER := 5666;
+
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry` IN (@BETHOR, @GUNTHER);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@BETHOR, @BETHOR*100, @GUNTHER, @GUNTHER*100);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@BETHOR, 0, 0, 0, 20, 0, 100, 0, 411, 0, 0, 0, 80, @BETHOR*100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Bethor Iceshard - On Quest 'The Prodigal Lich Returns' Rewarded - Run Script"),
+(@BETHOR*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 7762, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Bethor Iceshard - On Script - Cast Summon Gunther's Visage"),
+(@BETHOR*100, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 12, @GUNTHER, 1, 22000, 0, 0, 0, 8, 0, 0, 0, 1766.0415, 62.8454, -46.3213, 1.5910, "Bethor Iceshard - On Script - Summon Gunther's Visage"),
+(@BETHOR*100, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "Bethor Iceshard - On Script - Store Targetlist"),
+(@BETHOR*100, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 100, 1, 0, 0, 0, 0, 0, 19, @GUNTHER, 0, 0, 0, 0, 0, 0, "Bethor Iceshard - On Script - Send Targetlist to Guther's Visage"),
+(@GUNTHER, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 80, @GUNTHER*100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Gunther's Visage - On Just Summoned - Run Script"),
+(@GUNTHER*100, 9, 0, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Gunther's Visage - On Script - Talk 0"),
+(@GUNTHER*100, 9, 1, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Gunther's Visage - On Script - Talk 1"),
+(@GUNTHER*100, 9, 2, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, "Gunther's Visage - On Script - Talk 2"),
+(@GUNTHER*100, 9, 3, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 1498, 0, 0, 0, 0, 0, 0, "Gunther's Visage - On Script - Talk 0 (Bethor Iceshard)");
+
+DELETE FROM `creature_text` WHERE `entry` IN (1498, 5666);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(@GUNTHER, 0, 0, "It has been a long time, Bethor, my friend.", 12, 0, 100, 1, 0, 0, 1973, 0, "Gunther's Visage"),
+(@GUNTHER, 1, 0, "When time permits, we must speak at length. For we have much to discuss.", 12, 0, 100, 1, 0, 0, 1974, 0, "Gunther's Visage"),
+(@GUNTHER, 2, 0, "And thank you, $n. Without your aid I may never have found my way to the Forsaken.", 12, 0, 100, 1, 0, 0, 1975, 0, "Gunther's Visage"),
+(@BETHOR, 0, 0, "Farewell, my friend.", 12, 0, 100, 1, 0, 0, 1976, 0, "Bethor Iceshard");
diff --git a/data/sql/updates/pending_db_world/rev_1493321428049355400.sql b/data/sql/updates/pending_db_world/rev_1493321428049355400.sql
new file mode 100644
index 0000000000..82721555c3
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493321428049355400.sql
@@ -0,0 +1,98 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493321428049355400');
+-- Tranquillien RP event
+SET @AURIFEROUS :=16231;
+SET @SCRIPT := 1623100;
+SET @MALTENDIS :=16251;
+SET @MAVREN := 16252;
+SET @VALWYN := 16289;
+
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry` IN (@AURIFEROUS, @MAVREN, @VALWYN, @MALTENDIS);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@AURIFEROUS, @SCRIPT, @MAVREN, @VALWYN, @MALTENDIS);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@AURIFEROUS,0, 0, 0, 1, 0, 100, 0, 10000, 60000, 580000, 620000, 80, @SCRIPT, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Aureous - Out Of Combat - Run Script"),
+(@SCRIPT, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 0 (Advisor Valwyn)"),
+(@SCRIPT, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 0"),
+(@SCRIPT, 9, 2, 0, 0, 0, 100, 0, 60000, 70000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Face High Executor Mavren"),
+(@SCRIPT, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 1"),
+(@SCRIPT, 9, 4, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 1 1 (High Executor Mavren)"),
+(@SCRIPT, 9, 5, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 0 (Deathstalker Maltendis)"),
+(@SCRIPT, 9, 6, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Reset Orientation"),
+(@SCRIPT, 9, 7, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 0 (High Executor Mavren)"),
+(@SCRIPT, 9, 8, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 1 (Advisor Valwyn)"),
+(@SCRIPT, 9, 9, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 2 2 (High Executor Mavren)"),
+(@SCRIPT, 9, 10, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 2"),
+(@SCRIPT, 9, 11, 0, 0, 0, 100, 0, 50000, 70000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Face High Executor Mavren"),
+(@SCRIPT, 9, 12, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 3"),
+(@SCRIPT, 9, 13, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 1 1 (High Executor Mavren)"),
+(@SCRIPT, 9, 14, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 0 (Deathstalker Maltendis)"),
+(@SCRIPT, 9, 15, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Reset Orientation"),
+(@SCRIPT, 9, 16, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 1 (High Executor Mavren)"),
+(@SCRIPT, 9, 17, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 1 (Advisor Valwyn)"),
+(@SCRIPT, 9, 18, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 2 2 (High Executor Mavren"),
+(@SCRIPT, 9, 19, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 4"),
+(@SCRIPT, 9, 20, 0, 0, 0, 100, 0, 50000, 70000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Face High Executor Mavren"),
+(@SCRIPT, 9, 21, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 5"),
+(@SCRIPT, 9, 22, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 1 1 (High Executor Mavren)"),
+(@SCRIPT, 9, 23, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 0 (Deathstalker Maltendis)"),
+(@SCRIPT, 9, 24, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Reset Orientation"),
+(@SCRIPT, 9, 25, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 2 (High Executor Mavren)"),
+(@SCRIPT, 9, 26, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 1 (Advisor Valwyn)"),
+(@SCRIPT, 9, 27, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, @MAVREN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 2 2 (High Executor Mavren"),
+(@SCRIPT, 9, 28, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 6"),
+(@SCRIPT, 9, 29, 0, 0, 0, 100, 0, 150000, 190000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 1 1 (Deathstalker Maltendis)"),
+(@SCRIPT, 9, 30, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 1 (Deathstalker Maltendis)"),
+(@SCRIPT, 9, 31, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 1 1 (Advisor Valwyn)"),
+(@SCRIPT, 9, 32, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Talk 2 (Advisor Valwyn)"),
+(@SCRIPT, 9, 33, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 2 2 (Deathstalker Maltendis)"),
+(@SCRIPT, 9, 34, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 2 2 (Advisor Valwyn)"),
+(@SCRIPT, 9, 35, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 45, 3, 3, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Dame Auriferous - On Script - Set Data 3 3 (Deathstalker Maltendis)"),
+(@VALWYN, 0, 0, 0, 38, 0, 100, 0, 1, 1, 1000, 1000, 66, 0, 0, 0, 0, 0, 0, 19, @MALTENDIS, 0, 0, 0, 0, 0, 0, "Advisor Valwyn - On Data 1 1 Set - Face Deathstalker Maltendis"),
+(@VALWYN, 0, 1, 0, 38, 0, 100, 0, 2, 2, 1000, 1000, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Advisor Valwyn - On Data 2 2 Set - Reset Orientation"),
+(@MAVREN, 0, 0, 0, 38, 0, 100, 0, 1, 1, 1000, 1000, 66, 0, 0, 0, 0, 0, 0, 19, 16231, 0, 0, 0, 0, 0, 0, "High Executor Mavren - On Data 1 1 Set - Face Dame Auriferious"),
+(@MAVREN, 0, 1, 0, 38, 0, 100, 0, 2, 2, 1000, 1000, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "High Executor Mavren - On Data 2 2 Set - Reset Orientation"),
+(@MALTENDIS, 0, 0, 0, 38, 0, 100, 0, 1, 1, 1000, 1000, 66, 0, 0, 0, 0, 0, 0, 19, @VALWYN, 0, 0, 0, 0, 0, 0, "Deathstalker Maltendis - On Data 1 1 Set - Face Advisor Valwyn"),
+(@MALTENDIS, 0, 1, 0, 38, 0, 100, 0, 2, 2, 1000, 1000, 5, 153, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Deathstalker Maltendis - On Data 2 2 Set - Emote Laugh"),
+(@MALTENDIS, 0, 2, 0, 38, 0, 100, 0, 3, 3, 1000, 1000, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Deathstalker Maltendis - On Data 3 3 Set - Reset Orientation");
+
+DELETE FROM `creature_text` WHERE `entry` IN (@AURIFEROUS, @MAVREN, @VALWYN, @MALTENDIS);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
+(@AURIFEROUS, 0, 0, "%s nods her head yes at what her advisor has to say.", 16, 0, 100, 273, 0, 0, 13362, 0, "Dame Auriferous"),
+(@AURIFEROUS, 0, 1, "%s disagrees with whatever it is that Valwyn has whispered to her.", 16, 0, 100, 274, 0, 0, 13363, 0, "Dame Auriferous"),
+(@AURIFEROUS, 0, 2, "%s seems nonplussed by whatever it is that her advisor has whispered in her ear.", 16, 0, 100, 6, 0, 0, 13365, 0, "Dame Auriferous"),
+(@AURIFEROUS, 1, 0, "Executor, your direct assault approach will cost us more lives than I am comfortable with. A more nuanced strategy is called for; one that involves us reclaiming the surrounding territory, starting with the villages so as to cut off all points of reinforcement to Deatholme.", 12, 1, 100, 0, 0, 0, 12552, 0, "Dame Auriferous"),
+(@AURIFEROUS, 2, 0, "I hear what you are saying, Mavren. Nevertheless, the final decision is mine. I appreciate your assistance, but the majority of the lives on the line are blood elf. I will not have those lives carelessly thrown away!", 12, 1, 100, 0, 0, 0, 12571, 0, "Dame Auriferous"),
+(@AURIFEROUS, 3, 0, "How long until Forsaken reinforcements arrive? Our position here is tenuous. Your Lady promised us more soldiers. We must be able to concentrate solely on Deatholme and the Scourge!", 12, 1, 100, 0, 0, 0, 12557, 0, "Dame Auriferous"),
+(@AURIFEROUS, 4, 0, "Mavren, I don't want excuses, I want results! The Farstriders aren't available and we've received all that we're going to get from Silvermoon for now. I cannot ignore the Shadowpine trolls and Zul'Aman... they're arrayed across our eastern border!", 12, 1, 100, 0, 0, 0, 12572, 0, "Dame Auriferous"),
+(@AURIFEROUS, 5, 0, "No, I was right to begin with. Deatholme must come last. We must secure all of the Ghostlands first. I will not commit the forces here to a battle against Dar'khan with enemies to our flank and rear!", 12, 1, 100, 0, 0, 0, 12562, 0, "Dame Auriferous"),
+(@AURIFEROUS, 6, 0, "Disagree with me all you like, High Executor. I will weigh your counsel, and then we will take the steps to free all of Quel'Thalas as I deem necessary. We shall continue this discussion anon.", 12, 1, 100, 0, 0, 0, 12573, 0, "Dame Auriferous"),
+(@MAVREN, 0, 0, "With all due respect, milady, you have not fought the Scourge as I have. The Lady appointed me to assist you in defeating Dar'khan because of that, and you would do well to consider what I have to say.", 12, 1, 100, 0, 0, 0, 12553, 0, "High Executor Mavren"),
+(@MAVREN, 0, 1, "I strongly disagree. Dar'khan is not going to get reinforcements because he'll be bottlenecked. Deatholme has only one way in and out. Your traitor was a fool to corner himself there, and I intend to exploit that weakness!", 12, 1, 100, 0, 0, 0, 12554, 0, "High Executor Mavren"),
+(@MAVREN, 0, 2, "This is war, Dame Auriferous, and in any war lives will be lost! The only areas that we need to secure are the two ziggurats. We will turtle in and take the Tower of the Damned and its master by brute force. Then you will have your Quel'Thalas.", 12, 1, 100, 0, 0, 0, 12555, 0, "High Executor Mavren"),
+(@MAVREN, 0, 3, "And if your Farstriders were here to reinforce us, I might agree. But, they are busying themselves instead with the Shadowpine trolls on your eastern border. The longer we wait for them, the stronger the Scourge will become.", 12, 1, 100, 0, 0, 0, 12556, 0, "High Executor Mavren"),
+(@MAVREN, 1, 0, "I believe that you're making my argument for me, but yes it would be nice if we had more reinforcements. I would counter that it would be faster to pull the Farstriders from their senseless skirmishing with the trolls.", 12, 1, 100, 0, 0, 0, 12558, 0, "High Executor Mavren"),
+(@MAVREN, 1, 1, "Dame Auriferous, we are the reinforcements. It may come to pass that The Lady will send more men in time. Better that you convince Silvermoon City to muster all of its forces and put them at our disposal here.", 12, 1, 100, 0, 0, 0, 12559, 0, "High Executor Mavren"),
+(@MAVREN, 1, 2, "You are correct; we must concentrate on the Scourge. Ignore the trolls and the villages, and focus our attentions on Deatholme! With Dar'khan defeated you will find that the rest of the Scourge 'body' will fall quickly, lacking their 'head'.", 12, 1, 100, 0, 0, 0, 12560, 0, "High Executor Mavren"),
+(@MAVREN, 1, 3, "Forsaken reinforcements? Undercity is stretched thin with the Scourge on all sides. No, this will be a matter largely dealt with by the blood elves. We Forsaken are here as backup and advisors.", 12, 1, 100, 0, 0, 0, 12561, 0, "High Executor Mavren"),
+(@MAVREN, 2, 0, "Again I strongly disagree with your view of the strategic situation. Your plan will spread our forces too thin. It will leave us with only a small force to assault Deatholme. I cannot in good conscience execute such a strategy.", 12, 1, 100, 0, 0, 0, 12567, 0, "High Executor Mavren"),
+(@MAVREN, 2, 1, "Spread throughout the Ghostlands, our forces will be of little use in an assault on Deatholme. No, milady, I am here to kill Dar'khan and that is what I intend to do!", 12, 1, 100, 0, 0, 0, 12568, 0, "High Executor Mavren"),
+(@MAVREN, 2, 2, "We've been over this before. Only a focused assault upon Deatholme will meet with success. These other targets are distractions that we can ill afford. I suggest that you inform your Captain Helios that he is to leave off his campaign against the Shadowpine trolls and focus solely on the Scourge.", 12, 1, 100, 0, 0, 0, 12569, 0, "High Executor Mavren"),
+(@MAVREN, 2, 3, "Perhaps we should let the matter rest for the time being until your chef has prepared your meal? You look a bit piqued if you don't mind my saying. We can resume our discussion when you are feeling more yourself.", 12, 1, 100, 0, 0, 0, 12570, 0, "High Executor Mavren"),
+(@VALWYN, 0, 0, "%s whispers something in the Dame's ear.", 16, 0, 100, 0, 0, 0, 13361, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 0, "%s looks appalled at the Executor's tone!", 16, 0, 100, 0, 0, 0, 12574, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 1, "%s tries to busy herself with other matters.", 16, 0, 100, 0, 0, 0, 12575, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 2, "%s glares daggers in the direction of High Executor Mavren and Deathstalker Maltendis.", 16, 0, 100, 0, 0, 0, 12576, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 3, "%s lifts her nose and sniffs in response to the High Executor's reply.", 16, 0, 100, 0, 0, 0, 12577, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 4, "%s shakes her head in disbelief at what she is hearing out of the Forsaken's mouth.", 16, 0, 100, 0, 0, 0, 12578, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 5, "%s blanches as much of the blood drains from her face.", 16, 0, 100, 0, 0, 0, 12579, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 6, "%s reddens furiously at what she is hearing in response to her lady's question.", 16, 0, 100, 0, 0, 0, 12580, 0, "Advisor Valwyn"),
+(@VALWYN, 1, 7, "%s concentrates on the wall opposite her, clearly ignoring the looks of the Executor and his assistant.", 16, 0, 100, 0, 0, 0, 12581, 0, "Advisor Valwyn"),
+(@VALWYN, 2, 0, "%s looks disgusted at the deathstalker's flirtations.", 16, 0, 100, 274, 0, 0, 13367, 0, "Advisor Valwyn"),
+(@MALTENDIS, 0, 0, "%s nods in agreement.", 16, 0, 100, 0, 0, 0, 12582, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 0, 1, "%s opens his mouth as if to add something, and then apparently thinks the better of it.", 16, 0, 100, 0, 0, 0, 12583, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 0, 2, "%s looks over at Advisor Valwyn with a smirk on his face.", 16, 0, 100, 0, 0, 0, 12584, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 0, 3, "%s grins at the High Executor's words.", 16, 0, 100, 0, 0, 0, 12585, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 0, 4, "%s appears bored with the whole discussion.", 16, 0, 100, 0, 0, 0, 12586, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 0, 5, "%s winks slyly at Advisor Valwyn.", 16, 0, 100, 0, 0, 0, 12587, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 0, 6, "%s fidgets with his armor, clearly uncomfortable at the tone of the discussion.", 16, 0, 100, 0, 0, 0, 12588, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 0, 7, "%s looks like he'd rather be anywhere else but here.", 16, 0, 100, 0, 0, 0, 12589, 0, "Deathstalker Maltendis"),
+(@MALTENDIS, 1, 0, "%s turns to Advisor Valwyn and winks lasciviously in her direction.", 16, 0, 100, 2, 0, 0, 13366, 0, "Deathstalker Maltendis");
diff --git a/data/sql/updates/pending_db_world/rev_1493321989278173500.sql b/data/sql/updates/pending_db_world/rev_1493321989278173500.sql
new file mode 100644
index 0000000000..db48f3eec9
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493321989278173500.sql
@@ -0,0 +1,229 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493321989278173500');
+SET @GUID := 131324;
+DELETE FROM `creature` WHERE `guid` BETWEEN @GUID + 1 AND @GUID + 23;
+INSERT INTO `creature` (`guid`, `id`, `map`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `npcflag`, `MovementType`) VALUES
+(@GUID + 1, 11277, 0, 1093.95, -2528.63, 61.2475, 5.74213, 0, 0, 0, 484, 0, 0, 0),
+(@GUID + 2, 11277, 0, 1095.56, -2529.47, 61.1291, 2.37365, 0, 0, 0, 484, 0, 0, 0),
+(@GUID + 3, 11277, 0, 1148.08, -2559.31, 60.1493, 4.15388, 0, 0, 0, 484, 0, 0, 0),
+(@GUID + 4, 11277, 0, 1146.79, -2561.22, 60.1145, 0.959931, 0, 0, 0, 484, 0, 0, 0),
+(@GUID + 5, 11279, 0, 1064.06, -2519.78, 60.2259, 3.19395, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 6, 11279, 0, 1056.5, -2536.54, 59.9694, 2.35619, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 7, 11279, 0, 1245.02, -2597.47, 90.3675, 3.52556, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 8, 11280, 0, 1180.07, -2536.72, 85.3681, 1.0821, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 9, 11280, 0, 1187.12, -2532.58, 85.3681, 2.16421, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 10, 11280, 0, 1208.19, -2583.32, 98.2479, 2.72271, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 11, 11282, 0, 1113.59, -2555.59, 59.2532, 3.50681, 0, 0, 0, 42, 0, 0, 0),
+(@GUID + 12, 11283, 0, 1111.49, -2556.4, 59.2532, 0.365222, 0, 0, 0, 42, 0, 0, 0),
+(@GUID + 13, 11316, 0, 1223.27, -2506.41, 72.9261, 4.10152, 0, 0, 0, 3500, 0, 0, 0),
+(@GUID + 14, 11277, 0, 1155.4, -2383.73, 60.304, 5.43574, 300, 0, 0, 2784, 0, 0, 0),
+(@GUID + 15, 11281, 0, 1098.49, -2523.82, 61.3707, 4.6691, 1272, 0, 0, 2371, 0, 0, 0),
+(@GUID + 16, 11281, 0, 1031.16, -2498.27, 59.177, 4.73616, 1272, 0, 0, 2371, 0, 0, 2),
+(@GUID + 17, 11281, 0, 1090.52, -2541.25, 59.2419, 2.70896, 1272, 0, 0, 2371, 0, 0, 2),
+(@GUID + 18, 11279, 0, 1238.9929, -2586.8103, 90.3722, 3.695799, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 19, 11277, 0, 1100.1054, -2589.2932, 60.624, 0.555778, 0, 0, 0, 3632, 0, 0, 0),
+(@GUID + 20, 11277, 0, 1127.81, -2387.71, 59.264, 1.72159, 300, 0, 0, 2784, 0, 0, 0),
+(@GUID + 21, 11287, 0, 1081.91, -2574, 59.957, 0.301, 360, 0, 0, 1536, 0, 0, 0),
+(@GUID + 22, 11277, 0, 1090.52, -2541.25, 59.2419, 2.70896, 1272, 0, 0, 2784, 0, 0, 2),
+(@GUID + 23, 11277, 0, 1231.62939, -2558.7126, 91.04164, 4.410, 1272, 0, 0, 2784, 0, 0, 2);
+
+SET @NPC := 131340;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,5228,0,1,0, '17622');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`, `delay`) VALUES
+(@PATH, 1, 1031.16, -2498.27, 59.177, 10000),
+(@PATH, 2, 1034.48, -2468.77, 59.9844, 0),
+(@PATH, 3, 1043.48, -2458.4, 60.4699, 0),
+(@PATH, 4, 1071.23, -2443.23, 61.1634, 5000),
+(@PATH, 5, 1101.41, -2409.45, 59.8655, 0),
+(@PATH, 6, 1125.81, -2397.36, 59.4695, 0),
+(@PATH, 7, 1183.61, -2397.16, 60.1768, 10000),
+(@PATH, 8, 1126.2, -2397.42, 59.4867, 0),
+(@PATH, 9, 1101.19, -2409.67, 59.8831, 0),
+(@PATH, 10, 1070.91, -2443.54, 61.1405, 5000),
+(@PATH, 11, 1043.16, -2458.72, 60.4674, 0),
+(@PATH, 12, 1034.42, -2468.71, 59.9897, 0);
+
+SET @NPC := 131341;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,5228,0,1,0, '17622');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`, `delay`) VALUES
+(@PATH, 1, 1090.52, -2541.25, 59.1419, 10000),
+(@PATH, 2, 1095.36, -2543.49, 59.1418, 0),
+(@PATH, 3, 1118.02, -2601.04, 59.4689, 0),
+(@PATH, 4, 1132.05, -2612.48, 63.1381, 0),
+(@PATH, 5, 1161.32, -2620.66, 70.9007, 0),
+(@PATH, 6, 1193.38, -2629.62, 74.0911, 0),
+(@PATH, 7, 1214.63, -2616.73, 83.1397, 0),
+(@PATH, 8, 1221.01, -2604.11, 86.3537, 0),
+(@PATH, 9, 1237.11, -2595.52, 90.1566, 10000),
+(@PATH, 10, 1221.38, -2603.91, 86.4882, 0),
+(@PATH, 11, 1214.67, -2616.99, 83.1357, 0),
+(@PATH, 12, 1193.52, -2629.6, 74.1169, 0),
+(@PATH, 13, 1161.14, -2620.61, 70.8684, 0),
+(@PATH, 14, 1131.64, -2612.35, 63.038, 0),
+(@PATH, 15, 1117.74, -2600.92, 59.4468, 0),
+(@PATH, 16, 1095.2, -2543.02, 59.1423, 0);
+
+DELETE FROM `creature_formations` WHERE `leaderGUID` IN (131341);
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`,`point_1`,`point_2`) VALUES
+(131341,131341,0,0,2,0,0),
+(131341,131339,9,360,2,9,19);
+
+SET @NPC := @GUID + 23;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '17622 10848');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
+(@PATH, 1, 1235.24, -2562.57, 91.3431, 0, 0, 0, 0, 100, 0),
+(@PATH, 2, 1236.63, -2570.77, 91.5426, 0, 0, 0, 0, 100, 0),
+(@PATH, 3, 1237.19, -2580.81, 90.9381, 0, 0, 0, 0, 100, 0),
+(@PATH, 4, 1238.05, -2593.67, 90.1927, 0, 0, 0, 0, 100, 0),
+(@PATH, 5, 1228.63, -2599.66, 88.6386, 0, 0, 0, 0, 100, 0),
+(@PATH, 6, 1220.7, -2604.7, 86.2027, 0, 0, 0, 0, 100, 0),
+(@PATH, 7, 1212.85, -2601.35, 83.4549, 0, 0, 0, 0, 100, 0),
+(@PATH, 8, 1201.85, -2595.01, 78.5496, 0, 0, 0, 0, 100, 0),
+(@PATH, 9, 1191.01, -2590.97, 74.6417, 0, 0, 0, 0, 100, 0),
+(@PATH, 10, 1180.71, -2595.16, 72.9315, 0, 0, 0, 0, 100, 0),
+(@PATH, 11, 1176.2, -2606.29, 72.8323, 0, 0, 0, 0, 100, 0),
+(@PATH, 12, 1168.01, -2620.18, 71.895, 0, 0, 0, 0, 100, 0),
+(@PATH, 13, 1173.01, -2612.22, 72.7501, 0, 0, 0, 0, 100, 0),
+(@PATH, 14, 1182.33, -2592.46, 72.9574, 0, 0, 0, 0, 100, 0),
+(@PATH, 15, 1197.4, -2592.45, 76.7622, 0, 0, 0, 0, 100, 0),
+(@PATH, 16, 1219.52, -2604.41, 85.8084, 0, 0, 0, 0, 100, 0),
+(@PATH, 17, 1237.83, -2592.45, 90.193, 0, 0, 0, 0, 100, 0),
+(@PATH, 18, 1237.96, -2574.51, 91.5436, 0, 0, 0, 0, 100, 0),
+(@PATH, 19, 1233.04, -2561.64, 90.6976, 0, 0, 0, 0, 100, 0),
+(@PATH, 20, 1232.37, -2553.62, 91.4351, 0, 0, 0, 0, 100, 0);
+
+SET @NPC := 131346;
+UPDATE `creature` SET `position_x`=1127.81, `position_y`=-2387.71, `position_z`=59.264, `orientation`=1.72159 WHERE `guid`=@NPC;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '17622 10848');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
+(@PATH, 1, 1130.21, -2395.8, 59.6262, 0, 0, 0, 0, 100, 0),
+(@PATH, 2, 1137.21, -2395.91, 59.8531, 0, 0, 0, 0, 100, 0),
+(@PATH, 3, 1158.21, -2396.22, 59.8991, 0, 0, 0, 0, 100, 0),
+(@PATH, 4, 1179.21, -2396.51, 60.0552, 0, 0, 0, 0, 100, 0),
+(@PATH, 5, 1203.92, -2392.72, 60.0587, 0, 0, 0, 0, 100, 0),
+(@PATH, 6, 1190.1, -2394.95, 60.1484, 0, 0, 0, 0, 100, 0),
+(@PATH, 7, 1169.22, -2396.95, 59.9472, 0, 0, 0, 0, 100, 0),
+(@PATH, 8, 1155.23, -2396.77, 59.9844, 0, 0, 0, 0, 100, 0),
+(@PATH, 9, 1124.17, -2397.18, 59.405, 0, 0, 0, 0, 100, 0),
+(@PATH, 10, 1099.73, -2410.8, 59.9901, 0, 0, 0, 0, 100, 0),
+(@PATH, 11, 1090.4, -2420.13, 60.9123, 0, 0, 0, 0, 100, 0),
+(@PATH, 12, 1072.48, -2441.64, 61.2209, 0, 0, 0, 0, 100, 0),
+(@PATH, 13, 1043.13, -2458.38, 60.4831, 0, 0, 0, 0, 100, 0),
+(@PATH, 14, 1035.92, -2468.81, 59.9447, 0, 0, 0, 0, 100, 0),
+(@PATH, 15, 1032.07, -2486.29, 59.3631, 0, 0, 0, 0, 100, 0),
+(@PATH, 16, 1024.47, -2514.34, 59.1417, 0, 0, 0, 0, 100, 0),
+(@PATH, 17, 1037.54, -2519.32, 59.1867, 0, 0, 0, 0, 100, 0),
+(@PATH, 18, 1063.46, -2529.89, 59.1418, 0, 0, 0, 0, 100, 0),
+(@PATH, 19, 1097.75, -2544.71, 59.1428, 0, 0, 0, 0, 100, 0),
+(@PATH, 20, 1102.49, -2557.88, 59.1428, 0, 0, 0, 0, 100, 0),
+(@PATH, 21, 1111.76, -2584.3, 59.1743, 0, 0, 0, 0, 100, 0),
+(@PATH, 22, 1123.54, -2607.25, 61.0399, 0, 0, 0, 0, 100, 0),
+(@PATH, 23, 1136.36, -2612.87, 64.1442, 0, 0, 0, 0, 100, 0),
+(@PATH, 24, 1163.16, -2620.89, 71.2108, 0, 0, 0, 0, 100, 0),
+(@PATH, 25, 1182.45, -2627.27, 72.8355, 0, 0, 0, 0, 100, 0),
+(@PATH, 26, 1196.35, -2625.69, 74.9546, 0, 0, 0, 0, 100, 0),
+(@PATH, 27, 1205.57, -2623.11, 78.4216, 0, 0, 0, 0, 100, 0),
+(@PATH, 28, 1218.12, -2611.44, 84.922, 0, 0, 0, 0, 100, 0),
+(@PATH, 29, 1232.4, -2596.93, 89.4579, 0, 0, 0, 0, 100, 0),
+(@PATH, 30, 1218.97, -2605.37, 85.534, 0, 0, 0, 0, 100, 0),
+(@PATH, 31, 1207.03, -2598.07, 80.8431, 0, 0, 0, 0, 100, 0),
+(@PATH, 32, 1184.18, -2591.84, 73.0826, 0, 0, 0, 0, 100, 0),
+(@PATH, 33, 1180.16, -2598.08, 72.8645, 0, 0, 0, 0, 100, 0),
+(@PATH, 34, 1167.55, -2620.42, 71.8289, 0, 0, 0, 0, 100, 0),
+(@PATH, 35, 1148.76, -2617.4, 67.9948, 0, 0, 0, 0, 100, 0),
+(@PATH, 36, 1128.96, -2610.55, 62.3378, 0, 0, 0, 0, 100, 0),
+(@PATH, 37, 1114.88, -2592.68, 59.2346, 0, 0, 0, 0, 100, 0),
+(@PATH, 38, 1112, -2586.3, 59.1568, 0, 0, 0, 0, 100, 0),
+(@PATH, 39, 1102.92, -2559.83, 59.142, 0, 0, 0, 0, 100, 0),
+(@PATH, 40, 1093.84, -2542.81, 59.1414, 0, 0, 0, 0, 100, 0),
+(@PATH, 41, 1067.78, -2532.62, 59.1415, 0, 0, 0, 0, 100, 0),
+(@PATH, 42, 1035.69, -2518.67, 59.1449, 0, 0, 0, 0, 100, 0),
+(@PATH, 43, 1022.34, -2513.6, 59.1417, 0, 0, 0, 0, 100, 0),
+(@PATH, 44, 1029.52, -2499.31, 59.1618, 0, 0, 0, 0, 100, 0),
+(@PATH, 45, 1032.82, -2480.03, 59.4609, 0, 0, 0, 0, 100, 0),
+(@PATH, 46, 1040.28, -2461.78, 60.4131, 0, 0, 0, 0, 100, 0),
+(@PATH, 47, 1068.44, -2444.34, 60.9293, 0, 0, 0, 0, 100, 0),
+(@PATH, 48, 1089.28, -2422.64, 61.0531, 0, 0, 0, 0, 100, 0),
+(@PATH, 49, 1110.43, -2404.84, 59.3954, 0, 0, 0, 0, 100, 0),
+(@PATH, 50, 1125.89, -2397.4, 59.473, 0, 0, 0, 0, 100, 0);
+
+UPDATE `creature_template_addon` SET `mount` = 5228 WHERE `entry` = 11281;
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (11282, 11283, 11287, 11279, 11286, 11316, 11280);
+INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(11282, 0, 0, 0, 0, 0, '17622 10848'),
+(11283, 0, 0, 0, 0, 0, '17622 10848'),
+(11287, 0, 0, 0, 0, 0, '17622 10848'),
+(11279, 0, 0, 0, 0, 0, '17622 10848'),
+(11286, 0, 0, 0, 0, 0, '17622 10848'),
+(11316, 0, 0, 0, 69, 0, '17622 10848'),
+(11280, 0, 0, 0, 69, 0, '17622 10848');
+
+UPDATE `creature_template_addon` SET `auras` = '17622 10848' WHERE `entry` = 11277;
+UPDATE `creature_addon` SET `bytes1`=0, `auras` = '17622 10848' WHERE `guid` = 200140;
+
+-- Melia SAI
+SET @ENTRY := 11282;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,25,0,100,0,0,0,0,0,53,1,11282,1,0,0,0,1,0,0,0,0,0,0,0,"Melia - On Reset - Start Waypoint"),
+(@ENTRY,0,1,0,40,0,100,0,5,11282,0,0,80,@ENTRY*100+00,2,0,0,0,0,1,0,0,0,0,0,0,0,"Melia - On Waypoint 5 Reached - Run Script");
+
+-- Actionlist SAI
+SET @ENTRY := 1128200;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=9;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,9,0,0,0,0,100,0,0,0,0,0,54,30000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Melia - On Script - Pause Waypoint"),
+(@ENTRY,9,1,0,0,0,100,0,6000,6000,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,3.495,"Melia - On Script - Set Orientation 3.495"),
+(@ENTRY,9,2,0,0,0,100,0,3000,3000,0,0,1,0,2000,0,0,0,0,1,0,0,0,0,0,0,0,"Melia - On Script - Say Line 0"),
+(@ENTRY,9,3,0,0,0,100,0,5000,5000,0,0,1,0,2000,0,0,0,0,19,11283,100,0,0,0,0,0,"Melia - On Script - Say Line 0"),
+(@ENTRY,9,4,0,0,0,100,0,2000,2000,0,0,1,1,2000,0,0,0,0,1,0,0,0,0,0,0,0,"Melia - On Script - Say Line 1"),
+(@ENTRY,9,5,0,0,0,100,0,14000,14000,0,0,1,2,2000,0,0,0,0,1,0,0,0,0,0,0,0,"Melia - On Script - Say Line 2"),
+(@ENTRY,9,6,0,0,0,100,0,1000,1000,0,0,1,1,2000,0,0,0,0,19,11283,100,0,0,0,0,0,"Melia - On Script - Say Line 1");
+
+-- Sammy SAI
+SET @ENTRY := 11283;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,25,0,100,0,0,0,0,0,53,1,11283,1,0,0,0,1,0,0,0,0,0,0,0,"Sammy - On Reset - Start Waypoint"),
+(@ENTRY,0,1,0,40,0,100,0,5,11283,0,0,54,30000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Sammy - On Waypoint 5 Reached - Pause Waypoint");
+
+DELETE FROM `creature_text` WHERE `entry` IN (11282, 11283);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `comment`) VALUES
+(11282, 0, 0, 'I win!', 12, 0, 100, 0, 2000, 0, 6808, 'Melia'),
+(11282, 1, 0, 'Wanna race again? Best two out of three!', 12, 0, 100, 0, 2000, 0, 6809, 'Melia'),
+(11282, 2, 0, 'Ready. Set. GO!', 12, 0, 100, 0, 2000, 0, 6806, 'Melia'),
+(11283, 0, 0, 'You cheated!', 12, 0, 100, 0, 2000, 0, 6810, 'Sammy'),
+(11283, 1, 0, 'HEY! No fair!', 12, 0, 100, 0, 2000, 0, 6807, 'Sammy');
+
+DELETE FROM `waypoints` WHERE `entry` IN (11282, 11283);
+INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
+(11282, 1, 1120.09, -2547.57, 59.2532, 'Melia'),
+(11282, 2, 1111.05, -2537.9, 59.2532, 'Melia'),
+(11282, 3, 1100.43, -2547.73, 59.2532, 'Melia'),
+(11282, 4, 1109.6, -2558.2, 59.2532, 'Melia'),
+(11282, 5, 1113.59, -2555.59, 59.2532, 'Melia'),
+(11282, 6, 1113.59, -2555.59, 59.2532, 'Melia'),
+(11283, 1, 1120.72, -2548.21, 59.2532, 'Sammy'),
+(11283, 2, 1110.95, -2538.51, 59.2532, 'Sammy'),
+(11283, 3, 1100.73, -2547.23, 59.2532, 'Sammy'),
+(11283, 4, 1109.56, -2557.59, 59.2532, 'Sammy'),
+(11283, 5, 1111.49, -2556.4, 59.2532, 'Sammy'),
+(11283, 6, 1111.49, -2556.4, 59.2532, 'Sammy');
diff --git a/data/sql/updates/pending_db_world/rev_1493343523138941000.sql b/data/sql/updates/pending_db_world/rev_1493343523138941000.sql
new file mode 100644
index 0000000000..57954ec85f
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493343523138941000.sql
@@ -0,0 +1,6 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493343523138941000');
+-- replace "Mac" with actual player name ($N) in the reward text
+UPDATE `quest_template`
+SET `OfferRewardText`= "Great Spirit Totem! This is dire news indeed. I must begin to plan for whatever may come.$b$b$N, as promised, here is your reward for your brave service.$b$b"
+WHERE `ID`= 5064;
+--
diff --git a/data/sql/updates/pending_db_world/rev_1493344470069156600.sql b/data/sql/updates/pending_db_world/rev_1493344470069156600.sql
new file mode 100644
index 0000000000..b677181f57
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493344470069156600.sql
@@ -0,0 +1,2 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493344470069156600');
+UPDATE `spell_dbc` SET `RangeIndex`=4 WHERE `Id`=61698;
diff --git a/data/sql/updates/pending_db_world/rev_1493344929793898700.sql b/data/sql/updates/pending_db_world/rev_1493344929793898700.sql
new file mode 100644
index 0000000000..41c45c7e48
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493344929793898700.sql
@@ -0,0 +1,2 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493344929793898700');
+UPDATE `creature_template` SET `faction` = 1873 WHERE `entry` = 16927;
diff --git a/data/sql/updates/pending_db_world/rev_1493346808800720600.sql b/data/sql/updates/pending_db_world/rev_1493346808800720600.sql
new file mode 100644
index 0000000000..ab35fec3e4
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493346808800720600.sql
@@ -0,0 +1,45 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493346808800720600');
+-- Quest 27418, Challenge Overlord Mok'Morokk
+
+SET @OMM := 4500; -- Overlord Mok'Morokk
+
+UPDATE `quest_template_addon` SET `SpecialFlags`=2 WHERE `ID`=1173;
+
+DELETE FROM `creature_text` WHERE `entry`= @OMM;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
+(@OMM, 0,0,'Puny $r wanna fight Overlord Mok''Morokk? Me beat you! Me boss here!',12,0,100,0,0,0,1515,0,'Overlord Mok''Morokk - on Quest Accept'),
+(@OMM, 1,0,'Me scared! Me run now!', 14,0,100,0,0,0,1523,0,'Overlord Mok''Morokk - on Health 0%-25%');
+
+DELETE FROM `waypoints` WHERE `entry` = @OMM;
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@OMM, 1, -3138.49, -2864.64, 34.76, 'Overlord Mok''Morokk'),
+(@OMM, 2, -3128.08, -2847.37, 34.72, 'Overlord Mok''Morokk'),
+(@OMM, 3, -3108.94, -2839.60, 34.28, 'Overlord Mok''Morokk');
+
+UPDATE `creature_template` SET `AIName` = "SmartAI", `ScriptName` = '' WHERE `entry` = @OMM;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@OMM, @OMM*100, @OMM*100+1);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@OMM, 0, 0,0, 0,0,100,0, 1000,3000,7000,10000, 11, 6749, 2, 0,0,0,0, 2, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - In Combat Update - cast ''Wide Swipe'''),
+(@OMM, 0, 1,2, 19,0,100,1, 1173, 0, 0, 0, 64, 1, 0, 0,0,0,0, 16, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on Quest Accept - Store players (No repeat)'),
+(@OMM, 0, 2,0, 61,0,100,0, 0, 0, 0, 0, 80, @OMM*100, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on Quest Accept - Run Actionlist 450000'),
+(@OMM*100, 9, 0,0, 0,0,100,0, 3000,3000, 0, 0, 1, 0, 0, 0,0,0,0, 12, 1,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Say text 0'),
+(@OMM*100, 9, 1,0, 0,0,100,0, 0, 0, 0, 0, 2, 16, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Set faction (Monster)'),
+(@OMM*100, 9, 2,0, 0,0,100,0, 0, 0, 0, 0, 83, 2, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Remove npcflag Quest Giver'),
+(@OMM*100, 9, 3,0, 0,0,100,0, 0, 0, 0, 0, 19, 768, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Remove Unit Flags immune to NPC & immune to PC'),
+(@OMM*100, 9, 4,0, 0,0,100,0, 0, 0, 0, 0, 49, 0, 0, 0,0,0,0, 12, 1,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Attack stored player'),
+(@OMM, 0, 3,0, 2,0,100,1, 0, 25, 0, 0, 80,@OMM*100+1, 2, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on Health 0%-25% - Run Actionlist 450001 (No repeat)'),
+(@OMM, 0, 4,0, 0,0,100,1, 0, 0, 0, 0, 42, 0, 1, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - In Combat - Set invincibility hp level (No repeat)'),
+(@OMM*100+1,9, 0,0, 0,0,100,0, 0, 0, 0, 0, 18, 768, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Set Unit Flags immune to NPC & immune to PC'),
+(@OMM*100+1,9, 1,0, 0,0,100,0, 0, 0, 0, 0, 28, 0, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Remove all auras'),
+(@OMM*100+1,9, 2,0, 0,0,100,0, 0, 0, 0, 0, 2, 29, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Set faction (Orgrimmar)'),
+(@OMM*100+1,9, 3,0, 0,0,100,0, 0, 0, 0, 0, 24, 0, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Evade'),
+(@OMM*100+1,9, 4,0, 0,0,100,0, 0, 0, 0, 0, 15, 1173, 0, 0,0,0,0, 12, 1,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Credit Quest ''Challenge Overlord Mok''Morokk'''),
+(@OMM*100+1,9, 5,0, 0,0,100,0, 500, 500, 0, 0, 1, 1, 0, 0,0,0,0, 12, 1,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Say text 1'),
+(@OMM*100+1,9, 6,0, 0,0,100,0, 0, 0, 0, 0, 53, 1,@OMM, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - Actionlist - Start Waypoint'),
+(@OMM, 0, 5,0, 58,0,100,0, 0,@OMM, 0, 0, 41, 0, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on WP End - Despawn'),
+(@OMM, 0, 6,7, 25,0,100,0, 0, 0, 0, 0, 18, 768, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on Reset - Set Unit Flags immune to NPC & immune to PC'),
+(@OMM, 0, 7,8, 61,0,100,0, 0, 0, 0, 0, 82, 2, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on Reset - Remove all auras'),
+(@OMM, 0, 8,0, 61,0,100,0, 0, 0, 0, 0, 2, 29, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on Reset - Set faction (Orgrimmar)'),
+(@OMM, 0, 9,0, 11,0,100,0, 0, 0, 0, 0, 42, 1, 0, 0,0,0,0, 1, 0,0,0,0,0,0,0,'Overlord Mok''Morokk - on Spawn - Set Invincibility at 1 HP');
+--
+
diff --git a/data/sql/updates/pending_db_world/rev_1493347575872142000.sql b/data/sql/updates/pending_db_world/rev_1493347575872142000.sql
new file mode 100644
index 0000000000..2415faa217
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493347575872142000.sql
@@ -0,0 +1,7 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493347575872142000');
+-- Verifonix <The Surveyor>
+UPDATE `creature_template` SET `faction`=47 WHERE `entry`=14492;
+
+DELETE FROM `creature_onkill_reputation` WHERE `creature_id`=14492;
+INSERT INTO `creature_onkill_reputation` (`creature_id`,`RewOnKillRepFaction1`,`RewOnKillRepFaction2`,`MaxStanding1`,`IsTeamAward1`,`RewOnKillRepValue1`,`MaxStanding2`,`IsTeamAward2`,`RewOnKillRepValue2`,`TeamDependent`) VALUES
+(14492, 21, 0, 5, 0, 5, 0, 0, 0, 0);
diff --git a/data/sql/updates/pending_db_world/rev_1493349239278044600.sql b/data/sql/updates/pending_db_world/rev_1493349239278044600.sql
new file mode 100644
index 0000000000..f1df789664
--- /dev/null
+++ b/data/sql/updates/pending_db_world/rev_1493349239278044600.sql
@@ -0,0 +1,24 @@
+INSERT INTO version_db_world (`sql_rev`) VALUES ('1493349239278044600');
+--
+DELETE FROM conditions WHERE SourceTypeOrReferenceId=13 AND SourceEntry=45872;
+INSERT INTO conditions (SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, ErrorType, ErrorTextId, ScriptName, COMMENT) VALUES
+(13, 1, 45872, 0, 0, 31, 0, 3, 23837, 0, 0, 0, 0, '', 'Defibrillate');
+
+SET @ENTRY := 25678;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Doctor Razorgin - On Aggro - Say Line 0 (random)'),
+(@ENTRY,0,1,2,1,0,100,0,3000,3000,30000,30000,11,45872,0,0,0,0,0,1,0,0,0,0,0,0,0,'Doctor Razorgin - OOC - Cast Defibrillate'),
+(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Doctor Razorgin - Ooc - Say Line 1 (random)');
+
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`,`BroadcastTextId`) VALUES
+(@ENTRY,0,0,'Ah, good... more parts!',14,0,100,0,0,0,'Part of the Doctor Razorgin on aggro lines',24872),
+(@ENTRY,0,1,'Fresh meat!',14,0,100,0,0,0,'Part of the Doctor Razorgin on aggro lines',24871),
+(@ENTRY,0,2,'The doctor is in!',14,0,100,0,0,0,'Part of the Doctor Razorgin on aggro lines',24870),
+(@ENTRY,0,3,'I recommened evisceration!',14,0,100,0,0,0,'Part of the Doctor Razorgin on aggro lines',24873),
+(@ENTRY,1,0,'Clear!',14,0,100,0,0,0,'Part of the Doctor Razorgin ooc lines',24867),
+(@ENTRY,1,1,'It''s no good... you need more work first.',14,0,100,0,0,0,'Part of the Doctor Razorgin ooc lines',24869),
+(@ENTRY,1,2,'Live, damn you!',14,0,100,0,0,0,'Part of the Doctor Razorgin ooc lines',24868);
+
+UPDATE `creature` SET `position_x`=4402.431152, `position_y`=4554.557129, `position_z`=88.743332, `orientation`=0.395920, `MovementType`=0, `spawndist`=0 WHERE `id`=@ENTRY;
diff --git a/modules/acore/startup-scripts/conf.sh.dist b/modules/acore/startup-scripts/conf.sh.dist
index fbf31e3cab..774a7c01ce 100644
--- a/modules/acore/startup-scripts/conf.sh.dist
+++ b/modules/acore/startup-scripts/conf.sh.dist
@@ -1,36 +1,50 @@
# enable/disable GDB execution
export GDB_ENABLED=0
-# gdb file
+# [optional] gdb file
+# default: gdb.txt
export GDB=""
# directory where binary are stored
export BINPATH=""
- ### Put here the pid you configured on your worldserver.conf file ###
+# Put here the pid you configured on your worldserver.conf file
+# needed when GDB_ENABLED=1
export SERVERPID=""
-# path to conf file
+# path to configuration file (including the file name)
+# ex: /home/user/azerothcore/etc/worldserver.conf
export CONFIG=""
# path of log files
+# needed by restarter to store its logs
export LOGS_PATH="";
# exec name
+# ex: worldserver
export SERVERBIN=""
# prefix name for log files
+# to avoid collision with other restarters
export LOG_PREFIX_NAME=""
-# name of screen service ( for restarter )
+# [optional] name of screen service
# if no specified, screen util won't be used
export SCREEN_NAME=""
-# overwrite default screen options: -A -m -d -S
+# [optional] overwrite default screen options: -A -m -d -S
+# WARNING: if you are running it under a systemd service
+# please do not remove -m -d arguments from screen if are you using it,
+# or keep WITH_CONSOLE=0 .
+# otherwise the journald-logging system will take 100% of CPU slowing
+# down the whole machine. It's because a systemd service should have
+# low console output.
export SCREEN_OPTIONS=""
-# enable it to show the output
-# within console
+# enable/disable it to show the output
+# within console, if disable the output will be redirect to
+# logging files
+#
export WITH_CONSOLE=0
diff --git a/modules/acore/startup-scripts/examples/restarter-auth.sh b/modules/acore/startup-scripts/examples/restarter-auth.sh
index 579c8c5b8e..575981cf2a 100644
--- a/modules/acore/startup-scripts/examples/restarter-auth.sh
+++ b/modules/acore/startup-scripts/examples/restarter-auth.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-$PATH_RUNENGINE=""
+PATH_RUNENGINE="./"
source $PATH_RUNENGINE/run-engine
diff --git a/modules/acore/startup-scripts/examples/restarter-world.sh b/modules/acore/startup-scripts/examples/restarter-world.sh
index 036248a99f..5307eb4a76 100644
--- a/modules/acore/startup-scripts/examples/restarter-world.sh
+++ b/modules/acore/startup-scripts/examples/restarter-world.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-$PATH_RUNENGINE=""
+PATH_RUNENGINE="./"
source $PATH_RUNENGINE/run-engine
diff --git a/modules/acore/startup-scripts/examples/starter-auth.sh b/modules/acore/startup-scripts/examples/starter-auth.sh
index a6947a39fd..0aedb9bca7 100644
--- a/modules/acore/startup-scripts/examples/starter-auth.sh
+++ b/modules/acore/startup-scripts/examples/starter-auth.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-$PATH_RUNENGINE=""
+PATH_RUNENGINE="./"
source $PATH_RUNENGINE/run-engine
diff --git a/modules/acore/startup-scripts/examples/starter-world.sh b/modules/acore/startup-scripts/examples/starter-world.sh
index 380a57c8e9..4b866dee1d 100644
--- a/modules/acore/startup-scripts/examples/starter-world.sh
+++ b/modules/acore/startup-scripts/examples/starter-world.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-$PATH_RUNENGINE=""
+PATH_RUNENGINE="./"
source $PATH_RUNENGINE/run-engine
diff --git a/modules/acore/startup-scripts/run-engine b/modules/acore/startup-scripts/run-engine
index a12ebbc3b2..86391f02a7 100644
--- a/modules/acore/startup-scripts/run-engine
+++ b/modules/acore/startup-scripts/run-engine
@@ -5,6 +5,16 @@ if [ -e "$RUN_ENGINE_PATH/conf.dist" ]; then
source "$RUN_ENGINE_PATH/conf.sh.dist"
fi
+function finish {
+ if [ ! -z "$SCREEN_NAME" ]; then
+ screen -X -S "$SCREEN_NAME" quit
+ fi
+}
+
+# disabled for now, but could be useful if we want
+# shutdown the process if restarter crashes for some reason
+# trap finish EXIT
+
function configureFiles() {
TRACE_BEGIN_STRING="SIGSEGV"
TRACE_FILE="$LOGS_PATH/"$LOG_PREFIX_NAME"_trace.log"
@@ -100,3 +110,4 @@ function restarter() {
sleep 10
done
}
+
diff --git a/modules/acore/startup-scripts/starter b/modules/acore/startup-scripts/starter
index 2f98ea40f9..dcb5a5c97f 100755
--- a/modules/acore/startup-scripts/starter
+++ b/modules/acore/startup-scripts/starter
@@ -4,9 +4,9 @@ GDB_FILE="$2"
CONFIG="$3"
SYSLOG="$4"
SYSERR="$5"
-GBD_ENABLED="$6"
+GDB_ENABLED="$6"
-if [ $GBD_ENABLED -eq 1 ]; then
+if [ $GDB_ENABLED -eq 1 ]; then
echo "set logging on" > "$GDB_FILE"
echo "set debug timestamp" >> "$GDB_FILE"
echo "run -c $3" >> "$GDB_FILE"
@@ -22,6 +22,6 @@ if [ $GBD_ENABLED -eq 1 ]; then
gdb -x $GDB_FILE --batch $1 > >(tee ${SYSLOG}) 2> >(tee ${SYSERR} >&2)
fi
-elif [ $GBD_ENABLED -eq 0 ]; then
+elif [ $GDB_ENABLED -eq 0 ]; then
"./$1" -c "$CONFIG"
fi
diff --git a/src/authserver/Thumbs.db b/src/authserver/Thumbs.db
deleted file mode 100644
index a7bf7199aa..0000000000
--- a/src/authserver/Thumbs.db
+++ /dev/null
Binary files differ
diff --git a/src/game/AI/CoreAI/PetAI.cpp b/src/game/AI/CoreAI/PetAI.cpp
index 66edbc5418..8e2516db73 100644
--- a/src/game/AI/CoreAI/PetAI.cpp
+++ b/src/game/AI/CoreAI/PetAI.cpp
@@ -99,6 +99,10 @@ void PetAI::UpdateAI(uint32 diff)
Unit* owner = me->GetCharmerOrOwner();
+ //if Pet is in combat put player in combat
+ if (me->IsInCombat())
+ owner->IsInCombat();
+
if (m_updateAlliesTimer <= diff)
// UpdateAllies self set update timer
UpdateAllies();
diff --git a/src/game/DungeonFinding/LFGMgr.cpp b/src/game/DungeonFinding/LFGMgr.cpp
index 497eeeee7c..14b7f1e29b 100644
--- a/src/game/DungeonFinding/LFGMgr.cpp
+++ b/src/game/DungeonFinding/LFGMgr.cpp
@@ -419,6 +419,9 @@ void LFGMgr::InitializeLockedDungeons(Player* player, uint8 level /* = 0 */)
lockData = LFG_LOCKSTATUS_MISSING_ITEM;
}
+
+ sScriptMgr->OnInitializeLockedDungeons(player, level, lockData);
+
/* TODO VoA closed if WG is not under team control (LFG_LOCKSTATUS_RAID_LOCKED)
lockData = LFG_LOCKSTATUS_TOO_LOW_GEAR_SCORE;
lockData = LFG_LOCKSTATUS_TOO_HIGH_GEAR_SCORE;
@@ -429,6 +432,9 @@ void LFGMgr::InitializeLockedDungeons(Player* player, uint8 level /* = 0 */)
if (lockData)
lock[dungeon->Entry()] = lockData;
}
+
+ sScriptMgr->OnAfterInitializeLockedDungeons(player);
+
SetLockedDungeons(guid, lock);
}
@@ -713,7 +719,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
*/
void LFGMgr::LeaveLfg(uint64 guid)
{
- ;//sLog->outDebug((LOG_FILTER_LFG, "LFGMgr::Leave: [" UI64FMTD "]", guid);
+ //sLog->outDebug((LOG_FILTER_LFG, "LFGMgr::LeaveLfg: [" UI64FMTD "]", guid);
uint64 gguid = IS_GROUP_GUID(guid) ? guid : GetGroup(guid);
LfgState state = GetState(guid);
diff --git a/src/game/Entities/Pet/Pet.cpp b/src/game/Entities/Pet/Pet.cpp
index 5dfe7fc228..d405b118fc 100644
--- a/src/game/Entities/Pet/Pet.cpp
+++ b/src/game/Entities/Pet/Pet.cpp
@@ -770,19 +770,22 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
}
case SUMMON_PET:
{
- SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)));
- SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)));
+
+ if (pInfo)
+ {
+ SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(pInfo->min_dmg));
+ SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(pInfo->max_dmg));
+ }
+ else
+ {
+ SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)));
+ SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)));
+ }
switch(GetEntry())
{
case NPC_FELGUARD:
{
- float highAmt = petlevel / 11.0f;
- float lowAmt = petlevel / 12.0f;
-
- SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, lowAmt*lowAmt*lowAmt);
- SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, highAmt*highAmt*highAmt);
-
// xinef: Glyph of Felguard, so ugly im crying... no appropriate spell
if (AuraEffect* aurEff = m_owner->GetAuraEffectDummy(SPELL_GLYPH_OF_FELGUARD))
SetModifierValue(UNIT_MOD_ATTACK_POWER, TOTAL_PCT, 1.0f + float(aurEff->GetAmount() / 100.0f));
diff --git a/src/game/Entities/Player/Player.cpp b/src/game/Entities/Player/Player.cpp
index 4f18f20613..f08cb57b79 100644
--- a/src/game/Entities/Player/Player.cpp
+++ b/src/game/Entities/Player/Player.cpp
@@ -5148,6 +5148,8 @@ void Player::BuildPlayerRepop()
// set and clear other
SetByteValue(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND);
+
+ sScriptMgr->OnPlayerReleasedGhost(this);
}
void Player::ResurrectPlayer(float restore_percent, bool applySickness)
@@ -14710,7 +14712,21 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
if (canTalk)
{
- menu->GetGossipMenu().AddMenuItem(itr->second.OptionIndex, itr->second.OptionIcon, itr->second.OptionText, 0, itr->second.OptionType, itr->second.BoxText, itr->second.BoxMoney, itr->second.BoxCoded);
+ std::string strOptionText = itr->second.OptionText;
+ std::string strBoxText = itr->second.BoxText;
+
+ int32 locale = GetSession()->GetSessionDbLocaleIndex();
+ if (locale >= 0)
+ {
+ uint32 idxEntry = MAKE_PAIR32(menuId, itr->second.OptionIndex);
+ if (GossipMenuItemsLocale const* no = sObjectMgr->GetGossipMenuItemsLocale(idxEntry))
+ {
+ ObjectMgr::GetLocaleString(no->OptionText, locale, strOptionText);
+ ObjectMgr::GetLocaleString(no->BoxText, locale, strBoxText);
+ }
+ }
+
+ menu->GetGossipMenu().AddMenuItem(itr->second.OptionIndex, itr->second.OptionIcon, strOptionText, 0, itr->second.OptionType, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded);
menu->GetGossipMenu().AddGossipMenuItemData(itr->second.OptionIndex, itr->second.ActionMenuId, itr->second.ActionPoiId);
}
}
@@ -15056,10 +15072,20 @@ void Player::SendPreparedQuest(uint64 guid)
if (!gossiptext->Options[0].Text_0.empty())
{
title = gossiptext->Options[0].Text_0;
+
+ int loc_idx = GetSession()->GetSessionDbLocaleIndex();
+ if (loc_idx >= 0)
+ if (NpcTextLocale const* nl = sObjectMgr->GetNpcTextLocale(textid))
+ ObjectMgr::GetLocaleString(nl->Text_0[0], loc_idx, title);
}
else
{
title = gossiptext->Options[0].Text_1;
+
+ int loc_idx = GetSession()->GetSessionDbLocaleIndex();
+ if (loc_idx >= 0)
+ if (NpcTextLocale const* nl = sObjectMgr->GetNpcTextLocale(textid))
+ ObjectMgr::GetLocaleString(nl->Text_1[0], loc_idx, title);
}
}
}
@@ -25837,7 +25863,7 @@ void Player::_SaveCharacter(bool create, SQLTransaction& trans)
stmt->setString(index++, GetName());
stmt->setUInt8(index++, getRace(true));
stmt->setUInt8(index++, getClass());
- stmt->setUInt8(index++, getGender());
+ stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
stmt->setUInt8(index++, getLevel());
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
stmt->setUInt32(index++, GetMoney());
@@ -25942,7 +25968,7 @@ void Player::_SaveCharacter(bool create, SQLTransaction& trans)
stmt->setString(index++, GetName());
stmt->setUInt8(index++, getRace(true));
stmt->setUInt8(index++, getClass());
- stmt->setUInt8(index++, getGender());
+ stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
stmt->setUInt8(index++, getLevel());
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
stmt->setUInt32(index++, GetMoney());
diff --git a/src/game/Entities/Unit/Unit.cpp b/src/game/Entities/Unit/Unit.cpp
index d6063b3fa2..5508d5fce2 100644
--- a/src/game/Entities/Unit/Unit.cpp
+++ b/src/game/Entities/Unit/Unit.cpp
@@ -13635,25 +13635,38 @@ int32 Unit::ModSpellDuration(SpellInfo const* spellProto, Unit const* target, in
return std::max(duration, 0);
}
-void Unit::ModSpellCastTime(SpellInfo const* spellProto, int32 & castTime, Spell* spell)
-{
- if (!spellProto || castTime < 0)
+void Unit::ModSpellCastTime(SpellInfo const* spellInfo, int32 & castTime, Spell* spell)
+{
+ if (!spellInfo || castTime < 0)
+ return;
+
+ if (spellInfo->IsChanneled() && !(spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION))
return;
+
// called from caster
if (Player* modOwner = GetSpellModOwner())
- modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_CASTING_TIME, castTime, spell, bool(modOwner != this && !IsPet()));
+ // TODO:(MadAgos) Eventually check and delete the bool argument
+ modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_CASTING_TIME, castTime, spell, bool(modOwner != this && !IsPet()));
- if (!spellProto->HasAttribute(SpellAttr0(SPELL_ATTR0_ABILITY|SPELL_ATTR0_TRADESPELL)) && (spellProto->SpellFamilyName || GetTypeId() != TYPEID_PLAYER))
+ switch (spellInfo->DmgClass)
{
- if (CanInstantCast())
- castTime = 0;
- else
+ case SPELL_DAMAGE_CLASS_NONE:
+ if (spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION) // required double check
castTime = int32(float(castTime) * GetFloatValue(UNIT_MOD_CAST_SPEED));
- }
- else if (spellProto->HasAttribute(SPELL_ATTR0_REQ_AMMO) && !spellProto->HasAttribute(SPELL_ATTR2_AUTOREPEAT_FLAG))
+ else if (spellInfo->SpellVisual[0] == 3881 && HasAura(67556)) // cooking with Chef Hat.
+ castTime = 500;
+ break;
+ case SPELL_DAMAGE_CLASS_MELEE:
+ break; // no known cases
+ case SPELL_DAMAGE_CLASS_MAGIC:
+ castTime = int32(float(castTime) * GetFloatValue(UNIT_MOD_CAST_SPEED));
+ break;
+ case SPELL_DAMAGE_CLASS_RANGED:
castTime = int32(float(castTime) * m_modAttackSpeedPct[RANGED_ATTACK]);
- else if (spellProto->SpellVisual[0] == 3881 && HasAura(67556)) // cooking with Chef Hat.
- castTime = 500;
+ break;
+ default:
+ break;
+ }
}
DiminishingLevels Unit::GetDiminishing(DiminishingGroup group)
@@ -15404,6 +15417,9 @@ bool Unit::IsPolymorphed() const
void Unit::SetDisplayId(uint32 modelId)
{
SetUInt32Value(UNIT_FIELD_DISPLAYID, modelId);
+ // Set Gender by modelId
+ if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId))
+ SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender);
}
void Unit::RestoreDisplayId()
diff --git a/src/game/Globals/ObjectMgr.cpp b/src/game/Globals/ObjectMgr.cpp
index 2200e6c440..df975b2c23 100644
--- a/src/game/Globals/ObjectMgr.cpp
+++ b/src/game/Globals/ObjectMgr.cpp
@@ -3078,8 +3078,8 @@ void ObjectMgr::LoadPetLevelInfo()
{
uint32 oldMSTime = getMSTime();
- // 0 1 2 3 4 5 6 7 8 9
- QueryResult result = WorldDatabase.Query("SELECT creature_entry, level, hp, mana, str, agi, sta, inte, spi, armor FROM pet_levelstats");
+ // 0 1 2 3 4 5 6 7 8 9 10 11
+ QueryResult result = WorldDatabase.Query("SELECT creature_entry, level, hp, mana, str, agi, sta, inte, spi, armor, min_dmg, max_dmg FROM pet_levelstats");
if (!result)
{
@@ -3130,7 +3130,8 @@ void ObjectMgr::LoadPetLevelInfo()
pLevelInfo->health = fields[2].GetUInt16();
pLevelInfo->mana = fields[3].GetUInt16();
pLevelInfo->armor = fields[9].GetUInt32();
-
+ pLevelInfo->min_dmg= fields[10].GetUInt16();
+ pLevelInfo->max_dmg= fields[11].GetUInt16();
for (int i = 0; i < MAX_STATS; i++)
{
pLevelInfo->stats[i] = fields[i+4].GetUInt16();
diff --git a/src/game/Globals/ObjectMgr.h b/src/game/Globals/ObjectMgr.h
index 85572634af..bca5b23522 100644
--- a/src/game/Globals/ObjectMgr.h
+++ b/src/game/Globals/ObjectMgr.h
@@ -488,12 +488,14 @@ typedef std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator
struct PetLevelInfo
{
- PetLevelInfo() : health(0), mana(0), armor(0) { for (uint8 i=0; i < MAX_STATS; ++i) stats[i] = 0; }
+ PetLevelInfo() : health(0), mana(0), armor(0), min_dmg(0), max_dmg(0) { for (uint8 i=0; i < MAX_STATS; ++i) stats[i] = 0; }
uint16 stats[MAX_STATS];
uint16 health;
uint16 mana;
- uint16 armor;
+ uint32 armor;
+ uint16 min_dmg;
+ uint16 max_dmg;
};
struct MailLevelReward
diff --git a/src/game/Handlers/CharacterHandler.cpp b/src/game/Handlers/CharacterHandler.cpp
index 08e3017429..d3c294977d 100644
--- a/src/game/Handlers/CharacterHandler.cpp
+++ b/src/game/Handlers/CharacterHandler.cpp
@@ -1072,9 +1072,12 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder* holder)
SendNotification(LANG_RESET_TALENTS);
}
- if (pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST))
+ if (pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST)) {
pCurrChar->RemoveAtLoginFlag(AT_LOGIN_FIRST);
+ sScriptMgr->OnFirstLogin(pCurrChar);
+ }
+
if (pCurrChar->HasAtLoginFlag(AT_LOGIN_CHECK_ACHIEVS))
{
pCurrChar->RemoveAtLoginFlag(AT_LOGIN_CHECK_ACHIEVS, true);
diff --git a/src/game/Maps/Map.cpp b/src/game/Maps/Map.cpp
index 77be252596..5fa7b8d759 100644
--- a/src/game/Maps/Map.cpp
+++ b/src/game/Maps/Map.cpp
@@ -1813,7 +1813,7 @@ float Map::GetHeight(float x, float y, float z, bool checkVMap /*= true*/, float
// we are already under the surface or vmap height above map heigt
// or if the distance of the vmap height is less the land height distance
- if (z < mapHeight || vmapHeight > mapHeight || fabs(mapHeight-z) > fabs(vmapHeight-z))
+ if (vmapHeight > mapHeight || std::fabs(mapHeight - z) > std::fabs(vmapHeight - z))
return vmapHeight;
else
return mapHeight; // better use .map surface height
diff --git a/src/game/Movement/Spline/MovementTypedefs.h b/src/game/Movement/Spline/MovementTypedefs.h
index f28c075a1b..5c92745820 100644
--- a/src/game/Movement/Spline/MovementTypedefs.h
+++ b/src/game/Movement/Spline/MovementTypedefs.h
@@ -35,12 +35,6 @@ namespace Movement
float computeFallTime(float path_length, bool isSafeFall);
float computeFallElevation(float t_passed, bool isSafeFall, float start_velocity = 0.0f);
-#ifndef static_assert
- #define CONCAT(x, y) CONCAT1 (x, y)
- #define CONCAT1(x, y) x##y
- #define static_assert(expr, msg) typedef char CONCAT(static_assert_failed_at_line_, __LINE__) [(expr) ? 1 : -1]
-#endif
-
template<class T, T limit>
class counter
{
diff --git a/src/game/Scripting/ScriptMgr.cpp b/src/game/Scripting/ScriptMgr.cpp
index 95aebda24d..bea0e71a02 100644
--- a/src/game/Scripting/ScriptMgr.cpp
+++ b/src/game/Scripting/ScriptMgr.cpp
@@ -1159,6 +1159,11 @@ bool ScriptMgr::OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target)
}
// Player
+void ScriptMgr::OnPlayerReleasedGhost(Player* player)
+{
+ FOREACH_SCRIPT(PlayerScript)->OnPlayerReleasedGhost(player);
+}
+
void ScriptMgr::OnPVPKill(Player* killer, Player* killed)
{
FOREACH_SCRIPT(PlayerScript)->OnPVPKill(killer, killed);
@@ -1374,6 +1379,11 @@ void ScriptMgr::OnQuestRewardItem(Player* player, Item* item, uint32 count)
FOREACH_SCRIPT(PlayerScript)->OnQuestRewardItem(player, item, count);
}
+void ScriptMgr::OnFirstLogin(Player* player)
+{
+ FOREACH_SCRIPT(PlayerScript)->OnFirstLogin(player);
+}
+
// Guild
void ScriptMgr::OnGuildAddMember(Guild* guild, Player* player, uint8& plRank)
{
@@ -1490,6 +1500,16 @@ void ScriptMgr::OnBeforeDropAddItem(Player const* player, Loot& loot, LootStoreI
FOREACH_SCRIPT(GlobalScript)->OnBeforeDropAddItem(player, loot, LootStoreItem);
}
+void ScriptMgr::OnInitializeLockedDungeons(Player* player, uint8& level, uint32& lockData)
+{
+ FOREACH_SCRIPT(GlobalScript)->OnInitializeLockedDungeons(player, level, lockData);
+}
+
+void ScriptMgr::OnAfterInitializeLockedDungeons(Player* player)
+{
+ FOREACH_SCRIPT(GlobalScript)->OnAfterInitializeLockedDungeons(player);
+}
+
uint32 ScriptMgr::DealDamage(Unit* AttackerUnit, Unit *pVictim, uint32 damage, DamageEffectType damagetype)
{
FOR_SCRIPTS_RET(UnitScript, itr, end, damage)
diff --git a/src/game/Scripting/ScriptMgr.h b/src/game/Scripting/ScriptMgr.h
index 6f8b030db4..1f0965f022 100644
--- a/src/game/Scripting/ScriptMgr.h
+++ b/src/game/Scripting/ScriptMgr.h
@@ -757,6 +757,7 @@ class PlayerScript : public ScriptObject
PlayerScript(const char* name);
public:
+ virtual void OnPlayerReleasedGhost(Player* /*player*/) { }
// Called when a player kills another player
virtual void OnPVPKill(Player* /*killer*/, Player* /*killed*/) { }
@@ -905,6 +906,8 @@ class PlayerScript : public ScriptObject
virtual void OnAfterUpdateAttackPowerAndDamage(Player* /*player*/, float& /*level*/, float& /*base_attPower*/, float& /*attPowerMod*/, float& /*attPowerMultiplier*/, bool /*ranged*/) { }
virtual void OnBeforeInitTalentForLevel(Player* /*player*/, uint8& /*level*/, uint32& /*talentPointsForLevel*/) { }
+
+ virtual void OnFirstLogin(Player* /*player*/) { }
};
class GuildScript : public ScriptObject
@@ -990,6 +993,9 @@ class GlobalScript : public ScriptObject
virtual void OnMirrorImageDisplayItem(const Item* /*item*/, uint32& /*display*/) { }
virtual void OnAfterRefCount(LootStoreItem* /*LootStoreItem*/, uint32& /*maxcount*/) { }
virtual void OnBeforeDropAddItem(Player const* /*player*/, Loot& /*loot*/, LootStoreItem* /*LootStoreItem*/) { }
+
+ virtual void OnInitializeLockedDungeons(Player* /*player*/, uint8& /*level*/, uint32& /*lockData*/) { }
+ virtual void OnAfterInitializeLockedDungeons(Player* /*player*/) { }
// On Before arena points distribution
virtual void OnBeforeUpdateArenaPoints(ArenaTeam* /*at*/, std::map<uint32, uint32> & /*ap*/) { }
@@ -1171,6 +1177,7 @@ class ScriptMgr
public: /* PlayerScript */
+ void OnPlayerReleasedGhost(Player* player);
void OnPVPKill(Player* killer, Player* killed);
void OnCreatureKill(Player* killer, Creature* killed);
void OnPlayerKilledByCreature(Creature* killer, Player* killed);
@@ -1223,6 +1230,7 @@ class ScriptMgr
void OnBeforeUpdateAttackPowerAndDamage(Player* player, float& level, float& val2, bool ranged);
void OnAfterUpdateAttackPowerAndDamage(Player* player, float& level, float& base_attPower, float& attPowerMod, float& attPowerMultiplier, bool ranged);
void OnBeforeInitTalentForLevel(Player* player, uint8& level, uint32& talentPointsForLevel);
+ void OnFirstLogin(Player* player);
public: /* GuildScript */
@@ -1253,6 +1261,9 @@ class ScriptMgr
void OnBeforeUpdateArenaPoints(ArenaTeam* at, std::map<uint32, uint32> &ap);
void OnAfterRefCount(LootStoreItem* LootStoreItem, uint32 &maxcount);
void OnBeforeDropAddItem(Player const* player, Loot& loot, LootStoreItem* LootStoreItem);
+ void OnInitializeLockedDungeons(Player* player, uint8& level, uint32& lockData);
+ void OnAfterInitializeLockedDungeons(Player* player);
+
public: /* Scheduled scripts */
diff --git a/src/game/Spells/Spell.cpp b/src/game/Spells/Spell.cpp
index a72675b7c8..255283c611 100644
--- a/src/game/Spells/Spell.cpp
+++ b/src/game/Spells/Spell.cpp
@@ -3758,6 +3758,7 @@ void Spell::handle_immediate()
// Apply duration mod
if (Player* modOwner = m_caster->GetSpellModOwner())
modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_DURATION, duration);
+
// Apply haste mods
if (m_caster->HasAuraTypeWithAffectMask(SPELL_AURA_PERIODIC_HASTE, m_spellInfo) || m_spellInfo->HasAttribute(SPELL_ATTR5_HASTE_AFFECT_DURATION))
duration = int32(duration * m_caster->GetFloatValue(UNIT_MOD_CAST_SPEED));
@@ -3780,10 +3781,10 @@ void Spell::handle_immediate()
// process immediate effects (items, ground, etc.) also initialize some variables
_handle_immediate_phase();
- for (std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ for (std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
DoAllEffectOnTarget(&(*ihit));
- for (std::list<GOTargetInfo>::iterator ihit= m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
+ for (std::list<GOTargetInfo>::iterator ihit = m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
DoAllEffectOnTarget(&(*ihit));
FinishTargetProcessing();
diff --git a/src/game/Spells/SpellInfo.cpp b/src/game/Spells/SpellInfo.cpp
index 1927b2d3df..be189de05c 100644
--- a/src/game/Spells/SpellInfo.cpp
+++ b/src/game/Spells/SpellInfo.cpp
@@ -2013,9 +2013,19 @@ AuraStateType SpellInfo::LoadAuraState() const
// Faerie Fire (druid versions)
if (SpellFamilyName == SPELLFAMILY_DRUID && SpellFamilyFlags[0] & 0x400)
return AURA_STATE_FAERIE_FIRE;
+
+ // Any Spells that prevent spells can be added here.
+ uint32 StealthPreventionSpellList[] = { 9991, 35331, 9806, 35325 };
+
+ // Goes through each of the spells and identifies them as Stealth Prevention Spell.
+ for (int i = 0; i < sizeof(StealthPreventionSpellList) / sizeof(uint32); i++) {
+ if (Id == StealthPreventionSpellList[i]) {
+ return AURA_STATE_FAERIE_FIRE;
+ }
+ }
// Sting (hunter's pet ability)
- if (GetCategory() == 1133 || Id == 35325)
+ if (GetCategory() == 1133)
return AURA_STATE_FAERIE_FIRE;
// Victorious
diff --git a/src/scripts/Commands/cs_character.cpp b/src/scripts/Commands/cs_character.cpp
index c2b1d5d6c0..d874108406 100644
--- a/src/scripts/Commands/cs_character.cpp
+++ b/src/scripts/Commands/cs_character.cpp
@@ -18,6 +18,7 @@ EndScriptData */
#include "Player.h"
#include "ReputationMgr.h"
#include "ScriptMgr.h"
+#include "Implementation/CharacterDatabase.h"
class character_commandscript : public CommandScript
{
@@ -32,11 +33,21 @@ public:
{ "write", SEC_ADMINISTRATOR, true, &HandlePDumpWriteCommand, "" }
};
+ static std::vector<ChatCommand> characterDeletedCommandTable =
+ {
+ { "delete", SEC_CONSOLE, true, &HandleCharacterDeletedDeleteCommand, "" },
+ { "list", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedListCommand, "" },
+ { "restore", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedRestoreCommand, "" },
+ { "old", SEC_CONSOLE, true, &HandleCharacterDeletedOldCommand, "" },
+ };
+
static std::vector<ChatCommand> characterCommandTable =
{
{ "customize", SEC_GAMEMASTER, true, &HandleCharacterCustomizeCommand, "" },
{ "changefaction", SEC_GAMEMASTER, true, &HandleCharacterChangeFactionCommand, "" },
{ "changerace", SEC_GAMEMASTER, true, &HandleCharacterChangeRaceCommand, "" },
+ { "erase", SEC_CONSOLE, true, &HandleCharacterEraseCommand, "" },
+ { "deleted", SEC_ADMINISTRATOR, true, nullptr, "", characterDeletedCommandTable },
{ "level", SEC_GAMEMASTER, true, &HandleCharacterLevelCommand, "" },
{ "rename", SEC_GAMEMASTER, true, &HandleCharacterRenameCommand, "" },
{ "reputation", SEC_GAMEMASTER, true, &HandleCharacterReputationCommand, "" },
@@ -45,9 +56,9 @@ public:
static std::vector<ChatCommand> commandTable =
{
- { "character", SEC_GAMEMASTER, true, nullptr, "", characterCommandTable },
+ { "character", SEC_GAMEMASTER, true, nullptr, "", characterCommandTable },
{ "levelup", SEC_GAMEMASTER, false, &HandleLevelUpCommand, "" },
- { "pdump", SEC_ADMINISTRATOR, true, nullptr, "", pdumpCommandTable }
+ { "pdump", SEC_ADMINISTRATOR, true, nullptr, "", pdumpCommandTable }
};
return commandTable;
}
@@ -62,6 +73,150 @@ public:
time_t deleteDate; ///< the date at which the character has been deleted
};
+ typedef std::list<DeletedInfo> DeletedInfoList;
+
+ /**
+ * Collects all GUIDs (and related info) from deleted characters which are still in the database.
+ *
+ * @param foundList a reference to an std::list which will be filled with info data
+ * @param searchString the search string which either contains a player GUID or a part fo the character-name
+ * @return returns false if there was a problem while selecting the characters (e.g. player name not normalizeable)
+ */
+ static bool GetDeletedCharacterInfoList(DeletedInfoList& foundList, std::string searchString)
+ {
+ PreparedQueryResult result;
+ PreparedStatement* stmt;
+ if (!searchString.empty())
+ {
+ // search by GUID
+ if (isNumeric(searchString.c_str()))
+ {
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DEL_INFO_BY_GUID);
+ stmt->setUInt32(0, uint32(atoi(searchString.c_str())));
+ result = CharacterDatabase.Query(stmt);
+ }
+ // search by name
+ else
+ {
+ if (!normalizePlayerName(searchString))
+ return false;
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DEL_INFO_BY_NAME);
+ stmt->setString(0, searchString);
+ result = CharacterDatabase.Query(stmt);
+ }
+ }
+ else
+ {
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DEL_INFO);
+ result = CharacterDatabase.Query(stmt);
+ }
+
+ if (result)
+ {
+ do
+ {
+ Field* fields = result->Fetch();
+
+ DeletedInfo info;
+
+ info.lowGuid = fields[0].GetUInt32();
+ info.name = fields[1].GetString();
+ info.accountId = fields[2].GetUInt32();
+
+ // account name will be empty for nonexisting account
+ AccountMgr::GetName(info.accountId, info.accountName);
+ info.deleteDate = time_t(fields[3].GetUInt32());
+ foundList.push_back(info);
+ }
+ while (result->NextRow());
+ }
+
+ return true;
+ }
+
+ /**
+ * Shows all deleted characters which matches the given search string, expected non empty list
+ *
+ * @see HandleCharacterDeletedListCommand
+ * @see HandleCharacterDeletedRestoreCommand
+ * @see HandleCharacterDeletedDeleteCommand
+ * @see DeletedInfoList
+ *
+ * @param foundList contains a list with all found deleted characters
+ */
+ static void HandleCharacterDeletedListHelper(DeletedInfoList const& foundList, ChatHandler* handler)
+ {
+ if (!handler->GetSession())
+ {
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_LIST_BAR);
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_LIST_HEADER);
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_LIST_BAR);
+ }
+
+ for (DeletedInfoList::const_iterator itr = foundList.begin(); itr != foundList.end(); ++itr)
+ {
+ std::string dateStr = TimeToTimestampStr(itr->deleteDate);
+
+ if (!handler->GetSession())
+ handler->PSendSysMessage(LANG_CHARACTER_DELETED_LIST_LINE_CONSOLE,
+ itr->lowGuid, itr->name.c_str(), itr->accountName.empty() ? "<Not existing>" : itr->accountName.c_str(),
+ itr->accountId, dateStr.c_str());
+ else
+ handler->PSendSysMessage(LANG_CHARACTER_DELETED_LIST_LINE_CHAT,
+ itr->lowGuid, itr->name.c_str(), itr->accountName.empty() ? "<Not existing>" : itr->accountName.c_str(),
+ itr->accountId, dateStr.c_str());
+ }
+
+ if (!handler->GetSession())
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_LIST_BAR);
+ }
+
+ /**
+ * Restore a previously deleted character
+ *
+ * @see HandleCharacterDeletedListHelper
+ * @see HandleCharacterDeletedRestoreCommand
+ * @see HandleCharacterDeletedDeleteCommand
+ * @see DeletedInfoList
+ *
+ * @param delInfo the informations about the character which will be restored
+ */
+ static void HandleCharacterDeletedRestoreHelper(DeletedInfo const& delInfo, ChatHandler* handler)
+ {
+ if (delInfo.accountName.empty()) // account does not exist
+ {
+ handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_ACCOUNT, delInfo.name.c_str(), delInfo.lowGuid, delInfo.accountId);
+ return;
+ }
+
+ // check character count
+ uint32 charcount = AccountMgr::GetCharactersCount(delInfo.accountId);
+ if (charcount >= 10)
+ {
+ handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_FULL, delInfo.name.c_str(), delInfo.lowGuid, delInfo.accountId);
+ return;
+ }
+
+ if (sObjectMgr->GetPlayerGUIDByName(delInfo.name))
+ {
+ handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_NAME, delInfo.name.c_str(), delInfo.lowGuid, delInfo.accountId);
+ return;
+ }
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_RESTORE_DELETE_INFO);
+ stmt->setString(0, delInfo.name);
+ stmt->setUInt32(1, delInfo.accountId);
+ stmt->setUInt32(2, delInfo.lowGuid);
+ CharacterDatabase.Execute(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_NAME_DATA);
+ stmt->setUInt32(0, delInfo.lowGuid);
+ if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
+ sWorld->AddGlobalPlayerData(delInfo.lowGuid, delInfo.accountId, delInfo.name, (*result)[2].GetUInt8(), (*result)[0].GetUInt8(), (*result)[1].GetUInt8(), (*result)[3].GetUInt8(), 0, 0);
+
+ }
+
static void HandleCharacterLevel(Player* player, uint64 playerGuid, uint32 oldLevel, uint32 newLevel, ChatHandler* handler)
{
if (player)
@@ -339,6 +494,222 @@ public:
return true;
}
+ /**
+ * Handles the '.character deleted list' command, which shows all deleted characters which matches the given search string
+ *
+ * @see HandleCharacterDeletedListHelper
+ * @see HandleCharacterDeletedRestoreCommand
+ * @see HandleCharacterDeletedDeleteCommand
+ * @see DeletedInfoList
+ *
+ * @param args the search string which either contains a player GUID or a part fo the character-name
+ */
+
+ static bool HandleCharacterDeletedListCommand(ChatHandler* handler, char const* args)
+ {
+ DeletedInfoList foundList;
+ if (!GetDeletedCharacterInfoList(foundList, args))
+ return false;
+
+ // if no characters have been found, output a warning
+ if (foundList.empty())
+ {
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_LIST_EMPTY);
+ return false;
+ }
+
+ HandleCharacterDeletedListHelper(foundList, handler);
+
+ return true;
+ }
+
+ /**
+ * Handles the '.character deleted restore' command, which restores all deleted characters which matches the given search string
+ *
+ * The command automatically calls '.character deleted list' command with the search string to show all restored characters.
+ *
+ * @see HandleCharacterDeletedRestoreHelper
+ * @see HandleCharacterDeletedListCommand
+ * @see HandleCharacterDeletedDeleteCommand
+ *
+ * @param args the search string which either contains a player GUID or a part of the character-name
+ */
+ static bool HandleCharacterDeletedRestoreCommand(ChatHandler* handler, char const* args)
+ {
+ // It is required to submit at least one argument
+ if (!*args)
+ return false;
+
+ std::string searchString;
+ std::string newCharName;
+ uint32 newAccount = 0;
+
+ // GCC by some strange reason fail build code without temporary variable
+ std::istringstream params(args);
+ params >> searchString >> newCharName >> newAccount;
+
+ DeletedInfoList foundList;
+ if (!GetDeletedCharacterInfoList(foundList, searchString))
+ return false;
+
+ if (foundList.empty())
+ {
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_LIST_EMPTY);
+ return false;
+ }
+
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_RESTORE);
+ HandleCharacterDeletedListHelper(foundList, handler);
+
+ if (newCharName.empty())
+ {
+ // Drop nonexisting account cases
+ for (DeletedInfoList::iterator itr = foundList.begin(); itr != foundList.end(); ++itr)
+ HandleCharacterDeletedRestoreHelper(*itr, handler);
+ }
+ else if (foundList.size() == 1 && normalizePlayerName(newCharName))
+ {
+ DeletedInfo delInfo = foundList.front();
+
+ // update name
+ delInfo.name = newCharName;
+
+ // if new account provided update deleted info
+ if (newAccount && newAccount != delInfo.accountId)
+ {
+ delInfo.accountId = newAccount;
+ AccountMgr::GetName(newAccount, delInfo.accountName);
+ }
+
+ HandleCharacterDeletedRestoreHelper(delInfo, handler);
+ }
+ else
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_ERR_RENAME);
+
+ return true;
+ }
+
+ /**
+ * Handles the '.character deleted delete' command, which completely deletes all deleted characters which matches the given search string
+ *
+ * @see Player::GetDeletedCharacterGUIDs
+ * @see Player::DeleteFromDB
+ * @see HandleCharacterDeletedListCommand
+ * @see HandleCharacterDeletedRestoreCommand
+ *
+ * @param args the search string which either contains a player GUID or a part fo the character-name
+ */
+ static bool HandleCharacterDeletedDeleteCommand(ChatHandler* handler, char const* args)
+ {
+ // It is required to submit at least one argument
+ if (!*args)
+ return false;
+
+ DeletedInfoList foundList;
+ if (!GetDeletedCharacterInfoList(foundList, args))
+ return false;
+
+ if (foundList.empty())
+ {
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_LIST_EMPTY);
+ return false;
+ }
+
+ handler->SendSysMessage(LANG_CHARACTER_DELETED_DELETE);
+ HandleCharacterDeletedListHelper(foundList, handler);
+
+ // Call the appropriate function to delete them (current account for deleted characters is 0)
+ for (DeletedInfoList::const_iterator itr = foundList.begin(); itr != foundList.end(); ++itr)
+ Player::DeleteFromDB(itr->lowGuid, 0, false, true);
+
+ return true;
+ }
+
+ /**
+ * Handles the '.character deleted old' command, which completely deletes all deleted characters deleted with some days ago
+ *
+ * @see Player::DeleteOldCharacters
+ * @see Player::DeleteFromDB
+ * @see HandleCharacterDeletedDeleteCommand
+ * @see HandleCharacterDeletedListCommand
+ * @see HandleCharacterDeletedRestoreCommand
+ *
+ * @param args the search string which either contains a player GUID or a part of the character-name
+ */
+ static bool HandleCharacterDeletedOldCommand(ChatHandler* /*handler*/, char const* args)
+ {
+ int32 keepDays = sWorld->getIntConfig(CONFIG_CHARDELETE_KEEP_DAYS);
+
+ char* daysStr = strtok((char*)args, " ");
+ if (daysStr)
+ {
+ if (!isNumeric(daysStr))
+ return false;
+
+ keepDays = atoi(daysStr);
+ if (keepDays < 0)
+ return false;
+ }
+ // config option value 0 -> disabled and can't be used
+ else if (keepDays <= 0)
+ return false;
+
+ Player::DeleteOldCharacters(uint32(keepDays));
+
+ return true;
+ }
+
+ /**
+ * Handles the '.character erase' command which completly delete a character from the DB
+ *
+ * @see Player::DeleteFromDB
+ *
+ * @param args the search string which either contains a player GUID or a part of the character-name
+ */
+ static bool HandleCharacterEraseCommand(ChatHandler* handler, char const* args)
+ {
+ if (!*args)
+ return false;
+
+ char* characterName_str = strtok((char*)args, " ");
+ if (!characterName_str)
+ return false;
+
+ std::string characterName = characterName_str;
+ if (!normalizePlayerName(characterName))
+ return false;
+
+ uint32 characterGuid;
+ uint32 accountId;
+
+ Player* player = ObjectAccessor::FindPlayerByName(characterName);
+ if (player)
+ {
+ characterGuid = player->GetGUID();
+ accountId = player->GetSession()->GetAccountId();
+ player->GetSession()->KickPlayer();
+ }
+ else
+ {
+ characterGuid = sObjectMgr->GetPlayerGUIDByName(characterName);
+ if (!characterGuid)
+ {
+ handler->PSendSysMessage(LANG_NO_PLAYER, characterName.c_str());
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+ accountId = sObjectMgr->GetPlayerAccountIdByGUID(characterGuid);
+ }
+
+ std::string accountName;
+ AccountMgr::GetName(accountId, accountName);
+
+ Player::DeleteFromDB(characterGuid, accountId, true, true);
+ handler->PSendSysMessage(LANG_CHARACTER_DELETED, characterName.c_str(), characterGuid, accountName.c_str(), accountId);
+
+ return true;
+ }
+
static bool HandleLevelUpCommand(ChatHandler* handler, char const* args)
{
char* nameStr;
@@ -506,7 +877,7 @@ public:
do{
uint64 _guid = result->Fetch()[0].GetUInt64();
char buff[20];
- sprintf(buff,"%I64u", _guid);
+ sprintf(buff,"%u", (uint32)_guid);
switch(PlayerDumpWriter().WriteDump(buff, uint32(_guid)))
{
case DUMP_SUCCESS:
diff --git a/src/scripts/Commands/cs_wp.cpp b/src/scripts/Commands/cs_wp.cpp
index cdafdc2f27..870fb95e52 100644
--- a/src/scripts/Commands/cs_wp.cpp
+++ b/src/scripts/Commands/cs_wp.cpp
@@ -783,7 +783,7 @@ public:
if (show == "info")
{
// Check if the user did specify a visual waypoint
- if (target && target->GetEntry() != VISUAL_WAYPOINT)
+ if (!target || target->GetEntry() != VISUAL_WAYPOINT)
{
handler->PSendSysMessage(LANG_WAYPOINT_VP_SELECT);
handler->SetSentErrorMessage(true);
diff --git a/src/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
index 6813a94ba6..d629c582d8 100644
--- a/src/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
+++ b/src/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
@@ -89,6 +89,7 @@ class boss_akilzon : public CreatureScript
memset(BirdGUIDs, 0, sizeof(BirdGUIDs));
StormCount = 0;
isRaining = false;
+ instance->SetData(DATA_AKILZONEVENT, NOT_STARTED);
SetWeather(WEATHER_STATE_FINE, 0.0f);
}
@@ -111,6 +112,7 @@ class boss_akilzon : public CreatureScript
{
Talk(SAY_DEATH);
_JustDied();
+ instance->SetData(DATA_AKILZONEVENT, DONE);
}
void KilledUnit(Unit* who)
diff --git a/src/scripts/EasternKingdoms/zone_hinterlands.cpp b/src/scripts/EasternKingdoms/zone_hinterlands.cpp
index 751acb721e..a09f7df1b5 100644
--- a/src/scripts/EasternKingdoms/zone_hinterlands.cpp
+++ b/src/scripts/EasternKingdoms/zone_hinterlands.cpp
@@ -170,6 +170,7 @@ public:
{
_IsByOutrunner = false;
spawnId = 0;
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
}
void Reset()
@@ -228,6 +229,7 @@ public:
void sQuestAccept(Player* player, Quest const* quest)
{
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
if (quest->GetQuestId() == QUEST_RINJI_TRAPPED)
{
if (GameObject* go = me->FindNearestGameObject(GO_RINJI_CAGE, INTERACTION_DISTANCE))
diff --git a/src/scripts/Events/midsummer.cpp b/src/scripts/Events/midsummer.cpp
index 8fce374e70..77ffe83dd4 100644
--- a/src/scripts/Events/midsummer.cpp
+++ b/src/scripts/Events/midsummer.cpp
@@ -201,6 +201,61 @@ class npc_midsummer_torch_target : public CreatureScript
// SPELLS
///////////////////////////////
+enum CrabDisguise
+{
+ SPELL_CRAB_DISGUISE = 46337,
+ SPELL_APPLY_DIGUISE = 34804,
+ SPELL_FADE_DIGUISE = 47693,
+};
+
+class spell_gen_crab_disguise : public SpellScriptLoader
+{
+public:
+ spell_gen_crab_disguise() : SpellScriptLoader("spell_gen_crab_disguise") { }
+
+ class spell_gen_crab_disguise_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_gen_crab_disguise_AuraScript);
+
+ bool Validate(SpellInfo const* /*spell*/)
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_CRAB_DISGUISE))
+ return false;
+ return true;
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Unit* caster = GetCaster())
+ {
+ caster->CastSpell(caster, SPELL_APPLY_DIGUISE, true);
+ caster->setFaction(88);
+ }
+
+ }
+
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Unit* caster = GetCaster())
+ {
+ caster->CastSpell(caster, SPELL_FADE_DIGUISE, true);
+ caster->RestoreFaction();
+ }
+ }
+
+ void Register()
+ {
+ AfterEffectApply += AuraEffectRemoveFn(spell_gen_crab_disguise_AuraScript::OnApply, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_gen_crab_disguise_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_gen_crab_disguise_AuraScript();
+ }
+};
+
enum RibbonPole
{
SPELL_RIBBON_POLE_CHANNEL_VISUAL = 29172,
@@ -513,6 +568,7 @@ void AddSC_event_midsummer_scripts()
new npc_midsummer_torch_target();
// Spells
+ new spell_gen_crab_disguise();
new spell_midsummer_ribbon_pole();
new spell_midsummer_torch_quest();
new spell_midsummer_fling_torch();
diff --git a/src/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/scripts/Kalimdor/zone_dustwallow_marsh.cpp
index 858979cde7..e69ca6f681 100644
--- a/src/scripts/Kalimdor/zone_dustwallow_marsh.cpp
+++ b/src/scripts/Kalimdor/zone_dustwallow_marsh.cpp
@@ -188,6 +188,43 @@ public:
};
/*######
+## npc_tervosh
+######*/
+
+enum Tervosh
+{
+ QUEST_MISSING_DIPLO_PT14 = 1265,
+ SPELL_PROUDMOORE_DEFENSE = 7120,
+ SAY1 = 0
+};
+
+class npc_archmage_tervosh : public CreatureScript
+{
+public:
+ npc_archmage_tervosh() : CreatureScript("npc_archmage_tervosh") { }
+
+ bool OnQuestReward(Player* player, Creature* creature, const Quest* quest, uint32 /*opt*/)
+ {
+ if (quest->GetQuestId() == QUEST_MISSING_DIPLO_PT14)
+ {
+ creature->CastSpell(player, SPELL_PROUDMOORE_DEFENSE);
+ creature->AI()->Talk(SAY1);
+ }
+ return true;
+ }
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_archmage_tervoshAI(creature);
+ }
+
+ struct npc_archmage_tervoshAI : public ScriptedAI
+ {
+ npc_archmage_tervoshAI(Creature* creature) : ScriptedAI(creature) { }
+ };
+};
+
+/*######
## npc_zelfrax
######*/
@@ -408,6 +445,7 @@ void AddSC_dustwallow_marsh()
new npc_lady_jaina_proudmoore();
new npc_nat_pagle();
new npc_private_hendel();
+ new npc_archmage_tervosh();
new npc_zelfrax();
new spell_ooze_zap();
new spell_ooze_zap_channel_end();
diff --git a/src/scripts/Kalimdor/zone_feralas.cpp b/src/scripts/Kalimdor/zone_feralas.cpp
index bc6f09242a..0db8541646 100644
--- a/src/scripts/Kalimdor/zone_feralas.cpp
+++ b/src/scripts/Kalimdor/zone_feralas.cpp
@@ -129,9 +129,9 @@ public:
//Second Ambush(3 Gorillas)
case 21:
Talk(SAY_OOX_AMBUSH);
- me->SummonCreature(NPC_GORILLA, -4595.81f, 2005.99f, 53.08f, 3.74f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
- me->SummonCreature(NPC_GORILLA, -4597.53f, 2008.31f, 52.70f, 3.78f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
- me->SummonCreature(NPC_GORILLA, -4599.37f, 2010.59f, 52.77f, 3.84f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
+ me->SummonCreature(NPC_GORILLA, -4652.76f, 1956.69f, 67.99f, 3.74f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
+ me->SummonCreature(NPC_GORILLA, -4654.73f, 1959.71f, 47.66f, 3.78f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
+ me->SummonCreature(NPC_GORILLA, -4657.01f, 1963.19f, 67.48f, 3.84f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
break;
//Third Ambush(4 Gnolls)
case 30:
diff --git a/src/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/scripts/Northrend/Naxxramas/boss_maexxna.cpp
index a7039004d0..aaad498f29 100644
--- a/src/scripts/Northrend/Naxxramas/boss_maexxna.cpp
+++ b/src/scripts/Northrend/Naxxramas/boss_maexxna.cpp
@@ -182,9 +182,11 @@ public:
target->RemoveAura(RAID_MODE(SPELL_WEB_SPRAY_10, SPELL_WEB_SPRAY_25));
uint8 pos = urand(0,2);
- target->GetMotionMaster()->MoveJump(PosWrap[pos].GetPositionX(), PosWrap[pos].GetPositionY(), PosWrap[pos].GetPositionZ(), 20, 20);
if (Creature *wrap = me->SummonCreature(NPC_WEB_WRAP, PosWrap[pos].GetPositionX(), PosWrap[pos].GetPositionY(), PosWrap[pos].GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 60000))
+ {
wrap->AI()->SetGUID(target->GetGUID());
+ target->GetMotionMaster()->MoveJump(PosWrap[pos].GetPositionX(), PosWrap[pos].GetPositionY(), PosWrap[pos].GetPositionZ(), 20, 20);
+ }
}
events.RepeatEvent(40000);
break;
diff --git a/src/scripts/Northrend/zone_dalaran.cpp b/src/scripts/Northrend/zone_dalaran.cpp
index 79476d3b74..f89c35de47 100644
--- a/src/scripts/Northrend/zone_dalaran.cpp
+++ b/src/scripts/Northrend/zone_dalaran.cpp
@@ -446,7 +446,7 @@ public:
if (!who || !who->IsInWorld() || who->GetZoneId() != 4395)
return;
- if (!me->IsWithinDist(who, 12.0f, false))
+ if (!me->IsWithinDist(who, 5.0f, false))
return;
Player* player = who->GetCharmerOrOwnerPlayerOrPlayerItself();
diff --git a/src/scripts/ScriptLoader.cpp b/src/scripts/ScriptLoader.cpp
index 5a7d499197..d948a18c55 100644
--- a/src/scripts/ScriptLoader.cpp
+++ b/src/scripts/ScriptLoader.cpp
@@ -570,6 +570,7 @@ void AddSC_outdoorpvp_gh();
// player
void AddSC_chat_log();
+void AddSC_character_creation();
#endif
@@ -642,6 +643,7 @@ void AddWorldScripts()
AddSC_npc_taxi();
AddSC_achievement_scripts();
AddSC_chat_log();
+ AddSC_character_creation();
#endif
}
diff --git a/src/scripts/Spells/spell_generic.cpp b/src/scripts/Spells/spell_generic.cpp
index d9dae48c23..880c3eeebd 100644
--- a/src/scripts/Spells/spell_generic.cpp
+++ b/src/scripts/Spells/spell_generic.cpp
@@ -2242,7 +2242,8 @@ class spell_pvp_trinket_wotf_shared_cd : public SpellScriptLoader
enum AnimalBloodPoolSpell
{
SPELL_ANIMAL_BLOOD = 46221,
- SPELL_SPAWN_BLOOD_POOL = 63471
+ SPELL_SPAWN_BLOOD_POOL = 63471,
+ FACTION_DETHA_ATTACK = 942
};
class spell_gen_animal_blood : public SpellScriptLoader
@@ -2266,13 +2267,20 @@ class spell_gen_animal_blood : public SpellScriptLoader
// Remove all auras with spell id 46221, except the one currently being applied
while (Aura* aur = GetUnitOwner()->GetOwnedAura(SPELL_ANIMAL_BLOOD, 0, 0, 0, GetAura()))
GetUnitOwner()->RemoveOwnedAura(aur);
+ if (Unit* owner = GetUnitOwner())
+ {
+ owner->setFaction(FACTION_DETHA_ATTACK);
+ }
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* owner = GetUnitOwner())
+ {
+ owner->RestoreFaction();
if (owner->IsInWater())
owner->CastSpell(owner, SPELL_SPAWN_BLOOD_POOL, true);
+ }
}
void Register()
diff --git a/src/scripts/World/CMakeLists.txt b/src/scripts/World/CMakeLists.txt
index 3b8d7066d6..42ba3faccb 100644
--- a/src/scripts/World/CMakeLists.txt
+++ b/src/scripts/World/CMakeLists.txt
@@ -22,6 +22,7 @@ set(scripts_STAT_SRCS
${AC_SCRIPTS_DIR}/World/npc_professions.cpp
${AC_SCRIPTS_DIR}/World/npc_taxi.cpp
${AC_SCRIPTS_DIR}/World/npcs_special.cpp
+ ${AC_SCRIPTS_DIR}/World/character_creation.cpp
)
AC_ADD_SCRIPT_LOADER("World" "ScriptLoader.h")
diff --git a/src/scripts/World/areatrigger_scripts.cpp b/src/scripts/World/areatrigger_scripts.cpp
index f47cb0ba85..1046034e27 100644
--- a/src/scripts/World/areatrigger_scripts.cpp
+++ b/src/scripts/World/areatrigger_scripts.cpp
@@ -320,6 +320,39 @@ class AreaTrigger_at_nats_landing : public AreaTriggerScript
};
/*######
+## at_sentry_point
+######*/
+
+enum SentryPoint
+{
+ SPELL_TELEPORT_VISUAL = 799, // TODO Find the correct spell
+ QUEST_MISSING_DIPLO_PT14 = 1265,
+ NPC_TERVOSH = 4967
+};
+
+class AreaTrigger_at_sentry_point : public AreaTriggerScript
+{
+ public:
+ AreaTrigger_at_sentry_point() : AreaTriggerScript("at_sentry_point") { }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*trigger*/)
+ {
+ auto quest_status = player->GetQuestStatus(QUEST_MISSING_DIPLO_PT14);
+ if (!player->IsAlive() || quest_status == QUEST_STATUS_NONE || quest_status == QUEST_STATUS_REWARDED)
+ return false;
+
+ if (!player->FindNearestCreature(NPC_TERVOSH, 100.0f))
+ {
+ if(Creature* tervosh = player->SummonCreature(NPC_TERVOSH, -3476.51, -4105.94, 17.1, 5.3816f, TEMPSUMMON_TIMED_DESPAWN, 60000))
+ tervosh->CastSpell(tervosh, SPELL_TELEPORT_VISUAL, true);
+ }
+
+ return true;
+ }
+};
+
+
+/*######
## at_brewfest
######*/
@@ -456,6 +489,7 @@ void AddSC_areatrigger_scripts()
new AreaTrigger_at_last_rites();
new AreaTrigger_at_sholazar_waygate();
new AreaTrigger_at_nats_landing();
+ new AreaTrigger_at_sentry_point();
new AreaTrigger_at_brewfest();
new AreaTrigger_at_area_52_entrance();
}
diff --git a/src/scripts/World/character_creation.cpp b/src/scripts/World/character_creation.cpp
new file mode 100644
index 0000000000..597dd87a0e
--- /dev/null
+++ b/src/scripts/World/character_creation.cpp
@@ -0,0 +1,56 @@
+/*
+* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2
+* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
+* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+*/
+
+#include "ScriptMgr.h"
+#include "Player.h"
+
+enum Creationabilities
+{
+ WARRIOR_CREATION_BATTLE_STANCE = 2457, // Battle Stance
+ DEATH_KNIGHT_CREATION_BLOOD_PRESENCE = 48266, // Blood Presence
+};
+
+// Instead of adding a hacky way into Player::Create, we use existing hooks to cast these spells on first character login
+class CharacterCreationProcedures : public PlayerScript
+{
+public:
+ CharacterCreationProcedures() : PlayerScript("CharacterCreationProcedures")
+ {
+ }
+
+ void OnFirstLogin(Player* player)
+ {
+ switch (player->getClass())
+ {
+ // Only two classes posses an aura on creation;
+ case CLASS_WARRIOR:
+ player->CastSpell(player, WARRIOR_CREATION_BATTLE_STANCE, true);
+ return;
+ case CLASS_DEATH_KNIGHT:
+ player->CastSpell(player, DEATH_KNIGHT_CREATION_BLOOD_PRESENCE, true);
+ return;
+ // We include, but do not change the other classes
+ case CLASS_NONE:
+ case CLASS_PALADIN:
+ case CLASS_HUNTER:
+ case CLASS_ROGUE:
+ case CLASS_PRIEST:
+ case CLASS_SHAMAN:
+ case CLASS_MAGE:
+ case CLASS_WARLOCK:
+ // case CLASS_UNK: // Does not exist!
+ case CLASS_DRUID:
+ default:
+ // Can be modified based on personal needs;
+ return;
+ }
+ }
+};
+
+void AddSC_character_creation()
+{
+ new CharacterCreationProcedures();
+} \ No newline at end of file