diff options
416 files changed, 12661 insertions, 5623 deletions
diff --git a/Makefile.am b/Makefile.am index c7da2a438ef..eb58ac488f2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -31,8 +31,7 @@ EXTRA_DIST = \ win/VC71/realmd.vcproj \ win/VC71/shared.vcproj \ win/VC71/zlib.vcproj \ - win/VC71/g3dlite.vcproj \ - win/VC71/zthread.vcproj + win/VC71/g3dlite.vcproj # Win32 project workspace for Visual Studio .NET 2005 EXTRA_DIST += \ @@ -43,8 +42,7 @@ EXTRA_DIST += \ win/VC80/realmd.vcproj \ win/VC80/shared.vcproj \ win/VC80/zlib.vcproj \ - win/VC80/g3dlite.vcproj \ - win/VC80/zthread.vcproj + win/VC80/g3dlite.vcproj # Win32 project workspace for Visual Studio .NET 2008 EXTRA_DIST += \ @@ -55,6 +53,5 @@ EXTRA_DIST += \ win/VC90/realmd.vcproj \ win/VC90/shared.vcproj \ win/VC90/zlib.vcproj \ - win/VC90/g3dlite.vcproj \ - win/VC90/zthread.vcproj + win/VC90/g3dlite.vcproj diff --git a/configure.ac b/configure.ac index ede1118be95..d1ec818ac99 100644 --- a/configure.ac +++ b/configure.ac @@ -340,7 +340,6 @@ AC_CONFIG_FILES([ dep/src/g3dlite/Makefile dep/src/sockets/Makefile dep/src/zlib/Makefile - dep/src/zthread/Makefile dep/Makefile doc/Doxyfile doc/Makefile diff --git a/dep/ACE_wrappers/m4/aio.m4 b/dep/ACE_wrappers/m4/aio.m4 index b38a8b981aa..49fa7d19afd 100644 --- a/dep/ACE_wrappers/m4/aio.m4 +++ b/dep/ACE_wrappers/m4/aio.m4 @@ -64,7 +64,6 @@ if test "$ace_has_aio_funcs" = yes; then #include <string.h> #include <errno.h> #include <stdio.h> -#include <iostream.h> #include <aio.h> diff --git a/dep/include/Makefile.am b/dep/include/Makefile.am index 3991d1e6274..455f0a81307 100644 --- a/dep/include/Makefile.am +++ b/dep/include/Makefile.am @@ -199,54 +199,6 @@ EXTRA_DIST += \ zlib/zconf.h \ zlib/zlib.h -# ZThread header files for Win32 builds -EXTRA_DIST += \ - zthread/AtomicCount.h \ - zthread/Barrier.h \ - zthread/BiasedReadWriteLock.h \ - zthread/BlockingQueue.h \ - zthread/BoundedQueue.h \ - zthread/Cancelable.h \ - zthread/ClassLockable.h \ - zthread/ConcurrentExecutor.h \ - zthread/Condition.h \ - zthread/Config.h \ - zthread/CountedPtr.h \ - zthread/CountingSemaphore.h \ - zthread/Exceptions.h \ - zthread/Executor.h \ - zthread/FairReadWriteLock.h \ - zthread/FastMutex.h \ - zthread/FastRecursiveMutex.h \ - zthread/Guard.h \ - zthread/GuardedClass.h \ - zthread/Lockable.h \ - zthread/LockedQueue.h \ - zthread/MonitoredQueue.h \ - zthread/Mutex.h \ - zthread/NonCopyable.h \ - zthread/PoolExecutor.h \ - zthread/Priority.h \ - zthread/PriorityCondition.h \ - zthread/PriorityInheritanceMutex.h \ - zthread/PriorityMutex.h \ - zthread/PrioritySemaphore.h \ - zthread/Queue.h \ - zthread/ReadWriteLock.h \ - zthread/RecursiveMutex.h \ - zthread/Runnable.h \ - zthread/Semaphore.h \ - zthread/Singleton.h \ - zthread/SynchronousExecutor.h \ - zthread/Task.h \ - zthread/Thread.h \ - zthread/ThreadLocal.h \ - zthread/ThreadLocalImpl.h \ - zthread/ThreadedExecutor.h \ - zthread/Time.h \ - zthread/Waitable.h \ - zthread/ZThread.h - # Mersenne Twister random number generator header files EXTRA_DIST += \ mersennetwister/MersenneTwister.h diff --git a/dep/include/openssl/asn1.h b/dep/include/openssl/asn1.h index 424cd348bb5..e3385226d4a 100644 --- a/dep/include/openssl/asn1.h +++ b/dep/include/openssl/asn1.h @@ -612,6 +612,7 @@ typedef struct BIT_STRING_BITNAME_st { B_ASN1_GENERALIZEDTIME #define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ B_ASN1_PRINTABLESTRING| \ B_ASN1_T61STRING| \ B_ASN1_IA5STRING| \ @@ -1217,6 +1218,7 @@ void ERR_load_ASN1_strings(void); #define ASN1_R_BAD_OBJECT_HEADER 102 #define ASN1_R_BAD_PASSWORD_READ 103 #define ASN1_R_BAD_TAG 104 +#define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 210 #define ASN1_R_BN_LIB 105 #define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 #define ASN1_R_BUFFER_TOO_SMALL 107 @@ -1306,6 +1308,7 @@ void ERR_load_ASN1_strings(void); #define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157 #define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158 #define ASN1_R_UNEXPECTED_EOC 159 +#define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 211 #define ASN1_R_UNKNOWN_FORMAT 160 #define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 #define ASN1_R_UNKNOWN_OBJECT_TYPE 162 diff --git a/dep/include/openssl/opensslconf.h b/dep/include/openssl/opensslconf.h index 231bf7bfdbe..2d571c894c7 100644 --- a/dep/include/openssl/opensslconf.h +++ b/dep/include/openssl/opensslconf.h @@ -104,8 +104,8 @@ #if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) -#define ENGINESDIR "G:\openssl_build/lib/engines" -#define OPENSSLDIR "G:\openssl_build/ssl" +#define ENGINESDIR "g:/openssl/lib/engines" +#define OPENSSLDIR "g:/openssl/ssl" #endif #endif diff --git a/dep/include/openssl/opensslv.h b/dep/include/openssl/opensslv.h index 09687b5136a..c6207f76b2c 100644 --- a/dep/include/openssl/opensslv.h +++ b/dep/include/openssl/opensslv.h @@ -25,11 +25,11 @@ * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ -#define OPENSSL_VERSION_NUMBER 0x009080afL +#define OPENSSL_VERSION_NUMBER 0x009080bfL #ifdef OPENSSL_FIPS -#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8j-fips 07 Jan 2009" +#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8k-fips 25 Mar 2009" #else -#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8j 07 Jan 2009" +#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8k 25 Mar 2009" #endif #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT diff --git a/dep/include/openssl/pem.h b/dep/include/openssl/pem.h index 6f8e01544bb..6c193f1cbfa 100644 --- a/dep/include/openssl/pem.h +++ b/dep/include/openssl/pem.h @@ -215,7 +215,9 @@ typedef struct pem_ctx_st #define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ #define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ #define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ #else @@ -355,6 +357,7 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ #define DECLARE_PEM_read_fp(name, type) /**/ #define DECLARE_PEM_write_fp(name, type) /**/ +#define DECLARE_PEM_write_fp_const(name, type) /**/ #define DECLARE_PEM_write_cb_fp(name, type) /**/ #else @@ -392,6 +395,7 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ #define DECLARE_PEM_read_bio(name, type) /**/ #define DECLARE_PEM_write_bio(name, type) /**/ +#define DECLARE_PEM_write_bio_const(name, type) /**/ #define DECLARE_PEM_write_cb_bio(name, type) /**/ #endif diff --git a/dep/include/openssl/symhacks.h b/dep/include/openssl/symhacks.h index 6cfb5fe4794..8728e6124da 100644 --- a/dep/include/openssl/symhacks.h +++ b/dep/include/openssl/symhacks.h @@ -62,6 +62,10 @@ VAX. */ #ifdef OPENSSL_SYS_VMS +/* Hack a long name in crypto/cryptlib.c */ +#undef int_CRYPTO_set_do_dynlock_callback +#define int_CRYPTO_set_do_dynlock_callback int_CRYPTO_set_do_dynlock_cb + /* Hack a long name in crypto/ex_data.c */ #undef CRYPTO_get_ex_data_implementation #define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl diff --git a/dep/lib/win32_debug/libeay32.dll b/dep/lib/win32_debug/libeay32.dll Binary files differindex 1cbc5dfc23d..79f55974cdd 100644 --- a/dep/lib/win32_debug/libeay32.dll +++ b/dep/lib/win32_debug/libeay32.dll diff --git a/dep/lib/win32_debug/libeay32.lib b/dep/lib/win32_debug/libeay32.lib Binary files differindex 70407d3e070..590c39eb75f 100644 --- a/dep/lib/win32_debug/libeay32.lib +++ b/dep/lib/win32_debug/libeay32.lib diff --git a/dep/lib/win32_release/libeay32.dll b/dep/lib/win32_release/libeay32.dll Binary files differindex ed6543efefa..9b7dc65c4c9 100644 --- a/dep/lib/win32_release/libeay32.dll +++ b/dep/lib/win32_release/libeay32.dll diff --git a/dep/lib/win32_release/libeay32.lib b/dep/lib/win32_release/libeay32.lib Binary files differindex 2796163595d..fb5a2445bbc 100644 --- a/dep/lib/win32_release/libeay32.lib +++ b/dep/lib/win32_release/libeay32.lib diff --git a/dep/lib/x64_Debug/libeay32.dll b/dep/lib/x64_Debug/libeay32.dll Binary files differindex 1a6952eeadb..d9df5ecc862 100644 --- a/dep/lib/x64_Debug/libeay32.dll +++ b/dep/lib/x64_Debug/libeay32.dll diff --git a/dep/lib/x64_Debug/libeay32.lib b/dep/lib/x64_Debug/libeay32.lib Binary files differindex e27b6ccde09..a495e921070 100644 --- a/dep/lib/x64_Debug/libeay32.lib +++ b/dep/lib/x64_Debug/libeay32.lib diff --git a/dep/lib/x64_release/libeay32.dll b/dep/lib/x64_release/libeay32.dll Binary files differindex e2d98bea828..45357905e74 100644 --- a/dep/lib/x64_release/libeay32.dll +++ b/dep/lib/x64_release/libeay32.dll diff --git a/dep/lib/x64_release/libeay32.lib b/dep/lib/x64_release/libeay32.lib Binary files differindex d004d975adb..750e837dcdf 100644 --- a/dep/lib/x64_release/libeay32.lib +++ b/dep/lib/x64_release/libeay32.lib diff --git a/dep/src/Makefile.am b/dep/src/Makefile.am index 6ae2808895c..50814f8ff13 100644 --- a/dep/src/Makefile.am +++ b/dep/src/Makefile.am @@ -19,7 +19,7 @@ ## Process this file with automake to produce Makefile.in ## Sub-directories to parse -SUBDIRS = g3dlite sockets zlib zthread +SUBDIRS = g3dlite sockets zlib ## Additional files to include when running 'make dist' # Nothing yet. diff --git a/dep/src/zthread/AtomicCount.cxx b/dep/src/zthread/AtomicCount.cxx deleted file mode 100644 index ac0d0773b12..00000000000 --- a/dep/src/zthread/AtomicCount.cxx +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2005, Eric Crahen - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is furnished - * to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -#ifndef __ZTATOMICCOUNTSELECT_H__ -#define __ZTATOMICCOUNTSELECT_H__ - -#include "zthread/AtomicCount.h" -#include "zthread/Config.h" - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -/* -// Select the correct AtomicCount implementation based on -// what the compilation environment has defined - -#ifndef ZT_VANILLA - -#if defined(HAVE_ATOMIC_LINUX) -# include "linux/AtomicCount.cxx" -#elif defined(ZT_WIN32) -# include "win32/AtomicCount.cxx" -#elif defined(ZT_WIN9X) -# include "win9x/AtomicCount.cxx" -#endif - -#endif - -// Default to an AtomicCount that just uses a FastLock -#ifndef __ZTATOMICCOUNTIMPL_H__ -# include "vanilla/SimpleAtomicCount.cxx" -#endif -*/ - -# include "vanilla/SimpleAtomicCount.cxx" - -#endif // __ZTATOMICCOUNTSELECT_H__ diff --git a/dep/src/zthread/CMakeLists.txt b/dep/src/zthread/CMakeLists.txt index 61fb1310588..c2ac36c367c 100644 --- a/dep/src/zthread/CMakeLists.txt +++ b/dep/src/zthread/CMakeLists.txt @@ -1,7 +1,6 @@ ########### next target ############### SET(ZThread_LIB_SRCS - AtomicCount.cxx Condition.cxx ConcurrentExecutor.cxx CountingSemaphore.cxx diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index d8461bf3df2..02b6323e3be 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -6,4 +6,4 @@ add_subdirectory(tools) FILE(GLOB _SQL *.sql) -install(FILES ${_SQL} DESTINATION share/trinity/sql) +install(FILES ${_SQL} DESTINATION share/trinity/sql)
\ No newline at end of file diff --git a/sql/TBC-WLK_converter/TBC-WLK_characters.sql b/sql/TBC-WLK_converter/TBC-WLK_characters.sql index 214c19fef14..9d6115a4a09 100644 --- a/sql/TBC-WLK_converter/TBC-WLK_characters.sql +++ b/sql/TBC-WLK_converter/TBC-WLK_characters.sql @@ -261,6 +261,12 @@ DELETE FROM `character_spell` WHERE `spell` IN (27354,24513,24512,24511,24494,21 UPDATE IGNORE character_spell SET spell = 2108 WHERE spell = 3104; DELETE FROM character_spell WHERE spell = 3104; +/* Remove Mana Tap */ +DELETE FROM `character_action` WHERE `type` = 0 AND `action` = 28734; +DELETE FROM `character_aura` WHERE `spell` = 28734; +DELETE FROM `character_spell` WHERE `spell` = 28734; +DELETE FROM `character_spell_cooldown` WHERE `spell` = 28734; + /* This cleanup character_action. This is like delete from character_action where type=0 and action not in character_spell for same player */ DELETE FROM ca,cs USING `character_action` ca LEFT JOIN `character_spell` cs ON ca.`guid`=cs.`guid` AND ca.`action`=cs.`spell` WHERE ca.`type`=0 AND cs.`guid` IS NULL; diff --git a/sql/TBC-WLK_converter/TBC-WLK_world.sql b/sql/TBC-WLK_converter/TBC-WLK_world.sql index a2e3833c2e4..969f8ce4c2c 100644 --- a/sql/TBC-WLK_converter/TBC-WLK_world.sql +++ b/sql/TBC-WLK_converter/TBC-WLK_world.sql @@ -314,29 +314,25 @@ INSERT IGNORE INTO `playercreateinfo_action` (`race`, `class`, `button`, `action (10, 2, 0, 6603, 0, 0), (10, 2, 1, 21084, 0, 0), (10, 2, 2, 635, 0, 0), -(10, 2, 3, 28734, 0, 0), -(10, 2, 4, 28730, 0, 0), +(10, 2, 3, 28730, 0, 0), (10, 2, 10, 159, 128, 0), (10, 2, 11, 20857, 128, 0), (10, 3, 0, 6603, 0, 0), (10, 3, 1, 2973, 0, 0), (10, 3, 2, 75, 0, 0), -(10, 3, 3, 28734, 0, 0), -(10, 3, 4, 28730, 0, 0), +(10, 3, 3, 28730, 0, 0), (10, 3, 10, 159, 128, 0), (10, 3, 11, 20857, 128, 0), (10, 4, 0, 6603, 0, 0), (10, 4, 1, 1752, 0, 0), (10, 4, 2, 2098, 0, 0), (10, 4, 3, 2764, 0, 0), -(10, 4, 4, 28734, 0, 0), -(10, 4, 5, 25046, 0, 0), +(10, 4, 4, 25046, 0, 0), (10, 4, 11, 20857, 128, 0), (10, 5, 0, 6603, 0, 0), (10, 5, 1, 585, 0, 0), (10, 5, 2, 2050, 0, 0), -(10, 5, 3, 28734, 0, 0), -(10, 5, 4, 28730, 0, 0), +(10, 5, 3, 28730, 0, 0), (10, 5, 10, 159, 128, 0), (10, 5, 11, 20857, 128, 0), (10, 6, 0, 6603, 0, 0), @@ -349,14 +345,12 @@ INSERT IGNORE INTO `playercreateinfo_action` (`race`, `class`, `button`, `action (10, 8, 0, 6603, 0, 0), (10, 8, 1, 133, 0, 0), (10, 8, 2, 168, 0, 0), -(10, 8, 3, 28734, 0, 0), -(10, 8, 4, 28730, 0, 0), +(10, 8, 3, 28730, 0, 0), (10, 8, 10, 159, 128, 0), (10, 8, 11, 20857, 128, 0), (10, 9, 11, 20857, 128, 0), (10, 9, 10, 159, 128, 0), -(10, 9, 4, 28730, 0, 0), -(10, 9, 3, 28734, 0, 0), +(10, 9, 3, 28730, 0, 0), (10, 9, 2, 687, 0, 0), (10, 9, 1, 686, 0, 0), (10, 9, 0, 6603, 0, 0), @@ -2647,7 +2641,6 @@ INSERT IGNORE INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`) V (10, 2, 22810, 'Opening - No Text'), (10, 2, 27762, 'Libram'), (10, 2, 28730, 'Arcane Torrent'), -(10, 2, 28734, 'Mana Tap'), (10, 2, 28877, 'Arcane Affinity'), (10, 3, 75, 'Auto Shot'), (10, 3, 81, 'Dodge'), @@ -2684,7 +2677,6 @@ INSERT IGNORE INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`) V (10, 3, 22810, 'Opening - No Text'), (10, 3, 24949, 'Defensive State 2 (DND)'), (10, 3, 28730, 'Arcane Torrent'), -(10, 3, 28734, 'Mana Tap'), (10, 3, 28877, 'Arcane Affinity'), (10, 3, 34082, 'Advantaged State (DND)'), (10, 4, 81, 'Dodge'), @@ -2723,7 +2715,6 @@ INSERT IGNORE INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`) V (10, 4, 22027, 'Remove Insignia'), (10, 4, 22810, 'Opening - No Text'), (10, 4, 25046, 'Arcane Torrent'), -(10, 4, 28734, 'Mana Tap'), (10, 4, 28877, 'Arcane Affinity'), (10, 5, 81, 'Dodge'), (10, 5, 198, 'One-Handed Maces'), @@ -2758,7 +2749,6 @@ INSERT IGNORE INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`) V (10, 5, 22027, 'Remove Insignia'), (10, 5, 22810, 'Opening - No Text'), (10, 5, 28730, 'Arcane Torrent'), -(10, 5, 28734, 'Mana Tap'), (10, 5, 28877, 'Arcane Affinity'), (10, 6, 81, 'Dodge'), (10, 6, 196, 'One-Handed Axes'), @@ -2860,7 +2850,6 @@ INSERT IGNORE INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`) V (10, 8, 22027, 'Remove Insignia'), (10, 8, 22810, 'Opening - No Text'), (10, 8, 28730, 'Arcane Torrent'), -(10, 8, 28734, 'Mana Tap'), (10, 8, 28877, 'Arcane Affinity'), (10, 9, 81, 'Dodge'), (10, 9, 203, 'Unarmed'), @@ -2895,7 +2884,6 @@ INSERT IGNORE INTO `playercreateinfo_spell` (`race`, `class`, `Spell`, `Note`) V (10, 9, 22027, 'Remove Insignia'), (10, 9, 22810, 'Opening - No Text'), (10, 9, 28730, 'Arcane Torrent'), -(10, 9, 28734, 'Mana Tap'), (10, 9, 28877, 'Arcane Affinity'), (10, 9, 58284, 'Chaos Bolt Passive'), (11, 1, 78, 'Heroic Strike'), diff --git a/sql/characters.sql b/sql/characters.sql index 4cab438342a..020ae39e4ce 100644 --- a/sql/characters.sql +++ b/sql/characters.sql @@ -316,9 +316,9 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `character_achievement`; CREATE TABLE `character_achievement` ( - `guid` int(11) NOT NULL, - `achievement` int(11) NOT NULL, - `date` int(11) NOT NULL, + `guid` int(11) unsigned NOT NULL, + `achievement` int(11) unsigned NOT NULL, + `date` bigint(11) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`achievement`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; @@ -337,10 +337,10 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `character_achievement_progress`; CREATE TABLE `character_achievement_progress` ( - `guid` int(11) NOT NULL, - `criteria` int(11) NOT NULL, - `counter` int(11) NOT NULL, - `date` int(11) NOT NULL, + `guid` int(11) unsigned NOT NULL, + `criteria` int(11) unsigned NOT NULL, + `counter` int(11) unsigned NOT NULL, + `date` bigint(11) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`criteria`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; @@ -854,6 +854,7 @@ CREATE TABLE `gm_tickets` ( `posX` float NOT NULL DEFAULT '0', `posY` float NOT NULL DEFAULT '0', `posZ` float NOT NULL DEFAULT '0', + `timestamp` int(10) NOT NULL default '0', `closed` int(10) NOT NULL default '0', `assignedto` int(10) NOT NULL default '0', `comment` text NOT NULL, diff --git a/sql/mangos.sql b/sql/mangos.sql index 0a036be48a3..ae74c23f91b 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -23,7 +23,7 @@ DROP TABLE IF EXISTS `db_version`; CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, - `required_7777_01_mangos_spell_proc_event` bit(1) default NULL + `required_7823_01_mangos_item_template` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -322,6 +322,7 @@ INSERT INTO `command` VALUES ('go graveyard',1,'Syntax: .go graveyard #graveyardId\r\n Teleport to graveyard with the graveyardId specified.'), ('go grid',1,'Syntax: .go grid #gridX #gridY [#mapId]\r\n\r\nTeleport the gm to center of grid with provided indexes at map #mapId (or current map if it not provided).'), ('go object',1,'Syntax: .go object #object_guid\r\nTeleport your character to gameobject with guid #object_guid'), +('go taxinode',1,'Syntax: .go taxinode #taxinode\r\n\r\nTeleport player to taxinode coordinates. You can look up zone using .lookup taxinode $namepart'), ('go trigger',1,'Syntax: .go trigger #trigger_id\r\n\r\nTeleport your character to areatrigger with id #trigger_id. Character will be teleported to trigger target if selected areatrigger is telporting trigger.'), ('go xy',1,'Syntax: .go xy #x #y [#mapid]\r\n\r\nTeleport player to point with (#x,#y) coordinates at ground(water) level at map #mapid or same map if #mapid not provided.'), ('go xyz',1,'Syntax: .go xyz #x #y #z [#mapid]\r\n\r\nTeleport player to point with (#x,#y,#z) coordinates at ground(water) level at map #mapid or same map if #mapid not provided.'), @@ -384,6 +385,7 @@ INSERT INTO `command` VALUES ('lookup quest',3,'Syntax: .lookup quest $namepart\r\n\r\nLooks up a quest by $namepart, and returns all matches with their quest ID\'s.'), ('lookup skill',3,'Syntax: .lookup skill $$namepart\r\n\r\nLooks up a skill by $namepart, and returns all matches with their skill ID\'s.'), ('lookup spell',3,'Syntax: .lookup spell $namepart\r\n\r\nLooks up a spell by $namepart, and returns all matches with their spell ID\'s.'), +('lookup taxinode',3,'Syntax: .lookup taxinode $substring\r\n\r\nSearch and output all taxinodes with provide $substring in name.'), ('lookup tele',1,'Syntax: .lookup tele $substring\r\n\r\nSearch and output all .tele command locations with provide $substring in name.'), ('maxskill',3,'Syntax: .maxskill\r\nSets all skills of the targeted player to their maximum VALUESfor its current level.'), ('modify arena',1,'Syntax: .modify arena #value\r\nAdd $amount arena points to the selected player.'), @@ -1709,7 +1711,7 @@ CREATE TABLE `item_template` ( `stat_type10` tinyint(3) unsigned NOT NULL default '0', `stat_value10` smallint(6) NOT NULL default '0', `ScalingStatDistribution` smallint(6) NOT NULL default '0', - `ScalingStatValue` smallint(6) NOT NULL default '0', + `ScalingStatValue` int(6) unsigned NOT NULL default '0', `dmg_min1` float NOT NULL default '0', `dmg_max1` float NOT NULL default '0', `dmg_type1` tinyint(3) unsigned NOT NULL default '0', @@ -2688,6 +2690,7 @@ INSERT INTO `mangos_string` VALUES (344,'You already have pet.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (345,'Forced customize for player %s will be requested at next login.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (346,'Forced customize for player %s (GUID #%u) will be requested at next login.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(347,'TaxiNode ID %u not found!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (400,'|cffff0000[System Message]:|rScripts reloaded',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (401,'You change security level of account %s to %i.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (402,'%s changed your security level to %i.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), @@ -2753,6 +2756,7 @@ INSERT INTO `mangos_string` VALUES (463,'Teleport location added.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (464,'Teleport location NOT added: database error.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (465,'Teleport location deleted.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(466,'No taxinodes found!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (467,'Target unit has %d auras:',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (468,'id: %d eff: %d type: %d duration: %d maxduration: %d name: %s%s%s caster: %s %u',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (469,'Target unit has %d auras of type %d:',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), @@ -3052,6 +3056,8 @@ INSERT INTO `mangos_string` VALUES (1125,'Your pet learned all talents',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (1126,'Your pet talents have been reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (1127,'Talents of %s\'s pet reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1128,'%d - |cffffffff|Htaxinode:%u|h[%s %s]|h|r (Map:%u X:%f Y:%f Z:%f)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1129,'%d - %s %s (Map:%u X:%f Y:%f Z:%f)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (1200,'You try to view cinemitic %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (1201,'You try to view movie %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `mangos_string` ENABLE KEYS */; @@ -3153,6 +3159,27 @@ LOCK TABLES `npc_option` WRITE; UNLOCK TABLES; -- +-- Table structure for table `npc_spellclick_spells` +-- + +DROP TABLE IF EXISTS `npc_spellclick_spells`; +CREATE TABLE `npc_spellclick_spells` ( + `npc_entry` INT UNSIGNED NOT NULL COMMENT 'reference to creature_template', + `spell_id` INT UNSIGNED NOT NULL COMMENT 'spell which should be casted ', + `quest_id` INT UNSIGNED NOT NULL COMMENT 'reference to quest_template', + `cast_flags` TINYINT UNSIGNED NOT NULL COMMENT 'first bit defines caster: 1=player, 0=creature; second bit defines target, same mapping as caster bit' +) ENGINE = MYISAM DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `npc_spellclick_spells` +-- + +LOCK TABLES `npc_spellclick_spells` WRITE; +/*!40000 ALTER TABLE `npc_spellclick_spells` DISABLE KEYS */; +/*!40000 ALTER TABLE `npc_spellclick_spells` ENABLE KEYS */; +UNLOCK TABLES; + +-- -- Table structure for table `npc_text` -- @@ -17006,9 +17033,9 @@ INSERT INTO `spell_proc_event` VALUES (30293, 0x00000000, 5, 0x00000381, 0x000000C0, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (30295, 0x00000000, 5, 0x00000381, 0x000000C0, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (30296, 0x00000000, 5, 0x00000381, 0x000000C0, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(30299, 0x00000024, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(30301, 0x00000024, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(30302, 0x00000024, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), +(30299, 0x0000007E, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), +(30301, 0x0000007E, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), +(30302, 0x0000007E, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (30675, 0x00000000, 11, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (30678, 0x00000000, 11, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (30679, 0x00000000, 11, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), @@ -17094,6 +17121,7 @@ INSERT INTO `spell_proc_event` VALUES (33882, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (33883, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (33953, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 45), +(34074, 0x00000000, 9, 0x0007FA43, 0x00881081, 0x00000201, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (34080, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0.000000, 0.000000, 0), (34138, 0x00000000, 11, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (34139, 0x00000000, 10, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), diff --git a/sql/trinityscript_script_texts.sql b/sql/trinityscript_script_texts.sql index 0fa44dca7c3..1cbf459f178 100644 --- a/sql/trinityscript_script_texts.sql +++ b/sql/trinityscript_script_texts.sql @@ -3,347 +3,359 @@ -- valid entries for table are between -1000000 and -1999999 -- -TRUNCATE `script_texts`; +DROP TABLE IF EXISTS `script_texts`; +CREATE TABLE `script_texts` ( + `entry` mediumint(8) NOT NULL, + `content_default` text NOT NULL, + `content_loc1` text, + `content_loc2` text, + `content_loc3` text, + `content_loc4` text, + `content_loc5` text, + `content_loc6` text, + `content_loc7` text, + `content_loc8` text, + `sound` mediumint(8) unsigned NOT NULL default '0', + `type` tinyint(3) unsigned NOT NULL default '0', + `language` tinyint(3) unsigned NOT NULL default '0', + `emote` smallint(5) unsigned NOT NULL default '0', + `comment` text, + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Texts'; -- -- -1 000 000 First 100 entries are reserved for special use, do not add regular text here. -- -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1000000,'<TrinityScript Text Entry Missing!>',0,0,0,'DEFAULT_TEXT'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1000000, '<TrinityScript Text Entry Missing!>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'DEFAULT_TEXT'), +(-1000001, 'goes into a killing frenzy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'EMOTE_GENERIC_FRENZY_KILL'), +(-1000004, 'goes into a berserker rage!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'EMOTE_GENERIC_BERSERK'), +(-1000005, 'Greetings citizen', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'general_marcus SAY_GREETING'); -- -- Normal text entries. Say/Yell/Whisper/Emote for any regular world object. -- -- -1 000 100 GENERAL MAPS (not typical instance maps) -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1000100,'Come, little ones. Face me!',0,1,0,'azuregos SAY_TELEPORT'), - -(-1000101,'Follow me, $N. I\'ll take you to the Defias hideout. But you better protect me or I am as good as dead',0,0,7,'defias traitor SAY_START'), -(-1000102,'The entrance is hidden here in Moonbrook. Keep your eyes peeled for thieves. They want me dead.',0,0,7,'defias traitor SAY_PROGRESS'), -(-1000103,'You can go tell Stoutmantle this is where the Defias Gang is holed up, $N.',0,0,7,'defias traitor SAY_END'), -(-1000104,'%s coming in fast! Prepare to fight!',0,0,7,'defias traitor SAY_AGGRO_1'), -(-1000105,'Help!',0,0,7,'defias traitor SAY_AGGRO_2'); - --- 722_world_scripts.sql -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1000140,'Let\'s go.',0,0,1,'lilatha SAY_START'), -(-1000141,'$N, let\'s use the antechamber to the right.',0,0,1,'lilatha SAY_PROGRESS1'), -(-1000142,'I can see the light at the end of the tunnel!',0,0,1,'lilatha SAY_PROGRESS2'), -(-1000143,'There\'s Farstrider Enclave now, $C. Not far to go... Look out! Troll ambush!!',0,0,1,'lilatha SAY_PROGRESS3'), -(-1000144,'Thank you for saving my life and bringing me back to safety, $N',0,0,1,'lilatha SAY_END1'), -(-1000145,'Captain Helios, I\'ve been rescued from the Amani Catacombs. Reporting for duty, sir!',0,0,1,'lilatha SAY_END2'), -(-1000146,'Liatha, get someone to look at those injuries. Thank you for bringing her back safely.',0,0,1,'lilatha CAPTAIN_ANSWER'); - --- 773_world_scripts.sql -INSERT INTO script_texts (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `comment`) VALUES -(-1000147, 'Lets go $N. I am ready to start to Whitereach Post.', NULL, NULL, 'Gehen wir $N.Ich bin bereit,mich zum Weissgipfelposten aufzumachen.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL), -(-1000148, 'This seems to me trusted. If we move to the east, we are probably... Aah! Wyvern attack !', NULL, NULL, 'Das kommt mir vertraut vor.Wenn wir nach Osten ziehen,können wir wahrscheinlich...Aah!Flügeldrachen im Angriff!', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL), -(-1000149, 'Thanks so much... From here I find the way back to the Whitereach Post. Speak with Motega Firemane, maybe you can persuade him to send me home.', NULL, NULL, 'Tausend Dank...Von hier aus finde ich den Rückweg zum Weissgipfelposten.Sprecht unbedingt mit Motega Feuermähne,vielleicht könnt ihr ihn überreden,mich nach Hause zu schicken.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL); - --- 765_world_scripts.sql -INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc2`, `type`, `language`, `comment`) VALUES -(-1000150, 'Greetings, $N. I will guide you through the cavern. Please try and keep up.', 'Salutations, $N. Je vais vous guider a` travers cette grotte. Veuillez me suivre.', 4, 0, 'WHISPER_CUSTODIAN_1'), -(-1000151, 'We do not know if the Caverns of Time have always been accessible to mortals. Truly, it is impossible to tell as the Timeless One is in perpetual motion, changing our timeways as he sees fit. What you see now may very well not exist tomorrow. You may wake up and have no memory of this place.', 'Nous ne savons pas si les Grottes du Temps ont toujours été accessibles aux mortels. Vraiment, c\'est impossible a` dire étant donné que l\'Intemporel est en mouvement perpétuel, changeant nos spirales temporelles comme bon lui semble. Ce que vous voyez aujourd\'hui peut tre`s bien ne plus exister demain. Vous pourriez vous réveiller sans aucun souvenir de cet endroit.', 4, 0, 'WHISPER_CUSTODIAN_2'), -(-1000152, 'It is strange, I know... Most mortals cannot actually comprehend what they see here, as often, what they see is not anchored within their own perception of reality.', 'C\'est étrange, je sais... La plupart des mortels ne peuvent pas réellement comprendre ce qu\ils voient ici, comme souvent, ce qu\'ils voient n\'est pas ancré dans leur propre perception de la réalité.', 4, 0, 'WHISPER_CUSTODIAN_3'), -(-1000153, 'Follow me, please.', 'Veuillez me suivre.', 4, 0, 'WHISPER_CUSTODIAN_4'), -(-1000154, 'There are only two truths to be found here: First, that time is chaotic, always in flux, and completely malleable and second, perception does not dictate reality.', 'Il n\'y a que deux vérités qui peuvent e^tre trouvées ici : premie`rement, ce temps est chaotique, toujours en mouvement, et comple`tement malléable, et ensuite, la perception ne détermine pas la réalité.', 4, 0, 'WHISPER_CUSTODIAN_5'), -(-1000155, 'As custodians of time, we watch over and care for Nozdormu\'s realm. The master is away at the moment, which means that attempts are being made to dramatically alter time. The master never meddles in the affairs of mortals but instead corrects the alterations made to time by others. He is reactionary in this regard.', 'En tant que protecteurs du temps, nous observons et veillons sur le royaume de Nozdormu. Le maître est absent en ce moment, ce qui signifie que des tentatives sont faites pour altérer fortement le temps. Le maître ne se me^le jamais des affaires des mortels mais il corrige les altérations faites au temps par d\'autres. Il est réactionnaire a` cet égard.', 4, 0, 'WHISPER_CUSTODIAN_6'), -(-1000156, 'For normal maintenance of time, the Keepers of Time are sufficient caretakers. We are able to deal with most ordinary disturbances. I speak of little things, such as rogue mages changing something in the past to elevate their status or wealth in the present.', 'Pour le maintien normal du temps, les Gardiens du temps suffisent a` la tâche. Nous sommes capables de gérer les perturbations les plus ordinaires. Je parle de petites choses, comme des mages voleurs qui changent quelque chose dans le passé pour élever leur statut ou leur richesse dans le présent.', 4, 0, 'WHISPER_CUSTODIAN_7'), -(-1000157, 'These tunnels that you see are called timeways. They are infinite in number. The ones that currently exist in your reality are what the master has deemed as \'trouble spots.\' These trouble spots may differ completely in theme but they always share a cause. That is, their existence is a result of the same temporal disturbance. Remember that should you venture inside one...', 'Ces tunnels que vous voyez sont appelés Voies Temporelles. Leur nombre est infini. Ceux qui existent actuellement dans votre réalité sont ceux que le maître a considérés comme \'points sensibles\'. Ces points sensibles peuvent différer comple`tement de part leur the`me, mais partagent toujours une cause. C\'est-a`-dire, leur existence est le résultat des me^mes perturbations temporelles. Rappelez-vous en si vous osez vous aventurer dans l\'un d\'eux...', 4, 0, 'WHISPER_CUSTODIAN_8'), -(-1000158, 'This timeway is in great disarray! We have agents inside right now attempting to restore order. What information I have indicates that Thrall\'s freedom is in jeopardy. A malevolent organization known as the Infinite Dragonflight is trying to prevent his escape. I fear without outside assistance, all will be lost.', 'Cette voie temporelle est en grand désarroi ! Nous avons actuellement des agents a` l\intérieur qui tentent de restaurer l\'ordre. Les informations que j\'ai indiquent que la liberté de Thrall est en péril. Une organisation malveillante connue sous le nom de Vol du Dragon Infini essaye d\'empe^cher son évasion. J\'ai peur que sans assistance extérieure, tout soit perdu.', 4, 0, 'WHISPER_CUSTODIAN_9'), -(-1000159, 'We have very little information on this timeway. Sa\'at has been dispatched and is currently inside. The data we have gathered from his correspondence is that the Infinite Dragonflight are once again attempting to alter time. Could it be that the opening of the Dark Portal is being targeted for sabotage? Let us hope not...', 'Nous avons tre`s peu d\'informations sur cette voie. Sa\'at a été envoyé et est actuellement sur place. Les données que nous avons recueillies de sa correspondance est que le Vol du Dragon Infini tente une fois de plus d\'altérer le temps. Se pourrait-il que l\'ouverture de la Porte des Téne`bres soit la cible d\'un sabotage. Espérons que non...', 4, 0, 'WHISPER_CUSTODIAN_10'), -(-1000160, 'This timeway is currently collapsing. What that may hold for the past, present and future is currently unknown...', 'Cette voie est en train de s\'effondrer. Ce qu\'elle peut avoir contenu dans le passé, le présent et le futur nous est actuellement inconnu...', 4, 0, 'WHISPER_CUSTODIAN_11'), -(-1000161, 'The timeways are currently ranked in order from least catastrophic to most catastrophic. Note that they are all classified as catastrophic, meaning that any single one of these timeways collapsing would mean that your world would end. We only classify them in such a way so that the heroes and adventurers that are sent here know which timeway best suits their abilities.', 'Les voies sont pour le moment classées de la moins catastrophique a` la plus catastrophique, ce qui veut dire que la moindre de celles-ci qui s\'effondre signifierait la fin de votre monde. Nous les classons seulement de cette façon pour que les héros et aventuriers qui y sont envoyés sachent quelle voie est la plus adaptée a` leurs compétences.', 4, 0, 'WHISPER_CUSTODIAN_12'), -(-1000162, 'All we know of this timeway is that it leads to Mount Hyjal. The Infinite Dragonflight have gone to great lengths to prevent our involvement. We know next to nothing, mortal. Soridormi is currently attempting to break through the timeway\'s defenses but has thus far been unsuccessful. You might be our only hope of breaking through and resolving the conflict.', 'Tout ce que nous savons sur cette voie temporelle est qu\'elle me`ne au Mont Hyjal. Le Vol du Dragon Infini s\'est donné beaucoup de peine pour empe^cher notre participation. Soridormi est actuellement en train de tenter de briser les défenses de cette voie, mais ses efforts ont été vain jusqu\'ici. Vous pourriez e^tre notre seul espoir de les briser et de résoudre le conflit.', 4, 0, 'WHISPER_CUSTODIAN_13'), -(-1000163, 'Our time is at an end $N. I would wish you luck, if such a thing existed.', 'Notre entretien touche a` sa fin, $N. Je vous souhaite bonne chance, si tant est qu\'une telle chose a jamais existé.', 4, 0, 'WHISPER_CUSTODIAN_14'); - --- 2139_world_scripts.sql -(-1000164,'Ah, $GPriest:Priestess; you came along just in time. I appreciate it.',0,0,0,2,'garments SAY_COMMON_HEALED'), -(-1000165,'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those gnolls with your power to back me!',0,0,1,1,'garments SAY_DG_KEL_THANKS'), -(-1000166,'Farewell to you, and may shadow always protect you!',0,0,1,3,'garments SAY_DG_KEL_GOODBYE'), -(-1000167, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those murlocs with the Light on my side!',0,0,7,1,'garments SAY_ROBERTS_THANKS'), -(-1000168, 'Farewell to you, and may the Light be with you always.',0,0,7,3,'garments SAY_ROBERTS_GOODBYE'), -(-1000169, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those humans with your power to back me!',0,0,1,1,'garments SAY_KORJA_THANKS'), -(-1000170, 'Farewell to you, and may our ancestors be with you always!',0,0,1,3,'garments SAY_KORJA_GOODBYE'), -(-1000171, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those wendigo with the Light on my side!',0,0,7,1,'garments SAY_DOLF_THANKS'), -(-1000172, 'Farewell to you, and may the Light be with you always.',0,0,7,3,'garments SAY_DOLF_GOODBYE'), -(-1000173, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those corrupt timberlings with Elune\'s power behind me!',0,0,2,1,'garments SAY_SHAYA_THANKS'), -(-1000174, 'Farewell to you, and may Elune be with you always.',0,0,2,3,'garments SAY_SHAYA_GOODBYE'); - --- 817_world_scripts.sql -INSERT INTO script_texts (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1000100, 'Come, little ones. Face me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'azuregos SAY_TELEPORT'), +(-1000101, 'Follow me, $N. I''ll take you to the Defias hideout. But you better protect me or I am as good as dead', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'defias traitor SAY_START'), +(-1000102, 'The entrance is hidden here in Moonbrook. Keep your eyes peeled for thieves. They want me dead.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'defias traitor SAY_PROGRESS'), +(-1000103, 'You can go tell Stoutmantle this is where the Defias Gang is holed up, $N.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'defias traitor SAY_END'), +(-1000104, '%s coming in fast! Prepare to fight!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'defias traitor SAY_AGGRO_1'), +(-1000105, 'Help!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'defias traitor SAY_AGGRO_2'), +(-1000106, 'Everyone ready?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'torek SAY_READY'), +(-1000107, 'Ok, Lets move out!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'torek SAY_MOVE'), +(-1000108, 'Prepare yourselves. Silverwing is just around the bend.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'torek SAY_PREPARE'), +(-1000109, 'Silverwing is ours!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'torek SAY_WIN'), +(-1000110, 'Go report that the outpost is taken. We will remain here.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'torek SAY_END'), +(-1000111, 'Our house is this way, through the thicket.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'magwin SAY_START'), +(-1000112, 'Help me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'magwin SAY_AGGRO'), +(-1000113, 'My poor family. Everything has been destroyed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'magwin SAY_PROGRESS'), +(-1000114, 'Father! Father! You''re alive!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'magwin SAY_END1'), +(-1000115, 'You can thank $N for getting me back here safely, father.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'magwin SAY_END2'), +(-1000116, 'hugs her father.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 7, 0, 'magwin EMOTE_HUG'), +(-1000117, 'Thank you for agreeing to help. Now, let''s get out of here $N.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'wounded elf SAY_ELF_START'), +(-1000118, 'Over there! They''re following us!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'wounded elf SAY_ELF_SUMMON1'), +(-1000119, 'Allow me a moment to rest. The journey taxes what little strength I have.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 16, 'wounded elf SAY_ELF_RESTING'), +(-1000120, 'Did you hear something?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'wounded elf SAY_ELF_SUMMON2'), +(-1000121, 'Falcon Watch, at last! Now, where''s my... Oh no! My pack, it''s missing! Where has -', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'wounded elf SAY_ELF_COMPLETE'), +(-1000122, 'You won''t keep me from getting to Falcon Watch!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'wounded elf SAY_ELF_AGGRO'), +(-1000123, 'Ready when you are, $c.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 15, 'big will SAY_BIG_WILL_READY'), +(-1000124, 'The Affray has begun. $n, get ready to fight!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'twiggy SAY_TWIGGY_BEGIN'), +(-1000125, 'You! Enter the fray!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'twiggy SAY_TWIGGY_FRAY'), +(-1000126, 'Challenger is down!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'twiggy SAY_TWIGGY_DOWN'), +(-1000127, 'The Affray is over.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'twiggy SAY_TWIGGY_OVER'), +(-1000128, 'We need you to send reinforcements to Manaforge Duro, Ardonis. This is not a request, it''s an order.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge SAY_COMMANDER_DAWNFORGE_1'), +(-1000129, 'You cannot be serious! We are severely understaffed and can barely keep this manaforge functional!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge SAY_ARCANIST_ARDONIS_1'), +(-1000130, 'You will do as ordered. Manaforge Duro has come under heavy attack by mana creatures and the situation is out of control. Failure to comply will not be tolerated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge SAY_COMMANDER_DAWNFORGE_2'), +(-1000131, 'Indeed, it is not a request.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge SAY_PATHALEON_CULATOR_IMAGE_1'), +(-1000132, 'My lord!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge SAY_COMMANDER_DAWNFORGE_3'), +(-1000133, 'Duro will be reinforced! Ultris was a complete disaster. I will NOT have that mistake repeated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge PATHALEON_CULATOR_IMAGE_2'), +(-1000134, 'We''ve had too many setbacks along the way: Hellfire Citadel, Fallen Sky Ridge, Firewing Point... Prince Kael''thas will tolerate no further delays. I will tolerate nothing other than complete success!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge PATHALEON_CULATOR_IMAGE_2_1'), +(-1000135, 'I am returning to Tempest Keep. See to it that I do not have reason to return!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge PATHALEON_CULATOR_IMAGE_2_2'), +(-1000136, 'Yes, my lord.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge COMMANDER_DAWNFORGE_4 SAY_ARCANIST_ARDONIS_2'), +(-1000137, 'See to it, Ardonis!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'dawnforge COMMANDER_DAWNFORGE_5'), +(-1000138, 'Avruu''s magic... it still controls me. You must fight me, mortal. It''s the only way to break the spell!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'aeranas SAY_SUMMON'), +(-1000139, 'Avruu''s magic is broken! I''m free once again!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'aeranas SAY_FREE'), +(-1000140, 'Let''s go.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'lilatha SAY_START'), +(-1000141, '$N, let''s use the antechamber to the right.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'lilatha SAY_PROGRESS1'), +(-1000142, 'I can see the light at the end of the tunnel!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'lilatha SAY_PROGRESS2'), +(-1000143, 'There''s Farstrider Enclave now, $C. Not far to go... Look out! Troll ambush!!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'lilatha SAY_PROGRESS3'), +(-1000144, 'Thank you for saving my life and bringing me back to safety, $N', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'lilatha SAY_END1'), +(-1000145, 'Captain Helios, I''ve been rescued from the Amani Catacombs. Reporting for duty, sir!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'lilatha SAY_END2'), +(-1000146, 'Liatha, get someone to look at those injuries. Thank you for bringing her back safely.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'lilatha CAPTAIN_ANSWER'), +(-1000147, 'Lets go $N. I am ready to start to Whitereach Post.', NULL, NULL, 'Gehen wir $N.Ich bin bereit,mich zum Weissgipfelposten aufzumachen.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), +(-1000148, 'This seems to me trusted. If we move to the east, we are probably... Aah! Wyvern attack !', NULL, NULL, 'Das kommt mir vertraut vor.Wenn wir nach Osten ziehen,können wir wahrscheinlich...Aah!Flügeldrachen im Angriff!', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), +(-1000149, 'Thanks so much... From here I find the way back to the Whitereach Post. Speak with Motega Firemane, maybe you can persuade him to send me home.', NULL, NULL, 'Tausend Dank...Von hier aus finde ich den Rückweg zum Weissgipfelposten.Sprecht unbedingt mit Motega Feuermähne,vielleicht könnt ihr ihn überreden,mich nach Hause zu schicken.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), +(-1000150, 'Greetings, $N. I will guide you through the cavern. Please try and keep up.', NULL, 'Salutations, $N. Je vais vous guider à travers cette grotte. Veuillez me suivre.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_1'), +(-1000151, 'We do not know if the Caverns of Time have always been accessible to mortals. Truly, it is impossible to tell as the Timeless One is in perpetual motion, changing our timeways as he sees fit. What you see now may very well not exist tomorrow. You may wake up and have no memory of this place.', NULL, 'Nous ne savons pas si les Grottes du Temps ont toujours été accessibles aux mortels. Vraiment, c''est impossible à dire étant donné que l''Intemporel est en mouvement perpétuel, changeant nos spirales temporelles comme bon lui semble. Ce que vous voyez aujourd''hui peut très bien ne plus exister demain. Vous pourriez vous réveiller sans aucun souvenir de cet endroit.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_2'), +(-1000152, 'It is strange, I know... Most mortals cannot actually comprehend what they see here, as often, what they see is not anchored within their own perception of reality.', NULL, 'C''est étrange, je sais... La plupart des mortels ne peuvent pas réellement comprendre ce quils voient ici, comme souvent, ce qu''ils voient n''est pas ancré dans leur propre perception de la réalité.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_3'), +(-1000153, 'Follow me, please.', NULL, 'Veuillez me suivre.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_4'), +(-1000154, 'There are only two truths to be found here: First, that time is chaotic, always in flux, and completely malleable and second, perception does not dictate reality.', NULL, 'Il n''y a que deux vérités qui peuvent être trouvées ici : premièrement, ce temps est chaotique, toujours en mouvement, et complètement malléable, et ensuite, la perception ne détermine pas la réalité.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_5'), +(-1000155, 'As custodians of time, we watch over and care for Nozdormu''s realm. The master is away at the moment, which means that attempts are being made to dramatically alter time. The master never meddles in the affairs of mortals but instead corrects the alterations made to time by others. He is reactionary in this regard.', NULL, 'En tant que protecteurs du temps, nous observons et veillons sur le royaume de Nozdormu. Le maître est absent en ce moment, ce qui signifie que des tentatives sont faites pour altérer fortement le temps. Le maître ne se mêle jamais des affaires des mortels mais il corrige les altérations faites au temps par d''autres. Il est réactionnaire à cet égard.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_6'), +(-1000156, 'For normal maintenance of time, the Keepers of Time are sufficient caretakers. We are able to deal with most ordinary disturbances. I speak of little things, such as rogue mages changing something in the past to elevate their status or wealth in the present.', NULL, 'Pour le maintien normal du temps, les Gardiens du temps suffisent à la tâche. Nous sommes capables de gérer les perturbations les plus ordinaires. Je parle de petites choses, comme des mages voleurs qui changent quelque chose dans le passé pour élever leur statut ou leur richesse dans le présent.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_7'), +(-1000157, 'These tunnels that you see are called timeways. They are infinite in number. The ones that currently exist in your reality are what the master has deemed as ''trouble spots.'' These trouble spots may differ completely in theme but they always share a cause. That is, their existence is a result of the same temporal disturbance. Remember that should you venture inside one...', NULL, 'Ces tunnels que vous voyez sont appelés Voies Temporelles. Leur nombre est infini. Ceux qui existent actuellement dans votre réalité sont ceux que le maître a considérés comme ''points sensibles''. Ces points sensibles peuvent différer complètement de part leur thème, mais partagent toujours une cause. C''est-à-dire, leur existence est le résultat des mêmes perturbations temporelles. Rappelez-vous en si vous osez vous aventurer dans l''un d''eux...', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_8'), +(-1000158, 'This timeway is in great disarray! We have agents inside right now attempting to restore order. What information I have indicates that Thrall''s freedom is in jeopardy. A malevolent organization known as the Infinite Dragonflight is trying to prevent his escape. I fear without outside assistance, all will be lost.', NULL, 'Cette voie temporelle est en grand désarroi ! Nous avons actuellement des agents à lintérieur qui tentent de restaurer l''ordre. Les informations que j''ai indiquent que la liberté de Thrall est en péril. Une organisation malveillante connue sous le nom de Vol du Dragon Infini essaye d''empêcher son évasion. J''ai peur que sans assistance extérieure, tout soit perdu.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_9'), +(-1000159, 'We have very little information on this timeway. Sa''at has been dispatched and is currently inside. The data we have gathered from his correspondence is that the Infinite Dragonflight are once again attempting to alter time. Could it be that the opening of the Dark Portal is being targeted for sabotage? Let us hope not...', NULL, 'Nous avons très peu d''informations sur cette voie. Sa''at a été envoyé et est actuellement sur place. Les données que nous avons recueillies de sa correspondance est que le Vol du Dragon Infini tente une fois de plus d''altérer le temps. Se pourrait-il que l''ouverture de la Porte des Ténèbres soit la cible d''un sabotage. Espérons que non...', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_10'), +(-1000160, 'This timeway is currently collapsing. What that may hold for the past, present and future is currently unknown...', NULL, 'Cette voie est en train de s''effondrer. Ce qu''elle peut avoir contenu dans le passé, le présent et le futur nous est actuellement inconnu...', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_11'), +(-1000161, 'The timeways are currently ranked in order from least catastrophic to most catastrophic. Note that they are all classified as catastrophic, meaning that any single one of these timeways collapsing would mean that your world would end. We only classify them in such a way so that the heroes and adventurers that are sent here know which timeway best suits their abilities.', NULL, 'Les voies sont pour le moment classées de la moins catastrophique à la plus catastrophique, ce qui veut dire que la moindre de celles-ci qui s''effondre signifierait la fin de votre monde. Nous les classons seulement de cette façon pour que les héros et aventuriers qui y sont envoyés sachent quelle voie est la plus adaptée à leurs compétences.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_12'), +(-1000162, 'All we know of this timeway is that it leads to Mount Hyjal. The Infinite Dragonflight have gone to great lengths to prevent our involvement. We know next to nothing, mortal. Soridormi is currently attempting to break through the timeway''s defenses but has thus far been unsuccessful. You might be our only hope of breaking through and resolving the conflict.', NULL, 'Tout ce que nous savons sur cette voie temporelle est qu''elle mène au Mont Hyjal. Le Vol du Dragon Infini s''est donné beaucoup de peine pour empêcher notre participation. Soridormi est actuellement en train de tenter de briser les défenses de cette voie, mais ses efforts ont été vain jusqu''ici. Vous pourriez être notre seul espoir de les briser et de résoudre le conflit.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_13'), +(-1000163, 'Our time is at an end $N. I would wish you luck, if such a thing existed.', NULL, 'Notre entretien touche à sa fin, $N. Je vous souhaite bonne chance, si tant est qu''une telle chose a jamais existé.', NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'WHISPER_CUSTODIAN_14'), +(-1000164, 'Ah, $GPriest:Priestess; you came along just in time. I appreciate it.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 2, 'garments SAY_COMMON_HEALED'), +(-1000165, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those gnolls with your power to back me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 'garments SAY_DG_KEL_THANKS'), +(-1000166, 'Farewell to you, and may shadow always protect you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 3, 'garments SAY_DG_KEL_GOODBYE'), +(-1000167, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those murlocs with the Light on my side!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 1, 'garments SAY_ROBERTS_THANKS'), +(-1000168, 'Farewell to you, and may the Light be with you always.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 3, 'garments SAY_ROBERTS_GOODBYE'), +(-1000169, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those humans with your power to back me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 'garments SAY_KORJA_THANKS'), +(-1000170, 'Farewell to you, and may our ancestors be with you always!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 3, 'garments SAY_KORJA_GOODBYE'), +(-1000171, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those wendigo with the Light on my side!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 1, 'garments SAY_DOLF_THANKS'), +(-1000172, 'Farewell to you, and may the Light be with you always.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 3, 'garments SAY_DOLF_GOODBYE'), +(-1000173, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those corrupt timberlings with Elune''s power behind me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 2, 1, 'garments SAY_SHAYA_THANKS'), +(-1000174, 'Farewell to you, and may Elune be with you always.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 2, 3, 'garments SAY_SHAYA_GOODBYE'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES (-1000200, 'A-Me good.Good A-me.Follow...A-ME follow.Home.A-ME go home.', NULL, NULL, 'A-ME gut.Gut A-Me.Folgen...Heim.A-ME geht heim.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), (-1000201, 'Bad Un´Goro Stomper.Stomper evil.', NULL, NULL, 'Böser Stampfer von Un´Goro. Stampfer von Un´Goro böse.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), (-1000202, 'Good..good,A-ME. Home. Search way.', NULL, NULL, 'Gut...gut.A-ME.A-ME gut.Heim.Heim suchen.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), (-1000203, 'A-Me home.A-ME go home!Tar Lord dont disturb A-ME.', NULL, NULL, 'A-ME daheim.A-ME geht heim!Teerfürst A-ME nicht aufhalten.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), (-1000204, 'Tar Lord A-ME no hurt.A-ME good.', NULL, NULL, 'Teerfürst A-ME nicht wehtun.A-ME gut.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), -(-1000205, 'A-ME at home!A-ME good!Good A-ME.At home.Home.Home', NULL, NULL, 'A-ME daheim!A-ME gut!Gute A-ME.Daheim.Daheim.Daheim', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL); - --- 945_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, emote, comment) VALUES -(-1000206, 'Come, $N. Lord Stormrage awaits.', 0, 1, 'OVERLORD_SAY_1'), -(-1000207, 'Lord Illidan will be here shortly.', 0, 1, 'OVERLORD_SAY_2'), -(-1000208, 'Lord Illidan, this is the Dragonmaw that I, and others, have told you about. He will lead us to victory!', 0, 1, 'OVERLORD_SAY_3'), -(-1000209, 'But... My lord, I do not understand. $N... He is the orc that has...', 0, 1, 'OVERLORD_SAY_4'), -(-1000210, 'It will be done, my lord.', 0, 1, 'OVERLORD_SAY_5'), -(-1000211, 'So you thought to make a fool of Mor\'ghor, eh? Before you are delivered to Lord Illidan, you will feel pain that you could not know to exist. I will take pleasure in exacting my own vengeance.', 0, 25, 'OVERLORD_SAY_6'), -(-1000212, 'Warriors of Dragonmaw, gather \'round! One among you has attained the rank of highlord! Bow your heads in reverence! Show your respect and allegiance to Highlord $N!', 1, 22, 'OVERLORD_YELL_1'), -(-1000213, 'All hail Lord Illidan!', 1, 66, 'OVERLORD_YELL_2'), -(-1000214, 'What is the meaning of this, Mor\'ghor?', 0, 1, 'LORD_ILLIDAN_SAY_1'), -(-1000215, 'SILENCE!', 0, 22, 'LORD_ILLIDAN_SAY_2'), -(-1000216, 'Blathering idiot. You incomprehensibly incompetent buffoon...', 0, 1, 'LORD_ILLIDAN_SAY_3'), -(-1000217, 'THIS is your hero?', 0, 6, 'LORD_ILLIDAN_SAY_4'), -(-1000218, 'You have been deceived, imbecile.', 0, 1, 'LORD_ILLIDAN_SAY_5'), -(-1000219, 'This... whole... operation... HAS BEEN COMPROMISED!', 0, 22, 'LORD_ILLIDAN_SAY_6'), -(-1000220, 'I expect to see this insect\'s carcass in pieces in my lair within the hour. Fail and you will suffer a fate so much worse than death.', 0, 1, 'LORD_ILLIDAN_SAY_7'), -(-1000221, 'You will not harm the boy, Mor\'ghor! Quickly, $N, climb on my back!', 0, 22, 'YARZILL_THE_MERC_SAY'); - -DELETE FROM script_texts WHERE entry='-1000222'; -INSERT INTO script_texts (entry, content_default, type, language, emote, comment) VALUES -(-1000222, 'Thank you, mortal.', 0, 11, 1, 'SAY_JUST_EATEN'); - -DELETE FROM script_texts WHERE entry BETWEEN -1000234 and -1000223; -INSERT INTO script_texts (entry, content_default, emote, comment) VALUES -(-1000223, 'I sense the tortured spirits, $N. They are this way, come quickly!', 1, 'SAY_START'), -(-1000224, 'Watch out!', 0, 'SAY_AGGRO1'), -(-1000225, 'Naga attackers! Defend yourself!', 0, 'SAY_AGGRO2'), -(-1000226, 'Kill them all!', 0, 'ASSASSIN_SAY_AGGRO1'), -(-1000227, 'You will never essscape Coilssskarrr...', 0, 'ASSASSIN_SAY_AGGRO2'), -(-1000228, 'Grant me protection $N, i must break trough their foul magic!', 0, 'SAY_PROGRESS1'), -(-1000229, 'The naga of Coilskar are exceptionally cruel to their prisoners. It is a miracle that I survived inside that watery prison for as long as I did. Earthmother be praised.', 0, 'SAY_PROGRESS2'), -(-1000230, 'Now we must find the exit.', 0, 'SAY_PROGRESS3'), -(-1000231, 'Lady Vashj must answer for these atrocities. She must be brought to justice!', 0, 'SAY_PROGRESS4'), -(-1000232, 'The tumultuous nature of the great waterways of Azeroth and Draenor are a direct result of tormented water spirits.', 0, 'SAY_PROGRESS5'), -(-1000233, 'It shouldn\'t be much further, $N. The exit is just up ahead.', 0, 'SAY_PROGRESS6'), -(-1000234, 'Thank you, $N. Please return to my brethren at the Altar of Damnation, near the Hand of Gul\'dan, and tell them that Wilda is safe. May the Earthmother watch over you...', 0, 'SAY_END'); - --- 947_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, emote, comment) VALUES -(-1000235, 'Ok, $N. Follow me to the cave where I\'ll attempt to harness the power of the rune stone into these goggles.', 0, 1, 'phizzlethorpe - SAY_PROGRESS_1'), -(-1000236, 'I discovered this cave on our first day here. I believe the energy in the stone can be used to our advantage.', 0, 1, 'phizzlethorpe - SAY_PROGRESS_2'), -(-1000237, 'I\'ll begin drawing energy from the stone. Your job, $N, is to defend me. This place is cursed... trust me.', 0, 1, 'phizzlethorpe - SAY_PROGRESS_3'), -(-1000238, 'begins tinkering with the goggles before the stone.', 2, 0, 'phizzlethorpe - EMOTE_PROGRESS_4'), -(-1000239, 'Help!!! Get these things off me so I can get my work done!', 0, 0, 'SAY_AGGRO'), -(-1000240, 'Almost done! Just a little longer!', 0, 1, 'phizzlethorpe - SAY_PROGRESS_5'), -(-1000241, 'I\'ve done it! I have harnessed the power of the stone into the goggles! Let\'s get out of here!', 0, 1, 'phizzlethorpe - SAY_PROGRESS_6'), -(-1000242, 'Phew! Glad to be back from that creepy cave.', 0, 1, 'phizzlethorpe - SAY_PROGRESS_7'), -(-1000243, 'hands one glowing goggles over to Doctor Draxlegauge.', 2, 0, 'phizzlethorpe - EMOTE_PROGRESS_8'), -(-1000244, 'Doctor Draxlegauge will give you further instructions, $N. Many thanks for your help!', 0, 1, 'phizzlethorpe - SAY_PROGRESS_9'); - --- 948_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, comment) VALUES -(-1000245, 'You, there! Hand over that moonstone and nobody gets hurt!', 1, 'SAY_RIZZLE_START'), -(-1000246, 'Just chill!', 4, 'SAY_RIZZLE_GRENADE'), -(-1000247, 'All right, you win! I surrender! Just don\'t hurt me!', 1, 'SAY_RIZZLE_FINAL'); - --- 950_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, emote, comment) VALUES -(-1000248, 'The last thing I remember is the ship falling and us getting into the pods. I\'ll go see how I can help. Thank you!', 0, 0, 'draenei survivor - HEAL1'), -(-1000249, '$C, Where am I? Who are you? Oh no! What happened to the ship?.', 0, 0, 'draenei survivor - HEAL2'), -(-1000250, '$C You saved me! I owe you a debt that I can never repay. I\'ll go see if I can help the others.', 0, 0, 'draenei survivor - HEAL3'), -(-1000251, 'Ugh... what is this place? Is that all that\'s left of the ship over there?', 0, 0, 'draenei survivor - HEAL4'), -(-1000252, 'Oh, the pain...', 0, 0, 'draenei survivor - HELP1'), -(-1000253, 'Everything hurts, Please make it stop...', 0, 0, 'draenei survivor - HELP2'), -(-1000254, 'Ughhh... I hurt. Can you help me?', 0, 0, 'draenei survivor - HELP3'), -(-1000255, 'I don\'t know if I can make it, please help me...', 0, 0, 'draenei survivor - HELP4'), - -(-1000256, 'Yes Master, all goes along as planned.', 0, 1, 'overgrind - SAY_TEXT'), -(-1000257, 'puts the shell to his ear.', 2, 0, 'overgrind - SAY_EMOTE'), -(-1000258, 'Now I cut you!', 1, 0, 'overgrind - YELL_ATTACK'), - -(-1000259, 'What\'s the big idea, Spark?', 0, 0, 'geezle - GEEZLE_SAY_1'), -(-1000260, 'What\'s the big idea? You nearly blew my cover, idiot! I told you to put the compass and navigation maps somewhere safe - not out in the open for any fool to discover.', 0, 0, 'geezle - SPARK_SAY_2'), -(-1000261, 'The Master has gone to great lengths to secure information about the whereabouts of the Exodar. You could have blown the entire operation, including the cover of our spy on the inside.', 0, 0, 'geezle - SPARK_SAY_3'), -(-1000262, 'Relax, Spark! I have it all under control. We\'ll strip mine the Exodar right out from under \'em - making both you and I very, very rich in the process.', 0, 0, 'geezle - GEEZLE_SAY_4'), -(-1000263, 'Relax? Do you know what Kael\'thas does to those that fail him, Geezle? Eternal suffering and pain... Do NOT screw this up, fool.', 0, 0, 'geezle - SPARK_SAY_5'), -(-1000264, 'Our Bloodmyst scouts have located our contact. The fool, Velen, will soon leave himself open and defenseless -- long enough for us to strike! Now get out of my sight before I vaporize you...', 0, 0, 'geezle - SPARK_SAY_6'), -(-1000265, 'Yes, sir. It won\'t happen again...', 0, 0, 'geezle - GEEZLE_SAY_7'), -(-1000266, 'picks up the naga flag.', 2, 0, 'geezle - EMOTE_SPARK'); - --- 951_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, comment) VALUES -(-1000267, 'Ready when you are, warrior.', 1, 'flathead - SAY_BIG_WILL_READY'), -(-1000268, 'The Affray has begun, get ready to fight!', 1, 'flathead - SAY_TWIGGY_FLATHEAD_BEGIN'), -(-1000269, 'You! Enter the fray!', 1, 'flathead - SAY_TWIGGY_FLATHEAD_FRAY'), -(-1000270, 'Challenger is down!', 1, 'flathead - SAY_TWIGGY_FLATHEAD_DOWN'), -(-1000271, 'The Affray is over.', 1, 'flathead - SAY_TWIGGY_FLATHEAD_OVER'), - -(-1000272, 'Alright, alright I think I can figure out how to operate this thing...', 0, 'shredder - SAY_PROGRESS_1'), -(-1000273, 'Arrrgh! This isn\'t right!', 0, 'shredder - SAY_PROGRESS_2'), -(-1000274, 'Okay, I think I\'ve got it, now. Follow me, $N!', 0, 'shredder - SAY_PROGRESS_3'), -(-1000275, 'There\'s the stolen shredder! Stop it or Lugwizzle will have our hides!', 1, 'shredder - SAY_MERCENARY_4'), -(-1000276, 'Looks like we\'re out of woods, eh? Wonder what this does...', 0, 'shredder - SAY_PROGRESS_5'), -(-1000277, 'Come on, don\'t break down on me now!', 0, 'shredder - SAY_PROGRESS_6'), -(-1000278, 'That was a close one! Well, let\'s get going, it\'s still a ways to Ratchet!', 0, 'shredder - SAY_PROGRESS_7'), -(-1000279, 'Hmm... I don\'t think this blinking red light is a good thing...', 0, 'shredder - SAY_PROGRESS_8'); - --- 952_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, language, comment) VALUES -(-1000280, 'Thank you, dear Paladin, you just saved my life.', 0, 7, 'faulk - SAY_HEAL'), - -(-1000281, 'Very well. Let\'s see what you have to show me, $N.', 0, 0, 'anvilvard - SAY_PR_1'), -(-1000282, 'What manner of trick is this, $R? If you seek to ambush me, I warn you I will not go down quietly!', 0, 0, 'anvilvard - SAY_PR_2'), -(-1000283, 'releases the last of its energies into the nerarby runestone, succesfully reactivating it.', 2, 0, 'crystal - EMOTE'), - -(-1000284, 'Deployment sucessful. Trespassers will be neutralized.', 0, 0, 'sentry - SAY_CONVERTED_1'), -(-1000285, 'Objective acquired. Initiating security routines.', 0, 0, 'sentry - SAY_CONVERTED_1'); - --- 953_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, emote, comment) VALUES -(-1000286, 'A shadowy, sinister presence has invader the Emerald Dream. Its power is poised to spill over into our world, $N. We must oppose it! That\'s why I cannot accompany you in person.', 0, 0, 'clintar_spirit'), -(-1000287, 'The Emerald Dream will never be yours!', 0, 0, 'clintar_spirit'), -(-1000288, 'Begone from this place!', 0, 0, 'clintar_spirit'), -(-1000289, 'That\'s the first relic, but there are still two more. Follow me, $N.', 0, 0, 'clintar_spirit'), -(-1000290, 'I\'ve recovered the second relic. Take a moment to rest, and then we\'ll continue to the last reliquary.', 0, 0, 'clintar_spirit'), -(-1000291, 'We have all three of the relics, but my energy is rapidly fading. We must make our way back to Dreamwarden Lurosa! He will let you know what to do next.', 0, 0, 'clintar_spirit'), -(-1000292, 'Lurosa, I am entrusting the Relics of Aviana to $N, who will take them to Morthis Whisperwing. I must return completely to the Emerald Dream now. Do not let $N fail!', 0, 0, 'clintar_spirit'); - --- 954_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, comment) VALUES -(-1000293, 'In Nagrand, food hunt ogre!', 0, 'LUMP_SAY0'), -(-1000294, 'You taste good with maybe a little salt and pepper.', 0, 'LUMP_SAY1'), -(-1000295, 'OK, OK! Lump give up!', 0, 'LUMP_DEFEAT'), - -(-1000296, 'Warning! Emergency shutdown process initiated by $N. Shutdown will complete in two minutes.', 2, 'npc_manaforge_control_console - EMOTE_START'), -(-1000297, 'Emergency shutdown will complete in one minute.', 2, 'npc_manaforge_control_console - EMOTE_60'), -(-1000298, 'Emergency shutdown will complete in thirty seconds.', 2, 'npc_manaforge_control_console - EMOTE_30'), -(-1000299, 'Emergency shutdown will complete in ten seconds.', 2, 'npc_manaforge_control_console - EMOTE_10'), -(-1000300, 'Emergency shutdown complete.', 2, 'npc_manaforge_control_console - EMOTE_COMPLETE'), -(-1000301, 'Emergency shutdown aborted.', 2, 'npc_manaforge_control_console - EMOTE_ABORT'), - -(-1000302, 'Saeed is currently engaged or awaiting orders to engage. You may check directly east of me and see if Saeed is ready for you. If he is not present then he is off fighting another battle. I recommend that you wait for him to return before attacking Dimensius.', 4, 'npc_professor_dabiri - WHISPER_DABIRI'), - -(-1000303, 'is very weak', 2, 'mob_phase_hunter - EMOTE_WEAK'), - -(-1000304, 'Bessy, is that you?', 0, 'npc_bessy- SAY_THADELL_1'), -(-1000305, 'Thank you for bringing back my Bessy, $N. I couldn\'t live without her!', 0, 'npc_bessy- SAY_THADELL_2'); - --- 955_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, comment) VALUES -(-1000306, 'Follow me, stranger. This won\'t take long.', 0, 'npc_kservant - SAY1'), -(-1000307, 'Shattrath was once the draenei capital of this world. Its name means \"dwelling of light.\"', 4, 'npc_kservant - WHISP1'), -(-1000308, 'When the Burning Legion turned the orcs against the draenei, the fiercest battle was fought here. The draenei fought tooth and nail, but in the end the city fell.', 4, 'npc_kservant - WHISP2'), -(-1000309, 'The city was left in ruins and darkness... until the Sha\'tar arrived.', 4, 'npc_kservant - WHISP3'), -(-1000310, 'Let us go into the Lower City. I will warn you that as one of the only safe havens in Outland, Shattrath has attracted droves of refugees from all wars, current and past.', 4, 'npc_kservant - WHISP4'), -(-1000311, 'The Sha\'tar, or \"born from light\" are the naaru that came to Outland to fight the demons of the Burning Legion.', 4, 'npc_kservant - WHISP5'), -(-1000312, 'They were drawn to the ruins of Shattrath City where a small remnant of the draenei priesthood conducted its rites inside a ruined temple on this very spot.', 4, 'npc_kservant - WHISP6'), -(-1000313, 'The priesthood, known as the Aldor, quickly regained its strength as word spread that the naaru had returned and reconstruction soon began. The ruined temple is now used as an infirmary for injured refugees.', 4, 'npc_kservant - WHISP7'), -(-1000314, 'It wouldn\'t be long, however, before the city came under attack once again. This time, the attack came from Illidan\'s armies. A large regiment of blood elves had been sent by Illidan\'s ally, Kael\'thas Sunstrider, to lay waste to the city.', 4, 'npc_kservant - WHISP8'), -(-1000315, 'As the regiment of blood elves crossed this very bridge, the Aldor\'s exarchs and vindicators lined up to defend the Terrace of Light. But then the unexpected happened.', 4, 'npc_kservant - WHISP9'), -(-1000316, 'The blood elves laid down their weapons in front of the city\'s defenders; their leader, a blood elf elder known as Voren\'thal, stormed into the Terrace of Light and demanded to speak to A\'dal.', 4, 'npc_kservant - WHISP10'), -(-1000317, 'As the naaru approached him, Voren\'thal kneeled before him and uttered the following words: \"I\'ve seen you in a vision, naaru. My race\'s only hope for survival lies with you. My followers and I are here to serve you.\"', 4, 'npc_kservant - WHISP11'), -(-1000318, 'The defection of Voren\'thal and his followers was the largest loss ever incurred by Kael\'s forces. And these weren\'t just any blood elves. Many of the best and brightest amongst Kael\'s scholars and magisters had been swayed by Voren\'thal\'s influence.', 4, 'npc_kservant - WHISP12'), -(-1000319, 'The naaru accepted the defectors, who would become known as the Scryers; their dwelling lies in the platform above. Only those initiated with the Scryers are allowed there.', 4, 'npc_kservant - WHISP13'), -(-1000320, 'The Aldor are followers of the Light and forgiveness and redemption are values they understand. However, they found hard to forget the deeds of the blood elves while under Kael\'s command.', 4, 'npc_kservant - WHISP14'), -(-1000321, 'Many of the priesthood had been slain by the same magisters who now vowed to serve the naaru. They were not happy to share the city with their former enemies.', 4, 'npc_kservant - WHISP15'), -(-1000322, 'The Aldor\'s most holy temple and its surrounding dwellings lie on the terrace above. As a holy site, only the initiated are welcome inside.', 4, 'npc_kservant - WHISP16'), -(-1000323, 'The attacks against Shattrath continued, but the city did not fall, as you can see. On the contrary, the naaru known as Xi\'ri led a successful incursion into Shadowmoon Valley - Illidan\'s doorstep.', 4, 'npc_kservant - WHISP17'), -(-1000324, 'There he continues to wage war on Illidan with the assistance of the Aldor and the Scryers. The two factions have not given up on their old feuds, though.', 4, 'npc_kservant - WHISP18'), -(-1000325, 'Such is their animosity that they vie for the honor of being sent to assist the naaru there. Each day, that decision is made here by A\'dal. The armies gather here to receive A\'dal\'s blessing before heading to Shadowmoon.', 4, 'npc_kservant - WHISP19'), -(-1000326, 'Khadgar should be ready to see you again. Just remember that to serve the Sha\'tar you will most likely have to ally with the Aldor or the Scryers. And seeking the favor of one group will cause the others\' dislike.', 4, 'npc_kservant - WHISP20'), -(-1000327, 'Good luck stranger, and welcome to Shattrath City.', 4, 'npc_kservant - WHISP21'), -(-1000328, 'Time to teach you a lesson in manners, little boy!', 0, ''), -(-1000329, 'Now I\'m gonna give you to the count of \'3\' to get out of here before I sick the dogs on you.', 0, ''), -(-1000330, '1...', 0, ''), -(-1000331, '2...', 0, ''), -(-1000332, 'Time to meet your maker!', 0, ''), -(-1000333, 'Alright, we give up! Don\'t hurt us!', 0, ''); - -DELETE FROM script_texts WHERE entry=-1000334; -INSERT INTO script_texts (entry, content_default, type, language, comment) VALUES -(-1000334, 'Thank you, dear Paladin, you just saved my life.', 0, 10, 'stillblade - SAY_HEAL'); - -DELETE FROM script_texts WHERE entry BETWEEN -1000349 and -1000335; -INSERT INTO script_texts (entry, content_default, type, comment) VALUES -(-1000335, 'Let\'s get to the others, and keep an eye open for those wolves cutside...', 0, 'npc_deathstalker_erland -- SAY_QUESTACCEPT'), -(-1000336, 'Be careful, $N. Those wolves like to hide among the trees.', 0, 'npc_deathstalker_erland - SAY_START'), -(-1000337, 'A $C attacks!', 0, 'npc_deathstalker_erland - SAY_AGGRO_1'), -(-1000338, 'Beware! I am under attack!', 0, 'npc_deathstalker_erland - SAY_AGGRO_2'), -(-1000339, 'We\'re almost there!', 0, 'npc_deathstalker_erland - SAY_LAST'), -(-1000340, 'We made it! Thanks, $N. I couldn\'t have gotten without you.', 0, 'npc_deathstalker_erland - SAY_THANKS'), -(-1000341, 'It\'s good to see you again, Erland. What is your report?', 0, 'npc_deathstalker_erland - SAY_RANE'), -(-1000342, 'Masses of wolves are to the east, and whoever lived at Malden\'s Orchard is gone.', 0, 'npc_deathstalker_erland - SAY_ANSWER'), -(-1000343, 'If I am excused, then I\'d like to check on Quinn...', 0, 'npc_deathstalker_erland - SAY_MOVE_QUINN'), -(-1000344, 'Hello, Quinn. How are you faring?', 0, 'npc_deathstalker_erland - SAY_GREETINGS'), -(-1000345, 'I\'ve been better. Ivar the Foul got the better of me...', 0, 'npc_deathstalker_erland - SAY_QUINN'), -(-1000346, 'Try to take better care of yourself, Quinn. You were lucky this time.', 0, 'npc_deathstalker_erland - SAY_ON_BYE'), -(-1000347, 'Let\'s go before they find out I\'m free!', 0, 'npc_kaya_flathoof - SAY_START'), -(-1000348, 'Look out! We\'re under attack!', 0, 'npc_kaya_flathoof - SAY_AMBUSH'), -(-1000349, 'Thank you for helping me. I know my way back from here.', 0, 'npc_kaya_flathoof - SAY_END'); - --- 956_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, comment) VALUES -(-1000350, 'Who dares awaken Aquementas?', 1, 'mob_aquementas - AGGRO_YELL_AQUE'), -(-1000351, 'I give up! Please don\'t kill me!', 0, 'mob_unkor_the_ruthless - SAY_SUBMIT'), -(-1000352, 'I choose the third option: KILLING YOU!', 0, 'npc_floon - SAY_FLOON_ATTACK'), -(-1000353, 'Ok let\'s get out of here!', 0, 'npc_isla_starmane - SAY_PROGRESS_1'), -(-1000354, 'You sure you\'re ready? Take a moment.', 0, 'npc_isla_starmane - SAY_PROGRESS_2'), -(-1000355, 'Alright, let\'s do this!', 0, 'npc_isla_starmane - SAY_PROGRESS_3'), -(-1000356, 'Ok, I think I can make it on my own from here. Thank you so much for breaking me out of there!', 0, 'npc_isla_starmane - SAY_PROGRESS_4'), -(-1000357, 'Belore...', 0, 'npc_lady_sylvanas_windrunner - SAY_LAMENT_END'), -(-1000358, 'kneels down and pick up the amulet.', 2, 'npc_lady_sylvanas_windrunner - EMOTE_LAMENT_END'), -(-1000359, 'You have my blessing', 0, 'npcs_ashyen_and_keleth - GOSSIP_REWARD_BLESS'), -(-1000360, 'Is the way clear? Let\'s get out while we can, $N.', 0, 'npc_kayra_longmane - SAY_PROGRESS_1'), -(-1000361, 'Looks like we won\'t get away so easy. Get ready!', 0, 'npc_kayra_longmane - SAY_PROGRESS_2'), -(-1000362, 'Let\'s keep moving. We\'re not safe here!', 0, 'npc_kayra_longmane - SAY_PROGRESS_3'), -(-1000363, 'Look out, $N! Enemies ahead!', 0, 'npc_kayra_longmane - SAY_PROGRESS_4'), -(-1000364, 'We\'re almost to the refuge! Let\'s go.', 0, 'npc_kayra_longmane - SAY_PROGRESS_5'), -(-1000365, 'I can see my fellow druids from here. Thank you, $N. I\'m sure Ysiel will reward you for your actions!', 0, 'npc_kayra_longmane - SAY_PROGRESS_6'); - --- 963_world_scripts.sql -INSERT INTO script_texts (entry, content_default, type, comment) VALUES -(-1000366, 'So you have defeated the Crimson Sigil. You now seek to challenge my rule? Not even Arthas could defeat me, yet you dare to even harbor such thoughts? Then I say to you, come! Come $N! The Black Temple awaits...', 1, 'Quest: Battle of the crimson watch - END_TEXT'), - -(-1000367, 'At your command, my liege...', 0, 'TorlothAnim - First'), -(-1000368, 'Destroy them, Torloth. Let lose their blood like a river upon this hallowed ground.', 0, 'Quest: Battle of the crimson watch TorlothAnim - Second'), -(-1000369, 'As you desire, Lord Illidan.', 0, 'Quest: Battle of the crimson watch TorlothAnim - Third'), -(-1000370, 'Yes, Lord Illidan, I would sacrifice to you this magnificent physique. On this day you will fall - another victim of Torloth...', 0, 'Quest: Battle of the crimson watch TorlothAnim - Fourth'), - -(-1000371, 'What manner of fool dares stand before Illidan Stormrage? Soldiers, destroy these insects!', 1, 'Quest: Battle of the crimson watch WavesInfo - First'), -(-1000372, 'You are no challenge for the Crimson Sigil. Mind breakers, end this nonsense.', 1, 'Quest: Battle of the crimson watch WavesInfo - Second'), -(-1000373, 'Run while you still can. The highlords come soon...', 1, 'Quest: Battle of the crimson watch WavesInfo - Third'), -(-1000374, 'Torloth your master calls!', 1, 'Quest: Battle of the crimson watch WavesInfo - Fourth'); +(-1000205, 'A-ME at home!A-ME good!Good A-ME.At home.Home.Home', NULL, NULL, 'A-ME daheim!A-ME gut!Gute A-ME.Daheim.Daheim.Daheim', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), +(-1000206, 'Come, $N. Lord Stormrage awaits.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'OVERLORD_SAY_1'), +(-1000207, 'Lord Illidan will be here shortly.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'OVERLORD_SAY_2'), +(-1000208, 'Lord Illidan, this is the Dragonmaw that I, and others, have told you about. He will lead us to victory!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'OVERLORD_SAY_3'), +(-1000209, 'But... My lord, I do not understand. $N... He is the orc that has...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'OVERLORD_SAY_4'), +(-1000210, 'It will be done, my lord.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'OVERLORD_SAY_5'), +(-1000211, 'So you thought to make a fool of Mor''ghor, eh? Before you are delivered to Lord Illidan, you will feel pain that you could not know to exist. I will take pleasure in exacting my own vengeance.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 25, 'OVERLORD_SAY_6'), +(-1000212, 'Warriors of Dragonmaw, gather ''round! One among you has attained the rank of highlord! Bow your heads in reverence! Show your respect and allegiance to Highlord $N!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 22, 'OVERLORD_YELL_1'), +(-1000213, 'All hail Lord Illidan!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 66, 'OVERLORD_YELL_2'), +(-1000214, 'What is the meaning of this, Mor''ghor?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'LORD_ILLIDAN_SAY_1'), +(-1000215, 'SILENCE!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 22, 'LORD_ILLIDAN_SAY_2'), +(-1000216, 'Blathering idiot. You incomprehensibly incompetent buffoon...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'LORD_ILLIDAN_SAY_3'), +(-1000217, 'THIS is your hero?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 6, 'LORD_ILLIDAN_SAY_4'), +(-1000218, 'You have been deceived, imbecile.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'LORD_ILLIDAN_SAY_5'), +(-1000219, 'This... whole... operation... HAS BEEN COMPROMISED!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 22, 'LORD_ILLIDAN_SAY_6'), +(-1000220, 'I expect to see this insect''s carcass in pieces in my lair within the hour. Fail and you will suffer a fate so much worse than death.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'LORD_ILLIDAN_SAY_7'), +(-1000221, 'You will not harm the boy, Mor''ghor! Quickly, $N, climb on my back!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 22, 'YARZILL_THE_MERC_SAY'), +(-1000222, 'Thank you, mortal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 11, 1, 'SAY_JUST_EATEN'), +(-1000223, 'I sense the tortured spirits, $N. They are this way, come quickly!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'SAY_START'), +(-1000224, 'Watch out!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_AGGRO1'), +(-1000225, 'Naga attackers! Defend yourself!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_AGGRO2'), +(-1000226, 'Kill them all!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'ASSASSIN_SAY_AGGRO1'), +(-1000227, 'You will never essscape Coilssskarrr...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'ASSASSIN_SAY_AGGRO2'), +(-1000228, 'Grant me protection $N, i must break trough their foul magic!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_PROGRESS1'), +(-1000229, 'The naga of Coilskar are exceptionally cruel to their prisoners. It is a miracle that I survived inside that watery prison for as long as I did. Earthmother be praised.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_PROGRESS2'), +(-1000230, 'Now we must find the exit.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_PROGRESS3'), +(-1000231, 'Lady Vashj must answer for these atrocities. She must be brought to justice!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 20, 'SAY_PROGRESS4'), +(-1000232, 'The tumultuous nature of the great waterways of Azeroth and Draenor are a direct result of tormented water spirits.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 4, 'SAY_PROGRESS5'), +(-1000233, 'It shouldn''t be much further, $N. The exit is just up ahead.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_PROGRESS6'), +(-1000234, 'Thank you, $N. Please return to my brethren at the Altar of Damnation, near the Hand of Gul''dan, and tell them that Wilda is safe. May the Earthmother watch over you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_END'), +(-1000235, 'Ok, $N. Follow me to the cave where I''ll attempt to harness the power of the rune stone into these goggles.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'phizzlethorpe - SAY_PROGRESS_1'), +(-1000236, 'I discovered this cave on our first day here. I believe the energy in the stone can be used to our advantage.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'phizzlethorpe - SAY_PROGRESS_2'), +(-1000237, 'I''ll begin drawing energy from the stone. Your job, $N, is to defend me. This place is cursed... trust me.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'phizzlethorpe - SAY_PROGRESS_3'), +(-1000238, 'begins tinkering with the goggles before the stone.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'phizzlethorpe - EMOTE_PROGRESS_4'), +(-1000239, 'Help!!! Get these things off me so I can get my work done!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_AGGRO'), +(-1000240, 'Almost done! Just a little longer!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'phizzlethorpe - SAY_PROGRESS_5'), +(-1000241, 'I''ve done it! I have harnessed the power of the stone into the goggles! Let''s get out of here!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'phizzlethorpe - SAY_PROGRESS_6'), +(-1000242, 'Phew! Glad to be back from that creepy cave.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'phizzlethorpe - SAY_PROGRESS_7'), +(-1000243, 'hands one glowing goggles over to Doctor Draxlegauge.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'phizzlethorpe - EMOTE_PROGRESS_8'), +(-1000244, 'Doctor Draxlegauge will give you further instructions, $N. Many thanks for your help!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, 'phizzlethorpe - SAY_PROGRESS_9'), +(-1000245, 'You, there! Hand over that moonstone and nobody gets hurt!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'SAY_RIZZLE_START'), +(-1000246, 'Just chill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'SAY_RIZZLE_GRENADE'), +(-1000247, 'All right, you win! I surrender! Just don''t hurt me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'SAY_RIZZLE_FINAL'), +(-1000248, 'The last thing I remember is the ship falling and us getting into the pods. I''ll go see how I can help. Thank you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HEAL1'), +(-1000249, '$C, Where am I? Who are you? Oh no! What happened to the ship?.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HEAL2'), +(-1000250, '$C You saved me! I owe you a debt that I can never repay. I''ll go see if I can help the others.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HEAL3'), +(-1000251, 'Ugh... what is this place? Is that all that''s left of the ship over there?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HEAL4'), +(-1000252, 'Oh, the pain...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HELP1'), +(-1000253, 'Everything hurts, Please make it stop...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HELP2'), +(-1000254, 'Ughhh... I hurt. Can you help me?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HELP3'), +(-1000255, 'I don''t know if I can make it, please help me...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'draenei survivor - HELP4'), +(-1000256, 'Yes Master, all goes along as planned.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 4, 'overgrind - SAY_TEXT'), +(-1000257, 'puts the shell to his ear.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'overgrind - SAY_EMOTE'), +(-1000258, 'Now I cut you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 4, 'overgrind - YELL_ATTACK'), +(-1000259, 'What''s the big idea, Spark?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'geezle - GEEZLE_SAY_1'), +(-1000260, 'What''s the big idea? You nearly blew my cover, idiot! I told you to put the compass and navigation maps somewhere safe - not out in the open for any fool to discover.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 4, 'geezle - SPARK_SAY_2'), +(-1000261, 'The Master has gone to great lengths to secure information about the whereabouts of the Exodar. You could have blown the entire operation, including the cover of our spy on the inside.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'geezle - SPARK_SAY_3'), +(-1000262, 'Relax, Spark! I have it all under control. We''ll strip mine the Exodar right out from under ''em - making both you and I very, very rich in the process.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 4, 'geezle - GEEZLE_SAY_4'), +(-1000263, 'Relax? Do you know what Kael''thas does to those that fail him, Geezle? Eternal suffering and pain... Do NOT screw this up, fool.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'geezle - SPARK_SAY_5'), +(-1000264, 'Our Bloodmyst scouts have located our contact. The fool, Velen, will soon leave himself open and defenseless -- long enough for us to strike! Now get out of my sight before I vaporize you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'geezle - SPARK_SAY_6'), +(-1000265, 'Yes, sir. It won''t happen again...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'geezle - GEEZLE_SAY_7'), +(-1000266, 'picks up the naga flag.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'geezle - EMOTE_SPARK'), +(-1000267, 'Ready when you are, warrior.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'flathead - SAY_BIG_WILL_READY'), +(-1000268, 'The Affray has begun, get ready to fight!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'flathead - SAY_TWIGGY_FLATHEAD_BEGIN'), +(-1000269, 'You! Enter the fray!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'flathead - SAY_TWIGGY_FLATHEAD_FRAY'), +(-1000270, 'Challenger is down!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'flathead - SAY_TWIGGY_FLATHEAD_DOWN'), +(-1000271, 'The Affray is over.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'flathead - SAY_TWIGGY_FLATHEAD_OVER'), +(-1000272, 'Alright, alright I think I can figure out how to operate this thing...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'shredder - SAY_PROGRESS_1'), +(-1000273, 'Arrrgh! This isn''t right!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'shredder - SAY_PROGRESS_2'), +(-1000274, 'Okay, I think I''ve got it, now. Follow me, $N!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'shredder - SAY_PROGRESS_3'), +(-1000275, 'There''s the stolen shredder! Stop it or Lugwizzle will have our hides!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'shredder - SAY_MERCENARY_4'), +(-1000276, 'Looks like we''re out of woods, eh? Wonder what this does...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'shredder - SAY_PROGRESS_5'), +(-1000277, 'Come on, don''t break down on me now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'shredder - SAY_PROGRESS_6'), +(-1000278, 'That was a close one! Well, let''s get going, it''s still a ways to Ratchet!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'shredder - SAY_PROGRESS_7'), +(-1000279, 'Hmm... I don''t think this blinking red light is a good thing...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'shredder - SAY_PROGRESS_8'), +(-1000280, 'Thank you, dear Paladin, you just saved my life.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'faulk - SAY_HEAL'), +(-1000281, 'Very well. Let''s see what you have to show me, $N.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'anvilvard - SAY_PR_1'), +(-1000282, 'What manner of trick is this, $R? If you seek to ambush me, I warn you I will not go down quietly!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'anvilvard - SAY_PR_2'), +(-1000283, 'releases the last of its energies into the nerarby runestone, succesfully reactivating it.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'crystal - EMOTE'), +(-1000284, 'Deployment sucessful. Trespassers will be neutralized.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'sentry - SAY_CONVERTED_1'), +(-1000285, 'Objective acquired. Initiating security routines.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'sentry - SAY_CONVERTED_1'), +(-1000286, 'A shadowy, sinister presence has invader the Emerald Dream. Its power is poised to spill over into our world, $N. We must oppose it! That''s why I cannot accompany you in person.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'clintar_spirit'), +(-1000287, 'The Emerald Dream will never be yours!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'clintar_spirit'), +(-1000288, 'Begone from this place!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'clintar_spirit'), +(-1000289, 'That''s the first relic, but there are still two more. Follow me, $N.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'clintar_spirit'), +(-1000290, 'I''ve recovered the second relic. Take a moment to rest, and then we''ll continue to the last reliquary.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'clintar_spirit'), +(-1000291, 'We have all three of the relics, but my energy is rapidly fading. We must make our way back to Dreamwarden Lurosa! He will let you know what to do next.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'clintar_spirit'), +(-1000292, 'Lurosa, I am entrusting the Relics of Aviana to $N, who will take them to Morthis Whisperwing. I must return completely to the Emerald Dream now. Do not let $N fail!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'clintar_spirit'), +(-1000293, 'In Nagrand, food hunt ogre!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'LUMP_SAY0'), +(-1000294, 'You taste good with maybe a little salt and pepper.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'LUMP_SAY1'), +(-1000295, 'OK, OK! Lump give up!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'LUMP_DEFEAT'), +(-1000296, 'Warning! Emergency shutdown process initiated by $N. Shutdown will complete in two minutes.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'npc_manaforge_control_console - EMOTE_START'), +(-1000297, 'Emergency shutdown will complete in one minute.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'npc_manaforge_control_console - EMOTE_60'), +(-1000298, 'Emergency shutdown will complete in thirty seconds.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'npc_manaforge_control_console - EMOTE_30'), +(-1000299, 'Emergency shutdown will complete in ten seconds.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'npc_manaforge_control_console - EMOTE_10'), +(-1000300, 'Emergency shutdown complete.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'npc_manaforge_control_console - EMOTE_COMPLETE'), +(-1000301, 'Emergency shutdown aborted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'npc_manaforge_control_console - EMOTE_ABORT'), +(-1000302, 'Saeed is currently engaged or awaiting orders to engage. You may check directly east of me and see if Saeed is ready for you. If he is not present then he is off fighting another battle. I recommend that you wait for him to return before attacking Dimensius.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_professor_dabiri - WHISPER_DABIRI'), +(-1000303, 'is very weak', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'mob_phase_hunter - EMOTE_WEAK'), +(-1000304, 'Bessy, is that you?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_bessy- SAY_THADELL_1'), +(-1000305, 'Thank you for bringing back my Bessy, $N. I couldn''t live without her!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_bessy- SAY_THADELL_2'), +(-1000306, 'Follow me, stranger. This won''t take long.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kservant - SAY1'), +(-1000307, 'Shattrath was once the draenei capital of this world. Its name means "dwelling of light."', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP1'), +(-1000308, 'When the Burning Legion turned the orcs against the draenei, the fiercest battle was fought here. The draenei fought tooth and nail, but in the end the city fell.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP2'), +(-1000309, 'The city was left in ruins and darkness... until the Sha''tar arrived.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP3'), +(-1000310, 'Let us go into the Lower City. I will warn you that as one of the only safe havens in Outland, Shattrath has attracted droves of refugees from all wars, current and past.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP4'), +(-1000311, 'The Sha''tar, or "born from light" are the naaru that came to Outland to fight the demons of the Burning Legion.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP5'), +(-1000312, 'They were drawn to the ruins of Shattrath City where a small remnant of the draenei priesthood conducted its rites inside a ruined temple on this very spot.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP6'), +(-1000313, 'The priesthood, known as the Aldor, quickly regained its strength as word spread that the naaru had returned and reconstruction soon began. The ruined temple is now used as an infirmary for injured refugees.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP7'), +(-1000314, 'It wouldn''t be long, however, before the city came under attack once again. This time, the attack came from Illidan''s armies. A large regiment of blood elves had been sent by Illidan''s ally, Kael''thas Sunstrider, to lay waste to the city.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP8'), +(-1000315, 'As the regiment of blood elves crossed this very bridge, the Aldor''s exarchs and vindicators lined up to defend the Terrace of Light. But then the unexpected happened.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP9'), +(-1000316, 'The blood elves laid down their weapons in front of the city''s defenders; their leader, a blood elf elder known as Voren''thal, stormed into the Terrace of Light and demanded to speak to A''dal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP10'), +(-1000317, 'As the naaru approached him, Voren''thal kneeled before him and uttered the following words: "I''ve seen you in a vision, naaru. My race''s only hope for survival lies with you. My followers and I are here to serve you."', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP11'), +(-1000318, 'The defection of Voren''thal and his followers was the largest loss ever incurred by Kael''s forces. And these weren''t just any blood elves. Many of the best and brightest amongst Kael''s scholars and magisters had been swayed by Voren''thal''s influence.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP12'), +(-1000319, 'The naaru accepted the defectors, who would become known as the Scryers; their dwelling lies in the platform above. Only those initiated with the Scryers are allowed there.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP13'), +(-1000320, 'The Aldor are followers of the Light and forgiveness and redemption are values they understand. However, they found hard to forget the deeds of the blood elves while under Kael''s command.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP14'), +(-1000321, 'Many of the priesthood had been slain by the same magisters who now vowed to serve the naaru. They were not happy to share the city with their former enemies.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP15'), +(-1000322, 'The Aldor''s most holy temple and its surrounding dwellings lie on the terrace above. As a holy site, only the initiated are welcome inside.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP16'), +(-1000323, 'The attacks against Shattrath continued, but the city did not fall, as you can see. On the contrary, the naaru known as Xi''ri led a successful incursion into Shadowmoon Valley - Illidan''s doorstep.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP17'), +(-1000324, 'There he continues to wage war on Illidan with the assistance of the Aldor and the Scryers. The two factions have not given up on their old feuds, though.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP18'), +(-1000325, 'Such is their animosity that they vie for the honor of being sent to assist the naaru there. Each day, that decision is made here by A''dal. The armies gather here to receive A''dal''s blessing before heading to Shadowmoon.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP19'), +(-1000326, 'Khadgar should be ready to see you again. Just remember that to serve the Sha''tar you will most likely have to ally with the Aldor or the Scryers. And seeking the favor of one group will cause the others'' dislike.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP20'), +(-1000327, 'Good luck stranger, and welcome to Shattrath City.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 4, 0, 0, 'npc_kservant - WHISP21'), +(-1000328, 'Time to teach you a lesson in manners, little boy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, ''), +(-1000329, 'Now I''m gonna give you to the count of ''3'' to get out of here before I sick the dogs on you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, ''), +(-1000330, '1...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, ''), +(-1000331, '2...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, ''), +(-1000332, 'Time to meet your maker!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, ''), +(-1000333, 'Alright, we give up! Don''t hurt us!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, ''), +(-1000334, 'Thank you, dear Paladin, you just saved my life.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 10, 0, 'stillblade - SAY_HEAL'), +(-1000335, 'Let''s get to the others, and keep an eye open for those wolves cutside...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_QUESTACCEPT'), +(-1000336, 'Be careful, $N. Those wolves like to hide among the trees.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_START'), +(-1000337, 'A $C attacks!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_AGGRO_1'), +(-1000338, 'Beware! I am under attack!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_AGGRO_2'), +(-1000339, 'We''re almost there!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_LAST'), +(-1000340, 'We made it! Thanks, $N. I couldn''t have gotten without you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_THANKS'), +(-1000341, 'It''s good to see you again, Erland. What is your report?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_RANE'), +(-1000342, 'Masses of wolves are to the east, and whoever lived at Malden''s Orchard is gone.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_ANSWER'), +(-1000343, 'If I am excused, then I''d like to check on Quinn...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_MOVE_QUINN'), +(-1000344, 'Hello, Quinn. How are you faring?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_GREETINGS'), +(-1000345, 'I''ve been better. Ivar the Foul got the better of me...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_QUINN'), +(-1000346, 'Try to take better care of yourself, Quinn. You were lucky this time.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_deathstalker_erland - SAY_ON_BYE'), +(-1000347, 'Let''s go before they find out I''m free!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kaya_flathoof - SAY_START'), +(-1000348, 'Look out! We''re under attack!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kaya_flathoof - SAY_AMBUSH'), +(-1000349, 'Thank you for helping me. I know my way back from here.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kaya_flathoof - SAY_END'), +(-1000350, 'Who dares awaken Aquementas?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'mob_aquementas - AGGRO_YELL_AQUE'), +(-1000351, 'I give up! Please don''t kill me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'mob_unkor_the_ruthless - SAY_SUBMIT'), +(-1000352, 'I choose the third option: KILLING YOU!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_floon - SAY_FLOON_ATTACK'), +(-1000353, 'Ok let''s get out of here!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_isla_starmane - SAY_PROGRESS_1'), +(-1000354, 'You sure you''re ready? Take a moment.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_isla_starmane - SAY_PROGRESS_2'), +(-1000355, 'Alright, let''s do this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_isla_starmane - SAY_PROGRESS_3'), +(-1000356, 'Ok, I think I can make it on my own from here. Thank you so much for breaking me out of there!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_isla_starmane - SAY_PROGRESS_4'), +(-1000357, 'Belore...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_lady_sylvanas_windrunner - SAY_LAMENT_END'), +(-1000358, 'kneels down and pick up the amulet.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'npc_lady_sylvanas_windrunner - EMOTE_LAMENT_END'), +(-1000359, 'You have my blessing', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npcs_ashyen_and_keleth - GOSSIP_REWARD_BLESS'), +(-1000360, 'Is the way clear? Let''s get out while we can, $N.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kayra_longmane - SAY_PROGRESS_1'), +(-1000361, 'Looks like we won''t get away so easy. Get ready!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kayra_longmane - SAY_PROGRESS_2'), +(-1000362, 'Let''s keep moving. We''re not safe here!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kayra_longmane - SAY_PROGRESS_3'), +(-1000363, 'Look out, $N! Enemies ahead!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kayra_longmane - SAY_PROGRESS_4'), +(-1000364, 'We''re almost to the refuge! Let''s go.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kayra_longmane - SAY_PROGRESS_5'), +(-1000365, 'I can see my fellow druids from here. Thank you, $N. I''m sure Ysiel will reward you for your actions!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'npc_kayra_longmane - SAY_PROGRESS_6'), +(-1000366, 'So you have defeated the Crimson Sigil. You now seek to challenge my rule? Not even Arthas could defeat me, yet you dare to even harbor such thoughts? Then I say to you, come! Come $N! The Black Temple awaits...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'Quest: Battle of the crimson watch - END_TEXT'), +(-1000367, 'At your command, my liege...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'TorlothAnim - First'), +(-1000368, 'Destroy them, Torloth. Let lose their blood like a river upon this hallowed ground.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Quest: Battle of the crimson watch TorlothAnim - Second'), +(-1000369, 'As you desire, Lord Illidan.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Quest: Battle of the crimson watch TorlothAnim - Third'), +(-1000370, 'Yes, Lord Illidan, I would sacrifice to you this magnificent physique. On this day you will fall - another victim of Torloth...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Quest: Battle of the crimson watch TorlothAnim - Fourth'), +(-1000371, 'What manner of fool dares stand before Illidan Stormrage? Soldiers, destroy these insects!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'Quest: Battle of the crimson watch WavesInfo - First'), +(-1000372, 'You are no challenge for the Crimson Sigil. Mind breakers, end this nonsense.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'Quest: Battle of the crimson watch WavesInfo - Second'), +(-1000373, 'Run while you still can. The highlords come soon...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'Quest: Battle of the crimson watch WavesInfo - Third'), +(-1000374, 'Torloth your master calls!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'Quest: Battle of the crimson watch WavesInfo - Fourth'), +(-1000375, 'I remember well the sting of defeat at the conclusion of the Third War. I have waited far too long for my revenge. Now the shadow of the Legion falls over this world. It is only a matter of time until all of your failed creation... is undone.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11332, 1, 0, 0, 'kazzak SAY_INTRO'), +(-1000376, 'The Legion will conquer all!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11333, 1, 0, 0, 'kazzak SAY_AGGRO1'), +(-1000377, 'All mortals will perish!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11334, 1, 0, 0, 'kazzak SAY_AGGRO2'), +(-1000378, 'All life must be eradicated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11335, 1, 0, 0, 'kazzak SAY_SURPREME1'), +(-1000379, 'I''ll rip the flesh from your bones!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11336, 1, 0, 0, 'kazzak SAY_SURPREME2'), +(-1000380, 'Kirel Narak!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11337, 1, 0, 0, 'kazzak SAY_KILL1'), +(-1000381, 'Contemptible wretch!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11338, 1, 0, 0, 'kazzak SAY_KILL2'), +(-1000382, 'The universe will be remade.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11339, 1, 0, 0, 'kazzak SAY_KILL3'), +(-1000383, 'The Legion... will never... fall.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11340, 1, 0, 0, 'kazzak SAY_DEATH'), +(-1000384, '%s goes into a frenzy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'kazzak EMOTE_FRENZY'), +(-1000385, 'Invaders, you dangle upon the precipice of oblivion! The Burning Legion comes and with it comes your end.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'kazzak SAY_RAND1'), +(-1000386, 'Impudent whelps, you only delay the inevitable. Where one has fallen, ten shall rise. Such is the will of Kazzak...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'kazzak SAY_RAND2'), +(-1000387, 'Do not proceed. You will be eliminated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11344, 1, 0, 0, 'doomwalker SAY_AGGRO'), +(-1000388, 'Tectonic disruption commencing.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11345, 1, 0, 0, 'doomwalker SAY_EARTHQUAKE_1'), +(-1000389, 'Magnitude set. Release.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11346, 1, 0, 0, 'doomwalker SAY_EARTHQUAKE_2'), +(-1000390, 'Trajectory locked.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11347, 1, 0, 0, 'doomwalker SAY_OVERRUN_1'), +(-1000391, 'Engage maximum speed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11348, 1, 0, 0, 'doomwalker SAY_OVERRUN_2'), +(-1000392, 'Threat level zero.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11349, 1, 0, 0, 'doomwalker SAY_SLAY_1'), +(-1000393, 'Directive accomplished.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11350, 1, 0, 0, 'doomwalker SAY_SLAY_2'), +(-1000394, 'Target exterminated.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11351, 1, 0, 0, 'doomwalker SAY_SLAY_3'), +(-1000395, 'System failure in five, f-o-u-r...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11352, 1, 0, 0, 'doomwalker SAY_DEATH'), +(-1000396, 'Muahahahaha! You fool! You''ve released me from my banishment in the interstices between space and time!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'mobs_nether_drake - SAY_NIHIL_1'), +(-1000397, 'All of Draenor shall quick beneath my feet! I will destroy this world and reshape it in my image!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'mobs_nether_drake - SAY_NIHIL_2'), +(-1000398, 'Where shall I begin? I cannot bother myself with a worm such as yourself. There is a world to be conquered!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'mobs_nether_Drake - SAY_NIHIL_3'), +(-1000399, 'No doubt the fools that banished me are long dead. I shall take wing survey my demense. Pray to whatever gods you hold dear that we do not meet again.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'mobs_nether_drake - SAY_NIHIL_4'), +(-1000400, 'NOOOOooooooo!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'mobs_nether_drake - SAY_NIHIL_INTERRUPT'), +(-1000401, 'Good $N, you are under the spell''s influence. I must analyze it quickly, then we can talk.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 0, 'npc_daranelle - SAY_DARANELLE'); -- -1 033 000 SHADOWFANG KEEP -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1033000,'Thanks for freeing me, I\'ll open this door for you, then I will get out of here.',0,0,0,'shadowfang_prisoner SAY_FREE'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1033000, 'Follow me and I''ll open the courtyard door for you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 1, 'prisoner ashcrombe SAY_FREE_AS'), +(-1033001, 'I have just the spell to get this door open. Too bad the cell doors weren''t locked so haphazardly.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 1, 'prisoner ashcrombe SAY_OPEN_DOOR_AS'), +(-1033002, 'There it is! Wide open. Good luck to you conquering what lies beyond. I must report back to the Kirin Tor at once!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 1, 'prisoner ashcrombe SAY_POST_DOOR_AS'), +(-1033003, 'Free from this wretched cell at last! Let me show you to the courtyard....', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 'prisoner adamant SAY_FREE_AD'), +(-1033004, 'You are indeed courageous for wanting to brave the horrors that lie beyond this door.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 'prisoner adamant SAY_OPEN_DOOR_AD'), +(-1033005, 'There we go!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 'prisoner adamant SAY_POST1_DOOR_AD'), +(-1033006, 'Good luck with Arugal. I must hurry back to Hadrec now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 'prisoner adamant SAY_POST2_DOOR_AD'), +(-1033007, 'About time someone killed the wretch.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 'prisoner adamant SAY_BOSS_DIE_AD'), +(-1033008, 'For once I agree with you... scum.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 7, 1, 'prisoner ashcrombe SAY_BOSS_DIE_AS'); -- -1 034 000 STOCKADES -- -1 036 000 DEADMINES - --- -1 574 000 UTGARDE KEEP -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1574000, 'Your blood is mine!',13221,1,0,'keleseth SAY_AGGRO'), -(-1574001, 'Darkness waits',13223,1,0, 'keleseth SAY_KILL'), -(-1574002, 'I join... the night.',13225,1,0, 'keleseth SAY_DEATH'), -(-1574003, 'Not so fast.',13222,1,0, 'keleseth SAY_FROST_TOMB'), -(-1574004, 'Aranal, lidel! Their fate shall be yours!',13224,1,0, 'keleseth SAY_SKELETONS'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1036000, 'You there, check out that noise!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5775, 1, 7, 0, 'smite INST_SAY_ALARM1'), +(-1036001, 'We''re under attack! A vast, ye swabs! Repel the invaders!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5777, 1, 7, 0, 'smite INST_SAY_ALARM2'); -- -1 043 000 WAILING CAVERNS -- -1 047 000 RAZORFEN KRAUL -INSERT INTO script_texts (entry, content_default, sound, type, language, comment) VALUES -(-1047000, 'Phew! Finally,out here. However, it will not become easy. Detain your eyes after annoyance.', 0, 0, 0, 'Willix'), -(-1047001, 'There on top resides Charlga Razorflank. The damned old Crone.', 0, 0, 0, 'Willix'), -(-1047002, 'Help! Get this Raging Agam\'ar from me!', 0, 0, 0, 'Willix'), -(-1047003, 'In this ditch there are Blueleaf Tuber! As if the gold waited only to be dug out, I say it you!', 0, 0, 0, 'Willix'), -(-1047004, 'Danger is behind every corner.', 0, 0, 0, 'Willix'), -(-1047005, 'I do not understand how these disgusting animals can live at such a place.... puh as this stinks!', 0, 0, 0, 'Willix'), -(-1047006, 'I think, I see a way how we come out of this damned thorn tangle.', 0, 0, 0, 'Willix'), -(-1047007, 'I am glad that we are out again from this damned ditch. However, up here it is not much better!', 0, 0, 0, 'Willix'), -(-1047008, 'Finally! I am glad that I come, finally out here.', 0, 0, 0, 'Willix'), -(-1047009, 'I will rather rest a moment and come again to breath, before I return to Ratchet.', 0, 0, 0, 'Willix'), -(-1047010, 'Many thanks for your help.', 0, 0, 0, 'Willix'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1047000, 'Phew! Finally,out here. However, it will not become easy. Detain your eyes after annoyance.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047001, 'There on top resides Charlga Razorflank. The damned old Crone.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047002, 'Help! Get this Raging Agam''ar from me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047003, 'In this ditch there are Blueleaf Tuber! As if the gold waited only to be dug out, I say it you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047004, 'Danger is behind every corner.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047005, 'I do not understand how these disgusting animals can live at such a place.... puh as this stinks!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047006, 'I think, I see a way how we come out of this damned thorn tangle.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047007, 'I am glad that we are out again from this damned ditch. However, up here it is not much better!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047008, 'Finally! I am glad that I come, finally out here.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047009, 'I will rather rest a moment and come again to breath, before I return to Ratchet.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'), +(-1047010, 'Many thanks for your help.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'Willix'); -- -1 048 000 BLACKFATHOM DEEPS -- -1 060 000 863_world_scripts.sql -INSERT INTO script_texts -(`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) -VALUES +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES (-1060000, 'Emergency power activated! Initializing ambulatory motor! CLUCK!', NULL, NULL, 'Notfallenergie aktiviert! Ambulatorenantrieb wird gestartet! GLUCK!', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), (-1060001, 'Physical threat detected! Evasive action! CLUCK!', NULL, NULL, 'Körperliche Bedrohung entdeckt! Ausweichmanöver! GLUCK!', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), (-1060002, 'Threat analyzed! Activating combat plan beta! CLUCK!', NULL, NULL, 'Bedrohung analysiert! Gefechtsplan Beta wird aktiviert! GLUCK!', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL), @@ -352,1212 +364,1338 @@ VALUES (-1060005, 'Cloaking systems online! CLUCK! Engaging cloak for transport to Booty Bay!', NULL, NULL, 'Tarnsysteme online! GLUCK! Tarnung für Transport nach Beutebucht wird aktiviert.', NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, NULL); -- -1 070 000 ULDAMAN +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1070000, 'None may steal the secrets of the makers!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5851, 1, 0, 0, 'ironaya SAY_AGGRO'), +(-1070001, 'Taste blade, mongrel!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_GUARD_SIL_AGGRO1'), +(-1070002, 'Please tell me that you didn''t just do what I think you just did. Please tell me that I''m not going to have to hurt you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_GUARD_SIL_AGGRO2'), +(-1070003, 'As if we don''t have enough problems, you go and create more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'SAY_GUARD_SIL_AGGRO3'), +(-1070004, 'looks up at you quizzically. Maybe you should inspect it?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'cluck EMOTE_A_HELLO'), +(-1070005, 'looks at you unexpectadly.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'cluck EMOTE_H_HELLO'), +(-1070006, 'starts pecking at the feed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'cluck EMOTE_CLUCK_TEXT2'); -- -1 090 000 GNOMEREGAN -- -1 109 000 SUNKEN TEMPLE -- -1 129 000 RAZORFEN DOWNS +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1129000, 'You''ll never leave this place... alive.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5825, 1, 0, 0, 'amnennar SAY_AGGRO'), +(-1129001, 'To me, my servants!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5828, 1, 0, 0, 'amnennar SAY_SUMMON60'), +(-1129002, 'Come, spirits, attend your master!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5829, 1, 0, 0, 'amnennar SAY_SUMMON30'), +(-1129003, 'I am the hand of the Lich King!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5827, 1, 0, 0, 'amnennar SAY_HP'), +(-1129004, 'Too...easy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5826, 1, 0, 0, 'amnennar SAY_KILL'); -- -1 189 000 SCARLET MONASTERY -INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `comment`) VALUES -(-1189001, 'It is over, your search is done! Let fate choose now, the righteous one',0,0,0,0,0,0,0,0,11961,1,0,'Headless Horseman SAY_ENTRANCE'), -(-1189002, 'Here\'s my body, fit and pure! Now, your blackened souls I\'ll cure!',0,0,0,0,0,0,0,0,12567,1,0,'Headless Horseman SAY_REJOINED'), -(-1189003, 'Over here, you idiot!',0,0,0,0,0,0,0,0,12569,1,0,'Headless Horseman SAY_LOST_HEAD'), -(-1189004, 'Harken, cur! Tis you I spurn! Now, $N, feel the burn!',0,0,0,0,0,0,0,0,12573,1,0,'Headless Horseman SAY_CONFLAGRATION'), -(-1189005, 'Soldiers arise, stand and fight! Bring victory at last to this fallen knight!',0,0,0,0,0,0,0,0,11963,1,0,'Headless Horseman SAY_SPROUTING_PUMPKINS'), -(-1189006, 'Your body lies beaten, battered and broken. Let my curse be your own, fate has spoken',0,0,0,0,0,0,0,0,11962,0,0,'Headless Horseman SAY_PLAYER_DEATH'), -(-1189007, 'This end have I reached before. What new adventure lies in store?',0,0,0,0,0,0,0,0,11964,0,0,'Headless Horseman SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1189000, 'Ah, I have been waiting for a real challenge!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5830, 1, 0, 0, 'herod SAY_AGGRO'), +(-1189001, 'Blades of Light!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5832, 1, 0, 0, 'herod SAY_WHIRLWIND'), +(-1189002, 'Light, give me strength!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5833, 1, 0, 0, 'herod SAY_ENRAGE'), +(-1189003, 'Hah, is that all?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5831, 1, 0, 0, 'herod SAY_KILL'), +(-1189004, 'becomes enraged!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'herod EMOTE_ENRAGE'), +(-1189005, 'Infidels! They must be purified!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5835, 1, 0, 0, 'mograine SAY_MO_AGGRO'), +(-1189006, 'Unworthy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5836, 1, 0, 0, 'mograine SAY_MO_KILL'), +(-1189007, 'At your side, milady!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5837, 1, 0, 0, 'mograine SAY_MO_RESSURECTED'), +(-1189008, 'What, Mograine has fallen? You shall pay for this treachery!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5838, 1, 0, 0, 'whitemane SAY_WH_INTRO'), +(-1189009, 'The Light has spoken!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5839, 1, 0, 0, 'whitemane SAY_WH_KILL'), +(-1189010, 'Arise, my champion!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5840, 1, 0, 0, 'whitemane SAY_WH_RESSURECT'), +(-1189011, 'Tell me... tell me everything!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5847, 1, 0, 0, 'vishas SAY_AGGRO'), +(-1189012, 'Naughty secrets!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5849, 1, 0, 0, 'vishas SAY_HEALTH1'), +(-1189013, 'I''ll rip the secrets from your flesh!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5850, 1, 0, 0, 'vishas SAY_HEALTH2'), +(-1189014, 'Purged by pain!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5848, 1, 0, 0, 'vishas SAY_KILL'), +(-1189015, 'The monster got what he deserved.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 0, 'vishas SAY_TRIGGER_VORREL'), +(-1189016, 'We hunger for vengeance.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5844, 1, 0, 0, 'thalnos SAY_AGGRO'), +(-1189017, 'No rest, for the angry dead.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5846, 1, 0, 0, 'thalnos SAY_HEALTH'), +(-1189018, 'More... More souls.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5845, 1, 0, 0, 'thalnos SAY_KILL'), +(-1189019, 'You will not defile these mysteries!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5842, 1, 0, 0, 'doan SAY_AGGRO'), +(-1189020, 'Burn in righteous fire!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5843, 1, 0, 0, 'doan SAY_SPECIALAE'), +(-1189021, 'Release the hounds!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5841, 1, 0, 0, 'loksey SAY_AGGRO'); -- -1 209 000 ZUL'FARRAK -- -1 229 000 BLACKROCK SPIRE -- -1 230 000 BLACKROCK DEPTHS -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1230000,'Ah, hits the spot!',0,0,0,'rocknot SAY_GOT_BEER'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1230000, 'Ah, hits the spot!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'rocknot SAY_GOT_BEER'), +(-1230001, 'Come to aid the Throne!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'dagran SAY_AGGRO'), +(-1230002, 'Hail to the king, baby!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'dagran SAY_SLAY'); -- -1 249 000 ONYXIA'S LAIR -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1249000,'How fortuitous. Usually, I must leave my lair to feed.',0,1,0,'onyxia SAY_AGGRO'), -(-1249001,'Learn your place mortal!',0,1,0,'onyxia SAY_KILL'), -(-1249002,'This meaningless exertion bores me. I\'ll incinerate you all from above!',0,1,0,'onyxia SAY_PHASE_2_TRANS'), -(-1249003,'It seems you\'ll need another lesson, mortals!',0,1,0,'onyxia SAY_PHASE_3_TRANS'), -(-1249004,'takes in a deep breath...',0,1,0,'onyxia EMOTE_BREATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1249000, 'How fortuitous. Usually, I must leave my lair to feed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'onyxia SAY_AGGRO'), +(-1249001, 'Learn your place mortal!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'onyxia SAY_KILL'), +(-1249002, 'This meaningless exertion bores me. I''ll incinerate you all from above!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 254, 'onyxia SAY_PHASE_2_TRANS'), +(-1249003, 'It seems you''ll need another lesson, mortals!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 293, 'onyxia SAY_PHASE_3_TRANS'), +(-1249004, 'takes in a deep breath...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'onyxia EMOTE_BREATH'); -- -1 269 000 OPENING OF THE DARK PORTAL (BLACK MORASS) -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1269000,'Why do you persist? Surely you can see the futility of it all. It is not too late! You may still leave with your lives ...',10442,1,0,'temporus SAY_ENTER'), -(-1269001,'So be it ... you have been warned.',10444,1,0,'temporus SAY_AGGRO'), -(-1269002,'Time... sands of time is run out for you.',10443,1,0,'temporus SAY_BANISH'), -(-1269003,'You should have left when you had the chance.',10445,1,0,'temporus SAY_SLAY1'), -(-1269004,'Your days are done.',10446,1,0,'temporus SAY_SLAY2'), -(-1269005,'My death means ... little.',10447,1,0,'temporus SAY_DEATH'), - -(-1269006,'Why do you aid the Magus? Just think of how many lives could be saved if the portal is never opened, if the resulting wars could be erased ...',10412,1,0,'chrono_lord_deja SAY_ENTER'), -(-1269007,'If you will not cease this foolish quest, then you will die!',10414,1,0,'chrono_lord_deja SAY_AGGRO'), -(-1269008,'You have outstayed your welcome, Timekeeper. Begone!',10413,1,0,'chrono_lord_deja SAY_BANISH'), -(-1269009,'I told you it was a fool\'s quest!',10415,1,0,'chrono_lord_deja SAY_SLAY1'), -(-1269010,'Leaving so soon?',10416,1,0,'chrono_lord_deja SAY_SLAY2'), -(-1269011,'Time ... is on our side.',10417,1,0,'chrono_lord_deja SAY_DEATH'), - -(-1269012,'The time has come to shatter this clockwork universe forever! Let us no longer be slaves of the hourglass! I warn you: those who do not embrace the greater path shall become victims of its passing!',10400,1,0,'aeonus SAY_ENTER'), -(-1269013,'Let us see what fate lays in store...',10402,1,0,'aeonus SAY_AGGRO'), -(-1269014,'Your time is up, slave of the past!',10401,1,0,'aeonus SAY_BANISH'), -(-1269015,'One less obstacle in our way!',10403,1,0,'aeonus SAY_SLAY1'), -(-1269016,'No one can stop us! No one!',10404,1,0,'aeonus SAY_SLAY2'), -(-1269017,'It is only a matter...of time.',10405,1,0,'aeonus SAY_DEATH'); - -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1269018,'goes into a frenzy!',0,2,0,'aeonus EMOTE_FRENZY'), -(-1269019,'Stop! Do not go further, mortals. You are ill-prepared to face the forces of the Infinite Dragonflight. Come, let me help you.',0,0,0,'saat SAY_SAAT_WELCOME'), -(-1269020,'The time has come! Gul\'dan, order your warlocks to double their efforts! Moments from now the gateway will open, and your Horde will be released upon this ripe, unsuspecting world!',10435,1,0,'medivh SAY_ENTER'), -(-1269021,'What is this? Champions, coming to my aid? I sense the hand of the dark one in this. Truly this sacred event bears his blessing?',10436,1,0,'medivh SAY_INTRO'), -(-1269022,'Champions, my shield grows weak!',10437,1,0,'medivh SAY_WEAK75'), -(-1269023,'My powers must be concentrated on the portal! I do not have time to hold the shield!',10438,1,0,'medivh SAY_WEAK50'), -(-1269024,'The shield is nearly gone! All that I have worked for is in danger!',10439,1,0,'medivh SAY_WEAK25'), -(-1269025,'No... damn this feeble mortal coil...',10441,1,0,'medivh SAY_DEATH'), -(-1269026,'I am grateful for your aid, champions. Now, Gul\'dan\'s Horde will sweep across this world, like a locust swarm, and all my designs, all my carefully laid plans will at last fall into place.',10440,1,0,'medivh SAY_WIN'), -(-1269027,'Orcs of the Horde! This portalis the gateway to your new destiny! Azeroth lies before you, ripe for the taking!',0,1,0,'medivh SAY_ORCS_ENTER'), -(-1269028,'Gul\'dan speaks the truth! We should return at once to tell our brothers of the news! Retreat back trought the portal!',0,1,0,'medivh SAY_ORCS_ANSWER'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1269000, 'Why do you persist? Surely you can see the futility of it all. It is not too late! You may still leave with your lives ...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10442, 1, 0, 0, 'temporus SAY_ENTER'), +(-1269001, 'So be it ... you have been warned.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10444, 1, 0, 0, 'temporus SAY_AGGRO'), +(-1269002, 'Time... sands of time is run out for you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10443, 1, 0, 0, 'temporus SAY_BANISH'), +(-1269003, 'You should have left when you had the chance.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10445, 1, 0, 0, 'temporus SAY_SLAY1'), +(-1269004, 'Your days are done.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10446, 1, 0, 0, 'temporus SAY_SLAY2'), +(-1269005, 'My death means ... little.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10447, 1, 0, 0, 'temporus SAY_DEATH'), +(-1269006, 'Why do you aid the Magus? Just think of how many lives could be saved if the portal is never opened, if the resulting wars could be erased ...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10412, 1, 0, 0, 'chrono_lord_deja SAY_ENTER'), +(-1269007, 'If you will not cease this foolish quest, then you will die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10414, 1, 0, 0, 'chrono_lord_deja SAY_AGGRO'), +(-1269008, 'You have outstayed your welcome, Timekeeper. Begone!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10413, 1, 0, 0, 'chrono_lord_deja SAY_BANISH'), +(-1269009, 'I told you it was a fool''s quest!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10415, 1, 0, 0, 'chrono_lord_deja SAY_SLAY1'), +(-1269010, 'Leaving so soon?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10416, 1, 0, 0, 'chrono_lord_deja SAY_SLAY2'), +(-1269011, 'Time ... is on our side.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10417, 1, 0, 0, 'chrono_lord_deja SAY_DEATH'), +(-1269012, 'The time has come to shatter this clockwork universe forever! Let us no longer be slaves of the hourglass! I warn you: those who do not embrace the greater path shall become victims of its passing!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10400, 1, 0, 0, 'aeonus SAY_ENTER'), +(-1269013, 'Let us see what fate lays in store...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10402, 1, 0, 0, 'aeonus SAY_AGGRO'), +(-1269014, 'Your time is up, slave of the past!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10401, 1, 0, 0, 'aeonus SAY_BANISH'), +(-1269015, 'One less obstacle in our way!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10403, 1, 0, 0, 'aeonus SAY_SLAY1'), +(-1269016, 'No one can stop us! No one!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10404, 1, 0, 0, 'aeonus SAY_SLAY2'), +(-1269017, 'It is only a matter...of time.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10405, 1, 0, 0, 'aeonus SAY_DEATH'), +(-1269018, 'goes into a frenzy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'aeonus EMOTE_FRENZY'), +(-1269019, 'Stop! Do not go further, mortals. You are ill-prepared to face the forces of the Infinite Dragonflight. Come, let me help you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'saat SAY_SAAT_WELCOME'), +(-1269020, 'The time has come! Gul''dan, order your warlocks to double their efforts! Moments from now the gateway will open, and your Horde will be released upon this ripe, unsuspecting world!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10435, 1, 0, 0, 'medivh SAY_ENTER'), +(-1269021, 'What is this? Champions, coming to my aid? I sense the hand of the dark one in this. Truly this sacred event bears his blessing?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10436, 1, 0, 0, 'medivh SAY_INTRO'), +(-1269022, 'Champions, my shield grows weak!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10437, 1, 0, 0, 'medivh SAY_WEAK75'), +(-1269023, 'My powers must be concentrated on the portal! I do not have time to hold the shield!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10438, 1, 0, 0, 'medivh SAY_WEAK50'), +(-1269024, 'The shield is nearly gone! All that I have worked for is in danger!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10439, 1, 0, 0, 'medivh SAY_WEAK25'), +(-1269025, 'No... damn this feeble mortal coil...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10441, 1, 0, 0, 'medivh SAY_DEATH'), +(-1269026, 'I am grateful for your aid, champions. Now, Gul''dan''s Horde will sweep across this world, like a locust swarm, and all my designs, all my carefully laid plans will at last fall into place.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10440, 1, 0, 0, 'medivh SAY_WIN'), +(-1269027, 'Orcs of the Horde! This portalis the gateway to your new destiny! Azeroth lies before you, ripe for the taking!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'medivh SAY_ORCS_ENTER'), +(-1269028, 'Gul''dan speaks the truth! We should return at once to tell our brothers of the news! Retreat back trought the portal!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'medivh SAY_ORCS_ANSWER'); -- -1 289 000 SCHOLOMANCE -- -1 309 000 ZUL'GURUB -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1309000,'Let the coils of hate unfurl!',8421,1,0,'venoxis SAY_TRANSFORM'), -(-1309001,'Ssserenity..at lassst!',0,1,0,'venoxis SAY_DEATH'), - -(-1309002,'Lord Hir\'eek, grant me wings of vengance!',8417,1,0,'jeklik SAY_AGGRO'), -(-1309003,'I command you to rain fire down upon these invaders!',0,1,0,'jeklik SAY_RAIN_FIRE'), -(-1309004,'Finally ...death. Curse you Hakkar! Curse you!',8422,1,0,'jeklik SAY_DEATH'), - -(-1309005,'Draw me to your web mistress Shadra. Unleash your venom!',8418,1,0,'marli SAY_AGGRO'), -(-1309006,'Shadra, make of me your avatar!',0,1,0,'marli SAY_TRANSFORM'), -(-1309007,'Aid me my brood!',0,1,0,'marli SAY_SPIDER_SPAWN'), -(-1309008,'Bless you mortal for this release. Hakkar controls me no longer...',8423,1,0,'marli SAY_DEATH'), - -(-1309009,'Shirvallah, fill me with your RAGE!',8419,1,0,'thekal SAY_AGGRO'), -(-1309010,'Hakkar binds me no more! Peace at last!',8424,1,0,'thekal SAY_DEATH'), - -(-1309011,'Bethekk, your priestess calls upon your might!',8416,1,0,'arlokk SAY_AGGRO'), -(-1309012,'Feast on $n, my pretties!',0,1,0,'arlokk SAY_FEAST_PANTHER'), -(-1309013,'At last, I am free of the Soulflayer!',8412,1,0,'arlokk SAY_DEATH'), - -(-1309014,'Welcome to da great show friends! Step right up to die!',8425,1,0,'jindo SAY_AGGRO'), - -(-1309015,'I\'ll feed your souls to Hakkar himself!',8413,1,0,'mandokir SAY_AGGRO'), -(-1309016,'DING!',0,1,0,'mandokir SAY_DING_KILL'), -(-1309017,'GRATS!',0,1,0,'mandokir SAY_GRATS_JINDO'), -(-1309018,'I\'m keeping my eye on you, $N!',0,1,0,'mandokir SAY_WATCH'), -(-1309019,'Don\'t make me angry. You won\'t like it when I\'m angry.',0,1,0,'mandokir SAY_WATCH_WHISPER'), - -(-1309020,'PRIDE HERALDS THE END OF YOUR WORLD. COME, MORTALS! FACE THE WRATH OF THE SOULFLAYER!',8414,1,0,'hakkar SAY_AGGRO'), -(-1309021,'Fleeing will do you no good, mortals!',0,1,0,'hakkar SAY_FLEEING'), -(-1309022,'You dare set foot upon Hakkari holy ground? Minions of Hakkar, destroy the infidels!',0,1,0,'hakkar SAY_MINION_DESTROY'), -(-1309023,'Minions of Hakkar, hear your God. The sanctity of this temple has been compromised. Invaders encroach upon holy ground! The Altar of Blood must be protected. Kill them all!',0,1,0,'hakkar SAY_PROTECT_ALTAR'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1309000, 'Let the coils of hate unfurl!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8421, 1, 0, 0, 'venoxis SAY_TRANSFORM'), +(-1309001, 'Ssserenity..at lassst!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'venoxis SAY_DEATH'), +(-1309002, 'Lord Hir''eek, grant me wings of vengance!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8417, 1, 0, 0, 'jeklik SAY_AGGRO'), +(-1309003, 'I command you to rain fire down upon these invaders!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'jeklik SAY_RAIN_FIRE'), +(-1309004, 'Finally ...death. Curse you Hakkar! Curse you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8422, 1, 0, 0, 'jeklik SAY_DEATH'), +(-1309005, 'Draw me to your web mistress Shadra. Unleash your venom!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8418, 1, 0, 0, 'marli SAY_AGGRO'), +(-1309006, 'Shadra, make of me your avatar!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'marli SAY_TRANSFORM'), +(-1309007, 'Aid me my brood!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'marli SAY_SPIDER_SPAWN'), +(-1309008, 'Bless you mortal for this release. Hakkar controls me no longer...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8423, 1, 0, 0, 'marli SAY_DEATH'), +(-1309009, 'Shirvallah, fill me with your RAGE!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8419, 1, 0, 0, 'thekal SAY_AGGRO'), +(-1309010, 'Hakkar binds me no more! Peace at last!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8424, 1, 0, 0, 'thekal SAY_DEATH'), +(-1309011, 'Bethekk, your priestess calls upon your might!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8416, 1, 0, 0, 'arlokk SAY_AGGRO'), +(-1309012, 'Feast on $n, my pretties!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'arlokk SAY_FEAST_PANTHER'), +(-1309013, 'At last, I am free of the Soulflayer!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8412, 1, 0, 0, 'arlokk SAY_DEATH'), +(-1309014, 'Welcome to da great show friends! Step right up to die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8425, 1, 0, 0, 'jindo SAY_AGGRO'), +(-1309015, 'I''ll feed your souls to Hakkar himself!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8413, 1, 0, 0, 'mandokir SAY_AGGRO'), +(-1309016, 'DING!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'mandokir SAY_DING_KILL'), +(-1309017, 'GRATS!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'mandokir SAY_GRATS_JINDO'), +(-1309018, 'I''m keeping my eye on you, $N!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'mandokir SAY_WATCH'), +(-1309019, 'Don''t make me angry. You won''t like it when I''m angry.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'mandokir SAY_WATCH_WHISPER'), +(-1309020, 'PRIDE HERALDS THE END OF YOUR WORLD. COME, MORTALS! FACE THE WRATH OF THE SOULFLAYER!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8414, 1, 0, 0, 'hakkar SAY_AGGRO'), +(-1309021, 'Fleeing will do you no good, mortals!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'hakkar SAY_FLEEING'), +(-1309022, 'You dare set foot upon Hakkari holy ground? Minions of Hakkar, destroy the infidels!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'hakkar SAY_MINION_DESTROY'), +(-1309023, 'Minions of Hakkar, hear your God. The sanctity of this temple has been compromised. Invaders encroach upon holy ground! The Altar of Blood must be protected. Kill them all!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'hakkar SAY_PROTECT_ALTAR'); -- -1 329 000 STRATHOLME +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1329000, 'Thanks to Egan', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'freed_soul SAY_ZAPPED0'), +(-1329001, 'Rivendare must die', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'freed_soul SAY_ZAPPED1'), +(-1329002, 'Who you gonna call?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'freed_soul SAY_ZAPPED2'), +(-1329003, 'Don''t cross those beams!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'freed_soul SAY_ZAPPED3'); -- -1 349 000 MARAUDON -- -1 389 000 RAGEFIRE CHASM -- -1 409 000 MOLTEN CORE -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1409000,'performs one last service for Ragnaros.',0,2,0,'geddon EMOTE_SERVICE'), -(-1409001,'goes into a killing frenzy!',0,2,0,'magmadar EMOTE_FRENZY'), -(-1409002,'refuses to die while its master is in trouble.',0,2,0,'core rager EMOTE_AEGIS'), - -(-1409003,'Reckless mortals, none may challenge the sons of the living flame!',8035,1,0,'majordomo SAY_AGGRO'), -(-1409004,'The runes of warding have been destroyed! Hunt down the infedels my bretheren.',8039,1,0,'majordomo SAY_SPAWN'), -(-1409005,'Ashes to Ashes!',8037,1,0,'majordomo SAY_SLAY'), -(-1409006,'Burn mortals! Burn for this transgression!',8036,1,0,'majordomo SAY_SPECIAL'), -(-1409007,'Impossible! Stay your attack mortals! I submitt! I submitt! Brashly you have come to rest the secrets of the living flame. You will soon regret the recklessness of your quest. I go now to summon the lord whos house this is. Should you seek an audiance with him your paltry lives will surly be forfit. Nevertheless seek out his lair if you dare!',8038,1,0,'majordomo SAY_DEFEAT'), - -(-1409008,'Behold Ragnaros, the Firelord! He who was ancient when this world was young! Bow before him, mortals! Bow before your ending!',8040,1,0,'ragnaros SAY_SUMMON_MAJ'), -(-1409009,'TOO SOON! YOU HAVE AWAKENED ME TOO SOON, EXECUTUS! WHAT IS THE MEANING OF THIS INTRUSION?',8043,1,0,'ragnaros SAY_ARRIVAL1_RAG'), -(-1409010,'These mortal infidels, my lord! They have invaded your sanctum, and seek to steal your secrets!',8041,1,0,'ragnaros SAY_ARRIVAL2_MAJ'), -(-1409011,'FOOL! YOU ALLOWED THESE INSECTS TO RUN RAMPANT THROUGH THE HALLOWED CORE, AND NOW YOU LEAD THEM TO MY VERY LAIR? YOU HAVE FAILED ME, EXECUTUS! JUSTICE SHALL BE MET, INDEED!',8044,1,0,'ragnaros SAY_ARRIVAL3_RAG'), -(-1409012,'NOW FOR YOU, INSECTS. BOLDLY YOU SAUGHT THE POWER OF RAGNAROS NOW YOU SHALL SEE IT FIRST HAND.',8045,1,0,'ragnaros SAY_ARRIVAL5_RAG'), - -(-1409013,'COME FORTH, MY SERVANTS! DEFEND YOUR MASTER!',8049,1,0,'ragnaros SAY_REINFORCEMENTS1'), -(-1409014,'YOU CANNOT DEFEAT THE LIVING FLAME! COME YOU MINIONS OF FIRE! COME FORTH YOU CREATURES OF HATE! YOUR MASTER CALLS!',8050,1,0,'ragnaros SAY_REINFORCEMENTS2'), -(-1409015,'BY FIRE BE PURGED!',8046,1,0,'ragnaros SAY_HAND'), -(-1409016,'TASTE THE FLAMES OF SULFURON!',8047,1,0,'ragnaros SAY_WRATH'), -(-1409017,'DIE INSECT!',8051,1,0,'ragnaros SAY_KILL'), -(-1409018,'MY PATIENCE IS DWINDILING! COME NATS TO YOUR DEATH!',8048,1,0,'ragnaros SAY_MAGMABURST'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1409000, 'performs one last service for Ragnaros.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'geddon EMOTE_SERVICE'), +(-1409001, 'goes into a killing frenzy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'magmadar EMOTE_FRENZY'), +(-1409002, 'refuses to die while its master is in trouble.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'core rager EMOTE_AEGIS'), +(-1409003, 'Reckless mortals, none may challenge the sons of the living flame!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8035, 1, 0, 0, 'majordomo SAY_AGGRO'), +(-1409004, 'The runes of warding have been destroyed! Hunt down the infedels my bretheren.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8039, 1, 0, 0, 'majordomo SAY_SPAWN'), +(-1409005, 'Ashes to Ashes!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8037, 1, 0, 0, 'majordomo SAY_SLAY'), +(-1409006, 'Burn mortals! Burn for this transgression!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8036, 1, 0, 0, 'majordomo SAY_SPECIAL'), +(-1409007, 'Impossible! Stay your attack mortals! I submitt! I submitt! Brashly you have come to rest the secrets of the living flame. You will soon regret the recklessness of your quest. I go now to summon the lord whos house this is. Should you seek an audiance with him your paltry lives will surly be forfit. Nevertheless seek out his lair if you dare!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8038, 1, 0, 0, 'majordomo SAY_DEFEAT'), +(-1409008, 'Behold Ragnaros, the Firelord! He who was ancient when this world was young! Bow before him, mortals! Bow before your ending!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8040, 1, 0, 0, 'ragnaros SAY_SUMMON_MAJ'), +(-1409009, 'TOO SOON! YOU HAVE AWAKENED ME TOO SOON, EXECUTUS! WHAT IS THE MEANING OF THIS INTRUSION?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8043, 1, 0, 0, 'ragnaros SAY_ARRIVAL1_RAG'), +(-1409010, 'These mortal infidels, my lord! They have invaded your sanctum, and seek to steal your secrets!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8041, 1, 0, 0, 'ragnaros SAY_ARRIVAL2_MAJ'), +(-1409011, 'FOOL! YOU ALLOWED THESE INSECTS TO RUN RAMPANT THROUGH THE HALLOWED CORE, AND NOW YOU LEAD THEM TO MY VERY LAIR? YOU HAVE FAILED ME, EXECUTUS! JUSTICE SHALL BE MET, INDEED!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8044, 1, 0, 0, 'ragnaros SAY_ARRIVAL3_RAG'), +(-1409012, 'NOW FOR YOU, INSECTS. BOLDLY YOU SAUGHT THE POWER OF RAGNAROS NOW YOU SHALL SEE IT FIRST HAND.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8045, 1, 0, 0, 'ragnaros SAY_ARRIVAL5_RAG'), +(-1409013, 'COME FORTH, MY SERVANTS! DEFEND YOUR MASTER!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8049, 1, 0, 0, 'ragnaros SAY_REINFORCEMENTS1'), +(-1409014, 'YOU CANNOT DEFEAT THE LIVING FLAME! COME YOU MINIONS OF FIRE! COME FORTH YOU CREATURES OF HATE! YOUR MASTER CALLS!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8050, 1, 0, 0, 'ragnaros SAY_REINFORCEMENTS2'), +(-1409015, 'BY FIRE BE PURGED!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8046, 1, 0, 0, 'ragnaros SAY_HAND'), +(-1409016, 'TASTE THE FLAMES OF SULFURON!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8047, 1, 0, 0, 'ragnaros SAY_WRATH'), +(-1409017, 'DIE INSECT!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8051, 1, 0, 0, 'ragnaros SAY_KILL'), +(-1409018, 'MY PATIENCE IS DWINDILING! COME NATS TO YOUR DEATH!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8048, 1, 0, 0, 'ragnaros SAY_MAGMABURST'); -- -1 429 000 DIRE MAUL -- -1 469 000 BLACKWING LAIR -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1469000,'None of your kind should be here! You\'ve doomed only yourselves!',8286,1,0,'broodlord SAY_AGGRO'), -(-1469001,'Clever Mortals but I am not so easily lured away from my sanctum!',8287,1,0,'broodlord SAY_LEASH'), - -(-1469002,'goes into a killing frenzy!',0,2,0,'chromaggus EMOTE_FRENZY'), -(-1469003,'flinches as its skin shimmers.',0,2,0,'chromaggus EMOTE_SHIMMER'), - -(-1469004,'In this world where time is your enemy, it is my greatest ally. This grand game of life that you think you play in fact plays you. To that I say...',0,0,0,'victor_nefarius SAY_GAMESBEGIN_1'), -(-1469005,'Let the games begin!',8280,1,0,'victor_nefarius SAY_GAMESBEGIN_2'), -(-1469006,'Ah, the heroes. You are persistent, aren\'t you. Your allied attempted to match his power against mine, and had to pay the price. Now he shall serve me, by slaughtering you. Get up little red wyrm and destroy them!',8279,1,0,'victor_nefarius SAY_VAEL_INTRO'), - -(-1469007,'Well done, my minions. The mortals\' courage begins to wane! Now, let\'s see how they contend with the true Lord of Blackrock Spire!',8288,1,0,'nefarian SAY_AGGRO'), -(-1469008,'Enough! Now you vermin shall feel the force of my birthright, the fury of the earth itself.',8289,1,0,'nefarian SAY_XHEALTH'), -(-1469009,'Burn, you wretches! Burn!',8290,1,0,'nefarian SAY_SHADOWFLAME'), -(-1469010,'Impossible! Rise my minions! Serve your master once more!',8291,1,0,'nefarian SAY_RAISE_SKELETONS'), -(-1469011,'Worthless $N! Your friends will join you soon enough!',8293,1,0,'nefarian SAY_SLAY'), -(-1469012,'This cannot be! I am the Master here! You mortals are nothing to my kind! DO YOU HEAR? NOTHING!',8292,1,0,'nefarian SAY_DEATH'), -(-1469013,'Mages too? You should be more careful when you play with magic...',0,1,0,'nefarian SAY_MAGE'), -(-1469014,'Warriors, I know you can hit harder than that! Let\'s see it!',0,1,0,'nefarian SAY_WARRIOR'), -(-1469015,'Druids and your silly shapeshifting. Let\'s see it in action!',0,1,0,'nefarian SAY_DRUID'), -(-1469016,'Priests! If you\'re going to keep healing like that, we might as well make it a little more interesting!',0,1,0,'nefarian SAY_PRIEST'), -(-1469017,'Paladins, I\'ve heard you have many lives. Show me.',0,1,0,'nefarian SAY_PALADIN'), -(-1469018,'Shamans, show me what your totems can do!',0,1,0,'nefarian SAY_SHAMAN'), -(-1469019,'Warlocks, you shouldn\'t be playing with magic you don\'t understand. See what happens?',0,1,0,'nefarian SAY_WARLOCK'), -(-1469020,'Hunters and your annoying pea-shooters!',0,1,0,'nefarian SAY_HUNTER'), -(-1469021,'Rogues? Stop hiding and face me!',0,1,0,'nefarian SAY_ROGUE'), - -(-1469022,'You\'ll pay for forcing me to do this.',8275,1,0,'razorgore SAY_EGGS_BROKEN1'), -(-1469023,'Fools! These eggs are more precious than you know.',8276,1,0,'razorgore SAY_EGGS_BROKEN2'), -(-1469024,'No! Not another one! I\'ll have your heads for this atrocity.',8277,1,0,'razorgore SAY_EGGS_BROKEN3'), -(-1469025,'If I fall into the abyss I\'ll take all of you mortals with me...',8278,1,0,'razorgore SAY_DEATH'), - -(-1469026,'Too late...friends. Nefarius\' corruption has taken hold. I cannot...control myself.',8281,1,0,'vaelastrasz SAY_LINE1'), -(-1469027,'I beg you Mortals, flee! Flee before I lose all control. The Black Fire rages within my heart. I must release it!',8282,1,0,'vaelastrasz SAY_LINE2'), -(-1469028,'FLAME! DEATH! DESTRUCTION! COWER MORTALS BEFORE THE WRATH OF LORD....NO! I MUST FIGHT THIS!',8283,1,0,'vaelastrasz SAY_LINE3'), -(-1469029,'Nefarius\' hate has made me stronger than ever before. You should have fled, while you could, mortals! The fury of Blackrock courses through my veins!',8285,1,0,'vaelastrasz SAY_HALFLIFE'), -(-1469030,'Forgive me $N, your death only adds to my failure.',8284,1,0,'vaelastrasz SAY_KILLTARGET'), - -(-1469031,'goes into a frenzy!',0,2,0,'flamegor EMOTE_FRENZY'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1469000, 'None of your kind should be here! You''ve doomed only yourselves!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8286, 1, 0, 0, 'broodlord SAY_AGGRO'), +(-1469001, 'Clever Mortals but I am not so easily lured away from my sanctum!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8287, 1, 0, 0, 'broodlord SAY_LEASH'), +(-1469002, 'goes into a killing frenzy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'chromaggus EMOTE_FRENZY'), +(-1469003, 'flinches as its skin shimmers.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'chromaggus EMOTE_SHIMMER'), +(-1469004, 'In this world where time is your enemy, it is my greatest ally. This grand game of life that you think you play in fact plays you. To that I say...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'victor_nefarius SAY_GAMESBEGIN_1'), +(-1469005, 'Let the games begin!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8280, 1, 0, 0, 'victor_nefarius SAY_GAMESBEGIN_2'), +(-1469006, 'Ah, the heroes. You are persistent, aren''t you. Your allied attempted to match his power against mine, and had to pay the price. Now he shall serve me, by slaughtering you. Get up little red wyrm and destroy them!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8279, 1, 0, 0, 'victor_nefarius SAY_VAEL_INTRO'), +(-1469007, 'Well done, my minions. The mortals'' courage begins to wane! Now, let''s see how they contend with the true Lord of Blackrock Spire!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8288, 1, 0, 0, 'nefarian SAY_AGGRO'), +(-1469008, 'Enough! Now you vermin shall feel the force of my birthright, the fury of the earth itself.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8289, 1, 0, 0, 'nefarian SAY_XHEALTH'), +(-1469009, 'Burn, you wretches! Burn!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8290, 1, 0, 0, 'nefarian SAY_SHADOWFLAME'), +(-1469010, 'Impossible! Rise my minions! Serve your master once more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8291, 1, 0, 0, 'nefarian SAY_RAISE_SKELETONS'), +(-1469011, 'Worthless $N! Your friends will join you soon enough!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8293, 1, 0, 0, 'nefarian SAY_SLAY'), +(-1469012, 'This cannot be! I am the Master here! You mortals are nothing to my kind! DO YOU HEAR? NOTHING!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8292, 1, 0, 0, 'nefarian SAY_DEATH'), +(-1469013, 'Mages too? You should be more careful when you play with magic...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_MAGE'), +(-1469014, 'Warriors, I know you can hit harder than that! Let''s see it!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_WARRIOR'), +(-1469015, 'Druids and your silly shapeshifting. Let''s see it in action!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_DRUID'), +(-1469016, 'Priests! If you''re going to keep healing like that, we might as well make it a little more interesting!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_PRIEST'), +(-1469017, 'Paladins, I''ve heard you have many lives. Show me.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_PALADIN'), +(-1469018, 'Shamans, show me what your totems can do!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_SHAMAN'), +(-1469019, 'Warlocks, you shouldn''t be playing with magic you don''t understand. See what happens?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_WARLOCK'), +(-1469020, 'Hunters and your annoying pea-shooters!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_HUNTER'), +(-1469021, 'Rogues? Stop hiding and face me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'nefarian SAY_ROGUE'), +(-1469022, 'You''ll pay for forcing me to do this.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8275, 1, 0, 0, 'razorgore SAY_EGGS_BROKEN1'), +(-1469023, 'Fools! These eggs are more precious than you know.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8276, 1, 0, 0, 'razorgore SAY_EGGS_BROKEN2'), +(-1469024, 'No! Not another one! I''ll have your heads for this atrocity.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8277, 1, 0, 0, 'razorgore SAY_EGGS_BROKEN3'), +(-1469025, 'If I fall into the abyss I''ll take all of you mortals with me...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8278, 1, 0, 0, 'razorgore SAY_DEATH'), +(-1469026, 'Too late...friends. Nefarius'' corruption has taken hold. I cannot...control myself.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8281, 1, 0, 0, 'vaelastrasz SAY_LINE1'), +(-1469027, 'I beg you Mortals, flee! Flee before I lose all control. The Black Fire rages within my heart. I must release it!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8282, 1, 0, 0, 'vaelastrasz SAY_LINE2'), +(-1469028, 'FLAME! DEATH! DESTRUCTION! COWER MORTALS BEFORE THE WRATH OF LORD....NO! I MUST FIGHT THIS!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8283, 1, 0, 0, 'vaelastrasz SAY_LINE3'), +(-1469029, 'Nefarius'' hate has made me stronger than ever before. You should have fled, while you could, mortals! The fury of Blackrock courses through my veins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8285, 1, 0, 0, 'vaelastrasz SAY_HALFLIFE'), +(-1469030, 'Forgive me $N, your death only adds to my failure.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8284, 1, 0, 0, 'vaelastrasz SAY_KILLTARGET'), +(-1469031, 'goes into a frenzy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'flamegor EMOTE_FRENZY'); -- -1 509 000 RUINS OF AHN'QIRAJ -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1509000,'senses your fear.',0,2,0,'moam EMOTE_AGGRO'), -(-1509001,'bristles with energy!',0,2,0,'moan EMOTE_MANA_FULL'), - -(-1509002,'sets eyes on $N!',0,2,0,'buru EMOTE_TARGET'), - -(-1509003,'They come now. Try not to get yourself killed, young blood.',0,1,0,'andorov SAY_ANDOROV_INTRO'), -(-1509004,'Remember, Rajaxx, when I said I\'d kill you last? I lied...',0,1,0,'andorov SAY_ANDOROV_ATTACK'), - -(-1509005,'The time of our retribution is at hand! Let darkness reign in the hearts of our enemies!',8612,1,0,'rajaxx SAY_WAVE3'), -(-1509006,'No longer will we wait behind barred doors and walls of stone! No longer will our vengeance be denied! The dragons themselves will tremble before our wrath!',8610,1,0,'rajaxx SAY_WAVE4'), -(-1509007,'Fear is for the enemy! Fear and death!',8608,1,0,'rajaxx SAY_WAVE5'), -(-1509008,'Staghelm will whimper and beg for his life, just as his whelp of a son did! One thousand years of injustice will end this day!',8611,1,0,'rajaxx SAY_WAVE6'), -(-1509009,'Fandral! Your time has come! Go and hide in the Emerald Dream and pray we never find you!',8607,1,0,'rajaxx SAY_WAVE7'), -(-1509010,'Impudent fool! I will kill you myself!',8609,1,0,'rajaxx SAY_INTRO'), -(-1509011,'Attack and make them pay dearly!',8603,1,0,'rajaxx SAY_UNK1'), -(-1509012,'Crush them! Drive them out!',8605,1,0,'rajaxx SAY_UNK2'), -(-1509013,'Do not hesitate! Destroy them!',8606,1,0,'rajaxx SAY_UNK3'), -(-1509014,'Warriors! Captains! Continue the fight!',8613,1,0,'rajaxx SAY_UNK4'), -(-1509015,'You are not worth my time $N!',8614,1,0,'rajaxx SAY_DEAGGRO'), -(-1509016,'Breath your last!',8604,1,0,'rajaxx SAY_KILLS_ANDOROV'), -(-1509017,'Soon you will know the price of your meddling, mortals... The master is nearly whole... And when he rises, your world will be cease!',0,1,0,'rajaxx SAY_COMPLETE_QUEST'), - -(-1509018,'I am rejuvinated!',8593,1,0,'ossirian SAY_SURPREME1'), -(-1509019,'My powers are renewed!',8595,1,0,'ossirian SAY_SURPREME2'), -(-1509020,'My powers return!',8596,1,0,'ossirian SAY_SURPREME3'), -(-1509021,'Protect the city at all costs!',8597,1,0,'ossirian SAY_RAND_INTRO1'), -(-1509022,'The walls have been breached!',8599,1,0,'ossirian SAY_RAND_INTRO2'), -(-1509023,'To your posts. Defend the city.',8600,1,0,'ossirian SAY_RAND_INTRO3'), -(-1509024,'Tresspassers will be terminated.',8601,1,0,'ossirian SAY_RAND_INTRO4'), -(-1509025,'Sands of the desert rise and block out the sun!',8598,1,0,'ossirian SAY_AGGRO'), -(-1509026,'You are terminated.',8602,1,0,'ossirian SAY_SLAY'), -(-1509027,'I...have...failed.',8594,1,0,'ossirian SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1509000, 'senses your fear.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'moam EMOTE_AGGRO'), +(-1509001, 'bristles with energy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'moan EMOTE_MANA_FULL'), +(-1509002, 'sets eyes on $N!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'buru EMOTE_TARGET'), +(-1509003, 'They come now. Try not to get yourself killed, young blood.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'andorov SAY_ANDOROV_INTRO'), +(-1509004, 'Remember, Rajaxx, when I said I''d kill you last? I lied...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'andorov SAY_ANDOROV_ATTACK'), +(-1509005, 'The time of our retribution is at hand! Let darkness reign in the hearts of our enemies!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8612, 1, 0, 0, 'rajaxx SAY_WAVE3'), +(-1509006, 'No longer will we wait behind barred doors and walls of stone! No longer will our vengeance be denied! The dragons themselves will tremble before our wrath!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8610, 1, 0, 0, 'rajaxx SAY_WAVE4'), +(-1509007, 'Fear is for the enemy! Fear and death!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8608, 1, 0, 0, 'rajaxx SAY_WAVE5'), +(-1509008, 'Staghelm will whimper and beg for his life, just as his whelp of a son did! One thousand years of injustice will end this day!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8611, 1, 0, 0, 'rajaxx SAY_WAVE6'), +(-1509009, 'Fandral! Your time has come! Go and hide in the Emerald Dream and pray we never find you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8607, 1, 0, 0, 'rajaxx SAY_WAVE7'), +(-1509010, 'Impudent fool! I will kill you myself!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8609, 1, 0, 0, 'rajaxx SAY_INTRO'), +(-1509011, 'Attack and make them pay dearly!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8603, 1, 0, 0, 'rajaxx SAY_UNK1'), +(-1509012, 'Crush them! Drive them out!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8605, 1, 0, 0, 'rajaxx SAY_UNK2'), +(-1509013, 'Do not hesitate! Destroy them!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8606, 1, 0, 0, 'rajaxx SAY_UNK3'), +(-1509014, 'Warriors! Captains! Continue the fight!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8613, 1, 0, 0, 'rajaxx SAY_UNK4'), +(-1509015, 'You are not worth my time $N!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8614, 1, 0, 0, 'rajaxx SAY_DEAGGRO'), +(-1509016, 'Breath your last!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8604, 1, 0, 0, 'rajaxx SAY_KILLS_ANDOROV'), +(-1509017, 'Soon you will know the price of your meddling, mortals... The master is nearly whole... And when he rises, your world will be cease!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'rajaxx SAY_COMPLETE_QUEST'), +(-1509018, 'I am rejuvinated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8593, 1, 0, 0, 'ossirian SAY_SURPREME1'), +(-1509019, 'My powers are renewed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8595, 1, 0, 0, 'ossirian SAY_SURPREME2'), +(-1509020, 'My powers return!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8596, 1, 0, 0, 'ossirian SAY_SURPREME3'), +(-1509021, 'Protect the city at all costs!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8597, 1, 0, 0, 'ossirian SAY_RAND_INTRO1'), +(-1509022, 'The walls have been breached!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8599, 1, 0, 0, 'ossirian SAY_RAND_INTRO2'), +(-1509023, 'To your posts. Defend the city.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8600, 1, 0, 0, 'ossirian SAY_RAND_INTRO3'), +(-1509024, 'Tresspassers will be terminated.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8601, 1, 0, 0, 'ossirian SAY_RAND_INTRO4'), +(-1509025, 'Sands of the desert rise and block out the sun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8598, 1, 0, 0, 'ossirian SAY_AGGRO'), +(-1509026, 'You are terminated.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8602, 1, 0, 0, 'ossirian SAY_SLAY'), +(-1509027, 'I...have...failed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8594, 1, 0, 0, 'ossirian SAY_DEATH'); -- -1 531 000 TEMPLE OF AHN'QIRAJ -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1531000,'Are you so eager to die? I would be happy to accomodate you.',8615,1,0,'skeram SAY_AGGRO1'), -(-1531001,'Cower mortals! The age of darkness is at hand.',8616,1,0,'skeram SAY_AGGRO2'), -(-1531002,'Tremble! The end is upon you.',8621,1,0,'skeram SAY_AGGRO3'), -(-1531003,'Let your death serve as an example!',8617,1,0,'skeram SAY_SLAY1'), -(-1531004,'Spineless wretches! You will drown in rivers of blood!',8619,1,0,'skeram SAY_SLAY2'), -(-1531005,'The screams of the dying will fill the air. A symphony of terror is about to begin!',8620,1,0,'skeram SAY_SLAY3'), -(-1531006,'Prepare for the return of the ancient ones!',8618,1,0,'skeram SAY_SPLIT'), -(-1531007,'You only delay... the inevetable.',8622,1,0,'skeram SAY_DEATH'), - -(-1531008,'You will be judged for defiling these sacred grounds! The laws of the Ancients will not be challenged! Trespassers will be annihilated!',8646,1,0,'sartura SAY_AGGRO'), -(-1531009,'I sentence you to death!',8647,1,0,'sartura SAY_SLAY'), -(-1531010,'I serve to the last!',8648,1,0,'sartura SAY_DEATH'), - -(-1531011,'is weakened!',0,2,0,'cthun EMOTE_WEAKENED'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1531000, 'Are you so eager to die? I would be happy to accomodate you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8615, 1, 0, 0, 'skeram SAY_AGGRO1'), +(-1531001, 'Cower mortals! The age of darkness is at hand.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8616, 1, 0, 0, 'skeram SAY_AGGRO2'), +(-1531002, 'Tremble! The end is upon you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8621, 1, 0, 0, 'skeram SAY_AGGRO3'), +(-1531003, 'Let your death serve as an example!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8617, 1, 0, 0, 'skeram SAY_SLAY1'), +(-1531004, 'Spineless wretches! You will drown in rivers of blood!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8619, 1, 0, 0, 'skeram SAY_SLAY2'), +(-1531005, 'The screams of the dying will fill the air. A symphony of terror is about to begin!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8620, 1, 0, 0, 'skeram SAY_SLAY3'), +(-1531006, 'Prepare for the return of the ancient ones!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8618, 1, 0, 0, 'skeram SAY_SPLIT'), +(-1531007, 'You only delay... the inevetable.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8622, 1, 0, 0, 'skeram SAY_DEATH'), +(-1531008, 'You will be judged for defiling these sacred grounds! The laws of the Ancients will not be challenged! Trespassers will be annihilated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8646, 1, 0, 0, 'sartura SAY_AGGRO'), +(-1531009, 'I sentence you to death!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8647, 1, 0, 0, 'sartura SAY_SLAY'), +(-1531010, 'I serve to the last!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8648, 1, 0, 0, 'sartura SAY_DEATH'), +(-1531011, 'is weakened!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'cthun EMOTE_WEAKENED'); -- -1 532 000 KARAZHAN -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1532000,'Well done Midnight!',9173,1,0,'attumen SAY_MIDNIGHT_KILL'), -(-1532001,'Cowards! Wretches!',9167,1,0,'attumen SAY_APPEAR1'), -(-1532002,'Who dares attack the steed of the Huntsman?',9298,1,0,'attumen SAY_APPEAR2'), -(-1532003,'Perhaps you would rather test yourselves against a more formidable opponent?!',9299,1,0,'attumen SAY_APPEAR3'), -(-1532004,'Come, Midnight, let\'s disperse this petty rabble!',9168,1,0,'attumen SAY_MOUNT'), -(-1532005,'It was... inevitable.',9169,1,0,'attumen SAY_KILL1'), -(-1532006,'Another trophy to add to my collection!',9300,1,0,'attumen SAY_KILL2'), -(-1532007,'Weapons are merely a convenience for a warrior of my skill!',9166,1,0,'attumen SAY_DISARMED'), -(-1532008,'I always knew... someday I would become... the hunted.',9165,1,0,'attumen SAY_DEATH'), -(-1532009,'Such easy sport.',9170,1,0,'attumen SAY_RANDOM1'), -(-1532010,'Amateurs! Do not think you can best me! I kill for a living.',9304,1,0,'attumen SAY_RANDOM2'), - -(-1532011,'Hmm, unannounced visitors? Preparations must be made.',9211,1,0,'moroes SAY_AGGRO'), -(-1532012,'Now, where was I? Oh yes...',9215,1,0,'moroes SAY_SPECIAL_1'), -(-1532013,'You rang?',9316,1,0,'moroes SAY_SPECIAL_2'), -(-1532014,'One more for dinner this evening.',9214,1,0,'moroes SAY_KILL_1'), -(-1532015,'Time... Never enough time.',9314,1,0,'moroes SAY_KILL_2'), -(-1532016,'I\'ve gone and made a mess.',9315,1,0,'moroes SAY_KILL_3'), -(-1532017,'How terribly clumsy of me...',9213,1,0,'moroes SAY_DEATH'), - -(-1532018,'Your behavior will not be tolerated!',9204,1,0,'maiden SAY_AGGRO'), -(-1532019,'Ah ah ah...',9207,1,0,'maiden SAY_SLAY1'), -(-1532020,'This is for the best.',9312,1,0,'maiden SAY_SLAY2'), -(-1532021,'Impure thoughts lead to profane actions.',9311,1,0,'maiden SAY_SLAY3'), -(-1532022,'Cast out your corrupt thoughts.',9313,1,0,'maiden SAY_REPENTANCE1'), -(-1532023,'Your impurity must be cleansed.',9208,1,0,'maiden SAY_REPENTANCE2'), -(-1532024,'Death comes. Will your conscience be clear?',9206,1,0,'maiden SAY_DEATH'), - -(-1532025,'Oh at last, at last. I can go home.',9190,1,0,'dorothee SAY_DOROTHEE_DEATH'), -(-1532026,'Don\'t let them hurt us, Tito! Oh, you won\'t, will you?',9191,1,0,'dorothee SAY_DOROTHEE_SUMMON'), -(-1532027,'Tito, oh Tito, no!',9192,1,0,'dorothee SAY_DOROTHEE_TITO_DEATH'), -(-1532028,'Oh dear, we simply must find a way home! The old wizard could be our only hope! Strawman, Roar, Tinhead, will you... wait! Oh golly, look! We have visitors!',9195,1,0,'dorothee SAY_DOROTHEE_AGGRO'), - -(-1532029,'Wanna fight? Huh? Do ya? C\'mon, I\'ll fight you with both claws behind my back!',9227,1,0,'roar SAY_ROAR_AGGRO'), -(-1532030,'You didn\'t have to go and do that.',9229,1,0,'roar SAY_ROAR_DEATH'), -(-1532031,'I think I\'m going to go take fourty winks.',9230,1,0,'roar SAY_ROAR_SLAY'), - -(-1532032,'Now what should I do with you? I simply can\'t make up my mind.',9254,1,0,'strawman SAY_STRAWMAN_AGGRO'), -(-1532033,'Don\'t let them make a mattress... out of me.',9256,1,0,'strawman SAY_STRAWMAN_DEATH'), -(-1532034,'I guess I\'m not a failure after all.',9257,1,0,'strawman SAY_STRAWMAN_SLAY'), - -(-1532035,'I could really use a heart. Say, can I have yours?',9268,1,0,'tinhead SAY_TINHEAD_AGGRO'), -(-1532036,'Back to being an old rustbucket.',9270,1,0,'tinhead SAY_TINHEAD_DEATH'), -(-1532037,'Guess I\'m not so rusty, after all.',9271,1,0,'tinhead SAY_TINHEAD_SLAY'), -(-1532038,'begins to rust.',0,2,0,'tinhead EMOTE_RUST'), - -(-1532039,'Woe to each and every one of you my pretties! <cackles>',9179,1,0,'crone SAY_CRONE_AGGRO'), -(-1532040,'It will all be over soon! <cackles>',9307,1,0,'crone SAY_CRONE_AGGRO2'), -(-1532041,'How could you? What a cruel, cruel world!',9178,1,0,'crone SAY_CRONE_DEATH'), -(-1532042,'Fixed you, didn\'t I? <cackles>',9180,1,0,'crone SAY_CRONE_SLAY'), - -(-1532043,'All the better to own you with!',9276,1,0,'wolf SAY_WOLF_AGGRO'), -(-1532044,'Mmmm... delicious.',9277,1,0,'wolf SAY_WOLF_SLAY'), -(-1532045,'Run away little girl, run away!',9278,1,0,'wolf SAY_WOLF_HOOD'), - -(-1532046,'What devil art thou, that dost torment me thus?',9196,1,0,'julianne SAY_JULIANNE_AGGRO'), -(-1532047,'Where is my lord? Where is my Romulo?',9199,1,0,'julianne SAY_JULIANNE_ENTER'), -(-1532048,'Romulo, I come! Oh... this do I drink to thee!',9198,1,0,'julianne SAY_JULIANNE_DEATH01'), -(-1532049,'Where is my Lord? Where is my Romulo? Ohh, happy dagger! This is thy sheath! There rust, and let me die!',9310,1,0,'julianne SAY_JULIANNE_DEATH02'), -(-1532050,'Come, gentle night; and give me back my Romulo!',9200,1,0,'julianne SAY_JULIANNE_RESURRECT'), -(-1532051,'Parting is such sweet sorrow.',9201,1,0,'julianne SAY_JULIANNE_SLAY'), - -(-1532052,'Wilt thou provoke me? Then have at thee, boy!',9233,1,0,'romulo SAY_ROMULO_AGGRO'), -(-1532053,'Thou smilest... upon the stroke that... murders me.',9235,1,0,'romulo SAY_ROMULO_DEATH'), -(-1532054,'This day\'s black fate on more days doth depend. This but begins the woe. Others must end.',9236,1,0,'romulo SAY_ROMULO_ENTER'), -(-1532055,'Thou detestable maw, thou womb of death; I enforce thy rotten jaws to open!',9237,1,0,'romulo SAY_ROMULO_RESURRECT'), -(-1532056,'How well my comfort is revived by this!',9238,1,0,'romulo SAY_ROMULO_SLAY'), - -(-1532057,'The Menagerie is for guests only.',9183,1,0,'curator SAY_AGGRO'), -(-1532058,'Gallery rules will be strictly enforced.',9188,1,0,'curator SAY_SUMMON1'), -(-1532059,'This curator is equipped for gallery protection.',9309,1,0,'curator SAY_SUMMON2'), -(-1532060,'Your request cannot be processed.',9186,1,0,'curator SAY_EVOCATE'), -(-1532061,'Failure to comply will result in offensive action.',9185,1,0,'curator SAY_ENRAGE'), -(-1532062,'Do not touch the displays.',9187,1,0,'curator SAY_KILL1'), -(-1532063,'You are not a guest.',9308,1,0,'curator SAY_KILL2'), -(-1532064,'This Curator is no longer op... er... ation... al.',9184,1,0,'curator SAY_DEATH'), - -(-1532065,'Your blood will anoint my circle.',9264,1,0,'terestian SAY_SLAY1'), -(-1532066,'The great one will be pleased.',9329,1,0,'terestian SAY_SLAY2'), -(-1532067,'My life, is yours. Oh great one.',9262,1,0,'terestian SAY_DEATH'), -(-1532068,'Ah, you\'re just in time. The rituals are about to begin.',9260,1,0,'terestian SAY_AGGRO'), -(-1532069,'Please, accept this humble offering, oh great one.',9263,1,0,'terestian SAY_SACRIFICE1'), -(-1532070,'Let the sacrifice serve his testament to my fealty.',9330,1,0,'terestian SAY_SACRIFICE2'), -(-1532071,'Come, you dwellers in the dark. Rally to my call!',9265,1,0,'terestian SAY_SUMMON1'), -(-1532072,'Gather, my pets. There is plenty for all.',9331,1,0,'terestian SAY_SUMMON2'), - -(-1532073,'Please, no more. My son... he\'s gone mad!',9241,1,0,'aran SAY_AGGRO1'), -(-1532074,'I\'ll not be tortured again!',9323,1,0,'aran SAY_AGGRO2'), -(-1532075,'Who are you? What do you want? Stay away from me!',9324,1,0,'aran SAY_AGGRO3'), -(-1532076,'I\'ll show you this beaten dog still has some teeth!',9245,1,0,'aran SAY_FLAMEWREATH1'), -(-1532077,'Burn you hellish fiends!',9326,1,0,'aran SAY_FLAMEWREATH2'), -(-1532078,'I\'ll freeze you all!',9246,1,0,'aran SAY_BLIZZARD1'), -(-1532079,'Back to the cold dark with you!',9327,1,0,'aran SAY_BLIZZARD2'), -(-1532080,'Yes, yes, my son is quite powerful... but I have powers of my own!',9242,1,0,'aran SAY_EXPLOSION1'), -(-1532081,'I am not some simple jester! I am Nielas Aran!',9325,1,0,'aran SAY_EXPLOSION2'), -(-1532082,'Surely you would not deny an old man a replenishing drink? No, no I thought not.',9248,1,0,'aran SAY_DRINK'), -(-1532083,'I\'m not finished yet! No, I have a few more tricks up me sleeve.',9251,1,0,'aran SAY_ELEMENTALS'), -(-1532084,'I want this nightmare to be over!',9250,1,0,'aran SAY_KILL1'), -(-1532085,'Torment me no more!',9328,1,0,'aran SAY_KILL2'), -(-1532086,'You\'ve wasted enough of my time. Let these games be finished!',9247,1,0,'aran SAY_TIMEOVER'), -(-1532087,'At last... The nightmare is.. over...',9244,1,0,'aran SAY_DEATH'), -(-1532088,'Where did you get that?! Did HE send you?!',9249,1,0,'aran SAY_ATIESH'), - -(-1532089,'cries out in withdrawal, opening gates to the warp.',0,2,0,'netherspite EMOTE_PHASE_PORTAL'), -(-1532090,'goes into a nether-fed rage!',0,2,0,'netherspite EMOTE_PHASE_BANISH'), - -(-1532091,'Madness has brought you here to me. I shall be your undoing!',9218,1,0,'malchezaar SAY_AGGRO'), -(-1532092,'Simple fools! Time is the fire in which you\'ll burn!',9220,1,0,'malchezaar SAY_AXE_TOSS1'), -(-1532093,'I see the subtlety of conception is beyond primitives such as you.',9317,1,0,'malchezaar SAY_AXE_TOSS2'), -(-1532094,'Who knows what secrets hide in the dark.',9223,1,0,'malchezaar SAY_SPECIAL1'), -(-1532095,'The cerestial forces are mine to manipulate.',9320,1,0,'malchezaar SAY_SPECIAL2'), -(-1532096,'How can you hope to withstand against such overwhelming power?',9321,1,0,'malchezaar SAY_SPECIAL3'), -(-1532097,'Surely you did not think you could win.',9222,1,0,'malchezaar SAY_SLAY1'), -(-1532098,'Your greed, your foolishness has brought you to this end.',9318,1,0,'malchezaar SAY_SLAY2'), -(-1532099,'You are, but a plaything, unfit even to amuse.',9319,1,0,'malchezaar SAY_SLAY3'), -(-1532100,'All realities, all dimensions are open to me!',9224,1,0,'malchezaar SAY_SUMMON1'), -(-1532101,'You face not Malchezaar alone, but the legions I command!',9322,1,0,'malchezaar SAY_SUMMON2'), -(-1532102,'I refuse to concede defeat. I am a prince of the Eredar! I am...',9221,1,0,'malchezaar SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1532000, 'Well done Midnight!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9173, 1, 0, 0, 'attumen SAY_MIDNIGHT_KILL'), +(-1532001, 'Cowards! Wretches!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9167, 1, 0, 0, 'attumen SAY_APPEAR1'), +(-1532002, 'Who dares attack the steed of the Huntsman?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9298, 1, 0, 0, 'attumen SAY_APPEAR2'), +(-1532003, 'Perhaps you would rather test yourselves against a more formidable opponent?!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9299, 1, 0, 0, 'attumen SAY_APPEAR3'), +(-1532004, 'Come, Midnight, let''s disperse this petty rabble!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9168, 1, 0, 0, 'attumen SAY_MOUNT'), +(-1532005, 'It was... inevitable.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9169, 1, 0, 0, 'attumen SAY_KILL1'), +(-1532006, 'Another trophy to add to my collection!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9300, 1, 0, 0, 'attumen SAY_KILL2'), +(-1532007, 'Weapons are merely a convenience for a warrior of my skill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9166, 1, 0, 0, 'attumen SAY_DISARMED'), +(-1532008, 'I always knew... someday I would become... the hunted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9165, 1, 0, 0, 'attumen SAY_DEATH'), +(-1532009, 'Such easy sport.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9170, 1, 0, 0, 'attumen SAY_RANDOM1'), +(-1532010, 'Amateurs! Do not think you can best me! I kill for a living.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9304, 1, 0, 0, 'attumen SAY_RANDOM2'), +(-1532011, 'Hmm, unannounced visitors? Preparations must be made.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9211, 1, 0, 0, 'moroes SAY_AGGRO'), +(-1532012, 'Now, where was I? Oh yes...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9215, 1, 0, 0, 'moroes SAY_SPECIAL_1'), +(-1532013, 'You rang?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9316, 1, 0, 0, 'moroes SAY_SPECIAL_2'), +(-1532014, 'One more for dinner this evening.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9214, 1, 0, 0, 'moroes SAY_KILL_1'), +(-1532015, 'Time... Never enough time.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9314, 1, 0, 0, 'moroes SAY_KILL_2'), +(-1532016, 'I''ve gone and made a mess.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9315, 1, 0, 0, 'moroes SAY_KILL_3'), +(-1532017, 'How terribly clumsy of me...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9213, 1, 0, 0, 'moroes SAY_DEATH'), +(-1532018, 'Your behavior will not be tolerated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9204, 1, 0, 0, 'maiden SAY_AGGRO'), +(-1532019, 'Ah ah ah...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9207, 1, 0, 0, 'maiden SAY_SLAY1'), +(-1532020, 'This is for the best.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9312, 1, 0, 0, 'maiden SAY_SLAY2'), +(-1532021, 'Impure thoughts lead to profane actions.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9311, 1, 0, 0, 'maiden SAY_SLAY3'), +(-1532022, 'Cast out your corrupt thoughts.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9313, 1, 0, 0, 'maiden SAY_REPENTANCE1'), +(-1532023, 'Your impurity must be cleansed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9208, 1, 0, 0, 'maiden SAY_REPENTANCE2'), +(-1532024, 'Death comes. Will your conscience be clear?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9206, 1, 0, 0, 'maiden SAY_DEATH'), +(-1532025, 'Oh at last, at last. I can go home.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9190, 1, 0, 0, 'dorothee SAY_DOROTHEE_DEATH'), +(-1532026, 'Don''t let them hurt us, Tito! Oh, you won''t, will you?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9191, 1, 0, 0, 'dorothee SAY_DOROTHEE_SUMMON'), +(-1532027, 'Tito, oh Tito, no!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9192, 1, 0, 0, 'dorothee SAY_DOROTHEE_TITO_DEATH'), +(-1532028, 'Oh dear, we simply must find a way home! The old wizard could be our only hope! Strawman, Roar, Tinhead, will you... wait! Oh golly, look! We have visitors!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9195, 1, 0, 0, 'dorothee SAY_DOROTHEE_AGGRO'), +(-1532029, 'Wanna fight? Huh? Do ya? C''mon, I''ll fight you with both claws behind my back!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9227, 1, 0, 0, 'roar SAY_ROAR_AGGRO'), +(-1532030, 'You didn''t have to go and do that.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9229, 1, 0, 0, 'roar SAY_ROAR_DEATH'), +(-1532031, 'I think I''m going to go take fourty winks.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9230, 1, 0, 0, 'roar SAY_ROAR_SLAY'), +(-1532032, 'Now what should I do with you? I simply can''t make up my mind.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9254, 1, 0, 0, 'strawman SAY_STRAWMAN_AGGRO'), +(-1532033, 'Don''t let them make a mattress... out of me.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9256, 1, 0, 0, 'strawman SAY_STRAWMAN_DEATH'), +(-1532034, 'I guess I''m not a failure after all.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9257, 1, 0, 0, 'strawman SAY_STRAWMAN_SLAY'), +(-1532035, 'I could really use a heart. Say, can I have yours?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9268, 1, 0, 0, 'tinhead SAY_TINHEAD_AGGRO'), +(-1532036, 'Back to being an old rustbucket.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9270, 1, 0, 0, 'tinhead SAY_TINHEAD_DEATH'), +(-1532037, 'Guess I''m not so rusty, after all.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9271, 1, 0, 0, 'tinhead SAY_TINHEAD_SLAY'), +(-1532038, 'begins to rust.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'tinhead EMOTE_RUST'), +(-1532039, 'Woe to each and every one of you my pretties! <cackles>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9179, 1, 0, 0, 'crone SAY_CRONE_AGGRO'), +(-1532040, 'It will all be over soon! <cackles>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9307, 1, 0, 0, 'crone SAY_CRONE_AGGRO2'), +(-1532041, 'How could you? What a cruel, cruel world!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9178, 1, 0, 0, 'crone SAY_CRONE_DEATH'), +(-1532042, 'Fixed you, didn''t I? <cackles>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9180, 1, 0, 0, 'crone SAY_CRONE_SLAY'), +(-1532043, 'All the better to own you with!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9276, 1, 0, 0, 'wolf SAY_WOLF_AGGRO'), +(-1532044, 'Mmmm... delicious.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9277, 1, 0, 0, 'wolf SAY_WOLF_SLAY'), +(-1532045, 'Run away little girl, run away!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9278, 1, 0, 0, 'wolf SAY_WOLF_HOOD'), +(-1532046, 'What devil art thou, that dost torment me thus?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9196, 1, 0, 0, 'julianne SAY_JULIANNE_AGGRO'), +(-1532047, 'Where is my lord? Where is my Romulo?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9199, 1, 0, 0, 'julianne SAY_JULIANNE_ENTER'), +(-1532048, 'Romulo, I come! Oh... this do I drink to thee!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9198, 1, 0, 0, 'julianne SAY_JULIANNE_DEATH01'), +(-1532049, 'Where is my Lord? Where is my Romulo? Ohh, happy dagger! This is thy sheath! There rust, and let me die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9310, 1, 0, 0, 'julianne SAY_JULIANNE_DEATH02'), +(-1532050, 'Come, gentle night; and give me back my Romulo!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9200, 1, 0, 0, 'julianne SAY_JULIANNE_RESURRECT'), +(-1532051, 'Parting is such sweet sorrow.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9201, 1, 0, 0, 'julianne SAY_JULIANNE_SLAY'), +(-1532052, 'Wilt thou provoke me? Then have at thee, boy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9233, 1, 0, 0, 'romulo SAY_ROMULO_AGGRO'), +(-1532053, 'Thou smilest... upon the stroke that... murders me.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9235, 1, 0, 0, 'romulo SAY_ROMULO_DEATH'), +(-1532054, 'This day''s black fate on more days doth depend. This but begins the woe. Others must end.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9236, 1, 0, 0, 'romulo SAY_ROMULO_ENTER'), +(-1532055, 'Thou detestable maw, thou womb of death; I enforce thy rotten jaws to open!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9237, 1, 0, 0, 'romulo SAY_ROMULO_RESURRECT'), +(-1532056, 'How well my comfort is revived by this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9238, 1, 0, 0, 'romulo SAY_ROMULO_SLAY'), +(-1532057, 'The Menagerie is for guests only.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9183, 1, 0, 0, 'curator SAY_AGGRO'), +(-1532058, 'Gallery rules will be strictly enforced.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9188, 1, 0, 0, 'curator SAY_SUMMON1'), +(-1532059, 'This curator is equipped for gallery protection.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9309, 1, 0, 0, 'curator SAY_SUMMON2'), +(-1532060, 'Your request cannot be processed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9186, 1, 0, 0, 'curator SAY_EVOCATE'), +(-1532061, 'Failure to comply will result in offensive action.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9185, 1, 0, 0, 'curator SAY_ENRAGE'), +(-1532062, 'Do not touch the displays.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9187, 1, 0, 0, 'curator SAY_KILL1'), +(-1532063, 'You are not a guest.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9308, 1, 0, 0, 'curator SAY_KILL2'), +(-1532064, 'This Curator is no longer op... er... ation... al.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9184, 1, 0, 0, 'curator SAY_DEATH'), +(-1532065, 'Your blood will anoint my circle.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9264, 1, 0, 0, 'terestian SAY_SLAY1'), +(-1532066, 'The great one will be pleased.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9329, 1, 0, 0, 'terestian SAY_SLAY2'), +(-1532067, 'My life, is yours. Oh great one.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9262, 1, 0, 0, 'terestian SAY_DEATH'), +(-1532068, 'Ah, you''re just in time. The rituals are about to begin.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9260, 1, 0, 0, 'terestian SAY_AGGRO'), +(-1532069, 'Please, accept this humble offering, oh great one.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9263, 1, 0, 0, 'terestian SAY_SACRIFICE1'), +(-1532070, 'Let the sacrifice serve his testament to my fealty.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9330, 1, 0, 0, 'terestian SAY_SACRIFICE2'), +(-1532071, 'Come, you dwellers in the dark. Rally to my call!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9265, 1, 0, 0, 'terestian SAY_SUMMON1'), +(-1532072, 'Gather, my pets. There is plenty for all.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9331, 1, 0, 0, 'terestian SAY_SUMMON2'), +(-1532073, 'Please, no more. My son... he''s gone mad!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9241, 1, 0, 0, 'aran SAY_AGGRO1'), +(-1532074, 'I''ll not be tortured again!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9323, 1, 0, 0, 'aran SAY_AGGRO2'), +(-1532075, 'Who are you? What do you want? Stay away from me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9324, 1, 0, 0, 'aran SAY_AGGRO3'), +(-1532076, 'I''ll show you this beaten dog still has some teeth!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9245, 1, 0, 0, 'aran SAY_FLAMEWREATH1'), +(-1532077, 'Burn you hellish fiends!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9326, 1, 0, 0, 'aran SAY_FLAMEWREATH2'), +(-1532078, 'I''ll freeze you all!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9246, 1, 0, 0, 'aran SAY_BLIZZARD1'), +(-1532079, 'Back to the cold dark with you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9327, 1, 0, 0, 'aran SAY_BLIZZARD2'), +(-1532080, 'Yes, yes, my son is quite powerful... but I have powers of my own!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9242, 1, 0, 0, 'aran SAY_EXPLOSION1'), +(-1532081, 'I am not some simple jester! I am Nielas Aran!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9325, 1, 0, 0, 'aran SAY_EXPLOSION2'), +(-1532082, 'Surely you would not deny an old man a replenishing drink? No, no I thought not.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9248, 1, 0, 0, 'aran SAY_DRINK'), +(-1532083, 'I''m not finished yet! No, I have a few more tricks up me sleeve.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9251, 1, 0, 0, 'aran SAY_ELEMENTALS'), +(-1532084, 'I want this nightmare to be over!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9250, 1, 0, 0, 'aran SAY_KILL1'), +(-1532085, 'Torment me no more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9328, 1, 0, 0, 'aran SAY_KILL2'), +(-1532086, 'You''ve wasted enough of my time. Let these games be finished!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9247, 1, 0, 0, 'aran SAY_TIMEOVER'), +(-1532087, 'At last... The nightmare is.. over...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9244, 1, 0, 0, 'aran SAY_DEATH'), +(-1532088, 'Where did you get that?! Did HE send you?!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9249, 1, 0, 0, 'aran SAY_ATIESH'), +(-1532089, 'cries out in withdrawal, opening gates to the warp.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'netherspite EMOTE_PHASE_PORTAL'), +(-1532090, 'goes into a nether-fed rage!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'netherspite EMOTE_PHASE_BANISH'), +(-1532091, 'Madness has brought you here to me. I shall be your undoing!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9218, 1, 0, 0, 'malchezaar SAY_AGGRO'), +(-1532092, 'Simple fools! Time is the fire in which you''ll burn!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9220, 1, 0, 0, 'malchezaar SAY_AXE_TOSS1'), +(-1532093, 'I see the subtlety of conception is beyond primitives such as you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9317, 1, 0, 0, 'malchezaar SAY_AXE_TOSS2'), +(-1532094, 'Who knows what secrets hide in the dark.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9223, 1, 0, 0, 'malchezaar SAY_SPECIAL1'), +(-1532095, 'The cerestial forces are mine to manipulate.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9320, 1, 0, 0, 'malchezaar SAY_SPECIAL2'), +(-1532096, 'How can you hope to withstand against such overwhelming power?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9321, 1, 0, 0, 'malchezaar SAY_SPECIAL3'), +(-1532097, 'Surely you did not think you could win.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9222, 1, 0, 0, 'malchezaar SAY_SLAY1'), +(-1532098, 'Your greed, your foolishness has brought you to this end.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9318, 1, 0, 0, 'malchezaar SAY_SLAY2'), +(-1532099, 'You are, but a plaything, unfit even to amuse.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9319, 1, 0, 0, 'malchezaar SAY_SLAY3'), +(-1532100, 'All realities, all dimensions are open to me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9224, 1, 0, 0, 'malchezaar SAY_SUMMON1'), +(-1532101, 'You face not Malchezaar alone, but the legions I command!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9322, 1, 0, 0, 'malchezaar SAY_SUMMON2'), +(-1532102, 'I refuse to concede defeat. I am a prince of the Eredar! I am...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9221, 1, 0, 0, 'malchezaar SAY_DEATH'), +(-1532103, 'Welcome Ladies and Gentlemen, to this evening''s presentation!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9174, 1, 0, 0, 'barnes OZ1'), +(-1532104, 'Tonight we plumb the depths of the human soul as we join a lost, lonely girl trying desperately -- with the help of her loyal companions -- to find her way home!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9338, 1, 0, 0, 'barnes OZ2'), +(-1532105, 'But she is pursued... by a wicked malevolent crone!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9339, 1, 0, 0, 'barnes OZ3'), +(-1532106, 'Will she survive? Will she prevail? Only time will tell. And now ... on with the show!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9340, 1, 0, 0, 'barnes OZ4'), +(-1532107, 'Good evening, Ladies and Gentlemen! Welcome to this evening''s presentation!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9175, 1, 0, 0, 'barnes HOOD1'), +(-1532108, 'Tonight, things are not what they seem. For tonight, your eyes may not be trusted', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9335, 1, 0, 0, 'barnes HOOD2'), +(-1532109, 'Take for instance, this quiet, elderly woman, waiting for a visit from her granddaughter. Surely there is nothing to fear from this sweet, grey-haired, old lady.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9336, 1, 0, 0, 'barnes HOOD3'), +(-1532110, 'But don''t let me pull the wool over your eyes. See for yourself what lies beneath those covers! And now... on with the show!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9337, 1, 0, 0, 'barnes HOOD4'), +(-1532111, 'Welcome, Ladies and Gentlemen, to this evening''s presentation!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9176, 1, 0, 0, 'barnes RAJ1'), +(-1532112, 'Tonight, we explore a tale of forbidden love!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9341, 1, 0, 0, 'barnes RAJ2'), +(-1532113, 'But beware, for not all love stories end happily, as you may find out. Sometimes, love pricks like a thorn.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9342, 1, 0, 0, 'barnes RAJ3'), +(-1532114, 'But don''t take it from me, see for yourself what tragedy lies ahead when the paths of star-crossed lovers meet. And now...on with the show!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9343, 1, 0, 0, 'barnes RAJ4'); -- -1 533 000 NAXXRAMAS -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1533000,'Ahh... welcome to my parlor.',8788,1,0,'anubrekhan SAY_GREET'), -(-1533001,'Just a little taste...',8785,1,0,'anubrekhan SAY_AGGRO1'), -(-1533002,'There is no way out.',8786,1,0,'anubrekhan SAY_AGGRO2'), -(-1533003,'Yes, Run! It makes the blood pump faster!',8787,1,0,'anubrekhan SAY_AGGRO3'), -(-1533004,'I hear little hearts beating. Yesss... beating faster now. Soon the beating will stop.',8790,1,0,'anubrekhan SAY_TAUNT1'), -(-1533005,'Where to go? What to do? So many choices that all end in pain, end in death.',8791,1,0,'anubrekhan SAY_TAUNT2'), -(-1533006,'Which one shall I eat first? So difficult to choose... the all smell so delicious.',8792,1,0,'anubrekhan SAY_TAUNT3'), -(-1533007,'Closer now... tasty morsels. I\'ve been too long without food. Without blood to drink.',8793,1,0,'anubrekhan SAY_TAUNT4'), -(-1533008,'Shh... it will all be over soon.',8789,1,0,'anubrekhan SAY_SLAY'), -(-1533009,'Your old lives, your mortal desires, mean nothing. You are acolytes of the master now, and you will serve the cause without question! The greatest glory is to die in the master\'s service!',8799,1,0,'faerlina SAY_GREET'), -(-1533010,'Slay them in the master\'s name!',8794,1,0,'faerlina SAY_AGGRO1'), -(-1533011,'You cannot hide from me!',8795,1,0,'faerlina SAY_AGGRO2'), -(-1533012,'Kneel before me, worm!',8796,1,0,'faerlina SAY_AGGRO3'), -(-1533013,'Run while you still can!',8797,1,0,'faerlina SAY_AGGRO4'), -(-1533014,'You have failed!',8800,1,0,'faerlina SAY_SLAY1'), -(-1533015,'Pathetic wretch!',8801,1,0,'faerlina SAY_SLAY2'), -(-1533016,'The master... will avenge me!',8798,1,0,'faerlina SAY_DEATH'), -(-1533017,'Patchwerk want to play!',8909,1,0,'patchwerk SAY_AGGRO1'), -(-1533018,'Kel\'Thuzad make Patchwerk his Avatar of War!',8910,1,0,'patchwerk SAY_AGGRO2'), -(-1533019,'No more play?',8912,1,0,'patchwerk SAY_SLAY'), -(-1533020,'What happened to... Patch...',8911,1,0,'patchwerk SAY_DEATH'), -(-1533021,'goes into a berserker rage!',0,2,0,'patchwerk EMOTE_BERSERK'), -(-1533022,'becomes enraged!',0,2,0,'patchwerk EMOTE_ENRAGE'), -(-1533023,'Stalagg crush you!',8864,1,0,'stalagg SAY_STAL_AGGRO'), -(-1533024,'Stalagg kill!',8866,1,0,'stalagg SAY_STAL_SLAY'), -(-1533025,'Master save me...',8865,1,0,'stalagg SAY_STAL_DEATH'), -(-1533026,'Feed you to master!',8802,1,0,'feugen SAY_FEUG_AGGRO'), -(-1533027,'Feugen make master happy!',8804,1,0,'feugen SAY_FEUG_SLAY'), -(-1533028,'No... more... Feugen...',8803,1,0,'feugen SAY_FEUG_DEATH'), -(-1533029,'You are too late... I... must... OBEY!',8872,1,0,'thaddius SAY_GREET'), -(-1533030,'KILL!',8867,1,0,'thaddius SAY_AGGRO1'), -(-1533031,'EAT YOUR BONES!',8868,1,0,'thaddius SAY_AGGRO2'), -(-1533032,'BREAK YOU!',8869,1,0,'thaddius SAY_AGGRO3'), -(-1533033,'You die now!',8877,1,0,'thaddius SAY_SLAY'), -(-1533034,'Now YOU feel pain!',8871,1,0,'thaddius SAY_ELECT'), -(-1533035,'Thank... you...',8870,1,0,'thaddius SAY_DEATH'), -(-1533036,'Pleeease!',8873,1,0,'thaddius SAY_SCREAM1'), -(-1533037,'Stop, make it stop!',8874,1,0,'thaddius SAY_SCREAM2'), -(-1533038,'Help me! Save me!',8875,1,0,'thaddius SAY_SCREAM3'), -(-1533039,'Please, nooo!',8876,1,0,'thaddius SAY_SCREAM4'); - -DELETE FROM `script_texts` WHERE `entry` BETWEEN -1533074 AND -1533040; - INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1533040,'Foolishly you have sought your own demise. Brazenly you have disregarded powers beyond your understanding. You have fought hard to invade the realm of the harvester. Now there is only one way out - to walk the lonely path of the damned.',8807,1,0,'gothik SAY_SPEECH'), -(-1533041,'Death is the only escape.',8806,1,0,'gothik SAY_KILL'), -(-1533042,'I... am... undone!',8805,1,0,'gothik SAY_DEATH'), -(-1533043,'I have waited long enough! Now, you face the harvester of souls!',8808,1,0,'gothik SAY_TELEPORT'), -(-1533044,'Defend youself!',8892,1,0,'blaumeux SAY_BLAU_AGGRO'), -(-1533045,'Come, Zeliek, do not drive them out. Not before we\'ve had our fun.',8896,1,0,'blaumeux SAY_BLAU_TAUNT1'), -(-1533046,'I do hope they stay alive long enough for me to... introduce myself.',8897,1,0,'blaumeux SAY_BLAU_TAUNT2'), -(-1533047,'The first kill goes to me! Anyone care to wager?',8898,1,0,'blaumeux SAY_BLAU_TAUNT3'), -(-1533048,'Your life is mine!',8895,1,0,'blaumeux SAY_BLAU_SPECIAL'), -(-1533049,'Who\'s next?',8894,1,0,'blaumeux SAY_BLAU_SLAY'), -(-1533050,'Tou... che!',8893,1,0,'blaumeux SAY_BLAU_DEATH'), -(-1533051,'Come out and fight, ye wee ninny!',8899,1,0,'korthazz SAY_KORT_AGGRO'), -(-1533052,'To arms, ye roustabouts! We\'ve got company!',8903,1,0,'korthazz SAY_KORT_TAUNT1'), -(-1533053,'I heard about enough of yer sniveling. Shut yer fly trap \'afore I shut it for ye!',8904,1,0,'korthazz SAY_KORT_TAUNT2'), -(-1533054,'I\'m gonna enjoy killin\' these slack-jawed daffodils!',8905,1,0,'korthazz SAY_KORT_TAUNT3'), -(-1533055,'I like my meat extra crispy!',8901,1,0,'korthazz SAY_KORT_SPECIAl'), -(-1533056,'Next time, bring more friends!',8902,1,0,'korthazz SAY_KORT_SLAY'), -(-1533057,'What a bloody waste this is!',8900,1,0,'korthazz SAY_KORT_DEATH'), -(-1533058,'Flee, before it\'s too late!',8913,1,0,'zeliek SAY_ZELI_AGGRO'), -(-1533059,'Invaders, cease this foolish venture at once! Turn away while you still can!',8917,1,0,'zeliek SAY_ZELI_TAUNT1'), -(-1533060,'Perhaps they will come to their senses, and run away as fast as they can!',8918,1,0,'zeliek SAY_ZELI_TAUNT2'), -(-1533061,'Do not continue! Turn back while there\'s still time!',8919,1,0,'zeliek SAY_ZELI_TAUNT3'), -(-1533062,'I- I have no choice but to obey!',8916,1,0,'zeliek SAY_ZELI_SPECIAL'), -(-1533063,'Forgive me!',8915,1,0,'zeliek SAY_ZELI_SLAY'), -(-1533064,'It is... as it should be.',8914,1,0,'zeliek SAY_ZELI_DEATH'), -(-1533065,'You seek death?',14571,1,0,'rivendare_naxx SAY_RIVE_AGGRO1'), -(-1533066,'None shall pass!',14572,1,0,'rivendare_naxx SAY_RIVE_AGGRO2'), -(-1533067,'Be still!',14573,1,0,'rivendare_naxx SAY_RIVE_AGGRO3'), -(-1533068,'You will find no peace in death.',14574,1,0,'rivendare_naxx SAY_RIVE_SLAY1'), -(-1533069,'The master\'s will is done.',14575,1,0,'rivendare_naxx SAY_RIVE_SLAY2'), -(-1533070,'Bow to the might of the scourge!',14576,1,0,'rivendare_naxx SAY_RIVE_SPECIAL'), -(-1533071,'Enough prattling. Let them come! We shall grind their bones to dust.',14577,1,0,'rivendare_naxx SAY_RIVE_TAUNT1'), -(-1533072,'Conserve your anger! Harness your rage! You will all have outlets for your frustration soon enough.',14578,1,0,'rivendare_naxx SAY_RIVE_TAUNT2'), -(-1533073,'Life is meaningless. It is in death that we are truly tested.',14579,1,0,'rivendare_naxx SAY_RIVE_TAUNT3'), -(-1533074,'Death... will not stop me...',14580,1,0,'rivendare_naxx SAY_RIVE_DEATH'); - -DELETE FROM `script_texts` WHERE `entry` BETWEEN -1533108 AND -1533075; -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1533075,'Glory to the master!',8845,1,0,'noth SAY_AGGRO1'), -(-1533076,'Your life is forfeit!',8846,1,0,'noth SAY_AGGRO2'), -(-1533077,'Die, trespasser!',8847,1,0,'noth SAY_AGGRO3'), -(-1533078,'Rise, my soldiers! Rise and fight once more!',8851,1,0,'noth SAY_SUMMON'), -(-1533079,'My task is done!',8849,1,0,'noth SAY_SLAY1'), -(-1533080,'Breathe no more!',8850,1,0,'noth SAY_SLAY2'), -(-1533081,'I will serve the master... in... death!',8848,1,0,'noth SAY_DEATH'), -(-1533082,'takes in a deep breath...',0,2,0,'sapphiron EMOTE_BREATH'), -(-1533083,'enrages!',0,2,0,'sapphiron EMOTE_ENRAGE'), -(-1533084,'Our preparations continue as planned, master.',14467,1,0,'kelthuzad SAY_SAPP_DIALOG1'), -(-1533085,'It is good that you serve me so faithfully. Soon, all will serve the Lich King and in the end, you shall be rewarded...so long as you do not falter.',8881,1,0,'kelthuzad SAY_SAPP_DIALOG2_LICH'), -(-1533086,'I see no complications... Wait... What is this?',14468,1,0,'kelthuzad SAY_SAPP_DIALOG3'), -(-1533087,'Your security measures have failed! See to this interruption immediately!',8882,1,0,'kelthuzad SAY_SAPP_DIALOG4_LICH'), -(-1533088,'Yes, master!',14469,1,0,'kelthuzad SAY_SAPP_DIALOG5'), -(-1533089,'No!!! A curse upon you, interlopers! The armies of the Lich King will hunt you down. You will not escape your fate...',14484,1,0,'kelthuzad SAY_CAT_DIED'), -(-1533090,'Who dares violate the sanctity of my domain? Be warned, all who trespass here are doomed.',14463,1,0,'kelthuzad SAY_TAUNT1'), -(-1533091,'Fools, you think yourselves triumphant? You have only taken one step closer to the abyss! ',14464,1,0,'kelthuzad SAY_TAUNT2'), -(-1533092,'I grow tired of these games. Proceed, and I will banish your souls to oblivion!',14465,1,0,'kelthuzad SAY_TAUNT3'), -(-1533093,'You have no idea what horrors lie ahead. You have seen nothing! The frozen heart of Naxxramas awaits you!',14466,1,0,'kelthuzad SAY_TAUNT4'), -(-1533094,'Pray for mercy!',14475,1,0,'kelthuzad SAY_AGGRO1'), -(-1533095,'Scream your dying breath!',14476,1,0,'kelthuzad SAY_AGGRO2'), -(-1533096,'The end is upon you!',14477,1,0,'kelthuzad SAY_AGGRO3'), -(-1533097,'The dark void awaits you!',14478,1,0,'kelthuzad SAY_SLAY1'), -(-1533098,'<Kel\'Thuzad cackles maniacally!>',14479,1,0,'kelthuzad SAY_SLAY2'), -(-1533099,'AAAAGHHH!... Do not rejoice... your victory is a hollow one... for I shall return with powers beyond your imagining!',14480,1,0,'kelthuzad SAY_DEATH'), -(-1533100,'Your soul, is bound to me now!',14472,1,0,'kelthuzad SAY_CHAIN1'), -(-1533101,'There will be no escape!',14473,1,0,'kelthuzad SAY_CHAIN2'), -(-1533102,'I will freeze the blood in your veins!',14474,1,0,'kelthuzad SAY_FROST_BLAST'), -(-1533103,'Master! I require aid! ',14470,1,0,'kelthuzad SAY_REQUEST_AID'), -(-1533104,'Very well... warriors of the frozen wastes, rise up! I command you to fight, kill, and die for your master. Let none survive...',0,1,0,'kelthuzad SAY_ANSWER_REQUEST'), -(-1533105,'Minions, servants, soldiers of the cold dark, obey the call of Kel\'Thuzad!',14471,1,0,'kelthuzad SAY_SUMMON_MINIONS'), -(-1533106,'Your petty magics are no challenge to the might of the Scourge! ',14481,1,0,'kelthuzad SAY_SPECIAL1_MANA_DET'), -(-1533107,'Enough! I grow tired of these distractions! ',14483,1,0,'kelthuzad SAY_SPECIAL3_MANA_DET'), -(-1533108,'Fools, you have spread your powers too thin. Be free, my minions!',14482,1,0,'kelthuzad SAY_SPECIAL2_DISPELL'); - -UPDATE `script_texts` SET `sound`=8902 WHERE `entry`=-1533055; -UPDATE `script_texts` SET `sound`=8901 WHERE `entry`=-1533056; +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1533000, 'Ahh... welcome to my parlor.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8788, 1, 0, 0, 'anubrekhan SAY_GREET'), +(-1533001, 'Just a little taste...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8785, 1, 0, 0, 'anubrekhan SAY_AGGRO1'), +(-1533002, 'There is no way out.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8786, 1, 0, 0, 'anubrekhan SAY_AGGRO2'), +(-1533003, 'Yes, Run! It makes the blood pump faster!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8787, 1, 0, 0, 'anubrekhan SAY_AGGRO3'), +(-1533004, 'I hear little hearts beating. Yesss... beating faster now. Soon the beating will stop.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8790, 1, 0, 0, 'anubrekhan SAY_TAUNT1'), +(-1533005, 'Where to go? What to do? So many choices that all end in pain, end in death.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8791, 1, 0, 0, 'anubrekhan SAY_TAUNT2'), +(-1533006, 'Which one shall I eat first? So difficult to choose... the all smell so delicious.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8792, 1, 0, 0, 'anubrekhan SAY_TAUNT3'), +(-1533007, 'Closer now... tasty morsels. I''ve been too long without food. Without blood to drink.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8793, 1, 0, 0, 'anubrekhan SAY_TAUNT4'), +(-1533008, 'Shh... it will all be over soon.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8789, 1, 0, 0, 'anubrekhan SAY_SLAY'), +(-1533009, 'Your old lives, your mortal desires, mean nothing. You are acolytes of the master now, and you will serve the cause without question! The greatest glory is to die in the master''s service!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8799, 1, 0, 0, 'faerlina SAY_GREET'), +(-1533010, 'Slay them in the master''s name!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8794, 1, 0, 0, 'faerlina SAY_AGGRO1'), +(-1533011, 'You cannot hide from me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8795, 1, 0, 0, 'faerlina SAY_AGGRO2'), +(-1533012, 'Kneel before me, worm!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8796, 1, 0, 0, 'faerlina SAY_AGGRO3'), +(-1533013, 'Run while you still can!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8797, 1, 0, 0, 'faerlina SAY_AGGRO4'), +(-1533014, 'You have failed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8800, 1, 0, 0, 'faerlina SAY_SLAY1'), +(-1533015, 'Pathetic wretch!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8801, 1, 0, 0, 'faerlina SAY_SLAY2'), +(-1533016, 'The master... will avenge me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8798, 1, 0, 0, 'faerlina SAY_DEATH'), +(-1533017, 'Patchwerk want to play!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8909, 1, 0, 0, 'patchwerk SAY_AGGRO1'), +(-1533018, 'Kel''Thuzad make Patchwerk his Avatar of War!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8910, 1, 0, 0, 'patchwerk SAY_AGGRO2'), +(-1533019, 'No more play?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8912, 1, 0, 0, 'patchwerk SAY_SLAY'), +(-1533020, 'What happened to... Patch...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8911, 1, 0, 0, 'patchwerk SAY_DEATH'), +(-1533021, 'goes into a berserker rage!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'patchwerk EMOTE_BERSERK'), +(-1533022, 'becomes enraged!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'patchwerk EMOTE_ENRAGE'), +(-1533023, 'Stalagg crush you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8864, 1, 0, 0, 'stalagg SAY_STAL_AGGRO'), +(-1533024, 'Stalagg kill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8866, 1, 0, 0, 'stalagg SAY_STAL_SLAY'), +(-1533025, 'Master save me...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8865, 1, 0, 0, 'stalagg SAY_STAL_DEATH'), +(-1533026, 'Feed you to master!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8802, 1, 0, 0, 'feugen SAY_FEUG_AGGRO'), +(-1533027, 'Feugen make master happy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8804, 1, 0, 0, 'feugen SAY_FEUG_SLAY'), +(-1533028, 'No... more... Feugen...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8803, 1, 0, 0, 'feugen SAY_FEUG_DEATH'), +(-1533029, 'You are too late... I... must... OBEY!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8872, 1, 0, 0, 'thaddius SAY_GREET'), +(-1533030, 'KILL!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8867, 1, 0, 0, 'thaddius SAY_AGGRO1'), +(-1533031, 'EAT YOUR BONES!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8868, 1, 0, 0, 'thaddius SAY_AGGRO2'), +(-1533032, 'BREAK YOU!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8869, 1, 0, 0, 'thaddius SAY_AGGRO3'), +(-1533033, 'You die now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8877, 1, 0, 0, 'thaddius SAY_SLAY'), +(-1533034, 'Now YOU feel pain!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8871, 1, 0, 0, 'thaddius SAY_ELECT'), +(-1533035, 'Thank... you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8870, 1, 0, 0, 'thaddius SAY_DEATH'), +(-1533036, 'Pleeease!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8873, 1, 0, 0, 'thaddius SAY_SCREAM1'), +(-1533037, 'Stop, make it stop!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8874, 1, 0, 0, 'thaddius SAY_SCREAM2'), +(-1533038, 'Help me! Save me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8875, 1, 0, 0, 'thaddius SAY_SCREAM3'), +(-1533039, 'Please, nooo!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8876, 1, 0, 0, 'thaddius SAY_SCREAM4'), +(-1533040, 'Foolishly you have sought your own demise. Brazenly you have disregarded powers beyond your understanding. You have fought hard to invade the realm of the harvester. Now there is only one way out - to walk the lonely path of the damned.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8807, 1, 0, 0, 'gothik SAY_SPEECH'), +(-1533041, 'Death is the only escape.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8806, 1, 0, 0, 'gothik SAY_KILL'), +(-1533042, 'I... am... undone!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8805, 1, 0, 0, 'gothik SAY_DEATH'), +(-1533043, 'I have waited long enough! Now, you face the harvester of souls!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8808, 1, 0, 0, 'gothik SAY_TELEPORT'), +(-1533044, 'Defend youself!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8892, 1, 0, 0, 'blaumeux SAY_BLAU_AGGRO'), +(-1533045, 'Come, Zeliek, do not drive them out. Not before we''ve had our fun.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8896, 1, 0, 0, 'blaumeux SAY_BLAU_TAUNT1'), +(-1533046, 'I do hope they stay alive long enough for me to... introduce myself.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8897, 1, 0, 0, 'blaumeux SAY_BLAU_TAUNT2'), +(-1533047, 'The first kill goes to me! Anyone care to wager?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8898, 1, 0, 0, 'blaumeux SAY_BLAU_TAUNT3'), +(-1533048, 'Your life is mine!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8895, 1, 0, 0, 'blaumeux SAY_BLAU_SPECIAL'), +(-1533049, 'Who''s next?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8894, 1, 0, 0, 'blaumeux SAY_BLAU_SLAY'), +(-1533050, 'Tou... che!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8893, 1, 0, 0, 'blaumeux SAY_BLAU_DEATH'), +(-1533051, 'Come out and fight, ye wee ninny!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8899, 1, 0, 0, 'korthazz SAY_KORT_AGGRO'), +(-1533052, 'To arms, ye roustabouts! We''ve got company!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8903, 1, 0, 0, 'korthazz SAY_KORT_TAUNT1'), +(-1533053, 'I heard about enough of yer sniveling. Shut yer fly trap ''afore I shut it for ye!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8904, 1, 0, 0, 'korthazz SAY_KORT_TAUNT2'), +(-1533054, 'I''m gonna enjoy killin'' these slack-jawed daffodils!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8905, 1, 0, 0, 'korthazz SAY_KORT_TAUNT3'), +(-1533055, 'I like my meat extra crispy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8902, 1, 0, 0, 'korthazz SAY_KORT_SPECIAl'), +(-1533056, 'Next time, bring more friends!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8901, 1, 0, 0, 'korthazz SAY_KORT_SLAY'), +(-1533057, 'What a bloody waste this is!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8900, 1, 0, 0, 'korthazz SAY_KORT_DEATH'), +(-1533058, 'Flee, before it''s too late!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8913, 1, 0, 0, 'zeliek SAY_ZELI_AGGRO'), +(-1533059, 'Invaders, cease this foolish venture at once! Turn away while you still can!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8917, 1, 0, 0, 'zeliek SAY_ZELI_TAUNT1'), +(-1533060, 'Perhaps they will come to their senses, and run away as fast as they can!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8918, 1, 0, 0, 'zeliek SAY_ZELI_TAUNT2'), +(-1533061, 'Do not continue! Turn back while there''s still time!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8919, 1, 0, 0, 'zeliek SAY_ZELI_TAUNT3'), +(-1533062, 'I- I have no choice but to obey!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8916, 1, 0, 0, 'zeliek SAY_ZELI_SPECIAL'), +(-1533063, 'Forgive me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8915, 1, 0, 0, 'zeliek SAY_ZELI_SLAY'), +(-1533064, 'It is... as it should be.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8914, 1, 0, 0, 'zeliek SAY_ZELI_DEATH'), +(-1533065, 'You seek death?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14571, 1, 0, 0, 'rivendare_naxx SAY_RIVE_AGGRO1'), +(-1533066, 'None shall pass!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14572, 1, 0, 0, 'rivendare_naxx SAY_RIVE_AGGRO2'), +(-1533067, 'Be still!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14573, 1, 0, 0, 'rivendare_naxx SAY_RIVE_AGGRO3'), +(-1533068, 'You will find no peace in death.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14574, 1, 0, 0, 'rivendare_naxx SAY_RIVE_SLAY1'), +(-1533069, 'The master''s will is done.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14575, 1, 0, 0, 'rivendare_naxx SAY_RIVE_SLAY2'), +(-1533070, 'Bow to the might of the scourge!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14576, 1, 0, 0, 'rivendare_naxx SAY_RIVE_SPECIAL'), +(-1533071, 'Enough prattling. Let them come! We shall grind their bones to dust.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14577, 1, 0, 0, 'rivendare_naxx SAY_RIVE_TAUNT1'), +(-1533072, 'Conserve your anger! Harness your rage! You will all have outlets for your frustration soon enough.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14578, 1, 0, 0, 'rivendare_naxx SAY_RIVE_TAUNT2'), +(-1533073, 'Life is meaningless. It is in death that we are truly tested.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14579, 1, 0, 0, 'rivendare_naxx SAY_RIVE_TAUNT3'), +(-1533074, 'Death... will not stop me...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14580, 1, 0, 0, 'rivendare_naxx SAY_RIVE_DEATH'), +(-1533075, 'Glory to the master!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8845, 1, 0, 0, 'noth SAY_AGGRO1'), +(-1533076, 'Your life is forfeit!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8846, 1, 0, 0, 'noth SAY_AGGRO2'), +(-1533077, 'Die, trespasser!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8847, 1, 0, 0, 'noth SAY_AGGRO3'), +(-1533078, 'Rise, my soldiers! Rise and fight once more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8851, 1, 0, 0, 'noth SAY_SUMMON'), +(-1533079, 'My task is done!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8849, 1, 0, 0, 'noth SAY_SLAY1'), +(-1533080, 'Breathe no more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8850, 1, 0, 0, 'noth SAY_SLAY2'), +(-1533081, 'I will serve the master... in... death!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8848, 1, 0, 0, 'noth SAY_DEATH'), +(-1533082, 'takes in a deep breath...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'sapphiron EMOTE_BREATH'), +(-1533083, 'enrages!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'sapphiron EMOTE_ENRAGE'), +(-1533084, 'Our preparations continue as planned, master.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14467, 1, 0, 0, 'kelthuzad SAY_SAPP_DIALOG1'), +(-1533085, 'It is good that you serve me so faithfully. Soon, all will serve the Lich King and in the end, you shall be rewarded...so long as you do not falter.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8881, 1, 0, 0, 'kelthuzad SAY_SAPP_DIALOG2_LICH'), +(-1533086, 'I see no complications... Wait... What is this?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14468, 1, 0, 0, 'kelthuzad SAY_SAPP_DIALOG3'), +(-1533087, 'Your security measures have failed! See to this interruption immediately!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8882, 1, 0, 0, 'kelthuzad SAY_SAPP_DIALOG4_LICH'), +(-1533088, 'Yes, master!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14469, 1, 0, 0, 'kelthuzad SAY_SAPP_DIALOG5'), +(-1533089, 'No!!! A curse upon you, interlopers! The armies of the Lich King will hunt you down. You will not escape your fate...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14484, 1, 0, 0, 'kelthuzad SAY_CAT_DIED'), +(-1533090, 'Who dares violate the sanctity of my domain? Be warned, all who trespass here are doomed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14463, 1, 0, 0, 'kelthuzad SAY_TAUNT1'), +(-1533091, 'Fools, you think yourselves triumphant? You have only taken one step closer to the abyss! ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14464, 1, 0, 0, 'kelthuzad SAY_TAUNT2'), +(-1533092, 'I grow tired of these games. Proceed, and I will banish your souls to oblivion!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14465, 1, 0, 0, 'kelthuzad SAY_TAUNT3'), +(-1533093, 'You have no idea what horrors lie ahead. You have seen nothing! The frozen heart of Naxxramas awaits you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14466, 1, 0, 0, 'kelthuzad SAY_TAUNT4'), +(-1533094, 'Pray for mercy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14475, 1, 0, 0, 'kelthuzad SAY_AGGRO1'), +(-1533095, 'Scream your dying breath!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14476, 1, 0, 0, 'kelthuzad SAY_AGGRO2'), +(-1533096, 'The end is upon you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14477, 1, 0, 0, 'kelthuzad SAY_AGGRO3'), +(-1533097, 'The dark void awaits you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14478, 1, 0, 0, 'kelthuzad SAY_SLAY1'), +(-1533098, '<Kel''Thuzad cackles maniacally!>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14479, 1, 0, 0, 'kelthuzad SAY_SLAY2'), +(-1533099, 'AAAAGHHH!... Do not rejoice... your victory is a hollow one... for I shall return with powers beyond your imagining!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14480, 1, 0, 0, 'kelthuzad SAY_DEATH'), +(-1533100, 'Your soul, is bound to me now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14472, 1, 0, 0, 'kelthuzad SAY_CHAIN1'), +(-1533101, 'There will be no escape!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14473, 1, 0, 0, 'kelthuzad SAY_CHAIN2'), +(-1533102, 'I will freeze the blood in your veins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14474, 1, 0, 0, 'kelthuzad SAY_FROST_BLAST'), +(-1533103, 'Master! I require aid! ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14470, 1, 0, 0, 'kelthuzad SAY_REQUEST_AID'), +(-1533104, 'Very well... warriors of the frozen wastes, rise up! I command you to fight, kill, and die for your master. Let none survive...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'kelthuzad SAY_ANSWER_REQUEST'), +(-1533105, 'Minions, servants, soldiers of the cold dark, obey the call of Kel''Thuzad!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14471, 1, 0, 0, 'kelthuzad SAY_SUMMON_MINIONS'), +(-1533106, 'Your petty magics are no challenge to the might of the Scourge! ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14481, 1, 0, 0, 'kelthuzad SAY_SPECIAL1_MANA_DET'), +(-1533107, 'Enough! I grow tired of these distractions! ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14483, 1, 0, 0, 'kelthuzad SAY_SPECIAL3_MANA_DET'), +(-1533108, 'Fools, you have spread your powers too thin. Be free, my minions!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14482, 1, 0, 0, 'kelthuzad SAY_SPECIAL2_DISPELL'), +(-1533109, 'You are mine now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8825, 1, 0, 0, 'heigan SAY_AGGRO1'), +(-1533110, 'I see you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8826, 1, 0, 0, 'heigan SAY_AGGRO2'), +(-1533111, 'You...are next!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8827, 1, 0, 0, 'heigan SAY_AGGRO3'), +(-1533112, 'Close your eyes... sleep!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8829, 1, 0, 0, 'heigan SAY_SLAY'), +(-1533113, 'The races of the world will perish. It is only a matter of time.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8830, 1, 0, 0, 'heigan SAY_TAUNT1'), +(-1533114, 'I see endless suffering, I see torment, I see rage. I see... everything!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8831, 1, 0, 0, 'heigan SAY_TAUNT2'), +(-1533115, 'Soon... the world will tremble!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8832, 1, 0, 0, 'heigan SAY_TAUNT3'), +(-1533116, 'The end is upon you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8833, 1, 0, 0, 'heigan SAY_TAUNT4'), +(-1533117, 'Hungry worms will feast on your rotten flesh!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8834, 1, 0, 0, 'heigan SAY_TAUNT5'), +(-1533118, 'Noo... o...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8828, 1, 0, 0, 'heigan SAY_DEATH'); -- -1 534 000 THE BATTLE OF MT. HYJAL +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1534000, 'I''m in jeopardy, help me if you can!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11007, 1, 0, 0, 'jaina hyjal ATTACKED 1'), +(-1534001, 'They''ve broken through!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11049, 1, 0, 0, 'jaina hyjal ATTACKED 2'), +(-1534002, 'Stay alert! Another wave approaches.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11008, 1, 0, 0, 'jaina hyjal INCOMING'), +(-1534003, 'Don''t give up! We must prevail!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11006, 1, 0, 0, 'jaina hyjal BEGIN'), +(-1534004, 'Hold them back as long as possible.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11050, 1, 0, 0, 'jaina hyjal RALLY 1'), +(-1534005, 'We must hold strong!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11051, 1, 0, 0, 'jaina hyjal RALLY 2'), +(-1534006, 'We are lost. Fall back!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11009, 1, 0, 0, 'jaina hyjal FAILURE'), +(-1534007, 'We have won valuable time. Now we must pull back!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11011, 1, 0, 0, 'jaina hyjal SUCCESS'), +(-1534008, 'I did... my best.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11010, 1, 0, 0, 'jaina hyjal DEATH'), +(-1534009, 'I will lie down for no one!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11031, 1, 0, 0, 'thrall hyjal ATTACKED 1'), +(-1534010, 'Bring the fight to me and pay with your lives!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11061, 1, 0, 0, 'thrall hyjal ATTACKED 2'), +(-1534011, 'Make ready for another wave! LOK-TAR OGAR!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11032, 1, 0, 0, 'thrall hyjal INCOMING'), +(-1534012, 'Hold them back! Do not falter!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11030, 1, 0, 0, 'thrall hyjal BEGIN'), +(-1534013, 'Victory or death!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11059, 1, 0, 0, 'thrall hyjal RALLY 1'), +(-1534014, 'Do not give an inch of ground!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11060, 1, 0, 0, 'thrall hyjal RALLY 2'), +(-1534015, 'It is over. Withdraw! We have failed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11033, 1, 0, 0, 'thrall hyjal FAILURE'), +(-1534016, 'We have played our part and done well. It is up to the others now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11035, 1, 0, 0, 'thrall hyjal SUCCESS'), +(-1534017, 'Uraaa...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11034, 1, 0, 0, 'thrall hyjal DEATH'), +(-1534018, 'All of your efforts have been in vain, for the draining of the World Tree has already begun. Soon the heart of your world will beat no more.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10986, 1, 0, 0, 'archimonde SAY_PRE_EVENTS_COMPLETE'), +(-1534019, 'Your resistance is insignificant.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10987, 1, 0, 0, 'archimonde SAY_AGGRO'), +(-1534020, 'This world will burn!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10990, 1, 0, 0, 'archimonde SAY_DOOMFIRE1'), +(-1534021, 'Manach sheek-thrish!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11041, 1, 0, 0, 'archimonde SAY_DOOMFIRE2'), +(-1534022, 'A-kreesh!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10989, 1, 0, 0, 'archimonde SAY_AIR_BURST1'), +(-1534023, 'Away vermin!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11043, 1, 0, 0, 'archimonde SAY_AIR_BURST2'), +(-1534024, 'All creation will be devoured!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11044, 1, 0, 0, 'archimonde SAY_SLAY1'), +(-1534025, 'Your soul will languish for eternity.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10991, 1, 0, 0, 'archimonde SAY_SLAY2'), +(-1534026, 'I am the coming of the end!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11045, 1, 0, 0, 'archimonde SAY_SLAY3'), +(-1534027, 'At last it is here. Mourn and lament the passing of all you have ever known and all that would have been! Akmin-kurai!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10993, 1, 0, 0, 'archimonde SAY_ENRAGE'), +(-1534028, 'No, it cannot be! Nooo!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10992, 1, 0, 0, 'archimonde SAY_DEATH'), +(-1534029, 'You are mine now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10988, 1, 0, 0, 'archimonde SAY_SOUL_CHARGE1'), +(-1534030, 'Bow to my will.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11042, 1, 0, 0, 'archimonde SAY_SOUL_CHARGE2'); -- -1 540 000 SHATTERED HALLS -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1540000,'You wish to fight us all at once? This should be amusing!',10262,1,0,'nethekurse SAY_INTRO'), -(-1540001,'You can have that one. I no longer need him.',10263,1,0,'nethekurse PEON_ATTACK_1'), -(-1540002,'Yes, beat him mercilessly. His skull is a thick as an ogres.',10264,1,0,'nethekurse PEON_ATTACK_2'), -(-1540003,'Don\'t waste your time on that one. He\'s weak!',10265,1,0,'nethekurse PEON_ATTACK_3'), -(-1540004,'You want him? Very well, take him!',10266,1,0,'nethekurse PEON_ATTACK_4'), -(-1540005,'One pitiful wretch down. Go on, take another one.',10267,1,0,'nethekurse PEON_DIE_1'), -(-1540006,'Ahh, what a waste... Next!',10268,1,0,'nethekurse PEON_DIE_2'), -(-1540007,'I was going to kill him anyway!',10269,1,0,'nethekurse PEON_DIE_3'), -(-1540008,'Thank you for saving me the trouble! Now it\'s my turn to have some fun...',10270,1,0,'nethekurse PEON_DIE_4'), -(-1540009,'Beg for your pittyfull life!',10259,1,0,'nethekurse SAY_TAUNT_1'), -(-1540010,'Run covad, ruun!',10260,1,0,'nethekurse SAY_TAUNT_2'), -(-1540011,'Your pain amuses me.',10261,1,0,'nethekurse SAY_TAUNT_3'), -(-1540012,'I\'m already bored.',10271,1,0,'nethekurse SAY_AGGRO_1'), -(-1540013,'Come on! ... Show me a real fight.',10272,1,0,'nethekurse SAY_AGGRO_2'), -(-1540014,'I had more fun torturing the peons.',10273,1,0,'nethekurse SAY_AGGRO_3'), -(-1540015,'You Loose.',10274,1,0,'nethekurse SAY_SLAY_1'), -(-1540016,'Ohh! Just die.',10275,1,0,'nethekurse SAY_SLAY_2'), -(-1540017,'What a ... a shame.',10276,1,0,'nethekurse SAY_DIE'), - -(-1540018,'Smash!',10306,1,0,'omrogg GoCombat_1'), -(-1540019,'If you nice me let you live.',10308,1,0,'omrogg GoCombat_2'), -(-1540020,'Me hungry!',10309,1,0,'omrogg GoCombat_3'), -(-1540021,'Why don\'t you let me do the talking?',10317,1,0,'omrogg GoCombatDelay_1'), -(-1540022,'No, we will NOT let you live!',10318,1,0,'omrogg GoCombatDelay_2'), -(-1540023,'You always hungry. That why we so fat!',10319,1,0,'omrogg GoCombatDelay_3'), -(-1540024,'You stay here. Me go kill someone else!',10303,1,0,'omrogg Threat_1'), -(-1540025,'What are you doing!',10315,1,0,'omrogg Threat_2'), -(-1540026,'Me kill someone else...',10302,1,0,'omrogg Threat_3'), -(-1540027,'Me not like this one...',10300,1,0,'omrogg Threat_4'), -(-1540028,'That\'s not funny!',10314,1,0,'omrogg ThreatDelay1_1'), -(-1540029,'Me get bored...',10305,1,0,'omrogg ThreatDelay1_2'), -(-1540030,'I\'m not done yet, idiot!',10313,1,0,'omrogg ThreatDelay1_3'), -(-1540031,'Hey you numbskull!',10312,1,0,'omrogg ThreatDelay1_4'), -(-1540032,'Ha ha ha.',10304,1,0,'omrogg ThreatDelay2_1'), -(-1540033,'Whhy! He almost dead!',10316,1,0,'omrogg ThreatDelay2_2'), -(-1540034,'H\'ey...',10307,1,0,'omrogg ThreatDelay2_3'), -(-1540035,'We kill his friend!',10301,1,0,'omrogg ThreatDelay2_4'), -(-1540036,'This one die easy!',10310,1,0,'omrogg Killing_1'), -(-1540037,'I\'m tired. You kill next one!',10320,1,0,'omrogg Killing_2'), -(-1540038,'That\'s because I do all the hard work!',10321,1,0,'omrogg KillingDelay_1'), -(-1540039,'This all...your fault!',10311,1,0,'omrogg YELL_DIE_L'), -(-1540040,'I...hate...you...',10322,1,0,'omrogg YELL_DIE_R'), -(-1540041,'enrages',0,2,0,'omrogg EMOTE_ENRAGE'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1540000, 'You wish to fight us all at once? This should be amusing!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10262, 1, 0, 0, 'nethekurse SAY_INTRO'), +(-1540001, 'You can have that one. I no longer need him.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10263, 1, 0, 0, 'nethekurse PEON_ATTACK_1'), +(-1540002, 'Yes, beat him mercilessly. His skull is a thick as an ogres.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10264, 1, 0, 0, 'nethekurse PEON_ATTACK_2'), +(-1540003, 'Don''t waste your time on that one. He''s weak!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10265, 1, 0, 0, 'nethekurse PEON_ATTACK_3'), +(-1540004, 'You want him? Very well, take him!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10266, 1, 0, 0, 'nethekurse PEON_ATTACK_4'), +(-1540005, 'One pitiful wretch down. Go on, take another one.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10267, 1, 0, 0, 'nethekurse PEON_DIE_1'), +(-1540006, 'Ahh, what a waste... Next!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10268, 1, 0, 0, 'nethekurse PEON_DIE_2'), +(-1540007, 'I was going to kill him anyway!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10269, 1, 0, 0, 'nethekurse PEON_DIE_3'), +(-1540008, 'Thank you for saving me the trouble! Now it''s my turn to have some fun...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10270, 1, 0, 0, 'nethekurse PEON_DIE_4'), +(-1540009, 'Beg for your pittyfull life!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10259, 1, 0, 0, 'nethekurse SAY_TAUNT_1'), +(-1540010, 'Run covad, ruun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10260, 1, 0, 0, 'nethekurse SAY_TAUNT_2'), +(-1540011, 'Your pain amuses me.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10261, 1, 0, 0, 'nethekurse SAY_TAUNT_3'), +(-1540012, 'I''m already bored.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10271, 1, 0, 0, 'nethekurse SAY_AGGRO_1'), +(-1540013, 'Come on! ... Show me a real fight.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10272, 1, 0, 0, 'nethekurse SAY_AGGRO_2'), +(-1540014, 'I had more fun torturing the peons.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10273, 1, 0, 0, 'nethekurse SAY_AGGRO_3'), +(-1540015, 'You Loose.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10274, 1, 0, 0, 'nethekurse SAY_SLAY_1'), +(-1540016, 'Ohh! Just die.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10275, 1, 0, 0, 'nethekurse SAY_SLAY_2'), +(-1540017, 'What a ... a shame.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10276, 1, 0, 0, 'nethekurse SAY_DIE'), +(-1540018, 'Smash!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10306, 1, 0, 0, 'omrogg GoCombat_1'), +(-1540019, 'If you nice me let you live.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10308, 1, 0, 0, 'omrogg GoCombat_2'), +(-1540020, 'Me hungry!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10309, 1, 0, 0, 'omrogg GoCombat_3'), +(-1540021, 'Why don''t you let me do the talking?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10317, 1, 0, 0, 'omrogg GoCombatDelay_1'), +(-1540022, 'No, we will NOT let you live!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10318, 1, 0, 0, 'omrogg GoCombatDelay_2'), +(-1540023, 'You always hungry. That why we so fat!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10319, 1, 0, 0, 'omrogg GoCombatDelay_3'), +(-1540024, 'You stay here. Me go kill someone else!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10303, 1, 0, 0, 'omrogg Threat_1'), +(-1540025, 'What are you doing!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10315, 1, 0, 0, 'omrogg Threat_2'), +(-1540026, 'Me kill someone else...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10302, 1, 0, 0, 'omrogg Threat_3'), +(-1540027, 'Me not like this one...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10300, 1, 0, 0, 'omrogg Threat_4'), +(-1540028, 'That''s not funny!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10314, 1, 0, 0, 'omrogg ThreatDelay1_1'), +(-1540029, 'Me get bored...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10305, 1, 0, 0, 'omrogg ThreatDelay1_2'), +(-1540030, 'I''m not done yet, idiot!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10313, 1, 0, 0, 'omrogg ThreatDelay1_3'), +(-1540031, 'Hey you numbskull!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10312, 1, 0, 0, 'omrogg ThreatDelay1_4'), +(-1540032, 'Ha ha ha.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10304, 1, 0, 0, 'omrogg ThreatDelay2_1'), +(-1540033, 'Whhy! He almost dead!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10316, 1, 0, 0, 'omrogg ThreatDelay2_2'), +(-1540034, 'H''ey...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10307, 1, 0, 0, 'omrogg ThreatDelay2_3'), +(-1540035, 'We kill his friend!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10301, 1, 0, 0, 'omrogg ThreatDelay2_4'), +(-1540036, 'This one die easy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10310, 1, 0, 0, 'omrogg Killing_1'), +(-1540037, 'I''m tired. You kill next one!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10320, 1, 0, 0, 'omrogg Killing_2'), +(-1540038, 'That''s because I do all the hard work!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10321, 1, 0, 0, 'omrogg KillingDelay_1'), +(-1540039, 'This all...your fault!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10311, 1, 0, 0, 'omrogg YELL_DIE_L'), +(-1540040, 'I...hate...you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10322, 1, 0, 0, 'omrogg YELL_DIE_R'), +(-1540041, 'enrages', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'omrogg EMOTE_ENRAGE'), +(-1540042, 'Ours is the true Horde! The only Horde!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10323, 1, 0, 0, 'kargath SAY_AGGRO1'), +(-1540043, 'I''ll carve the meat from your bones!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10324, 1, 0, 0, 'kargath SAY_AGGRO2'), +(-1540044, 'I am called Bladefist for a reason, as you will see!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10325, 1, 0, 0, 'kargath SAY_AGGRO3'), +(-1540045, 'For the real Horde!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10326, 1, 0, 0, 'kargath SAY_SLAY1'), +(-1540046, 'I am the only Warchief!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10327, 1, 0, 0, 'kargath SAY_SLAY2'), +(-1540047, 'The true Horde... will.. prevail...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10328, 1, 0, 0, 'kargath SAY_DEATH'); -- -1 542 000 BLOOD FURNACE -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1542000,'Who dares interrupt... What is this? What have you done? You ruin everything!',10164,1,0,'kelidan SAY_WAKE'), -(-1542001,'You mustn\'t let him loose!',10166,1,0,'kelidan SAY_ADD_AGGRO_1'), -(-1542002,'Ignorant whelps!',10167,1,0,'kelidan SAY_ADD_AGGRO_2'), -(-1542003,'You fools! He\'ll kill us all!',10168,1,0,'kelidan SAY_ADD_AGGRO_3'), -(-1542004,'Just as you deserve!',10169,1,0,'kelidan SAY_KILL_1'), -(-1542005,'Your friends will soon be joining you.',10170,1,0,'kelidan SAY_KILL_2'), -(-1542006,'Closer... Come closer.. and burn!',10165,1,0,'kelidan SAY_NOVA'), -(-1542007,'Good luck... you\'ll need it..',10171,1,0,'kelidan SAY_DIE'), - -(-1542008,'Come intruders....',0,1,0,'broggok SAY_AGGRO'), - -(-1542009,'My work must not be interrupted.',10286,1,0,'the_maker SAY_AGGRO_1'), -(-1542010,'Perhaps I can find a use for you.',10287,1,0,'the_maker SAY_AGGRO_2'), -(-1542011,'Anger... Hate... These are tools I can use.',10288,1,0,'the_maker SAY_AGGRO_3'), -(-1542012,'Let\'s see what I can make of you.',10289,1,0,'the_maker SAY_KILL_1'), -(-1542013,'It is pointless to resist.',10290,1,0,'the_maker SAY_KILL_2'), -(-1542014,'Stay away from... me.',10291,1,0,'the_maker SAY_DIE'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1542000, 'Who dares interrupt... What is this? What have you done? You ruin everything!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10164, 1, 0, 0, 'kelidan SAY_WAKE'), +(-1542001, 'You mustn''t let him loose!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10166, 1, 0, 0, 'kelidan SAY_ADD_AGGRO_1'), +(-1542002, 'Ignorant whelps!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10167, 1, 0, 0, 'kelidan SAY_ADD_AGGRO_2'), +(-1542003, 'You fools! He''ll kill us all!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10168, 1, 0, 0, 'kelidan SAY_ADD_AGGRO_3'), +(-1542004, 'Just as you deserve!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10169, 1, 0, 0, 'kelidan SAY_KILL_1'), +(-1542005, 'Your friends will soon be joining you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10170, 1, 0, 0, 'kelidan SAY_KILL_2'), +(-1542006, 'Closer... Come closer.. and burn!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10165, 1, 0, 0, 'kelidan SAY_NOVA'), +(-1542007, 'Good luck... you''ll need it..', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10171, 1, 0, 0, 'kelidan SAY_DIE'), +(-1542008, 'Come intruders....', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'broggok SAY_AGGRO'), +(-1542009, 'My work must not be interrupted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10286, 1, 0, 0, 'the_maker SAY_AGGRO_1'), +(-1542010, 'Perhaps I can find a use for you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10287, 1, 0, 0, 'the_maker SAY_AGGRO_2'), +(-1542011, 'Anger... Hate... These are tools I can use.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10288, 1, 0, 0, 'the_maker SAY_AGGRO_3'), +(-1542012, 'Let''s see what I can make of you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10289, 1, 0, 0, 'the_maker SAY_KILL_1'), +(-1542013, 'It is pointless to resist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10290, 1, 0, 0, 'the_maker SAY_KILL_2'), +(-1542014, 'Stay away from... me.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10291, 1, 0, 0, 'the_maker SAY_DIE'); -- -1 543 000 HELLFIRE RAMPARTS -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1543000,'Do you smell that? Fresh meat has somehow breached our citadel. Be wary of any intruders.',0,1,0,'gargolmar SAY_TAUNT'), -(-1543001,'Heal me! QUICKLY!',10329,1,0,'gargolmar SAY_HEAL'), -(-1543002,'Back off, pup!',10330,1,0,'gargolmar SAY_SURGE'), -(-1543003,'What have we here...?',10331,1,0,'gargolmar SAY_AGGRO_1'), -(-1543004,'Heh... this may hurt a little.',10332,1,0,'gargolmar SAY_AGGRO_2'), -(-1543005,'I\'m gonna enjoy this.',10333,1,0,'gargolmar SAY_AGGRO_3'), -(-1543006,'Say farewell!',10334,1,0,'gargolmar SAY_KILL_1'), -(-1543007,'Much too easy...',10335,1,0,'gargolmar SAY_KILL_2'), -(-1543008,'Hahah.. <cough> ..argh!',10336,1,0,'gargolmar SAY_DIE'), - -(-1543009,'You dare stand against me?!',10280,1,0,'omor SAY_AGGRO_1'), -(-1543010,'I will not be defeated!',10279,1,0,'omor SAY_AGGRO_2'), -(-1543011,'Your insolence will be your death.',10281,1,0,'omor SAY_AGGRO_3'), -(-1543012,'Achor-she-ki! Feast my pet! Eat your fill!',10277,1,0,'omor SAY_SUMMON'), -(-1543013,'A-Kreesh!',10278,1,0,'omor SAY_CURSE'), -(-1543014,'Die, weakling!',10282,1,0,'omor SAY_KILL_1'), -(-1543015,'It is... not over.',10284,1,0,'omor SAY_DIE'), -(-1543016,'I am victorious!',10283,1,0,'omor SAY_WIPE'); - -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -('-1543017','You have faced many challenges, pity they were all in vain. Soon your people will kneel to my lord!',10292,1,0,'vazruden SAY_INTRO'), -('-1543018','Is there no one left to test me?',10293,1,0,'vazruden SAY_WIPE'), -('-1543019','Your time is running out!',10294,1,0,'vazruden SAY_AGGRO_1'), -('-1543020','You are nothing, I answer a higher call!',10295,1,0,'vazruden SAY_AGGRO_2'), -('-1543021','The Dark Lord laughs at you!',10296,1,0,'vazruden SAY_AGGRO_3'), -('-1543022','It is over. Finished!',10297,1,0,'vazruden SAY_KILL_1'), -('-1543023','Your days are done!',10298,1,0,'vazruden SAY_KILL_2'), -('-1543024','My lord will be the end you all...',10299,1,0,'vazruden SAY_DIE'), -('-1543025','descends from the sky',0,3,0,'vazruden EMOTE'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1543000, 'Do you smell that? Fresh meat has somehow breached our citadel. Be wary of any intruders.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'gargolmar SAY_TAUNT'), +(-1543001, 'Heal me! QUICKLY!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10329, 1, 0, 0, 'gargolmar SAY_HEAL'), +(-1543002, 'Back off, pup!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10330, 1, 0, 0, 'gargolmar SAY_SURGE'), +(-1543003, 'What have we here...?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10331, 1, 0, 0, 'gargolmar SAY_AGGRO_1'), +(-1543004, 'Heh... this may hurt a little.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10332, 1, 0, 0, 'gargolmar SAY_AGGRO_2'), +(-1543005, 'I''m gonna enjoy this.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10333, 1, 0, 0, 'gargolmar SAY_AGGRO_3'), +(-1543006, 'Say farewell!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10334, 1, 0, 0, 'gargolmar SAY_KILL_1'), +(-1543007, 'Much too easy...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10335, 1, 0, 0, 'gargolmar SAY_KILL_2'), +(-1543008, 'Hahah.. <cough> ..argh!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10336, 1, 0, 0, 'gargolmar SAY_DIE'), +(-1543009, 'You dare stand against me?!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10280, 1, 0, 0, 'omor SAY_AGGRO_1'), +(-1543010, 'I will not be defeated!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10279, 1, 0, 0, 'omor SAY_AGGRO_2'), +(-1543011, 'Your insolence will be your death.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10281, 1, 0, 0, 'omor SAY_AGGRO_3'), +(-1543012, 'Achor-she-ki! Feast my pet! Eat your fill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10277, 1, 0, 0, 'omor SAY_SUMMON'), +(-1543013, 'A-Kreesh!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10278, 1, 0, 0, 'omor SAY_CURSE'), +(-1543014, 'Die, weakling!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10282, 1, 0, 0, 'omor SAY_KILL_1'), +(-1543015, 'It is... not over.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10284, 1, 0, 0, 'omor SAY_DIE'), +(-1543016, 'I am victorious!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10283, 1, 0, 0, 'omor SAY_WIPE'), +(-1543017, 'You have faced many challenges, pity they were all in vain. Soon your people will kneel to my lord!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10292, 1, 0, 0, 'vazruden SAY_INTRO'), +(-1543018, 'Is there no one left to test me?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10293, 1, 0, 0, 'vazruden SAY_WIPE'), +(-1543019, 'Your time is running out!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10294, 1, 0, 0, 'vazruden SAY_AGGRO_1'), +(-1543020, 'You are nothing, I answer a higher call!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10295, 1, 0, 0, 'vazruden SAY_AGGRO_2'), +(-1543021, 'The Dark Lord laughs at you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10296, 1, 0, 0, 'vazruden SAY_AGGRO_3'), +(-1543022, 'It is over. Finished!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10297, 1, 0, 0, 'vazruden SAY_KILL_1'), +(-1543023, 'Your days are done!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10298, 1, 0, 0, 'vazruden SAY_KILL_2'), +(-1543024, 'My lord will be the end you all...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10299, 1, 0, 0, 'vazruden SAY_DIE'), +(-1543025, 'descends from the sky', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'vazruden EMOTE'); -- -1 544 000 MAGTHERIDON'S LAIR -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1544000,'Wretched, meddling insects. Release me and perhaps i will grant you a merciful death!',10247,1,0,'magtheridon SAY_TAUNT1'), -(-1544001,'Vermin! Leeches! Take my blood and choke on it!',10248,1,0,'magtheridon SAY_TAUNT2'), -(-1544002,'Illidan is an arrogant fool. I will crush him and reclaim Outland as my own.',10249,1,0,'magtheridon SAY_TAUNT3'), -(-1544003,'Away, you mindless parasites. My blood is my own!',10250,1,0,'magtheridon SAY_TAUNT4'), -(-1544004,'How long do you believe your pathetic sorcery can hold me?',10251,1,0,'magtheridon SAY_TAUNT5'), -(-1544005,'My blood will be the end of you!',10252,1,0,'magtheridon SAY_TAUNT6'), -(-1544006,'I...am...UNLEASHED!!!',10253,1,0,'magtheridon SAY_FREED'), -(-1544007,'Thank you for releasing me. Now...die!',10254,1,0,'magtheridon SAY_AGGRO'), -(-1544008,'Not again...NOT AGAIN!',10256,1,0,'magtheridon SAY_BANISH'), -(-1544009,'I will not be taken so easily. Let the walls of this prison tremble...and FALL!!!',10257,1,0,'magtheridon SAY_CHAMBER_DESTROY'), -(-1544010,'Did you think me weak? Soft? Who is the weak one now?!',10255,1,0,'magtheridon SAY_PLAYER_KILLED'), -(-1544011,'The Legion...will consume you...all...',10258,1,0,'magtheridon SAY_DEATH'), -(-1544012,'becomes enraged!',0,2,0,'magtheridon EMOTE_BERSERK'), -(-1544013,'begins to cast Blast Nova!',0,2,0,'magtheridon EMOTE_BLASTNOVA'), -(-1544014,'bonds begin to weaken!',0,2,0,'magtheridon EMOTE_BEGIN'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1544000, 'Wretched, meddling insects. Release me and perhaps i will grant you a merciful death!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10247, 1, 0, 0, 'magtheridon SAY_TAUNT1'), +(-1544001, 'Vermin! Leeches! Take my blood and choke on it!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10248, 1, 0, 0, 'magtheridon SAY_TAUNT2'), +(-1544002, 'Illidan is an arrogant fool. I will crush him and reclaim Outland as my own.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10249, 1, 0, 0, 'magtheridon SAY_TAUNT3'), +(-1544003, 'Away, you mindless parasites. My blood is my own!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10250, 1, 0, 0, 'magtheridon SAY_TAUNT4'), +(-1544004, 'How long do you believe your pathetic sorcery can hold me?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10251, 1, 0, 0, 'magtheridon SAY_TAUNT5'), +(-1544005, 'My blood will be the end of you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10252, 1, 0, 0, 'magtheridon SAY_TAUNT6'), +(-1544006, 'I...am...UNLEASHED!!!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10253, 1, 0, 0, 'magtheridon SAY_FREED'), +(-1544007, 'Thank you for releasing me. Now...die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10254, 1, 0, 0, 'magtheridon SAY_AGGRO'), +(-1544008, 'Not again...NOT AGAIN!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10256, 1, 0, 0, 'magtheridon SAY_BANISH'), +(-1544009, 'I will not be taken so easily. Let the walls of this prison tremble...and FALL!!!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10257, 1, 0, 0, 'magtheridon SAY_CHAMBER_DESTROY'), +(-1544010, 'Did you think me weak? Soft? Who is the weak one now?!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10255, 1, 0, 0, 'magtheridon SAY_PLAYER_KILLED'), +(-1544011, 'The Legion...will consume you...all...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10258, 1, 0, 0, 'magtheridon SAY_DEATH'), +(-1544012, 'becomes enraged!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'magtheridon EMOTE_BERSERK'), +(-1544013, 'begins to cast Blast Nova!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'magtheridon EMOTE_BLASTNOVA'), +(-1544014, 'bonds begin to weaken!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'magtheridon EMOTE_BEGIN'), +(-1544015, 'breaks free!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'magtheridon EMOTE_FREED'); -- -1 545 000 THE STEAMVAULT -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1545000,'Surge forth my pets!',10360,1,0,'thespia SAY_SUMMON'), -(-1545001,'The depths will consume you!',10361,1,0,'thespia SAY_AGGRO_1'), -(-1545002,'Meet your doom, surface dwellers!',10362,1,0,'thespia SAY_AGGRO_2'), -(-1545003,'You will drown in blood!',10363,1,0,'thespia SAY_AGGRO_3'), -(-1545004,'To the depths of oblivion with you!',10364,1,0,'thespia SAY_SLAY_1'), -(-1545005,'For my lady and master!',10365,1,0,'thespia SAY_SLAY_2'), -(-1545006,'Our matron will be.. the end of.. you..',10366,1,0,'thespia SAY_DEAD'), - -(-1545007,'I\'m bringin\' the pain!',10367,1,0,'mekgineer SAY_MECHANICS'), -(-1545008,'You\'re in for a world of hurt!',10368,1,0,'mekgineer SAY_AGGRO_1'), -(-1545009,'Eat hot metal, scumbag!',10369,1,0,'mekgineer SAY_AGGRO_2'), -(-1545010,'I\'ll come over there!',10370,1,0,'mekgineer SAY_AGGRO_3'), -(-1545011,'I\'m bringin\' the pain!',10371,1,0,'mekgineer SAY_AGGRO_4'), -(-1545012,'You just got served, punk!',10372,1,0,'mekgineer SOUND_SLAY_1'), -(-1545013,'I own you!',10373,1,0,'mekgineer SOUND_SLAY_2'), -(-1545014,'Have fun dyin\', cupcake!',10374,1,0,'mekgineer SOUND_SLAY_3'), -(-1545015,'Mommy!',10375,1,0,'mekgineer SAY_DEATH'), - -(-1545016,'You deem yourselves worthy simply because you bested my guards? Our work here will not be compromised!',10390,1,0,'kalithresh SAY_INTRO'), -(-1545017,'This is not nearly over...',10391,1,0,'kalithresh SAY_REGEN'), -(-1545018,'Your head will roll!',10392,1,0,'kalithresh SAY_AGGRO1'), -(-1545019,'I despise all of your kind!',10393,1,0,'kalithresh SAY_AGGRO2'), -(-1545020,'Ba\'ahntha sol\'dorei!',10394,1,0,'kalithresh SAY_AGGRO3'), -(-1545021,'Scram, surface filth!',10395,1,0,'kalithresh SAY_SLAY1'), -(-1545022,'Ah ha ha ha ha ha ha!',10396,1,0,'kalithresh SAY_SLAY2'), -(-1545023,'For her Excellency... for... Vashj!',10397,1,0,'kalithresh SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1545000, 'Surge forth my pets!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10360, 1, 0, 0, 'thespia SAY_SUMMON'), +(-1545001, 'The depths will consume you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10361, 1, 0, 0, 'thespia SAY_AGGRO_1'), +(-1545002, 'Meet your doom, surface dwellers!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10362, 1, 0, 0, 'thespia SAY_AGGRO_2'), +(-1545003, 'You will drown in blood!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10363, 1, 0, 0, 'thespia SAY_AGGRO_3'), +(-1545004, 'To the depths of oblivion with you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10364, 1, 0, 0, 'thespia SAY_SLAY_1'), +(-1545005, 'For my lady and master!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10365, 1, 0, 0, 'thespia SAY_SLAY_2'), +(-1545006, 'Our matron will be.. the end of.. you..', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10366, 1, 0, 0, 'thespia SAY_DEAD'), +(-1545007, 'I''m bringin'' the pain!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10367, 1, 0, 0, 'mekgineer SAY_MECHANICS'), +(-1545008, 'You''re in for a world of hurt!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10368, 1, 0, 0, 'mekgineer SAY_AGGRO_1'), +(-1545009, 'Eat hot metal, scumbag!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10369, 1, 0, 0, 'mekgineer SAY_AGGRO_2'), +(-1545010, 'I''ll come over there!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10370, 1, 0, 0, 'mekgineer SAY_AGGRO_3'), +(-1545011, 'I''m bringin'' the pain!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10371, 1, 0, 0, 'mekgineer SAY_AGGRO_4'), +(-1545012, 'You just got served, punk!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10372, 1, 0, 0, 'mekgineer SOUND_SLAY_1'), +(-1545013, 'I own you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10373, 1, 0, 0, 'mekgineer SOUND_SLAY_2'), +(-1545014, 'Have fun dyin'', cupcake!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10374, 1, 0, 0, 'mekgineer SOUND_SLAY_3'), +(-1545015, 'Mommy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10375, 1, 0, 0, 'mekgineer SAY_DEATH'), +(-1545016, 'You deem yourselves worthy simply because you bested my guards? Our work here will not be compromised!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10390, 1, 0, 0, 'kalithresh SAY_INTRO'), +(-1545017, 'This is not nearly over...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10391, 1, 0, 0, 'kalithresh SAY_REGEN'), +(-1545018, 'Your head will roll!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10392, 1, 0, 0, 'kalithresh SAY_AGGRO1'), +(-1545019, 'I despise all of your kind!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10393, 1, 0, 0, 'kalithresh SAY_AGGRO2'), +(-1545020, 'Ba''ahntha sol''dorei!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10394, 1, 0, 0, 'kalithresh SAY_AGGRO3'), +(-1545021, 'Scram, surface filth!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10395, 1, 0, 0, 'kalithresh SAY_SLAY1'), +(-1545022, 'Ah ha ha ha ha ha ha!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10396, 1, 0, 0, 'kalithresh SAY_SLAY2'), +(-1545023, 'For her Excellency... for... Vashj!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10397, 1, 0, 0, 'kalithresh SAY_DEATH'); -- -1 546 000 THE UNDERBOG -- -1 547 000 THE SLAVE PENS -- -1 548 000 SERPENTSHRINE CAVERN -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1548000,'I cannot allow you to interfere!',11289,1,0,'hydross SAY_AGGRO'), -(-1548001,'Better, much better.',11290,1,0,'hydross SAY_SWITCH_TO_CLEAN'), -(-1548002,'They have forced me to this...',11291,1,0,'hydross SAY_CLEAN_SLAY1'), -(-1548003,'I have no choice.',11292,1,0,'hydross SAY_CLEAN_SLAY2'), -(-1548004,'I am... released...',11293,1,0,'hydross SAY_CLEAN_DEATH'), -(-1548005,'Aaghh, the poison...',11297,1,0,'hydross SAY_SWITCH_TO_CORRUPT'), -(-1548006,'I will purge you from this place.',11298,1,0,'hydross SAY_CORRUPT_SLAY1'), -(-1548007,'You are no better than they!',11299,1,0,'hydross SAY_CORRUPT_SLAY2'), -(-1548008,'You are the disease, not I',11300,1,0,'hydross SAY_CORRUPT_DEATH'), - -(-1548009,'Finally my banishment ends!',11312,1,0,'leotheras SAY_AGGRO'), -(-1548010,'Be gone trifling elf. I\'m in control now.',11304,1,0,'leotheras SAY_SWITCH_TO_DEMON'), -(-1548011,'We all have our demons...',11305,1,0,'leotheras SAY_INNER_DEMONS'), -(-1548012,'I have no equal.',11306,1,0,'leotheras SAY_DEMON_SLAY1'), -(-1548013,'Perish, mortal.',11307,1,0,'leotheras SAY_DEMON_SLAY2'), -(-1548014,'Yes, YES! Ahahah!',11308,1,0,'leotheras SAY_DEMON_SLAY3'), -(-1548015,'Kill! KILL!',11314,1,0,'leotheras SAY_NIGHTELF_SLAY1'), -(-1548016,'That\'s right! Yes!',11315,1,0,'leotheras SAY_NIGHTELF_SLAY2'), -(-1548017,'Who\'s the master now?',11316,1,0,'leotheras SAY_NIGHTELF_SLAY3'), -(-1548018,'No! NO! What have you done?! I am the master, do you hear me? I... aaghh... Can\'t... contain him...',11313,1,0,'leotheras SAY_FINAL_FORM'), -(-1548019,'At last I am liberated. It has been too long since I have tasted true freedom!',11309,1,0,'leotheras SAY_FREE'), -(-1548020,'You cannot kill me! Fools, I\'ll be back! I\'ll... aarghh...',11317,1,0,'leotheras SAY_DEATH'), - -(-1548021,'Guards, attention! We have visitors...',11277,1,0,'karathress SAY_AGGRO'), -(-1548022,'Your overconfidence will be your undoing! Guards, lend me your strength!',11278,1,0,'karathress SAY_GAIN_BLESSING'), -(-1548023,'Go on, kill them! I\'ll be the better for it!',11279,1,0,'karathress SAY_GAIN_ABILITY1'), -(-1548024,'I am more powerful than ever!',11280,1,0,'karathress SAY_GAIN_ABILITY2'), -(-1548025,'More knowledge, more power!',11281,1,0,'karathress SAY_GAIN_ABILITY3'), -(-1548026,'Land-dwelling scum!',11282,1,0,'karathress SAY_SLAY1'), -(-1548027,'Alana be\'lendor!',11283,1,0,'karathress SAY_SLAY2'), -(-1548028,'I am rid of you.',11284,1,0,'karathress SAY_SLAY3'), -(-1548029,'Her ... excellency ... awaits!',11285,1,0,'karathress SAY_DEATH'), - -(-1548030,'Flood of the deep, take you!',11321,1,0,'morogrim SAY_AGGRO'), -(-1548031,'By the Tides, kill them at once!',11322,1,0,'morogrim SAY_SUMMON1'), -(-1548032,'Destroy them my subjects!',11323,1,0,'morogrim SAY_SUMMON2'), -(-1548033,'There is nowhere to hide!',11324,1,0,'morogrim SAY_SUMMON_BUBL1'), -(-1548034,'Soon it will be finished!',11325,1,0,'morogrim SAY_SUMMON_BUBL2'), -(-1548035,'It is done!',11326,1,0,'morogrim SAY_SLAY1'), -(-1548036,'Strugging only makes it worse.',11327,1,0,'morogrim SAY_SLAY2'), -(-1548037,'Only the strong survive.',11328,1,0,'morogrim SAY_SLAY3'), -(-1548038,'Great... currents of... Ageon.',11329,1,0,'morogrim SAY_DEATH'), -(-1548039,'sends his enemies to their watery graves!',0,2,0,'morogrim EMOTE_WATERY_GRAVE'), -(-1548040,'The violent earthquake has alerted nearby murlocs!',0,3,0,'morogrim EMOTE_EARTHQUAKE'), -(-1548041,'summons Watery Globules!',0,2,0,'morogrim EMOTE_WATERY_GLOBULES'), - -(-1548042,'Water is life. It has become a rare commodity here in Outland. A commodity that we alone shall control. We are the Highborne, and the time has come at last for us to retake our rightful place in the world!',11531,1,0,'vashj SAY_INTRO'), -(-1548043,'I\'ll split you from stem to stern!',11532,1,0,'vashj SAY_AGGRO1'), -(-1548044,'Victory to Lord Illidan!',11533,1,0,'vashj SAY_AGGRO2'), -(-1548045,'I spit on you, surface filth!',11534,1,0,'vashj SAY_AGGRO3'), -(-1548046,'Death to the outsiders!',11535,1,0,'vashj SAY_AGGRO4'), -(-1548047,'I did not wish to lower myself by engaging your kind, but you leave me little choice!',11538,1,0,'vashj SAY_PHASE1'), -(-1548048,'The time is now! Leave none standing!',11539,1,0,'vashj SAY_PHASE2'), -(-1548049,'You may want to take cover.',11540,1,0,'vashj SAY_PHASE3'), -(-1548050,'Straight to the heart!',11536,1,0,'vashj SAY_BOWSHOT1'), -(-1548051,'Seek your mark!',11537,1,0,'vashj SAY_BOWSHOT2'), -(-1548052,'Your time ends now!',11541,1,0,'vashj SAY_SLAY1'), -(-1548053,'You have failed!',11542,1,0,'vashj SAY_SLAY2'), -(-1548054,'Be\'lamere an\'delay',11543,1,0,'vashj SAY_SLAY3'), -(-1548055,'Lord Illidan, I... I am... sorry.',11544,1,0,'vashj SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1548000, 'I cannot allow you to interfere!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11289, 1, 0, 0, 'hydross SAY_AGGRO'), +(-1548001, 'Better, much better.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11290, 1, 0, 0, 'hydross SAY_SWITCH_TO_CLEAN'), +(-1548002, 'They have forced me to this...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11291, 1, 0, 0, 'hydross SAY_CLEAN_SLAY1'), +(-1548003, 'I have no choice.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11292, 1, 0, 0, 'hydross SAY_CLEAN_SLAY2'), +(-1548004, 'I am... released...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11293, 1, 0, 0, 'hydross SAY_CLEAN_DEATH'), +(-1548005, 'Aaghh, the poison...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11297, 1, 0, 0, 'hydross SAY_SWITCH_TO_CORRUPT'), +(-1548006, 'I will purge you from this place.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11298, 1, 0, 0, 'hydross SAY_CORRUPT_SLAY1'), +(-1548007, 'You are no better than they!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11299, 1, 0, 0, 'hydross SAY_CORRUPT_SLAY2'), +(-1548008, 'You are the disease, not I', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11300, 1, 0, 0, 'hydross SAY_CORRUPT_DEATH'), +(-1548009, 'Finally my banishment ends!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11312, 1, 0, 0, 'leotheras SAY_AGGRO'), +(-1548010, 'Be gone trifling elf. I''m in control now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11304, 1, 0, 0, 'leotheras SAY_SWITCH_TO_DEMON'), +(-1548011, 'We all have our demons...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11305, 1, 0, 0, 'leotheras SAY_INNER_DEMONS'), +(-1548012, 'I have no equal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11306, 1, 0, 0, 'leotheras SAY_DEMON_SLAY1'), +(-1548013, 'Perish, mortal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11307, 1, 0, 0, 'leotheras SAY_DEMON_SLAY2'), +(-1548014, 'Yes, YES! Ahahah!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11308, 1, 0, 0, 'leotheras SAY_DEMON_SLAY3'), +(-1548015, 'Kill! KILL!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11314, 1, 0, 0, 'leotheras SAY_NIGHTELF_SLAY1'), +(-1548016, 'That''s right! Yes!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11315, 1, 0, 0, 'leotheras SAY_NIGHTELF_SLAY2'), +(-1548017, 'Who''s the master now?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11316, 1, 0, 0, 'leotheras SAY_NIGHTELF_SLAY3'), +(-1548018, 'No! NO! What have you done?! I am the master, do you hear me? I... aaghh... Can''t... contain him...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11313, 1, 0, 0, 'leotheras SAY_FINAL_FORM'), +(-1548019, 'At last I am liberated. It has been too long since I have tasted true freedom!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11309, 1, 0, 0, 'leotheras SAY_FREE'), +(-1548020, 'You cannot kill me! Fools, I''ll be back! I''ll... aarghh...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11317, 1, 0, 0, 'leotheras SAY_DEATH'), +(-1548021, 'Guards, attention! We have visitors...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11277, 1, 0, 0, 'karathress SAY_AGGRO'), +(-1548022, 'Your overconfidence will be your undoing! Guards, lend me your strength!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11278, 1, 0, 0, 'karathress SAY_GAIN_BLESSING'), +(-1548023, 'Go on, kill them! I''ll be the better for it!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11279, 1, 0, 0, 'karathress SAY_GAIN_ABILITY1'), +(-1548024, 'I am more powerful than ever!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11280, 1, 0, 0, 'karathress SAY_GAIN_ABILITY2'), +(-1548025, 'More knowledge, more power!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11281, 1, 0, 0, 'karathress SAY_GAIN_ABILITY3'), +(-1548026, 'Land-dwelling scum!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11282, 1, 0, 0, 'karathress SAY_SLAY1'), +(-1548027, 'Alana be''lendor!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11283, 1, 0, 0, 'karathress SAY_SLAY2'), +(-1548028, 'I am rid of you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11284, 1, 0, 0, 'karathress SAY_SLAY3'), +(-1548029, 'Her ... excellency ... awaits!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11285, 1, 0, 0, 'karathress SAY_DEATH'), +(-1548030, 'Flood of the deep, take you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11321, 1, 0, 0, 'morogrim SAY_AGGRO'), +(-1548031, 'By the Tides, kill them at once!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11322, 1, 0, 0, 'morogrim SAY_SUMMON1'), +(-1548032, 'Destroy them my subjects!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11323, 1, 0, 0, 'morogrim SAY_SUMMON2'), +(-1548033, 'There is nowhere to hide!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11324, 1, 0, 0, 'morogrim SAY_SUMMON_BUBL1'), +(-1548034, 'Soon it will be finished!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11325, 1, 0, 0, 'morogrim SAY_SUMMON_BUBL2'), +(-1548035, 'It is done!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11326, 1, 0, 0, 'morogrim SAY_SLAY1'), +(-1548036, 'Strugging only makes it worse.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11327, 1, 0, 0, 'morogrim SAY_SLAY2'), +(-1548037, 'Only the strong survive.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11328, 1, 0, 0, 'morogrim SAY_SLAY3'), +(-1548038, 'Great... currents of... Ageon.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11329, 1, 0, 0, 'morogrim SAY_DEATH'), +(-1548039, 'sends his enemies to their watery graves!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'morogrim EMOTE_WATERY_GRAVE'), +(-1548040, 'The violent earthquake has alerted nearby murlocs!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'morogrim EMOTE_EARTHQUAKE'), +(-1548041, 'summons Watery Globules!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'morogrim EMOTE_WATERY_GLOBULES'), +(-1548042, 'Water is life. It has become a rare commodity here in Outland. A commodity that we alone shall control. We are the Highborne, and the time has come at last for us to retake our rightful place in the world!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11531, 1, 0, 0, 'vashj SAY_INTRO'), +(-1548043, 'I''ll split you from stem to stern!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11532, 1, 0, 0, 'vashj SAY_AGGRO1'), +(-1548044, 'Victory to Lord Illidan!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11533, 1, 0, 0, 'vashj SAY_AGGRO2'), +(-1548045, 'I spit on you, surface filth!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11534, 1, 0, 0, 'vashj SAY_AGGRO3'), +(-1548046, 'Death to the outsiders!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11535, 1, 0, 0, 'vashj SAY_AGGRO4'), +(-1548047, 'I did not wish to lower myself by engaging your kind, but you leave me little choice!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11538, 1, 0, 0, 'vashj SAY_PHASE1'), +(-1548048, 'The time is now! Leave none standing!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11539, 1, 0, 0, 'vashj SAY_PHASE2'), +(-1548049, 'You may want to take cover.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11540, 1, 0, 0, 'vashj SAY_PHASE3'), +(-1548050, 'Straight to the heart!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11536, 1, 0, 0, 'vashj SAY_BOWSHOT1'), +(-1548051, 'Seek your mark!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11537, 1, 0, 0, 'vashj SAY_BOWSHOT2'), +(-1548052, 'Your time ends now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11541, 1, 0, 0, 'vashj SAY_SLAY1'), +(-1548053, 'You have failed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11542, 1, 0, 0, 'vashj SAY_SLAY2'), +(-1548054, 'Be''lamere an''delay', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11543, 1, 0, 0, 'vashj SAY_SLAY3'), +(-1548055, 'Lord Illidan, I... I am... sorry.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11544, 1, 0, 0, 'vashj SAY_DEATH'); -- -1 550 000 THE EYE -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1550000,'Alert, you are marked for extermination!',11213,1,0,'voidreaver SAY_AGGRO'), -(-1550001,'Extermination, successful.',11215,1,0,'voidreaver SAY_SLAY1'), -(-1550002,'Imbecile life form, no longer functional.',11216,1,0,'voidreaver SAY_SLAY2'), -(-1550003,'Threat neutralized.',11217,1,0,'voidreaver SAY_SLAY3'), -(-1550004,'Systems... shutting... down...',11214,1,0,'voidreaver SAY_DEATH'), -(-1550005,'Alternative measure commencing...',11218,1,0,'voidreaver SAY_POUNDING1'), -(-1550006,'Calculating force parameters...',11219,1,0,'voidreaver SAY_POUNDING2'), - -(-1550007,'Tal anu\'men no Sin\'dorei!',11134,1,0,'solarian SAY_AGGRO'), -(-1550008,'Ha ha ha! You are hopelessly outmatched!',11139,1,0,'solarian SAY_SUMMON1'), -(-1550009,'I will crush your delusions of grandeur!',11140,1,0,'solarian SAY_SUMMON2'), -(-1550010,'Your soul belongs to the Abyss!',11136,1,0,'solarian SAY_KILL1'), -(-1550011,'By the blood of the Highborne!',11137,1,0,'solarian SAY_KILL2'), -(-1550012,'For the Sunwell!',11138,1,0,'solarian SAY_KILL3'), -(-1550013,'The warmth of the sun... awaits.',11135,1,0,'solarian SAY_DEATH'), -(-1550014,'Enough of this! Now I call upon the fury of the cosmos itself.',0,1,0,'solarian SAY_VOIDA'), -(-1550015,'I become ONE... with the VOID!',0,1,0,'solarian SAY_VOIDB'), - -(-1550016,'Energy. Power. My people are addicted to it... a dependence made manifest after the Sunwell was destroyed. Welcome... to the future. A pity you are too late to stop it. No one can stop me now! Selama ashal\'anore!',11256,1,0,'kaelthas SAY_INTRO'), -(-1550017,'Capernian will see to it that your stay here is a short one.',11257,1,0,'kaelthas SAY_INTRO_CAPERNIAN'), -(-1550018,'Well done, you have proven worthy to test your skills against my master engineer, Telonicus.',11258,1,0,'kaelthas SAY_INTRO_TELONICUS'), -(-1550019,'Let us see how your nerves hold up against the Darkener, Thaladred.',11259,1,0,'kaelthas SAY_INTRO_THALADRED'), -(-1550020,'You have persevered against some of my best advisors... but none can withstand the might of the Blood Hammer. Behold, Lord Sanguinar!',11260,1,0,'kaelthas SAY_INTRO_SANGUINAR'), -(-1550021,'As you see, I have many weapons in my arsenal...',11261,1,0,'kaelthas SAY_PHASE2_WEAPON'), -(-1550022,'Perhaps I underestimated you. It would be unfair to make you fight all four advisors at once, but... fair treatment was never shown to my people. I\'m just returning the favor.',11262,1,0,'kaelthas SAY_PHASE3_ADVANCE'), -(-1550023,'Alas, sometimes one must take matters into one\'s own hands. Balamore shanal!',11263,1,0,'kaelthas SAY_PHASE4_INTRO2'), -(-1550024,'I have not come this far to be stopped! The future I have planned will not be jeopardized! Now you will taste true power!!',11273,1,0,'kaelthas SAY_PHASE5_NUTS'), -(-1550025,'You will not prevail.',11270,1,0,'kaelthas SAY_SLAY1'), -(-1550026,'You gambled...and lost.',11271,1,0,'kaelthas SAY_SLAY2'), -(-1550027,'This was Child\'s play.',11272,1,0,'kaelthas SAY_SLAY3'), -(-1550028,'Obey me.',11268,1,0,'kaelthas SAY_MINDCONTROL1'), -(-1550029,'Bow to my will.',11269,1,0,'kaelthas SAY_MINDCONTROL2'), -(-1550030,'Let us see how you fare when your world is turned upside down.',11264,1,0,'kaelthas SAY_GRAVITYLAPSE1'), -(-1550031,'Having trouble staying grounded?',11265,1,0,'kaelthas SAY_GRAVITYLAPSE2'), -(-1550032,'Anara\'nel belore!',11267,1,0,'kaelthas SAY_SUMMON_PHOENIX1'), -(-1550033,'By the power of the sun!',11266,1,0,'kaelthas SAY_SUMMON_PHOENIX2'), -(-1550034,'For...Quel...thalas!',11274,1,0,'kaelthas SAY_DEATH'), - -(-1550035,'Prepare yourselves!',11203,1,0,'thaladred SAY_THALADRED_AGGRO'), -(-1550036,'Forgive me, my prince! I have... failed.',11204,1,0,'thaladred SAY_THALADRED_DEATH'), -(-1550037,'sets his gaze on $N!',0,2,0,'thaladred EMOTE_THALADRED_GAZE'), - -(-1550038,'Blood for blood!',11152,1,0,'sanguinar SAY_SANGUINAR_AGGRO'), -(-1550039,'NO! I ...will... not...',11153,1,0,'sanguinar SAY_SANGUINAR_DEATH'), - -(-1550040,'The sin\'dore reign supreme!',11117,1,0,'capernian SAY_CAPERNIAN_AGGRO'), -(-1550041,'This is not over!',11118,1,0,'capernian SAY_CAPERNIAN_DEATH'), - -(-1550042,'Anar\'alah belore!',11157,1,0,'telonicus SAY_TELONICUS_AGGRO'), -(-1550043,'More perils... await',11158,1,0,'telonicus SAY_TELONICUS_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1550000, 'Alert, you are marked for extermination!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11213, 1, 0, 0, 'voidreaver SAY_AGGRO'), +(-1550001, 'Extermination, successful.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11215, 1, 0, 0, 'voidreaver SAY_SLAY1'), +(-1550002, 'Imbecile life form, no longer functional.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11216, 1, 0, 0, 'voidreaver SAY_SLAY2'), +(-1550003, 'Threat neutralized.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11217, 1, 0, 0, 'voidreaver SAY_SLAY3'), +(-1550004, 'Systems... shutting... down...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11214, 1, 0, 0, 'voidreaver SAY_DEATH'), +(-1550005, 'Alternative measure commencing...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11218, 1, 0, 0, 'voidreaver SAY_POUNDING1'), +(-1550006, 'Calculating force parameters...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11219, 1, 0, 0, 'voidreaver SAY_POUNDING2'), +(-1550007, 'Tal anu''men no Sin''dorei!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11134, 1, 0, 0, 'solarian SAY_AGGRO'), +(-1550008, 'Ha ha ha! You are hopelessly outmatched!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11139, 1, 0, 0, 'solarian SAY_SUMMON1'), +(-1550009, 'I will crush your delusions of grandeur!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11140, 1, 0, 0, 'solarian SAY_SUMMON2'), +(-1550010, 'Your soul belongs to the Abyss!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11136, 1, 0, 0, 'solarian SAY_KILL1'), +(-1550011, 'By the blood of the Highborne!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11137, 1, 0, 0, 'solarian SAY_KILL2'), +(-1550012, 'For the Sunwell!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11138, 1, 0, 0, 'solarian SAY_KILL3'), +(-1550013, 'The warmth of the sun... awaits.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11135, 1, 0, 0, 'solarian SAY_DEATH'), +(-1550014, 'Enough of this! Now I call upon the fury of the cosmos itself.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'solarian SAY_VOIDA'), +(-1550015, 'I become ONE... with the VOID!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'solarian SAY_VOIDB'), +(-1550016, 'Energy. Power. My people are addicted to it... a dependence made manifest after the Sunwell was destroyed. Welcome... to the future. A pity you are too late to stop it. No one can stop me now! Selama ashal''anore!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11256, 1, 0, 0, 'kaelthas SAY_INTRO'), +(-1550017, 'Capernian will see to it that your stay here is a short one.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11257, 1, 0, 0, 'kaelthas SAY_INTRO_CAPERNIAN'), +(-1550018, 'Well done, you have proven worthy to test your skills against my master engineer, Telonicus.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11258, 1, 0, 0, 'kaelthas SAY_INTRO_TELONICUS'), +(-1550019, 'Let us see how your nerves hold up against the Darkener, Thaladred.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11259, 1, 0, 0, 'kaelthas SAY_INTRO_THALADRED'), +(-1550020, 'You have persevered against some of my best advisors... but none can withstand the might of the Blood Hammer. Behold, Lord Sanguinar!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11260, 1, 0, 0, 'kaelthas SAY_INTRO_SANGUINAR'), +(-1550021, 'As you see, I have many weapons in my arsenal...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11261, 1, 0, 0, 'kaelthas SAY_PHASE2_WEAPON'), +(-1550022, 'Perhaps I underestimated you. It would be unfair to make you fight all four advisors at once, but... fair treatment was never shown to my people. I''m just returning the favor.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11262, 1, 0, 0, 'kaelthas SAY_PHASE3_ADVANCE'), +(-1550023, 'Alas, sometimes one must take matters into one''s own hands. Balamore shanal!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11263, 1, 0, 0, 'kaelthas SAY_PHASE4_INTRO2'), +(-1550024, 'I have not come this far to be stopped! The future I have planned will not be jeopardized! Now you will taste true power!!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11273, 1, 0, 0, 'kaelthas SAY_PHASE5_NUTS'), +(-1550025, 'You will not prevail.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11270, 1, 0, 0, 'kaelthas SAY_SLAY1'), +(-1550026, 'You gambled...and lost.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11271, 1, 0, 0, 'kaelthas SAY_SLAY2'), +(-1550027, 'This was Child''s play.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11272, 1, 0, 0, 'kaelthas SAY_SLAY3'), +(-1550028, 'Obey me.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11268, 1, 0, 0, 'kaelthas SAY_MINDCONTROL1'), +(-1550029, 'Bow to my will.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11269, 1, 0, 0, 'kaelthas SAY_MINDCONTROL2'), +(-1550030, 'Let us see how you fare when your world is turned upside down.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11264, 1, 0, 0, 'kaelthas SAY_GRAVITYLAPSE1'), +(-1550031, 'Having trouble staying grounded?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11265, 1, 0, 0, 'kaelthas SAY_GRAVITYLAPSE2'), +(-1550032, 'Anara''nel belore!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11267, 1, 0, 0, 'kaelthas SAY_SUMMON_PHOENIX1'), +(-1550033, 'By the power of the sun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11266, 1, 0, 0, 'kaelthas SAY_SUMMON_PHOENIX2'), +(-1550034, 'For...Quel...thalas!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11274, 1, 0, 0, 'kaelthas SAY_DEATH'), +(-1550035, 'Prepare yourselves!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11203, 1, 0, 0, 'thaladred SAY_THALADRED_AGGRO'), +(-1550036, 'Forgive me, my prince! I have... failed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11204, 1, 0, 0, 'thaladred SAY_THALADRED_DEATH'), +(-1550037, 'sets his gaze on $N!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'thaladred EMOTE_THALADRED_GAZE'), +(-1550038, 'Blood for blood!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11152, 1, 0, 0, 'sanguinar SAY_SANGUINAR_AGGRO'), +(-1550039, 'NO! I ...will... not...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11153, 1, 0, 0, 'sanguinar SAY_SANGUINAR_DEATH'), +(-1550040, 'The sin''dore reign supreme!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11117, 1, 0, 0, 'capernian SAY_CAPERNIAN_AGGRO'), +(-1550041, 'This is not over!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11118, 1, 0, 0, 'capernian SAY_CAPERNIAN_DEATH'), +(-1550042, 'Anar''alah belore!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11157, 1, 0, 0, 'telonicus SAY_TELONICUS_AGGRO'), +(-1550043, 'More perils... await', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11158, 1, 0, 0, 'telonicus SAY_TELONICUS_DEATH'); -- -1 552 000 THE ARCATRAZ -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1552000,'It is a small matter to control the mind of the weak... for I bear allegiance to powers untouched by time, unmoved by fate. No force on this world or beyond harbors the strength to bend our knee... not even the mighty Legion!',11122,1,0,'skyriss SAY_INTRO'), -(-1552001,'Bear witness to the agent of your demise!',11123,1,0,'skyriss SAY_AGGRO'), -(-1552002,'Your fate is written!',11124,1,0,'skyriss SAY_KILL_1'), -(-1552003,'The chaos I have sown here is but a taste...',11125,1,0,'skyriss SAY_KILL_2'), -(-1552004,'You will do my bidding, weakling.',11127,1,0,'skyriss SAY_MIND_1'), -(-1552005,'Your will is no longer your own.',11128,1,0,'skyriss SAY_MIND_2'), -(-1552006,'Flee in terror!',11129,1,0,'skyriss SAY_FEAR_1'), -(-1552007,'I will show you horrors undreamed of!',11130,1,0,'skyriss SAY_FEAR_2'), -(-1552008,'We span the universe, as countless as the stars!',11131,1,0,'skyriss SAY_IMAGE'), -(-1552009,'I am merely one of... infinite multitudes.',11126,1,0,'skyriss SAY_DEATH'), - -(-1552010,'Where in Bonzo\'s brass buttons am I? And who are-- yaaghh, that\'s one mother of a headache!',11171,1,0,'millhouse SAY_INTRO_1'), -(-1552011,'\"Lowly\"? I don\'t care who you are friend, no one refers to the mighty Millhouse Manastorm as \"Lowly\"! I have no idea what goes on here, but I will gladly join your fight against this impudent imbecile! Prepare to defend yourself, cretin!',11172,1,0,'millhouse SAY_INTRO_2'), -(-1552012,'I just need to get some things ready first. You guys go ahead and get started. I need to summon up some water...',11173,1,0,'millhouse SAY_WATER'), -(-1552013,'Fantastic! Next, some protective spells. Yes! Now we\'re cookin\'',11174,1,0,'millhouse SAY_BUFFS'), -(-1552014,'And of course i\'ll need some mana. You guys are gonna love this, just wait.',11175,1,0,'millhouse SAY_DRINK'), -(-1552015,'Aaalllriiiight!! Who ordered up an extra large can of whoop-ass?',11176,1,0,'millhouse SAY_READY'), -(-1552016,'I didn\'t even break a sweat on that one.',11177,1,0,'millhouse SAY_KILL_1'), -(-1552017,'You guys, feel free to jump in anytime.',11178,1,0,'millhouse SAY_KILL_2'), -(-1552018,'I\'m gonna light you up, sweet cheeks!',11179,1,0,'millhouse SAY_PYRO'), -(-1552019,'Ice, ice, baby!',11180,1,0,'millhouse SAY_ICEBLOCK'), -(-1552020,'Heal me! Oh, for the love of all that is holy, HEAL me! I\'m dying!',11181,1,0,'millhouse SAY_LOWHP'), -(-1552021,'You\'ll be hearing from my lawyer...',11182,1,0,'millhouse SAY_DEATH'), -(-1552022,'Who\'s bad? Who\'s bad? That\'s right: we bad!',11183,1,0,'millhouse SAY_COMPLETE'), - -(-1552023,'I knew the prince would be angry but, I... I have not been myself. I had to let them out! The great one speaks to me, you see. Wait--outsiders. Kael\'thas did not send you! Good... I\'ll just tell the prince you released the prisoners!',11222,1,0,'mellichar YELL_INTRO1'), -(-1552024,'The naaru kept some of the most dangerous beings in existence here in these cells. Let me introduce you to another...',11223,1,0,'mellichar YELL_INTRO2'), -(-1552025,'Yes, yes... another! Your will is mine!',11224,1,0,'mellichar YELL_RELEASE1'), -(-1552026,'Behold another terrifying creature of incomprehensible power!',11225,1,0,'mellichar YELL_RELEASE2A'), -(-1552027,'What is this? A lowly gnome? I will do better, O\'great one.',11226,1,0,'mellichar YELL_RELEASE2B'), -(-1552028,'Anarchy! Bedlam! Oh, you are so wise! Yes, I see it now, of course!',11227,1,0,'mellichar YELL_RELEASE3'), -(-1552029,'One final cell remains. Yes, O\'great one, right away!',11228,1,0,'mellichar YELL_RELEASE4'), -(-1552030,'Welcome, O\'great one. I am your humble servant.',11229,1,0,'mellichar YELL_WELCOME'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1552000, 'It is a small matter to control the mind of the weak... for I bear allegiance to powers untouched by time, unmoved by fate. No force on this world or beyond harbors the strength to bend our knee... not even the mighty Legion!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11122, 1, 0, 0, 'skyriss SAY_INTRO'), +(-1552001, 'Bear witness to the agent of your demise!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11123, 1, 0, 0, 'skyriss SAY_AGGRO'), +(-1552002, 'Your fate is written!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11124, 1, 0, 0, 'skyriss SAY_KILL_1'), +(-1552003, 'The chaos I have sown here is but a taste...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11125, 1, 0, 0, 'skyriss SAY_KILL_2'), +(-1552004, 'You will do my bidding, weakling.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11127, 1, 0, 0, 'skyriss SAY_MIND_1'), +(-1552005, 'Your will is no longer your own.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11128, 1, 0, 0, 'skyriss SAY_MIND_2'), +(-1552006, 'Flee in terror!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11129, 1, 0, 0, 'skyriss SAY_FEAR_1'), +(-1552007, 'I will show you horrors undreamed of!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11130, 1, 0, 0, 'skyriss SAY_FEAR_2'), +(-1552008, 'We span the universe, as countless as the stars!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11131, 1, 0, 0, 'skyriss SAY_IMAGE'), +(-1552009, 'I am merely one of... infinite multitudes.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11126, 1, 0, 0, 'skyriss SAY_DEATH'), +(-1552010, 'Where in Bonzo''s brass buttons am I? And who are-- yaaghh, that''s one mother of a headache!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11171, 1, 0, 0, 'millhouse SAY_INTRO_1'), +(-1552011, '"Lowly"? I don''t care who you are friend, no one refers to the mighty Millhouse Manastorm as "Lowly"! I have no idea what goes on here, but I will gladly join your fight against this impudent imbecile! Prepare to defend yourself, cretin!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11172, 1, 0, 0, 'millhouse SAY_INTRO_2'), +(-1552012, 'I just need to get some things ready first. You guys go ahead and get started. I need to summon up some water...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11173, 1, 0, 0, 'millhouse SAY_WATER'), +(-1552013, 'Fantastic! Next, some protective spells. Yes! Now we''re cookin''', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11174, 1, 0, 0, 'millhouse SAY_BUFFS'), +(-1552014, 'And of course i''ll need some mana. You guys are gonna love this, just wait.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11175, 1, 0, 0, 'millhouse SAY_DRINK'), +(-1552015, 'Aaalllriiiight!! Who ordered up an extra large can of whoop-ass?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11176, 1, 0, 0, 'millhouse SAY_READY'), +(-1552016, 'I didn''t even break a sweat on that one.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11177, 1, 0, 0, 'millhouse SAY_KILL_1'), +(-1552017, 'You guys, feel free to jump in anytime.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11178, 1, 0, 0, 'millhouse SAY_KILL_2'), +(-1552018, 'I''m gonna light you up, sweet cheeks!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11179, 1, 0, 0, 'millhouse SAY_PYRO'), +(-1552019, 'Ice, ice, baby!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11180, 1, 0, 0, 'millhouse SAY_ICEBLOCK'), +(-1552020, 'Heal me! Oh, for the love of all that is holy, HEAL me! I''m dying!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11181, 1, 0, 0, 'millhouse SAY_LOWHP'), +(-1552021, 'You''ll be hearing from my lawyer...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11182, 1, 0, 0, 'millhouse SAY_DEATH'), +(-1552022, 'Who''s bad? Who''s bad? That''s right: we bad!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11183, 1, 0, 0, 'millhouse SAY_COMPLETE'), +(-1552023, 'I knew the prince would be angry but, I... I have not been myself. I had to let them out! The great one speaks to me, you see. Wait--outsiders. Kael''thas did not send you! Good... I''ll just tell the prince you released the prisoners!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11222, 1, 0, 0, 'mellichar YELL_INTRO1'), +(-1552024, 'The naaru kept some of the most dangerous beings in existence here in these cells. Let me introduce you to another...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11223, 1, 0, 0, 'mellichar YELL_INTRO2'), +(-1552025, 'Yes, yes... another! Your will is mine!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11224, 1, 0, 0, 'mellichar YELL_RELEASE1'), +(-1552026, 'Behold another terrifying creature of incomprehensible power!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11225, 1, 0, 0, 'mellichar YELL_RELEASE2A'), +(-1552027, 'What is this? A lowly gnome? I will do better, O''great one.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11226, 1, 0, 0, 'mellichar YELL_RELEASE2B'), +(-1552028, 'Anarchy! Bedlam! Oh, you are so wise! Yes, I see it now, of course!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11227, 1, 0, 0, 'mellichar YELL_RELEASE3'), +(-1552029, 'One final cell remains. Yes, O''great one, right away!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11228, 1, 0, 0, 'mellichar YELL_RELEASE4'), +(-1552030, 'Welcome, O''great one. I am your humble servant.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11229, 1, 0, 0, 'mellichar YELL_WELCOME'); -- -1 553 000 THE BOTANICA -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1553000,'What are you doing? These specimens are very delicate!',11144,1,0,'freywinn SAY_AGGRO'), -(-1553001,'Your life cycle is now concluded!',11145,1,0,'freywinn SAY_KILL_1'), -(-1553002,'You will feed the worms.',11146,1,0,'freywinn SAY_KILL_2'), -(-1553003,'Endorel aluminor!',11147,1,0,'freywinn SAY_TREE_1'), -(-1553004,'Nature bends to my will!',11148,1,0,'freywinn SAY_TREE_2'), -(-1553005,'The specimens...must be preserved.',11149,1,0,'freywinn SAY_DEATH'), - -(-1553006,'emits a strange noise.',0,2,0,'laj EMOTE_SUMMON'), - -(-1553007,'Who disturbs this sanctuary?',11230,1,0,'warp SAY_AGGRO'), -(-1553008,'You must die! But wait: this does not--No, no... you must die!',11231,1,0,'warp SAY_SLAY_1'), -(-1553009,'What am I doing? Why do I...',11232,1,0,'warp SAY_SLAY_2'), -(-1553010,'Children, come to me!',11233,1,0,'warp SAY_SUMMON_1'), -(-1553011,'Maybe this is not--No, we fight! Come to my aid.',11234,1,0,'warp SAY_SUMMON_2'), -(-1553012,'So... confused. Do not... belong here!',11235,1,0,'warp SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1553000, 'What are you doing? These specimens are very delicate!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11144, 1, 0, 0, 'freywinn SAY_AGGRO'), +(-1553001, 'Your life cycle is now concluded!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11145, 1, 0, 0, 'freywinn SAY_KILL_1'), +(-1553002, 'You will feed the worms.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11146, 1, 0, 0, 'freywinn SAY_KILL_2'), +(-1553003, 'Endorel aluminor!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11147, 1, 0, 0, 'freywinn SAY_TREE_1'), +(-1553004, 'Nature bends to my will!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11148, 1, 0, 0, 'freywinn SAY_TREE_2'), +(-1553005, 'The specimens...must be preserved.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11149, 1, 0, 0, 'freywinn SAY_DEATH'), +(-1553006, 'emits a strange noise.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'laj EMOTE_SUMMON'), +(-1553007, 'Who disturbs this sanctuary?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11230, 1, 0, 0, 'warp SAY_AGGRO'), +(-1553008, 'You must die! But wait: this does not--No, no... you must die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11231, 1, 0, 0, 'warp SAY_SLAY_1'), +(-1553009, 'What am I doing? Why do I...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11232, 1, 0, 0, 'warp SAY_SLAY_2'), +(-1553010, 'Children, come to me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11233, 1, 0, 0, 'warp SAY_SUMMON_1'), +(-1553011, 'Maybe this is not--No, we fight! Come to my aid.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11234, 1, 0, 0, 'warp SAY_SUMMON_2'), +(-1553012, 'So... confused. Do not... belong here!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11235, 1, 0, 0, 'warp SAY_DEATH'); -- -1 554 000 THE MECHANAR -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1554000,'I predict a painful death.',11101,1,0,'gyro SAY_AGGRO'), -(-1554001,'Measure twice; cut once!',11104,1,0,'gyro SAY_SAW_ATTACK1'), -(-1554002,'If my division is correct, you should be quite dead.',11105,1,0,'gyro SAY_SAW_ATTACK2'), -(-1554003,'Your strategy was flawed!',11102,1,0,'gyro SAY_SLAY1'), -(-1554004,'Yes, the only logical outcome.',11103,1,0,'gyro SAY_SLAY2'), -(-1554005,'An unforseen... contingency',11106,1,0,'gyro SAY_DEATH'), - -(-1554006,'You have approximately five seconds to live.',11109,1,0,'ironhand SAY_AGGRO_1'), -(-1554007,'With the precise angle and velocity...',11112,1,0,'ironhand SAY_HAMMER_1'), -(-1554008,'Low tech yet quiet effective!',11113,1,0,'ironhand SAY_HAMMER_2'), -(-1554009,'A foregone conclusion.',11110,1,0,'ironhand SAY_SLAY_1'), -(-1554010,'The processing will continue a schedule!',11111,1,0,'ironhand SAY_SLAY_2'), -(-1554011,'My calculations did not...',11114,1,0,'ironhand SAY_DEATH_1'), -(-1554012,'raises his hammer menacingly...',0,3,0,'ironhand EMOTE_HAMMER'), - -(-1554013,'Don\'t value your life very much, do you?',11186,1,0,'sepethrea SAY_AGGRO'), -(-1554014,'I am not alone.',11191,1,0,'sepethrea SAY_SUMMON'), -(-1554015,'Think you can take the heat?',11189,1,0,'sepethrea SAY_DRAGONS_BREATH_1'), -(-1554016,'Anar\'endal dracon!',11190,1,0,'sepethrea SAY_DRAGONS_BREATH_2'), -(-1554017,'And don\'t come back!',11187,1,0,'sepethrea SAY_SLAY1'), -(-1554018,'En\'dala finel el\'dal',11188,1,0,'sepethrea SAY_SLAY2'), -(-1554019,'Anu... bala belore...alon.',11192,1,0,'sepethrea SAY_DEATH'), - -(-1554020,'We are on a strict timetable. You will not interfere!',11193,1,0,'pathaleon SAY_AGGRO'), -(-1554021,'I\'m looking for a team player...',11197,1,0,'pathaleon SAY_DOMINATION_1'), -(-1554022,'You work for me now!',11198,1,0,'pathaleon SAY_DOMINATION_2'), -(-1554023,'Time to supplement my work force.',11196,1,0,'pathaleon SAY_SUMMON'), -(-1554024,'I prefeer to be hands-on...',11199,1,0,'pathaleon SAY_ENRAGE'), -(-1554025,'A minor inconvenience.',11194,1,0,'pathaleon SAY_SLAY_1'), -(-1554026,'Looks like you lose.',11195,1,0,'pathaleon SAY_SLAY_2'), -(-1554027,'The project will... continue.',11200,1,0,'pathaleon SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1554000, 'I predict a painful death.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11101, 1, 0, 0, 'gyro SAY_AGGRO'), +(-1554001, 'Measure twice; cut once!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11104, 1, 0, 0, 'gyro SAY_SAW_ATTACK1'), +(-1554002, 'If my division is correct, you should be quite dead.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11105, 1, 0, 0, 'gyro SAY_SAW_ATTACK2'), +(-1554003, 'Your strategy was flawed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11102, 1, 0, 0, 'gyro SAY_SLAY1'), +(-1554004, 'Yes, the only logical outcome.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11103, 1, 0, 0, 'gyro SAY_SLAY2'), +(-1554005, 'An unforseen... contingency', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11106, 1, 0, 0, 'gyro SAY_DEATH'), +(-1554006, 'You have approximately five seconds to live.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11109, 1, 0, 0, 'ironhand SAY_AGGRO_1'), +(-1554007, 'With the precise angle and velocity...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11112, 1, 0, 0, 'ironhand SAY_HAMMER_1'), +(-1554008, 'Low tech yet quiet effective!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11113, 1, 0, 0, 'ironhand SAY_HAMMER_2'), +(-1554009, 'A foregone conclusion.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11110, 1, 0, 0, 'ironhand SAY_SLAY_1'), +(-1554010, 'The processing will continue a schedule!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11111, 1, 0, 0, 'ironhand SAY_SLAY_2'), +(-1554011, 'My calculations did not...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11114, 1, 0, 0, 'ironhand SAY_DEATH_1'), +(-1554012, 'raises his hammer menacingly...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'ironhand EMOTE_HAMMER'), +(-1554013, 'Don''t value your life very much, do you?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11186, 1, 0, 0, 'sepethrea SAY_AGGRO'), +(-1554014, 'I am not alone.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11191, 1, 0, 0, 'sepethrea SAY_SUMMON'), +(-1554015, 'Think you can take the heat?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11189, 1, 0, 0, 'sepethrea SAY_DRAGONS_BREATH_1'), +(-1554016, 'Anar''endal dracon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11190, 1, 0, 0, 'sepethrea SAY_DRAGONS_BREATH_2'), +(-1554017, 'And don''t come back!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11187, 1, 0, 0, 'sepethrea SAY_SLAY1'), +(-1554018, 'En''dala finel el''dal', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11188, 1, 0, 0, 'sepethrea SAY_SLAY2'), +(-1554019, 'Anu... bala belore...alon.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11192, 1, 0, 0, 'sepethrea SAY_DEATH'), +(-1554020, 'We are on a strict timetable. You will not interfere!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11193, 1, 0, 0, 'pathaleon SAY_AGGRO'), +(-1554021, 'I''m looking for a team player...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11197, 1, 0, 0, 'pathaleon SAY_DOMINATION_1'), +(-1554022, 'You work for me now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11198, 1, 0, 0, 'pathaleon SAY_DOMINATION_2'), +(-1554023, 'Time to supplement my work force.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11196, 1, 0, 0, 'pathaleon SAY_SUMMON'), +(-1554024, 'I prefeer to be hands-on...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11199, 1, 0, 0, 'pathaleon SAY_ENRAGE'), +(-1554025, 'A minor inconvenience.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11194, 1, 0, 0, 'pathaleon SAY_SLAY_1'), +(-1554026, 'Looks like you lose.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11195, 1, 0, 0, 'pathaleon SAY_SLAY_2'), +(-1554027, 'The project will... continue.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11200, 1, 0, 0, 'pathaleon SAY_DEATH'); -- -1 555 000 SHADOW LABYRINTH -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1555000,'Infidels have invaded the sanctuary! Sniveling pests...You have yet to learn the true meaning of agony!',10473,1,0,'hellmaw SAY_INTRO'), -(-1555001,'Pathetic mortals! You will pay dearly!',10475,1,0,'hellmaw SAY_AGGRO1'), -(-1555002,'I will break you!',10476,1,0,'hellmaw SAY_AGGRO2'), -(-1555003,'Finally! Something to relieve the tedium!',10477,1,0,'hellmaw SAY_AGGRO3'), -(-1555004,'Aid me, you fools, before it\'s too late!',10474,1,0,'hellmaw SAY_HELP'), -(-1555005,'Do you fear death?',10478,1,0,'hellmaw SAY_SLAY1'), -(-1555006,'This is the part I enjoy most.',10479,1,0,'hellmaw SAY_SLAY2'), -(-1555007,'Do not...grow...overconfident, mortal.',10480,1,0,'hellmaw SAY_DEATH'), - -(-1555008,'All flesh must burn.',10482,1,0,'blackhearth SAY_INTRO1'), -(-1555009,'All creation must be unmade!',10483,1,0,'blackhearth SAY_INTRO2'), -(-1555010,'Power will be yours!',10484,1,0,'blackhearth SAY_INTRO3'), -(-1555011,'You\'ll be sorry!',10486,1,0,'blackhearth SAY_AGGRO1'), -(-1555012,'Time for fun!',10487,1,0,'blackhearth SAY_AGGRO2'), -(-1555013,'I see dead people!',10488,1,0,'blackhearth SAY_AGGRO3'), -(-1555014,'No comin\' back for you!',10489,1,0,'blackhearth SAY_SLAY1'), -(-1555015,'Nice try!',10490,1,0,'blackhearth SAY_SLAY2'), -(-1555016,'Help us, hurry!',10485,1,0,'blackhearth SAY_HELP'), -(-1555017,'This... no... good...',10491,1,0,'blackhearth SAY_DEATH'), - -(-1555018,'Be ready for Dark One\'s return.',10492,1,0,'blackhearth SAY2_INTRO1'), -(-1555019,'So we have place in new universe.',10493,1,0,'blackhearth SAY2_INTRO2'), -(-1555020,'Dark one promise!',10494,1,0,'blackhearth SAY2_INTRO3'), -(-1555021,'You\'ll be sorry!',10496,1,0,'blackhearth SAY2_AGGRO1'), -(-1555022,'Time to kill!',10497,1,0,'blackhearth SAY2_AGGRO2'), -(-1555023,'You be dead people!',10498,1,0,'blackhearth SAY2_AGGRO3'), -(-1555024,'Now you gone for good.',10499,1,0,'blackhearth SAY2_SLAY1'), -(-1555025,'You failed, haha haha',10500,1,0,'blackhearth SAY2_SLAY2'), -(-1555026,'Help us, hurry!',10495,1,0,'blackhearth SAY2_HELP'), -(-1555027,'Arrgh, aah...ahhh',10501,1,0,'blackhearth SAY2_DEATH'), - -(-1555028,'Keep your minds focused for the days of reckoning are close at hand. Soon, the destroyer of worlds will return to make good on his promise. Soon the destruction of all that is will begin!',10522,1,0,'vorpil SAY_INTRO'), -(-1555029,'I\'ll make an offering of your blood!',10524,1,0,'vorpil SAY_AGGRO1'), -(-1555030,'You\'ll be a fine example, for the others.',10525,1,0,'vorpil SAY_AGGRO2'), -(-1555031,'Good, a worthy sacrifice.',10526,1,0,'vorpil SAY_AGGRO3'), -(-1555032,'Come to my aid, heed your master now!',10523,1,0,'vorpil SAY_HELP'), -(-1555033,'I serve with pride.',10527,1,0,'vorpil SAY_SLAY1'), -(-1555034,'Your death is for the greater cause!',10528,1,0,'vorpil SAY_SLAY2'), -(-1555035,'I give my life... Gladly.',10529,1,0,'vorpil SAY_DEATH'), - -(-1555036,'draws energy from the air.',0,2,0,'murmur EMOTE_SONIC_BOOM'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1555000, 'Infidels have invaded the sanctuary! Sniveling pests...You have yet to learn the true meaning of agony!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10473, 1, 0, 0, 'hellmaw SAY_INTRO'), +(-1555001, 'Pathetic mortals! You will pay dearly!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10475, 1, 0, 0, 'hellmaw SAY_AGGRO1'), +(-1555002, 'I will break you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10476, 1, 0, 0, 'hellmaw SAY_AGGRO2'), +(-1555003, 'Finally! Something to relieve the tedium!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10477, 1, 0, 0, 'hellmaw SAY_AGGRO3'), +(-1555004, 'Aid me, you fools, before it''s too late!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10474, 1, 0, 0, 'hellmaw SAY_HELP'), +(-1555005, 'Do you fear death?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10478, 1, 0, 0, 'hellmaw SAY_SLAY1'), +(-1555006, 'This is the part I enjoy most.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10479, 1, 0, 0, 'hellmaw SAY_SLAY2'), +(-1555007, 'Do not...grow...overconfident, mortal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10480, 1, 0, 0, 'hellmaw SAY_DEATH'), +(-1555008, 'All flesh must burn.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10482, 1, 0, 0, 'blackhearth SAY_INTRO1'), +(-1555009, 'All creation must be unmade!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10483, 1, 0, 0, 'blackhearth SAY_INTRO2'), +(-1555010, 'Power will be yours!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10484, 1, 0, 0, 'blackhearth SAY_INTRO3'), +(-1555011, 'You''ll be sorry!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10486, 1, 0, 0, 'blackhearth SAY_AGGRO1'), +(-1555012, 'Time for fun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10487, 1, 0, 0, 'blackhearth SAY_AGGRO2'), +(-1555013, 'I see dead people!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10488, 1, 0, 0, 'blackhearth SAY_AGGRO3'), +(-1555014, 'No comin'' back for you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10489, 1, 0, 0, 'blackhearth SAY_SLAY1'), +(-1555015, 'Nice try!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10490, 1, 0, 0, 'blackhearth SAY_SLAY2'), +(-1555016, 'Help us, hurry!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10485, 1, 0, 0, 'blackhearth SAY_HELP'), +(-1555017, 'This... no... good...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10491, 1, 0, 0, 'blackhearth SAY_DEATH'), +(-1555018, 'Be ready for Dark One''s return.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10492, 1, 0, 0, 'blackhearth SAY2_INTRO1'), +(-1555019, 'So we have place in new universe.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10493, 1, 0, 0, 'blackhearth SAY2_INTRO2'), +(-1555020, 'Dark one promise!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10494, 1, 0, 0, 'blackhearth SAY2_INTRO3'), +(-1555021, 'You''ll be sorry!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10496, 1, 0, 0, 'blackhearth SAY2_AGGRO1'), +(-1555022, 'Time to kill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10497, 1, 0, 0, 'blackhearth SAY2_AGGRO2'), +(-1555023, 'You be dead people!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10498, 1, 0, 0, 'blackhearth SAY2_AGGRO3'), +(-1555024, 'Now you gone for good.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10499, 1, 0, 0, 'blackhearth SAY2_SLAY1'), +(-1555025, 'You failed, haha haha', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10500, 1, 0, 0, 'blackhearth SAY2_SLAY2'), +(-1555026, 'Help us, hurry!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10495, 1, 0, 0, 'blackhearth SAY2_HELP'), +(-1555027, 'Arrgh, aah...ahhh', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10501, 1, 0, 0, 'blackhearth SAY2_DEATH'), +(-1555028, 'Keep your minds focused for the days of reckoning are close at hand. Soon, the destroyer of worlds will return to make good on his promise. Soon the destruction of all that is will begin!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10522, 1, 0, 0, 'vorpil SAY_INTRO'), +(-1555029, 'I''ll make an offering of your blood!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10524, 1, 0, 0, 'vorpil SAY_AGGRO1'), +(-1555030, 'You''ll be a fine example, for the others.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10525, 1, 0, 0, 'vorpil SAY_AGGRO2'), +(-1555031, 'Good, a worthy sacrifice.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10526, 1, 0, 0, 'vorpil SAY_AGGRO3'), +(-1555032, 'Come to my aid, heed your master now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10523, 1, 0, 0, 'vorpil SAY_HELP'), +(-1555033, 'I serve with pride.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10527, 1, 0, 0, 'vorpil SAY_SLAY1'), +(-1555034, 'Your death is for the greater cause!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10528, 1, 0, 0, 'vorpil SAY_SLAY2'), +(-1555035, 'I give my life... Gladly.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10529, 1, 0, 0, 'vorpil SAY_DEATH'), +(-1555036, 'draws energy from the air.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'murmur EMOTE_SONIC_BOOM'); -- -1 556 000 SETHEKK HALLS -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1556000,'I have pets..<squawk>..of my own!',10502,1,0,'syth SAY_SUMMON'), -(-1556001,'Hrrmm.. Time to.. hrrm.. make my move.',10503,1,0,'syth SAY_AGGRO_1'), -(-1556002,'Nice pets..hrm.. Yes! <squawking>',10504,1,0,'syth SAY_AGGRO_2'), -(-1556003,'Nice pets have.. weapons. No so..<squawk>..nice.',10505,1,0,'syth SAY_AGGRO_3'), -(-1556004,'Death.. meeting life is.. <squawking>',10506,1,0,'syth SAY_SLAY_1'), -(-1556005,'Uhn.. Be free..<squawk>',10507,1,0,'syth SAY_SLAY_2'), -(-1556006,'No more life..hrm. No more pain. <squawks weakly>',10508,1,0,'syth SAY_DEATH'), - -(-1556007,'<squawk>..Trinkets yes pretty Trinkets..<squawk>..power, great power.<squawk>..power in Trinkets..<squawk>',10557,1,0,'ikiss SAY_INTRO'), -(-1556008,'You make war on Ikiss?..<squawk>',10554,1,0,'ikiss SAY_AGGRO_1'), -(-1556009,'Ikiss cut you pretty..<squawk>..slice you. Yes!',10555,1,0,'ikiss SAY_AGGRO_2'), -(-1556010,'No escape for..<squawk>..for you',10556,1,0,'ikiss SAY_AGGRO_3'), -(-1556011,'You die..<squawk>..stay away from Trinkets',10558,1,0,'ikiss SAY_SLAY_1'), -(-1556012,'<squawk>',10559,1,0,'ikiss SAY_SLAY_2'), -(-1556013,'Ikiss will not..<squawk>..die',10560,1,0,'ikiss SAY_DEATH'), -(-1556015,'begins to channel arcane energy...',0,3,0,'ikiss EMOTE_ARCANE_EXP'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1556000, 'I have pets..<squawk>..of my own!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10502, 1, 0, 0, 'syth SAY_SUMMON'), +(-1556001, 'Hrrmm.. Time to.. hrrm.. make my move.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10503, 1, 0, 0, 'syth SAY_AGGRO_1'), +(-1556002, 'Nice pets..hrm.. Yes! <squawking>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10504, 1, 0, 0, 'syth SAY_AGGRO_2'), +(-1556003, 'Nice pets have.. weapons. No so..<squawk>..nice.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10505, 1, 0, 0, 'syth SAY_AGGRO_3'), +(-1556004, 'Death.. meeting life is.. <squawking>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10506, 1, 0, 0, 'syth SAY_SLAY_1'), +(-1556005, 'Uhn.. Be free..<squawk>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10507, 1, 0, 0, 'syth SAY_SLAY_2'), +(-1556006, 'No more life..hrm. No more pain. <squawks weakly>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10508, 1, 0, 0, 'syth SAY_DEATH'), +(-1556007, '<squawk>..Trinkets yes pretty Trinkets..<squawk>..power, great power.<squawk>..power in Trinkets..<squawk>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10557, 1, 0, 0, 'ikiss SAY_INTRO'), +(-1556008, 'You make war on Ikiss?..<squawk>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10554, 1, 0, 0, 'ikiss SAY_AGGRO_1'), +(-1556009, 'Ikiss cut you pretty..<squawk>..slice you. Yes!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10555, 1, 0, 0, 'ikiss SAY_AGGRO_2'), +(-1556010, 'No escape for..<squawk>..for you', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10556, 1, 0, 0, 'ikiss SAY_AGGRO_3'), +(-1556011, 'You die..<squawk>..stay away from Trinkets', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10558, 1, 0, 0, 'ikiss SAY_SLAY_1'), +(-1556012, '<squawk>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10559, 1, 0, 0, 'ikiss SAY_SLAY_2'), +(-1556013, 'Ikiss will not..<squawk>..die', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10560, 1, 0, 0, 'ikiss SAY_DEATH'), +(-1556015, 'begins to channel arcane energy...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'ikiss EMOTE_ARCANE_EXP'); -- -1 557 000 MANA TOMBS -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1557000,'What is this? You must forgive me, but I was not expecting company. As you can see, we are somewhat preoccupied right now. But no matter. As I am a gracious host, I will tend to you... personally.',10539,1,0,'shaffar SAY_INTRO'), -(-1557001,'We have not yet been properly introduced.',10541,1,0,'shaffar SAY_AGGRO_1'), -(-1557002,'An epic battle. How exciting!',10542,1,0,'shaffar SAY_AGGRO_2'), -(-1557003,'I have longed for a good adventure.',10543,1,0,'shaffar SAY_AGGRO_3'), -(-1557004,'It has been... entertaining.',10544,1,0,'shaffar SAY_SLAY_1'), -(-1557005,'And now we part company.',10545,1,0,'shaffar SAY_SLAY_2'), -(-1557006,'I have such fascinating things to show you.',10540,1,0,'shaffar SAY_SUMMON'), -(-1557007,'I must bid you... farewell.',10546,1,0,'shaffar SAY_DEAD'), - -(-1557008,'I will feed on your soul.',10561,1,0,'pandemonius SAY_AGGRO_1'), -(-1557009,'So... full of life!',10562,1,0,'pandemonius SAY_AGGRO_2'), -(-1557010,'Do not... resist.',10563,1,0,'pandemonius SAY_AGGRO_3'), -(-1557011,'Yes! I am... empowered!',10564,1,0,'pandemonius SAY_KILL_1'), -(-1557012,'More... I must have more!',10565,1,0,'pandemonius SAY_KILL_2'), -(-1557013,'To the void... once... more..',10566,1,0,'pandemonius SAY_DEATH'), -(-1557014,'shifts into the void...',0,3,0,'pandemonius EMOTE_DARK_SHELL'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1557000, 'What is this? You must forgive me, but I was not expecting company. As you can see, we are somewhat preoccupied right now. But no matter. As I am a gracious host, I will tend to you... personally.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10539, 1, 0, 0, 'shaffar SAY_INTRO'), +(-1557001, 'We have not yet been properly introduced.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10541, 1, 0, 0, 'shaffar SAY_AGGRO_1'), +(-1557002, 'An epic battle. How exciting!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10542, 1, 0, 0, 'shaffar SAY_AGGRO_2'), +(-1557003, 'I have longed for a good adventure.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10543, 1, 0, 0, 'shaffar SAY_AGGRO_3'), +(-1557004, 'It has been... entertaining.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10544, 1, 0, 0, 'shaffar SAY_SLAY_1'), +(-1557005, 'And now we part company.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10545, 1, 0, 0, 'shaffar SAY_SLAY_2'), +(-1557006, 'I have such fascinating things to show you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10540, 1, 0, 0, 'shaffar SAY_SUMMON'), +(-1557007, 'I must bid you... farewell.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10546, 1, 0, 0, 'shaffar SAY_DEAD'), +(-1557008, 'I will feed on your soul.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10561, 1, 0, 0, 'pandemonius SAY_AGGRO_1'), +(-1557009, 'So... full of life!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10562, 1, 0, 0, 'pandemonius SAY_AGGRO_2'), +(-1557010, 'Do not... resist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10563, 1, 0, 0, 'pandemonius SAY_AGGRO_3'), +(-1557011, 'Yes! I am... empowered!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10564, 1, 0, 0, 'pandemonius SAY_KILL_1'), +(-1557012, 'More... I must have more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10565, 1, 0, 0, 'pandemonius SAY_KILL_2'), +(-1557013, 'To the void... once... more..', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10566, 1, 0, 0, 'pandemonius SAY_DEATH'), +(-1557014, 'shifts into the void...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'pandemonius EMOTE_DARK_SHELL'); -- -1 558 000 AUCHENAI CRYPTS -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1558000,'You have defiled the resting place of our ancestors. For this offense, there can be but one punishment. It is fitting that you have come to a place of the dead... for you will soon be joining them.',10509,1,0,'maladaar SAY_INTRO'), -(-1558001,'Rise my fallen brothers. Take form and fight!',10512,1,0,'maladaar SAY_SUMMON'), -(-1558002,'You will pay with your life!',10513,1,0,'maladaar SAY_AGGRO_1'), -(-1558003,'There\'s no turning back now!',10514,1,0,'maladaar SAY_AGGRO_2'), -(-1558004,'Serve your penitence!',10515,1,0,'maladaar SAY_AGGRO_3'), -(-1558005,'Let your mind be clouded.',10510,1,0,'maladaar SAY_ROAR'), -(-1558006,'Stare into the darkness of your soul.',10511,1,0,'maladaar SAY_SOUL_CLEAVE'), -(-1558007,'These walls will be your doom.',10516,1,0,'maladaar SAY_SLAY_1'), -(-1558008,'<laugh> Now, you\'ll stay for eternity!',10517,1,0,'maladaar SAY_SLAY_2'), -(-1558009,'This is... where.. I belong...',10518,1,0,'maladaar SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1558000, 'You have defiled the resting place of our ancestors. For this offense, there can be but one punishment. It is fitting that you have come to a place of the dead... for you will soon be joining them.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10509, 1, 0, 0, 'maladaar SAY_INTRO'), +(-1558001, 'Rise my fallen brothers. Take form and fight!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10512, 1, 0, 0, 'maladaar SAY_SUMMON'), +(-1558002, 'You will pay with your life!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10513, 1, 0, 0, 'maladaar SAY_AGGRO_1'), +(-1558003, 'There''s no turning back now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10514, 1, 0, 0, 'maladaar SAY_AGGRO_2'), +(-1558004, 'Serve your penitence!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10515, 1, 0, 0, 'maladaar SAY_AGGRO_3'), +(-1558005, 'Let your mind be clouded.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10510, 1, 0, 0, 'maladaar SAY_ROAR'), +(-1558006, 'Stare into the darkness of your soul.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10511, 1, 0, 0, 'maladaar SAY_SOUL_CLEAVE'), +(-1558007, 'These walls will be your doom.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10516, 1, 0, 0, 'maladaar SAY_SLAY_1'), +(-1558008, '<laugh> Now, you''ll stay for eternity!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10517, 1, 0, 0, 'maladaar SAY_SLAY_2'), +(-1558009, 'This is... where.. I belong...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10518, 1, 0, 0, 'maladaar SAY_DEATH'); -- -1 560 000 ESCAPE FROM DURNHOLDE (OLD HILLSBRAD) -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1560000,'Thrall! You didn\'t really think you would escape did you? You and your allies shall answer to Blackmoore - after I\'ve had my fun!',10406,1,0,'skarloc SAY_ENTER'), -(-1560001,'You\'re a slave. That\'s all you\'ll ever be.',10407,1,0,'skarloc SAY_TAUNT1'), -(-1560002,'I don\'t know what Blackmoore sees in you. For my money, you\'re just another ignorant savage!',10408,1,0,'skarloc SAY_TAUNT2'), -(-1560003,'Thrall will never be free!',10409,1,0,'skarloc SAY_SLAY1'), -(-1560004,'Did you really think you would leave here alive?',10410,1,0,'skarloc SAY_SLAY2'), -(-1560005,'Guards! Urgh..Guards..!',10411,1,0,'skarloc SAY_DEATH'), - -(-1560006,'You there, fetch water quickly! Get these flames out before they spread to the rest of the keep! Hurry, damn you!',10428,1,0,'lieutenant_drake SAY_ENTER'), -(-1560007,'I know what you\'re up to, and I mean to put an end to it, permanently!',10429,1,0,'lieutenant_drake SAY_AGGRO'), -(-1560008,'No more middling for you.',10432,1,0,'lieutenant_drake SAY_SLAY1'), -(-1560009,'You will not interfere!',10433,1,0,'lieutenant_drake SAY_SLAY2'), -(-1560010,'Time to bleed!',10430,1,0,'lieutenant_drake SAY_MORTAL'), -(-1560011,'Run, you blasted cowards!',10431,1,0,'lieutenant_drake SAY_SHOUT'), -(-1560012,'Thrall... must not... go free.',10434,1,0,'lieutenant_drake SAY_DEATH'), - -(-1560013,'Thrall! Come outside and face your fate!',10418,1,0,'epoch SAY_ENTER1'), -(-1560014,'Taretha\'s life hangs in the balance. Surely you care for her. Surely you wish to save her...',10419,1,0,'epoch SAY_ENTER2'), -(-1560015,'Ah, there you are. I had hoped to accomplish this with a bit of subtlety, but I suppose direct confrontation was inevitable. Your future, Thrall, must not come to pass and so...you and your troublesome friends must die!',10420,1,0,'epoch SAY_ENTER3'), -(-1560016,'Enough! I will erase your very existence!',10421,1,0,'epoch SAY_AGGRO1'), -(-1560017,'You cannot fight fate!',10422,1,0,'epoch SAY_AGGRO2'), -(-1560018,'You are...irrelevant.',10425,1,0,'epoch SAY_SLAY1'), -(-1560019,'Thrall will remain a slave. Taretha will die. You have failed.',10426,1,0,'epoch SAY_SLAY2'), -(-1560020,'Not so fast!',10423,1,0,'epoch SAY_BREATH1'), -(-1560021,'Struggle as much as you like!',10424,1,0,'epoch SAY_BREATH2'), -(-1560022,'No!...The master... will not... be pleased.',10427,1,0,'epoch SAY_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1560000, 'Thrall! You didn''t really think you would escape did you? You and your allies shall answer to Blackmoore - after I''ve had my fun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10406, 1, 0, 0, 'skarloc SAY_ENTER'), +(-1560001, 'You''re a slave. That''s all you''ll ever be.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10407, 1, 0, 0, 'skarloc SAY_TAUNT1'), +(-1560002, 'I don''t know what Blackmoore sees in you. For my money, you''re just another ignorant savage!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10408, 1, 0, 0, 'skarloc SAY_TAUNT2'), +(-1560003, 'Thrall will never be free!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10409, 1, 0, 0, 'skarloc SAY_SLAY1'), +(-1560004, 'Did you really think you would leave here alive?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10410, 1, 0, 0, 'skarloc SAY_SLAY2'), +(-1560005, 'Guards! Urgh..Guards..!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10411, 1, 0, 0, 'skarloc SAY_DEATH'), +(-1560006, 'You there, fetch water quickly! Get these flames out before they spread to the rest of the keep! Hurry, damn you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10428, 1, 0, 0, 'lieutenant_drake SAY_ENTER'), +(-1560007, 'I know what you''re up to, and I mean to put an end to it, permanently!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10429, 1, 0, 0, 'lieutenant_drake SAY_AGGRO'), +(-1560008, 'No more middling for you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10432, 1, 0, 0, 'lieutenant_drake SAY_SLAY1'), +(-1560009, 'You will not interfere!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10433, 1, 0, 0, 'lieutenant_drake SAY_SLAY2'), +(-1560010, 'Time to bleed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10430, 1, 0, 0, 'lieutenant_drake SAY_MORTAL'), +(-1560011, 'Run, you blasted cowards!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10431, 1, 0, 0, 'lieutenant_drake SAY_SHOUT'), +(-1560012, 'Thrall... must not... go free.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10434, 1, 0, 0, 'lieutenant_drake SAY_DEATH'), +(-1560013, 'Thrall! Come outside and face your fate!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10418, 1, 0, 0, 'epoch SAY_ENTER1'), +(-1560014, 'Taretha''s life hangs in the balance. Surely you care for her. Surely you wish to save her...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10419, 1, 0, 0, 'epoch SAY_ENTER2'), +(-1560015, 'Ah, there you are. I had hoped to accomplish this with a bit of subtlety, but I suppose direct confrontation was inevitable. Your future, Thrall, must not come to pass and so...you and your troublesome friends must die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10420, 1, 0, 0, 'epoch SAY_ENTER3'), +(-1560016, 'Enough! I will erase your very existence!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10421, 1, 0, 0, 'epoch SAY_AGGRO1'), +(-1560017, 'You cannot fight fate!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10422, 1, 0, 0, 'epoch SAY_AGGRO2'), +(-1560018, 'You are...irrelevant.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10425, 1, 0, 0, 'epoch SAY_SLAY1'), +(-1560019, 'Thrall will remain a slave. Taretha will die. You have failed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10426, 1, 0, 0, 'epoch SAY_SLAY2'), +(-1560020, 'Not so fast!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10423, 1, 0, 0, 'epoch SAY_BREATH1'), +(-1560021, 'Struggle as much as you like!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10424, 1, 0, 0, 'epoch SAY_BREATH2'), +(-1560022, 'No!...The master... will not... be pleased.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10427, 1, 0, 0, 'epoch SAY_DEATH'), +(-1560023, 'Very well then. Let''s go!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10465, 1, 0, 0, 'thrall hillsbrad SAY_TH_START_EVENT_PART1'), +(-1560024, 'As long as we''re going with a new plan, I may aswell pick up a weapon and some armor.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'thrall hillsbrad SAY_TH_ARMORY'), +(-1560025, 'A rider approaches!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10466, 0, 0, 0, 'thrall hillsbrad SAY_TH_SKARLOC_MEET'), +(-1560026, 'I''ll never be chained again!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10467, 1, 0, 0, 'thrall hillsbrad SAY_TH_SKARLOC_TAUNT'), +(-1560027, 'Very well. Tarren Mill lies just west of here. Since time is of the essence...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10468, 1, 0, 0, 'thrall hillsbrad SAY_TH_START_EVENT_PART2'), +(-1560028, 'Let''s ride!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10469, 0, 0, 1, 'thrall hillsbrad SAY_TH_MOUNTS_UP'), +(-1560029, 'Taretha must be in the inn. Let''s go.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'thrall hillsbrad SAY_TH_CHURCH_END'), +(-1560030, 'Taretha! What foul magic is this?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'thrall hillsbrad SAY_TH_MEET_TARETHA'), +(-1560031, 'Who or what was that?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10470, 1, 0, 1, 'thrall hillsbrad SAY_TH_EPOCH_WONDER'), +(-1560032, 'No!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10471, 1, 0, 5, 'thrall hillsbrad SAY_TH_EPOCH_KILL_TARETHA'), +(-1560033, 'Goodbye, Taretha. I will never forget your kindness.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10472, 1, 0, 0, 'thrall hillsbrad SAY_TH_EVENT_COMPLETE'), +(-1560034, 'Things are looking grim...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10458, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_LOW_HP1'), +(-1560035, 'I will fight to the last!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10459, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_LOW_HP2'), +(-1560036, 'Taretha...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10460, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_DIE1'), +(-1560037, 'A good day...to die...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10461, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_DIE2'), +(-1560038, 'I have earned my freedom!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10448, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_AGGRO1'), +(-1560039, 'This day is long overdue. Out of my way!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10449, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_AGGRO2'), +(-1560040, 'I am a slave no longer!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10450, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_AGGRO3'), +(-1560041, 'Blackmoore has much to answer for!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10451, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_AGGRO4'), +(-1560042, 'You have forced my hand!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10452, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_KILL1'), +(-1560043, 'It should not have come to this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10453, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_KILL2'), +(-1560044, 'I did not ask for this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10454, 1, 0, 0, 'thrall hillsbrad SAY_TH_RANDOM_KILL3'), +(-1560045, 'I am truly in your debt, strangers.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10455, 1, 0, 0, 'thrall hillsbrad SAY_TH_LEAVE_COMBAT1'), +(-1560046, 'Thank you, strangers. You have given me hope.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10456, 1, 0, 0, 'thrall hillsbrad SAY_TH_LEAVE_COMBAT2'), +(-1560047, 'I will not waste this chance. I will seek out my destiny.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10457, 1, 0, 0, 'thrall hillsbrad SAY_TH_LEAVE_COMBAT3'), +(-1560048, 'I''m free! Thank you all!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'taretha SAY_TA_FREE'), +(-1560049, 'Thrall, you escaped!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'taretha SAY_TA_ESCAPED'); -- -1 564 000 BLACK TEMPLE -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1564000,'You will die in the name of Lady Vashj!',11450,1,0,'SAY_AGGRO'), -(-1564001,'Stick around!',11451,1,0,'SAY_NEEDLE1'), -(-1564002,'I\'ll deal with you later!',11452,1,0,'SAY_NEEDLE2'), -(-1564003,'Your success was short lived!',11455,1,0,'SAY_SLAY1'), -(-1564004,'Time for you to go!',11456,1,0,'SAY_SLAY2'), -(-1564005,'Bel\'anen dal\'lorei!',11453,1,0,'SAY_SPECIAL1'), -(-1564006,'Blood will flow!',11454,1,0,'SAY_SPECIAL2'), -(-1564007,'Bal\'amer ch\'itah!',11457,1,0,'SAY_ENRAGE1'), -(-1564008,'My patience has ran out! Die, DIE!',11458,1,0,'SAY_ENRAGE2'), -(-1564009,'Lord Illidan will... crush you.',11459,1,0,'SAY_DEATH'), - -(-1564010,'%s acquires a new target!',0,3,0,'supremus EMOTE_NEW_TARGET'), -(-1564011,'%s punches the ground in anger!',0,3,0,'supremus EMOTE_PUNCH_GROUND'), -(-1564012,'The ground begins to crack open!',0,3,0,'supremus EMOTE_GROUND_CRACK'), - -(-1564013,'No! Not yet...',11385,1,0,'akama shade SAY_LOW_HEALTH'), -(-1564014,'I will not last much longer...',11386,1,0,'akama shade SAY_DEATH'), -(-1564015,'Come out from the shadows! I\'ve returned to lead you against our true enemy! Shed your chains and raise your weapons against your Illidari masters!',0,1,0,'akama shade SAY_FREE'), -(-1564016,'Hail our leader! Hail Akama!',0,1,0,'akama shade broken SAY_BROKEN_FREE_01'), -(-1564017,'Hail Akama!',0,1,0,'akama shade broken SAY_BROKEN_FREE_02'), - -(-1564018,'You play, you pay.',11501,1,0,'shahraz SAY_TAUNT1'), -(-1564019,'I\'m not impressed.',11502,1,0,'shahraz SAY_TAUNT2'), -(-1564020,'Enjoying yourselves?',11503,1,0,'shahraz SAY_TAUNT3'), -(-1564021,'So... business or pleasure?',11504,1,0,'shahraz SAY_AGGRO'), -(-1564022,'You seem a little tense.',11505,1,0,'shahraz SAY_SPELL1'), -(-1564023,'Don\'t be shy.',11506,1,0,'shahraz SAY_SPELL2'), -(-1564024,'I\'m all... yours.',11507,1,0,'shahraz SAY_SPELL3'), -(-1564025,'Easy come, easy go.',11508,1,0,'shahraz SAY_SLAY1'), -(-1564026,'So much for a happy ending.',11509,1,0,'shahraz SAY_SLAY2'), -(-1564027,'Stop toying with my emotions!',11510,1,0,'shahraz SAY_ENRAGE'), -(-1564028,'I wasn\'t... finished.',11511,1,0,'shahraz SAY_DEATH'), - -(-1564029,'Horde will... crush you.',11432,1,0,'bloodboil SOUND_AGGRO'), -(-1564030,'Time to feast!',11433,1,0,'bloodboil SAY_SLAY1'), -(-1564031,'More! I want more!',11434,1,0,'bloodboil SAY_SLAY2'), -(-1564032,'Drink your blood! Eat your flesh!',11435,1,0,'bloodboil SAY_SPECIAL1'), -(-1564033,'I hunger!',11436,1,0,'bloodboil SAY_SPECIAL2'), -(-1564034,'<babbling>',11437,1,0,'bloodboil SAY_ENRAGE1'), -(-1564035,'I\'ll rip the meat from your bones!',11438,1,0,'bloodboil SAY_ENRAGE2'), -(-1564036,'Aaaahrg...',11439,1,0,'bloodboil SAY_DEATH'), - -(-1564037,'I was the first, you know. For me, the wheel of death has spun many times. <laughs> So much time has passed. I have a lot of catching up to do...',11512,1,0,'teron SAY_INTRO'), -(-1564038,'Vengeance is mine!',11513,1,0,'teron SAY_AGGRO'), -(-1564039,'I have use for you!',11514,1,0,'teron SAY_SLAY1'), -(-1564040,'It gets worse...',11515,1,0,'teron SAY_SLAY2'), -(-1564041,'What are you afraid of?',11517,1,0,'teron SAY_SPELL1'), -(-1564042,'Death... really isn\'t so bad.',11516,1,0,'teron SAY_SPELL2'), -(-1564043,'Give in!',11518,1,0,'teron SAY_SPECIAL1'), -(-1564044,'I have something for you...',11519,1,0,'teron SAY_SPECIAL2'), -(-1564045,'YOU WILL SHOW THE PROPER RESPECT!',11520,1,0,'teron SAY_ENRAGE'), -(-1564046,'The wheel...spins...again....',11521,1,0,'teron SAY_DEATH'), - -(-1564047,'Pain and suffering are all that await you!',11415,1,0,'essence SUFF_SAY_FREED'), -(-1564048,'Don\'t leave me alone!',11416,1,0,'essence SUFF_SAY_AGGRO'), -(-1564049,'Look at what you make me do!',11417,1,0,'essence SUFF_SAY_SLAY1'), -(-1564050,'I didn\'t ask for this!',11418,1,0,'essence SUFF_SAY_SLAY2'), -(-1564051,'The pain is only beginning!',11419,1,0,'essence SUFF_SAY_SLAY3'), -(-1564052,'I don\'t want to go back!',11420,1,0,'essence SUFF_SAY_RECAP'), -(-1564053,'Now what do I do?',11421,1,0,'essence SUFF_SAY_AFTER'), -(-1564054,'%s becomes enraged!',0,3,0,'essence SUFF_EMOTE_ENRAGE'), - -(-1564055,'You can have anything you desire... for a price.',11408,1,0,'essence DESI_SAY_FREED'), -(-1564056,'Fulfilment is at hand!',11409,1,0,'essence DESI_SAY_SLAY1'), -(-1564057,'Yes... you\'ll stay with us now...',11410,1,0,'essence DESI_SAY_SLAY2'), -(-1564058,'Your reach exceeds your grasp.',11412,1,0,'essence DESI_SAY_SLAY3'), -(-1564059,'Be careful what you wish for...',11411,1,0,'essence DESI_SAY_SPEC'), -(-1564060,'I\'ll be waiting...',11413,1,0,'essence DESI_SAY_RECAP'), -(-1564061,'I won\'t be far...',11414,1,0,'essence DESI_SAY_AFTER'), - -(-1564062,'Beware: I live!',11399,1,0,'essence ANGER_SAY_FREED'), -(-1564063,'So... foolish.',11400,1,0,'essence ANGER_SAY_FREED2'), -(-1564064,'<maniacal cackle>',11401,1,0,'essence ANGER_SAY_SLAY1'), -(-1564065,'Enough. No more.',11402,1,0,'essence ANGER_SAY_SLAY2'), -(-1564066,'On your knees!',11403,1,0,'essence ANGER_SAY_SPEC'), -(-1564067,'Beware, coward.',11405,1,0,'essence ANGER_SAY_BEFORE'), -(-1564068,'I won\'t... be... ignored.',11404,1,0,'essence ANGER_SAY_DEATH'), - -(-1564069,'You wish to test me?',11524,1,0,'council vera AGGRO'), -(-1564070,'I have better things to do...',11422,1,0,'council gath AGGRO'), -(-1564071,'Flee or die!',11482,1,0,'council mala AGGRO'), -(-1564072,'Common... such a crude language. Bandal!',11440,1,0,'council zere AGGRO'), - -(-1564073,'Enough games!',11428,1,0,'council gath ENRAGE'), -(-1564074,'You wish to kill me? Hahaha, you first!',11530,1,0,'council vera ENRAGE'), -(-1564075,'For Quel\'Thalas! For the Sunwell!',11488,1,0,'council mala ENRAGE'), -(-1564076,'Sha\'amoor sine menoor!',11446,1,0,'council zere ENRAGE'), - -(-1564077,'Enjoy your final moments!',11426,1,0,'council gath SPECIAL1'), -(-1564078,'You\'re not caught up for this!',11528,1,0,'council vera SPECIAL1'), -(-1564079,'No second chances!',11486,1,0,'council mala SPECIAL1'), -(-1564080,'Diel fin\'al',11444,1,0,'council zere SPECIAL1'), - -(-1564081,'You are mine!',11427,1,0,'council gath SPECIAL2'), -(-1564082,'Anar\'alah belore!',11529,1,0,'council vera SPECIAL2'), -(-1564083,'I\'m full of surprises!',11487,1,0,'council mala SPECIAL2'), -(-1564084,'Sha\'amoor ara mashal?',11445,1,0,'council zere SPECIAL2'), - -(-1564085,'Selama am\'oronor!',11423,1,0,'council gath SLAY'), -(-1564086,'Valiant effort!',11525,1,0,'council vera SLAY'), -(-1564087,'My work is done.',11483,1,0,'council mala SLAY'), -(-1564088,'Shorel\'aran.',11441,1,0,'council zere SLAY'), - -(-1564089,'Well done!',11424,1,0,'council gath SLAY_COMT'), -(-1564090,'A glorious kill!',11526,1,0,'council vera SLAY_COMT'), -(-1564091,'As it should be!',11484,1,0,'council mala SLAY_COMT'), -(-1564092,'Belesa menoor!',11442,1,0,'council zere SLAY_COMT'), - -(-1564093,'Lord Illidan... I...',11425,1,0,'council gath DEATH'), -(-1564094,'You got lucky!',11527,1,0,'council vera DEATH'), -(-1564095,'Destiny... awaits.',11485,1,0,'council mala DEATH'), -(-1564096,'Diel ma\'ahn... oreindel\'o',11443,1,0,'council zere DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1564000, 'You will die in the name of Lady Vashj!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11450, 1, 0, 0, 'SAY_AGGRO'), +(-1564001, 'Stick around!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11451, 1, 0, 0, 'SAY_NEEDLE1'), +(-1564002, 'I''ll deal with you later!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11452, 1, 0, 0, 'SAY_NEEDLE2'), +(-1564003, 'Your success was short lived!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11455, 1, 0, 0, 'SAY_SLAY1'), +(-1564004, 'Time for you to go!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11456, 1, 0, 0, 'SAY_SLAY2'), +(-1564005, 'Bel''anen dal''lorei!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11453, 1, 0, 0, 'SAY_SPECIAL1'), +(-1564006, 'Blood will flow!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11454, 1, 0, 0, 'SAY_SPECIAL2'), +(-1564007, 'Bal''amer ch''itah!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11457, 1, 0, 0, 'SAY_ENRAGE1'), +(-1564008, 'My patience has ran out! Die, DIE!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11458, 1, 0, 0, 'SAY_ENRAGE2'), +(-1564009, 'Lord Illidan will... crush you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11459, 1, 0, 0, 'SAY_DEATH'), +(-1564010, '%s acquires a new target!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'supremus EMOTE_NEW_TARGET'), +(-1564011, '%s punches the ground in anger!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'supremus EMOTE_PUNCH_GROUND'), +(-1564012, 'The ground begins to crack open!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'supremus EMOTE_GROUND_CRACK'), +(-1564013, 'No! Not yet...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11385, 1, 0, 0, 'akama shade SAY_LOW_HEALTH'), +(-1564014, 'I will not last much longer...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11386, 1, 0, 0, 'akama shade SAY_DEATH'), +(-1564015, 'Come out from the shadows! I''ve returned to lead you against our true enemy! Shed your chains and raise your weapons against your Illidari masters!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'akama shade SAY_FREE'), +(-1564016, 'Hail our leader! Hail Akama!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'akama shade broken SAY_BROKEN_FREE_01'), +(-1564017, 'Hail Akama!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'akama shade broken SAY_BROKEN_FREE_02'), +(-1564018, 'You play, you pay.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11501, 1, 0, 0, 'shahraz SAY_TAUNT1'), +(-1564019, 'I''m not impressed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11502, 1, 0, 0, 'shahraz SAY_TAUNT2'), +(-1564020, 'Enjoying yourselves?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11503, 1, 0, 0, 'shahraz SAY_TAUNT3'), +(-1564021, 'So... business or pleasure?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11504, 1, 0, 0, 'shahraz SAY_AGGRO'), +(-1564022, 'You seem a little tense.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11505, 1, 0, 0, 'shahraz SAY_SPELL1'), +(-1564023, 'Don''t be shy.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11506, 1, 0, 0, 'shahraz SAY_SPELL2'), +(-1564024, 'I''m all... yours.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11507, 1, 0, 0, 'shahraz SAY_SPELL3'), +(-1564025, 'Easy come, easy go.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11508, 1, 0, 0, 'shahraz SAY_SLAY1'), +(-1564026, 'So much for a happy ending.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11509, 1, 0, 0, 'shahraz SAY_SLAY2'), +(-1564027, 'Stop toying with my emotions!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11510, 1, 0, 0, 'shahraz SAY_ENRAGE'), +(-1564028, 'I wasn''t... finished.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11511, 1, 0, 0, 'shahraz SAY_DEATH'), +(-1564029, 'Horde will... crush you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11432, 1, 0, 0, 'bloodboil SOUND_AGGRO'), +(-1564030, 'Time to feast!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11433, 1, 0, 0, 'bloodboil SAY_SLAY1'), +(-1564031, 'More! I want more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11434, 1, 0, 0, 'bloodboil SAY_SLAY2'), +(-1564032, 'Drink your blood! Eat your flesh!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11435, 1, 0, 0, 'bloodboil SAY_SPECIAL1'), +(-1564033, 'I hunger!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11436, 1, 0, 0, 'bloodboil SAY_SPECIAL2'), +(-1564034, '<babbling>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11437, 1, 0, 0, 'bloodboil SAY_ENRAGE1'), +(-1564035, 'I''ll rip the meat from your bones!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11438, 1, 0, 0, 'bloodboil SAY_ENRAGE2'), +(-1564036, 'Aaaahrg...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11439, 1, 0, 0, 'bloodboil SAY_DEATH'), +(-1564037, 'I was the first, you know. For me, the wheel of death has spun many times. <laughs> So much time has passed. I have a lot of catching up to do...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11512, 1, 0, 0, 'teron SAY_INTRO'), +(-1564038, 'Vengeance is mine!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11513, 1, 0, 0, 'teron SAY_AGGRO'), +(-1564039, 'I have use for you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11514, 1, 0, 0, 'teron SAY_SLAY1'), +(-1564040, 'It gets worse...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11515, 1, 0, 0, 'teron SAY_SLAY2'), +(-1564041, 'What are you afraid of?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11517, 1, 0, 0, 'teron SAY_SPELL1'), +(-1564042, 'Death... really isn''t so bad.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11516, 1, 0, 0, 'teron SAY_SPELL2'), +(-1564043, 'Give in!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11518, 1, 0, 0, 'teron SAY_SPECIAL1'), +(-1564044, 'I have something for you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11519, 1, 0, 0, 'teron SAY_SPECIAL2'), +(-1564045, 'YOU WILL SHOW THE PROPER RESPECT!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11520, 1, 0, 0, 'teron SAY_ENRAGE'), +(-1564046, 'The wheel...spins...again....', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11521, 1, 0, 0, 'teron SAY_DEATH'), +(-1564047, 'Pain and suffering are all that await you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11415, 1, 0, 0, 'essence SUFF_SAY_FREED'), +(-1564048, 'Don''t leave me alone!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11416, 1, 0, 0, 'essence SUFF_SAY_AGGRO'), +(-1564049, 'Look at what you make me do!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11417, 1, 0, 0, 'essence SUFF_SAY_SLAY1'), +(-1564050, 'I didn''t ask for this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11418, 1, 0, 0, 'essence SUFF_SAY_SLAY2'), +(-1564051, 'The pain is only beginning!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11419, 1, 0, 0, 'essence SUFF_SAY_SLAY3'), +(-1564052, 'I don''t want to go back!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11420, 1, 0, 0, 'essence SUFF_SAY_RECAP'), +(-1564053, 'Now what do I do?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11421, 1, 0, 0, 'essence SUFF_SAY_AFTER'), +(-1564054, '%s becomes enraged!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'essence SUFF_EMOTE_ENRAGE'), +(-1564055, 'You can have anything you desire... for a price.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11408, 1, 0, 0, 'essence DESI_SAY_FREED'), +(-1564056, 'Fulfilment is at hand!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11409, 1, 0, 0, 'essence DESI_SAY_SLAY1'), +(-1564057, 'Yes... you''ll stay with us now...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11410, 1, 0, 0, 'essence DESI_SAY_SLAY2'), +(-1564058, 'Your reach exceeds your grasp.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11412, 1, 0, 0, 'essence DESI_SAY_SLAY3'), +(-1564059, 'Be careful what you wish for...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11411, 1, 0, 0, 'essence DESI_SAY_SPEC'), +(-1564060, 'I''ll be waiting...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11413, 1, 0, 0, 'essence DESI_SAY_RECAP'), +(-1564061, 'I won''t be far...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11414, 1, 0, 0, 'essence DESI_SAY_AFTER'), +(-1564062, 'Beware: I live!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11399, 1, 0, 0, 'essence ANGER_SAY_FREED'), +(-1564063, 'So... foolish.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11400, 1, 0, 0, 'essence ANGER_SAY_FREED2'), +(-1564064, '<maniacal cackle>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11401, 1, 0, 0, 'essence ANGER_SAY_SLAY1'), +(-1564065, 'Enough. No more.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11402, 1, 0, 0, 'essence ANGER_SAY_SLAY2'), +(-1564066, 'On your knees!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11403, 1, 0, 0, 'essence ANGER_SAY_SPEC'), +(-1564067, 'Beware, coward.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11405, 1, 0, 0, 'essence ANGER_SAY_BEFORE'), +(-1564068, 'I won''t... be... ignored.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11404, 1, 0, 0, 'essence ANGER_SAY_DEATH'), +(-1564069, 'You wish to test me?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11524, 1, 0, 0, 'council vera AGGRO'), +(-1564070, 'I have better things to do...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11422, 1, 0, 0, 'council gath AGGRO'), +(-1564071, 'Flee or die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11482, 1, 0, 0, 'council mala AGGRO'), +(-1564072, 'Common... such a crude language. Bandal!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11440, 1, 0, 0, 'council zere AGGRO'), +(-1564073, 'Enough games!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11428, 1, 0, 0, 'council gath ENRAGE'), +(-1564074, 'You wish to kill me? Hahaha, you first!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11530, 1, 0, 0, 'council vera ENRAGE'), +(-1564075, 'For Quel''Thalas! For the Sunwell!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11488, 1, 0, 0, 'council mala ENRAGE'), +(-1564076, 'Sha''amoor sine menoor!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11446, 1, 0, 0, 'council zere ENRAGE'), +(-1564077, 'Enjoy your final moments!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11426, 1, 0, 0, 'council gath SPECIAL1'), +(-1564078, 'You''re not caught up for this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11528, 1, 0, 0, 'council vera SPECIAL1'), +(-1564079, 'No second chances!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11486, 1, 0, 0, 'council mala SPECIAL1'), +(-1564080, 'Diel fin''al', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11444, 1, 0, 0, 'council zere SPECIAL1'), +(-1564081, 'You are mine!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11427, 1, 0, 0, 'council gath SPECIAL2'), +(-1564082, 'Anar''alah belore!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11529, 1, 0, 0, 'council vera SPECIAL2'), +(-1564083, 'I''m full of surprises!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11487, 1, 0, 0, 'council mala SPECIAL2'), +(-1564084, 'Sha''amoor ara mashal?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11445, 1, 0, 0, 'council zere SPECIAL2'), +(-1564085, 'Selama am''oronor!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11423, 1, 0, 0, 'council gath SLAY'), +(-1564086, 'Valiant effort!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11525, 1, 0, 0, 'council vera SLAY'), +(-1564087, 'My work is done.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11483, 1, 0, 0, 'council mala SLAY'), +(-1564088, 'Shorel''aran.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11441, 1, 0, 0, 'council zere SLAY'), +(-1564089, 'Well done!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11424, 1, 0, 0, 'council gath SLAY_COMT'), +(-1564090, 'A glorious kill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11526, 1, 0, 0, 'council vera SLAY_COMT'), +(-1564091, 'As it should be!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11484, 1, 0, 0, 'council mala SLAY_COMT'), +(-1564092, 'Belesa menoor!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11442, 1, 0, 0, 'council zere SLAY_COMT'), +(-1564093, 'Lord Illidan... I...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11425, 1, 0, 0, 'council gath DEATH'), +(-1564094, 'You got lucky!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11527, 1, 0, 0, 'council vera DEATH'), +(-1564095, 'Destiny... awaits.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11485, 1, 0, 0, 'council mala DEATH'), +(-1564096, 'Diel ma''ahn... oreindel''o', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11443, 1, 0, 0, 'council zere DEATH'); -- -1 565 000 GRUUL'S LAIR -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1565000,'Gronn are the real power in outland.',11367,1,0,'maulgar SAY_AGGRO'), -(-1565001,'You will not defeat the hand of Gruul!',11368,1,0,'maulgar SAY_ENRAGE'), -(-1565002,'You won\'t kill next one so easy!',11369,1,0,'maulgar SAY_OGRE_DEATH1'), -(-1565003,'Pah! Does not prove anything!',11370,1,0,'maulgar SAY_OGRE_DEATH2'), -(-1565004,'I\'m not afraid of you.',11371,1,0,'maulgar SAY_OGRE_DEATH3'), -(-1565005,'Good, now you fight me!',11372,1,0,'maulgar SAY_OGRE_DEATH4'), -(-1565006,'You not so tough afterall!',11373,1,0,'maulgar SAY_SLAY1'), -(-1565007,'Aha-ha ha ha!',11374,1,0,'maulgar SAY_SLAY2'), -(-1565008,'Mulgar is king!',11375,1,0,'maulgar SAY_SLAY3'), -(-1565009,'Gruul... will crush you...',11376,1,0,'maulgar SAY_DEATH'), - -(-1565010,'Come... and die.',11355,1,0,'gruul SAY_AGGRO'), -(-1565011,'Scurry',11356,1,0,'gruul SAY_SLAM1'), -(-1565012,'No escape',11357,1,0,'gruul SAY_SLAM2'), -(-1565013,'Stay',11358,1,0,'gruul SAY_SHATTER1'), -(-1565014,'Beg... for life',11359,1,0,'gruul SAY_SHATTER2'), -(-1565015,'No more',11360,1,0,'gruul SAY_SLAY1'), -(-1565016,'Unworthy',11361,1,0,'gruul SAY_SLAY2'), -(-1565017,'Die',11362,1,0,'gruul SAY_SLAY3'), -(-1565018,'Aaargh...',11363,1,0,'gruul SAY_DEATH'), -(-1565019,'grows in size!',0,2,0,'gruul EMOTE_GROW'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1565000, 'Gronn are the real power in outland.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11367, 1, 0, 0, 'maulgar SAY_AGGRO'), +(-1565001, 'You will not defeat the hand of Gruul!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11368, 1, 0, 0, 'maulgar SAY_ENRAGE'), +(-1565002, 'You won''t kill next one so easy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11369, 1, 0, 0, 'maulgar SAY_OGRE_DEATH1'), +(-1565003, 'Pah! Does not prove anything!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11370, 1, 0, 0, 'maulgar SAY_OGRE_DEATH2'), +(-1565004, 'I''m not afraid of you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11371, 1, 0, 0, 'maulgar SAY_OGRE_DEATH3'), +(-1565005, 'Good, now you fight me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11372, 1, 0, 0, 'maulgar SAY_OGRE_DEATH4'), +(-1565006, 'You not so tough afterall!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11373, 1, 0, 0, 'maulgar SAY_SLAY1'), +(-1565007, 'Aha-ha ha ha!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11374, 1, 0, 0, 'maulgar SAY_SLAY2'), +(-1565008, 'Mulgar is king!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11375, 1, 0, 0, 'maulgar SAY_SLAY3'), +(-1565009, 'Gruul... will crush you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11376, 1, 0, 0, 'maulgar SAY_DEATH'), +(-1565010, 'Come... and die.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11355, 1, 0, 0, 'gruul SAY_AGGRO'), +(-1565011, 'Scurry', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11356, 1, 0, 0, 'gruul SAY_SLAM1'), +(-1565012, 'No escape', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11357, 1, 0, 0, 'gruul SAY_SLAM2'), +(-1565013, 'Stay', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11358, 1, 0, 0, 'gruul SAY_SHATTER1'), +(-1565014, 'Beg... for life', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11359, 1, 0, 0, 'gruul SAY_SHATTER2'), +(-1565015, 'No more', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11360, 1, 0, 0, 'gruul SAY_SLAY1'), +(-1565016, 'Unworthy', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11361, 1, 0, 0, 'gruul SAY_SLAY2'), +(-1565017, 'Die', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11362, 1, 0, 0, 'gruul SAY_SLAY3'), +(-1565018, 'Aaargh...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11363, 1, 0, 0, 'gruul SAY_DEATH'), +(-1565019, 'grows in size!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2, 0, 0, 'gruul EMOTE_GROW'); -- -1 568 000 ZUL'AMAN -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1568000,'Spirits of da wind be your doom!',12031,1,0,'janalai SAY_AGGRO'), -(-1568001,'I burn ya now!',12032,1,0,'janalai SAY_FIRE_BOMBS'), -(-1568002,'Where ma hatcha? Get to work on dem eggs!',12033,1,0,'janalai SAY_SUMMON_HATCHER'), -(-1568003,'I show you strength... in numbers.',12034,1,0,'janalai SAY_ALL_EGGS'), -(-1568004,'You done run outta time!',12035,1,0,'janalai SAY_BERSERK'), -(-1568005,'It all be over now, mon!',12036,1,0,'janalai SAY_SLAY_1'), -(-1568006,'Tazaga-choo!',12037,1,0,'janalai SAY_SLAY_2'), -(-1568007,'Zul\'jin... got a surprise for you...',12038,1,0,'janalai SAY_DEATH'), -(-1568008,'Come, strangers. The spirit of the dragonhawk hot be hungry for worthy souls.',12039,1,0,'janalai SAY_EVENT_STRANGERS'), -(-1568009,'Come, friends. Your bodies gonna feed ma hatchlings, and your souls are going to feed me with power!',12040,1,0,'janalai SAY_EVENT_FRIENDS'), +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1568000, 'Spirits of da wind be your doom!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12031, 1, 0, 0, 'janalai SAY_AGGRO'), +(-1568001, 'I burn ya now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12032, 1, 0, 0, 'janalai SAY_FIRE_BOMBS'), +(-1568002, 'Where ma hatcha? Get to work on dem eggs!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12033, 1, 0, 0, 'janalai SAY_SUMMON_HATCHER'), +(-1568003, 'I show you strength... in numbers.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12034, 1, 0, 0, 'janalai SAY_ALL_EGGS'), +(-1568004, 'You done run outta time!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12035, 1, 0, 0, 'janalai SAY_BERSERK'), +(-1568005, 'It all be over now, mon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12036, 1, 0, 0, 'janalai SAY_SLAY_1'), +(-1568006, 'Tazaga-choo!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12037, 1, 0, 0, 'janalai SAY_SLAY_2'), +(-1568007, 'Zul''jin... got a surprise for you...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12038, 1, 0, 0, 'janalai SAY_DEATH'), +(-1568008, 'Come, strangers. The spirit of the dragonhawk hot be hungry for worthy souls.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12039, 1, 0, 0, 'janalai SAY_EVENT_STRANGERS'), +(-1568009, 'Come, friends. Your bodies gonna feed ma hatchlings, and your souls are going to feed me with power!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12040, 1, 0, 0, 'janalai SAY_EVENT_FRIENDS'), +(-1568010, 'Get da move on, guards! It be killin'' time!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12066, 1, 0, 0, 'nalorakk SAY_WAVE1_AGGRO'), +(-1568011, 'Guards, go already! Who you more afraid of, dem... or me?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12067, 1, 0, 0, 'nalorakk SAY_WAVE2_STAIR1'), +(-1568012, 'Ride now! Ride out dere and bring me back some heads!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12068, 1, 0, 0, 'nalorakk SAY_WAVE3_STAIR2'), +(-1568013, 'I be losin'' me patience! Go on: make dem wish dey was never born!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12069, 1, 0, 0, 'nalorakk SAY_WAVE4_PLATFORM'), +(-1568014, 'What could be better than servin'' da bear spirit for eternity? Come closer now. Bring your souls to me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12078, 1, 0, 0, 'nalorakk SAY_EVENT1_SACRIFICE'), +(-1568015, 'Don''t be delayin'' your fate. Come to me now. I make your sacrifice quick.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12079, 1, 0, 0, 'nalorakk SAY_EVENT2_SACRIFICE'), +(-1568016, 'You be dead soon enough!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12070, 1, 0, 0, 'nalorakk SAY_AGGRO'), +(-1568017, 'I bring da pain!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12071, 1, 0, 0, 'nalorakk SAY_SURGE'), +(-1568018, 'You call on da beast, you gonna get more dan you bargain for!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12072, 1, 0, 0, 'nalorakk SAY_TOBEAR'), +(-1568019, 'Make way for Nalorakk!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12073, 1, 0, 0, 'nalorakk SAY_TOTROLL'), +(-1568020, 'You had your chance, now it be too late!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12074, 1, 0, 0, 'nalorakk SAY_BERSERK'), +(-1568021, 'Mua-ha-ha! Now whatchoo got to say?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12075, 1, 0, 0, 'nalorakk SAY_SLAY1'), +(-1568022, 'Da Amani gonna rule again!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12076, 1, 0, 0, 'nalorakk SAY_SLAY2'), +(-1568023, 'I... be waitin'' on da udda side....', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12077, 1, 0, 0, 'nalorakk SAY_DEATH'); -(-1568010,'Get da move on, guards! It be killin\' time!',12066,1,0,'nalorakk SAY_WAVE1_AGGRO'), -(-1568011,'Guards, go already! Who you more afraid of, dem... or me?',12067,1,0,'nalorakk SAY_WAVE2_STAIR1'), -(-1568012,'Ride now! Ride out dere and bring me back some heads!',12068,1,0,'nalorakk SAY_WAVE3_STAIR2'), -(-1568013,'I be losin\' me patience! Go on: make dem wish dey was never born!',12069,1,0,'nalorakk SAY_WAVE4_PLATFORM'), -(-1568014,'What could be better than servin\' da bear spirit for eternity? Come closer now. Bring your souls to me!',12078,1,0,'nalorakk SAY_EVENT1_SACRIFICE'), -(-1568015,'Don\'t be delayin\' your fate. Come to me now. I make your sacrifice quick.',12079,1,0,'nalorakk SAY_EVENT2_SACRIFICE'), -(-1568016,'You be dead soon enough!',12070,1,0,'nalorakk SAY_AGGRO'), -(-1568017,'I bring da pain!',12071,1,0,'nalorakk SAY_SURGE'), -(-1568018,'You call on da beast, you gonna get more dan you bargain for!',12072,1,0,'nalorakk SAY_TOBEAR'), -(-1568019,'Make way for Nalorakk!',12073,1,0,'nalorakk SAY_TOTROLL'), -(-1568020,'You had your chance, now it be too late!',12074,1,0,'nalorakk SAY_BERSERK'), -(-1568021,'Mua-ha-ha! Now whatchoo got to say?',12075,1,0,'nalorakk SAY_SLAY1'), -(-1568022,'Da Amani gonna rule again!',12076,1,0,'nalorakk SAY_SLAY2'), -(-1568023,'I... be waitin\' on da udda side....',12077,1,0,'nalorakk SAY_DEATH'); +-- -1 574 000 UTGARDE KEEP +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1574000, 'Your blood is mine!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13221, 1, 0, 0, 'keleseth SAY_AGGRO'), +(-1574001, 'Darkness waits', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13223, 1, 0, 0, 'keleseth SAY_KILL'), +(-1574002, 'I join... the night.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13225, 1, 0, 0, 'keleseth SAY_DEATH'), +(-1574003, 'Not so fast.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13222, 1, 0, 0, 'keleseth SAY_FROST_TOMB'), +(-1574004, 'Aranal, lidel! Their fate shall be yours!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13224, 1, 0, 0, 'keleseth SAY_SKELETONS'); -- -1 580 000 SUNWELL PLATEAU -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1580000,'Aggh! No longer will I be a slave to Malygos! Challenge me and you will be destroyed!',12422,1,0,'kalecgos SAY_EVIL_AGGRO'), -(-1580001,'I will purge you!',12423,1,0,'kalecgos SAY_EVIL_SPELL1'), -(-1580002,'Your pain has only begun!',12424,1,0,'kalecgos SAY_EVIL_SPELL2'), -(-1580003,'In the name of Kil\'jaeden!',12425,1,0,'kalecgos SAY_EVIL_SLAY1'), -(-1580004,'You were warned!',12426,1,0,'kalecgos SAY_EVIL_SLAY2'), -(-1580005,'My awakening is complete! You shall all perish!',12427,1,0,'kalecgos SAY_EVIL_ENRAGE'), -(-1580006,'I need... your help... Cannot... resist him... much longer...',12428,1,0,'kalecgos humanoid SAY_GOOD_AGGRO'), -(-1580007,'Aaahhh! Help me, before I lose my mind!',12429,1,0,'kalecgos humanoid SAY_GOOD_NEAR_DEATH'), -(-1580008,'Hurry! There is not much of me left!',12430,1,0,'kalecgos humanoid SAY_GOOD_NEAR_DEATH2'), -(-1580009,'I am forever in your debt. Once we have triumphed over Kil\'jaeden, this entire world will be in your debt as well.',12431,1,0,'kalecgos humanoid SAY_GOOD_PLRWIN'), -(-1580010,'There will be no reprieve. My work here is nearly finished.',12451,1,0,'sathrovarr SAY_SATH_AGGRO'), -(-1580011,'I\'m... never on... the losing... side...',12452,1,0,'sathrovarr SAY_SATH_DEATH'), -(-1580012,'Your misery is my delight!',12453,1,0,'sathrovarr SAY_SATH_SPELL1'), -(-1580013,'I will watch you bleed!',12454,1,0,'sathrovarr SAY_SATH_SPELL2'), -(-1580014,'Pitious mortal!',12455,1,0,'sathrovarr SAY_SATH_SLAY1'), -(-1580015,'Haven\'t you heard? I always win!',12456,1,0,'sathrovarr SAY_SATH_SLAY2'), -(-1580016,'I have toyed with you long enough!',12457,1,0,'sathrovarr SAY_SATH_ENRAGE'), - -(-1580017,'Puny lizard! Death is the only answer you\'ll find here!',12458,1,0,'brutallus YELL_INTRO'), -(-1580018,'Grah! Your magic is weak!',12459,1,0,'brutallus YELL_INTRO_BREAK_ICE'), -(-1580019,'I will crush you!',12460,1,0,'brutallus YELL_INTRO_CHARGE'), -(-1580020,'That was fun.',12461,1,0,'brutallus YELL_INTRO_KILL_MADRIGOSA'), -(-1580021,'Come, try your luck!',12462,1,0,'brutallus YELL_INTRO_TAUNT'), -(-1580022,'Ahh! More lambs to the slaughter!',12463,1,0,'brutallus YELL_AGGRO'), -(-1580023,'Perish, insect!',12464,1,0,'brutallus YELL_KILL1'), -(-1580024,'You are meat!',12465,1,0,'brutallus YELL_KILL2'), -(-1580025,'Too easy!',12466,1,0,'brutallus YELL_KILL3'), -(-1580026,'Bring the fight to me!',12467,1,0,'brutallus YELL_LOVE1'), -(-1580027,'Another day, another glorious battle!',12468,1,0,'brutallus YELL_LOVE2'), -(-1580028,'I live for this!',12469,1,0,'brutallus YELL_LOVE3'), -(-1580029,'So much for a real challenge... Die!',12470,1,0,'brutallus YELL_BERSERK'), -(-1580030,'Gah! Well done... Now... this gets... interesting...',12471,1,0,'brutallus YELL_DEATH'), - -(-1580031,'Hold, friends! There is information to be had before this devil meets his fate!',12472,1,0,'madrigosa YELL_MADR_ICE_BARRIER'), -(-1580032,'Where is Anveena, demon? What has become of Kalec?',12473,1,0,'madrigosa YELL_MADR_INTRO'), -(-1580033,'You will tell me where they are!',12474,1,0,'madrigosa YELL_MADR_ICE_BLOCK'), -(-1580034,'Speak, I grow weary of asking!',12475,1,0,'madrigosa YELL_MADR_TRAP'), -(-1580035,'Malygos, my lord! I did my best!',12476,1,0,'madrigosa YELL_MADR_DEATH'); +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1580000, 'Aggh! No longer will I be a slave to Malygos! Challenge me and you will be destroyed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12422, 1, 0, 0, 'kalecgos SAY_EVIL_AGGRO'), +(-1580001, 'I will purge you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12423, 1, 0, 0, 'kalecgos SAY_EVIL_SPELL1'), +(-1580002, 'Your pain has only begun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12424, 1, 0, 0, 'kalecgos SAY_EVIL_SPELL2'), +(-1580003, 'In the name of Kil''jaeden!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12425, 1, 0, 0, 'kalecgos SAY_EVIL_SLAY1'), +(-1580004, 'You were warned!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12426, 1, 0, 0, 'kalecgos SAY_EVIL_SLAY2'), +(-1580005, 'My awakening is complete! You shall all perish!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12427, 1, 0, 0, 'kalecgos SAY_EVIL_ENRAGE'), +(-1580006, 'I need... your help... Cannot... resist him... much longer...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12428, 1, 0, 0, 'kalecgos humanoid SAY_GOOD_AGGRO'), +(-1580007, 'Aaahhh! Help me, before I lose my mind!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12429, 1, 0, 0, 'kalecgos humanoid SAY_GOOD_NEAR_DEATH'), +(-1580008, 'Hurry! There is not much of me left!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12430, 1, 0, 0, 'kalecgos humanoid SAY_GOOD_NEAR_DEATH2'), +(-1580009, 'I am forever in your debt. Once we have triumphed over Kil''jaeden, this entire world will be in your debt as well.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12431, 1, 0, 0, 'kalecgos humanoid SAY_GOOD_PLRWIN'), +(-1580010, 'There will be no reprieve. My work here is nearly finished.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12451, 1, 0, 0, 'sathrovarr SAY_SATH_AGGRO'), +(-1580011, 'I''m... never on... the losing... side...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12452, 1, 0, 0, 'sathrovarr SAY_SATH_DEATH'), +(-1580012, 'Your misery is my delight!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12453, 1, 0, 0, 'sathrovarr SAY_SATH_SPELL1'), +(-1580013, 'I will watch you bleed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12454, 1, 0, 0, 'sathrovarr SAY_SATH_SPELL2'), +(-1580014, 'Pitious mortal!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12455, 1, 0, 0, 'sathrovarr SAY_SATH_SLAY1'), +(-1580015, 'Haven''t you heard? I always win!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12456, 1, 0, 0, 'sathrovarr SAY_SATH_SLAY2'), +(-1580016, 'I have toyed with you long enough!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12457, 1, 0, 0, 'sathrovarr SAY_SATH_ENRAGE'), +(-1580017, 'Puny lizard! Death is the only answer you''ll find here!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12458, 1, 0, 0, 'brutallus YELL_INTRO'), +(-1580018, 'Grah! Your magic is weak!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12459, 1, 0, 0, 'brutallus YELL_INTRO_BREAK_ICE'), +(-1580019, 'I will crush you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12460, 1, 0, 0, 'brutallus YELL_INTRO_CHARGE'), +(-1580020, 'That was fun.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12461, 1, 0, 0, 'brutallus YELL_INTRO_KILL_MADRIGOSA'), +(-1580021, 'Come, try your luck!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12462, 1, 0, 0, 'brutallus YELL_INTRO_TAUNT'), +(-1580022, 'Ahh! More lambs to the slaughter!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12463, 1, 0, 0, 'brutallus YELL_AGGRO'), +(-1580023, 'Perish, insect!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12464, 1, 0, 0, 'brutallus YELL_KILL1'), +(-1580024, 'You are meat!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12465, 1, 0, 0, 'brutallus YELL_KILL2'), +(-1580025, 'Too easy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12466, 1, 0, 0, 'brutallus YELL_KILL3'), +(-1580026, 'Bring the fight to me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12467, 1, 0, 0, 'brutallus YELL_LOVE1'), +(-1580027, 'Another day, another glorious battle!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12468, 1, 0, 0, 'brutallus YELL_LOVE2'), +(-1580028, 'I live for this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12469, 1, 0, 0, 'brutallus YELL_LOVE3'), +(-1580029, 'So much for a real challenge... Die!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12470, 1, 0, 0, 'brutallus YELL_BERSERK'), +(-1580030, 'Gah! Well done... Now... this gets... interesting...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12471, 1, 0, 0, 'brutallus YELL_DEATH'), +(-1580031, 'Hold, friends! There is information to be had before this devil meets his fate!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12472, 1, 0, 0, 'madrigosa YELL_MADR_ICE_BARRIER'), +(-1580032, 'Where is Anveena, demon? What has become of Kalec?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12473, 1, 0, 0, 'madrigosa YELL_MADR_INTRO'), +(-1580033, 'You will tell me where they are!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12474, 1, 0, 0, 'madrigosa YELL_MADR_ICE_BLOCK'), +(-1580034, 'Speak, I grow weary of asking!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12475, 1, 0, 0, 'madrigosa YELL_MADR_TRAP'), +(-1580035, 'Malygos, my lord! I did my best!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12476, 1, 0, 0, 'madrigosa YELL_MADR_DEATH'), +(-1580036, 'Glory to Kil''jaeden! Death to all who oppose!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12477, 1, 0, 0, 'felmyst - YELL_BIRTH'), +(-1580037, 'I kill for the master!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12480, 1, 0, 0, 'felmyst - YELL_KILL1'), +(-1580038, 'The end has come!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12481, 1, 0, 0, 'felmyst - YELL_KILL2'), +(-1580039, 'Choke on your final breath!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12478, 1, 0, 0, 'felmyst - YELL_BREATH'), +(-1580040, 'I am stronger than ever before!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12479, 1, 0, 0, 'felmyst- YELL_TAKEOFF'), +(-1580041, 'No more hesitation! Your fates are written!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12482, 1, 0, 0, 'felmyst - YELL_BERSERK'), +(-1580042, 'Kil''jaeden... will... prevail...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12483, 1, 0, 0, 'felmyst - YELL_DEATH'), +(-1580043, 'Madrigosa deserved a far better fate. You did what had to be done, but this battle is far from over.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12439, 1, 0, 0, 'felmyst - YELL_KALECGOS'), +(-1580044, 'Fire to the aid of shadow!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12489, 1, 0, 0, 'eredar - YELL_CANFLAGRATION'), +(-1580045, 'Sacrolash!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12492, 1, 0, 0, 'eredar - YELL_SISTER_SACROLASH_DEAD'), +(-1580046, 'Fire consume.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12490, 1, 0, 0, 'eredar - YELL_ALY_KILL_1'), +(-1580047, 'Ed-ir Halach!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12491, 1, 0, 0, 'eredar - YELL_ALY_KILL_2'), +(-1580048, 'De-ek Anur!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12494, 1, 0, 0, 'eredar - YELL_ALY_DEAD'), +(-1580049, 'Your luck has run its curse!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12493, 1, 0, 0, 'eredar - YELL_BERSERK'), +(-1580050, 'Shadow to the aid of fire!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12485, 1, 0, 0, 'eredar - YELL_SHADOW_NOVA'), +(-1580051, 'Alythess! Your fire burns within me!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12488, 1, 0, 0, 'eredar - YELL_SISTER_ALYTHESS_DEAD'), +(-1580052, 'Shadow engulf.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12486, 1, 0, 0, 'eredar - YELL_SAC_KILL_1'), +(-1580053, 'Ee-nok Kryul!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12487, 1, 0, 0, 'eredar - YELL_SAC_KILL_2'), +(-1580054, 'I... fade.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_SAC_DEAD'), +(-1580055, 'Time is a luxury you no longer possess!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_ENRAGE'), +(-1580056, 'Misery...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12484, 1, 0, 0, 'eredar - YELL_INTRO_SAC_1'), +(-1580057, 'Depravity...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_INTRO_ALY_2'), +(-1580058, 'Confusion...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_INTRO_SAC_3'), +(-1580059, 'Hatred...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_INTRO_ALY_4'), +(-1580060, 'Mistrust...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_INTRO_SAC_5'), +(-1580061, 'Chaos...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_INTRO_ALY_6'), +(-1580062, 'These are the hallmarks...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_INTRO_SAC_7'), +(-1580063, 'These are the pillars...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'eredar - YELL_INTRO_ALY_8'), +(-1580064, 'directs Shadow Nova at $N', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'eredar - emote shadow nova'), +(-1580065, 'directs Conflagration at $N', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'eredar - emote conflagration'), +(-1580066, 'All my plans have led to this!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12495, 1, 0, 0, 'KJ - SAY_KJ_OFFCOMBAT1'), +(-1580067, 'Stay on task! Do not waste tim!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12496, 1, 0, 0, 'KJ - SAY_KJ_OFFCOMBAT2'), +(-1580068, 'I have waited long enough!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12497, 1, 0, 0, 'KJ - SAY_KJ_OFFCOMBAT3'), +(-1580069, 'Fail me and suffer for eternity!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12498, 1, 0, 0, 'KJ - SAY_KJ_OFFCOMBAT4'), +(-1580070, 'Drain the girl! Drain her power until there is nothing but a vacant shell!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12499, 1, 0, 0, 'KJ - SAY_KJ_OFFCOMBAT5'), +(-1580071, 'The expendible have perished... So be it! Now I shall succeed where Sargeras could not! I will bleed this wretched world and secure my place as the true master of the Burning Legion. The end has come! Let the unraveling of this world commence!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12500, 1, 0, 0, 'KJ - SAY_KJ_EMERGE'), +(-1580072, 'Another step towards destruction!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12501, 1, 0, 0, 'KJ - SAY_KJ_SLAY1'), +(-1580073, 'Anak-ky''ri!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12502, 1, 0, 0, 'KJ - SAY_KJ_SLAY2'), +(-1580074, 'Who can you trust?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12503, 1, 0, 0, 'KJ - SAY_KJ_REFLECTION1'), +(-1580075, 'The enemy is among you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12504, 1, 0, 0, 'KJ - SAY_KJ_REFLECTION2'), +(-1580076, 'Chaos!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12505, 1, 0, 0, 'KJ - SAY_KJ_DARKNESS1'), +(-1580077, 'Destruction!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12506, 1, 0, 0, 'KJ - SAY_KJ_DARKNESS2'), +(-1580078, 'Oblivion!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12507, 1, 0, 0, 'KJ - SAY_KJ_DARKNESS3'), +(-1580079, 'I will not be denied! This world shall fall!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12508, 1, 0, 0, 'KJ - SAY_KJ_PHASE3'), +(-1580080, 'Do not harbor false hope. You cannot win!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12509, 1, 0, 0, 'KJ - SAY_KJ_PHASE4'), +(-1580081, 'Aggghh! The powers of the Sunwell... turned... against me! What have you done? WHAT HAVE YOU DONE?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12510, 1, 0, 0, 'KJ - SAY_KJ_PHASE5'), +(-1580082, 'Anveena, you must awaken, this world needs you!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12445, 1, 0, 0, 'KJ - SAY_KALECGOS_AWAKEN'), +(-1580083, 'I serve only the Master now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12511, 1, 0, 0, 'KJ - SAY_ANVEENA_IMPRISONED'), +(-1580084, 'You must let go! You must become what you were always meant to be! The time is now, Anveena!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12446, 1, 0, 0, 'KJ - SAY_KALECGOS_LETGO'), +(-1580085, 'But I''m... lost... I cannot find my way back!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12512, 1, 0, 0, 'KJ - SAY_ANVEENA_LOST'), +(-1580086, 'Anveena, I love you! Focus on my voice, come back for me now! Only you can cleanse the Sunwell!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12447, 1, 0, 0, 'KJ - SAY_KALECGOS_FOCUS'), +(-1580087, 'Kalec... Kalec?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12513, 1, 0, 0, 'KJ - SAY_ANVEENA_KALEC'), +(-1580088, 'Yes, Anveena! Let fate embrace you now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12448, 1, 0, 0, 'KJ - SAY_KALECGOS_FATE'), +(-1580089, 'The nightmare is over, the spell is broken! Goodbye, Kalec, my love!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12514, 1, 0, 0, 'KJ - SAY_ANVEENA_GOODBYE'), +(-1580090, 'Goodbye, Anveena, my love. Few will remember your name, yet this day you change the course of destiny. What was once corrupt is now pure. Heroes, do not let her sacrifice be in vain.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12450, 1, 0, 0, 'KJ - SAY_KALECGOS_GOODBYE'), +(-1580091, 'Strike now, heroes, while he is weakened! Vanquish the Deceiver!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12449, 1, 0, 0, 'KJ - SAY_KALECGOS_ENCOURAGE'), +(-1580092, 'You are not alone. The Blue Dragonflight shall help you vanquish the Deceiver.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12438, 1, 0, 0, 'KJ - SAY_KALECGOS_JOIN'), +(-1580093, 'Nooooooooooooo!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12527, 1, 0, 0, 'KJ - SAY_KJ_DEATH'), +(-1580094, 'begins to channel dark energy', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'KJ - EMOTE_KJ_DARKNESS'), +(-1580095, 'I will channel my power into the orbs, be ready!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12440, 1, 0, 0, 'KJ - SAY_KALEC_ORB_READY1'), +(-1580096, 'I have empowered another orb! Use it quickly!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12441, 1, 0, 0, 'KJ - SAY_KALEC_ORB_READY2'), +(-1580097, 'Another orb is ready! Make haste!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12442, 1, 0, 0, 'KJ - SAY_KALEC_ORB_READY3'), +(-1580098, 'I have channeled all I can! The power is in your hands!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12443, 1, 0, 0, 'KJ - SAY_KALEC_ORB_READY4'), +(-1580099, 'Mortal heroes, your victory here today was foretold long ago. My brother''s anguished cry of defeat will echo across the universe, bringing renewed hope to all those who still stand against the Burning Crusade.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12515, 0, 0, 0, 'prophet velen - SAY1'), +(-1580100, 'As the Legion''s final defeat draws ever-nearer, stand proud in the knowledge that you have saved worlds without number from the flame. Just as this day marks an ending, so too does it herald a new beginning...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12516, 0, 0, 0, 'prophet velen - SAY2'), +(-1580101, 'The creature Entropius, whom you were forced to destroy, was once the noble naaru, M''uru. In life, M''uru channeled vast energies of LIGHT and HOPE. For a time, a misguided few sought to steal those energies...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12518, 0, 0, 0, 'prophet velen - SAY3'), +(-1580102, 'Then fortunate it is, that I have reclaimed the noble naaru''s spark from where it fell! Where faith dwells, hope is never lost, young blood elf.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12519, 0, 0, 0, 'prophet velen - SAY4'), +(-1580103, 'Gaze now, mortals - upon the HEART OF M''URU! Unblemished. Bathed by the light of Creation - just as it was at the Dawn.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12520, 0, 0, 0, 'prophet velen - SAY5'), +(-1580104, 'In time, the light and hope held within - will rebirth more than this mere fount of power... Mayhap, they will rebirth the soul of a nation.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12521, 0, 0, 0, 'prophet velen - SAY6'), +(-1580105, 'Salvation, young one. It waits for us all.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12522, 0, 0, 0, 'prophet velen - SAY7'), +(-1580106, 'Farewell...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12523, 0, 0, 0, 'prophet velen - SAY8'), +(-1580107, 'Our arrogance was unpardonable. We damned one of the most noble beings of all. We may never atone for this sin.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12524, 0, 0, 0, 'lady liadrinn - SAY1'), +(-1580108, 'Can it be?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12525, 0, 0, 0, 'lady liadrinn - SAY2'), +(-1580109, 'Blessed ancestors! I feel it... so much love... so much grace... there are... no words... impossible to describe...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12525, 0, 0, 0, 'lady liadrinn - SAY3'); -- -1 585 000 MAGISTER'S TERRACE -INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES -(-1585000,'You only waste my time!',12378,1,0,'selin SAY_AGGRO'), -(-1585001,'My hunger knows no bounds!',12381,1,0,'selin SAY_ENERGY'), -(-1585002,'Yes! I am a god!',12382,1,0,'selin SAY_EMPOWERED'), -(-1585003,'Enough distractions!',12388,1,0,'selin SAY_KILL_1'), -(-1585004,'I am invincible!',12385,1,0,'selin SAY_KILL_2'), -(-1585005,'No! More... I must have more!',12383,1,0,'selin SAY_DEATH'), -(-1585006,'begins to channel from the nearby Fel Crystal...',0,3,0,'selin EMOTE_CRYSTAL'), - -(-1585007,'Drain...life!',12389,1,0,'vexallus SAY_AGGRO'), -(-1585008,'Un...con...tainable.',12392,1,0,'vexallus SAY_ENERGY'), -(-1585009,'Un...leash...',12390,1,0,'vexallus SAY_OVERLOAD'), -(-1585010,'Con...sume.',12393,1,0,'vexallus SAY_KILL'), -(-1585011,'discharges pure energy!',0,3,0,'vexallus EMOTE_DISCHARGE_ENERGY'), - -(-1585012,'Annihilate them!',12395,1,0,'delrissa SAY_AGGRO'), -(-1585013,'Oh, the horror.',12398,1,0,'delrissa LackeyDeath1'), -(-1585014,'Well, aren\'t you lucky?',12400,1,0,'delrissa LackeyDeath2'), -(-1585015,'Now I\'m getting annoyed.',12401,1,0,'delrissa LackeyDeath3'), -(-1585016,'Lackies be damned! I\'ll finish you myself!',12403,1,0,'delrissa LackeyDeath4'), -(-1585017,'I call that a good start.',12405,1,0,'delrissa PlayerDeath1'), -(-1585018,'I could have sworn there were more of you.',12407,1,0,'delrissa PlayerDeath2'), -(-1585019,'Not really much of a group, anymore, is it?',12409,1,0,'delrissa PlayerDeath3'), -(-1585020,'One is such a lonely number.',12410,1,0,'delrissa PlayerDeath4'), -(-1585021,'It\'s been a kick, really.',12411,1,0,'delrissa PlayerDeath5'), -(-1585022,'Not what I had... planned...',12397,1,0,'delrissa SAY_DEATH'), - -(-1585023,'Don\'t look so smug! I know what you\'re thinking, but Tempest Keep was merely a set back. Did you honestly believe I would trust the future to some blind, half-night elf mongrel? Oh no, he was merely an instrument, a stepping stone to a much larger plan! It has all led to this, and this time, you will not interfere!',12413,1,0,'kaelthas MT SAY_AGGRO'), -(-1585024,'Vengeance burns!',12415,1,0,'kaelthas MT SAY_PHOENIX'), -(-1585025,'Felomin ashal!',12417,1,0,'kaelthas MT SAY_FLAMESTRIKE'), -(-1585026,'I\'ll turn your world... upside... down...',12418,1,0,'kaelthas MT SAY_GRAVITY_LAPSE'), -(-1585027,'Master... grant me strength.',12419,1,0,'kaelthas MT SAY_TIRED'), -(-1585028,'Do not... get too comfortable.',12420,1,0,'kaelthas MT SAY_RECAST_GRAVITY'), -(-1585029,'My demise accomplishes nothing! The Master will have you! You will drown in your own blood! This world shall burn! Aaaghh!',12421,1,0,'kaelthas MT SAY_DEATH'); - --- -1 645 000 377_word_scripts.sql -INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `comment`) VALUES -(-1645006,'Let the trial begin, Bloodwrath, attack!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,1,0,'master_kelerun_bloodmourn YELL_PHASE'), -(-1645007,'Champion Lightrend, make me proud!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,1,0,'master_kelerun_bloodmourn YELL_PHASE'), -(-1645008,'Show this upstart how a real Blood Knight fights, Swiftblade!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,1,0,'master_kelerun_bloodmourn YELL_PHASE'), -(-1645009,'Show $N the meaning of pain, Sunstriker!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,1,0,'master_kelerun_bloodmourn YELL_PHASE'); - +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1585000, 'You only waste my time!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12378, 1, 0, 0, 'selin SAY_AGGRO'), +(-1585001, 'My hunger knows no bounds!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12381, 1, 0, 0, 'selin SAY_ENERGY'), +(-1585002, 'Yes! I am a god!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12382, 1, 0, 0, 'selin SAY_EMPOWERED'), +(-1585003, 'Enough distractions!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12388, 1, 0, 0, 'selin SAY_KILL_1'), +(-1585004, 'I am invincible!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12385, 1, 0, 0, 'selin SAY_KILL_2'), +(-1585005, 'No! More... I must have more!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12383, 1, 0, 0, 'selin SAY_DEATH'), +(-1585006, 'begins to channel from the nearby Fel Crystal...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'selin EMOTE_CRYSTAL'), +(-1585007, 'Drain...life!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12389, 1, 0, 0, 'vexallus SAY_AGGRO'), +(-1585008, 'Un...con...tainable.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12392, 1, 0, 0, 'vexallus SAY_ENERGY'), +(-1585009, 'Un...leash...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12390, 1, 0, 0, 'vexallus SAY_OVERLOAD'), +(-1585010, 'Con...sume.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12393, 1, 0, 0, 'vexallus SAY_KILL'), +(-1585011, 'discharges pure energy!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'vexallus EMOTE_DISCHARGE_ENERGY'), +(-1585012, 'Annihilate them!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12395, 1, 0, 0, 'delrissa SAY_AGGRO'), +(-1585013, 'Oh, the horror.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12398, 1, 0, 0, 'delrissa LackeyDeath1'), +(-1585014, 'Well, aren''t you lucky?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12400, 1, 0, 0, 'delrissa LackeyDeath2'), +(-1585015, 'Now I''m getting annoyed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12401, 1, 0, 0, 'delrissa LackeyDeath3'), +(-1585016, 'Lackies be damned! I''ll finish you myself!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12403, 1, 0, 0, 'delrissa LackeyDeath4'), +(-1585017, 'I call that a good start.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12405, 1, 0, 0, 'delrissa PlayerDeath1'), +(-1585018, 'I could have sworn there were more of you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12407, 1, 0, 0, 'delrissa PlayerDeath2'), +(-1585019, 'Not really much of a group, anymore, is it?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12409, 1, 0, 0, 'delrissa PlayerDeath3'), +(-1585020, 'One is such a lonely number.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12410, 1, 0, 0, 'delrissa PlayerDeath4'), +(-1585021, 'It''s been a kick, really.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12411, 1, 0, 0, 'delrissa PlayerDeath5'), +(-1585022, 'Not what I had... planned...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12397, 1, 0, 0, 'delrissa SAY_DEATH'), +(-1585023, 'Don''t look so smug! I know what you''re thinking, but Tempest Keep was merely a set back. Did you honestly believe I would trust the future to some blind, half-night elf mongrel? Oh no, he was merely an instrument, a stepping stone to a much larger plan! It has all led to this, and this time, you will not interfere!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12413, 1, 0, 0, 'kaelthas MT SAY_AGGRO'), +(-1585024, 'Vengeance burns!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12415, 1, 0, 0, 'kaelthas MT SAY_PHOENIX'), +(-1585025, 'Felomin ashal!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12417, 1, 0, 0, 'kaelthas MT SAY_FLAMESTRIKE'), +(-1585026, 'I''ll turn your world... upside... down...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12418, 1, 0, 0, 'kaelthas MT SAY_GRAVITY_LAPSE'), +(-1585027, 'Master... grant me strength.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12419, 1, 0, 0, 'kaelthas MT SAY_TIRED'), +(-1585028, 'Do not... get too comfortable.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12420, 1, 0, 0, 'kaelthas MT SAY_RECAST_GRAVITY'), +(-1585029, 'My demise accomplishes nothing! The Master will have you! You will drown in your own blood! This world shall burn! Aaaghh!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12421, 1, 0, 0, 'kaelthas MT SAY_DEATH'); + +-- -1 645 000 ??? +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1645006, 'Let the trial begin, Bloodwrath, attack!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'master_kelerun_bloodmourn YELL_PHASE'), +(-1645007, 'Champion Lightrend, make me proud!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'master_kelerun_bloodmourn YELL_PHASE'), +(-1645008, 'Show this upstart how a real Blood Knight fights, Swiftblade!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'master_kelerun_bloodmourn YELL_PHASE'), +(-1645009, 'Show $N the meaning of pain, Sunstriker!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'master_kelerun_bloodmourn YELL_PHASE'); + +-- -1 999 900+ - RANDOM +INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES +(-1999900, 'Let the games begin.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8280, 1, 0, 0, 'example_creature SAY_AGGRO'), +(-1999901, 'I see endless suffering. I see torment. I see rage. I see everything.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8831, 1, 0, 0, 'example_creature SAY_RANDOM_0'), +(-1999902, 'Muahahahaha', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8818, 1, 0, 0, 'example_creature SAY_RANDOM_1'), +(-1999903, 'These mortal infedels my lord, they have invaded your sanctum and seek to steal your secrets.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8041, 1, 0, 0, 'example_creature SAY_RANDOM_2'), +(-1999904, 'You are already dead.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8581, 1, 0, 0, 'example_creature SAY_RANDOM_3'), +(-1999905, 'Where to go? What to do? So many choices that all end in pain, end in death.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8791, 1, 0, 0, 'example_creature SAY_RANDOM_4'), +(-1999906, '$N, I sentance you to death!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8588, 1, 0, 0, 'example_creature SAY_BESERK'), +(-1999907, 'The suffering has just begun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, 0, 0, 'example_creature SAY_PHASE'), +(-1999908, 'I always thought I was a good dancer.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_creature SAY_DANCE'), +(-1999909, 'Move out Soldier!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_creature SAY_SALUTE'), +(-1999910, 'Help $N! I''m under attack!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_AGGRO1'), +(-1999911, 'Die scum!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_AGGRO2'), +(-1999912, 'Hmm a nice day for a walk alright', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_WP_1'), +(-1999913, 'Wild Felboar attack!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_WP_2'), +(-1999914, 'Time for me to go! See ya around $N!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 3, 'example_escort SAY_WP_3'), +(-1999915, 'Bye Bye!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 3, 'example_escort SAY_WP_4'), +(-1999916, 'How dare you leave me like that! I hate you! =*(', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 3, 0, 0, 'example_escort SAY_DEATH_1'), +(-1999917, '...no...how could you let me die $N', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_DEATH_2'), +(-1999918, 'ugh...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_DEATH_3'), +(-1999919, 'Taste death!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_SPELL'), +(-1999920, 'Fireworks!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_RAND_1'), +(-1999921, 'Hmm, I think I could use a buff.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_escort SAY_RAND_2'), +(-1999922, 'Normal select, guess you''re not interested.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_gossip_codebox SAY_NOT_INTERESTED'), +(-1999923, 'Wrong!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_gossip_codebox SAY_WRONG'), +(-1999924, 'You''re right, you are allowed to see my inner secrets.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_gossip_codebox SAY_CORRECT'), +(-1999925, 'Hi!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'example_areatrigger SAY_HI'); -- -- Below just for beautiful view in table, run at own desire --- - --- ALTER TABLE `script_texts` ORDER BY `entry` desc; - +--
\ No newline at end of file diff --git a/sql/updates/0000_3.0.9_old.sql b/sql/updates/0000_3.0.9_old.sql new file mode 100644 index 00000000000..6076c0193a1 --- /dev/null +++ b/sql/updates/0000_3.0.9_old.sql @@ -0,0 +1,4328 @@ +-- 805_world_scripts +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1533039 AND -1533000; +INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES +(-1533000,'Ahh... welcome to my parlor.',8788,1,0,'anubrekhan SAY_GREET'), +(-1533001,'Just a little taste...',8785,1,0,'anubrekhan SAY_AGGRO1'), +(-1533002,'There is no way out.',8786,1,0,'anubrekhan SAY_AGGRO2'), +(-1533003,'Yes, Run! It makes the blood pump faster!',8787,1,0,'anubrekhan SAY_AGGRO3'), +(-1533004,'I hear little hearts beating. Yesss... beating faster now. Soon the beating will stop.',8790,1,0,'anubrekhan SAY_TAUNT1'), +(-1533005,'Where to go? What to do? So many choices that all end in pain, end in death.',8791,1,0,'anubrekhan SAY_TAUNT2'), +(-1533006,'Which one shall I eat first? So difficult to choose... the all smell so delicious.',8792,1,0,'anubrekhan SAY_TAUNT3'), +(-1533007,'Closer now... tasty morsels. I\'ve been too long without food. Without blood to drink.',8793,1,0,'anubrekhan SAY_TAUNT4'), +(-1533008,'Shh... it will all be over soon.',8789,1,0,'anubrekhan SAY_SLAY'), +(-1533009,'Your old lives, your mortal desires, mean nothing. You are acolytes of the master now, and you will serve the cause without question! The greatest glory is to die in the master\'s service!',8799,1,0,'faerlina SAY_GREET'), +(-1533010,'Slay them in the master\'s name!',8794,1,0,'faerlina SAY_AGGRO1'), +(-1533011,'You cannot hide from me!',8795,1,0,'faerlina SAY_AGGRO2'), +(-1533012,'Kneel before me, worm!',8796,1,0,'faerlina SAY_AGGRO3'), +(-1533013,'Run while you still can!',8797,1,0,'faerlina SAY_AGGRO4'), +(-1533014,'You have failed!',8800,1,0,'faerlina SAY_SLAY1'), +(-1533015,'Pathetic wretch!',8801,1,0,'faerlina SAY_SLAY2'), +(-1533016,'The master... will avenge me!',8798,1,0,'faerlina SAY_DEATH'), +(-1533017,'Patchwerk want to play!',8909,1,0,'patchwerk SAY_AGGRO1'), +(-1533018,'Kel\'Thuzad make Patchwerk his Avatar of War!',8910,1,0,'patchwerk SAY_AGGRO2'), +(-1533019,'No more play?',8912,1,0,'patchwerk SAY_SLAY'), +(-1533020,'What happened to... Patch...',8911,1,0,'patchwerk SAY_DEATH'), +(-1533021,'goes into a berserker rage!',0,2,0,'patchwerk EMOTE_BERSERK'), +(-1533022,'becomes enraged!',0,2,0,'patchwerk EMOTE_ENRAGE'), +(-1533023,'Stalagg crush you!',8864,1,0,'stalagg SAY_STAL_AGGRO'), +(-1533024,'Stalagg kill!',8866,1,0,'stalagg SAY_STAL_SLAY'), +(-1533025,'Master save me...',8865,1,0,'stalagg SAY_STAL_DEATH'), +(-1533026,'Feed you to master!',8802,1,0,'feugen SAY_FEUG_AGGRO'), +(-1533027,'Feugen make master happy!',8804,1,0,'feugen SAY_FEUG_SLAY'), +(-1533028,'No... more... Feugen...',8803,1,0,'feugen SAY_FEUG_DEATH'), +(-1533029,'You are too late... I... must... OBEY!',8872,1,0,'thaddius SAY_GREET'), +(-1533030,'KILL!',8867,1,0,'thaddius SAY_AGGRO1'), +(-1533031,'EAT YOUR BONES!',8868,1,0,'thaddius SAY_AGGRO2'), +(-1533032,'BREAK YOU!',8869,1,0,'thaddius SAY_AGGRO3'), +(-1533033,'You die now!',8877,1,0,'thaddius SAY_SLAY'), +(-1533034,'Now YOU feel pain!',8871,1,0,'thaddius SAY_ELECT'), +(-1533035,'Thank... you...',8870,1,0,'thaddius SAY_DEATH'), +(-1533036,'Pleeease!',8873,1,0,'thaddius SAY_SCREAM1'), +(-1533037,'Stop, make it stop!',8874,1,0,'thaddius SAY_SCREAM2'), +(-1533038,'Help me! Save me!',8875,1,0,'thaddius SAY_SCREAM3'), +(-1533039,'Please, nooo!',8876,1,0,'thaddius SAY_SCREAM4'); + +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1533074 AND -1533040; +INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES +(-1533040,'Foolishly you have sought your own demise. Brazenly you have disregarded powers beyond your understanding. You have fought hard to invade the realm of the harvester. Now there is only one way out - to walk the lonely path of the damned.',8807,1,0,'gothik SAY_SPEECH'), +(-1533041,'Death is the only escape.',8806,1,0,'gothik SAY_KILL'), +(-1533042,'I... am... undone!',8805,1,0,'gothik SAY_DEATH'), +(-1533043,'I have waited long enough! Now, you face the harvester of souls!',8808,1,0,'gothik SAY_TELEPORT'), +(-1533044,'Defend youself!',8892,1,0,'blaumeux SAY_BLAU_AGGRO'), +(-1533045,'Come, Zeliek, do not drive them out. Not before we\'ve had our fun.',8896,1,0,'blaumeux SAY_BLAU_TAUNT1'), +(-1533046,'I do hope they stay alive long enough for me to... introduce myself.',8897,1,0,'blaumeux SAY_BLAU_TAUNT2'), +(-1533047,'The first kill goes to me! Anyone care to wager?',8898,1,0,'blaumeux SAY_BLAU_TAUNT3'), +(-1533048,'Your life is mine!',8895,1,0,'blaumeux SAY_BLAU_SPECIAL'), +(-1533049,'Who\'s next?',8894,1,0,'blaumeux SAY_BLAU_SLAY'), +(-1533050,'Tou... che!',8893,1,0,'blaumeux SAY_BLAU_DEATH'), +(-1533051,'Come out and fight, ye wee ninny!',8899,1,0,'korthazz SAY_KORT_AGGRO'), +(-1533052,'To arms, ye roustabouts! We\'ve got company!',8903,1,0,'korthazz SAY_KORT_TAUNT1'), +(-1533053,'I heard about enough of yer sniveling. Shut yer fly trap \'afore I shut it for ye!',8904,1,0,'korthazz SAY_KORT_TAUNT2'), +(-1533054,'I\'m gonna enjoy killin\' these slack-jawed daffodils!',8905,1,0,'korthazz SAY_KORT_TAUNT3'), +(-1533055,'I like my meat extra crispy!',8901,1,0,'korthazz SAY_KORT_SPECIAl'), +(-1533056,'Next time, bring more friends!',8902,1,0,'korthazz SAY_KORT_SLAY'), +(-1533057,'What a bloody waste this is!',8900,1,0,'korthazz SAY_KORT_DEATH'), +(-1533058,'Flee, before it\'s too late!',8913,1,0,'zeliek SAY_ZELI_AGGRO'), +(-1533059,'Invaders, cease this foolish venture at once! Turn away while you still can!',8917,1,0,'zeliek SAY_ZELI_TAUNT1'), +(-1533060,'Perhaps they will come to their senses, and run away as fast as they can!',8918,1,0,'zeliek SAY_ZELI_TAUNT2'), +(-1533061,'Do not continue! Turn back while there\'s still time!',8919,1,0,'zeliek SAY_ZELI_TAUNT3'), +(-1533062,'I- I have no choice but to obey!',8916,1,0,'zeliek SAY_ZELI_SPECIAL'), +(-1533063,'Forgive me!',8915,1,0,'zeliek SAY_ZELI_SLAY'), +(-1533064,'It is... as it should be.',8914,1,0,'zeliek SAY_ZELI_DEATH'), +(-1533065,'You seek death?',14571,1,0,'rivendare_naxx SAY_RIVE_AGGRO1'), +(-1533066,'None shall pass!',14572,1,0,'rivendare_naxx SAY_RIVE_AGGRO2'), +(-1533067,'Be still!',14573,1,0,'rivendare_naxx SAY_RIVE_AGGRO3'), +(-1533068,'You will find no peace in death.',14574,1,0,'rivendare_naxx SAY_RIVE_SLAY1'), +(-1533069,'The master\'s will is done.',14575,1,0,'rivendare_naxx SAY_RIVE_SLAY2'), +(-1533070,'Bow to the might of the scourge!',14576,1,0,'rivendare_naxx SAY_RIVE_SPECIAL'), +(-1533071,'Enough prattling. Let them come! We shall grind their bones to dust.',14577,1,0,'rivendare_naxx SAY_RIVE_TAUNT1'), +(-1533072,'Conserve your anger! Harness your rage! You will all have outlets for your frustration soon enough.',14578,1,0,'rivendare_naxx SAY_RIVE_TAUNT2'), +(-1533073,'Life is meaningless. It is in death that we are truly tested.',14579,1,0,'rivendare_naxx SAY_RIVE_TAUNT3'), +(-1533074,'Death... will not stop me...',14580,1,0,'rivendare_naxx SAY_RIVE_DEATH'); + +UPDATE `creature_template` SET `ScriptName`='' WHERE `entry`=16062; +UPDATE `creature_template` SET `ScriptName`='boss_rivendare_naxx' WHERE `entry`=30549; + +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1533108 AND -1533075; +INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES +(-1533075,'Glory to the master!',8845,1,0,'noth SAY_AGGRO1'), +(-1533076,'Your life is forfeit!',8846,1,0,'noth SAY_AGGRO2'), +(-1533077,'Die, trespasser!',8847,1,0,'noth SAY_AGGRO3'), +(-1533078,'Rise, my soldiers! Rise and fight once more!',8851,1,0,'noth SAY_SUMMON'), +(-1533079,'My task is done!',8849,1,0,'noth SAY_SLAY1'), +(-1533080,'Breathe no more!',8850,1,0,'noth SAY_SLAY2'), +(-1533081,'I will serve the master... in... death!',8848,1,0,'noth SAY_DEATH'), +(-1533082,'takes in a deep breath...',0,2,0,'sapphiron EMOTE_BREATH'), +(-1533083,'enrages!',0,2,0,'sapphiron EMOTE_ENRAGE'), +(-1533084,'Our preparations continue as planned, master.',14467,1,0,'kelthuzad SAY_SAPP_DIALOG1'), +(-1533085,'It is good that you serve me so faithfully. Soon, all will serve the Lich King and in the end, you shall be rewarded...so long as you do not falter.',8881,1,0,'kelthuzad SAY_SAPP_DIALOG2_LICH'), +(-1533086,'I see no complications... Wait... What is this?',14468,1,0,'kelthuzad SAY_SAPP_DIALOG3'), +(-1533087,'Your security measures have failed! See to this interruption immediately!',8882,1,0,'kelthuzad SAY_SAPP_DIALOG4_LICH'), +(-1533088,'Yes, master!',14469,1,0,'kelthuzad SAY_SAPP_DIALOG5'), +(-1533089,'No!!! A curse upon you, interlopers! The armies of the Lich King will hunt you down. You will not escape your fate...',14484,1,0,'kelthuzad SAY_CAT_DIED'), +(-1533090,'Who dares violate the sanctity of my domain? Be warned, all who trespass here are doomed.',14463,1,0,'kelthuzad SAY_TAUNT1'), +(-1533091,'Fools, you think yourselves triumphant? You have only taken one step closer to the abyss! ',14464,1,0,'kelthuzad SAY_TAUNT2'), +(-1533092,'I grow tired of these games. Proceed, and I will banish your souls to oblivion!',14465,1,0,'kelthuzad SAY_TAUNT3'), +(-1533093,'You have no idea what horrors lie ahead. You have seen nothing! The frozen heart of Naxxramas awaits you!',14466,1,0,'kelthuzad SAY_TAUNT4'), +(-1533094,'Pray for mercy!',14475,1,0,'kelthuzad SAY_AGGRO1'), +(-1533095,'Scream your dying breath!',14476,1,0,'kelthuzad SAY_AGGRO2'), +(-1533096,'The end is upon you!',14477,1,0,'kelthuzad SAY_AGGRO3'), +(-1533097,'The dark void awaits you!',14478,1,0,'kelthuzad SAY_SLAY1'), +(-1533098,'<Kel\'Thuzad cackles maniacally!>',14479,1,0,'kelthuzad SAY_SLAY2'), +(-1533099,'AAAAGHHH!... Do not rejoice... your victory is a hollow one... for I shall return with powers beyond your imagining!',14480,1,0,'kelthuzad SAY_DEATH'), +(-1533100,'Your soul, is bound to me now!',14472,1,0,'kelthuzad SAY_CHAIN1'), +(-1533101,'There will be no escape!',14473,1,0,'kelthuzad SAY_CHAIN2'), +(-1533102,'I will freeze the blood in your veins!',14474,1,0,'kelthuzad SAY_FROST_BLAST'), +(-1533103,'Master! I require aid! ',14470,1,0,'kelthuzad SAY_REQUEST_AID'), +(-1533104,'Very well... warriors of the frozen wastes, rise up! I command you to fight, kill, and die for your master. Let none survive...',0,1,0,'kelthuzad SAY_ANSWER_REQUEST'), +(-1533105,'Minions, servants, soldiers of the cold dark, obey the call of Kel\'Thuzad!',14471,1,0,'kelthuzad SAY_SUMMON_MINIONS'), +(-1533106,'Your petty magics are no challenge to the might of the Scourge! ',14481,1,0,'kelthuzad SAY_SPECIAL1_MANA_DET'), +(-1533107,'Enough! I grow tired of these distractions! ',14483,1,0,'kelthuzad SAY_SPECIAL3_MANA_DET'), +(-1533108,'Fools, you have spread your powers too thin. Be free, my minions!',14482,1,0,'kelthuzad SAY_SPECIAL2_DISPELL'); + +UPDATE `script_texts` SET `sound`=8902 WHERE `entry`=-1533055; +UPDATE `script_texts` SET `sound`=8901 WHERE `entry`=-1533056; + +-- 1028_mangos_7141_01_world_instance_template +ALTER TABLE instance_template ADD maxPlayersHeroic tinyint(3) unsigned NOT NULL default '0' AFTER maxPlayers; +UPDATE instance_template SET maxPlayersHeroic = maxPlayers; +DELETE FROM instance_template WHERE map IN (533,615,616,624); +INSERT INTO instance_template VALUES +(533,0,80,0,10,25,0,NULL,NULL,NULL,NULL,''), +(615,0,80,0,10,25,0,NULL,NULL,NULL,NULL,''), +(616,0,80,0,10,25,0,NULL,NULL,NULL,NULL,''), +(624,0,80,0,10,25,0,NULL,NULL,NULL,NULL,''); + +-- 1028_mangos_7147_01_world_creature_template +UPDATE creature_template + SET family = 0 WHERE entry = 1; + +-- 1028_mangos_7150_01_world_playercreateinfo_spell +DELETE FROM `playercreateinfo_spell` WHERE Spell = 58284; +INSERT INTO `playercreateinfo_spell` VALUES +(1,9,58284,'Chaos Bolt Passive'), +(2,9,58284,'Chaos Bolt Passive'), +(5,9,58284,'Chaos Bolt Passive'), +(7,9,58284,'Chaos Bolt Passive'), +(10,9,58284,'Chaos Bolt Passive'); + +-- 1084_mangos_7168_01_world_command +DELETE FROM `command` WHERE `name` IN ('learn','unlearn'); +INSERT INTO `command` VALUES +('learn',3,'Syntax: .learn #spell [all]\r\n\r\nSelected character learn a spell of id #spell. If \'all\' provided then all ranks learned.'), +('unlearn',3,'Syntax: .unlearn #spell [all]\r\n\r\nUnlearn for selected player a spell #spell. If \'all\' provided then all ranks unlearned.'); + +-- 1094_mangos_7193_01_world_trinity_string +UPDATE trinity_string SET content_default = 'Unit Flags: %u.\nDynamic Flags: %u.\nFaction Template: %u.' WHERE entry = 542; + +-- 1108_mangos_7196_02_world_spell_bonus_data +-- ---------------------------- +-- Table structure for spell_bonus_data +-- ---------------------------- +DROP TABLE IF EXISTS `spell_bonus_data`; +CREATE TABLE `spell_bonus_data` ( + `entry` smallint(5) unsigned NOT NULL, + `direct_bonus` float NOT NULL default '0', + `dot_bonus` float NOT NULL default '0', + `ap_bonus` float NOT NULL default '0', + `comments` varchar(255) default NULL, + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `spell_bonus_data` VALUES +('5185', '1.6104', '0', '0', 'Druid - Healing Touch'), +('33763', '0', '0.09518', '0', 'Druid - Lifebloom'), +('774', '0', '0.37604', '0', 'Druid - Rejuvenation'), +('8936', '0.539', '0.188', '0', 'Druid - Regrowth'), +('18562', '0', '0', '0', 'Druid - Swiftmend'), +('44203', '0.538', '0', '0', 'Druid - Tranquility Triggered'), +('48438', '0', '0.11505', '0', 'Druid - Wild Growth'), +('50464', '0.6611', '0', '0', 'Druid - Nourish'), +('339', '0', '0.1', '0', 'Druid - Entangling Roots'), +('42231', '0.12898', '0', '0', 'Druid - Hurricane Triggered'), +('5570', '0', '0.127', '0', 'Druid - Insect Swarm'), +('8921', '0.1515', '0.13', '0', 'Druid - Moonfire'), +('2912', '1', '0', '0', 'Druid - Starfire'), +('5176', '0.5714', '0', '0', 'Druid - Wrath'), +('30451', '0.7143', '0', '0', 'Mage - Arcane Blast'), +('1449', '0.2128', '0', '0', 'Mage - Arcane Explosion'), +('7268', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 1'), +('7269', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 2'), +('7270', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 3'), +('8419', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 4'), +('8418', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 5'), +('10273', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 6'), +('10274', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 7'), +('25346', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 8'), +('27076', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 9'), +('38700', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 10'), +('38703', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 11'), +('42844', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 12'), +('42845', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell Rank 13'), +('1463', '0.8053', '0', '0', 'Mage - Mana Shield'), +('44425', '0.8571', '0', '0', 'Mage - Arcane Barrage'), +('11113', '0.1357', '0', '0', 'Mage - Blast Wave Rank'), +('31661', '0.1357', '0', '0', 'Mage - Dragons Breath'), +('2136', '0.4286', '0', '0', 'Mage - Fire Blast'), +('133', '1', '0', '0', 'Mage - Fire Ball'), +('2120', '0.2357', '0.122', '0', 'Mage - Flamestrike'), +('11366', '1.15', '0.05', '0', 'Mage - Pyroblast'), +('2948', '0.4286', '0', '0', 'Mage - Scorch'), +('44614', '0.8571', '0', '0', 'Frostfire Bolt'), +('44457', '0.4', '0.2', '0', 'Mage - Living Bomb'), +('42208', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 1'), +('42209', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 2'), +('42210', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 3'), +('42211', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 4'), +('42212', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 5'), +('42213', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 6'), +('42198', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 7'), +('42937', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 8'), +('42938', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 9'), +('120', '0.1357', '0', '0', 'Mage - Cone of Cold'), +('122', '0.193', '0', '0', 'Mage - Frost Nova'), +('116', '0.8143', '0', '0', 'Mage - Frost Bolt'), +('11426', '0.8053', '0', '0', 'Mage - Ice Barrier'), +('30455', '0.1429', '0', '0', 'Mage - Ice Lance'), +('19750', '0.4286', '0', '0', 'Paladin - Flash of Light'), +('635', '0.7143', '0', '0', 'Paladin - Holy Light'), +('25912', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt Rank 1'), +('25911', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt Rank 2'), +('25902', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt Rank 3'), +('27176', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt Rank 4'), +('33073', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt Rank 5'), +('48822', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt Rank 6'), +('48823', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt Rank 7'), +('25914', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 1'), +('25913', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 2'), +('25903', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 3'), +('27175', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 4'), +('33074', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 5'), +('48820', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 6'), +('48821', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 7'), +('31935', '0.07', '0', '0.07', 'Paladin - Avengers Shiled'), +('26573', '0', '0.04', '0.04', 'Paladin - Consecration'), +('879', '0.15', '0', '0.15', 'Paladin - Exorcism'), +('24275', '0.15', '0', '0.15', 'Paladin - Hammer of Wrath'), +('20925', '0.09', '0', '0.056', 'Paladin - Holy Shield'), +('2812', '0.07', '0', '0.07', 'Paladin - Holy Wrath'), +('31893', '0.25', '0', '0.16', 'Paladin - Seal of Blood Enemy Proc'), +('32221', '0.25', '0', '0.16', 'Paladin - Seal of Blood Self Proc'), +('20424', '0.25', '0', '0.16', 'Paladin - Seal of Command Proc'), +('379', '0', '0', '0', 'Shaman - Earth Shield Triggered'), +('20167', '0.25', '0', '0.16', 'Paladin - Seal of Light Proc'), +('53719', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Enemy Proc'), +('53718', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Self Proc'), +('25742', '0.07', '0', '0.039', 'Paladin - Seal of Righteousness Dummy Proc'), +('31803', '0', '0.013', '0.15', 'Paladin - Holy Vengeance'), +('52042', '0.045', '0', '0', 'Shaman - Healing Stream Totem Triggered Heal'), +('32546', '0.8068', '0', '0', 'Priest - Binding Heal'), +('34861', '0.402', '0', '0', 'Priest - Circle of Healing'), +('19236', '0.8068', '0', '0', 'Priest - Desperate Prayer'), +('2061', '0.8068', '0', '0', 'Priest - Flash Heal'), +('2060', '1.6135', '0', '0', 'Priest - Greater Heal'), +('23455', '0.3035', '0', '0', 'Priest - Holy Nova Heal Rank 1'), +('23458', '0.3035', '0', '0', 'Priest - Holy Nova Heal Rank 2'), +('23459', '0.3035', '0', '0', 'Priest - Holy Nova Heal Rank 3'), +('27803', '0.3035', '0', '0', 'Priest - Holy Nova Heal Rank 4'), +('27804', '0.3035', '0', '0', 'Priest - Holy Nova Heal Rank 5'), +('27805', '0.3035', '0', '0', 'Priest - Holy Nova Heal Rank 6'), +('25329', '0.3035', '0', '0', 'Priest - Holy Nova Heal Rank 7'), +('17', '0.8068', '0', '0', 'Priest - Power Word: Shield'), +('596', '0.8086', '0', '0', 'Priest - Prayer of Healing'), +('33110', '0.8068', '0', '0', 'Priest - Prayer of Mending Heal Proc'), +('139', '1.88', '0', '0', 'Priest - Renew'), +('2944', '0.1849', '0', '0', 'Priest - Devouring Plague'), +('14914', '0.5711', '0.024', '0', 'Priest - Holy Fire'), +('15237', '0.1606', '0', '0', 'Priest - Holy Nova Damage'), +('8129', '0', '0', '0', 'Priest - Mana Burn'), +('8092', '0.4296', '0', '0', 'Priest - Mind Blast'), +('15407', '0.257', '0', '0', 'Priest - Mind Flay'), +('49821', '0.7143', '0', '0', 'Priest - Mind Sear Trigger Rank 1'), +('53022', '0.7143', '0', '0', 'Priest - Mind Sear Trigger Rank 2'), +('34433', '0.65', '0', '0', 'Priest - Shadowfiend'), +('32379', '0.4296', '0', '0', 'Priest - Shadow Word: Death'), +('589', '0', '0.1829', '0', 'Priest - Shadow Word: Pain'), +('585', '0.714', '0', '0', 'Priest - Smite'), +('34914', '0', '0.4', '0', 'Priest - Vampiric Touch'), +('974', '0.4762', '0', '0', 'Shaman - Earth Shield'), +('1064', '1.34', '0', '0', 'Shaman - Chain Heal'), +('331', '1.6106', '0', '0', 'Shaman - Healing Wave'), +('8004', '0.8082', '0', '0', 'Shaman - Lesser Healing Wave'), +('61295', '0.4', '0.18', '0', 'Shaman - Riptide'), +('421', '0.57', '0', '0', 'Shaman - Chain Lightning'), +('8042', '0.3858', '0', '0', 'Shaman - Earth Shock'), +('8443', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 1'), +('8504', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 2'), +('8505', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 3'), +('11310', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 4'), +('11311', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 5'), +('25538', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 6'), +('25539', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 7'), +('61651', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 8'), +('61660', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem Rank 9'), +('8050', '0.2142', '0.1', '0', 'Shaman - Flame Shock'), +('8026', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 1'), +('8028', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 2'), +('8029', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 3'), +('10445', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 4'), +('16343', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 5'), +('16344', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 6'), +('25488', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 7'), +('58786', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 8'), +('58787', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 9'), +('58788', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 10'), +('8056', '0.3858', '0', '0', 'Shaman - Frost Shock'), +('8034', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 1'), +('8037', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 2'), +('10458', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 3'), +('16352', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 4'), +('16353', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 5'), +('25501', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 6'), +('58797', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 7'), +('58798', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 8'), +('58799', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 9'), +('51505', '0.5714', '0', '0', 'Shaman - Lava Burst'), +('403', '0.7143', '0', '0', 'Shaman - Lightning Bolt'), +('26364', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 1'), +('26365', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 2'), +('26366', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 3'), +('26367', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 4'), +('26369', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 5'), +('26370', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 6'), +('26363', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 7'), +('26371', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 8'), +('26372', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 9'), +('49278', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 10'), +('49279', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 11'), +('8188', '0.1', '0', '0', 'Shaman - Magma Totam Passive Rank 1'), +('10582', '0.1', '0', '0', 'Shaman - Magma Totam Passive Rank 2'), +('10583', '0.1', '0', '0', 'Shaman - Magma Totam Passive Rank 3'), +('10584', '0.1', '0', '0', 'Shaman - Magma Totam Passive Rank 4'), +('25551', '0.1', '0', '0', 'Shaman - Magma Totam Passive Rank 5'), +('58733', '0.1', '0', '0', 'Shaman - Magma Totam Passive Rank 6'), +('58736', '0.1', '0', '0', 'Shaman - Magma Totam Passive Rank 7'), +('3606', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 1'), +('6350', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 2'), +('6351', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 3'), +('6352', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 4'), +('10435', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 5'), +('10436', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 6'), +('25530', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 7'), +('58700', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 8'), +('58701', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 9'), +('58702', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 10'), +('980', '0', '0.1', '0', 'Warlock - Curse of Agony'), +('603', '0', '2', '0', 'Warlock - Curse of Doom'), +('172', '0', '0.3', '0', 'Warlock - Corruption'), +('348', '0.2', '0.2', '0', 'Warlock - Immolate'), +('27243', '0.22', '0.25', '0', 'Warlock - Seed of Corruption'), +('18265', '0', '1', '0', 'Warlock - Siphon Life'), +('30108', '0', '0.24', '0', 'Warlock - Unstable Affliction'), +('17962', '0.4286', '0', '0', 'Warlock - Conflagrate'), +('6789', '0.22', '0', '0', 'Warlock - Death Coil'), +('48181', '0.4729', '0', '0', 'Warlock - Haunt'), +('29722', '0.7143', '0', '0', 'Warlock - Incinerate'), +('5676', '0.4286', '0', '0', 'Warlock - Searing Pain'), +('686', '0.8571', '0', '0', 'Warlock - Shadow Bolt'), +('17877', '0.4286', '0', '0', 'Warlock - Shadowburn'), +('30283', '0.195', '0', '0', 'Warlock - Shadowfury'), +('6353', '1.15', '0', '0', 'Warlock - Soul Fire'), +('689', '0', '0.1428', '0', 'Warlock - Drain Life'), +('5138', '0', '0', '0', 'Warlock - Drain Mana'), +('1120', '0', '0.4286', '0', 'Warlock - Drain Soul'), +('755', '0', '0.4485', '0', 'Warlock - Health Funnel'), +('1949', '0', '0.0946', '0', 'Warlock - Hellfire'), +('5857', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 1'), +('11681', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 2'), +('11682', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 3'), +('27214', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 4'), +('47822', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 5'), +('42223', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 1'), +('42224', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 2'), +('42225', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 3'), +('42226', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 4'), +('42218', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 5'), +('47817', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 6'), +('47818', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 7'), +('18220', '0.96', '0', '0', 'Warlock - Dark Pact'), +('6229', '0.3', '0', '0', 'Warlock - Shadow Ward'); + +-- 1108_mangos_7199_01_world_spell_bonus_data +DELETE FROM `spell_bonus_data` WHERE `entry` IN (44614, 139, 49821, 53022, 18265, 31117, 28176); +INSERT INTO `spell_bonus_data` VALUES +('44614', '0.8571', '0', '0', 'Mage - Frostfire Bolt'), +('139', '0', '0.376', '0', 'Priest - Renew'), +('49821', '0.14286', '0', '0', 'Priest - Mind Sear Trigger Rank 1'), +('53022', '0.14286', '0', '0', 'Priest - Mind Sear Trigger Rank 2'), +('18265', '0', '0.1', '0', 'Warlock - Siphon Life'), +('31117', '1.8', '0', '0', 'Warlock - Unstable Affliction Dispell'), +('28176', '0', '0', '0', 'Warlock - Fel Armor'); + +-- 1135_mangos_7207_01_world_creature +ALTER TABLE creature + ADD COLUMN `phaseMask` smallint(5) unsigned NOT NULL default '1' AFTER `spawnMask`; + +-- 1135_mangos_7207_02_world_gameobject +ALTER TABLE gameobject + ADD COLUMN `phaseMask` smallint(5) unsigned NOT NULL default '1' AFTER `spawnMask`; + +-- 1140_mangos_7209_01_world_spell_bonus_data +DELETE FROM `spell_bonus_data` WHERE `entry` IN (53595); +INSERT INTO `spell_bonus_data` VALUES +('53595', '0', '0', '0','Paladin - Hammer of the Righteous'); + +-- 1185_mangos_7214_01_world_command +DELETE FROM `command` WHERE `name` IN ('gps','modify phase','npc phase','gobject phase'); +INSERT INTO `command` VALUES +('gps',1,'Syntax: .gps [$name|$shift-link]\r\n\r\nDisplay the position information for a selected character or creature (also if player name $name provided then for named player, or if creature/gameobject shift-link provided then pointed creature/gameobject if it loaded). Position information includes X, Y, Z, and orientation, map Id and zone Id'), +('modify phase',3,'Syntax: .modify phase #phasemask\r\n\r\nSelected character phasemask changed to #phasemask with related world vision update. Change active until in game phase changed, or GM-mode enable/disable, or re-login. Character pts pasemask update to same value.'), +('npc phase',3,'Syntax: .npc phase #phasemask\r\n\r\nSelected unit or pet phasemask changed to #phasemask with related world vision update for players. In creature case state saved to DB and persistent. In pet case change active until in game phase changed for owner, owner re-login, or GM-mode enable/disable..'), +('gobject phase',3,'Syntax: .gobject phase #guid #phasemask\r\n\r\nGameobject with DB guid #guid phasemask changed to #phasemask with related world vision update for players. Gameobject state saved to DB and persistent.'); + +-- 1185_mangos_7214_02_world_trinity_string +DELETE FROM `trinity_string` WHERE entry = 101; +INSERT INTO `trinity_string` VALUES +(101,'Map: %u (%s) Zone: %u (%s) Area: %u (%s) Phase: %u\nX: %f Y: %f Z: %f Orientation: %f\ngrid[%u,%u]cell[%u,%u] InstanceID: %u\n ZoneX: %f ZoneY: %f\nGroundZ: %f FloorZ: %f Have height data (Map: %u VMap: %u)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 1185_mangos_7214_03_world_spell_proc_event +DROP TABLE IF EXISTS `spell_proc_event`; +CREATE TABLE IF NOT EXISTS `spell_proc_event` ( + `entry` smallint(5) unsigned NOT NULL default '0', + `SchoolMask` tinyint(4) NOT NULL default '0', + `SpellFamilyName` smallint(5) unsigned NOT NULL default '0', + `SpellFamilyMask0` int(10) unsigned NOT NULL default '0', + `SpellFamilyMask1` int(10) unsigned NOT NULL default '0', + `SpellFamilyMask2` int(10) unsigned NOT NULL default '0', + `procFlags` int(10) unsigned NOT NULL default '0', + `procEx` int(10) unsigned NOT NULL default '0', + `ppmRate` float NOT NULL default '0', + `CustomChance` float NOT NULL default '0', + `Cooldown` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(1463, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(3232, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(5952, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0), +(6346, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(7383, 1, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(7434, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(8134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(8178, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(8494, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(8495, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(9452, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(9782, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(9784, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(9799, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(10191, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(10192, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(10193, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(10431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(10432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(11095, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0), +(11119, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(11120, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(11129, 0, 3, 12582935, 64, 0, 0, 0, 0, 0, 0), +(11180, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0), +(11185, 0, 3, 128, 0, 0, 327680, 0, 0, 0, 0), +(11255, 0, 3, 16384, 0, 0, 0, 0, 0, 0, 0), +(12169, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12289, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(12298, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12311, 0, 4, 2048, 1, 0, 0, 0, 0, 0, 0), +(12317, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12319, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12322, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(12487, 0, 3, 128, 0, 0, 327680, 0, 0, 0, 0), +(12488, 0, 3, 128, 0, 0, 327680, 0, 0, 0, 0), +(12598, 0, 3, 16384, 0, 0, 0, 0, 0, 0, 0), +(12668, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(12724, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12725, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12726, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12727, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12797, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(12799, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(12812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12834, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12846, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(12847, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(12848, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(12849, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12867, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12872, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0), +(12873, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0), +(12958, 0, 4, 2048, 1, 0, 0, 0, 0, 0, 0), +(12966, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12967, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12968, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12969, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12970, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12971, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12972, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12973, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12974, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12999, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0), +(13000, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(13001, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0), +(13002, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0), +(13045, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(13046, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(13047, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(13048, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(13163, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(13165, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(13754, 0, 8, 16, 0, 0, 0, 0, 0, 0, 0), +(13867, 0, 8, 16, 0, 0, 0, 0, 0, 0, 0), +(13983, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0), +(14070, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0), +(14071, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0), +(14156, 0, 8, 4063232, 0, 0, 0, 0, 0, 0, 0), +(14160, 0, 8, 4063232, 0, 0, 0, 0, 0, 0, 0), +(14161, 0, 8, 4063232, 0, 0, 0, 0, 0, 0, 0), +(14186, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14190, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14193, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14194, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14195, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14318, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14319, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14320, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14321, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14322, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14531, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(14774, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(14892, 0, 6, 268443136, 65540, 0, 0, 2, 0, 0, 0), +(15088, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(15128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(15268, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15277, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(15286, 32, 6, 0, 0, 0, 0, 0, 0, 0, 0), +(15323, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15324, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15325, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15326, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15337, 0, 6, 8192, 2, 0, 0, 2, 0, 0, 0), +(15338, 0, 6, 8192, 2, 0, 0, 2, 0, 0, 0), +(15346, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(15362, 0, 6, 268443136, 65540, 0, 0, 2, 0, 0, 0), +(15363, 0, 6, 268443136, 65540, 0, 0, 2, 0, 0, 0), +(15600, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), +(16164, 0, 11, 2416967875, 0, 0, 0, 2, 0, 0, 0), +(16176, 0, 11, 448, 0, 0, 0, 2, 0, 0, 0), +(16180, 0, 11, 192, 0, 0, 0, 2, 0, 0, 0), +(16196, 0, 11, 192, 0, 0, 0, 2, 0, 0, 0), +(16198, 0, 11, 192, 0, 0, 0, 2, 0, 0, 0), +(16235, 0, 11, 448, 0, 0, 0, 2, 0, 0, 0), +(16240, 0, 11, 448, 0, 0, 0, 2, 0, 0, 0), +(16256, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16257, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16277, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16278, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16279, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16280, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16281, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16282, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16283, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16284, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16487, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16489, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16492, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16550, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(16624, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(16850, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0), +(16864, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(16880, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16923, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0), +(16924, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0), +(16952, 0, 7, 233472, 1024, 0, 0, 2, 0, 0, 0), +(16954, 0, 7, 233472, 1024, 0, 0, 2, 0, 0, 0), +(16958, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16961, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(17106, 0, 7, 524288, 0, 0, 0, 0, 0, 0, 0), +(17107, 0, 7, 524288, 0, 0, 0, 0, 0, 0, 0), +(17108, 0, 7, 524288, 0, 0, 0, 0, 0, 0, 0), +(17364, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17495, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(17793, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17794, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0), +(17796, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17797, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17798, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17799, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17800, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17801, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17802, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17803, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(18073, 0, 5, 96, 128, 0, 0, 0, 0, 0, 0), +(18094, 0, 5, 10, 0, 0, 0, 0, 0, 0, 0), +(18095, 0, 5, 10, 0, 0, 0, 0, 0, 0, 0), +(18096, 0, 5, 96, 128, 0, 0, 0, 0, 0, 0), +(18119, 0, 5, 997, 4288, 0, 0, 0, 0, 0, 0), +(18120, 0, 5, 997, 4288, 0, 0, 0, 0, 0, 0), +(18820, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(19184, 0, 9, 20, 8192, 0, 0, 0, 0, 0, 0), +(19228, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0), +(19232, 0, 9, 64, 0, 0, 0, 0, 0, 0, 0), +(19233, 0, 9, 64, 0, 0, 0, 0, 0, 0, 0), +(19387, 0, 9, 20, 8192, 0, 0, 0, 0, 0, 0), +(19388, 0, 9, 20, 8192, 0, 0, 0, 0, 0, 0), +(19572, 0, 9, 8388608, 0, 0, 16384, 0, 0, 0, 0), +(19573, 0, 9, 8388608, 0, 0, 16384, 0, 0, 0, 0), +(20049, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20056, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20057, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20128, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20131, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20132, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20164, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0), +(20165, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0), +(20166, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0), +(20182, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20210, 0, 10, 3221225472, 65536, 0, 0, 2, 0, 0, 0), +(20212, 0, 10, 3221225472, 65536, 0, 0, 2, 0, 0, 0), +(20213, 0, 10, 3221225472, 65536, 0, 0, 2, 0, 0, 0), +(20214, 0, 10, 3221225472, 65536, 0, 0, 2, 0, 0, 0), +(20215, 0, 10, 3221225472, 65536, 0, 0, 2, 0, 0, 0), +(20234, 0, 10, 32768, 0, 0, 0, 0, 0, 0, 0), +(20235, 0, 10, 32768, 0, 0, 0, 0, 0, 0, 0), +(20375, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(20500, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0), +(20501, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0), +(20705, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20911, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(20925, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20927, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20928, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(21185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(21882, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(21890, 0, 4, 712396527, 876, 0, 0, 0, 0, 0, 0), +(22007, 0, 3, 2097185, 0, 0, 0, 65536, 0, 0, 0), +(22618, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(22648, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(23547, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(23548, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(23551, 0, 11, 192, 0, 0, 0, 0, 0, 0, 0), +(23552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(23572, 0, 11, 192, 0, 0, 0, 0, 0, 0, 0), +(23578, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(23581, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(23602, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(23686, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(23688, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(23689, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0), +(23695, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(23721, 0, 9, 2048, 0, 0, 0, 0, 0, 0, 0), +(23920, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(24353, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(24389, 0, 3, 12582935, 64, 0, 0, 0, 0, 0, 0), +(24398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(24658, 0, 0, 0, 0, 0, 82192, 0, 0, 0, 0), +(24905, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0), +(24932, 0, 0, 0, 0, 0, 0, 2, 0, 0, 6), +(25050, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(25296, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(25469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(25472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(25669, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), +(25899, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(25988, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(26016, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(26107, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0), +(26119, 0, 10, 2416967683, 0, 0, 0, 65536, 0, 0, 0), +(26128, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0), +(26135, 0, 10, 8388608, 0, 0, 0, 65536, 0, 0, 0), +(26480, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(26605, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(27044, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(27131, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(27179, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(27419, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27498, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27521, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(27656, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27774, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(27787, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27811, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(27815, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(27816, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(28592, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0), +(28593, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0), +(28716, 0, 7, 16, 0, 0, 294912, 0, 0, 0, 0), +(28719, 0, 7, 32, 0, 0, 0, 2, 0, 0, 0), +(28744, 0, 7, 64, 0, 0, 278528, 0, 0, 0, 0), +(28752, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(28789, 0, 10, 3221225472, 0, 0, 0, 0, 0, 0, 0), +(28802, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(28809, 0, 6, 4096, 0, 0, 0, 2, 0, 0, 0), +(28812, 0, 8, 33554438, 0, 0, 0, 2, 0, 0, 0), +(28816, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(28823, 0, 11, 192, 0, 0, 0, 0, 0, 0, 0), +(28847, 0, 7, 32, 0, 0, 0, 0, 0, 0, 0), +(28849, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(29074, 20, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(29075, 20, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(29076, 20, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(29150, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29179, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(29180, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(29385, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(29441, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1), +(29444, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1), +(29455, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(29501, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29593, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(29594, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(29624, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29625, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29626, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29632, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29633, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29634, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29635, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29636, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29637, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29801, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(29834, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(29838, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(29977, 0, 3, 12582935, 64, 0, 0, 0, 0, 0, 0), +(30003, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(30160, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30293, 0, 5, 897, 192, 0, 0, 0, 0, 0, 0), +(30295, 0, 5, 897, 192, 0, 0, 0, 0, 0, 0), +(30296, 0, 5, 897, 192, 0, 0, 0, 0, 0, 0), +(30299, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30301, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30302, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30675, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30678, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30679, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30680, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30681, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30701, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30705, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30802, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30803, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30804, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30805, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30806, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30807, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30808, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30809, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30810, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30811, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30823, 0, 0, 0, 0, 0, 0, 0, 10.5, 0, 0), +(30881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30937, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(31124, 0, 8, 536870926, 0, 0, 0, 0, 0, 0, 0), +(31126, 0, 8, 536870926, 0, 0, 0, 0, 0, 0, 0), +(31244, 0, 8, 4063232, 9, 0, 0, 4, 0, 0, 0), +(31245, 0, 8, 4063232, 9, 0, 0, 4, 0, 0, 0), +(31394, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(31569, 0, 3, 65536, 0, 0, 0, 0, 0, 0, 0), +(31570, 0, 3, 65536, 0, 0, 0, 0, 0, 0, 0), +(31785, 0, 0, 0, 0, 0, 34816, 0, 0, 0, 0), +(31794, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(31801, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0), +(31833, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(31835, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(31836, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(31871, 0, 10, 16, 0, 0, 16384, 0, 0, 0, 0), +(31872, 0, 10, 16, 0, 0, 16384, 0, 0, 0, 0), +(31876, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(31877, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(31878, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(31904, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32385, 0, 5, 1026, 17, 0, 0, 0, 0, 0, 0), +(32387, 0, 5, 1026, 17, 0, 0, 0, 0, 0, 0), +(32392, 0, 5, 1026, 17, 0, 0, 0, 0, 0, 0), +(32393, 0, 5, 1026, 17, 0, 0, 0, 0, 0, 0), +(32394, 0, 5, 1026, 17, 0, 0, 0, 0, 0, 0), +(32409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(32587, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32642, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32748, 0, 8, 0, 1, 0, 320, 0, 0, 0, 0), +(32776, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32777, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32837, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 45), +(32844, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(32885, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33076, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(33089, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(33127, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(33142, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33145, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33146, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33150, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33151, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33154, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33191, 0, 6, 8421376, 1024, 0, 0, 0, 0, 0, 0), +(33192, 0, 6, 8421376, 1024, 0, 0, 0, 0, 0, 0), +(33193, 0, 6, 8421376, 1024, 0, 0, 0, 0, 0, 0), +(33299, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(33510, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0), +(33648, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33719, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(33736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(33746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(33757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(33759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(33776, 0, 0, 0, 0, 0, 34816, 0, 0, 0, 0), +(33881, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33882, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33883, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33953, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 45), +(34080, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0), +(34138, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(34139, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(34258, 0, 10, 1024, 8, 0, 0, 0, 0, 0, 0), +(34262, 0, 10, 8388608, 0, 0, 0, 65536, 0, 0, 0), +(34320, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(34497, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34498, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34499, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34500, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34502, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34503, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(34586, 0, 0, 0, 0, 0, 0, 0, 1.5, 0, 0), +(34598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(34749, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0), +(34753, 0, 6, 6144, 4, 0, 0, 2, 0, 0, 0), +(34774, 0, 0, 0, 0, 0, 0, 0, 1.5, 0, 20), +(34783, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(34827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(34859, 0, 6, 6144, 4, 0, 0, 2, 0, 0, 0), +(34860, 0, 6, 6144, 4, 0, 0, 2, 0, 0, 0), +(34914, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(34916, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(34917, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(34935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8), +(34938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8), +(34939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8), +(34950, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34954, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(35077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(35080, 0, 0, 0, 0, 0, 0, 0, 1, 0, 60), +(35083, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(35086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(35100, 0, 9, 12289, 0, 0, 65856, 0, 0, 0, 0), +(35102, 0, 9, 12289, 0, 0, 0, 0, 0, 0, 0), +(35103, 0, 9, 12289, 0, 0, 0, 0, 0, 0, 0), +(35121, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(36096, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(36111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(36541, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(37165, 0, 8, 2098176, 0, 0, 0, 0, 0, 0, 0), +(37168, 0, 8, 4063232, 9, 0, 0, 0, 0, 0, 0), +(37170, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), +(37173, 0, 8, 750519704, 262, 0, 0, 0, 0, 0, 30), +(37189, 0, 10, 3221225472, 0, 0, 0, 2, 0, 0, 60), +(37193, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(37195, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(37197, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 45), +(37213, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(37214, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37227, 0, 11, 448, 0, 0, 0, 2, 0, 0, 60), +(37237, 0, 11, 1, 0, 0, 0, 2, 0, 0, 0), +(37247, 8, 0, 0, 0, 0, 0, 65536, 0, 0, 45), +(37377, 32, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37379, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(37384, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0), +(37443, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(37514, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(37516, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(37519, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0), +(37523, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(37528, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0), +(37536, 0, 4, 65536, 0, 0, 0, 0, 0, 0, 0), +(37568, 0, 6, 2048, 0, 0, 0, 0, 0, 0, 0), +(37594, 0, 6, 4096, 0, 0, 0, 0, 0, 0, 0), +(37600, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37601, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37603, 0, 6, 32768, 0, 0, 0, 0, 0, 0, 0), +(37655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(37657, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3), +(38026, 1, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(38031, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(38290, 0, 0, 0, 0, 0, 0, 0, 1.6, 0, 0), +(38326, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38327, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(38347, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38350, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38394, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0), +(38857, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(39027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(39372, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(39437, 4, 5, 4964, 192, 0, 0, 65536, 0, 0, 0), +(39442, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0), +(39443, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(39530, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(39958, 0, 0, 0, 0, 0, 0, 0, 0.7, 0, 40), +(40407, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(40438, 0, 6, 32832, 0, 0, 0, 0, 0, 0, 0), +(40442, 0, 7, 20, 1088, 0, 0, 0, 0, 0, 0), +(40444, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(40458, 0, 4, 33554432, 1537, 0, 0, 0, 0, 0, 0), +(40463, 0, 11, 129, 16, 0, 0, 0, 0, 0, 0), +(40470, 0, 10, 3229614080, 0, 0, 0, 0, 0, 0, 0), +(40475, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(40478, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0), +(40482, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(40485, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(40899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(41034, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(41260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(41262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(41381, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(41393, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(41434, 0, 0, 0, 0, 0, 0, 0, 2, 0, 45), +(41469, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(41635, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(41989, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0), +(42083, 0, 0, 0, 0, 0, 0, 2, 0, 0, 45), +(42135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90), +(42136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90), +(42368, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(42370, 0, 11, 64, 0, 0, 0, 0, 0, 0, 0), +(42770, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(43019, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(43020, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(43338, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(43443, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(43726, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(43728, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(43737, 0, 7, 0, 1088, 0, 0, 0, 0, 0, 10), +(43739, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(43741, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(43745, 0, 10, 0, 512, 0, 0, 0, 0, 0, 0), +(43748, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(43750, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0), +(43819, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(44394, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(44395, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(44396, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(44401, 0, 3, 2097152, 0, 0, 0, 4095, 0, 0, 0), +(44404, 0, 3, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(44442, 0, 3, 8388608, 64, 0, 0, 65536, 0, 0, 1), +(44443, 0, 3, 8388608, 64, 0, 0, 65536, 0, 0, 1), +(44445, 0, 3, 19, 4096, 0, 0, 0, 0, 0, 0), +(44446, 0, 3, 19, 4096, 0, 0, 0, 0, 0, 0), +(44448, 0, 3, 19, 4096, 0, 0, 0, 0, 0, 0), +(44449, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44469, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44470, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44471, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44472, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44546, 0, 3, 33555104, 0, 0, 0, 0, 0, 0, 0), +(44548, 0, 3, 33555104, 0, 0, 0, 0, 0, 0, 0), +(44549, 0, 3, 33555104, 0, 0, 0, 0, 0, 0, 0), +(44835, 0, 7, 0, 128, 0, 16, 0, 0, 0, 0), +(45054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15), +(45057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(45234, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(45243, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(45244, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(45354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45484, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 45), +(46025, 32, 6, 0, 0, 0, 0, 0, 0, 0, 0), +(46092, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(46098, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(46569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(46662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20), +(46832, 0, 7, 1, 0, 0, 0, 65536, 0, 0, 0), +(46854, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(46855, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(46867, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(46913, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), +(46914, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), +(46915, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), +(46916, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), +(46951, 0, 4, 1024, 64, 0, 0, 0, 0, 0, 0), +(46952, 0, 0, 1024, 64, 0, 0, 0, 0, 0, 0), +(46953, 0, 0, 1024, 64, 0, 0, 0, 0, 0, 0), +(47195, 0, 5, 2, 0, 0, 0, 0, 0, 0, 30), +(47196, 0, 5, 2, 0, 0, 0, 0, 0, 0, 30), +(47197, 0, 5, 2, 0, 0, 0, 0, 0, 0, 30), +(47201, 0, 5, 8, 262144, 0, 0, 65536, 0, 0, 0), +(47202, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47203, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47204, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47205, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47232, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47234, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47235, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47245, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(47246, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(47247, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(47258, 0, 5, 0, 8388608, 0, 0, 65536, 0, 0, 0), +(47259, 0, 5, 0, 8388608, 0, 0, 65536, 0, 0, 0), +(47260, 0, 5, 0, 8388608, 0, 0, 65536, 0, 0, 0), +(47263, 32, 5, 0, 0, 0, 0, 2, 0, 0, 20), +(47264, 32, 5, 0, 0, 0, 0, 2, 0, 0, 20), +(47265, 32, 5, 0, 0, 0, 0, 2, 0, 0, 20), +(47509, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47511, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47515, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47516, 0, 6, 6144, 65536, 0, 0, 0, 0, 0, 0), +(47517, 0, 6, 6144, 65536, 0, 0, 0, 0, 0, 0), +(47535, 0, 6, 6144, 8388608, 0, 0, 0, 0, 0, 0), +(47536, 0, 6, 6144, 8388608, 0, 0, 0, 0, 0, 0), +(47537, 0, 6, 6144, 8388608, 0, 0, 0, 0, 0, 0), +(47538, 0, 6, 6144, 8388608, 0, 0, 0, 0, 0, 0), +(47539, 0, 6, 6144, 8388608, 0, 0, 0, 0, 0, 0), +(47549, 0, 6, 0, 131072, 0, 0, 0, 0, 0, 0), +(47551, 0, 6, 0, 131072, 0, 0, 0, 0, 0, 0), +(47552, 0, 6, 0, 131072, 0, 0, 0, 0, 0, 0), +(47555, 0, 6, 6144, 0, 0, 0, 0, 0, 0, 0), +(47556, 0, 6, 6144, 0, 0, 0, 0, 0, 0, 0), +(47557, 0, 6, 6144, 0, 0, 0, 0, 0, 0, 0), +(47572, 0, 6, 65536, 0, 0, 0, 0, 0, 0, 0), +(47580, 0, 6, 0, 0, 64, 0, 65536, 0, 0, 0), +(47581, 0, 6, 0, 0, 64, 0, 65536, 0, 0, 0), +(47582, 0, 6, 0, 0, 64, 0, 65536, 0, 0, 0), +(48110, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48111, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48112, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48113, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48159, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(48160, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(48483, 0, 7, 34816, 1088, 0, 0, 0, 0, 0, 0), +(48484, 0, 7, 34816, 1088, 0, 0, 0, 0, 0, 0), +(48485, 0, 7, 34816, 1088, 0, 0, 0, 0, 0, 0), +(48496, 0, 7, 96, 33554434, 0, 0, 2, 0, 0, 0), +(48499, 0, 7, 96, 33554434, 0, 0, 2, 0, 0, 0), +(48500, 0, 7, 96, 33554434, 0, 0, 2, 0, 0, 0), +(48506, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0), +(48510, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0), +(48511, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0), +(48516, 0, 7, 5, 0, 0, 0, 2, 0, 0, 30), +(48521, 0, 7, 5, 0, 0, 0, 2, 0, 0, 30), +(48525, 0, 7, 5, 0, 0, 0, 2, 0, 0, 30), +(48833, 0, 7, 0, 1088, 0, 0, 0, 0, 0, 0), +(48835, 0, 10, 0, 8, 0, 0, 0, 0, 0, 0), +(48837, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(48951, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(48952, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(48988, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(49018, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49137, 0, 15, 0, 16384, 0, 0, 0, 0, 0, 0), +(49188, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(49208, 0, 15, 4456448, 0, 0, 0, 0, 0, 0, 0), +(49222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49503, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(49504, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(49529, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49530, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49531, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49532, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(49657, 0, 15, 0, 16384, 0, 0, 0, 0, 0, 0), +(50781, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51127, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51128, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51129, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51130, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51466, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51470, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51474, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(51478, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(51479, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(51556, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(51557, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(51558, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(51562, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51563, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51564, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51565, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51566, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51625, 0, 8, 268476416, 0, 0, 0, 0, 0, 0, 0), +(51626, 0, 8, 268476416, 0, 0, 0, 0, 0, 0, 0), +(51627, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(51628, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(51629, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(51634, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51635, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51636, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51664, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51665, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51667, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51668, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51669, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51672, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1), +(51674, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1), +(51679, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0), +(51692, 0, 8, 512, 0, 0, 0, 2, 0, 0, 0), +(51696, 0, 8, 512, 0, 0, 0, 2, 0, 0, 0), +(51698, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1), +(51700, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1), +(51701, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1), +(51940, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(51989, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52004, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52005, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52007, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52008, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52020, 0, 7, 32768, 1048576, 0, 0, 0, 0, 0, 0), +(52127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(52423, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(52795, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52797, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52798, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52799, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52800, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52898, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53137, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(53138, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(53215, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(53216, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(53217, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(53221, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(53222, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(53224, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(53228, 0, 9, 32, 16777216, 0, 0, 0, 0, 0, 0), +(53232, 0, 9, 32, 16777216, 0, 0, 0, 0, 0, 0), +(53256, 0, 9, 2048, 8388609, 0, 0, 2, 0, 0, 0), +(53259, 0, 9, 2048, 8388609, 0, 0, 2, 0, 0, 0), +(53260, 0, 9, 2048, 8388609, 0, 0, 2, 0, 0, 0), +(53290, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53291, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53292, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53293, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53294, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53380, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53381, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53382, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53383, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53384, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53486, 0, 10, 8388608, 163840, 0, 0, 2, 0, 0, 0), +(53488, 0, 10, 8388608, 163840, 0, 0, 2, 0, 0, 0), +(53501, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53502, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53503, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53551, 0, 10, 4096, 0, 0, 0, 0, 0, 0, 0), +(53552, 0, 10, 4096, 0, 0, 0, 0, 0, 0, 0), +(53553, 0, 10, 4096, 0, 0, 0, 0, 0, 0, 0), +(53569, 0, 10, 2097152, 0, 0, 0, 2, 0, 0, 0), +(53576, 0, 10, 2097152, 0, 0, 0, 2, 0, 0, 0), +(53601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(53671, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(53673, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(54149, 0, 10, 2097152, 0, 0, 0, 2, 0, 0, 0), +(54151, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(54154, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(54155, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(54278, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(54486, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54488, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54489, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54490, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54738, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(54747, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(54749, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(54754, 0, 7, 16, 0, 0, 0, 0, 0, 0, 0), +(54841, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(54936, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(54937, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(54939, 0, 10, 32768, 0, 0, 0, 0, 0, 0, 0), +(55440, 0, 11, 64, 0, 0, 0, 0, 0, 0, 0), +(55620, 0, 15, 1, 134217728, 0, 0, 0, 0, 0, 0), +(55623, 0, 15, 1, 134217728, 0, 0, 0, 0, 0, 0), +(55666, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55667, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55668, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55669, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55670, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55677, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0), +(55680, 0, 6, 512, 0, 0, 0, 0, 0, 0, 0), +(55689, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56218, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0), +(56333, 0, 9, 4, 0, 512, 0, 0, 0, 0, 0), +(56336, 0, 9, 4, 0, 512, 0, 0, 0, 0, 0), +(56337, 0, 9, 4, 0, 512, 0, 0, 0, 0, 0), +(56342, 0, 9, 16384, 0, 0, 0, 0, 0, 0, 0), +(56343, 0, 9, 16384, 0, 0, 0, 0, 0, 0, 0), +(56344, 0, 9, 16384, 0, 0, 0, 0, 0, 0, 0), +(56364, 0, 3, 0, 16777216, 0, 0, 0, 0, 0, 0), +(56451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(56611, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56612, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56613, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56614, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56636, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0), +(56637, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0), +(56638, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0), +(56821, 0, 8, 2, 0, 0, 0, 2, 0, 0, 0), +(56822, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(56834, 0, 15, 4456448, 0, 0, 0, 0, 0, 0, 0), +(56835, 0, 15, 4456448, 0, 0, 0, 0, 0, 0, 0), +(57878, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(57880, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(57881, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(57960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(58357, 0, 4, 64, 0, 0, 0, 2, 0, 0, 0), +(58364, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(58372, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(58386, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(58435, 0, 5, 2, 256, 0, 0, 0, 0, 0, 0), +(58436, 0, 5, 2, 256, 0, 0, 0, 0, 0, 0), +(58437, 0, 5, 2, 256, 0, 0, 0, 0, 0, 0), +(58616, 0, 15, 262144, 0, 0, 0, 0, 0, 0, 0), +(58620, 0, 15, 0, 16384, 0, 0, 0, 0, 0, 0), +(58626, 0, 15, 33554432, 0, 0, 0, 0, 0, 0, 0), +(58631, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(58642, 0, 15, 0, 134217728, 0, 0, 0, 0, 0, 0), +(58644, 0, 15, 0, 4, 0, 0, 0, 0, 0, 0), +(58647, 0, 15, 0, 4, 0, 0, 0, 0, 0, 0), +(58676, 0, 15, 0, 8, 0, 0, 0, 0, 0, 0), +(58677, 0, 15, 8192, 0, 0, 0, 0, 0, 0, 0), +(58872, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(58874, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(58901, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(59057, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(59176, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(59327, 0, 15, 134217728, 0, 0, 0, 0, 0, 0, 0), +(59725, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(60132, 0, 15, 0, 134348800, 0, 0, 0, 0, 0, 0), +(60170, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0), +(60172, 0, 5, 262144, 0, 0, 0, 65536, 0, 0, 0), +(60200, 0, 15, 4096, 0, 0, 0, 65536, 0, 0, 0), +(60493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(60503, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0), +(60537, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(60564, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60571, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60572, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60573, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60574, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60575, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60617, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(60710, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60717, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60719, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60722, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60724, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60726, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60770, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0), +(60818, 0, 10, 0, 512, 0, 0, 0, 0, 0, 0), +(60826, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(61188, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0), +(61257, 0, 0, 0, 0, 0, 131752, 65536, 0, 0, 0), +(61324, 0, 10, 0, 131072, 0, 0, 0, 0, 0, 0), +(61846, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(61847, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0); + +-- 1206_world_scripts +UPDATE `gameobject_template` SET `ScriptName`='go_legion_obelisk' WHERE `entry` IN (185193,185195,185196,185197,185198); + +-- 1207_world_scripts +UPDATE `creature_template` SET `ScriptName`='npc_surristrasz' WHERE `entry`=24795; +UPDATE `creature_template` SET `ScriptName`='npc_tiare' WHERE `entry`=30051; + +-- 1237_mangos_7230_01_world_spell_bonus_data +DELETE FROM `spell_bonus_data` WHERE `entry` IN (18220,18937,18938,27265,59092); +INSERT INTO `spell_bonus_data` VALUES +('18220', '0.96', '0', '0', 'Warlock - Dark Pact Rank 1'), +('18937', '0.96', '0', '0', 'Warlock - Dark Pact Rank 2'), +('18938', '0.96', '0', '0', 'Warlock - Dark Pact Rank 3'), +('27265', '0.96', '0', '0', 'Warlock - Dark Pact Rank 4'), +('59092', '0.96', '0', '0', 'Warlock - Dark Pact Rank 5'); + +-- 1248_mangos_7235_01_world_command +DELETE FROM `command` WHERE `name` = 'reset achievements'; +INSERT INTO `command` VALUES +('reset achievements',3,'Syntax: .reset achievements [$playername]\r\n\r\nReset achievements data for selected or named (online or offline) character. Achievements for persistance progress data like completed quests/etc re-filled at reset. Achievements for events like kills/casts/etc will lost.'); + +-- 1288_mangos_7242_01_world_spell_bonus_data +DELETE FROM spell_bonus_data WHERE entry IN (34913, 43043, 43044); +INSERT INTO spell_bonus_data VALUES + (34913, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 1'), + (43043, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 2'), + (43044, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 3'); + +-- 1293_mangos_7249_01_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry`='60200'; + +-- 1296_mangos_7252_01_world_command +DELETE FROM `command` WHERE `name` IN ('debug arena','debug bg'); +INSERT INTO `command` VALUES +('debug arena',3,'Syntax: .debug arena\r\n\r\nToggle debug mode for arenas. In debug mode GM can start arena with single player.'), +('debug bg',3,'Syntax: .debug bg\r\n\r\nToggle debug mode for battlegrounds. In debug mode GM can start battleground with single player.'); + +-- 1296_mangos_7252_02_world_trinity_string +DELETE FROM `trinity_string` WHERE entry IN (737,738,739,740,741,742,743,744,745,746); +INSERT INTO `trinity_string` VALUES +(737,'Arenas are set to 1v1 for debugging. So, don\'t join as group.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(738,'Arenas are set to normal playercount.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(739,'Battlegrounds are set to 1v0 for debugging.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(740,'Battlegrounds are set to normal playercount.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(741,'Flushing Arena points based on team ratings, this may take a few minutes. Please stand by...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(742,'Distributing arena points to players...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(743,'Finished setting arena points for online players.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(744,'Modifying played count, arena points etc. for loaded arena teams, sending updated stats to online players...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(745,'Modification done.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(746,'Done flushing Arena points.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 1307_world +UPDATE `creature_template` SET `ScriptName`='npc_stormwind_harbor_taxi' WHERE `entry`=29154; + +-- 1312_world +UPDATE `creature_template` SET `scriptname` = 'boss_keleseth' WHERE `entry` = '23953'; +UPDATE `creature_template` SET `scriptname` = 'mob_frost_tomb' WHERE `entry` = '23965'; +UPDATE `instance_template` SET `script`='instance_utgarde_keep' WHERE `map`= '574'; +INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES +(-1574000, 'Your blood is mine!',13221,1,0,'keleseth SAY_AGGRO'), +(-1574001, 'Darkness waits',13223,1,0, 'keleseth SAY_KILL'), +(-1574002, 'I join... the night.',13225,1,0, 'keleseth SAY_DEATH'), +(-1574003, 'Not so fast.',13222,1,0, 'keleseth SAY_FROST_TOMB'), +(-1574004, 'Aranal, lidel! Their fate shall be yours!',13224,1,0, 'keleseth SAY_SKELETONS'); + +-- 1327_world +ALTER TABLE `creature_template` ADD COLUMN `spell5` mediumint(8) unsigned NOT NULL default '0' AFTER `spell4`; +ALTER TABLE `creature_template` ADD COLUMN `spell6` mediumint(8) unsigned NOT NULL default '0' AFTER `spell5`; +ALTER TABLE `creature_template` ADD COLUMN `spell7` mediumint(8) unsigned NOT NULL default '0' AFTER `spell6`; +ALTER TABLE `creature_template` ADD COLUMN `spell8` mediumint(8) unsigned NOT NULL default '0' AFTER `spell7`; + +-- 1351_world +DROP TABLE IF EXISTS `trinity_string`; +CREATE TABLE IF NOT EXISTS `trinity_string` ( + `entry` mediumint(8) unsigned NOT NULL default '0', + `content_default` text NOT NULL, + `content_loc1` text, + `content_loc2` text, + `content_loc3` text, + `content_loc4` text, + `content_loc5` text, + `content_loc6` text, + `content_loc7` text, + `content_loc8` text, + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `mangos_string` +-- + +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +(1, 'You should select a character or a creature.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(2, 'You should select a creature.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(3, '|cffff0000[System Message]: %s|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(4, '|cffff0000[Event Message]: %s|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5, 'There is no help for that command', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(6, 'There is no such command', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(7, 'There is no such subcommand', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(8, 'Command %s have subcommands:%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(9, 'Commands available to you:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10, 'Incorrect syntax.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(11, 'Your account level is: %i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(12, 'Online players: %u (max: %u) Queued players: %u (max: %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(13, 'Server uptime: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(14, 'Player saved.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(15, 'All players saved.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(16, 'There are the following active GMs on this server:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(17, 'There are no GMs currently logged in on this server.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(18, 'Cannot do that while flying.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(19, 'Cannot do that in Battlegrounds.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(20, 'Target is flying you can''t do that.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(21, '%s is flying command failed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(22, 'You are not mounted so you can''t dismount.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(23, 'Cannot do that while fighting.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(24, 'You used it recently.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(25, 'Password not changed (unknown error)!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(26, 'The password was changed', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(27, 'The new passwords do not match or the old password is wrong', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(28, 'Your account is now locked.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(29, 'Your account is now unlocked.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(30, ', rank ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(31, ' [known]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(32, ' [learn]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(33, ' [passive]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(34, ' [talent]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(35, ' [active]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(36, ' [complete]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(37, ' (offline)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(38, 'on', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(39, 'off', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(40, 'You are: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(41, 'visible', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(42, 'invisible', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(43, 'done', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(44, 'You', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(45, ' <unknown> ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(46, '<error>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(47, '<non-existing character>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(48, 'UNKNOWN', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(49, 'You must be at least level %u to enter.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(50, 'You must be at least level %u and have item %s to enter.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(51, 'Hello! Ready for some training?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(52, 'Invaid item count (%u) for item %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(53, 'Mail can''t have more %u item stacks', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(54, 'The new passwords do not match', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(55, 'Your password can''t be longer than 16 characters (client limit), password not changed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(56, 'Current Message of the day: \r\n%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(57, 'Using World DB: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(58, 'Using script library: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(100, 'Global notify: ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(101, 'Map: %u (%s) Zone: %u (%s) Area: %u (%s)\nX: %f Y: %f Z: %f Orientation: %f\ngrid[%u,%u]cell[%u,%u] InstanceID: %u\n ZoneX: %f ZoneY: %f\nGroundZ: %f FloorZ: %f Have height data (Map: %u VMap: %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(102, '%s is already being teleported.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(103, 'You can summon a player to your instance only if he is in your party with you as leader.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(104, 'You cannot go to the player''s instance because you are in a party now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(105, 'You can go to the player''s instance while not being in his party only if your GM mode is on.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(106, 'You can not go to player %s from instance to instance.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(107, 'You can not summon player %s from instance to instance.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(108, 'You are summoning %s%s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(109, 'You are being summoned by %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(110, 'You are teleporting %s%s to %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(111, 'You are being teleported by %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(112, 'Player (%s) does not exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(113, 'Appearing at %s''s location.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(114, '%s is appearing to your location.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(115, 'Incorrect values.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(116, 'No character selected.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(117, '%s is not in a group.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(118, 'You changed HP of %s to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(119, '%s changed your HP to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(120, 'You changed MANA of %s to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(121, '%s changed your MANA to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(122, 'You changed ENERGY of %s to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(123, '%s changed your ENERGY to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(124, 'Current energy: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(125, 'You changed rage of %s to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(126, '%s changed your rage to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(127, 'You changed level of %s to %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(128, 'GUID %i, faction is %i, flags is %i, npcflag is %i, DY flag is %i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(129, 'Wrong faction: %u (not found in factiontemplate.dbc).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(130, 'You changed GUID=%i ''s Faction to %i, flags to %i, npcflag to %i, dyflag to %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(131, 'You changed the spellflatid=%i, val= %i, mark =%i to %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(132, '%s changed your spellflatid=%i, val= %i, mark =%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(133, '%s has access to all taxi nodes now (until logout).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(134, '%s has no more access to all taxi nodes now (only visited accessible).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(135, '%s has given you access to all taxi nodes (until logout).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(136, '%s has removed access to all taxi nodes (only visited still accessible).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(137, 'You set all speeds to %2.2f from normal of %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(138, '%s set all your speeds to %2.2f from normal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(139, 'You set the speed to %2.2f from normal of %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(140, '%s set your speed to %2.2f from normal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(141, 'You set the swim speed to %2.2f from normal of %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(142, '%s set your swim speed to %2.2f from normal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(143, 'You set the backwards run speed to %2.2f from normal of %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(144, '%s set your backwards run speed to %2.2f from normal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(145, 'You set the fly speed to %2.2f from normal of %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(146, '%s set your fly speed to %2.2f from normal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(147, 'You set the size %2.2f of %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(148, '%s set your size to %2.2f.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(149, 'There is no such mount.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(150, 'You give a mount to %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(151, '%s gave you a mount.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(152, 'USER1: %i, ADD: %i, DIF: %i\n', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(153, 'You take all copper of %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(154, '%s took you all of your copper.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(155, 'You take %i copper from %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(156, '%s took %i copper from you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(157, 'You give %i copper to %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(158, '%s gave you %i copper.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(159, 'You hear sound %u.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(160, 'USER2: %i, ADD: %i, RESULT: %i\n', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(161, 'Removed bit %i in field %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(162, 'Set bit %i in field %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(163, 'Teleport location table is empty!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(164, 'Teleport location not found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(165, 'Requires search parameter.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(166, 'There are no teleport locations matching your request.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(168, 'Locations found are:\n%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(169, 'Mail sent to %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(170, 'You try to hear sound %u but it doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(172, 'server console command', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(173, 'You changed runic power of %s to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(174, '%s changed your runic power to %i/%i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +(200, 'No selection.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(201, 'Object GUID is: lowpart %u highpart %X', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(202, 'The name was too long by %i characters.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(203, 'Error, name can only contain characters A-Z and a-z.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(204, 'The subname was too long by %i characters.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(205, 'Not yet implemented', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(206, 'Item ''%i'' ''%s'' added to list with maxcount ''%i'' and incrtime ''%i'' and extendedcost ''%i''', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(207, 'Item ''%i'' not found in database.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(208, 'Item ''%i'' ''%s'' deleted from vendor list', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(209, 'Item ''%i'' not found in vendor list.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(210, 'Item ''%i'' already in vendor list.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(211, 'Spells of %s reset.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(212, 'Spells of %s will reset at next login.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(213, 'Talents of %s reset.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(214, 'Talents of %s will reset at next login.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(215, 'Your spells have been reset.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(216, 'Your talents have been reset.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(217, 'Unknown case ''%s'' for .resetall command. Type full correct case name.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(218, 'Spells will reset for all players at login. Strongly recommend re-login!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(219, 'Talents will reset for all players at login. Strongly recommend re-login!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(220, 'Creature (GUID: %u) No waypoint found.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(221, 'Creature (GUID: %u) Last waypoint not found.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(222, 'Creature (GUID: %u) No waypoint found - used ''wpguid''. Now trying to find it by its position...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(223, 'Creature (GUID: %u) No waypoints found - This is a MaNGOS db problem (single float).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(224, 'Selected creature is ignored - provided GUID is used', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(225, 'Creature (GUID: %u) not found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(226, 'You must select a visual waypoint.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(227, 'No visual waypoints found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(228, 'Could not create visual waypoint with creatureID: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(229, 'All visual waypoints removed', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(230, 'Could not create waypoint-creature with ID: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(231, 'No GUID provided.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(232, 'No waypoint number provided.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(233, 'Argument required for ''%s''.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(234, 'Waypoint %i added to GUID: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(235, 'Waypoint %d added.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(236, 'Waypoint changed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(237, 'Waypoint %s modified.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(238, 'WP export successfull.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(239, 'No waypoints found inside the database.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(240, 'File imported.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(241, 'Waypoint removed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(242, 'Warning: Could not delete WP from the world with ID: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(243, 'This happens if the waypoint is too far away from your char.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(244, 'The WP is deleted from the database, but not from the world here.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(245, 'They will disappear after a server restart.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(246, 'Waypoint %d: Info for creature: %s, GUID: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(247, 'Waittime: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(248, 'Model %d: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(249, 'Emote: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(250, 'Spell: %d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(251, 'Text%d (ID: %i): %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(252, 'AIScript: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(253, 'Forced rename for player %s will be requested at next login.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(254, 'Forced rename for player %s (GUID #%u) will be requested at next login.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(255, 'Waypoint-Creature (GUID: %u) Not found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(256, 'Could not find NPC...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(257, 'Creature movement type set to ''%s'', waypoints removed (if any).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(258, 'Creature movement type set to ''%s'', waypoints were not removed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(259, 'Incorrect value, use on or off', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(260, 'Value saved.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(261, 'Value saved, you may need to rejoin or clean your client cache.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(262, 'Areatrigger ID %u not found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(263, 'Target map or coordinates is invalid (X: %f Y: %f MapId: %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(264, 'Zone coordinates is invalid (X: %f Y: %f AreaId: %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(265, 'Zone %u (%s) is part of instanceable map %u (%s)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(266, 'Nothing found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(267, 'Object not found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(268, 'Creature not found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(269, 'Warning: Mob found more than once - you will be teleported to the first one found in DB.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(270, 'Creature Removed', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(271, 'Creature moved.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(272, 'Creature (GUID:%u) must be on the same map as player!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(273, 'Game Object (GUID: %u) not found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(274, 'Game Object (GUID: %u) has references in not found creature %u GO list, can''t be deleted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(275, 'Game Object (GUID: %u) removed', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(276, 'Game Object (GUID: %u) turned', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(277, 'Game Object (GUID: %u) moved', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(278, 'You must select a vendor', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(279, 'You must send id for item', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(280, 'Vendor has too many items (max 128)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(281, 'You can''t kick self, logout instead', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(282, 'Player %s kicked.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(283, 'Player %s not found.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(284, 'Accepting Whisper: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(285, 'Accepting Whisper: ON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(286, 'Accepting Whisper: OFF', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(287, 'Creature (GUID: %u) not found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(288, 'Tickets count: %i show new tickets: %s\n', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(289, 'New ticket from %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(290, 'Ticket of %s (Last updated: %s):\n%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(291, 'New ticket show: ON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(292, 'New ticket show: OFF', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(293, 'Ticket %i doesn''t exist', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(294, 'All tickets deleted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(295, 'Character %s ticket deleted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(296, 'Ticket deleted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(297, 'Spawn distance changed to: %f', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(298, 'Spawn time changed to: %i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(299, 'The honor of %s was set to %u!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(300, 'Your chat has been disabled for %u minutes.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(301, 'You have disabled %s''s chat for %u minutes.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(302, 'Player''s chat is already enabled.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(303, 'Your chat has been enabled.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(304, 'You have enabled %s''s chat.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(305, 'Faction %s (%u) reputation of %s was set to %5d!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(306, 'The arena points of %s was set to %u!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(307, 'No faction found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(308, 'Faction %i unknown!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(309, 'Invalid parameter %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(310, 'delta must be between 0 and %d (inclusive)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(311, '%d - |cffffffff|Hfaction:%d|h[%s]|h|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(312, ' [visible]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(313, ' [at war]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(314, ' [peace forced]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(315, ' [hidden]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(316, ' [invisible forced]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(317, ' [inactive]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(318, 'Hated', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(319, 'Hostile', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(320, 'Unfriendly', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(321, 'Neutral', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(322, 'Friendly', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(323, 'Honored', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(324, 'Revered', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(325, 'Exalted', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(326, 'Faction %s (%u) can''not have reputation.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(327, ' [no reputation]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(328, 'Characters at account %s (Id: %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(329, ' %s (GUID %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(330, 'No players found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(331, 'Extended item cost %u not exist', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(332, 'GM mode is ON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(333, 'GM mode is OFF', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(334, 'GM Chat Badge is ON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(335, 'GM Chat Badge is OFF', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(336, 'You repair all %s''s items.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(337, 'All your items repaired by %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(338, 'You set waterwalk mode %s for %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(339, 'Your waterwalk mode %s by %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(340, '%s is now following you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(341, '%s is not following you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(342, '%s is now not following you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(343, 'Creature (Entry: %u) cannot be tamed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(344, 'You already have pet.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(345, 'Forced customize for player %s will be requested at next login.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(346, 'Forced customize for player %s (GUID #%u) will be requested at next login.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(400, '|cffff0000[System Message]:|rScripts reloaded', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(401, 'You change security level of account %s to %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(402, '%s changed your security level to %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(403, 'You have low security level for this.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(404, 'Creature movement disabled.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(405, 'Creature movement enabled.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(406, 'Weather can''t be changed for this zone.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(407, 'Weather system disabled at server.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(408, '%s is banned for %s. Reason: %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(409, '%s is banned permanently for %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(410, '%s %s not found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(411, '%s unbanned.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(412, 'There was an error removing the ban on %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(413, 'Account not exist: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(414, 'There is no such character.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(415, 'There is no such IP in banlist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(416, 'Account %s has never been banned', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(417, 'Ban history for account %s:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(418, 'Ban Date: %s Bantime: %s Still active: %s Reason: %s Set by: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(419, 'Inf.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(420, 'Never', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(421, 'Yes', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(422, 'No', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(423, 'IP: %s\nBan Date: %s\nUnban Date: %s\nRemaining: %s\nReason: %s\nSet by: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(424, 'There is no matching IPban.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(425, 'There is no matching account.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(426, 'There is no banned account owning a character matching this part.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(427, 'The following IPs match your pattern:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(428, 'The following accounts match your query:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(429, 'You learned many spells/skills.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(430, 'You learned all spells for class.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(431, 'You learned all talents for class.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(432, 'You learned all languages.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(433, 'You learned all craft skills and recipes.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(434, 'Could not find ''%s''', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(435, 'Invalid item id: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(436, 'No items found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(437, 'Invalid gameobject id: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(438, 'Found items %u: %u ( inventory %u mail %u auction %u guild %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(439, 'Found gameobjects %u: %u ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(440, 'Invalid creature id: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(441, 'Found creatures %u: %u ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(442, 'No area found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(443, 'No item sets found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(444, 'No skills found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(445, 'No spells found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(446, 'No quests found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(447, 'No creatures found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(448, 'No gameobjects found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(449, 'Graveyard #%u doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(450, 'Graveyard #%u already linked to zone #%u (current).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(451, 'Graveyard #%u linked to zone #%u (current).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(452, 'Graveyard #%u can''t be linked to subzone or not existed zone #%u (internal error).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(454, 'No faction in Graveyard with id= #%u , fix your DB', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(455, 'invalid team, please fix database', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(456, 'any', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(457, 'alliance', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(458, 'horde', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(459, 'Graveyard #%u (faction: %s) is nearest from linked to zone #%u.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(460, 'Zone #%u doesn''t have linked graveyards.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(461, 'Zone #%u doesn''t have linked graveyards for faction: %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(462, 'Teleport location already exists!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(463, 'Teleport location added.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(464, 'Teleport location NOT added: database error.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(465, 'Teleport location deleted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(467, 'Target unit has %d auras:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(468, 'id: %d eff: %d type: %d duration: %d maxduration: %d name: %s%s%s caster: %s %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(469, 'Target unit has %d auras of type %d:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(470, 'id: %d eff: %d name: %s%s%s caster: %s %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(471, 'Quest %u not found.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(472, 'Quest %u started from item. For correct work, please, add item to inventory and start quest in normal way: .additem %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(473, 'Quest removed.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(474, ' [rewarded]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(475, ' [complete]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(476, ' [active]', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(477, '%s''s Fly Mode %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(478, 'Opcode %u sent to %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(479, 'Character loaded successfully!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(480, 'Failed to load the character!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(481, 'Character dumped successfully!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(482, 'Character dump failed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(483, 'Spell %u broken and not allowed to cast or learn!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(484, 'Skill %u (%s) for player %s set to %u and current maximum set to %u (without permanent (talent) bonuses).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(485, 'Player %s must have skill %u (%s) before using this command.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(486, 'Invalid skill id (%u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(487, 'You learned default GM spells/skills.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(488, 'You already know that spell.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(489, 'Target(%s) already know that spell.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(490, '%s doesn''t know that spell.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(491, 'You already forgot that spell.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(492, 'All spell cooldowns removed for %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(493, 'Spell %u cooldown removed for %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(494, 'Command : Additem, itemId = %i, amount = %i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(495, 'Command : Additemset, itemsetId = %i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(496, 'Removed itemID = %i, amount = %i from %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(497, 'Cannot create item ''%i'' (amount: %i)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(498, 'You need to provide a guild name!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(499, 'Player not found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +(500, 'Player already has a guild!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(501, 'Guild not created! (already exists?)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(502, 'No items from itemset ''%u'' found.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(503, 'The distance is: (3D) %f (2D) %f yards.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(504, 'Item ''%i'' ''%s'' Item Slot %i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(505, 'Item ''%i'' doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(506, 'Item ''%i'' ''%s'' Added to Slot %i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(507, 'Item save failed!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(508, '%d - owner: %s (guid: %u account: %u ) %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(509, '%d - sender: %s (guid: %u account: %u ) receiver: %s (guid: %u account: %u ) %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(510, '%d - owner: %s (guid: %u account: %u ) %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(511, 'Wrong link type!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(512, '%d - |cffffffff|Hitem:%d:0:0:0:0:0:0:0|h[%s]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(513, '%d - |cffffffff|Hquest:%d|h[%s]|h|r %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(514, '%d - |cffffffff|Hcreature_entry:%d|h[%s]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(515, '%d - |cffffffff|Hcreature:%d|h[%s X:%f Y:%f Z:%f MapId:%d]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(516, '%d - |cffffffff|Hgameobject_entry:%d|h[%s]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(517, '%d - |cffffffff|Hgameobject:%d|h[%s X:%f Y:%f Z:%f MapId:%d]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(518, '%d - |cffffffff|Hitemset:%d|h[%s %s]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(519, '|cffffffff|Htele:%s|h[%s]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(520, '%d - |cffffffff|Hspell:%d|h[%s]|h|r ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(521, '%d - |cffffffff|Hskill:%d|h[%s %s]|h|r %s %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(522, 'Game Object (GUID: %u) not found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(523, '>> Game Object %s (GUID: %u) at %f %f %f. Orientation %f.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(524, 'Selected object:\n|cffffffff|Hitemset:%d|h[%s]|h|r\nGUID: %u ID: %u\nX: %f Y: %f Z: %f MapId: %u\nOrientation: %f', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(525, '>> Add Game Object ''%i'' (%s) (GUID: %i) added at ''%f %f %f''.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(526, '%s (lowguid: %u) movement generators stack:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(527, ' Idle', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(528, ' Random', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(529, ' Waypoint', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(530, ' Animal random', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(531, ' Confused', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(532, ' Targeted to player %s (lowguid %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(533, ' Targeted to creature %s (lowguid %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(534, ' Targeted to <NULL>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(535, ' Home movement to (X:%f Y:%f Z:%f)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(536, ' Home movement used for player?!?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(537, ' Taxi flight', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(538, ' Unknown movement generator (%u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(539, 'Player selected NPC\nGUID: %u.\nFaction: %u.\nnpcFlags: %u.\nEntry: %u.\nDisplayID: %u (Native: %u).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(540, 'Level: %u.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(541, 'Health (base): %u. (max): %u. (current): %u.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(542, 'Field Flags: %u.\nDynamic Flags: %u.\nFaction Template: %u.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(543, 'Loot: %u Pickpocket: %u Skinning: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(544, 'Position: %f %f %f.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(545, '*** Is a vendor!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(546, '*** Is a trainer!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(547, 'InstanceID: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(548, 'Player%s %s (guid: %u) Account: %s (id: %u) GMLevel: %u Last IP: %s Last login: %s Latency: %ums', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(549, 'Played time: %s Level: %u Money: %ug%us%uc', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(550, 'Command .pinfo doesn''t support ''rep'' option for offline players.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(551, '%s has explored all zones now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(552, '%s has no more explored zones.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(553, '%s has explored all zones for you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(554, '%s has hidden all zones from you.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(555, 'Hover enabled', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(556, 'Hover disabled', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(557, 'You have been leveled up (%i)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(558, 'You have been leveled down (%i)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(559, 'Your level progress has been reset.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(560, 'The area has been set as explored.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(561, 'The area has been set as not explored.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(562, 'GUID=%i ''s updateIndex: %i, value: %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(563, 'You change GUID=%i ''s UpdateIndex: %i value to %i.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(564, 'The value index %u is too big to %u(count: %u).', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(565, 'Set %u uint32 Value:[OPCODE]:%u [VALUE]:%u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(566, 'You Set %u Field:%u to uint32 Value: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(567, 'Set %u float Value:[OPCODE]:%u [VALUE]:%f', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(568, 'You Set %u Field:%i to float Value: %f', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(569, 'Get %u uint32 Value:[OPCODE]:%u [VALUE]:%u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(570, 'The uint32 value of %u in %u is: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(571, 'Get %u float Value:[OPCODE]:%u [VALUE]:%f', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(572, 'The float of %u value in %u is: %f', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(573, '.Set32Bit:[OPCODE]:%u [VALUE]:%u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(574, 'You set Bit of Field:%u to Value: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(575, '.Mod32Value:[OPCODE]:%u [VALUE]:%i', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(576, 'You modified the value of Field:%u to Value: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(577, 'You are now invisible.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(578, 'You are now visible.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(579, 'Selected player or creature not have victim.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(580, 'Player %s learned all default spells for race/class and completed quests rewarded spells.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(581, 'Found near gameobjects (distance %f): %u ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(582, 'SpawnTime: Full:%s Remain:%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(583, '%d - |cffffffff|Hgameevent:%d|h[%s]|h|r%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(584, 'No event found!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(585, 'Event not exist!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(586, 'Event %u: %s%s\nStart: %s End: %s Occurence: %s Length: %s\nNext state change: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(587, 'Event %u already active!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(588, 'Event %u not active!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(589, ' Point movement to (X:%f Y:%f Z:%f)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(590, ' Fear movement', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(591, ' Distract movement', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(592, 'You have learned all spells in craft: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(593, 'Currently Banned Accounts:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(594, '| Account | BanDate | UnbanDate | Banned By | Ban Reason |', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(595, 'Currently Banned IPs:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(596, '| IP | BanDate | UnbanDate | Banned By | Ban Reason |', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(597, 'Current gamemasters:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(598, '| Account | GM |', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(599, 'No gamemasters.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(600, 'The Alliance wins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(601, 'The Horde wins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(602, 'The battle for Warsong Gulch begins in 1 minute.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(603, 'The battle for Warsong Gulch begins in 30 seconds. Prepare yourselves!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(604, 'Let the battle for Warsong Gulch begin!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(605, '$n captured the Horde flag!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(606, '$n captured the Alliance flag!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(607, 'The Horde flag was dropped by $n!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(608, 'The Alliance Flag was dropped by $n!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(609, 'The Alliance Flag was returned to its base by $n!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(610, 'The Horde flag was returned to its base by $n!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(611, 'The Horde flag was picked up by $n!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(612, 'The Alliance Flag was picked up by $n!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(613, 'The flags are now placed at their bases.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(614, 'The Alliance flag has been respawned!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(615, 'The Horde flag has been respawned!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(636, 'The Battle for Eye of the Storm begins in 1 minute.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(637, 'The Battle for Eye of the Storm begins in 30 seconds.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(638, 'The Battle for Eye of the Storm has begun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(650, 'Alliance', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(651, 'Horde', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(652, 'stables', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(653, 'blacksmith', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(654, 'farm', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(655, 'lumber mill', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(656, 'mine', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(657, 'The %s has taken the %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(658, '$n has defended the %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(659, '$n has assaulted the %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(660, '$n claims the %s! If left unchallenged, the %s will control it in 1 minute!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(661, 'The Battle for Arathi Basin begins in 1 minute.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(662, 'The Battle for Arathi Basin begins in 30 seconds. Prepare yourselves!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(663, 'The Battle for Arathi Basin has begun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(664, 'The Alliance has gathered $1776W resources, and is near victory!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(665, 'The Horde has gathered $1777W resources, and is near victory!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(666, 'After your recent battle in %s our best attempts to award you a Mark of Honor failed. Enclosed you will find the Mark of Honor we were not able to deliver to you at the time. Thanks for fighting in %s!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(667, 'The Alliance has taken control of the Mage Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(668, 'The Horde has taken control of the Mage Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(669, 'The Alliance has taken control of the Draenei Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(670, 'The Horde has taken control of the Draenei Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(671, 'The Alliance has taken control of the Blood Elf Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(672, 'The Horde has taken control of the Blood Elf Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(673, 'The Alliance has taken control of the Fel Reaver Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(674, 'The Horde has taken control of the Fel Reaver Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(675, 'The Alliance has lost control of the Mage Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(676, 'The Horde has lost control of the Mage Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(677, 'The Alliance has lost control of the Draenei Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(678, 'The Horde has lost control of the Draenei Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(679, 'The Alliance has lost control of the Blood Elf Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(680, 'The Horde has lost control of the Blood Elf Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(681, 'The Alliance has lost control of the Fel Reaver Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(682, 'The Horde has lost control of the Fel Reaver Ruins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(683, '$N has taken the flag!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(684, 'The Alliance has captured the flag!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(685, 'The Horde has captured the flag!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(686, 'The Flag has been dropped!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(687, 'The flag has been reset', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(700, 'You must be level %u to form an arena team', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(701, 'One minute until the Arena battle begins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(702, 'Thirty seconds until the Arena battle begins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(703, 'Fifteen seconds until the Arena battle begins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(704, 'The Arena battle has begun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(705, 'You must wait %s before speaking again.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(706, 'This item(s) have problems with equipping/storing in inventory.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(707, '%s wishes to not be disturbed and cannot receive whisper messages: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(708, '%s is Away from Keyboard: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(709, 'Do not Disturb', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(710, 'Away from Keyboard', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +(711, 'Queue status for %s (Lvl: %u to %u)\nQueued alliances: %u (Need at least %u more)\nQueued hordes: %u (Need at least %u more)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(712, '|cffff0000[BG Queue Announcer]:|r %s -- [%u-%u] A: %u/%u, H: %u/%u|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(713, 'You must be level %u to join an arena team!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(715, 'You don''t meet Battleground level requirements', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(717, '|cffff0000[BG Queue Announcer]:|r %s -- [%u-%u] Started!|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(718, '|cffff0000[Arena Queue Announcer]:|r %s -- Joined : %ux%u : %u|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(719, '|cffff0000[Arena Queue Announcer]:|r %s -- Exited : %ux%u : %u|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(720, 'Your group is too large for this battleground. Please regroup to join.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(721, 'Your group is too large for this arena. Please regroup to join.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(722, 'Your group has members not in your arena team. Please regroup to join.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(723, 'Your group does not have enough players to join this match.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(724, 'The Gold Team wins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(725, 'The Green Team wins!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(726, 'There aren''t enough players in this battleground. It will end soon unless some more players join to balance the fight.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(727, 'Your group has an offline member. Please remove him before joining.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(728, 'Your group has players from the opposing faction. You can''t join the battleground as a group.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(729, 'Your group has players from different battleground brakets. You can''t join as group.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(730, 'Someone in your party is already in this battleground queue. (S)he must leave it before joining as group.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(731, 'Someone in your party is Deserter. You can''t join as group.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(732, 'Someone in your party is already in three battleground queues. You cannot join as group.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(733, 'You cannot teleport to a battleground or arena map.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(734, 'You cannot summon players to a battleground or arena map.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(735, 'You must be in GM mode to teleport to a player in a battleground.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(736, 'You cannot teleport to a battleground from another battleground. Please leave the current battleground first.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(737, 'Arenas are set to 1v1 for debugging. So, don''t join as group.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(738, 'Arenas are set to normal playercount.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(739, 'Battlegrounds are set to 1v0 for debugging.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(740, 'Battlegrounds are set to normal playercount.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(741, 'Flushing Arena points based on team ratings, this may take a few minutes. Please stand by...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(742, 'Distributing arena points to players...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(743, 'Finished setting arena points for online players.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(744, 'Modifying played count, arena points etc. for loaded arena teams, sending updated stats to online players...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(745, 'Modification done.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(746, 'Done flushing Arena points.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(785, 'Arena testing turned %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(786, '|cffff0000[Automatic]:|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(787, '|cffffff00[|c1f40af20Announce by|r |cffff0000%s|cffffff00]:|r %s|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(800, 'Invalid name', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(801, 'You do not have enough gold', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(802, 'You do not have enough free slots', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(803, 'Your partner does not have enough free bag slots', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(804, 'You do not have permission to perform that function', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(805, 'Unknown language', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(806, 'You don''t know that language', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(807, 'Please provide character name', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(808, 'Player %s not found or offline', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(809, 'Account for character %s not found', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1000, 'Exiting daemon...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1001, 'Account deleted: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1002, 'Account %s NOT deleted (probably sql file format was updated)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1003, 'Account %s NOT deleted (unknown error)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1004, 'Account created: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1005, 'Account name can''t be longer than 16 characters (client limit), account not created!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1006, 'Account with this name already exist!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1007, 'Account %s NOT created (probably sql file format was updated)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1008, 'Account %s NOT created (unknown error)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1009, 'Player %s (Guid: %u) Account %s (Id: %u) deleted.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1010, '| Account | Character | IP | GM | TBC |', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1011, '|<Error> | %20s |<Error> |<Er>|<Err>|', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1100, 'Account %s (Id: %u) have up to %u expansion allowed now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1101, 'Message of the day changed to:\r\n%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1102, 'Message sent to %s: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1103, '%d - %s %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1104, '%d - %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1105, '%d - %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1106, '%d - %s %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1107, '%d - %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1108, '%d - %s %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1109, '%d - %s %s %s %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1110, '%d - %s X:%f Y:%f Z:%f MapId:%d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1111, '%d - %s X:%f Y:%f Z:%f MapId:%d', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1112, 'Failed to open file: %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1113, 'Account %s (%u) have max amount allowed characters (client limit)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1114, 'Dump file have broken data!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1115, 'Invalid character name!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1116, 'Invalid character guid!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1117, 'Character guid %u in use!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1118, '%d - guild: %s (guid: %u) %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1119, 'You must use male or female as gender.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1120, 'You change gender of %s to %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1121, 'Your gender changed to %s by %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1122, '(%u/%u +perm %u +temp %u)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + +(1200,'Alliance',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1201,'Horde',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1202,'%s was destroyed by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1203,'The %s is under attack! If left unchecked, the %s will destroy it!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1204,'The %s was taken by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1205,'The %s was taken by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1206,'The %s was taken by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1207,'The %s is under attack! If left unchecked, the %s will capture it!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1208,'The %s has taken the %s! Its supplies will now be used for reinforcements!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1209,'Irondeep Mine',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1210,'Coldtooth Mine',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1211,'Stormpike Aid Station',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1212,'Dun Baldar South Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1213,'Dun Baldar North Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1214,'Stormpike Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1215,'Icewing Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1216,'Stonehearth Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1217,'Stonehearth Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1218,'Snowfall Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1219,'Iceblood Tower',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1220,'Iceblood Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1221,'Tower Point',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1222,'Frostwolf Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1223,'East Frostwolf Tower',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1224,'West Frostwolf Tower',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1225,'Frostwolf Relief Hut',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1226,'The Battle for Alterac Valley begins in 1 minute.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1227,'The Battle for Alterac Valley begins in 30 seconds. Prepare yourselves!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1228,'The Battle for Alterac Valley has begun!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1229,'The Alliance Team is running out of reinforcements!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1230,'The Horde Team is running out of reinforcements!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1231,'The Frostwolf General is Dead!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1232,'The Stormpike General is Dead!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +(2000, '|cff00ff00New ticket from|r|cffff00ff %s.|r |cff00ff00Ticket entry:|r|cffff00ff %d.|r', '', '', '', '', '', '', '', ''), +(2001, '|cff00ff00Character|r|cffff00ff %s |r|cff00ff00edited his/her ticket:|r|cffff00ff %d.|r', '', '', '', '', '', '', '', ''), +(2002, '|cff00ff00Character|r|cffff00ff %s |r|cff00ff00abandoned ticket entry:|r|cffff00ff %d.|r', '', '', '', '', '', '', '', ''), +(2003, '|cff00ff00Closed by|r:|cff00ccff %s|r ', '', '', '', '', '', '', '', ''), +(2004, '|cff00ff00Deleted by|r:|cff00ccff %s|r ', '', '', '', '', '', '', '', ''), +(2005, 'Ticket not found.', '', '', '', '', '', '', '', ''), +(2006, 'Please close ticket before deleting it permanently.', '', '', '', '', '', '', '', ''), +(2007, 'Ticket %d is already assigned.', '', '', '', '', '', '', '', ''), +(2008, '%u Tickets succesfully reloaded from the database.', '', '', '', '', '', '', '', ''), +(2009, 'Showing list of open tickets.', '', '', '', '', '', '', '', ''), +(2010, 'Showing list of open tickets whose creator is online.', '', '', '', '', '', '', '', ''), +(2011, 'Showing list of closed tickets.', '', '', '', '', '', '', '', ''), +(2012, 'Invalid name specified. Name should be that of an online Gamemaster.', '', '', '', '', '', '', '', ''), +(2013, 'This ticket is already assigned to yourself. To unassign use .ticket unassign %d and then reassign.', '', '', '', '', '', '', '', ''), +(2014, 'Ticket %d is not assigned, you cannot unassign it.', '', '', '', '', '', '', '', ''), +(2015, 'You cannot unassign tickets from staffmembers with a higher security level than yourself.', '', '', '', '', '', '', '', ''), +(2016, 'Cannot close ticket %d, it is assigned to another GM.', '', '', '', '', '', '', '', ''), +(2017, '|cff00ff00Ticket|r:|cff00ccff %d.|r ', '', '', '', '', '', '', '', ''), +(2018, '|cff00ff00Created by|r:|cff00ccff %s|r ', '', '', '', '', '', '', '', ''), +(2019, '|cff00ff00Last change|r:|cff00ccff %s ago|r ', '', '', '', '', '', '', '', ''), +(2020, '|cff00ff00Assigned to|r:|cff00ccff %s|r ', '', '', '', '', '', '', '', ''), +(2021, '|cff00ff00Unassigned by|r:|cff00ccff %s|r ', '', '', '', '', '', '', '', ''), +(2022, '\n|cff00ff00Message|r: \"%s\"|r ', '', '', '', '', '', '', '', ''), +(2023, '\n|cff00ff00Comment|r: \"%s\"|r ', '', '', '', '', '', '', '', ''), +(2024, '\n|cff00ccff%s|r |cff00ff00Added comment|r: \"%s\"|r ', '', '', '', '', '', '', '', ''), + +(5000, 'You froze player %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5001, 'It might be amusing but no... you cant freeze yourself!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5002, 'Invalid input check the name of target.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5003, 'You unfroze player %s.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5004, 'There are no frozen players.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5005, 'Following players are frozen on the server:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5006, '- %s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(5009, 'Sound %u Played to server', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + +(6613, '|cfff00000[GM Announcement]: %s|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(6614, 'Notification to GM''s - ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(6615, '|cffffff00[|c1f40af20GM Announce by|r |cffff0000%s|cffffff00]:|r %s|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + +(10001, 'The Horde has taken The Overlook!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10002, 'The Alliance has taken The Overlook!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10003, 'The Horde has taken The Stadium!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10004, 'The Alliance has taken The Stadium!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10005, 'The Horde has taken Broken Hill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10006, 'The Alliance has taken Broken Hill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10007, 'The Horde lost The Overlook!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10008, 'The Alliance lost The Overlook!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10009, 'The Horde lost The Stadium!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10010, 'The Alliance lost The Stadium!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10011, 'The Horde lost Broken Hill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10012, 'The Alliance lost Broken Hill!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10013, 'The Horde has taken the West Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10014, 'The Alliance has taken the West Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10015, 'The Horde has taken the East Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10016, 'The Alliance has taken the East Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10017, 'The Horde has captured the Twin Spire Graveyard!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10018, 'The Alliance has captured the Twin Spire Graveyard!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10019, 'The Horde lost the West Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10020, 'The Alliance lost the West Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10021, 'The Horde lost the East Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10022, 'The Alliance lost the East Beacon!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10023, 'The Horde lost the Twin Spire Graveyard!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10024, 'The Alliance lost the Twin Spire Graveyard!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10025, 'The Horde has captured Halaa!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10026, 'The Alliance has captured Halaa!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10027, 'The Horde lost Halaa!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10028, 'The Alliance lost Halaa!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10029, 'The Horde has taken a Spirit Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10030, 'The Alliance has taken a Spirit Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10031, 'The Horde lost a Spirit Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10032, 'The Alliance lost a Spirit Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10033, 'The Horde has taken the Northpass Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10034, 'The Alliance has taken the Northpass Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10035, 'The Horde has taken the Eastwall Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10036, 'The Alliance has taken the Eastwall Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10037, 'The Horde has taken the Crown Guard Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10038, 'The Alliance has taken the Crown Guard Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10039, 'The Horde has taken the Plaguewood Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10040, 'The Alliance has taken the Plaguewood Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10041, 'The Horde lost the Northpass Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10042, 'The Alliance lost the Northpass Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10043, 'The Horde lost the Eastwall Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10044, 'The Alliance lost the Eastwall Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10045, 'The Horde lost the Crown Guard Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10046, 'The Alliance lost the Crown Guard Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10047, 'The Horde lost the Plaguewood Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10048, 'The Alliance lost the Plaguewood Tower!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10049, 'The Horde has collected 200 silithyst!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10050, 'The Alliance has collected 200 silithyst!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10051, 'Take me to Northpass Tower.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10052, 'Take me to Eastwall Tower.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10053, 'Take me to Crown Guard Tower.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10054, 'Give me the flag, I''ll take it to the central beacon for the glory of the Alliance!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10055, 'Give me the flag, I''ll take it to the central beacon for the glory of the Horde!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10056, 'You must be a member of the Horde to enter the Hall of Legends.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(10057, 'You must be a member of the Alliance to enter the Champion''s Hall.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- 1414_world_scripts +-- r847_scriptdev2_script_texts.sql +UPDATE `script_texts` SET emote=15 WHERE `entry`=-1000123; +UPDATE `script_texts` SET emote=1 WHERE `entry`=-1560028; +UPDATE `script_texts` SET emote=1 WHERE `entry`=-1560031; +UPDATE `script_texts` SET emote=5 WHERE `entry`=-1560032; +UPDATE `script_texts` SET emote=16 WHERE `entry`=-1000119; +UPDATE `script_texts` SET emote=254 WHERE `entry`=-1249002; +UPDATE `script_texts` SET emote=293 WHERE `entry`=-1249003; +UPDATE `script_texts` SET emote=1 WHERE `entry`=-1033000; +-- r848_scriptdev2_script_texts.sql +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1540047 AND -1540042; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1540042,'Ours is the true Horde! The only Horde!',10323,1,0,0,'kargath SAY_AGGRO1'), +(-1540043,'I\'ll carve the meat from your bones!',10324,1,0,0,'kargath SAY_AGGRO2'), +(-1540044,'I am called Bladefist for a reason, as you will see!',10325,1,0,0,'kargath SAY_AGGRO3'), +(-1540045,'For the real Horde!',10326,1,0,0,'kargath SAY_SLAY1'), +(-1540046,'I am the only Warchief!',10327,1,0,0,'kargath SAY_SLAY2'), +(-1540047,'The true Horde... will.. prevail...',10328,1,0,0,'kargath SAY_DEATH'); +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1533118 AND -1533109; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1533109,'You are mine now!',8825,1,0,0,'heigan SAY_AGGRO1'), +(-1533110,'I see you!',8826,1,0,0,'heigan SAY_AGGRO2'), +(-1533111,'You...are next!',8827,1,0,0,'heigan SAY_AGGRO3'), +(-1533112,'Close your eyes... sleep!',8829,1,0,0,'heigan SAY_SLAY'), +(-1533113,'The races of the world will perish. It is only a matter of time.',8830,1,0,0,'heigan SAY_TAUNT1'), +(-1533114,'I see endless suffering, I see torment, I see rage. I see... everything!',8831,1,0,0,'heigan SAY_TAUNT2'), +(-1533115,'Soon... the world will tremble!',8832,1,0,0,'heigan SAY_TAUNT3'), +(-1533116,'The end is upon you.',8833,1,0,0,'heigan SAY_TAUNT4'), +(-1533117,'Hungry worms will feast on your rotten flesh!',8834,1,0,0,'heigan SAY_TAUNT5'), +(-1533118,'Noo... o...',8828,1,0,0,'heigan SAY_DEATH'); +-- r849_scriptdev2_script_texts.sql +DELETE FROM `script_texts` WHERE `entry`=-1070000; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1070000,'None may steal the secrets of the makers!',5851,1,0,0,'ironaya SAY_AGGRO'); +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1129004 AND -1129000; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1129000,'You\'ll never leave this place... alive.',5825,1,0,0,'amnennar SAY_AGGRO'), +(-1129001,'To me, my servants!',5828,1,0,0,'amnennar SAY_SUMMON60'), +(-1129002,'Come, spirits, attend your master!',5829,1,0,0,'amnennar SAY_SUMMON30'), +(-1129003,'I am the hand of the Lich King!',5827,1,0,0,'amnennar SAY_HP'), +(-1129004,'Too...easy!',5826,1,0,0,'amnennar SAY_KILL'); +DELETE FROM `script_texts` WHERE `entry` IN (-1230002,-1230001); +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1230001,'Come to aid the Throne!',0,1,0,0,'dagran SAY_AGGRO'), +(-1230002,'Hail to the king, baby!',0,1,0,0,'dagran SAY_SLAY'); +-- r852_scriptdev2_script_texts.sql +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1189021 AND -1189011; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1189011,'Tell me... tell me everything!',5847,1,0,0,'vishas SAY_AGGRO'), +(-1189012,'Naughty secrets!',5849,1,0,0,'vishas SAY_HEALTH1'), +(-1189013,'I\'ll rip the secrets from your flesh!',5850,1,0,0,'vishas SAY_HEALTH2'), +(-1189014,'Purged by pain!',5848,1,0,0,'vishas SAY_KILL'), +(-1189015,'The monster got what he deserved.',0,0,1,0,'vishas SAY_TRIGGER_VORREL'), +(-1189016,'We hunger for vengeance.',5844,1,0,0,'thalnos SAY_AGGRO'), +(-1189017,'No rest, for the angry dead.',5846,1,0,0,'thalnos SAY_HEALTH'), +(-1189018,'More... More souls.',5845,1,0,0,'thalnos SAY_KILL'), +(-1189019,'You will not defile these mysteries!',5842,1,0,0,'doan SAY_AGGRO'), +(-1189020,'Burn in righteous fire!',5843,1,0,0,'doan SAY_SPECIALAE'), +(-1189021,'Release the hounds!',5841,1,0,0,'loksey SAY_AGGRO'); +-- r854_scriptdev2_script_texts.sql +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1070006 AND -1070001; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1070001,'Taste blade, mongrel!',0,0,0,0,'SAY_GUARD_SIL_AGGRO1'), +(-1070002,'Please tell me that you didn\'t just do what I think you just did. Please tell me that I\'m not going to have to hurt you...',0,0,0,0,'SAY_GUARD_SIL_AGGRO2'), +(-1070003,'As if we don\'t have enough problems, you go and create more!',0,0,0,0,'SAY_GUARD_SIL_AGGRO3'), +(-1070004,'looks up at you quizzically. Maybe you should inspect it?',0,2,0,0,'cluck EMOTE_A_HELLO'), +(-1070005,'looks at you unexpectadly.',0,2,0,0,'cluck EMOTE_H_HELLO'), +(-1070006,'starts pecking at the feed.',0,2,0,0,'cluck EMOTE_CLUCK_TEXT2'); +-- r855_scriptdev2_script_texts.sql +DELETE FROM `script_texts` WHERE `entry` IN (-1000004,-1000001); +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1000001,'goes into a killing frenzy!',0,2,0,0,'EMOTE_GENERIC_FRENZY_KILL'), +(-1000004,'goes into a berserker rage!',0,2,0,0,'EMOTE_GENERIC_BERSERK'); +DELETE FROM `script_texts` WHERE `entry` = -1000005; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1000005,'Greetings citizen',0,0,7,0,'general_marcus SAY_GREETING'); +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1329003 AND -1329000; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1329000,'Thanks to Egan',0,0,0,0,'freed_soul SAY_ZAPPED0'), +(-1329001,'Rivendare must die',0,0,0,0,'freed_soul SAY_ZAPPED1'), +(-1329002,'Who you gonna call?',0,0,0,0,'freed_soul SAY_ZAPPED2'), +(-1329003,'Don\'t cross those beams!',0,0,0,0,'freed_soul SAY_ZAPPED3'); +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1999925 AND -1999900; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1999900,'Let the games begin.',8280,1,0,0,'example_creature SAY_AGGRO'), +(-1999901,'I see endless suffering. I see torment. I see rage. I see everything.',8831,1,0,0,'example_creature SAY_RANDOM_0'), +(-1999902,'Muahahahaha',8818,1,0,0,'example_creature SAY_RANDOM_1'), +(-1999903,'These mortal infedels my lord, they have invaded your sanctum and seek to steal your secrets.',8041,1,0,0,'example_creature SAY_RANDOM_2'), +(-1999904,'You are already dead.',8581,1,0,0,'example_creature SAY_RANDOM_3'), +(-1999905,'Where to go? What to do? So many choices that all end in pain, end in death.',8791,1,0,0,'example_creature SAY_RANDOM_4'), +(-1999906,'$N, I sentance you to death!',8588,1,0,0,'example_creature SAY_BESERK'), +(-1999907,'The suffering has just begun!',0,1,0,0,'example_creature SAY_PHASE'), +(-1999908,'I always thought I was a good dancer.',0,0,0,0,'example_creature SAY_DANCE'), +(-1999909,'Move out Soldier!',0,0,0,0,'example_creature SAY_SALUTE'), +(-1999910,'Help $N! I\'m under attack!',0,0,0,0,'example_escort SAY_AGGRO1'), +(-1999911,'Die scum!',0,0,0,0,'example_escort SAY_AGGRO2'), +(-1999912,'Hmm a nice day for a walk alright',0,0,0,0,'example_escort SAY_WP_1'), +(-1999913,'Wild Felboar attack!',0,0,0,0,'example_escort SAY_WP_2'), +(-1999914,'Time for me to go! See ya around $N!',0,0,0,3,'example_escort SAY_WP_3'), +(-1999915,'Bye Bye!',0,0,0,3,'example_escort SAY_WP_4'), +(-1999916,'How dare you leave me like that! I hate you! =*(',0,3,0,0,'example_escort SAY_DEATH_1'), +(-1999917,'...no...how could you let me die $N',0,0,0,0,'example_escort SAY_DEATH_2'), +(-1999918,'ugh...',0,0,0,0,'example_escort SAY_DEATH_3'), +(-1999919,'Taste death!',0,0,0,0,'example_escort SAY_SPELL'), +(-1999920,'Fireworks!',0,0,0,0,'example_escort SAY_RAND_1'), +(-1999921,'Hmm, I think I could use a buff.',0,0,0,0,'example_escort SAY_RAND_2'), +(-1999922,'Normal select, guess you\'re not interested.',0,0,0,0,'example_gossip_codebox SAY_NOT_INTERESTED'), +(-1999923,'Wrong!',0,0,0,0,'example_gossip_codebox SAY_WRONG'), +(-1999924,'You\'re right, you are allowed to see my inner secrets.',0,0,0,0,'example_gossip_codebox SAY_CORRECT'), +(-1999925,'Hi!',0,0,0,0,'example_areatrigger SAY_HI'); + +-- 1423_mangos_7290_01_world_command +DELETE FROM `command` WHERE `name` = 'npc setdeathstate'; +INSERT INTO `command` VALUES +('npc setdeathstate',2,'Syntax: .npc setdeathstate on/off\r\n\r\nSet default death state (dead/alive) for npc at spawn.'); + +-- 1426_mangos_7292_01_world_points_of_interest +DROP TABLE IF EXISTS `points_of_interest`; +CREATE TABLE `points_of_interest` ( + `entry` mediumint(8) unsigned NOT NULL default '0', + `x` float NOT NULL default '0', + `y` float NOT NULL default '0', + `icon` mediumint(8) unsigned NOT NULL default '0', + `flags` mediumint(8) unsigned NOT NULL default '0', + `data` mediumint(8) unsigned NOT NULL default '0', + `icon_name` text NOT NULL, + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- 1426_mangos_7292_02_world_locales_points_of_interest +DROP TABLE IF EXISTS `locales_points_of_interest`; +CREATE TABLE `locales_points_of_interest` ( + `entry` mediumint(8) unsigned NOT NULL default '0', + `icon_name_loc1` text, + `icon_name_loc2` text, + `icon_name_loc3` text, + `icon_name_loc4` text, + `icon_name_loc5` text, + `icon_name_loc6` text, + `icon_name_loc7` text, + `icon_name_loc8` text, + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- 1463_mangos_7303_01_world_pools +DROP TABLE IF EXISTS `pool_creature`; +CREATE TABLE `pool_creature` ( + `guid` int(10) unsigned NOT NULL default '0', + `pool_entry` mediumint(8) unsigned NOT NULL default '0', + `chance` float unsigned NOT NULL default '0', + PRIMARY KEY (`pool_entry`,`guid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `pool_gameobject`; +CREATE TABLE `pool_gameobject` ( + `guid` int(10) unsigned NOT NULL default '0', + `pool_entry` mediumint(8) unsigned NOT NULL default '0', + `chance` float unsigned NOT NULL default '0', + PRIMARY KEY (`guid`,`pool_entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `pool_pool`; +CREATE TABLE `pool_pool` ( + `pool_id` mediumint(8) unsigned NOT NULL default '0', + `mother_pool` mediumint(8) unsigned NOT NULL default '0', + `chance` float NOT NULL default '0', + PRIMARY KEY (`pool_id`,`mother_pool`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `pool_template`; +CREATE TABLE `pool_template` ( + `entry` mediumint(8) unsigned NOT NULL default '0' COMMENT 'Pool entry', + `max_limit` int(10) unsigned NOT NULL default '0' COMMENT 'Max number of objects (0) is no limit', + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `game_event_pool`; +CREATE TABLE `game_event_pool` ( + `pool_entry` mediumint(8) unsigned NOT NULL default '0' COMMENT 'Id of the pool', + `event` smallint(6) NOT NULL default '0' COMMENT 'Put negatives values to remove during event', + PRIMARY KEY (`pool_entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- 1470_world_scripts +-- Remove script for quest 8346. Note support for this quest will be added in next ACID release(25) +UPDATE `creature_template` SET `ScriptName`='' WHERE `entry` IN (15273,15274,15294,15298,15367); +UPDATE `creature_template` SET `ScriptName`='mob_broggok_poisoncloud' WHERE `entry`=17662; +-- UPDATE `creature_template` SET `ScriptName`='npc_draenei_survivor' WHERE `entry`=16483; + +-- 1495_mangos_7312_01_world_trinity_string +DELETE FROM `trinity_string` WHERE entry = 810; +INSERT INTO `trinity_string` VALUES +(810,'|Hplayer:$N|h[$N]|h has earned the achievement $a!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 1525_world_scripts +-- Script for Yrykul Skeleton - Prince Keleseth Event +UPDATE `creature_template` SET `ScriptName`='mob_vrykul_skeleton' WHERE `entry`=23970; + +-- 1555_mangos_7331_01_world_command +DELETE FROM `command` WHERE `name` = 'account set addon'; +DELETE FROM `command` WHERE `name` = 'ban account'; +DELETE FROM `command` WHERE `name` = 'ban character'; +DELETE FROM `command` WHERE `name` = 'ban ip'; +DELETE FROM `command` WHERE `name` = 'baninfo account'; +DELETE FROM `command` WHERE `name` = 'baninfo character'; +DELETE FROM `command` WHERE `name` = 'baninfo ip'; +DELETE FROM `command` WHERE `name` = 'banlist account'; +DELETE FROM `command` WHERE `name` = 'banlist character'; +DELETE FROM `command` WHERE `name` = 'banlist ip'; +DELETE FROM `command` WHERE `name` = 'gm fly'; +/* next command deleted even in case it has been already corrected (trailing space) */ +DELETE FROM `command` WHERE `name` = 'gobject near '; +DELETE FROM `command` WHERE `name` = 'gobject near'; +DELETE FROM `command` WHERE `name` = 'lookup player account'; +DELETE FROM `command` WHERE `name` = 'lookup player ip'; +DELETE FROM `command` WHERE `name` = 'lookup player email'; +DELETE FROM `command` WHERE `name` = 'modify money'; +DELETE FROM `command` WHERE `name` = 'modify mount'; +DELETE FROM `command` WHERE `name` = 'modify speed'; +DELETE FROM `command` WHERE `name` = 'modify titles'; +DELETE FROM `command` WHERE `name` = 'pdump write'; +DELETE FROM `command` WHERE `name` = 'pdump load'; +DELETE FROM `command` WHERE `name` = 'reset honor'; +DELETE FROM `command` WHERE `name` = 'reset level'; +DELETE FROM `command` WHERE `name` = 'reset spells'; +DELETE FROM `command` WHERE `name` = 'reset stats'; +DELETE FROM `command` WHERE `name` = 'reset talents'; +DELETE FROM `command` WHERE `name` = 'unban account'; +DELETE FROM `command` WHERE `name` = 'unban character'; +DELETE FROM `command` WHERE `name` = 'unban ip'; + +INSERT INTO `command` VALUES +('account set addon',3,'Syntax: .account set addon [$account] #addon\r\n\r\nSet user (possible targeted) expansion addon level allowed. Addon values: 0 - normal, 1 - tbc, 2 - wotlk.'), +('ban account',3,'Syntax: .ban account $Name $bantime $reason\r\nBan account kick player.\r\n$bantime: negative value leads to permban, otherwise use a timestring like \"4d20h3s\".'), +('ban character',3,'Syntax: .ban character $Name $bantime $reason\r\nBan account and kick player.\r\n$bantime: negative value leads to permban, otherwise use a timestring like \"4d20h3s\".'), +('ban ip',3,'Syntax: .ban ip $Ip $bantime $reason\r\nBan IP.\r\n$bantime: negative value leads to permban, otherwise use a timestring like \"4d20h3s\".'), +('baninfo account',3,'Syntax: .baninfo account\r\nWatch full information about a specific ban.'), +('baninfo character',3,'Syntax: .baninfo character\r\nWatch full information about a specific ban.'), +('baninfo ip',3,'Syntax: .baninfo ip\r\nWatch full information about a specific ban.'), +('banlist account',3,'Syntax: .banlist account [$Name]\r\nSearches the banlist for a account name pattern or show full list account bans.'), +('banlist character',3,'Syntax: .banlist character $Name\r\nSearches the banlist for a character name pattern. Pattern required.'), +('banlist ip',3,'Syntax: .banlist ip [$Ip]\r\nSearches the banlist for a IP pattern or show full list of IP bans.'), +('gm fly',3,'Syntax: .gm fly [on/off]\r\nEnable/disable gm fly mode.'), +('gobject near',3,'Syntax: .gobject near [#distance]\r\n\r\nOutput gameobjects at distance #distance from player. Output gameobject guids and coordinates sorted by distance from character. If #distance not provided use 10 as default value.'), +('lookup player account',2,'Syntax: .lookup player account $account ($limit) \r\n\r\n Searchs players, which account username is $account with optional parametr $limit of results.'), +('lookup player ip',2,'Syntax: .lookup player ip $ip ($limit) \r\n\r\n Searchs players, which account ast_ip is $ip with optional parametr $limit of results.'), +('lookup player email',2,'Syntax: .lookup player email $email ($limit) \r\n\r\n Searchs players, which account email is $email with optional parametr $limit of results.'), +('modify money',1,'Syntax: .modify money #money\r\n.money #money\r\n\r\nAdd or remove money to the selected player. If no player is selected, modify your money.\r\n\r\n #gold can be negative to remove money.'), +('modify mount',1,'Syntax: .modify mount #id #speed\r\nDisplay selected player as mounted at #id creature and set speed to #speed value.'), +('modify speed',1,'Syntax: .modify speed #rate\r\n.speed #rate\r\n\r\nModify the running speed of the selected player to \"normal base run speed\"*rate. If no player is selected, modify your speed.\r\n\r\n #rate may range from 0.1 to 10.'), +('modify titles',1,'Syntax: .modify titles #mask\r\n\r\nAllows user to use all titles from #mask.\r\n\r\n #mask=0 disables the title-choose-field'), +('pdump write',3,'Syntax: .pdump write $filename $playerNameOrGUID\r\nWrite character dump with name/guid $playerNameOrGUID to file $filename.'), +('pdump load',3,'Syntax: .pdump load $filename $account [$newname] [$newguid]\r\nLoad character dump from dump file into character list of $account with saved or $newname, with saved (or first free) or $newguid guid.'), +('reset honor',3,'Syntax: .reset honor [Playername]\r\n Reset all honor data for targeted character.'), +('reset level',3,'Syntax: .reset level [Playername]\r\n Reset level to 1 including reset stats and talents. Equipped items with greater level requirement can be lost.'), +('reset spells',3,'Syntax: .reset spells [Playername]\r\n Removes all non-original spells from spellbook.\r\n. Playername can be name of offline character.'), +('reset stats',3,'Syntax: .reset stats [Playername]\r\n Resets(recalculate) all stats of the targeted player to their original VALUESat current level.'), +('reset talents',3,'Syntax: .reset talents [Playername]\r\n Removes all talents of the targeted player. Playername can be name of offline character.'), +('unban account',3,'Syntax: .unban account $Name\r\nUnban accounts for account name pattern.'), +('unban character',3,'Syntax: .unban character $Name\r\nUnban accounts for character name pattern.'), +('unban ip',3,'Syntax : .unban ip $Ip\r\nUnban accounts for IP pattern.'); + +-- 1558_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = '44869' AND `spell_effect` = '-45018'; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = '46019' AND `spell_effect` = '-45018'; +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +(44869, -45018, 1, 'Remove Arcane Buffet'), +(46019, -45018, 1, 'Remove Arcane Buffet'); + +-- 1559_world +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +(48077, 48075, 0, 'Holy Nova (rank8)'), +(48078, 48076, 0, 'Holy Nova (rank9)'), +(47585, 60069, 0, 'Dispersion (transform/regen)'); +DELETE FROM `spell_proc_event` WHERE `entry` IN (47549); +INSERT INTO `spell_proc_event` VALUES (47549, 0x00, 6, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); +DELETE FROM `spell_proc_event` WHERE `entry` IN (47551); +INSERT INTO `spell_proc_event` VALUES (47551, 0x00, 6, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); +DELETE FROM `spell_proc_event` WHERE `entry` IN (47552); +INSERT INTO `spell_proc_event` VALUES (47552, 0x00, 6, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); + +-- 1576_mangos_7332_01_world_command +DELETE FROM `command` WHERE `name` = 'distance'; +INSERT INTO `command` VALUES +('distance',3,'Syntax: .distance [$name/$link]\r\n\r\nDisplay the distance from your character to the selected creature/player, or player with name $name, or player/creature/gameobject pointed to shift-link with guid.'); + +-- 1605_mangos_7349_01_world_spell_area +DROP TABLE IF EXISTS `spell_area`; +CREATE TABLE `spell_area` ( + `spell` mediumint(8) unsigned NOT NULL default '0', + `area` mediumint(8) unsigned NOT NULL default '0', + `quest_start` mediumint(8) unsigned NOT NULL default '0', + `quest_start_active` tinyint(1) unsigned NOT NULL default '0', + `quest_end` mediumint(8) unsigned NOT NULL default '0', + `aura_spell` mediumint(8) unsigned NOT NULL default '0', + `racemask` mediumint(8) unsigned NOT NULL default '0', + `gender` tinyint(1) unsigned NOT NULL default '2', + `autocast` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`spell`,`area`,`quest_start`,`quest_start_active`,`aura_spell`,`racemask`,`gender`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- 1613_world_scripts +-- Script for Skarvald and Dalronn +UPDATE `creature_template` SET `ScriptName`= 'boss_skarvald_the_constructor' WHERE `entry` IN (24200,27390); +UPDATE `creature_template` SET `ScriptName`= 'boss_dalronn_the_controller' WHERE `entry` IN (24201,27389); + +-- 1618_world +-- Glyph of power word: shield +INSERT INTO `spell_proc_event` VALUES (55672, 0x00, 6, 0x00000001, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0); +-- Bloodsurge +DELETE FROM `spell_proc_event` WHERE `entry` IN (46915); +INSERT INTO `spell_proc_event` VALUES (46915, 0x00, 4, 0x00000040, 0x00000404, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); + +-- 1646_mangos_7369_01_world_quest_template +ALTER TABLE quest_template + DROP COLUMN ReqSourceRef1, + DROP COLUMN ReqSourceRef2, + DROP COLUMN ReqSourceRef3, + DROP COLUMN ReqSourceRef4; + +-- 1654_world +INSERT INTO `spell_proc_event` VALUES (17619, 0x00, 13, 0x00000000, 0x00000000, 0x00000000, 0x00008000, 0x00000000, 0.000000, 0.000000, 0); + +-- 1657_world +DELETE FROM `trinity_string` WHERE `entry`=1010; +INSERT INTO `trinity_string` (`entry`, `content_default`) VALUES(1010, "| Account | Character | IP | GM | EXP |"); + +-- 1661_world +-- Death Strike +INSERT INTO `spell_proc_event` VALUES (45469, 0x00, 15, 0x00000010, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0.000000, 0.000000, 0); + +-- 1663_mangos_7376_01_world_spell_area +ALTER TABLE spell_area + CHANGE COLUMN `aura_spell` `aura_spell` mediumint(8) NOT NULL default '0'; + +-- 1688_mangos_7382_01_world_creature_template +ALTER TABLE creature_template + ADD COLUMN unk16 float NOT NULL default '1' AFTER InhabitType, + ADD COLUMN unk17 float NOT NULL default '1' AFTER unk16; + +-- 1693_world +-- Update Proc Rate +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +('60442', '0', '0', '0', '0', '0', '0', '0', '0', '0', '45'), +('57345', '0', '0', '0', '0', '0', '0', '0', '0', '0', '45'), +('61356', '0', '0', '0', '0', '0', '0', '0', '0', '0', '45'), +('54707', '0', '0', '0', '0', '0', '0', '0', '0', '0', '60'), +('54808', '0', '0', '0', '0', '0', '0', '0', '0', '0', '60'); +-- Update Spell Coefficients +DELETE FROM `spell_bonus_data` WHERE `entry` IN ('689', '18790', '172', '42223', '42224', '42225', '42226', '42218', '47817', '47818', '1949', '5857', '11681', '11682', '27214', '47822', '27243', '30108', '17962', '6789', '48181', '29722', '5676', '686', '17877', '30283', '1120', '30294', '44425', '42208', '42209', '42210', '42211', '42212', '42213', '42198', '42937', '42938', '11113', '31661', '120', '19750', '635', '25914', '25913', '25903', '27175', '33074', '48820', '48821', '58597', '31803', '53742', '31893', '32221', '53719', '53718', '20167', '20424', '31804', '53733', '31898', '32220', '53726', '53725', '20267', '20187', '20467', '53600', '596', '2944', '8092', '27813', '27817', '27818', '33619'); +INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `comments`) VALUES +('689', '0', '0.143', '0', 'Warlock - Drain Life'), +('18790', '0', '0', '0','Warlock - Fel Stamina'), +('172', '0', '0.2', '0', 'Warlock - Corruption'), +('42223', '0.6932', '0', '0', 'Warlock - Rain of Fire Triggered Rank 1'), +('42224', '0.6932', '0', '0', 'Warlock - Rain of Fire Triggered Rank 2'), +('42225', '0.6932', '0', '0', 'Warlock - Rain of Fire Triggered Rank 3'), +('42226', '0.6932', '0', '0', 'Warlock - Rain of Fire Triggered Rank 4'), +('42218', '0.6932', '0', '0', 'Warlock - Rain of Fire Triggered Rank 5'), +('47817', '0.6932', '0', '0', 'Warlock - Rain of Fire Triggered Rank 6'), +('47818', '0.6932', '0', '0', 'Warlock - Rain of Fire Triggered Rank 7'), +('1949', '0', '0.0949', '0', 'Warlock - Hellfire'), +('5857', '0.1427', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 1'), +('11681', '0.1427', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 2'), +('11682', '0.1427', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 3'), +('27214', '0.1427', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 4'), +('47822', '0.1427', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 5'), +('27243', '0.2129', '0.25', '0', 'Warlock - Seed of Corruption'), +('30108', '0', '0.2', '0', 'Warlock - Unstable Affliction'), +('17962', '0.4293', '0', '0', 'Warlock - Conflagrate'), +('6789', '0.214', '0', '0', 'Warlock - Death Coil'), +('48181', '0.4793', '0', '0', 'Warlock - Haunt'), +('29722', '0.7139', '0', '0', 'Warlock - Incinerate'), +('5676', '0.4293', '0', '0', 'Warlock - Searing Pain'), +('686', '0.8569', '0', '0', 'Warlock - Shadow Bolt'), +('17877', '0.4293', '0', '0', 'Warlock - Shadowburn'), +('30283', '0.1932', '0', '0', 'Warlock - Shadowfury'), +('1120', '0', '0.429', '0', 'Warlock - Drain Soul'), +('30294', '0', '0', '0', 'Warlock - Soul Leech'), +('44425', '0.7143', '0', '0', 'Mage - Arcane Barrage'), +('42208', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 1'), +('42209', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 2'), +('42210', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 3'), +('42211', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 4'), +('42212', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 5'), +('42213', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 6'), +('42198', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 7'), +('42937', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 8'), +('42938', '0.1437', '0', '0', 'Mage - Blizzard Triggered Spell Rank 9'), +('11113', '0.1936', '0', '0', 'Mage - Blast Wave Rank'), +('31661', '0.1936', '0', '0', 'Mage - Dragons Breath'), +('120', '0.214', '0', '0', 'Mage - Cone of Cold'), +('19750', '1', '0', '0', 'Paladin - Flash of Light'), +('635', '1.66', '0', '0', 'Paladin - Holy Light'), +('25914', '0.81', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 1'), +('25913', '0.81', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 2'), +('25903', '0.81', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 3'), +('27175', '0.81', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 4'), +('33074', '0.81', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 5'), +('48820', '0.81', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 6'), +('48821', '0.81', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 7'), +('58597', '0.75', '0', '0', 'Paladin - Sacred Shield'), +('31803', '0', '0.018', '0.03', 'Paladin - Holy Vengeance'), +('53742', '0', '0.018', '0.03', 'Paladin - Blood Corruption'), +('31893', '0', '0', '0', 'Paladin - Seal of Blood Enemy Proc'), +('32221', '0', '0', '0', 'Paladin - Seal of Blood Self Proc'), +('53719', '0', '0', '0', 'Paladin - Seal of The Martyr Enemy Proc'), +('53718', '0', '0', '0', 'Paladin - Seal of The Martyr Self Proc'), +('20167', '0.15', '0', '0.15', 'Paladin - Seal of Light Proc'), +('20424', '0.1035', '0', '0', 'Paladin - Seal of Command Proc'), +('31804', '0.22', '0', '0.14', 'Paladin - Judgement of Vengeance'), +('53733', '0.22', '0', '0.14', 'Paladin - Judgement of Corruption'), +('31898', '0.25', '0', '0.16', 'Paladin - Judgement of Blood Enemy'), +('32220', '0', '0', '0', 'Paladin - Judgement of Blood Self'), +('53726', '0.25', '0', '0.16', 'Paladin - Judgement of the Martyr Enemy'), +('53725', '0', '0', '0', 'Paladin - Judgement of the Martyr Self'), +('20267', '0.1', '0', '0.1', 'Paladin - Judgement of Light Proc'), +('20187', '0.4', '0', '0.25', 'Paladin - Judgement of Righteousness'), +('20467', '0.25', '0', '0.16', 'Paladin - Judgement of Command'), +('53600', '0', '0', '0', 'Paladin - Shield of Righteousness'), +('596', '0.8068', '0', '0', 'Priest - Prayer of Healing'), +('2944', '0.8149', '0', '0', 'Priest - Devouring Plague'), +('8092', '0.428', '0', '0', 'Priest - Mind Blast'), +('27813', '0', '0', '0', 'Priest - Blessed Recovery Rank 1'), +('27817', '0', '0', '0', 'Priest - Blessed Recovery Rank 2'), +('27818', '0', '0', '0', 'Priest - Blessed Recovery Rank 3'), +('33619', '0', '0', '0', 'Priest - Reflective Shield'); + +-- 1694_world +-- Sanctified Wrath +INSERT INTO `spell_proc_event` VALUES (57318, 0x00, 10, 0x00000000, 0x00002000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 6); +INSERT INTO `spell_proc_event` VALUES (53375, 0x00, 10, 0x00000000, 0x00002000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 6); +-- Star Sinner +DELETE FROM `spell_proc_event` WHERE `entry` IN (54738); +INSERT INTO `spell_proc_event` VALUES (54738, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 45); +-- Tentacles +DELETE FROM `spell_proc_event` WHERE `entry` IN (61618); +INSERT INTO `spell_proc_event` VALUES (61618, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45); +-- Demonic Sacrifice +DELETE FROM `spell_bonus_data` WHERE `entry` = 18790; +INSERT INTO `spell_bonus_data` (`entry`,`direct_bonus`,`dot_bonus`,`ap_bonus`,`comments`) VALUES +('18790','0','0','0','Warlock - Fel Stamina'); + +-- 1697_mangos_7388_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (750,751); +INSERT INTO `trinity_string` VALUES +(750,'Not enough players. This game will close in %u mins.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(751,'Not enough players. This game will close in %u seconds.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 1703_world +DROP TABLE IF EXISTS `access_requirement`; +CREATE TABLE `access_requirement` ( + `id` bigint(20) unsigned NOT NULL COMMENT 'Identifier', + `level_min` tinyint(3) unsigned NOT NULL default '0', + `level_max` tinyint(3) unsigned NOT NULL default '0', + `item` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `item2` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `heroic_key` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `heroic_key2` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `quest_done` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `quest_failed_text` TEXT NULL DEFAULT NULL, + `heroic_quest_done` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `heroic_quest_failed_text` TEXT NULL DEFAULT NULL, + `comment` TEXT NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Access Requirements'; + +ALTER TABLE `instance_template` + DROP COLUMN `levelMin`, + DROP COLUMN `levelMax`, + ADD COLUMN `access_id` bigint(20) unsigned NOT NULL DEFAULT '0' AFTER `reset_delay`; + +ALTER TABLE `areatrigger_teleport` + DROP COLUMN `required_level`, + DROP COLUMN `required_item`, + DROP COLUMN `required_item2`, + DROP COLUMN `heroic_key`, + DROP COLUMN `heroic_key2`, + DROP COLUMN `heroic_required_quest_done`, + DROP COLUMN `heroic_required_failed_quest_text`, + DROP COLUMN `required_quest_done`, + DROP COLUMN `required_failed_text`, + ADD COLUMN `access_id` bigint(20) unsigned NOT NULL DEFAULT '0' AFTER `name`; + +INSERT INTO `access_requirement` VALUES +('1','10','0','0','0','0','0','0',NULL,'0',NULL,'instance Shadowfang Keep (33)'), +('2','15','0','0','0','0','0','0',NULL,'0',NULL,'instance The Stockade (34)'), +('3','10','0','0','0','0','0','0',NULL,'0',NULL,'instance The Deadmines (36)'), +('4','10','0','0','0','0','0','0',NULL,'0',NULL,'instance Wailing Caverns (43)'), +('5','15','0','0','0','0','0','0',NULL,'0',NULL,'instance Razorfen Kraul (47)'), +('6','10','0','0','0','0','0','0',NULL,'0',NULL,'instance Blackfathom Deeps (48)'), +('7','30','0','0','0','0','0','0',NULL,'0',NULL,'instance Uldaman (70)'), +('8','15','0','0','0','0','0','0',NULL,'0',NULL,'instance Gnomeregan (90)'), +('9','35','0','0','0','0','0','0',NULL,'0',NULL,'instance Sunken Temple (109)'), +('10','25','0','0','0','0','0','0',NULL,'0',NULL,'instance Razorfen Downs (129)'), +('11','20','0','0','0','0','0','0',NULL,'0',NULL,'instance Scarlet Monastery (189)'), +('12','35','0','0','0','0','0','0',NULL,'0',NULL,'instance Zul\'Farrak (209)'), +('13','45','0','0','0','0','0','0',NULL,'0',NULL,'instance Blackrock Spire (229)'), +('14','40','0','0','0','0','0','0',NULL,'0',NULL,'instance Blackrock Depths (230)'), +('15','55','0','16309','0','0','0','0',NULL,'0',NULL,'instance Onyxia\'s Lair (249)'), +('16','66','0','0','0','30635','0','10285','You can\'t enter Black Morass until you rescue Thrall from Durnholde Keep.','0',NULL,'instance The Black Morass (269)'), +('17','45','0','13704','0','0','0','0',NULL,'0',NULL,'instance Scholomance (289)'), +('18','50','0','0','0','0','0','0',NULL,'0',NULL,'instance Zul\'Gurub (309)'), +('19','45','0','0','0','0','0','0',NULL,'0',NULL,'instance Stratholme (329)'), +('20','30','0','0','0','0','0','0',NULL,'0',NULL,'instance Maraudon (349)'), +('21','8','0','0','0','0','0','0',NULL,'0',NULL,'instance Ragefire Chasm (389)'), +('22','50','0','0','0','0','0','7487',NULL,'0',NULL,'instance Molten Core (409)'), +('23','45','0','0','0','0','0','0',NULL,'0',NULL,'instance Dire Maul (429)'), +('24','60','0','0','0','0','0','7761',NULL,'0',NULL,'instance Blackwing Lair (469)'), +('25','60','0','0','0','0','0','0',NULL,'0',NULL,'instance Ruins of Ahn\'Qiraj (509)'), +('26','60','0','0','0','0','0','0',NULL,'0',NULL,'instance Temple of Ahn\'Qiraj (531)'), +('27','68','0','0'/*'24490'*/,'0','0','0','0',NULL,'0',NULL,'instance Karazhan (532)'), +('28','60','0','0','0','0','0','0',NULL,'0',NULL,'instance Naxxramas (533)'), +('29','70','0','0','0','0','0','10445',NULL,'0',NULL,'instance Hyjal Summit (534)'), +('30','55','0','0'/*'28395'*/,'0','30637','30622','0',NULL,'0',NULL,'instance The Shattered Halls (540)'), +('31','55','0','0','0','30637','30622','0',NULL,'0',NULL,'instance The Blood Furnace (542)'), +('32','55','0','0','0','30637','30622','0',NULL,'0',NULL,'instance Hellfire Ramparts (543)'), +('33','65','0','0','0','0','0','0',NULL,'0',NULL,'instance Magtheridon\'s Lair (544)'), +('34','55','0','0','0','30623','0','0',NULL,'0',NULL,'instance The Steamvault (545)'), +('35','55','0','0','0','30623','0','0',NULL,'0',NULL,'instance The Underbog (546)'), +('36','55','0','0','0','30623','0','0',NULL,'0',NULL,'instance The Slave Pens (547)'), +('37','70','0','0','0','0','0','0'/*'10901'*/,NULL,'0',NULL,'instance Serpentshrine Cavern (548)'), +('38','70','0','0'/*'31704'*/,'0','0','0','0',NULL,'0',NULL,'instance The Eye (550)'), +('39','68','0','0'/*'31084'*/,'0','30634','0','0',NULL,'0',NULL,'instance The Arcatraz (552)'), +('40','68','0','0','0','30634','0','0',NULL,'0',NULL,'instance The Botanica (553)'), +('41','68','0','0','0','30634','0','0',NULL,'0',NULL,'instance The Mechanar (554)'), +('42','65','0','27991','0','30633','0','0',NULL,'0',NULL,'instance Shadow Labyrinth (555)'), +('43','55','0','0','0','30633','0','0',NULL,'0',NULL,'instance Sethekk Halls (556)'), +('44','55','0','0','0','30633','0','0',NULL,'0',NULL,'instance Mana-Tombs (557)'), +('45','55','0','0','0','30633','0','0',NULL,'0',NULL,'instance Auchenai Crypts (558)'), +('46','66','0','0','0','30635','0','0',NULL,'0',NULL,'instance Old Hillsbrad Foothills (560)'), +('47','70','0','32649','0','0','0','0',NULL,'0',NULL,'instance Black Temple (564)'), +('48','65','0','0','0','0','0','0',NULL,'0',NULL,'instance Gruul\'s Lair (565)'), +('49','70','0','0','0','0','0','0',NULL,'0',NULL,'instance Zul\'Aman (568)'), +('50','70','0','0','0','0','0','0',NULL,'0',NULL,'instance Sunwell Plateau (580)'), +('51','70','0','0','0','0','0','0',NULL,'11492','Heroic Difficulty requires completion of the "Hard to Kill" quest.','instance Magisters\' Terrace (585)'), +('52','58','0','0','0','0','0','0',NULL,'0',NULL,'Dark Portal'); +UPDATE `instance_template` SET `access_id` = '1' WHERE `map` = '33'; +UPDATE `instance_template` SET `access_id` = '2' WHERE `map` = '34'; +UPDATE `instance_template` SET `access_id` = '3' WHERE `map` = '36'; +UPDATE `instance_template` SET `access_id` = '4' WHERE `map` = '43'; +UPDATE `instance_template` SET `access_id` = '5' WHERE `map` = '47'; +UPDATE `instance_template` SET `access_id` = '6' WHERE `map` = '48'; +UPDATE `instance_template` SET `access_id` = '7' WHERE `map` = '70'; +UPDATE `instance_template` SET `access_id` = '8' WHERE `map` = '90'; +UPDATE `instance_template` SET `access_id` = '9' WHERE `map` = '109'; +UPDATE `instance_template` SET `access_id` = '10' WHERE `map` = '129'; +UPDATE `instance_template` SET `access_id` = '11' WHERE `map` = '189'; +UPDATE `instance_template` SET `access_id` = '12' WHERE `map` = '209'; +UPDATE `instance_template` SET `access_id` = '13' WHERE `map` = '229'; +UPDATE `instance_template` SET `access_id` = '14' WHERE `map` = '230'; +UPDATE `instance_template` SET `access_id` = '15' WHERE `map` = '249'; +UPDATE `instance_template` SET `access_id` = '16' WHERE `map` = '269'; +UPDATE `instance_template` SET `access_id` = '17' WHERE `map` = '289'; +UPDATE `instance_template` SET `access_id` = '18' WHERE `map` = '309'; +UPDATE `instance_template` SET `access_id` = '19' WHERE `map` = '329'; +UPDATE `instance_template` SET `access_id` = '20' WHERE `map` = '349'; +UPDATE `instance_template` SET `access_id` = '21' WHERE `map` = '389'; +UPDATE `instance_template` SET `access_id` = '22' WHERE `map` = '409'; +UPDATE `instance_template` SET `access_id` = '23' WHERE `map` = '429'; +UPDATE `instance_template` SET `access_id` = '24' WHERE `map` = '469'; +UPDATE `instance_template` SET `access_id` = '25' WHERE `map` = '509'; +UPDATE `instance_template` SET `access_id` = '26' WHERE `map` = '531'; +UPDATE `instance_template` SET `access_id` = '27' WHERE `map` = '532'; +UPDATE `instance_template` SET `access_id` = '28' WHERE `map` = '533'; +UPDATE `instance_template` SET `access_id` = '29' WHERE `map` = '534'; +UPDATE `instance_template` SET `access_id` = '30' WHERE `map` = '540'; +UPDATE `instance_template` SET `access_id` = '31' WHERE `map` = '542'; +UPDATE `instance_template` SET `access_id` = '32' WHERE `map` = '543'; +UPDATE `instance_template` SET `access_id` = '33' WHERE `map` = '544'; +UPDATE `instance_template` SET `access_id` = '34' WHERE `map` = '545'; +UPDATE `instance_template` SET `access_id` = '35' WHERE `map` = '546'; +UPDATE `instance_template` SET `access_id` = '36' WHERE `map` = '547'; +UPDATE `instance_template` SET `access_id` = '37' WHERE `map` = '548'; +UPDATE `instance_template` SET `access_id` = '38' WHERE `map` = '550'; +UPDATE `instance_template` SET `access_id` = '39' WHERE `map` = '552'; +UPDATE `instance_template` SET `access_id` = '40' WHERE `map` = '553'; +UPDATE `instance_template` SET `access_id` = '41' WHERE `map` = '554'; +UPDATE `instance_template` SET `access_id` = '42' WHERE `map` = '555'; +UPDATE `instance_template` SET `access_id` = '43' WHERE `map` = '556'; +UPDATE `instance_template` SET `access_id` = '44' WHERE `map` = '557'; +UPDATE `instance_template` SET `access_id` = '45' WHERE `map` = '558'; +UPDATE `instance_template` SET `access_id` = '46' WHERE `map` = '560'; +UPDATE `instance_template` SET `access_id` = '47' WHERE `map` = '564'; +UPDATE `instance_template` SET `access_id` = '48' WHERE `map` = '565'; +UPDATE `instance_template` SET `access_id` = '49' WHERE `map` = '568'; +UPDATE `instance_template` SET `access_id` = '50' WHERE `map` = '580'; +UPDATE `instance_template` SET `access_id` = '51' WHERE `map` = '585'; +UPDATE `areatrigger_teleport` SET `access_id` = '52' WHERE `id` IN ('4352','4354'); + +-- 1709_mangos_7393_01_world_game_event +ALTER TABLE `game_event` + ADD COLUMN `holiday` mediumint(8) unsigned NOT NULL default '0' COMMENT 'Client side holiday id' AFTER `length`; + +-- 1724_mangos_7399_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (753, 754, 755); +INSERT INTO `trinity_string` VALUES +(753,'The battle for Warsong Gulch begins in 2 minutes.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(754,'The battle for Arathi Basin begins in 2 minutes.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(755,'The battle for Eye of the Storm begins in 2 minutes.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 1727_world +INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES (42857,1,23954); + +-- 1727_world_script +UPDATE `creature_template` SET `ScriptName`='boss_ingvar_the_plunderer' WHERE `entry`=23954; +UPDATE `creature_template` SET `ScriptName`='mob_annhylde_the_caller' WHERE `entry`=24068; +UPDATE `creature_template` SET `ScriptName`='mob_ingvar_throw_dummy' WHERE `entry`=23997; + +-- 1729_world +-- Judgements of the Wise +REPLACE INTO `spell_proc_event` VALUES (31876, 0x00, 10, 0x20180400, 0x0000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); +REPLACE INTO `spell_proc_event` VALUES (31877, 0x00, 10, 0x20180400, 0x0000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); +REPLACE INTO `spell_proc_event` VALUES (31878, 0x00, 10, 0x20180400, 0x0000008, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); + +-- 1730_world +-- Faerie fire +INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `comments`) VALUES ('60089', '0', '0', '0.05', 'Druid - Faerie Fire (Bear Form)'); +-- Glyph of Devastate +INSERT INTO `spell_proc_event` VALUES (58388, 0x00, 4, 0x00000040, 0x00000000, 0x00000000, 0x00000110, 0x00000000, 0.000000, 0.000000, 0); + +-- 1755_world +DELETE FROM spell_proc_event WHERE entry IN (47535, 47536, 47537, 47538, 47539,34074,58426,31221,31222,31223); +-- Rapture +INSERT INTO `spell_proc_event` VALUES (47535, 0x00, 6, 0x1800, 0x10000, 0x00000000, 0x00014010, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (47536, 0x00, 6, 0x1800, 0x10000, 0x00000000, 0x00014010, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (47537, 0x00, 6, 0x1800, 0x10000, 0x00000000, 0x00014010, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (47538, 0x00, 6, 0x1800, 0x10000, 0x00000000, 0x00014010, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (47539, 0x00, 6, 0x1800, 0x10000, 0x00000000, 0x00014010, 0x00000000, 0.000000, 0.000000, 0); +-- Aspect of the viper +INSERT INTO `spell_proc_event` VALUES (34074, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0.000000, 0.000000, 0); +-- Overkill +INSERT INTO `spell_proc_event` VALUES (58426, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x00000000, 0.000000, 0.000000, 0); +-- Master of subtlety +INSERT INTO `spell_proc_event` VALUES (31221, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (31222, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (31223, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x00000000, 0.000000, 0.000000, 0); +DELETE FROM `spell_bonus_data` WHERE entry=2944; +INSERT INTO `spell_bonus_data` VALUES ('2944', '0', '0.1849', '0', 'Priest - Devouring Plague'); + +-- 1764_world +DELETE FROM spell_proc_event WHERE entry IN (54149,53672,20210,20212,20213,20214,20215); +-- Infusion of Light +INSERT INTO `spell_proc_event` VALUES (54149, 0x00, 10, 2097152, 65536, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (53672, 0x00, 10, 2097152, 65536, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- Illumination +INSERT INTO `spell_proc_event` VALUES (20210, 0x00, 10, 3221225472, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (20212, 0x00, 10, 3221225472, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (20213, 0x00, 10, 3221225472, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (20214, 0x00, 10, 3221225472, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (20215, 0x00, 10, 3221225472, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); + +-- 1766_world +DELETE FROM spell_proc_event WHERE entry IN (33182,33174); +INSERT INTO `spell_proc_event` VALUES (33182, 0x00, 6, 32, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (33174, 0x00, 6, 32, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0); + +-- 1791_mangos_7422_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (811, 812, 813, 814, 815); +INSERT INTO `trinity_string` VALUES +(811,'Guild Master',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(812,'Officer',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(813,'Veteran',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(814,'Member',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(815,'Initiate',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 1814_world +-- Improved Fire Nova Totem +DELETE FROM `spell_proc_event` WHERE `entry` IN (16086, 16544); +INSERT INTO `spell_proc_event` VALUES (16086, 0x00, 7, 0, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (16544, 0x00, 7, 0, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); + +-- 1825_world +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-47953); +INSERT INTO `spell_linked_spell` VALUES (-47953, 60406, 0, 'Divine hymn buff to enemies'); + +-- 1828_world +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (48265,49772,48263); +INSERT INTO `spell_linked_spell` VALUES (48265, 49772, 2, 'Unholy Presence'); +INSERT INTO `spell_linked_spell` VALUES (49772, 55222, 2, 'Unholy Presence'); +INSERT INTO `spell_linked_spell` VALUES (48263, 61261, 2, 'Frost Presence'); + +-- 1877_mangos_7439_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (175); +INSERT INTO `trinity_string` VALUES +(175,'Liquid level: %f, ground: %f, type: %d, status: %d',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 1884_world +DELETE FROM `trinity_string` WHERE `entry` IN (10056, 10057); + +-- 1886_world +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (61847,61846); +INSERT INTO `spell_linked_spell` VALUES (61847, 61848, 2, 'Aspect of te dragonhawk'); +INSERT INTO `spell_linked_spell` VALUES (61846, 61848, 2, 'Aspect of te dragonhawk'); +-- Glyph of Aspect of the Monkey +DELETE FROM `spell_proc_event` WHERE `entry` IN (13163,61848); +INSERT INTO `spell_proc_event` VALUES (13163, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000010, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (61848, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000010, 0.000000, 0.000000, 0); + +-- 1911_world +DELETE FROM `spell_proc_event` WHERE `entry` IN (44545, 44543); +INSERT INTO `spell_proc_event` VALUES +(44545, 0x00, 3, 1049120, 4096, 0x00000000, 0x0010000, 0x00000000, 15.000000, 0.000000, 0), +(44543, 0x00, 3, 1049120, 4096, 0x00000000, 0x0010000, 0x00000000, 7.000000, 0.000000, 0); + +-- 1912_world +-- Shattered Barrier +-- Improved Fear +DELETE FROM `spell_proc_event` WHERE `entry` IN (44745, 54787, 53754, 53759); +INSERT INTO `spell_proc_event` VALUES +(44745, 0x00, 3, 0x00000000, 0x00000001, 0x00000000, 0x00008000, 0x0006000, 0.000000, 0.000000, 0), +(54787, 0x00, 3, 0x00000000, 0x00000001, 0x00000000, 0x00008000, 0x0006000, 0.000000, 0.000000, 0), +(53754, 0x00, 5, 0x00000000, 1024, 0x00000000, 0x00000000, 0x0006000, 0.000000, 0.000000, 0), +(53759, 0x00, 5, 0x00000000, 1024, 0x00000000, 0x00000000, 0x0006000, 0.000000, 0.000000, 0); + +-- 1927_world +-- Nature's Grace -- +DELETE FROM `spell_proc_event` WHERE `entry` IN (16880, 61345, 61346); +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(16880, 0x48, 7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), +(61345, 0x48, 7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), +(61346, 0x48, 7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- Blade Twisting -- +DELETE FROM `spell_proc_event` WHERE `entry` IN (31124, 31126); +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(31124, 0x00, 8, 0x01000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), +(31126, 0x00, 8, 0x01000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); + +-- 1939_world +-- Psychic Horror +DELETE FROM `spell_proc_event` WHERE `entry` IN (47571, 47572); +INSERT INTO `spell_proc_event` VALUES +(47571, 0x00, 6, 65536, 0x00000000, 0x00000000, 0x00010000, 0x0006000, 0.000000, 50.000000, 0), +(47572, 0x00, 6, 65536, 0x00000000, 0x00000000, 0x00010000, 0x0006000, 0.000000, 100.000000, 0); + +-- 1957_word +-- Furious Attacks +DELETE FROM `spell_proc_event` WHERE `entry` IN (46910, 46911); +INSERT INTO `spell_proc_event` VALUES +(46910, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000001, 5.5000000, 0.000000, 0), +(46911, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000001, 7.5000000, 0.000000, 0); + +-- 1962_mangos_7472_01_world_trinity_string +DELETE FROM trinity_string WHERE entry >= 667 and entry <= 687 or entry = 614 or entry = 615; +INSERT INTO trinity_string VALUES +(614,'The Alliance flag is now placed at its base.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(615,'The Horde flag is now placed at its base.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(667,'The Alliance has taken control of the Mage Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(668,'The Horde has taken control of the Mage Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(669,'The Alliance has taken control of the Draenei Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(670,'The Horde has taken control of the Draenei Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(671,'The Alliance has taken control of the Blood Elf Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(672,'The Horde has taken control of the Blood Elf Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(673,'The Alliance has taken control of the Fel Reaver Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(674,'The Horde has taken control of the Fel Reaver Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(675,'The Alliance has lost control of the Mage Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(676,'The Horde has lost control of the Mage Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(677,'The Alliance has lost control of the Draenei Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(678,'The Horde has lost control of the Draenei Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(679,'The Alliance has lost control of the Blood Elf Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(680,'The Horde has lost control of the Blood Elf Tower!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(681,'The Alliance has lost control of the Fel Reaver Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(682,'The Horde has lost control of the Fel Reaver Ruins!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(683,'%s has taken the flag!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(684,'The Alliance have captured the flag!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(685,'The Horde have captured the flag!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(686,'The flag has been dropped.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(687,'The flag has been reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2013_world +-- Shattered Barrier +DELETE FROM `spell_proc_event` WHERE `entry` IN (44745, 54787, 58426, 31221, 31222, 31223); +INSERT INTO `spell_proc_event` VALUES +(44745, 0x00, 3, 0x00000000, 0x00000001, 0x00000000, 0x00008000, 0x0002000, 0.000000, 0.000000, 0), +(54787, 0x00, 3, 0x00000000, 0x00000001, 0x00000000, 0x00008000, 0x0002000, 0.000000, 0.000000, 0), +-- Overkill +(58426, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0004001, 0.000000, 0.000000, 0), +-- Master of subtlety +(31221, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0004001, 0.000000, 0.000000, 0), +(31222, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0004001, 0.000000, 0.000000, 0), +(31223, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0004001, 0.000000, 0.000000, 0); + +-- 2021_world +DELETE FROM `spell_proc_event` WHERE `entry` IN (30293, 30295, 30296); +INSERT INTO `spell_proc_event` VALUES +-- Soul Leech +(30293, 0x00, 5, 0x00000381, 0x200C0, 0x00000000, 0x0000000, 0x0000000, 0.000000, 0.000000, 0), +(30295, 0x00, 5, 0x00000381, 0x200C0, 0x00000000, 0x0000000, 0x0000000, 0.000000, 0.000000, 0), +(30296, 0x00, 5, 0x00000381, 0x200C0, 0x00000000, 0x0000000, 0x0000000, 0.000000, 0.000000, 0); + +-- 2025_mangos_7493_01_world_command +DELETE FROM `command` WHERE `name` IN ('gobject near','gobject phase','gobject setphase'); +INSERT INTO `command` VALUES +('gobject near',2,'Syntax: .gobject near [#distance]\r\n\r\nOutput gameobjects at distance #distance from player. Output gameobject guids and coordinates sorted by distance from character. If #distance not provided use 10 as default value.'), +('gobject setphase',2,'Syntax: .gobject setphase #guid #phasemask\r\n\r\nGameobject with DB guid #guid phasemask changed to #phasemask with related world vision update for players. Gameobject state saved to DB and persistent.'); + +-- 2025_mangos_7495_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (276,277,524); +INSERT INTO `trinity_string` VALUES +(276,'Game Object |cffffffff|Hgameobject:%d|h[%s]|h|r (GUID: %u) turned',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(277,'Game Object |cffffffff|Hgameobject:%d|h[%s]|h|r (GUID: %u) moved',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(524,'Selected object:\n|cffffffff|Hgameobject:%d|h[%s]|h|r GUID: %u ID: %u\nX: %f Y: %f Z: %f MapId: %u\nOrientation: %f',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2057_world +DELETE FROM `spell_bonus_data` WHERE `entry` IN (15290, 39373, 33778, 379, 38395, 40972, 22845, 33504, 34299); +INSERT INTO `spell_bonus_data` VALUES +(15290, 0, 0, 0, 'Vampiric Embrace'), +(39373, 0, 0, 0, 'Shadowmend'), +(33778, 0, 0, 0, 'Lifebloom'), +(379, 0, 0, 0, 'Earth Shield'), +(38395, 0, 0, 0, 'Siphon Essence'), +(40972, 0, 0, 0, 'Heal'), +(22845, 0, 0, 0, 'Frenzied Regeneration'), +(33504, 0, 0, 0, 'Mark of Conquest'), +(34299, 0, 0, 0, 'Improved Leader of the Pack'); + +-- 2064_world +DELETE FROM `trinity_string` WHERE `entry` IN (7523,7524); +INSERT INTO `trinity_string` VALUES +(7523,'WORLD: Denying connections.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(7524,'WORLD: Accepting connections.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +DELETE FROM `command` WHERE `name` IN ('server set closed'); +INSERT INTO `command` VALUES ('server set closed', 3, 'Syntax: server set closed on/off\r\n\r\nSets whether the world accepts new client connectsions.'); + +-- 2080_mangos_7503_01_world_command +DELETE FROM `command` WHERE `name` IN ('addmove','allowmove','debug Mod32Value','debug standstate','go creature','go graveyard','go trigger','gobject phase','gobject setphase','Mod32Value','modify arena','modify standstate','npc addmove','npc allowmove','npc textemote','npc phase','npc setphase','showhonor'); +INSERT INTO `command` VALUES +('debug Mod32Value',3,'Syntax: .debug Mod32Value #field #value\r\n\r\nAdd #value to field #field of your character.'), +('go creature',1,'Syntax: .go creature #creature_guid\r\nTeleport your character to creature with guid #creature_guid.\r\n.gocreature #creature_name\r\nTeleport your character to creature with this name.\r\n.gocreature id #creature_id\r\nTeleport your character to a creature that was spawned from the template with this entry.\r\n*If* more than one creature is found, then you are teleported to the first that is found inside the database.'), +('go graveyard',1,'Syntax: .go graveyard #graveyardId\r\n Teleport to graveyard with the graveyardId specified.'), +('go trigger',1,'Syntax: .go trigger #trigger_id\r\n\r\nTeleport your character to areatrigger with id #trigger_id. Character will be teleported to trigger target if selected areatrigger is telporting trigger.'), +('gobject setphase',2,'Syntax: .gobject setphase #guid #phasemask\r\n\r\nGameobject with DB guid #guid phasemask changed to #phasemask with related world vision update for players. Gameobject state saved to DB and persistent.'), +('modify arena',1,'Syntax: .modify arena #value\r\nAdd $amount arena points to the selected player.'), +('modify standstate',2,'Syntax: .modify standstate #emoteid\r\n\r\nChange the emote of your character while standing to #emoteid.'), +('npc addmove',2,'Syntax: .npc addmove #creature_guid [#waittime]\r\n\r\nAdd your current location as a waypoint for creature with guid #creature_guid. And optional add wait time.'), +('npc allowmove',3,'Syntax: .npc allowmove\r\n\r\nEnable or disable movement creatures in world. Not implemented.'), +('npc setphase',2,'Syntax: .npc setphase #phasemask\r\n\r\nSelected unit or pet phasemask changed to #phasemask with related world vision update for players. In creature case state saved to DB and persistent. In pet case change active until in game phase changed for owner, owner re-login, or GM-mode enable/disable..'), +('npc textemote',1,'Syntax: .npc textemote #emoteid\r\n\r\nMake the selected creature to do textemote with an emote of id #emoteid.'); + +-- 2131_world +DELETE FROM `command` WHERE `name` IN ('server difftime', 'npc tempadd', 'gobject tempadd', ''); +INSERT INTO `command` VALUES +('gobject tempadd','2','Adds a temporary gameobject that is not saved to DB.'), +('npc tempadd','2','Adds temporary NPC, not saved to database.'); +UPDATE `command` SET `name`="ahbotoption" WHERE `name`="ahbotoptions"; +DELETE FROM `command` WHERE `name` IN ('reload tickets'); +DELETE FROM `command` WHERE `name` LIKE "path%"; +DELETE FROM `command` WHERE `name` LIKE "wp%"; +INSERT INTO `command` VALUES +('wp load',2,'Syntax: .path load $pathid\nLoad pathid number for selected creature. Creature must have no waypoint data.'), +('wp event',2,'Syntax: .path event $subcommand\nType .path event to see the list of possible subcommands or .help path event $subcommand to see info on subcommands.'), +('wp event add',2,'Syntax: .path event add $subcommand\nAdd new waypoint action in DB.'), +('wp event mod',2,'Syntax: .path mod $eventid $parameter $parameter_value\nModify parameter value for specified eventid.\nPossible parameters: pos_x, pos_y, pos_z, command, datalong, datalon2, dataint.'), +('wp event listid',2,'Syntax: .path event listid $eventid\nShows specified eventid info.'), +('wp unload',2,'Syntax: .path unload\nUnload path for selected creature.'), +('wp show',2,'Syntax: .path show $option\nOptions:\non $pathid (or selected creature with loaded path) - Show path\noff - Hide path\ninfo $slected_waypoint - Show info for selected waypoint.'), +('wp mod ',2,'Syntax: .path mod\nType .path mod to see the list of possible subcommands or .help path mod $subcommand to see info on subcommands.'), +('wp mod del',2,'Syntax: .path mod del\nDelete selected waypoint.'), +('wp mod move',2,'Syntax: .path mod move\nChange selected waypoint coordinates to your position.'), +('wp mod move_flag',2,'Syntax: .path mod move_flag\nSet move/run flag.'), +('wp mod action',2,'Syntax: .path mod action\nAssign action (waypoint script id) to selected waypoint.'), +('wp mod action_chance',2,'Syntax: .path mod action_chance\nAssign chance.'); + +-- 2138_world +DELETE FROM `spell_proc_event` WHERE `entry` IN (55198, 34026); +INSERT INTO `spell_proc_event` VALUES +-- Tidial Force +(55198, 0x00, 11, 0x000001C0, 0x00000000, 0x00000000, 0x00004000, 0x00000002, 0.000000, 0.000000, 0), +-- Kill Command +(34026, 0x00, 9, 0x00000000, 0x10000000, 0x00000000, 0x0000000, 0x00000000, 0.000000, 0.000000, 0); + +-- 2139_script_waypoint +DROP TABLE IF EXISTS script_waypoint; +CREATE TABLE script_waypoint ( + entry mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'creature_template entry', + pointid mediumint(8) unsigned NOT NULL DEFAULT '0', + location_x float NOT NULL DEFAULT '0', + location_y float NOT NULL DEFAULT '0', + location_z float NOT NULL DEFAULT '0', + waittime int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'waittime in millisecs', + point_comment text, + PRIMARY KEY (entry, pointid) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Creature waypoints'; +DELETE FROM `script_waypoint` WHERE `entry`=16295; +INSERT INTO `script_waypoint` VALUES +(16295, 0, 7545.070000, -7359.870000, 162.354000, 4000, 'SAY_START'), +(16295, 1, 7550.048340, -7362.237793, 162.235657, 0, ''), +(16295, 2, 7566.976074, -7364.315430, 161.738770, 0, ''), +(16295, 3, 7578.830566, -7361.677734, 161.738770, 0, ''), +(16295, 4, 7590.969238, -7359.053711, 162.257660, 0, ''), +(16295, 5, 7598.354004, -7362.815430, 162.256683, 4000, 'SAY_PROGRESS_1'), +(16295, 6, 7605.861328, -7380.424316, 161.937073, 0, ''), +(16295, 7, 7605.295410, -7387.382813, 157.253998, 0, ''), +(16295, 8, 7606.131836, -7393.893555, 156.941925, 0, ''), +(16295, 9, 7615.207520, -7400.187012, 157.142639, 0, ''), +(16295, 10, 7618.956543, -7402.652832, 158.202042, 0, ''), +(16295, 11, 7636.850586, -7401.756836, 162.144791, 0, 'SAY_PROGRESS_2'), +(16295, 12, 7637.058105, -7404.944824, 162.206970, 4000, ''), +(16295, 13, 7636.910645, -7412.585449, 162.366425, 0, ''), +(16295, 14, 7637.607910, -7425.591797, 162.630661, 0, ''), +(16295, 15, 7637.816895, -7459.057129, 163.302704, 0, ''), +(16295, 16, 7638.859863, -7470.902344, 162.517059, 0, ''), +(16295, 17, 7641.395996, -7488.217285, 157.381287, 0, ''), +(16295, 18, 7634.455566, -7505.451660, 154.682159, 0, 'SAY_PROGRESS_3'), +(16295, 19, 7631.906738, -7516.948730, 153.597382, 0, ''), +(16295, 20, 7622.231445, -7537.037598, 151.587112, 0, ''), +(16295, 21, 7610.921875, -7550.670410, 149.639374, 0, ''), +(16295, 22, 7598.229004, -7562.551758, 145.953888, 0, ''), +(16295, 23, 7588.509277, -7577.755371, 148.294479, 0, ''), +(16295, 24, 7567.339355, -7608.456055, 146.006485, 0, ''), +(16295, 25, 7562.547852, -7617.417969, 148.097504, 0, ''), +(16295, 26, 7561.508789, -7645.064453, 151.245163, 0, ''), +(16295, 27, 7563.337402, -7654.652344, 151.227158, 0, ''), +(16295, 28, 7565.533691, -7658.296387, 151.248886, 0, ''), +(16295, 39, 7571.155762, -7659.118652, 151.244568, 0, ''), +(16295, 30, 7579.119629, -7662.213867, 151.651505, 0, 'quest complete'), +(16295, 31, 7603.768066, -7667.000488, 153.997726, 0, ''), +(16295, 32, 7603.768066, -7667.000488, 153.997726, 4000, 'SAY_END_1'), +(16295, 33, 7603.768066, -7667.000488, 153.997726, 8000, 'SAY_END_2'), +(16295, 34, 7603.768066, -7667.000488, 153.997726, 0, ''); + +-- 2139_world +UPDATE `gameobject_template` SET `ScriptName`='go_cat_figurine' WHERE `entry`=13873; +UPDATE `creature_template` SET `ScriptName`='npc_garments_of_quests' WHERE `entry` IN (12429,12423,12427,12430,12428); + +-- 2139_world_script +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000164 AND -1000174; +INSERT INTO `script_texts` (entry,content_default,sound,type,language,emote,comment) VALUES +(-1000164,'Ah, $GPriest:Priestess; you came along just in time. I appreciate it.',0,0,0,2,'garments SAY_COMMON_HEALED'), +(-1000165,'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those gnolls with your power to back me!',0,0,1,1,'garments SAY_DG_KEL_THANKS'), +(-1000166,'Farewell to you, and may shadow always protect you!',0,0,1,3,'garments SAY_DG_KEL_GOODBYE'), +(-1000167, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those murlocs with the Light on my side!',0,0,7,1,'garments SAY_ROBERTS_THANKS'), +(-1000168, 'Farewell to you, and may the Light be with you always.',0,0,7,3,'garments SAY_ROBERTS_GOODBYE'), +(-1000169, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those humans with your power to back me!',0,0,1,1,'garments SAY_KORJA_THANKS'), +(-1000170, 'Farewell to you, and may our ancestors be with you always!',0,0,1,3,'garments SAY_KORJA_GOODBYE'), +(-1000171, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those wendigo with the Light on my side!',0,0,7,1,'garments SAY_DOLF_THANKS'), +(-1000172, 'Farewell to you, and may the Light be with you always.',0,0,7,3,'garments SAY_DOLF_GOODBYE'), +(-1000173, 'Thank you! Thank you, $GPriest:Priestess;. Now I can take on those corrupt timberlings with Elune\'s power behind me!',0,0,2,1,'garments SAY_SHAYA_THANKS'), +(-1000174, 'Farewell to you, and may Elune be with you always.',0,0,2,3,'garments SAY_SHAYA_GOODBYE'); + +-- 2160_world +DELETE FROM `command` WHERE `name` LIKE "ahbotoption %"; +DELETE FROM `command` WHERE `name` LIKE "ahbotoptions %"; +DELETE FROM `command` WHERE `name` IN ('gobject addtemp','npc addtemp'); + +-- 2161_world +DELETE FROM `command` WHERE `name` LIKE "wp mod %"; +DELETE FROM `command` WHERE `name` LIKE "wp event %"; + +-- 2227_mangos_7544_01_world_uptime +DROP TABLE IF EXISTS `uptime`; + +-- 2254_world +DELETE FROM `command` WHERE `name` IN ('server difftime', 'addmove', 'Mod32Value', 'allowmove', 'reload tickets', 'npc tempadd', 'gobject tempadd', 'gobject addtemp', 'npc addtemp'); +INSERT INTO `command` VALUES +('gobject tempadd','2','Adds a temporary gameobject that is not saved to DB.'), +('npc tempadd','2','Adds temporary NPC, not saved to database.'); +UPDATE `command` SET `name`="ahbotoption" WHERE `name`="ahbotoptions"; +DELETE FROM `command` WHERE `name` LIKE "path%"; +DELETE FROM `command` WHERE `name` LIKE "wp%"; +INSERT INTO `command` VALUES +('wp load',2,'Syntax: .wp load $pathid\nLoad pathid number for selected creature. Creature must have no waypoint data.'), +('wp event',2,'Syntax: .wp event $subcommand\nType .path event to see the list of possible subcommands or .help path event $subcommand to see info on subcommands.'), +('wp unload',2,'Syntax: .wp unload\nUnload path for selected creature.'), +('wp show',2,'Syntax: .wp show $option\nOptions:\non $pathid (or selected creature with loaded path) - Show path\noff - Hide path\ninfo $slected_waypoint - Show info for selected waypoint.'), +('wp mod',2,'Syntax: .wp mod\nType .path mod to see the list of possible subcommands or .help path mod $subcommand to see info on subcommands.'); + +-- 2274_mangos_7558_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (1123,1124,1125,1126,1127); +INSERT INTO `trinity_string` VALUES +(1123,'Not pet found',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1124,'Wrong pet type',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1125,'Your pet learned all talents',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1126,'Your pet talents have been reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1127,'Talents of %s\'s pet reset.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2274_mangos_7558_02_world_command +DELETE FROM `command` WHERE `name` IN ('learn all_mypettalents'); +INSERT INTO `command` VALUES +('learn all_mypettalents',3,'Syntax: .learn all_mypettalents\r\n\r\nLearn all talents for your pet available for his creature type (only for hunter pets).'); + +-- 2276_mangos_7560_01_world_gameobject_template +ALTER TABLE gameobject_template + ADD COLUMN IconName varchar(100) NOT NULL default '' AFTER name; + +-- 2280_mangos_7565_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (1010,1011,1012,1013,1014); +INSERT INTO `trinity_string` VALUES +(1010,'| Account | Character | IP | GM | Expansion |',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1011,'|<Error> | %20s |<Error> |<Er>| <Error> |',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1012,'===========================================================================',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1013,'|%15s| %20s | %15s |%4d| %9d |',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1014,'No online players.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2284_mangos_7568_01_world_spell_proc_event +-- (53569) Infusion of Light (Rank 1) +DELETE FROM `spell_proc_event` WHERE `entry` IN (53569); +INSERT INTO `spell_proc_event` VALUES (53569, 0x00, 10, 0x00200000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- (53576) Infusion of Light (Rank 2) +DELETE FROM `spell_proc_event` WHERE `entry` IN (53576); +INSERT INTO `spell_proc_event` VALUES (53576, 0x00, 10, 0x00200000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- (54149) Infusion of Light (Rank 2) +DELETE FROM `spell_proc_event` WHERE `entry` IN (54149); +INSERT INTO `spell_proc_event` VALUES (54149, 0x00, 10, 0x00200000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- (55776) Swordguard Embroidery () +DELETE FROM `spell_proc_event` WHERE `entry` IN (55776); +INSERT INTO `spell_proc_event` VALUES (55776, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45); +-- (55768) Darkglow Embroidery () +DELETE FROM `spell_proc_event` WHERE `entry` IN (55768); +INSERT INTO `spell_proc_event` VALUES (55768, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45); +-- (55640) Lightweave Embroidery () +DELETE FROM `spell_proc_event` WHERE `entry` IN (55640); +INSERT INTO `spell_proc_event` VALUES (55640, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45); +-- (55380) Skyflare Swiftness () +DELETE FROM `spell_proc_event` WHERE `entry` IN (55380); +INSERT INTO `spell_proc_event` VALUES (55380, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45); +-- (56355) Titanium Shield Spike () +DELETE FROM `spell_proc_event` WHERE `entry` IN (56355); +INSERT INTO `spell_proc_event` VALUES (56355, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0.000000, 0.000000, 0); +-- (61345) Natures Grace () +DELETE FROM `spell_proc_event` WHERE `entry` IN (61345); +INSERT INTO `spell_proc_event` VALUES (61345, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- (61346) Natures Grace () +DELETE FROM `spell_proc_event` WHERE `entry` IN (61346); +INSERT INTO `spell_proc_event` VALUES (61346, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- (61356) Invigorating Earthsiege Diamond Passive () +DELETE FROM `spell_proc_event` WHERE `entry` IN (61356); +INSERT INTO `spell_proc_event` VALUES (61356, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +-- (24905) Moonkin Form (Passive) (Passive) +DELETE FROM `spell_proc_event` WHERE `entry` IN (24905); +INSERT INTO `spell_proc_event` VALUES (24905, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 15.000000, 0.000000, 0); + +-- 2296_world +ALTER TABLE creature_template + ADD COLUMN `VehicleId` mediumint(8) unsigned NOT NULL default '0' AFTER `PetSpellDataId`; + +-- 2339_world - 2346_world +DELETE FROM `command` WHERE `name` LIKE "ahbotoption %"; +DELETE FROM `command` WHERE `name` LIKE "ahbotoptions %"; + +-- 2412_world +UPDATE `trinity_string` SET `content_default` = 'id: %d effmask: %d charges: %d stack: %d slot %d duration: %d maxduration: %d' WHERE `entry` =468; +UPDATE `trinity_string` SET `content_default` = 'id: %d eff: %d amount: %d' WHERE `trinity_string`.`entry` =470; + +-- 2432_mangos_7615_01_world_command +DELETE FROM `command` WHERE `name` IN ('senditems','sendmail','sendmoney','sendmessage','send items','send mail','send money','send message'); +INSERT INTO `command` VALUES +('send items',3,'Syntax: .send items #playername "#subject" "#text" itemid1[:count1] itemid2[:count2] ... itemidN[:countN]\r\n\r\nSend a mail to a player. Subject and mail text must be in "". If for itemid not provided related count values then expected 1, if count > max items in stack then items will be send in required amount stacks. All stacks amount in mail limited to 12.'), +('send mail',1,'Syntax: .send mail #playername "#subject" "#text"\r\n\r\nSend a mail to a player. Subject and mail text must be in "".'), +('send message',3,'Syntax: .send message $playername $message\r\n\r\nSend screen message to player from ADMINISTRATOR.'), +('send money','3','Syntax: .send money #playername "#subject" "#text" #money\r\n\r\nSend mail with money to a player. Subject and mail text must be in "".'); + +-- 2433_mangos_7616_01_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (1200,1201); +INSERT INTO `trinity_string` VALUES +(1200,'You try to view cinemitic %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1201,'You try to view movie %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2433_mangos_7616_02_world_command +DELETE FROM `command` WHERE `name` IN ('debug playsound','debug play sound','debug play cinematic','debug play movie'); +INSERT INTO `command` VALUES +('debug play cinematic',1,'Syntax: .debug play cinematic #cinematicid\r\n\r\nPlay cinematic #cinematicid for you. You stay at place while your mind fly.\r\n'), +('debug play movie',1,'Syntax: .debug play movie #movieid\r\n\r\nPlay movie #movieid for you.'), +('debug play sound',1,'Syntax: .debug play sound #soundid\r\n\r\nPlay sound with #soundid.\r\nSound will be play only for you. Other players do not hear this.\r\nWarning: client may have more 5000 sounds...'); + +-- 2444_world +DELETE FROM `command` WHERE `name` IN ('reload spell_linked_spell'); +INSERT INTO `command` VALUES +('reload spell_linked_spell','3','Usage: .reload spell_linked_spell\r\nReloads the spell_linked_spell DB table.'); + +-- 2450_world +UPDATE `gameobject_template` SET `ScriptName`='go_jump_a_tron' WHERE `entry`=183146; +UPDATE `gameobject_template` SET `ScriptName`='go_ethereum_prison' WHERE `entry`=184421; +UPDATE `gameobject_template` SET `scriptname`='go_sacred_fire_of_life' WHERE `entry`=175944; +UPDATE `gameobject_template` SET `scriptname`='go_skull_pile' WHERE `entry`=185913; +DELETE FROM `command` WHERE `name` IN ('reload spell_linked_spell'); +INSERT INTO `command` VALUES +('reload spell_linked_spell','3','Usage: .reload spell_linked_spell\r\nReloads the spell_linked_spell DB table.'); + +-- 2479_world +DELETE FROM `trinity_string` WHERE `entry` = 5007; +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES (5007, 'You must be in a raid group to enter this instance.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- 2492_mangos_7622_01_world_creature_ai_scripts +DROP TABLE IF EXISTS `creature_ai_scripts`; +CREATE TABLE `creature_ai_scripts` ( + `id` int(11) unsigned NOT NULL COMMENT 'Identifier' AUTO_INCREMENT, + `creature_id` int(11) unsigned NOT NULL default '0' COMMENT 'Creature Template Identifier', + `event_type` tinyint(5) unsigned NOT NULL default '0' COMMENT 'Event Type', + `event_inverse_phase_mask` int(11) signed NOT NULL default '0' COMMENT 'Mask which phases this event will not trigger in', + `event_chance` int(3) unsigned NOT NULL default '100', + `event_flags` int(3) unsigned NOT NULL default '0', + `event_param1` int(11) signed NOT NULL default '0', + `event_param2` int(11) signed NOT NULL default '0', + `event_param3` int(11) signed NOT NULL default '0', + `event_param4` int(11) signed NOT NULL default '0', + `action1_type` tinyint(5) unsigned NOT NULL default '0' COMMENT 'Action Type', + `action1_param1` int(11) signed NOT NULL default '0', + `action1_param2` int(11) signed NOT NULL default '0', + `action1_param3` int(11) signed NOT NULL default '0', + `action2_type` tinyint(5) unsigned NOT NULL default '0' COMMENT 'Action Type', + `action2_param1` int(11) signed NOT NULL default '0', + `action2_param2` int(11) signed NOT NULL default '0', + `action2_param3` int(11) signed NOT NULL default '0', + `action3_type` tinyint(5) unsigned NOT NULL default '0' COMMENT 'Action Type', + `action3_param1` int(11) signed NOT NULL default '0', + `action3_param2` int(11) signed NOT NULL default '0', + `action3_param3` int(11) signed NOT NULL default '0', + `comment` varchar(255) NOT NULL default '' COMMENT 'Event Comment', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='EventAI Scripts'; + +-- 2492_mangos_7622_02_world_creature_ai_summons +DROP TABLE IF EXISTS `creature_ai_summons`; +CREATE TABLE `creature_ai_summons` ( + `id` int(11) unsigned NOT NULL COMMENT 'Location Identifier' AUTO_INCREMENT, + `position_x` float NOT NULL default '0', + `position_y` float NOT NULL default '0', + `position_z` float NOT NULL default '0', + `orientation` float NOT NULL default '0', + `spawntimesecs` int(11) unsigned NOT NULL default '120', + `comment` varchar(255) NOT NULL default '' COMMENT 'Summon Comment', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='EventAI Summoning Locations'; + +-- 2492_mangos_7622_03_world_creature_ai_texts +DROP TABLE IF EXISTS `creature_ai_texts`; +CREATE TABLE `creature_ai_texts` ( + `entry` mediumint(8) NOT NULL, + `content_default` text NOT NULL, + `content_loc1` text, + `content_loc2` text, + `content_loc3` text, + `content_loc4` text, + `content_loc5` text, + `content_loc6` text, + `content_loc7` text, + `content_loc8` text, + `sound` mediumint(8) unsigned NOT NULL DEFAULT '0', + `type` tinyint(3) unsigned NOT NULL DEFAULT '0', + `language` tinyint(3) unsigned NOT NULL DEFAULT '0', + `emote` tinyint(3) unsigned NOT NULL DEFAULT '0', + `comment` text, + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Texts'; + +-- 2515_world_scripts +UPDATE `creature_template` SET `ScriptName`='mob_giant_infernal' WHERE `entry`=17908; +UPDATE `creature_template` SET `ScriptName`='mob_abomination' WHERE `entry`=17898; +UPDATE `creature_template` SET `ScriptName`='mob_ghoul' WHERE `entry`=17895; +UPDATE `creature_template` SET `ScriptName`='mob_necromancer' WHERE `entry`=17899; +UPDATE `creature_template` SET `ScriptName`='mob_banshee' WHERE `entry`=17905; +UPDATE `creature_template` SET `ScriptName`='mob_crypt_fiend' WHERE `entry`=17897; +UPDATE `creature_template` SET `ScriptName`='mob_fel_stalker' WHERE `entry`=17916; +UPDATE `creature_template` SET `ScriptName`='mob_frost_wyrm' WHERE `entry`=17907; +UPDATE `creature_template` SET `ScriptName`='mob_gargoyle' WHERE `entry`=17906; +UPDATE `creature_template` SET `ScriptName`='alliance_rifleman' WHERE `entry`=17921; +UPDATE `creature_template` SET `ScriptName`='mob_towering_infernal' WHERE `entry`=17818; +UPDATE `creature_template` SET `ScriptName`='boss_anetheron' WHERE `entry`=17808; +UPDATE `creature_template` SET `ScriptName`='boss_azgalor' WHERE `entry`=17842; +UPDATE `creature_template` SET `ScriptName`='mob_lesser_doomguard' WHERE `entry`=17864; +UPDATE `creature_template` SET `ScriptName`='boss_kazrogal' WHERE `entry`=17888; +UPDATE `creature_template` SET `ScriptName`='boss_rage_winterchill' WHERE `entry`=17767; +UPDATE `creature_template` SET `scale`='0.5' WHERE `entry`=17968; +UPDATE `creature_template` SET `equipment_id`='17888' WHERE `entry`=17888; +UPDATE `creature_template` SET `equipment_id`='17921' WHERE `entry`=17921; + +-- 2521_world +-- Sudden Death +DELETE FROM `spell_proc_event` WHERE `entry` IN (29723, 29725, 29724); +INSERT INTO `spell_proc_event` VALUES (29723, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (29725, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (29724, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0.000000, 0.000000, 0); + +-- 2522_mangos_7627_01_world_achievement_criteria_data +DROP TABLE IF EXISTS `achievement_criteria_data`; +CREATE TABLE `achievement_criteria_data` ( + `criteria_id` mediumint(8) NOT NULL, + `type` tinyint(3) unsigned NOT NULL DEFAULT '0', + `value1` mediumint(8) unsigned NOT NULL DEFAULT '0', + `value2` mediumint(8) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`criteria_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Achievment system'; + +-- 2528_mangos_7633_01_world_achievement_criteria_data +ALTER TABLE `achievement_criteria_data` + DROP PRIMARY KEY, + ADD PRIMARY KEY (`criteria_id`,`type`); + +-- 2551_world_spell_bonus_data +-- Judgement +DELETE FROM `spell_bonus_data` WHERE `entry` = 54158; +INSERT INTO `spell_bonus_data` (`entry`,`direct_bonus`,`dot_bonus`,`ap_bonus`,`comments`) VALUES +('54158','0.25','0','0.16','Paladin - Unleashing spell for Seal of Wisdom, Justice and Light'); + +-- 2559_world_spell_proc_event +-- Fingers of frost triggered spell +DELETE FROM `spell_proc_event` WHERE `entry` IN (44544); +INSERT INTO `spell_proc_event` VALUES (44544, 0x00, 0x00000003, 0x00000000, 0x00100000, 0x00000000, 0x00010000, 0x00000000, 0.000000, 0.000000, 0); +-- Sudden Death +DELETE FROM `spell_proc_event` WHERE `entry` IN (29723, 29725, 29724); +INSERT INTO `spell_proc_event` VALUES (29723, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (29725, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (29724, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); + +-- 2565_world_SD2_scripts +-- script waypoint +DELETE FROM script_waypoint WHERE entry=467; +INSERT INTO script_waypoint VALUES +(467, 0, -10508.40, 1068.00, 55.21, 0, ''), +(467, 1, -10518.30, 1074.84, 53.96, 0, ''), +(467, 2, -10534.82, 1081.92, 49.88, 0, ''), +(467, 3, -10546.51, 1084.88, 50.13, 0, ''), +(467, 4, -10555.29, 1084.45, 45.75, 0, ''), +(467, 5, -10566.57, 1083.53, 42.10, 0, ''), +(467, 6, -10575.83, 1082.34, 39.46, 0, ''), +(467, 7, -10585.67, 1081.08, 37.77, 0, ''), +(467, 8, -10600.08, 1078.19, 36.23, 0, ''), +(467, 9, -10608.69, 1076.08, 35.88, 0, ''), +(467, 10, -10621.26, 1073.00, 35.40, 0, ''), +(467, 11, -10638.12, 1060.18, 33.61, 0, ''), +(467, 12, -10655.87, 1038.99, 33.48, 0, ''), +(467, 13, -10664.68, 1030.54, 32.70, 0, ''), +(467, 14, -10708.68, 1033.86, 33.32, 0, ''), +(467, 15, -10754.43, 1017.93, 32.79, 0, ''), +(467, 16, -10802.26, 1018.01, 32.16, 0, ''), +(467, 17, -10832.60, 1009.04, 32.71, 0, ''), +(467, 18, -10866.56, 1006.51, 31.71, 0, ''), +(467, 19, -10879.98, 1005.10, 32.84, 0, ''), +(467, 20, -10892.45, 1001.32, 34.46, 0, ''), +(467, 21, -10906.14, 997.11, 36.15, 0, ''), +(467, 22, -10922.26, 1002.23, 35.74, 0, ''), +(467, 23, -10936.32, 1023.38, 36.52, 0, ''), +(467, 24, -10933.35, 1052.61, 35.85, 0, ''), +(467, 25, -10940.25, 1077.66, 36.49, 0, ''), +(467, 26, -10957.09, 1099.33, 36.83, 0, ''), +(467, 27, -10956.53, 1119.90, 36.73, 0, ''), +(467, 28, -10939.30, 1150.75, 37.42, 0, ''), +(467, 29, -10915.14, 1202.09, 36.55, 0, ''), +(467, 30, -10892.59, 1257.03, 33.37, 0, ''), +(467, 31, -10891.93, 1306.66, 35.45, 0, ''), +(467, 32, -10896.17, 1327.86, 37.77, 0, ''), +(467, 33, -10906.03, 1368.05, 40.91, 0, ''), +(467, 34, -10910.18, 1389.33, 42.62, 0, ''), +(467, 35, -10915.42, 1417.72, 42.93, 0, ''), +(467, 36, -10926.37, 1421.18, 43.04, 0, 'walk here and say'), +(467, 37, -10952.31, 1421.74, 43.40, 0, ''), +(467, 38, -10980.04, 1411.38, 42.79, 0, ''), +(467, 39, -11006.06, 1420.47, 43.26, 0, ''), +(467, 40, -11021.98, 1450.59, 43.09, 0, ''), +(467, 41, -11025.36, 1491.59, 43.15, 0, ''), +(467, 42, -11036.09, 1508.32, 43.28, 0, ''), +(467, 43, -11060.68, 1526.72, 43.19, 0, ''), +(467, 44, -11072.75, 1527.77, 43.20, 5000, 'say and quest credit'); +DELETE FROM script_waypoint WHERE entry=2768; +INSERT INTO script_waypoint VALUES +(2768, 0, -2066.45, -2085.96, 9.08, 0, ''), +(2768, 1, -2077.99, -2105.33, 13.24, 0, ''), +(2768, 2, -2074.60, -2109.67, 14.24, 0, ''), +(2768, 3, -2076.60, -2117.46, 16.67, 0, ''), +(2768, 4, -2073.51, -2123.46, 18.42, 2000, ''), +(2768, 5, -2073.51, -2123.46, 18.42, 4000, ''), +(2768, 6, -2066.60, -2131.85, 21.56, 0, ''), +(2768, 7, -2053.85, -2143.19, 20.31, 0, ''), +(2768, 8, -2043.49, -2153.73, 20.20, 10000, ''), +(2768, 9, -2043.49, -2153.73, 20.20, 20000, ''), +(2768, 10, -2043.49, -2153.73, 20.20, 10000, ''), +(2768, 11, -2043.49, -2153.73, 20.20, 2000, ''), +(2768, 12, -2053.85, -2143.19, 20.31, 0, ''), +(2768, 13, -2066.60, -2131.85, 21.56, 0, ''), +(2768, 14, -2073.51, -2123.46, 18.42, 0, ''), +(2768, 15, -2076.60, -2117.46, 16.67, 0, ''), +(2768, 16, -2074.60, -2109.67, 14.24, 0, ''), +(2768, 17, -2077.99, -2105.33, 13.24, 0, ''), +(2768, 18, -2066.45, -2085.96, 9.08, 0, ''), +(2768, 19, -2066.41, -2086.21, 8.97, 6000, ''), +(2768, 20, -2066.41, -2086.21, 8.97, 2000, ''); +DELETE FROM script_waypoint WHERE entry=12818; +INSERT INTO script_waypoint VALUES +(12818, 0, 3347.250089, -694.700989, 159.925995, 0, ''), +(12818, 1, 3341.527039, -694.725891, 161.124542, 4000, ''), +(12818, 2, 3338.351074, -686.088138, 163.444000, 0, ''), +(12818, 3, 3352.744873, -677.721741, 162.316269, 0, ''), +(12818, 4, 3370.291016, -669.366943, 160.751358, 0, ''), +(12818, 5, 3381.479492, -659.449097, 162.545303, 0, ''), +(12818, 6, 3389.554199, -648.500000, 163.651825, 0, ''), +(12818, 7, 3396.645020, -641.508911, 164.216019, 0, ''), +(12818, 8, 3410.498535, -634.299622, 165.773453, 0, ''), +(12818, 9, 3418.461426, -631.791992, 166.477615, 0, ''), +(12818, 10, 3429.500000, -631.588745, 166.921265, 0, ''), +(12818, 11,3434.950195, -629.245483, 168.333969, 0, ''), +(12818, 12,3438.927979, -618.503235, 171.503143, 0, ''), +(12818, 13,3444.217529, -609.293640, 173.077972, 1000, 'Ambush 1'), +(12818, 14,3460.505127, -593.794189, 174.342255, 0, ''), +(12818, 15,3480.283203, -578.210327, 176.652313, 0, ''), +(12818, 16,3492.912842, -562.335449, 181.396301, 0, ''), +(12818, 17,3495.230957, -550.977600, 184.652267, 0, ''), +(12818, 18,3496.247070, -529.194214, 188.172028, 0, ''), +(12818, 19,3497.619385, -510.411499, 188.345322, 1000, 'Ambush 2'), +(12818, 20,3498.498047, -497.787506, 185.806274, 0, ''), +(12818, 21,3484.218750, -489.717529, 182.389862, 4000, ''); +DELETE FROM script_waypoint WHERE entry=12858; +INSERT INTO script_waypoint VALUES +(12858, 0, 1782.63, -2241.11, 109.73, 5000, ''), +(12858, 1, 1788.88, -2240.17, 111.71, 0, ''), +(12858, 2, 1797.49, -2238.11, 112.31, 0, ''), +(12858, 3, 1803.83, -2232.77, 111.22, 0, ''), +(12858, 4, 1806.65, -2217.83, 107.36, 0, ''), +(12858, 5, 1811.81, -2208.01, 107.45, 0, ''), +(12858, 6, 1820.85, -2190.82, 100.49, 0, ''), +(12858, 7, 1829.60, -2177.49, 96.44, 0, ''), +(12858, 8, 1837.98, -2164.19, 96.71, 0, 'prepare'), +(12858, 9, 1839.99, -2149.29, 96.78, 0, ''), +(12858, 10, 1835.14, -2134.98, 96.80, 0, ''), +(12858, 11, 1823.57, -2118.27, 97.43, 0, ''), +(12858, 12, 1814.99, -2110.35, 98.38, 0, ''), +(12858, 13, 1806.60, -2103.09, 99.19, 0, ''), +(12858, 14, 1798.27, -2095.77, 100.04, 0, ''), +(12858, 15, 1783.59, -2079.92, 100.81, 0, ''), +(12858, 16, 1776.79, -2069.48, 101.77, 0, ''), +(12858, 17, 1776.82, -2054.59, 109.82, 0, ''), +(12858, 18, 1776.88, -2047.56, 109.83, 0, ''), +(12858, 19, 1776.86, -2036.55, 109.83, 0, ''), +(12858, 20, 1776.90, -2024.56, 109.83, 0, 'win'), +(12858, 21, 1776.87, -2028.31, 109.83,60000, 'stay'), +(12858, 22, 1776.90, -2028.30, 109.83, 0, ''); +DELETE FROM script_waypoint WHERE entry=15420; +INSERT INTO script_waypoint VALUES +(15420, 0, 9294.78, -6682.51, 22.42, 0, ''), +(15420, 1, 9298.27, -6667.99, 22.42, 0, ''), +(15420, 2, 9309.63, -6658.84, 22.43, 0, ''), +(15420, 3, 9304.43, -6649.31, 26.46, 0, ''), +(15420, 4, 9298.83, -6648.00, 28.61, 0, ''), +(15420, 5, 9291.06, -6653.46, 31.83,2500, ''), +(15420, 6, 9289.08, -6660.17, 31.85,5000, ''), +(15420, 7, 9291.06, -6653.46, 31.83, 0, ''); +DELETE FROM script_waypoint WHERE entry=16993; +INSERT INTO script_waypoint VALUES +(16993, 0, -1137.72, 4272.10, 14.04, 5000, ''), +(16993, 1, -1141.34, 4232.42, 14.63, 0, ''), +(16993, 2, -1133.47, 4220.88, 11.78, 0, ''), +(16993, 3, -1126.18, 4213.26, 13.51, 0, ''), +(16993, 4, -1100.12, 4204.32, 16.41, 0, ''), +(16993, 5, -1063.68, 4197.92, 15.51, 0, ''), +(16993, 6, -1027.28, 4194.36, 15.52, 0, ''), +(16993, 7, -995.68, 4189.59, 19.84, 0, ''), +(16993, 8, -970.90, 4188.60, 24.61, 0, ''), +(16993, 9, -961.93, 4193.34, 26.11, 15000, 'Summon 1'), +(16993, 10, -935.52, 4210.99, 31.98, 0, ''), +(16993, 11, -913.42, 4218.27, 37.29, 0, ''), +(16993, 12, -896.53, 4207.73, 43.23, 0, ''), +(16993, 13, -868.49, 4194.77, 46.75, 30000, 'Kneel and Rest Here'), +(16993, 14, -852.83, 4198.29, 47.28, 15000, 'Summon 2'), +(16993, 15, -819.85, 4200.50, 46.37, 0, ''), +(16993, 16, -791.92, 4201.96, 44.19, 0, ''), +(16993, 17, -774.42, 4202.46, 47.41, 0, ''), +(16993, 18, -762.90, 4202.17, 48.81, 0, ''), +(16993, 19, -728.25, 4195.35, 50.68, 0, ''), +(16993, 20, -713.58, 4192.07, 53.98, 0, ''), +(16993, 21, -703.09, 4189.74, 56.96, 0, ''), +(16993, 22, -693.70, 4185.43, 57.06, 0, ''), +(16993, 23, -686.38, 4159.81, 60.26, 0, ''), +(16993, 24, -679.88, 4147.04, 64.20, 0, ''), +(16993, 25, -656.74, 4147.72, 64.11, 0, ''), +(16993, 26, -652.22, 4137.50, 64.58, 0, ''), +(16993, 27, -649.99, 4136.38, 64.63, 30000, 'Quest Credit'); +DELETE FROM script_waypoint WHERE entry=17312; +INSERT INTO script_waypoint VALUES +(17312, 0, -4784.532227, -11051.060547, 3.484263, 0, ''), +(17312, 1, -4805.509277, -11037.293945, 3.043942, 0, ''), +(17312, 2, -4827.826172, -11034.398438, 1.741959, 0, ''), +(17312, 3, -4852.630859, -11033.695313, 2.208656, 0, ''), +(17312, 4, -4876.791992, -11034.517578, 3.175228, 0, ''), +(17312, 5, -4895.486816, -11038.306641, 9.390890, 0, ''), +(17312, 6, -4915.464844, -11048.402344, 12.369793, 0, ''), +(17312, 7, -4937.288086, -11067.041992, 13.857983, 0, ''), +(17312, 8, -4966.577637, -11067.507813, 15.754786, 0, ''), +(17312, 9, -4993.799805, -11056.544922, 19.175295, 0, ''), +(17312, 10, -5017.836426, -11052.569336, 22.476587, 0, ''), +(17312, 11, -5039.706543, -11058.459961, 25.831593, 0, ''), +(17312, 12, -5057.289063, -11045.474609, 26.972496, 0, ''), +(17312, 13, -5078.828125, -11037.601563, 29.053417, 0, ''), +(17312, 14, -5104.158691, -11039.195313, 29.440195, 0, ''), +(17312, 15, -5120.780273, -11039.518555, 30.142139, 0, ''), +(17312, 16, -5140.833008, -11039.810547, 28.788074, 0, ''), +(17312, 17, -5161.201660, -11040.050781, 27.879545, 4000, ''), +(17312, 18, -5171.842285, -11046.803711, 27.183821, 0, ''), +(17312, 19, -5185.995117, -11056.359375, 20.234867, 0, ''), +(17312, 20, -5198.485840, -11065.065430, 18.872593, 0, ''), +(17312, 21, -5214.062500, -11074.653320, 19.215731, 0, ''), +(17312, 22, -5220.157227, -11088.377930, 19.818476, 0, ''), +(17312, 23, -5233.652832, -11098.846680, 18.349432, 0, ''), +(17312, 24, -5250.163086, -11111.653320, 16.438959, 0, ''), +(17312, 25, -5268.194336, -11125.639648, 12.668313, 0, ''), +(17312, 26, -5286.270508, -11130.669922, 6.912246, 0, ''), +(17312, 27, -5317.449707, -11137.392578, 4.963446, 0, ''), +(17312, 28, -5334.854492, -11154.384766, 6.742664, 0, ''), +(17312, 29, -5353.874512, -11171.595703, 6.903912, 20000, ''), +(17312, 30, -5354.240000, -11171.940000, 6.890000, 0, ''); +DELETE FROM script_waypoint WHERE entry=19685; +INSERT INTO script_waypoint VALUES +(19685, 0, -1863.369019, 5419.517090, -10.463668, 5000, ''), +(19685, 1, -1861.749023, 5416.465332, -10.508068, 0, ''), +(19685, 2, -1857.036133, 5410.966309, -12.428039, 0, ''), +(19685, 3, -1831.539185, 5365.472168, -12.428039, 0, ''), +(19685, 4, -1813.416504, 5333.776855, -12.428039, 0, ''), +(19685, 5, -1800.354370, 5313.290039, -12.428039, 0, ''), +(19685, 6, -1775.624878, 5268.786133, -38.809181, 0, ''), +(19685, 7, -1770.147339, 5259.268066, -38.829231, 0, ''), +(19685, 8, -1762.814209, 5261.098145, -38.848995, 0, ''), +(19685, 9, -1740.110474, 5268.858398, -40.208965, 0, ''), +(19685, 10, -1725.837402, 5270.936035, -40.208965, 0, ''), +(19685, 11, -1701.580322, 5290.323242, -40.209187, 0, ''), +(19685, 12, -1682.877808, 5291.406738, -34.429646, 0, ''), +(19685, 13, -1670.101685, 5291.201172, -32.786007, 0, ''), +(19685, 14, -1656.666870, 5294.333496, -37.862648, 0, ''), +(19685, 15, -1652.035767, 5295.413086, -40.245499, 0, ''), +(19685, 16, -1620.860596, 5300.133301, -40.208992, 0, ''), +(19685, 17, -1607.630981, 5293.983398, -38.577045, 5000, ''), +(19685, 18, -1607.630981, 5293.983398, -38.577045, 5000, ''), +(19685, 19, -1607.630981, 5293.983398, -38.577045, 5000, ''), +(19685, 20, -1622.140869, 5301.955566, -40.208897, 0, ''), +(19685, 21, -1621.131836, 5333.112793, -40.208897, 0, ''), +(19685, 22, -1637.598999, 5342.134277, -40.208790, 0, ''), +(19685, 23, -1648.521606, 5352.309570, -47.496170, 0, ''), +(19685, 24, -1654.606934, 5357.419434, -45.870892, 0, ''), +(19685, 25, -1633.670044, 5422.067871, -42.835541, 0, ''), +(19685, 26, -1656.567505, 5426.236328, -40.405815, 0, ''), +(19685, 27, -1664.932373, 5425.686523, -38.846405, 0, ''), +(19685, 28, -1681.406006, 5425.871094, -38.810928, 0, ''), +(19685, 29, -1730.875977, 5427.413574, -12.427910, 0, ''), +(19685, 30, -1743.509521, 5369.599121, -12.427910, 0, ''), +(19685, 31, -1877.217041, 5303.710449, -12.427989, 0, ''), +(19685, 32, -1890.371216, 5289.273438, -12.428268, 0, ''), +(19685, 33, -1905.505737, 5266.534668, 2.630672, 0, ''), +(19685, 34, -1909.381348, 5273.008301, 1.663714, 10000, ''), +(19685, 35, -1909.381348, 5273.008301, 1.663714, 12000, ''), +(19685, 36, -1909.381348, 5273.008301, 1.663714, 8000, ''), +(19685, 37, -1909.381348, 5273.008301, 1.663714, 15000, ''), +(19685, 38, -1927.561401, 5275.324707, 1.984987, 0, ''), +(19685, 39, -1927.385498, 5300.879883, -12.427236, 0, ''), +(19685, 40, -1921.063965, 5314.318359, -12.427236, 0, ''), +(19685, 41, -1965.425415, 5379.298828, -12.427236, 0, ''), +(19685, 42, -1981.233154, 5450.743652, -12.427236, 0, ''), +(19685, 43, -1958.022461, 5455.904297, 0.487659, 0, ''), +(19685, 44, -1951.991455, 5463.580566, 0.874490, 10000, ''), +(19685, 45, -1951.991455, 5463.580566, 0.874490, 12000, ''), +(19685, 46, -1968.730225, 5481.752930, -12.427846, 0, ''), +(19685, 47, -1881.839844, 5554.040039, -12.427846, 0, ''), +(19685, 48, -1841.566650, 5545.965332, -12.427846, 0, ''), +(19685, 49, -1837.658325, 5523.780273, 0.558756, 0, ''), +(19685, 50, -1831.321777, 5534.821777, 1.221819, 6000, ''), +(19685, 51, -1831.321777, 5534.821777, 1.221819, 8000, ''), +(19685, 52, -1831.321777, 5534.821777, 1.221819, 5000, ''), +(19685, 53, -1850.060669, 5472.610840, 0.857320, 6000, ''), +(19685, 54, -1850.060669, 5472.610840, 0.857320, 8000, ''), +(19685, 55, -1850.060669, 5472.610840, 0.857320, 9000, ''), +(19685, 56, -1850.060669, 5472.610840, 0.857320, 9000, ''), +(19685, 57, -1850.060669, 5472.610840, 0.857320, 4000, ''); +DELETE FROM script_waypoint WHERE entry=20129; +INSERT INTO script_waypoint VALUES +(20129, 0, -8374.93,-4250.21, -204.38,5000, ''), +(20129, 1, -8374.93,-4250.21, -204.38,16000, ''), +(20129, 2, -8374.93,-4250.21, -204.38,10000, ''), +(20129, 3, -8374.93,-4250.21, -204.38,2000, ''), +(20129, 4, -8439.40,-4180.05, -209.25, 0, ''), +(20129, 5, -8437.82,-4120.84, -208.59,10000, ''), +(20129, 6, -8437.82,-4120.84, -208.59,16000, ''), +(20129, 7, -8437.82,-4120.84, -208.59,13000, ''), +(20129, 8, -8437.82,-4120.84, -208.59,18000, ''), +(20129, 9, -8437.82,-4120.84, -208.59,15000, ''), +(20129, 10, -8437.82,-4120.84, -208.59,2000, ''), +(20129, 11, -8467.26,-4198.63, -214.21, 0, ''), +(20129, 12, -8667.76,-4252.13, -209.56, 0, ''), +(20129, 13, -8703.71,-4234.58, -209.5,14000, ''), +(20129, 14, -8703.71,-4234.58, -209.5,2000, ''), +(20129, 15, -8642.81,-4304.37, -209.57, 0, ''), +(20129, 16, -8649.06,-4394.36, -208.46,6000, ''), +(20129, 17, -8649.06,-4394.36, -208.46,18000, ''), +(20129, 18, -8649.06,-4394.36, -208.46,2000, ''), +(20129, 19, -8468.72,-4437.67, -215.45, 0, ''), +(20129, 20, -8427.54,-4426, -211.13, 0, ''), +(20129, 21, -8364.83,-4393.32, -205.91, 0, ''), +(20129, 22, -8304.54,-4357.2, -208.2,18000, ''), +(20129, 23, -8304.54,-4357.2, -208.2,2000, ''), +(20129, 24, -8375.42,-4250.41, -205.14,5000, ''), +(20129, 25, -8375.42,-4250.41, -205.14,5000, ''); +DELETE FROM script_waypoint WHERE entry=6575; +INSERT INTO script_waypoint VALUES +(6575, 0, 1945.81, -431.54, 16.36, 0, ''), +(6575, 1, 1946.21, -436.41, 16.36, 0, ''), +(6575, 2, 1950.01, -444.11, 14.63, 0, ''), +(6575, 3, 1956.08, -449.34, 13.12, 0, ''), +(6575, 4, 1966.59, -450.55, 11.27, 0, ''), +(6575, 5, 1976.09, -447.51, 11.27, 0, ''), +(6575, 6, 1983.42, -435.85, 11.27, 0, ''), +(6575, 7, 1978.17, -428.81, 11.27, 0, ''), +(6575, 8, 1973.97, -422.08, 9.04, 0, ''), +(6575, 9, 1963.84, -418.90, 6.17, 0, ''), +(6575, 10, 1961.22, -422.74, 6.17, 0, ''), +(6575, 11, 1964.80, -431.26, 6.17, 300000, ''); +DELETE FROM script_waypoint WHERE entry=3849; +INSERT INTO script_waypoint VALUES +(3849, 0, -252.92, 2126.82, 81.17, 0, ''), +(3849, 1, -253.88, 2131.11, 81.21, 0, ''), +(3849, 2, -249.66, 2142.45, 87.01, 0, ''), +(3849, 3, -248.08, 2143.68, 87.01, 0, ''), +(3849, 4, -238.87, 2139.93, 87.01, 0, ''), +(3849, 5, -235.47, 2149.18, 90.59, 0, ''), +(3849, 6, -239.89, 2156.06, 90.62, 20000, 'SAY_FREE'); +DELETE FROM script_waypoint WHERE entry=3850; +INSERT INTO script_waypoint VALUES +(3850, 0, -255.33, 2117.99, 81.17, 0, ''), +(3850, 1, -253.88, 2131.11, 81.21, 0, ''), +(3850, 2, -249.66, 2142.45, 87.01, 0, ''), +(3850, 3, -248.08, 2143.68, 87.01, 0, ''), +(3850, 4, -238.87, 2139.93, 87.01, 0, ''), +(3850, 5, -235.47, 2149.18, 90.59, 0, ''), +(3850, 6, -239.89, 2156.06, 90.62, 20000, 'SAY_FREE'); +-- Henry Stern +UPDATE `creature_template` SET `ScriptName`='npc_henry_stern' WHERE `entry`=8696; +DELETE FROM `trinity_string` WHERE `entry` IN (59); +INSERT INTO `trinity_string` VALUES +(59,'Using creature EventAI: %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2570_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (47988,47987,27272,17854,17853,17852,17851,17850,17767); +INSERT INTO `spell_linked_spell` VALUES (47988, 54501, 2, 'Consume Shadows - Rank 9'); +INSERT INTO `spell_linked_spell` VALUES (47987, 54501, 2, 'Consume Shadows - Rank 8'); +INSERT INTO `spell_linked_spell` VALUES (27272, 54501, 2, 'Consume Shadows - Rank 7'); +INSERT INTO `spell_linked_spell` VALUES (17854, 54501, 2, 'Consume Shadows - Rank 6'); +INSERT INTO `spell_linked_spell` VALUES (17853, 54501, 2, 'Consume Shadows - Rank 5'); +INSERT INTO `spell_linked_spell` VALUES (17852, 54501, 2, 'Consume Shadows - Rank 4'); +INSERT INTO `spell_linked_spell` VALUES (17851, 54501, 2, 'Consume Shadows - Rank 3'); +INSERT INTO `spell_linked_spell` VALUES (17850, 54501, 2, 'Consume Shadows - Rank 2'); +INSERT INTO `spell_linked_spell` VALUES (17767, 54501, 2, 'Consume Shadows - Rank 1'); + +-- 2586_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (53563); +INSERT INTO `spell_linked_spell` VALUES (53563, 53651, 2, 'Beacon of Light'); +DELETE FROM `spell_proc_event` WHERE `entry` IN (53651); +INSERT INTO `spell_proc_event` VALUES +(53651, 0x00, 10, 0xC0008000, 0x00000000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0); + +-- 2591_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (16857,17390,17391,17392,27011,48475); +INSERT INTO `spell_linked_spell` VALUES (16857, 60089, 0, 'Faerie Fire (Feral) Rank 1'); +INSERT INTO `spell_linked_spell` VALUES (17390, 60089, 0, 'Faerie Fire (Feral) Rank 2'); +INSERT INTO `spell_linked_spell` VALUES (17391, 60089, 0, 'Faerie Fire (Feral) Rank 3'); +INSERT INTO `spell_linked_spell` VALUES (17392, 60089, 0, 'Faerie Fire (Feral) Rank 4'); +INSERT INTO `spell_linked_spell` VALUES (27011, 60089, 0, 'Faerie Fire (Feral) Rank 5'); +INSERT INTO `spell_linked_spell` VALUES (48475, 60089, 0, 'Faerie Fire (Feral) Rank 6'); + +-- 2617_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (781, 57635, 60932, 61507, 49576); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +(781, 56446, 0, 'Disengage'), +(57635, 57636, 0, 'Disengage'), +(60932, 60934, 0, 'Disengage'), +(61507, 61508, 0, 'Disengage'), +(49576, 49560, 0, 'Death Grip'); + +-- 2629_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (47897,61290); +INSERT INTO `spell_linked_spell` VALUES (47897, 47960, 1, 'Shadowflame Rank 1'); +INSERT INTO `spell_linked_spell` VALUES (61290, 61291, 1, 'Shadowflame Rank 2'); + +-- 2678_mangos_7662_01_world_spell_bonus_data +DELETE FROM `spell_bonus_data` WHERE entry IN (50288, 50294); +INSERT INTO `spell_bonus_data` VALUES +(50288, 0.05, 0, 0, "Druid - Starfall"), +(50294, 0.012, 0, 0, "Druid - Starfall AOE"); + +-- 2682_world_SD2_scripts +DELETE FROM script_waypoint WHERE entry=3849; +INSERT INTO script_waypoint VALUES +(3849, 0, -250.923431, 2116.264160, 81.179, 0, 'SAY_FREE_AD'), +(3849, 1, -255.048538, 2119.392578, 81.179, 0, ''), +(3849, 2, -254.129105, 2123.454346, 81.179, 0, ''), +(3849, 3, -253.897552, 2130.873535, 81.179, 0, ''), +(3849, 4, -249.889435, 2142.307861, 86.972, 0, ''), +(3849, 5, -248.204926, 2144.017090, 87.013, 0, ''), +(3849, 6, -240.552826, 2140.552734, 87.012, 0, ''), +(3849, 7, -237.513916, 2142.066650, 87.012, 0, ''), +(3849, 8, -235.638138, 2149.231689, 90.587, 0, ''), +(3849, 9, -237.188019, 2151.946045, 90.624, 0, ''), +(3849, 10, -241.162064, 2153.649658, 90.624, 0, 'SAY_OPEN_DOOR_AD'), +(3849, 11, -241.129700, 2154.562988, 90.624, 5000, ''), +(3849, 12, -241.129700, 2154.562988, 90.624, 5000, 'SAY_POST1_DOOR_AD'), +(3849, 13, -241.129700, 2154.562988, 90.624, 25000, 'SAY_POST2_DOOR_AD'); + +DELETE FROM script_waypoint WHERE entry=3850; +INSERT INTO script_waypoint VALUES +(3850, 0, -241.816895, 2122.904053, 81.179, 0, 'SAY_FREE_AS'), +(3850, 1, -247.139297, 2124.886475, 81.179, 0, ''), +(3850, 2, -253.179184, 2127.406738, 81.179, 0, ''), +(3850, 3, -253.897552, 2130.873535, 81.179, 0, ''), +(3850, 4, -249.889435, 2142.307861, 86.972, 0, ''), +(3850, 5, -248.204926, 2144.017090, 87.013, 0, ''), +(3850, 6, -240.552826, 2140.552734, 87.012, 0, ''), +(3850, 7, -237.513916, 2142.066650, 87.012, 0, ''), +(3850, 8, -235.638138, 2149.231689, 90.587, 0, ''), +(3850, 9, -237.188019, 2151.946045, 90.624, 0, ''), +(3850, 10, -241.162064, 2153.649658, 90.624, 0, 'SAY_OPEN_DOOR_AS'), +(3850, 11, -241.129700, 2154.562988, 90.624, 5000, 'cast'), +(3850, 12, -241.129700, 2154.562988, 90.624, 5000, 'SAY_POST_DOOR_AS'), +(3850, 13, -241.129700, 2154.562988, 90.624, 25000, ''); + +UPDATE script_texts SET content_default='Follow me and I\'ll open the courtyard door for you.', language=7, comment='prisoner ashcrombe SAY_FREE_AS' WHERE entry=-1033000; + +DELETE FROM script_texts WHERE entry BETWEEN -1033008 AND -1033001; +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1033001,'I have just the spell to get this door open. Too bad the cell doors weren\'t locked so haphazardly.',0,0,7,1,'prisoner ashcrombe SAY_OPEN_DOOR_AS'), +(-1033002,'There it is! Wide open. Good luck to you conquering what lies beyond. I must report back to the Kirin Tor at once!',0,0,7,1,'prisoner ashcrombe SAY_POST_DOOR_AS'), +(-1033003,'Free from this wretched cell at last! Let me show you to the courtyard....',0,0,1,1,'prisoner adamant SAY_FREE_AD'), +(-1033004,'You are indeed courageous for wanting to brave the horrors that lie beyond this door.',0,0,1,1,'prisoner adamant SAY_OPEN_DOOR_AD'), +(-1033005,'There we go!',0,0,1,1,'prisoner adamant SAY_POST1_DOOR_AD'), +(-1033006,'Good luck with Arugal. I must hurry back to Hadrec now.',0,0,1,1,'prisoner adamant SAY_POST2_DOOR_AD'), +(-1033007,'About time someone killed the wretch.',0,0,1,1,'prisoner adamant SAY_BOSS_DIE_AD'), +(-1033008,'For once I agree with you... scum.',0,0,7,1,'prisoner ashcrombe SAY_BOSS_DIE_AS'); + +-- 2683_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry`=2025; +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +('2025','|cff00ff00Created|r:|cff00ccff %s ago|r ',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2685_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (56337, 56336, 56333); +INSERT INTO `spell_proc_event` VALUES +(56337, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00022200, 0x0000000, 0.000000, 0.000000, 0), +(56336, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00022200, 0x0000000, 0.000000, 0.000000, 0), +(56333, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00022200, 0x0000000, 0.000000, 0.000000, 0); + +-- 2686_world_command +DELETE FROM `command` WHERE `name` IN ('go ticket'); +INSERT INTO `command` VALUES +('go ticket','1','Syntax: .go ticket #ticketid\r\nTeleports the user to the location where $ticketid was created.'); + +-- 2687_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (44545, 44543); +INSERT INTO `spell_proc_event` VALUES +(44545, 0x00, 3, 1049120, 4096, 0, 65536, 0x0000000, 0.000000, 15.000000, 0), +(44543, 0x00, 3, 1049120, 4096, 0, 65536, 0x0000000, 0.000000, 7.000000, 0); + +-- 2689_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (51723); +INSERT INTO `spell_linked_spell` VALUES (51723, 52874, 0, 'Fan Of Knives'); + +-- 2702_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (56337, 56336, 56333); +INSERT INTO `spell_proc_event` VALUES +(56337, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00011100, 0x0000000, 0.000000, 0.000000, 0), +(56336, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00011100, 0x0000000, 0.000000, 0.000000, 0), +(56333, 0x00, 9, 0x00000004, 0x00000000, 0x00000200, 0x00011100, 0x0000000, 0.000000, 0.000000, 0); + +-- 2706_world_SD2_scripts +UPDATE creature_template SET ScriptName='npc_kingdom_of_dalaran_quests' WHERE entry IN (29169,23729,26673,27158,29158,29161,26471,29155,29159,29160,29162); +DELETE FROM spell_target_position WHERE id=53360; +INSERT INTO spell_target_position VALUES +(53360, 571, 5807.829, 587.960, 660.939, 1.663); + +-- 2715_TC1_1362_world_creature_linked_respawn +DROP TABLE IF EXISTS `creature_linked_respawn`; +CREATE TABLE `creature_linked_respawn` ( + `guid` int(10) unsigned NOT NULL COMMENT 'dependent creature', + `linkedGuid` int(10) unsigned NOT NULL COMMENT 'master creature', + PRIMARY KEY (`guid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Creature Respawn Link System'; +DELETE FROM `trinity_string` WHERE `entry` = '750'; +INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +('750', 'linkGUID: %u, Entry: %u (%s)', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- 2724_TC1_world_1371_script +UPDATE `creature_template` SET `ScriptName` = 'mob_unkor_the_ruthless' WHERE `entry` = 18262; + +-- 2774_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (56337, 56336, 56333, 58426, 31221, 31222, 31223); +INSERT INTO `spell_proc_event` VALUES +(56337, 0x00, 9, 0x00000004, 0x00000000, 0x00000040, 0x00022200, 0x0000000, 0.000000, 0.000000, 0), +(56336, 0x00, 9, 0x00000004, 0x00000000, 0x00000040, 0x00022200, 0x0000000, 0.000000, 0.000000, 0), +(56333, 0x00, 9, 0x00000004, 0x00000000, 0x00000040, 0x00022200, 0x0000000, 0.000000, 0.000000, 0), +-- Overkill +(58426, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0006001, 0.000000, 0.000000, 0), +-- Master of subtlety +(31221, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0006001, 0.000000, 0.000000, 0), +(31222, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0006001, 0.000000, 0.000000, 0), +(31223, 0x00, 8, 0x400000, 0x00000000, 0x00000000, 0x00014000, 0x0006001, 0.000000, 0.000000, 0); + +-- 2792_world_spell_bonus_data +DELETE FROM `spell_bonus_data` WHERE entry IN (33778); +INSERT INTO `spell_bonus_data` VALUES +(33778, 0.6453, 0, 0, "Lifebloom- final effect"); + +-- 2792_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (16180, 16198, 16196); +INSERT INTO `spell_proc_event` VALUES +(16180, 0x00, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x0000002, 0.000000, 0.000000, 0), +(16198, 0x00, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x0000002, 0.000000, 0.000000, 0), +(16196, 0x00, 11, 0x000000C0, 0x00000000, 0x00000010, 0x00000000, 0x0000002, 0.000000, 0.000000, 0); + +-- 2793_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (54754); +INSERT INTO `spell_proc_event` VALUES +(54754, 0x00, 7, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0); + +-- 2794_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (54754); +INSERT INTO `spell_proc_event` VALUES +(54754, 0x00, 7, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0); + +-- 2798_world_SD2_scripts +UPDATE gameobject_template SET ScriptName='go_tele_to_dalaran_crystal' WHERE entry=191230; +UPDATE gameobject_template SET ScriptName='go_tele_to_violet_stand' WHERE entry=191229; + +-- 2802_world_SD2_scripts +DELETE FROM script_waypoint WHERE entry=17876; +INSERT INTO script_waypoint VALUES +(17876, 0, 2230.91, 118.765, 82.2947,5000, ''), +(17876, 1, 2230.33, 114.980, 82.2946, 0, ''), +(17876, 2, 2233.36, 111.057, 82.2996, 0, ''), +(17876, 3, 2231.17, 108.486, 82.6624, 0, ''), +(17876, 4, 2220.22, 114.605, 89.4264, 0, ''), +(17876, 5, 2215.23, 115.990, 89.4549, 0, ''), +(17876, 6, 2210.00, 106.849, 89.4549, 0, ''), +(17876, 7, 2205.66, 105.234, 89.4549, 0, ''), +(17876, 8, 2192.26, 112.618, 89.4549, 0, 'spawn armorer'), +(17876, 9, 2181.28, 118.612, 89.4549,8000, 'get weapon'), +(17876, 10, 2181.62, 120.385, 89.4549,5000, 'get armor'), +(17876, 11, 2189.44, 113.922, 89.4549, 0, ''), +(17876, 12, 2195.63, 110.584, 89.4549, 0, ''), +(17876, 13, 2201.09, 115.115, 89.4549, 0, ''), +(17876, 14, 2204.34, 121.036, 89.4355, 0, ''), +(17876, 15, 2208.66, 129.127, 87.9560, 0, 'first ambush'), +(17876, 16, 2193.09, 137.940, 88.2164, 0, ''), +(17876, 17, 2173.39, 149.064, 87.9227, 0, ''), +(17876, 18, 2164.25, 137.965, 85.0595, 0, ''), +(17876, 19, 2149.31, 125.645, 77.0858, 0, ''), +(17876, 20, 2142.78, 127.173, 75.5954, 0, ''), +(17876, 21, 2139.28, 133.952, 73.6386, 0, 'second ambush'), +(17876, 22, 2139.54, 155.235, 67.1269, 0, ''), +(17876, 23, 2145.38, 167.551, 64.8974, 0, ''), +(17876, 24, 2134.28, 175.304, 67.9446, 0, ''), +(17876, 25, 2118.08, 187.387, 68.8141, 0, ''), +(17876, 26, 2105.88, 195.461, 65.1854, 0, 'third ambush'), +(17876, 27, 2096.77, 196.939, 65.2117, 0, ''), +(17876, 28, 2083.90, 209.395, 64.8736, 0, ''), +(17876, 29, 2067.84, 224.376, 64.8022,30000, 'meeting scarloc'), +(17876, 30, 2055.40, 242.90, 63.3418, 0, 'after skarloc'), +(17876, 31, 2039.20, 266.460, 63.0182,10000, 'mount up'), +(17876, 32, 2011.77, 278.478, 65.3388, 0, ''), +(17876, 33, 2005.08, 289.676, 66.1179, 0, ''), +(17876, 34, 2033.11, 337.450, 66.0948, 0, ''), +(17876, 35, 2070.30, 416.208, 66.0893, 0, ''), +(17876, 36, 2086.76, 469.768, 65.9182, 0, ''), +(17876, 37, 2101.70, 497.955, 61.7881, 0, 'road ambush'), +(17876, 38, 2133.39, 530.933, 55.3700,5000, ''), +(17876, 39, 2157.91, 559.635, 48.5157, 0, ''), +(17876, 40, 2167.34, 586.191, 42.4394, 0, ''), +(17876, 41, 2174.17, 637.643, 33.9002, 0, ''), +(17876, 42, 2179.31, 656.053, 34.723, 0, ''), +(17876, 43, 2183.65, 670.941, 34.0318, 0, ''), +(17876, 44, 2201.50, 668.616, 36.1236, 0, ''), +(17876, 45, 2221.56, 652.747, 36.6153, 0, ''), +(17876, 46, 2238.97, 640.125, 37.2214, 0, ''), +(17876, 47, 2251.17, 620.574, 40.1473, 0, ''), +(17876, 48, 2261.98, 595.303, 41.4117, 0, ''), +(17876, 49, 2278.67, 560.172, 38.9090, 0, ''), +(17876, 50, 2336.72, 528.327, 40.9369, 0, ''), +(17876, 51, 2381.04, 519.612, 37.7312, 0, ''), +(17876, 52, 2412.20, 515.425, 39.2068, 0, ''), +(17876, 53, 2452.39, 516.174, 42.9387, 0, ''), +(17876, 54, 2467.38, 539.389, 47.4992, 0, ''), +(17876, 55, 2470.70, 554.333, 46.6668, 0, ''), +(17876, 56, 2478.07, 575.321, 55.4549, 0, ''), +(17876, 57, 2480.00, 585.408, 56.6921, 0, ''), +(17876, 58, 2482.67, 608.817, 55.6643, 0, ''), +(17876, 59, 2485.62, 626.061, 58.0132, 2000, 'dismount'), +(17876, 60, 2486.91, 626.356, 58.0761, 0, 'scare horse'), +(17876, 61, 2488.58, 660.940, 57.3913, 0, ''), +(17876, 62, 2502.56, 686.059, 55.6252, 0, ''), +(17876, 63, 2502.08, 694.360, 55.5083, 0, ''), +(17876, 64, 2491.46, 694.321, 55.7163, 0, ''), +(17876, 65, 2491.10, 703.300, 55.7630, 0, ''), +(17876, 66, 2485.64, 702.992, 55.7917, 0, ''), +(17876, 67, 2479.10, 695.291, 55.7901, 10000, ''), +(17876, 68, 2476.75, 693.689, 55.7960, 0, 'spawn mobs'), +(17876, 69, 2475.39, 695.983, 55.8146, 0, ''), +(17876, 70, 2477.75, 694.473, 55.7945, 0, ''), +(17876, 71, 2481.27, 697.747, 55.7910, 0, 'mobs in doorway'), +(17876, 72, 2486.31, 703.131, 55.7861, 5000, ''), +(17876, 73, 2490.76, 703.511, 55.7662, 0, ''), +(17876, 74, 2491.30, 694.792, 55.7195, 0, ''), +(17876, 75, 2518.69, 693.876, 55.1383, 0, ''), +(17876, 76, 2531.33, 681.914, 55.1383, 0, ''), +(17876, 77, 2568.25, 682.654, 55.1778, 0, ''), +(17876, 78, 2589.61, 689.981, 55.1421, 0, ''), +(17876, 79, 2634.74, 679.833, 54.6613, 0, ''), +(17876, 80, 2630.41, 661.464, 54.2761, 0, ''), +(17876, 81, 2629.00, 656.982, 56.0651, 0, ''), +(17876, 82, 2620.84, 633.007, 56.0300, 3000, 'stop in church'), +(17876, 83, 2622.99, 639.178, 56.0300, 0, 'summon'), +(17876, 84, 2628.73, 656.693, 56.0610, 5000, ''), +(17876, 85, 2630.34, 661.135, 54.2738, 0, ''), +(17876, 86, 2635.38, 672.243, 54.4508, 0, ''), +(17876, 87, 2644.13, 668.158, 55.3797, 0, ''), +(17876, 88, 2646.82, 666.740, 56.9898, 0, ''), +(17876, 89, 2658.22, 665.432, 57.1725, 0, ''), +(17876, 90, 2661.88, 674.849, 57.1725, 0, ''), +(17876, 91, 2656.23, 677.208, 57.1725, 0, ''), +(17876, 92, 2652.28, 670.270, 61.9353, 0, ''), +(17876, 93, 2650.79, 664.290, 61.9302, 0, 'summon inn'), +(17876, 94, 2658.19, 660.454, 61.9320, 5000, ''), +(17876, 95, 2660.57, 659.173, 61.9370, 0, 'speak with Taretha'), +(17876, 96, 2658.19, 660.454, 61.9320, 5000, 'epoch calls'), +(17876, 97, 2659.84, 659.482, 61.9361, 5000, 'taretha "dies"'), +(17876, 98, 2654.28, 662.722, 61.9313, 0, ''), +(17876, 99, 2652.37, 670.561, 61.9368, 0, ''), +(17876, 100, 2656.05, 676.761, 57.1727, 0, ''), +(17876, 101, 2658.49, 677.166, 57.1727, 0, ''), +(17876, 102, 2659.28, 667.117, 57.1727, 0, ''), +(17876, 103, 2649.71, 665.387, 57.1727, 0, ''), +(17876, 104, 2634.79, 672.964, 54.4577, 0, 'outside inn'), +(17876, 105, 2635.06, 673.892, 54.4713, 30000, 'getting ready'), +(17876, 106, 2634.79, 672.964, 54.4577, 60000, 'when all dead and meet Taretha'), +(17876, 107, 2631.72, 665.629, 54.2923, 0, 'run off'), +(17876, 108, 2647.40, 640.530, 55.7634, 0, ''); +DELETE FROM script_waypoint WHERE entry=18887; +INSERT INTO script_waypoint VALUES +(18887, 0, 2650.06, 665.473, 61.9305, 0, ''), +(18887, 1, 2652.44, 670.761, 61.9370, 0, ''), +(18887, 2, 2655.96, 676.913, 57.1725, 0, ''), +(18887, 3, 2659.40, 677.317, 57.1725, 0, ''), +(18887, 4, 2651.75, 664.482, 57.1725, 0, ''), +(18887, 5, 2647.49, 666.595, 57.0824, 0, ''), +(18887, 6, 2644.37, 668.167, 55.4182, 0, ''), +(18887, 7, 2640.96, 669.890, 54.7567, 60000, ''); +DELETE FROM script_waypoint WHERE entry=10096; +INSERT INTO script_waypoint VALUES +(10096, 0, 604.802673, -191.081985, -54.058590, 0,'ring'), +(10096, 1, 604.072998, -222.106918, -52.743759, 0,'first gate'), +(10096, 2, 621.400391, -214.499054, -52.814453, 0,'hiding in corner'), +(10096, 3, 601.300781, -198.556992, -53.950256, 0,'ring'), +(10096, 4, 631.818359, -180.548126, -52.654770, 0,'second gate'), +(10096, 5, 627.390381, -201.075974, -52.692917, 0,'hiding in corner'); +DELETE FROM script_waypoint WHERE entry=9503; +INSERT INTO script_waypoint VALUES +(9503, 0, 883.294861, -188.926300, -43.703655, 0,''), +(9503, 1, 872.763550, -185.605621, -43.703655, 5000,'b1'), +(9503, 2, 867.923401, -188.006393, -43.703655, 5000,'b2'), +(9503, 3, 863.295898, -190.795212, -43.703655, 5000,'b3'), +(9503, 4, 856.139587, -194.652756, -43.703655, 5000,'b4'), +(9503, 5, 851.878906, -196.928131, -43.703655, 15000,'b5'), +(9503, 6, 877.035217, -187.048080, -43.703655, 0,''), +(9503, 7, 891.198000, -197.924000, -43.620400, 0,'home'); + +-- 2813_world_scripts +UPDATE `creature_template` SET `ScriptName` = 'boss_elder_nadox' WHERE `entry` = 29309; +UPDATE `creature_template` SET `ScriptName` = 'mob_ahnkahar_nerubian' WHERE `entry` in (30176,30178); +UPDATE `instance_template` SET `script`= 'instance_ahnkahet' WHERE `map` = 619; + +-- 2813_world_SD2_scripts +DELETE FROM script_waypoint WHERE entry=12423; +INSERT INTO script_waypoint VALUES +(12423, 0, -9509.72, -147.03, 58.74, 0, ''), +(12423, 1, -9517.07, -172.82, 58.66, 0, ''); +DELETE FROM script_waypoint WHERE entry=12427; +INSERT INTO script_waypoint VALUES +(12427, 0, -5689.20, -456.44, 391.08, 0, ''), +(12427, 1, -5700.37, -450.77, 393.19, 0, ''); +DELETE FROM script_waypoint WHERE entry=12428; +INSERT INTO script_waypoint VALUES +(12428, 0, 2454.09, 361.26, 31.51, 0, ''), +(12428, 1, 2472.03, 378.08, 30.98, 0, ''); +DELETE FROM script_waypoint WHERE entry=12429; +INSERT INTO script_waypoint VALUES +(12429, 0, 9654.19, 909.58, 1272.11, 0, ''), +(12429, 1, 9642.53, 908.11, 1269.10, 0, ''); +DELETE FROM script_waypoint WHERE entry=12430; +INSERT INTO script_waypoint VALUES +(12430, 0, 161.65, -4779.34, 14.64, 0, ''), +(12430, 1, 140.71, -4813.56, 17.04, 0, ''); +UPDATE script_texts SET emote=20 WHERE entry=-1000231; +UPDATE script_texts SET emote=4 WHERE entry IN (-1000232, -1000256, -1000258, -1000260, -1000262); + +-- 2814_world_spell_linked_spell +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (32386, 32388, 32389, 32390, 32391); +INSERT INTO `spell_linked_spell` VALUES (32386, 60448, 2, 'Shadow Embrace Rank1'); +INSERT INTO `spell_linked_spell` VALUES (32388, 60465, 2, 'Shadow Embrace Rank2'); +INSERT INTO `spell_linked_spell` VALUES (32389, 60466, 2, 'Shadow Embrace Rank3'); +INSERT INTO `spell_linked_spell` VALUES (32390, 60467, 2, 'Shadow Embrace Rank4'); +INSERT INTO `spell_linked_spell` VALUES (32391, 60468, 2, 'Shadow Embrace Rank5'); + +-- 2828_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (16544, 16086); +INSERT INTO `spell_proc_event` VALUES +(16544, 0x00, 11, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0), +(16086, 0x00, 11, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0); + +-- 2885_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (34457); +INSERT INTO `spell_proc_event` VALUES +(34457, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000002, 0.000000, 0.000000, 0); +DELETE FROM `spell_proc_event` WHERE `entry` IN (34456); +INSERT INTO `spell_proc_event` VALUES +(19615, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000002, 0.000000, 0.000000, 0); +INSERT INTO trinity_string (entry, content_default)VALUES (6616 , "Pet spells will reset for all players at login. Strongly recommend re-login!"); + +-- 2907_mangos_7705_01_world_command +DELETE FROM `command` WHERE `name` IN +('account lock','account password','chardelete','character customize','character delete','character rename','customize','lockaccount','password','rename'); +INSERT INTO `command` VALUES +('account lock',0,'Syntax: .account lock [on|off]\r\n\r\nAllow login from account only from current used IP or remove this requirement.'), +('account password',0,'Syntax: .account password $old_password $new_password $new_password\r\n\r\nChange your account password.'), +('character customize',2,'Syntax: .character customize [$name]\r\n\r\nMark selected in game or by $name in command character for customize at next login.'), +('character delete',4,'Syntax: .character delete $name\r\n\r\nDelete character $name.'), +('character rename',2,'Syntax: .character rename [$name]\r\n\r\nMark selected in game or by $name in command character for rename at next login.'); + +-- 2907_mangos_7706_01_world_command +DELETE FROM `command` WHERE `name` IN ('plimit','server plimit'); +INSERT INTO `command` VALUES +('server plimit',3,'Syntax: .server plimit [#num|-1|-2|-3|reset|player|moderator|gamemaster|administrator]\r\n\r\nWithout arg show current player amount and security level limitations for login to server, with arg set player linit ($num > 0) or securiti limitation ($num < 0 or security leme name. With `reset` sets player limit to the one in the config file'); + +-- 2923_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (47569, 47570); +INSERT INTO `spell_proc_event` VALUES +(47569, 0x00, 6, 0x00004000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 50.000000, 0), +(47570, 0x00, 6, 0x00004000, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 100.000000, 0); + +-- 2932_mangos_7714_01_world_command +DELETE FROM `command` WHERE `name` IN ('character level'); +INSERT INTO `command` VALUES +('character level',3,'Syntax: .character level [$playername] [#level]\r\n\r\nSet the level of character with $playername (or the selected if not name provided) by #numberoflevels Or +1 if no #numberoflevels provided). If #numberoflevels is omitted, the level will be increase by 1. If #numberoflevels is 0, the same level will be restarted. If no character is selected and name not provided, increase your level. Command can be used for offline character. All stats and dependent values recalculated. At level decrease talents can be reset if need. Also at level decrease equipped items with greater level requirement can be lost.'); + +-- 2938_mangos_7720_01_world_trinity_string +DELETE FROM trinity_string WHERE entry IN(557,558,559); +INSERT INTO trinity_string VALUES +(557,'%s level up you to (%i)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(558,'%s level down you to (%i)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(559,'%s reset your level progress.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +-- 2949_world_creature_template +INSERT INTO creature_template (entry, spell1, spell2, spell3, spell4) VALUES +(15352, 36213, 0, 0, 0), # Greater Earth Elemental +(15438, 57984, 12470, 13376, 0), # Greater Fire Elemental +(29264, 58861, 58875, 58867, 58857), # Spirit Wolf +(510, 31707, 33395, 0, 0) # Water Elemental +ON DUPLICATE KEY UPDATE +spell1 = VALUES(spell1), +spell2 = VALUES(spell2), +spell3 = VALUES(spell3), +spell4 = VALUES(spell4); + +-- 2955_world_scripts_naxx +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +(-28169, 28206, 0, 'Mutating Injection - Mutagen Explosion'), +(-28169, 28240, 0, 'Mutating Injection - Poison Cloud'); +UPDATE creature_template SET spell1 = 28158, spell2 = 54362, flags_extra = 128 WHERE entry = 16363; +UPDATE creature_template SET scriptname = 'boss_grobbulus' WHERE entry = 15931; + +-- 2963_world_spell_proc_event +DELETE FROM `spell_proc_event` WHERE `entry` IN (20911, 25899); +-- Blessing of sanctuary +INSERT INTO `spell_proc_event` VALUES +(20911, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000070, 0.000000, 0.000000, 0), +(25899, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000070, 0.000000, 0.000000, 0); +DELETE FROM `spell_required` WHERE `spell_id` IN (25899); +INSERT INTO spell_required VALUES (25899, 20911); + +-- 2986_TC1_world +-- Kil'jaeden +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 45909; +DELETE FROM `spell_script_target` WHERE `entry` IN (46589, 45839); +INSERT INTO `spell_script_target` () VALUES (46589, 1, 30598); +INSERT INTO `spell_script_target` () VALUES (46589, 1, 30614); +INSERT INTO `spell_script_target` () VALUES (45839, 1, 25653); + +DELETE FROM `creature_template` WHERE entry in (30598, 30614); +INSERT INTO `creature_template` () VALUES +(30598, 0, 4449, 0, 4449, 0, 'Spike Target', '', '', 70, 70, 1, 1, 0, 0, 0, 14, 14, 0, 1, 1, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 0, 0, 0, 1, 0, 0, 128, ''), +(30614, 0, 4449, 0, 4449, 0, 'Spike Target 2', '', '', 70, 70, 1, 1, 0, 0, 0, 14, 14, 0, 1, 1, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 0, 0, 0, 1, 0, 0, 128, ''); + +UPDATE `creature_template` SET `flags_extra` = 128 WHERE `entry` IN (30614, 30598, 25735); +UPDATE `creature_template` SET `minlevel` = 73, `maxlevel` = 73, unit_flags = 33554432, minhealth=5000000, maxhealth=5000000 WHERE entry IN (26046, 25319); +UPDATE `creature_template` SET `minlevel` = 70, `unit_flags` = 33554432 WHERE entry = 26046; +UPDATE `creature_template` SET `minlevel` =70, `maxlevel` = 70, `unit_flags` = 33554432, spell1 = 45848, spell2 = 45862, spell3 = 45860, spell4 = 45856, minhealth = 5000000, maxhealth=5000000 WHERE entry=25653; +UPDATE `creature_template` SET `minlevel` = 70, `maxlevel` = 70, `minhealth` = 20000, maxhealth = 20000 WHERE entry = 25502; +UPDATE `creature_template` SET `minhealth` = 12600000, maxhealth = 12600000, minmana = 2000000, maxmana = 2000000 WHERE entry = 25315; +UPDATE `creature_template` SET `minhealth` = 110000, maxhealth = 110000, minmana = 100000, maxmana = 100000 WHERE entry =25708; +UPDATE `creature_template` SET `minlevel` = 73, `maxlevel` = 73 WHERE entry = 25735; + +DELETE FROM creature WHERE id IN (25319, 25588, 25608); +INSERT INTO creature (id, map, spawnMask, modelid, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, spawndist, currentwaypoint, curhealth, curmana, DeathState, MovementType) VALUES +(25319, 580, 1, 0, 0, 1701.7, 635.515, 72.2884, 4.65461, 25, 0, 0, 1, 0, 0, 0), +(25608, 580, 1, 0, 0, 1698.9, 627.877, 27.6233, 0.034907, 604800, 0, 0, 1, 0, 0, 0); + +DELETE FROM gameobject WHERE id=188415; +INSERT INTO gameobject (id, map, spawnMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state) VALUES +(188415, 580, 1, 1653.12, 635.41, 28.0932, 0.0977725, 0, 0, 0.0488668, 0.998805, 25, 0, 1), +(188415, 580, 1, 1704.14, 583.591, 28.1696, 1.59003, 0, 0, 0.713874, 0.700274, 25, 0, 1), +(188415, 580, 1, 1745.68, 621.823, 28.0505, 2.93777, 0, 0, 0.994812, 0.101733, 25, 0, 1), +(188415, 580, 1, 1694.48, 674.29, 28.0502, 4.86985, 0, 0, 0.649302, -0.760531, 25, 0, 1); +UPDATE `gameobject_template` SET `type` = 1 WHERE `entry` = 188415; + +-- M'uru +UPDATE `creature_template` SET `modelid_A` = 23842 WHERE `entry` = 25744; +UPDATE `creature_template` SET `flags_extra` = 128 WHERE entry IN (25855, 25770); +UPDATE `creature_template` SET `spell1` = 46262, flags_extra = 128, scriptname = '' WHERE entry = 25879; + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (46242, 46228, 46228, 46262); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES (46242, 46247, 0, 'Black Hole Visual (Birth)'); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES (46228, 46235, 0, 'Black Hole Visual (Grown)'); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES (46228, -46247, 0, 'Black Hole Visual (Grown)'); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES (46262, 46265, 0, 'Void Zone Visual'); + +DELETE FROM `spell_script_target` WHERE `entry` IN (45976, 46177); +INSERT INTO `spell_script_target` VALUES (45976, 1, 25770); +INSERT INTO `spell_script_target` VALUES (46177, 1, 25770); + +-- EAI for Berserks FROM Megamage +DELETE FROM `creature_ai_scripts` WHERE `creature_id` = 25798; +INSERT INTO `creature_ai_scripts` (`id`, `creature_id`, `event_type`, `event_flags`,`event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`, `event_chance`, `event_inverse_phase_mask`) VALUES +(2579800, 25798, 11, 0, 0*1000, 0*1000, 0*1000, 0*1000, 11, 45769, 0, 0, 20, 1, 0, 0, 21, 1, 0, 0,"Shadowsword Berserker - Sunwell Radiance", 100, 0), +(2579801, 25798, 0, 1, 10*1000, 12*1000, 10*1000, 15*1000, 11, 46160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowsword Berserker - Cast Flurry', 70, 0), +(2579802, 25798, 1, 0, 180*1000, 180*1000, 0*1000, 0*1000, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowsword Berserker - 180s OOC => Evade', 100, 0); + +-- Brutallus +UPDATE `creature_template` SET `unit_flags` = 0 WHERE `entry` = 24882; + +-- Felmyst +UPDATE `creature_template` SET `modelid_H` = 22838 WHERE `entry` = 25038; +DELETE FROM `script_texts` WHERE `entry` BETWEEN '-1580109' and '-1580036'; +INSERT INTO `script_texts` (`entry`, `content_default`, `sound`, `type`, `comment`) VALUES +(-1580036, 'Glory to Kil\'jaeden! Death to all who oppose!', 12477, 1, 'felmyst - YELL_BIRTH'), +(-1580037, 'I kill for the master!', 12480, 1, 'felmyst - YELL_KILL1'), +(-1580038, 'The end has come!', 12481, 1, 'felmyst - YELL_KILL2'), +(-1580039, 'Choke on your final breath!', 12478, 1, 'felmyst - YELL_BREATH'), +(-1580040, 'I am stronger than ever before!', 12479, 1, 'felmyst- YELL_TAKEOFF'), +(-1580041, 'No more hesitation! Your fates are written!', 12482, 1, 'felmyst - YELL_BERSERK'), +(-1580042, 'Kil\'jaeden... will... prevail...', 12483, 1, 'felmyst - YELL_DEATH'), +(-1580043, 'Madrigosa deserved a far better fate. You did what had to be done, but this battle is far from over.', 12439, 1, 'felmyst - YELL_KALECGOS'), +(-1580044, 'Fire to the aid of shadow!', 12489, 1, 'eredar - YELL_CANFLAGRATION'), +(-1580045, 'Sacrolash!', 12492, 1, 'eredar - YELL_SISTER_SACROLASH_DEAD'), +(-1580046, 'Fire consume.', 12490, 1, 'eredar - YELL_ALY_KILL_1'), +(-1580047, 'Ed-ir Halach!', 12491, 1, 'eredar - YELL_ALY_KILL_2'), +(-1580048, 'De-ek Anur!', 12494, 1, 'eredar - YELL_ALY_DEAD'), +(-1580049, 'Your luck has run its curse!', 12493, 1, 'eredar - YELL_BERSERK'), +(-1580050, 'Shadow to the aid of fire!', 12485, 1, 'eredar - YELL_SHADOW_NOVA'), +(-1580051, 'Alythess! Your fire burns within me!', 12488, 1, 'eredar - YELL_SISTER_ALYTHESS_DEAD'), +(-1580052, 'Shadow engulf.', 12486, 1, 'eredar - YELL_SAC_KILL_1'), +(-1580053, 'Ee-nok Kryul!', 12487, 1, 'eredar - YELL_SAC_KILL_2'), +(-1580054, 'I... fade.', 0, 1, 'eredar - YELL_SAC_DEAD'), +(-1580055, 'Time is a luxury you no longer possess!', 0, 1, 'eredar - YELL_ENRAGE'), +(-1580056, 'Misery...', 12484, 1, 'eredar - YELL_INTRO_SAC_1'), +(-1580057, 'Depravity...', 0, 1, 'eredar - YELL_INTRO_ALY_2'), +(-1580058, 'Confusion...', 0, 1, 'eredar - YELL_INTRO_SAC_3'), +(-1580059, 'Hatred...', 0, 1, 'eredar - YELL_INTRO_ALY_4'), +(-1580060, 'Mistrust...', 0, 1, 'eredar - YELL_INTRO_SAC_5'), +(-1580061, 'Chaos...', 0, 1, 'eredar - YELL_INTRO_ALY_6'), +(-1580062, 'These are the hallmarks...', 0, 1, 'eredar - YELL_INTRO_SAC_7'), +(-1580063, 'These are the pillars...', 0, 1, 'eredar - YELL_INTRO_ALY_8'), +(-1580064, 'directs Shadow Nova at $N', 0, 3, 'eredar - emote shadow nova'), +(-1580065, 'directs Conflagration at $N', 0, 3, 'eredar - emote conflagration'), +(-1580066, 'All my plans have led to this!', 12495, 1, 'KJ - SAY_KJ_OFFCOMBAT1'), +(-1580067, 'Stay on task! Do not waste tim!', 12496, 1, 'KJ - SAY_KJ_OFFCOMBAT2'), +(-1580068, 'I have waited long enough!', 12497, 1, 'KJ - SAY_KJ_OFFCOMBAT3'), +(-1580069, 'Fail me and suffer for eternity!', 12498, 1, 'KJ - SAY_KJ_OFFCOMBAT4'), +(-1580070, 'Drain the girl! Drain her power until there is nothing but a vacant shell!', 12499, 1, 'KJ - SAY_KJ_OFFCOMBAT5'), +(-1580071, 'The expendible have perished... So be it! Now I shall succeed where Sargeras could not! I will bleed this wretched world and secure my place as the true master of the Burning Legion. The end has come! Let the unraveling of this world commence!', 12500, 1, 'KJ - SAY_KJ_EMERGE'), +(-1580072, 'Another step towards destruction!', 12501, 1, 'KJ - SAY_KJ_SLAY1'), +(-1580073, 'Anak-ky\'ri!', 12502, 1, 'KJ - SAY_KJ_SLAY2'), +(-1580074, 'Who can you trust?', 12503, 1, 'KJ - SAY_KJ_REFLECTION1'), +(-1580075, 'The enemy is among you.', 12504, 1, 'KJ - SAY_KJ_REFLECTION2'), +(-1580076, 'Chaos!', 12505, 1, 'KJ - SAY_KJ_DARKNESS1'), +(-1580077, 'Destruction!', 12506, 1, 'KJ - SAY_KJ_DARKNESS2'), +(-1580078, 'Oblivion!', 12507, 1, 'KJ - SAY_KJ_DARKNESS3'), +(-1580079, 'I will not be denied! This world shall fall!', 12508, 1, 'KJ - SAY_KJ_PHASE3'), +(-1580080, 'Do not harbor false hope. You cannot win!', 12509, 1, 'KJ - SAY_KJ_PHASE4'), +(-1580081, 'Aggghh! The powers of the Sunwell... turned... against me! What have you done? WHAT HAVE YOU DONE?', 12510, 1, 'KJ - SAY_KJ_PHASE5'), +(-1580082, 'Anveena, you must awaken, this world needs you!', 12445, 1, 'KJ - SAY_KALECGOS_AWAKEN'), +(-1580083, 'I serve only the Master now.', 12511, 1, 'KJ - SAY_ANVEENA_IMPRISONED'), +(-1580084, 'You must let go! You must become what you were always meant to be! The time is now, Anveena!', 12446, 1, 'KJ - SAY_KALECGOS_LETGO'), +(-1580085, 'But I\'m... lost... I cannot find my way back!', 12512, 1, 'KJ - SAY_ANVEENA_LOST'), +(-1580086, 'Anveena, I love you! Focus on my voice, come back for me now! Only you can cleanse the Sunwell!', 12447, 1, 'KJ - SAY_KALECGOS_FOCUS'), +(-1580087, 'Kalec... Kalec?', 12513, 1, 'KJ - SAY_ANVEENA_KALEC'), +(-1580088, 'Yes, Anveena! Let fate embrace you now!', 12448, 1, 'KJ - SAY_KALECGOS_FATE'), +(-1580089, 'The nightmare is over, the spell is broken! Goodbye, Kalec, my love!', 12514, 1, 'KJ - SAY_ANVEENA_GOODBYE'), +(-1580090, 'Goodbye, Anveena, my love. Few will remember your name, yet this day you change the course of destiny. What was once corrupt is now pure. Heroes, do not let her sacrifice be in vain.', 12450, 1, 'KJ - SAY_KALECGOS_GOODBYE'), +(-1580091, 'Strike now, heroes, while he is weakened! Vanquish the Deceiver!', 12449, 1, 'KJ - SAY_KALECGOS_ENCOURAGE'), +(-1580092, 'You are not alone. The Blue Dragonflight shall help you vanquish the Deceiver.', 12438, 1, 'KJ - SAY_KALECGOS_JOIN'), +(-1580093, 'Nooooooooooooo!', 12527, 1, 'KJ - SAY_KJ_DEATH'), +(-1580094, 'begins to channel dark energy', 0, 3, 'KJ - EMOTE_KJ_DARKNESS'), +(-1580095, 'I will channel my power into the orbs, be ready!', 12440, 1, 'KJ - SAY_KALEC_ORB_READY1'), +(-1580096, 'I have empowered another orb! Use it quickly!', 12441, 1, 'KJ - SAY_KALEC_ORB_READY2'), +(-1580097, 'Another orb is ready! Make haste!', 12442, 1, 'KJ - SAY_KALEC_ORB_READY3'), +(-1580098, 'I have channeled all I can! The power is in your hands!', 12443, 1, 'KJ - SAY_KALEC_ORB_READY4'), +(-1580099, 'Mortal heroes, your victory here today was foretold long ago. My brother\'s anguished cry of defeat will echo across the universe, bringing renewed hope to all those who still stand against the Burning Crusade.', 12515, 0, 'prophet velen - SAY1'), +(-1580100, 'As the Legion\'s final defeat draws ever-nearer, stand proud in the knowledge that you have saved worlds without number from the flame. Just as this day marks an ending, so too does it herald a new beginning...', 12516, 0, 'prophet velen - SAY2'), -- van mégegy hang 12517 ami ehhez tartozik +(-1580101, 'The creature Entropius, whom you were forced to destroy, was once the noble naaru, M\'uru. In life, M\'uru channeled vast energies of LIGHT and HOPE. For a time, a misguided few sought to steal those energies...', 12518, 0, 'prophet velen - SAY3'), +(-1580102, 'Then fortunate it is, that I have reclaimed the noble naaru\'s spark from where it fell! Where faith dwells, hope is never lost, young blood elf.', 12519, 0, 'prophet velen - SAY4'), +(-1580103, 'Gaze now, mortals - upon the HEART OF M\'URU! Unblemished. Bathed by the light of Creation - just as it was at the Dawn.', 12520, 0, 'prophet velen - SAY5'), +(-1580104, 'In time, the light and hope held within - will rebirth more than this mere fount of power... Mayhap, they will rebirth the soul of a nation.', 12521, 0, 'prophet velen - SAY6'), +(-1580105, 'Salvation, young one. It waits for us all.', 12522, 0, 'prophet velen - SAY7'), +(-1580106, 'Farewell...', 12523, 0, 'prophet velen - SAY8'), +(-1580107, 'Our arrogance was unpardonable. We damned one of the most noble beings of all. We may never atone for this sin.', 12524, 0, 'lady liadrinn - SAY1'), +(-1580108, 'Can it be?', 12525, 0, 'lady liadrinn - SAY2'), +(-1580109, 'Blessed ancestors! I feel it... so much love... so much grace... there are... no words... impossible to describe...', 12525, 0, 'lady liadrinn - SAY3'); + +-- Kil'jaeden script +UPDATE `creature_template` SET `ScriptName`='boss_kiljaeden' WHERE `entry`=25315; +UPDATE `creature_template` SET `ScriptName`='boss_kalecgosKJ' WHERE `entry`=25319; +UPDATE `creature_template` SET `ScriptName`='mob_kiljaeden_controller' WHERE `entry`=25608; +UPDATE `creature_template` SET `ScriptName`='mob_hand_of_the_deceiver' WHERE `entry`=25588; +UPDATE `creature_template` SET `ScriptName`='mob_felfire_portal' WHERE `entry`=25603; +UPDATE `creature_template` SET `ScriptName`='mob_volatile_felfire_fiend' WHERE `entry`=25598; +UPDATE `creature_template` SET `ScriptName`='mob_armageddon' WHERE `entry`=25735; +UPDATE `creature_template` SET `ScriptName`='mob_shield_orb' WHERE `entry`=25502; +UPDATE `creature_template` SET `ScriptName`='mob_sinster_reflection' WHERE `entry`=25708; +UPDATE `gameobject_template` SET `ScriptName`='go_orb_of_the_blue_flight' WHERE `entry`=188415; + +-- M'uru& Entropius +UPDATE `creature_template` SET `ScriptName`='npc_void_sentinel' WHERE `entry`=25772; +UPDATE `creature_template` SET `ScriptName`='npc_dark_fiend' WHERE `entry`=25744; +UPDATE `creature_template` SET `ScriptName`='boss_muru' WHERE `entry`=25741; +UPDATE `creature_template` SET `ScriptName`='boss_entropius' WHERE `entry`=25840; +UPDATE `creature_template` SET `ScriptName`='npc_muru_portal' WHERE `entry`=25770; +UPDATE `creature_template` SET `AIName`='EventAI' WHERE `entry`=25798; + +-- 2996_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` IN (750,751); +INSERT INTO `trinity_string` VALUES +(750,'Not enough players. This game will close in %u mins.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(751,'Not enough players. This game will close in %u seconds.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 1200 AND 1232; +INSERT INTO `trinity_string` VALUES +(1200, 'You try to view cinemitic %u but it doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1201, 'You try to view movie %u but it doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 1300 AND 1332; +INSERT INTO `trinity_string` VALUES +(1300, 'Alliance', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1301, 'Horde', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1302, '%s was destroyed by the %s!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1303, 'The %s is under attack! If left unchecked, the %s will destroy it!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1304, 'The %s was taken by the %s!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1305, 'The %s was taken by the %s!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1306, 'The %s was taken by the %s!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1307, 'The %s is under attack! If left unchecked, the %s will capture it!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1308, 'The %s has taken the %s! Its supplies will now be used for reinforcements!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1309, 'Irondeep Mine', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1310, 'Coldtooth Mine', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1311, 'Stormpike Aid Station', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1312, 'Dun Baldar South Bunker', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1313, 'Dun Baldar North Bunker', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1314, 'Stormpike Graveyard', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1315, 'Icewing Bunker', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1316, 'Stonehearth Graveyard', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1317, 'Stonehearth Bunker', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1318, 'Snowfall Graveyard', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1319, 'Iceblood Tower', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1320, 'Iceblood Graveyard', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1321, 'Tower Point', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1322, 'Frostwolf Graveyard', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1323, 'East Frostwolf Tower', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1324, 'West Frostwolf Tower', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1325, 'Frostwolf Relief Hut', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1326, 'The Battle for Alterac Valley begins in 1 minute.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1327, 'The Battle for Alterac Valley begins in 30 seconds. Prepare yourselves!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1328, 'The Battle for Alterac Valley has begun!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1329, 'The Alliance Team is running out of reinforcements!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1330, 'The Horde Team is running out of reinforcements!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1331, 'The Frostwolf General is Dead!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1332, 'The Stormpike General is Dead!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- 2997_world_trinity_string +DELETE FROM `trinity_string` WHERE `entry` = 5010; +INSERT INTO `trinity_string` VALUES +(5010,'linkGUID: %u, Entry: %u (%s)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
\ No newline at end of file diff --git a/sql/updates/2.4.3_updates/CMakeLists.txt b/sql/updates/2.4.3_updates/CMakeLists.txt index fc28dd652cb..229a6de626c 100644 --- a/sql/updates/2.4.3_updates/CMakeLists.txt +++ b/sql/updates/2.4.3_updates/CMakeLists.txt @@ -2,4 +2,4 @@ FILE(GLOB _SQL_243 *.sql) INSTALL(FILES ${_SQL_243} -DESTINATION share/trinity/sql/updates/2.4.3_updates) +DESTINATION share/trinity/sql/updates/2.4.3_updates)
\ No newline at end of file diff --git a/sql/updates/1026_mangos_7113_01_characters_character_achievement_progress.sql b/sql/updates/3.0.9_old/1026_mangos_7113_01_characters_character_achievement_progress.sql index 6f125a6a2e6..6f125a6a2e6 100644 --- a/sql/updates/1026_mangos_7113_01_characters_character_achievement_progress.sql +++ b/sql/updates/3.0.9_old/1026_mangos_7113_01_characters_character_achievement_progress.sql diff --git a/sql/updates/1028_mangos_7141_01_world_instance_template.sql b/sql/updates/3.0.9_old/1028_mangos_7141_01_world_instance_template.sql index f86b9517a98..f86b9517a98 100644 --- a/sql/updates/1028_mangos_7141_01_world_instance_template.sql +++ b/sql/updates/3.0.9_old/1028_mangos_7141_01_world_instance_template.sql diff --git a/sql/updates/1028_mangos_7147_01_world_creature_template.sql b/sql/updates/3.0.9_old/1028_mangos_7147_01_world_creature_template.sql index 385ec769156..385ec769156 100644 --- a/sql/updates/1028_mangos_7147_01_world_creature_template.sql +++ b/sql/updates/3.0.9_old/1028_mangos_7147_01_world_creature_template.sql diff --git a/sql/updates/1028_mangos_7150_01_world_playercreateinfo_spell.sql b/sql/updates/3.0.9_old/1028_mangos_7150_01_world_playercreateinfo_spell.sql index 6d4a5993e58..6d4a5993e58 100644 --- a/sql/updates/1028_mangos_7150_01_world_playercreateinfo_spell.sql +++ b/sql/updates/3.0.9_old/1028_mangos_7150_01_world_playercreateinfo_spell.sql diff --git a/sql/updates/1084_mangos_7168_01_world_command.sql b/sql/updates/3.0.9_old/1084_mangos_7168_01_world_command.sql index b9df9bca12d..b9df9bca12d 100644 --- a/sql/updates/1084_mangos_7168_01_world_command.sql +++ b/sql/updates/3.0.9_old/1084_mangos_7168_01_world_command.sql diff --git a/sql/updates/1094_mangos_7193_01_world_trinity_string.sql b/sql/updates/3.0.9_old/1094_mangos_7193_01_world_trinity_string.sql index 44a390d20f6..44a390d20f6 100644 --- a/sql/updates/1094_mangos_7193_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1094_mangos_7193_01_world_trinity_string.sql diff --git a/sql/updates/1108_mangos_7196_02_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/1108_mangos_7196_02_world_spell_bonus_data.sql index 8f6fdbd1463..8f6fdbd1463 100644 --- a/sql/updates/1108_mangos_7196_02_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/1108_mangos_7196_02_world_spell_bonus_data.sql diff --git a/sql/updates/1108_mangos_7198_01_characters_characters.sql b/sql/updates/3.0.9_old/1108_mangos_7198_01_characters_characters.sql index 104a31359df..104a31359df 100644 --- a/sql/updates/1108_mangos_7198_01_characters_characters.sql +++ b/sql/updates/3.0.9_old/1108_mangos_7198_01_characters_characters.sql diff --git a/sql/updates/1108_mangos_7199_01_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/1108_mangos_7199_01_world_spell_bonus_data.sql index 89bad64d3e1..89bad64d3e1 100644 --- a/sql/updates/1108_mangos_7199_01_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/1108_mangos_7199_01_world_spell_bonus_data.sql diff --git a/sql/updates/1135_mangos_7207_01_world_creature.sql b/sql/updates/3.0.9_old/1135_mangos_7207_01_world_creature.sql index 7566ba87076..7566ba87076 100644 --- a/sql/updates/1135_mangos_7207_01_world_creature.sql +++ b/sql/updates/3.0.9_old/1135_mangos_7207_01_world_creature.sql diff --git a/sql/updates/1135_mangos_7207_02_world_gameobject.sql b/sql/updates/3.0.9_old/1135_mangos_7207_02_world_gameobject.sql index aef9f853f54..aef9f853f54 100644 --- a/sql/updates/1135_mangos_7207_02_world_gameobject.sql +++ b/sql/updates/3.0.9_old/1135_mangos_7207_02_world_gameobject.sql diff --git a/sql/updates/1135_mangos_7207_03_characters_corpse.sql b/sql/updates/3.0.9_old/1135_mangos_7207_03_characters_corpse.sql index b1fa98e2706..b1fa98e2706 100644 --- a/sql/updates/1135_mangos_7207_03_characters_corpse.sql +++ b/sql/updates/3.0.9_old/1135_mangos_7207_03_characters_corpse.sql diff --git a/sql/updates/1140_mangos_7209_01_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/1140_mangos_7209_01_world_spell_bonus_data.sql index d4863c51494..d4863c51494 100644 --- a/sql/updates/1140_mangos_7209_01_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/1140_mangos_7209_01_world_spell_bonus_data.sql diff --git a/sql/updates/1185_mangos_7214_01_world_command.sql b/sql/updates/3.0.9_old/1185_mangos_7214_01_world_command.sql index 841d538fa43..841d538fa43 100644 --- a/sql/updates/1185_mangos_7214_01_world_command.sql +++ b/sql/updates/3.0.9_old/1185_mangos_7214_01_world_command.sql diff --git a/sql/updates/1185_mangos_7214_02_world_trinity_string.sql b/sql/updates/3.0.9_old/1185_mangos_7214_02_world_trinity_string.sql index 5595e331e01..5595e331e01 100644 --- a/sql/updates/1185_mangos_7214_02_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1185_mangos_7214_02_world_trinity_string.sql diff --git a/sql/updates/1185_mangos_7214_03_world_spell_proc_event.sql b/sql/updates/3.0.9_old/1185_mangos_7214_03_world_spell_proc_event.sql index e93dcdc04a1..e93dcdc04a1 100644 --- a/sql/updates/1185_mangos_7214_03_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/1185_mangos_7214_03_world_spell_proc_event.sql diff --git a/sql/updates/1206_world_scripts.sql b/sql/updates/3.0.9_old/1206_world_scripts.sql index b35e054f57c..b35e054f57c 100644 --- a/sql/updates/1206_world_scripts.sql +++ b/sql/updates/3.0.9_old/1206_world_scripts.sql diff --git a/sql/updates/1207_world_scripts.sql b/sql/updates/3.0.9_old/1207_world_scripts.sql index 070a4af8597..070a4af8597 100644 --- a/sql/updates/1207_world_scripts.sql +++ b/sql/updates/3.0.9_old/1207_world_scripts.sql diff --git a/sql/updates/1237_mangos_7230_01_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/1237_mangos_7230_01_world_spell_bonus_data.sql index 4b12bf6c546..4b12bf6c546 100644 --- a/sql/updates/1237_mangos_7230_01_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/1237_mangos_7230_01_world_spell_bonus_data.sql diff --git a/sql/updates/1248_mangos_7235_01_world_command.sql b/sql/updates/3.0.9_old/1248_mangos_7235_01_world_command.sql index 0a28f49fc6e..0a28f49fc6e 100644 --- a/sql/updates/1248_mangos_7235_01_world_command.sql +++ b/sql/updates/3.0.9_old/1248_mangos_7235_01_world_command.sql diff --git a/sql/updates/1288_mangos_7242_01_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/1288_mangos_7242_01_world_spell_bonus_data.sql index 62ea0ef7771..62ea0ef7771 100644 --- a/sql/updates/1288_mangos_7242_01_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/1288_mangos_7242_01_world_spell_bonus_data.sql diff --git a/sql/updates/1293_mangos_7249_01_world_spell_proc_event.sql b/sql/updates/3.0.9_old/1293_mangos_7249_01_world_spell_proc_event.sql index dc4bab32473..dc4bab32473 100644 --- a/sql/updates/1293_mangos_7249_01_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/1293_mangos_7249_01_world_spell_proc_event.sql diff --git a/sql/updates/1296_mangos_7252_01_world_command.sql b/sql/updates/3.0.9_old/1296_mangos_7252_01_world_command.sql index ffbdda8cfc0..ffbdda8cfc0 100644 --- a/sql/updates/1296_mangos_7252_01_world_command.sql +++ b/sql/updates/3.0.9_old/1296_mangos_7252_01_world_command.sql diff --git a/sql/updates/1296_mangos_7252_02_world_trinity_string.sql b/sql/updates/3.0.9_old/1296_mangos_7252_02_world_trinity_string.sql index 021508502b9..021508502b9 100644 --- a/sql/updates/1296_mangos_7252_02_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1296_mangos_7252_02_world_trinity_string.sql diff --git a/sql/updates/1299_mangos_7255_01_characters_characters.sql b/sql/updates/3.0.9_old/1299_mangos_7255_01_characters_characters.sql index 236339bd5a3..236339bd5a3 100644 --- a/sql/updates/1299_mangos_7255_01_characters_characters.sql +++ b/sql/updates/3.0.9_old/1299_mangos_7255_01_characters_characters.sql diff --git a/sql/updates/1307_world.sql b/sql/updates/3.0.9_old/1307_world.sql index ec7c218c0a1..ec7c218c0a1 100644 --- a/sql/updates/1307_world.sql +++ b/sql/updates/3.0.9_old/1307_world.sql diff --git a/sql/updates/1312_world.sql b/sql/updates/3.0.9_old/1312_world.sql index 01a27d0fa48..01a27d0fa48 100644 --- a/sql/updates/1312_world.sql +++ b/sql/updates/3.0.9_old/1312_world.sql diff --git a/sql/updates/1327_world.sql b/sql/updates/3.0.9_old/1327_world.sql index e7925102863..e7925102863 100644 --- a/sql/updates/1327_world.sql +++ b/sql/updates/3.0.9_old/1327_world.sql diff --git a/sql/updates/1350_world_scripts.sql b/sql/updates/3.0.9_old/1350_world_scripts.sql index 193c03394a6..193c03394a6 100644 --- a/sql/updates/1350_world_scripts.sql +++ b/sql/updates/3.0.9_old/1350_world_scripts.sql diff --git a/sql/updates/1351_world.sql b/sql/updates/3.0.9_old/1351_world.sql index a3b797f8a4f..a3b797f8a4f 100644 --- a/sql/updates/1351_world.sql +++ b/sql/updates/3.0.9_old/1351_world.sql diff --git a/sql/updates/1396_mangos_7267_01_characters_auctionhouse.sql b/sql/updates/3.0.9_old/1396_mangos_7267_01_characters_auctionhouse.sql index 7f9e9758946..7f9e9758946 100644 --- a/sql/updates/1396_mangos_7267_01_characters_auctionhouse.sql +++ b/sql/updates/3.0.9_old/1396_mangos_7267_01_characters_auctionhouse.sql diff --git a/sql/updates/1414_world_scripts.sql b/sql/updates/3.0.9_old/1414_world_scripts.sql index 3ee9245bc51..3ee9245bc51 100644 --- a/sql/updates/1414_world_scripts.sql +++ b/sql/updates/3.0.9_old/1414_world_scripts.sql diff --git a/sql/updates/1423_mangos_7290_01_world_command.sql b/sql/updates/3.0.9_old/1423_mangos_7290_01_world_command.sql index ededbe1f468..ededbe1f468 100644 --- a/sql/updates/1423_mangos_7290_01_world_command.sql +++ b/sql/updates/3.0.9_old/1423_mangos_7290_01_world_command.sql diff --git a/sql/updates/1426_mangos_7292_01_world_points_of_interest.sql b/sql/updates/3.0.9_old/1426_mangos_7292_01_world_points_of_interest.sql index be997458488..be997458488 100644 --- a/sql/updates/1426_mangos_7292_01_world_points_of_interest.sql +++ b/sql/updates/3.0.9_old/1426_mangos_7292_01_world_points_of_interest.sql diff --git a/sql/updates/1426_mangos_7292_02_world_locales_points_of_interest.sql b/sql/updates/3.0.9_old/1426_mangos_7292_02_world_locales_points_of_interest.sql index 135fe1ce4d2..135fe1ce4d2 100644 --- a/sql/updates/1426_mangos_7292_02_world_locales_points_of_interest.sql +++ b/sql/updates/3.0.9_old/1426_mangos_7292_02_world_locales_points_of_interest.sql diff --git a/sql/updates/1463_mangos_7303_01_world_pools.sql b/sql/updates/3.0.9_old/1463_mangos_7303_01_world_pools.sql index 39e45679dff..39e45679dff 100644 --- a/sql/updates/1463_mangos_7303_01_world_pools.sql +++ b/sql/updates/3.0.9_old/1463_mangos_7303_01_world_pools.sql diff --git a/sql/updates/1470_world_scripts.sql b/sql/updates/3.0.9_old/1470_world_scripts.sql index f0f4277fe95..f0f4277fe95 100644 --- a/sql/updates/1470_world_scripts.sql +++ b/sql/updates/3.0.9_old/1470_world_scripts.sql diff --git a/sql/updates/1484_mangos_7307_01_characters_arena_team_member.sql b/sql/updates/3.0.9_old/1484_mangos_7307_01_characters_arena_team_member.sql index b58027b06e5..b58027b06e5 100644 --- a/sql/updates/1484_mangos_7307_01_characters_arena_team_member.sql +++ b/sql/updates/3.0.9_old/1484_mangos_7307_01_characters_arena_team_member.sql diff --git a/sql/updates/1495_mangos_7312_01_world_trinity_string.sql b/sql/updates/3.0.9_old/1495_mangos_7312_01_world_trinity_string.sql index ff873dc948a..ff873dc948a 100644 --- a/sql/updates/1495_mangos_7312_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1495_mangos_7312_01_world_trinity_string.sql diff --git a/sql/updates/1497_mangos_7314_01_characters_guild_rank.sql b/sql/updates/3.0.9_old/1497_mangos_7314_01_characters_guild_rank.sql index 80aa49c21c4..80aa49c21c4 100644 --- a/sql/updates/1497_mangos_7314_01_characters_guild_rank.sql +++ b/sql/updates/3.0.9_old/1497_mangos_7314_01_characters_guild_rank.sql diff --git a/sql/updates/1525_world_scripts.sql b/sql/updates/3.0.9_old/1525_world_scripts.sql index 3eb373009da..3eb373009da 100644 --- a/sql/updates/1525_world_scripts.sql +++ b/sql/updates/3.0.9_old/1525_world_scripts.sql diff --git a/sql/updates/1531_mangos_7324_01_characters_character_spell.sql b/sql/updates/3.0.9_old/1531_mangos_7324_01_characters_character_spell.sql index 10c4317b457..10c4317b457 100644 --- a/sql/updates/1531_mangos_7324_01_characters_character_spell.sql +++ b/sql/updates/3.0.9_old/1531_mangos_7324_01_characters_character_spell.sql diff --git a/sql/updates/1531_mangos_7324_02_characters_character_aura.sql b/sql/updates/3.0.9_old/1531_mangos_7324_02_characters_character_aura.sql index fd7e405f966..fd7e405f966 100644 --- a/sql/updates/1531_mangos_7324_02_characters_character_aura.sql +++ b/sql/updates/3.0.9_old/1531_mangos_7324_02_characters_character_aura.sql diff --git a/sql/updates/1555_mangos_7331_01_world_command.sql b/sql/updates/3.0.9_old/1555_mangos_7331_01_world_command.sql index b85942b71a9..b85942b71a9 100644 --- a/sql/updates/1555_mangos_7331_01_world_command.sql +++ b/sql/updates/3.0.9_old/1555_mangos_7331_01_world_command.sql diff --git a/sql/updates/1558_world.sql b/sql/updates/3.0.9_old/1558_world.sql index 667d1c998cc..667d1c998cc 100644 --- a/sql/updates/1558_world.sql +++ b/sql/updates/3.0.9_old/1558_world.sql diff --git a/sql/updates/1559_world.sql b/sql/updates/3.0.9_old/1559_world.sql index 4421d36e95c..4421d36e95c 100644 --- a/sql/updates/1559_world.sql +++ b/sql/updates/3.0.9_old/1559_world.sql diff --git a/sql/updates/1576_mangos_7332_01_world_command.sql b/sql/updates/3.0.9_old/1576_mangos_7332_01_world_command.sql index 197934db8a0..197934db8a0 100644 --- a/sql/updates/1576_mangos_7332_01_world_command.sql +++ b/sql/updates/3.0.9_old/1576_mangos_7332_01_world_command.sql diff --git a/sql/updates/1605_mangos_7349_01_world_spell_area.sql b/sql/updates/3.0.9_old/1605_mangos_7349_01_world_spell_area.sql index 1e9e560412c..1e9e560412c 100644 --- a/sql/updates/1605_mangos_7349_01_world_spell_area.sql +++ b/sql/updates/3.0.9_old/1605_mangos_7349_01_world_spell_area.sql diff --git a/sql/updates/1613_world_scripts.sql b/sql/updates/3.0.9_old/1613_world_scripts.sql index dae1af2bfe9..dae1af2bfe9 100644 --- a/sql/updates/1613_world_scripts.sql +++ b/sql/updates/3.0.9_old/1613_world_scripts.sql diff --git a/sql/updates/1614_characters_auctionhouse.sql b/sql/updates/3.0.9_old/1614_characters_auctionhouse.sql index d49ecbe2cb1..d49ecbe2cb1 100644 --- a/sql/updates/1614_characters_auctionhouse.sql +++ b/sql/updates/3.0.9_old/1614_characters_auctionhouse.sql diff --git a/sql/updates/1618_world.sql b/sql/updates/3.0.9_old/1618_world.sql index a07dd31f630..a07dd31f630 100644 --- a/sql/updates/1618_world.sql +++ b/sql/updates/3.0.9_old/1618_world.sql diff --git a/sql/updates/1646_mangos_7369_01_world_quest_template.sql b/sql/updates/3.0.9_old/1646_mangos_7369_01_world_quest_template.sql index e3146993c01..e3146993c01 100644 --- a/sql/updates/1646_mangos_7369_01_world_quest_template.sql +++ b/sql/updates/3.0.9_old/1646_mangos_7369_01_world_quest_template.sql diff --git a/sql/updates/1654_world.sql b/sql/updates/3.0.9_old/1654_world.sql index 3e45462aa7f..3e45462aa7f 100644 --- a/sql/updates/1654_world.sql +++ b/sql/updates/3.0.9_old/1654_world.sql diff --git a/sql/updates/1657_world.sql b/sql/updates/3.0.9_old/1657_world.sql index 009a4079ddb..009a4079ddb 100644 --- a/sql/updates/1657_world.sql +++ b/sql/updates/3.0.9_old/1657_world.sql diff --git a/sql/updates/1661_world.sql b/sql/updates/3.0.9_old/1661_world.sql index a1a9932ffaf..a1a9932ffaf 100644 --- a/sql/updates/1661_world.sql +++ b/sql/updates/3.0.9_old/1661_world.sql diff --git a/sql/updates/1663_mangos_7376_01_world_spell_area.sql b/sql/updates/3.0.9_old/1663_mangos_7376_01_world_spell_area.sql index 943d79d4b72..943d79d4b72 100644 --- a/sql/updates/1663_mangos_7376_01_world_spell_area.sql +++ b/sql/updates/3.0.9_old/1663_mangos_7376_01_world_spell_area.sql diff --git a/sql/updates/1688_mangos_7382_01_world_creature_template.sql b/sql/updates/3.0.9_old/1688_mangos_7382_01_world_creature_template.sql index c4813b47714..c4813b47714 100644 --- a/sql/updates/1688_mangos_7382_01_world_creature_template.sql +++ b/sql/updates/3.0.9_old/1688_mangos_7382_01_world_creature_template.sql diff --git a/sql/updates/1693_world.sql b/sql/updates/3.0.9_old/1693_world.sql index 51bf45011b7..51bf45011b7 100644 --- a/sql/updates/1693_world.sql +++ b/sql/updates/3.0.9_old/1693_world.sql diff --git a/sql/updates/1694_world.sql b/sql/updates/3.0.9_old/1694_world.sql index 4702c66ad49..4702c66ad49 100644 --- a/sql/updates/1694_world.sql +++ b/sql/updates/3.0.9_old/1694_world.sql diff --git a/sql/updates/1697_mangos_7388_01_world_trinity_string.sql b/sql/updates/3.0.9_old/1697_mangos_7388_01_world_trinity_string.sql index eefddb97e63..eefddb97e63 100644 --- a/sql/updates/1697_mangos_7388_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1697_mangos_7388_01_world_trinity_string.sql diff --git a/sql/updates/1703_world.sql b/sql/updates/3.0.9_old/1703_world.sql index f25085cf05c..f25085cf05c 100644 --- a/sql/updates/1703_world.sql +++ b/sql/updates/3.0.9_old/1703_world.sql diff --git a/sql/updates/1709_mangos_7393_01_world_game_event.sql b/sql/updates/3.0.9_old/1709_mangos_7393_01_world_game_event.sql index 5dcdaf3ce01..5dcdaf3ce01 100644 --- a/sql/updates/1709_mangos_7393_01_world_game_event.sql +++ b/sql/updates/3.0.9_old/1709_mangos_7393_01_world_game_event.sql diff --git a/sql/updates/1724_mangos_7399_01_world_trinity_string.sql b/sql/updates/3.0.9_old/1724_mangos_7399_01_world_trinity_string.sql index de0ac0ed77d..de0ac0ed77d 100644 --- a/sql/updates/1724_mangos_7399_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1724_mangos_7399_01_world_trinity_string.sql diff --git a/sql/updates/1727_world.sql b/sql/updates/3.0.9_old/1727_world.sql index 07089e166b0..07089e166b0 100644 --- a/sql/updates/1727_world.sql +++ b/sql/updates/3.0.9_old/1727_world.sql diff --git a/sql/updates/1727_world_script.sql b/sql/updates/3.0.9_old/1727_world_script.sql index b1bd036c9ca..b1bd036c9ca 100644 --- a/sql/updates/1727_world_script.sql +++ b/sql/updates/3.0.9_old/1727_world_script.sql diff --git a/sql/updates/1729_world.sql b/sql/updates/3.0.9_old/1729_world.sql index 9691e1e7059..9691e1e7059 100644 --- a/sql/updates/1729_world.sql +++ b/sql/updates/3.0.9_old/1729_world.sql diff --git a/sql/updates/1730_world.sql b/sql/updates/3.0.9_old/1730_world.sql index 7bf2425186f..7bf2425186f 100644 --- a/sql/updates/1730_world.sql +++ b/sql/updates/3.0.9_old/1730_world.sql diff --git a/sql/updates/1732_world.sql b/sql/updates/3.0.9_old/1732_world.sql index f5aae9117c9..f5aae9117c9 100644 --- a/sql/updates/1732_world.sql +++ b/sql/updates/3.0.9_old/1732_world.sql diff --git a/sql/updates/1755_world.sql b/sql/updates/3.0.9_old/1755_world.sql index bd4bb50aad2..bd4bb50aad2 100644 --- a/sql/updates/1755_world.sql +++ b/sql/updates/3.0.9_old/1755_world.sql diff --git a/sql/updates/1764_world.sql b/sql/updates/3.0.9_old/1764_world.sql index 016066430b6..016066430b6 100644 --- a/sql/updates/1764_world.sql +++ b/sql/updates/3.0.9_old/1764_world.sql diff --git a/sql/updates/1766_world.sql b/sql/updates/3.0.9_old/1766_world.sql index 7ef48e41ce2..7ef48e41ce2 100644 --- a/sql/updates/1766_world.sql +++ b/sql/updates/3.0.9_old/1766_world.sql diff --git a/sql/updates/1791_mangos_7422_01_world_trinity_string.sql b/sql/updates/3.0.9_old/1791_mangos_7422_01_world_trinity_string.sql index c1394e16ad8..c1394e16ad8 100644 --- a/sql/updates/1791_mangos_7422_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1791_mangos_7422_01_world_trinity_string.sql diff --git a/sql/updates/1814_world.sql b/sql/updates/3.0.9_old/1814_world.sql index fa403b5ac81..fa403b5ac81 100644 --- a/sql/updates/1814_world.sql +++ b/sql/updates/3.0.9_old/1814_world.sql diff --git a/sql/updates/1825_world.sql b/sql/updates/3.0.9_old/1825_world.sql index 3b40e758455..3b40e758455 100644 --- a/sql/updates/1825_world.sql +++ b/sql/updates/3.0.9_old/1825_world.sql diff --git a/sql/updates/1828_world.sql b/sql/updates/3.0.9_old/1828_world.sql index 1b80fd33559..1b80fd33559 100644 --- a/sql/updates/1828_world.sql +++ b/sql/updates/3.0.9_old/1828_world.sql diff --git a/sql/updates/1877_mangos_7439_01_world_trinity_string.sql b/sql/updates/3.0.9_old/1877_mangos_7439_01_world_trinity_string.sql index 3389ff73ef4..3389ff73ef4 100644 --- a/sql/updates/1877_mangos_7439_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1877_mangos_7439_01_world_trinity_string.sql diff --git a/sql/updates/1884_world.sql b/sql/updates/3.0.9_old/1884_world.sql index 227e9c826c3..227e9c826c3 100644 --- a/sql/updates/1884_world.sql +++ b/sql/updates/3.0.9_old/1884_world.sql diff --git a/sql/updates/1886_world.sql b/sql/updates/3.0.9_old/1886_world.sql index 8dbac159633..8dbac159633 100644 --- a/sql/updates/1886_world.sql +++ b/sql/updates/3.0.9_old/1886_world.sql diff --git a/sql/updates/1911_world.sql b/sql/updates/3.0.9_old/1911_world.sql index 9670819d7ea..9670819d7ea 100644 --- a/sql/updates/1911_world.sql +++ b/sql/updates/3.0.9_old/1911_world.sql diff --git a/sql/updates/1912_world.sql b/sql/updates/3.0.9_old/1912_world.sql index 4c8afaea8d9..4c8afaea8d9 100644 --- a/sql/updates/1912_world.sql +++ b/sql/updates/3.0.9_old/1912_world.sql diff --git a/sql/updates/1927_world.sql b/sql/updates/3.0.9_old/1927_world.sql index 8867c6cb24a..8867c6cb24a 100644 --- a/sql/updates/1927_world.sql +++ b/sql/updates/3.0.9_old/1927_world.sql diff --git a/sql/updates/1939_word.sql b/sql/updates/3.0.9_old/1939_word.sql index dec33f94d59..dec33f94d59 100644 --- a/sql/updates/1939_word.sql +++ b/sql/updates/3.0.9_old/1939_word.sql diff --git a/sql/updates/1957_word.sql b/sql/updates/3.0.9_old/1957_word.sql index acf7179f5ad..acf7179f5ad 100644 --- a/sql/updates/1957_word.sql +++ b/sql/updates/3.0.9_old/1957_word.sql diff --git a/sql/updates/1962_mangos_7472_01_world_trinity_string.sql b/sql/updates/3.0.9_old/1962_mangos_7472_01_world_trinity_string.sql index ddb575590c7..ddb575590c7 100644 --- a/sql/updates/1962_mangos_7472_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/1962_mangos_7472_01_world_trinity_string.sql diff --git a/sql/updates/2013_world.sql b/sql/updates/3.0.9_old/2013_world.sql index 1efc20f41e0..1efc20f41e0 100644 --- a/sql/updates/2013_world.sql +++ b/sql/updates/3.0.9_old/2013_world.sql diff --git a/sql/updates/2021_world.sql b/sql/updates/3.0.9_old/2021_world.sql index 38e86847763..38e86847763 100644 --- a/sql/updates/2021_world.sql +++ b/sql/updates/3.0.9_old/2021_world.sql diff --git a/sql/updates/2025_mangos_7493_01_world_command.sql b/sql/updates/3.0.9_old/2025_mangos_7493_01_world_command.sql index ec319bd2728..ec319bd2728 100644 --- a/sql/updates/2025_mangos_7493_01_world_command.sql +++ b/sql/updates/3.0.9_old/2025_mangos_7493_01_world_command.sql diff --git a/sql/updates/2025_mangos_7495_01_world_trinity_string.sql b/sql/updates/3.0.9_old/2025_mangos_7495_01_world_trinity_string.sql index 29859083cb2..29859083cb2 100644 --- a/sql/updates/2025_mangos_7495_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2025_mangos_7495_01_world_trinity_string.sql diff --git a/sql/updates/2031_realmd.sql b/sql/updates/3.0.9_old/2031_realmd.sql index fb81c0e99c8..fb81c0e99c8 100644 --- a/sql/updates/2031_realmd.sql +++ b/sql/updates/3.0.9_old/2031_realmd.sql diff --git a/sql/updates/2057_world.sql b/sql/updates/3.0.9_old/2057_world.sql index 0be46a18121..0be46a18121 100644 --- a/sql/updates/2057_world.sql +++ b/sql/updates/3.0.9_old/2057_world.sql diff --git a/sql/updates/2064_world.sql b/sql/updates/3.0.9_old/2064_world.sql index f1d3c8a9eb3..f1d3c8a9eb3 100644 --- a/sql/updates/2064_world.sql +++ b/sql/updates/3.0.9_old/2064_world.sql diff --git a/sql/updates/2080_mangos_7503_01_world_command.sql b/sql/updates/3.0.9_old/2080_mangos_7503_01_world_command.sql index 36627860a7f..36627860a7f 100644 --- a/sql/updates/2080_mangos_7503_01_world_command.sql +++ b/sql/updates/3.0.9_old/2080_mangos_7503_01_world_command.sql diff --git a/sql/updates/2131_world.sql b/sql/updates/3.0.9_old/2131_world.sql index 0eec3a3d468..0eec3a3d468 100644 --- a/sql/updates/2131_world.sql +++ b/sql/updates/3.0.9_old/2131_world.sql diff --git a/sql/updates/2138_world.sql b/sql/updates/3.0.9_old/2138_world.sql index 1d290154c33..1d290154c33 100644 --- a/sql/updates/2138_world.sql +++ b/sql/updates/3.0.9_old/2138_world.sql diff --git a/sql/updates/2139_script_waypoint.sql b/sql/updates/3.0.9_old/2139_script_waypoint.sql index 430366eafdb..430366eafdb 100644 --- a/sql/updates/2139_script_waypoint.sql +++ b/sql/updates/3.0.9_old/2139_script_waypoint.sql diff --git a/sql/updates/2139_world.sql b/sql/updates/3.0.9_old/2139_world.sql index dd7217e9bfd..dd7217e9bfd 100644 --- a/sql/updates/2139_world.sql +++ b/sql/updates/3.0.9_old/2139_world.sql diff --git a/sql/updates/2139_world_script.sql b/sql/updates/3.0.9_old/2139_world_script.sql index 3d40c497eae..3d40c497eae 100644 --- a/sql/updates/2139_world_script.sql +++ b/sql/updates/3.0.9_old/2139_world_script.sql diff --git a/sql/updates/2160_world.sql b/sql/updates/3.0.9_old/2160_world.sql index 40d2c9d1bb6..40d2c9d1bb6 100644 --- a/sql/updates/2160_world.sql +++ b/sql/updates/3.0.9_old/2160_world.sql diff --git a/sql/updates/2161_world.sql b/sql/updates/3.0.9_old/2161_world.sql index 1e45d6b33ed..1e45d6b33ed 100644 --- a/sql/updates/2161_world.sql +++ b/sql/updates/3.0.9_old/2161_world.sql diff --git a/sql/updates/2227_mangos_7544_01_world_uptime.sql b/sql/updates/3.0.9_old/2227_mangos_7544_01_world_uptime.sql index 0889d78c1a0..0889d78c1a0 100644 --- a/sql/updates/2227_mangos_7544_01_world_uptime.sql +++ b/sql/updates/3.0.9_old/2227_mangos_7544_01_world_uptime.sql diff --git a/sql/updates/2227_mangos_7546_02_realmd_uptime.sql b/sql/updates/3.0.9_old/2227_mangos_7546_02_realmd_uptime.sql index 6ba9b17deaf..6ba9b17deaf 100644 --- a/sql/updates/2227_mangos_7546_02_realmd_uptime.sql +++ b/sql/updates/3.0.9_old/2227_mangos_7546_02_realmd_uptime.sql diff --git a/sql/updates/2254_world.sql b/sql/updates/3.0.9_old/2254_world.sql index 0ff79e5ca4b..0ff79e5ca4b 100644 --- a/sql/updates/2254_world.sql +++ b/sql/updates/3.0.9_old/2254_world.sql diff --git a/sql/updates/2274_mangos_7558_01_world_trinity_string.sql b/sql/updates/3.0.9_old/2274_mangos_7558_01_world_trinity_string.sql index a7776d74e35..a7776d74e35 100644 --- a/sql/updates/2274_mangos_7558_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2274_mangos_7558_01_world_trinity_string.sql diff --git a/sql/updates/2274_mangos_7558_02_world_command.sql b/sql/updates/3.0.9_old/2274_mangos_7558_02_world_command.sql index b5e4558cada..b5e4558cada 100644 --- a/sql/updates/2274_mangos_7558_02_world_command.sql +++ b/sql/updates/3.0.9_old/2274_mangos_7558_02_world_command.sql diff --git a/sql/updates/2276_mangos_7560_01_world_gameobject_template.sql b/sql/updates/3.0.9_old/2276_mangos_7560_01_world_gameobject_template.sql index dd99f3820e4..dd99f3820e4 100644 --- a/sql/updates/2276_mangos_7560_01_world_gameobject_template.sql +++ b/sql/updates/3.0.9_old/2276_mangos_7560_01_world_gameobject_template.sql diff --git a/sql/updates/2280_mangos_7565_01_world_trinity_string.sql b/sql/updates/3.0.9_old/2280_mangos_7565_01_world_trinity_string.sql index c7ec3aaf725..c7ec3aaf725 100644 --- a/sql/updates/2280_mangos_7565_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2280_mangos_7565_01_world_trinity_string.sql diff --git a/sql/updates/2284_mangos_7568_01_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2284_mangos_7568_01_world_spell_proc_event.sql index 016b88eac27..016b88eac27 100644 --- a/sql/updates/2284_mangos_7568_01_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2284_mangos_7568_01_world_spell_proc_event.sql diff --git a/sql/updates/2296_world.sql b/sql/updates/3.0.9_old/2296_world.sql index 716d6be4b82..716d6be4b82 100644 --- a/sql/updates/2296_world.sql +++ b/sql/updates/3.0.9_old/2296_world.sql diff --git a/sql/updates/2339_world.sql b/sql/updates/3.0.9_old/2339_world.sql index 4b7f08394c2..4b7f08394c2 100644 --- a/sql/updates/2339_world.sql +++ b/sql/updates/3.0.9_old/2339_world.sql diff --git a/sql/updates/2343_world.sql b/sql/updates/3.0.9_old/2343_world.sql index 091ceb847e0..091ceb847e0 100644 --- a/sql/updates/2343_world.sql +++ b/sql/updates/3.0.9_old/2343_world.sql diff --git a/sql/updates/2346_world.sql b/sql/updates/3.0.9_old/2346_world.sql index 9bbe8d96d9a..9bbe8d96d9a 100644 --- a/sql/updates/2346_world.sql +++ b/sql/updates/3.0.9_old/2346_world.sql diff --git a/sql/updates/2412_characters.sql b/sql/updates/3.0.9_old/2412_characters.sql index e1f44c58ae3..e1f44c58ae3 100644 --- a/sql/updates/2412_characters.sql +++ b/sql/updates/3.0.9_old/2412_characters.sql diff --git a/sql/updates/2412_world.sql b/sql/updates/3.0.9_old/2412_world.sql index c31c22b3d72..c31c22b3d72 100644 --- a/sql/updates/2412_world.sql +++ b/sql/updates/3.0.9_old/2412_world.sql diff --git a/sql/updates/2432_mangos_7615_01_world_command.sql b/sql/updates/3.0.9_old/2432_mangos_7615_01_world_command.sql index 0f1d14d8520..0f1d14d8520 100644 --- a/sql/updates/2432_mangos_7615_01_world_command.sql +++ b/sql/updates/3.0.9_old/2432_mangos_7615_01_world_command.sql diff --git a/sql/updates/2433_mangos_7616_01_world_trinity_string.sql b/sql/updates/3.0.9_old/2433_mangos_7616_01_world_trinity_string.sql index d358f72391e..d358f72391e 100644 --- a/sql/updates/2433_mangos_7616_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2433_mangos_7616_01_world_trinity_string.sql diff --git a/sql/updates/2433_mangos_7616_02_world_command.sql b/sql/updates/3.0.9_old/2433_mangos_7616_02_world_command.sql index 405415ac311..405415ac311 100644 --- a/sql/updates/2433_mangos_7616_02_world_command.sql +++ b/sql/updates/3.0.9_old/2433_mangos_7616_02_world_command.sql diff --git a/sql/updates/2444_world.sql b/sql/updates/3.0.9_old/2444_world.sql index 7eec5331e50..7eec5331e50 100644 --- a/sql/updates/2444_world.sql +++ b/sql/updates/3.0.9_old/2444_world.sql diff --git a/sql/updates/2450_world.sql b/sql/updates/3.0.9_old/2450_world.sql index f5d90abfd18..f5d90abfd18 100644 --- a/sql/updates/2450_world.sql +++ b/sql/updates/3.0.9_old/2450_world.sql diff --git a/sql/updates/2479_world.sql b/sql/updates/3.0.9_old/2479_world.sql index 28bb545b72f..28bb545b72f 100644 --- a/sql/updates/2479_world.sql +++ b/sql/updates/3.0.9_old/2479_world.sql diff --git a/sql/updates/2492_mangos_7622_01_world_creature_ai_scripts.sql b/sql/updates/3.0.9_old/2492_mangos_7622_01_world_creature_ai_scripts.sql index a657e359923..a657e359923 100644 --- a/sql/updates/2492_mangos_7622_01_world_creature_ai_scripts.sql +++ b/sql/updates/3.0.9_old/2492_mangos_7622_01_world_creature_ai_scripts.sql diff --git a/sql/updates/2492_mangos_7622_02_world_creature_ai_summons.sql b/sql/updates/3.0.9_old/2492_mangos_7622_02_world_creature_ai_summons.sql index e9d6a0a48e4..e9d6a0a48e4 100644 --- a/sql/updates/2492_mangos_7622_02_world_creature_ai_summons.sql +++ b/sql/updates/3.0.9_old/2492_mangos_7622_02_world_creature_ai_summons.sql diff --git a/sql/updates/2492_mangos_7622_03_world_creature_ai_texts.sql b/sql/updates/3.0.9_old/2492_mangos_7622_03_world_creature_ai_texts.sql index cdb4995367b..cdb4995367b 100644 --- a/sql/updates/2492_mangos_7622_03_world_creature_ai_texts.sql +++ b/sql/updates/3.0.9_old/2492_mangos_7622_03_world_creature_ai_texts.sql diff --git a/sql/updates/2508_characters.sql b/sql/updates/3.0.9_old/2508_characters.sql index 33d49010b93..33d49010b93 100644 --- a/sql/updates/2508_characters.sql +++ b/sql/updates/3.0.9_old/2508_characters.sql diff --git a/sql/updates/2515_world_scripts.sql b/sql/updates/3.0.9_old/2515_world_scripts.sql index e334e241585..e334e241585 100644 --- a/sql/updates/2515_world_scripts.sql +++ b/sql/updates/3.0.9_old/2515_world_scripts.sql diff --git a/sql/updates/2522_mangos_7627_01_world_achievement_criteria_data.sql b/sql/updates/3.0.9_old/2522_mangos_7627_01_world_achievement_criteria_data.sql index da2fecf8971..da2fecf8971 100644 --- a/sql/updates/2522_mangos_7627_01_world_achievement_criteria_data.sql +++ b/sql/updates/3.0.9_old/2522_mangos_7627_01_world_achievement_criteria_data.sql diff --git a/sql/updates/2528_mangos_7633_01_world_achievement_criteria_data.sql b/sql/updates/3.0.9_old/2528_mangos_7633_01_world_achievement_criteria_data.sql index 4cc035e3169..4cc035e3169 100644 --- a/sql/updates/2528_mangos_7633_01_world_achievement_criteria_data.sql +++ b/sql/updates/3.0.9_old/2528_mangos_7633_01_world_achievement_criteria_data.sql diff --git a/sql/updates/2551_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/2551_world_spell_bonus_data.sql index 531f248a2ef..531f248a2ef 100644 --- a/sql/updates/2551_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/2551_world_spell_bonus_data.sql diff --git a/sql/updates/2559_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2559_world_spell_proc_event.sql index 50ebcb09e96..50ebcb09e96 100644 --- a/sql/updates/2559_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2559_world_spell_proc_event.sql diff --git a/sql/updates/2565_world_SD2_scripts.sql b/sql/updates/3.0.9_old/2565_world_SD2_scripts.sql index 2b744ba549b..2b744ba549b 100644 --- a/sql/updates/2565_world_SD2_scripts.sql +++ b/sql/updates/3.0.9_old/2565_world_SD2_scripts.sql diff --git a/sql/updates/2570_world_spell_linked_spell.sql b/sql/updates/3.0.9_old/2570_world_spell_linked_spell.sql index 0d87bfc80e8..0d87bfc80e8 100644 --- a/sql/updates/2570_world_spell_linked_spell.sql +++ b/sql/updates/3.0.9_old/2570_world_spell_linked_spell.sql diff --git a/sql/updates/2582_mangos_7644_01_characters_character_pet.sql b/sql/updates/3.0.9_old/2582_mangos_7644_01_characters_character_pet.sql index c9713aeb4b5..c9713aeb4b5 100644 --- a/sql/updates/2582_mangos_7644_01_characters_character_pet.sql +++ b/sql/updates/3.0.9_old/2582_mangos_7644_01_characters_character_pet.sql diff --git a/sql/updates/2586_world_spell_linked_spell.sql b/sql/updates/3.0.9_old/2586_world_spell_linked_spell.sql index 489fe7bdb75..489fe7bdb75 100644 --- a/sql/updates/2586_world_spell_linked_spell.sql +++ b/sql/updates/3.0.9_old/2586_world_spell_linked_spell.sql diff --git a/sql/updates/2591_world_spell_linked_spell.sql b/sql/updates/3.0.9_old/2591_world_spell_linked_spell.sql index 63da911d5a4..63da911d5a4 100644 --- a/sql/updates/2591_world_spell_linked_spell.sql +++ b/sql/updates/3.0.9_old/2591_world_spell_linked_spell.sql diff --git a/sql/updates/2617_world_spell_linked_spell.sql b/sql/updates/3.0.9_old/2617_world_spell_linked_spell.sql index 392893de6da..392893de6da 100644 --- a/sql/updates/2617_world_spell_linked_spell.sql +++ b/sql/updates/3.0.9_old/2617_world_spell_linked_spell.sql diff --git a/sql/updates/2629_world_spell_linked_spell.sql b/sql/updates/3.0.9_old/2629_world_spell_linked_spell.sql index be4609b7d5e..be4609b7d5e 100644 --- a/sql/updates/2629_world_spell_linked_spell.sql +++ b/sql/updates/3.0.9_old/2629_world_spell_linked_spell.sql diff --git a/sql/updates/2678_mangos_7662_01_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/2678_mangos_7662_01_world_spell_bonus_data.sql index 7950f336812..7950f336812 100644 --- a/sql/updates/2678_mangos_7662_01_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/2678_mangos_7662_01_world_spell_bonus_data.sql diff --git a/sql/updates/2682_world_SD2_scripts.sql b/sql/updates/3.0.9_old/2682_world_SD2_scripts.sql index 39ac367d097..39ac367d097 100644 --- a/sql/updates/2682_world_SD2_scripts.sql +++ b/sql/updates/3.0.9_old/2682_world_SD2_scripts.sql diff --git a/sql/updates/2683_characters_gm_tickets.sql b/sql/updates/3.0.9_old/2683_characters_gm_tickets.sql index d7a668c4b89..d7a668c4b89 100644 --- a/sql/updates/2683_characters_gm_tickets.sql +++ b/sql/updates/3.0.9_old/2683_characters_gm_tickets.sql diff --git a/sql/updates/2683_world_trinity_string.sql b/sql/updates/3.0.9_old/2683_world_trinity_string.sql index 856f105c535..856f105c535 100644 --- a/sql/updates/2683_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2683_world_trinity_string.sql diff --git a/sql/updates/2686_characters_gm_tickets.sql b/sql/updates/3.0.9_old/2686_characters_gm_tickets.sql index 8a8d61c2b91..8a8d61c2b91 100644 --- a/sql/updates/2686_characters_gm_tickets.sql +++ b/sql/updates/3.0.9_old/2686_characters_gm_tickets.sql diff --git a/sql/updates/2686_world_command.sql b/sql/updates/3.0.9_old/2686_world_command.sql index 5d25225dfe4..5d25225dfe4 100644 --- a/sql/updates/2686_world_command.sql +++ b/sql/updates/3.0.9_old/2686_world_command.sql diff --git a/sql/updates/2687_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2687_world_spell_proc_event.sql index fd8960d2714..fd8960d2714 100644 --- a/sql/updates/2687_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2687_world_spell_proc_event.sql diff --git a/sql/updates/2689_world_spell_linked_spell.sql b/sql/updates/3.0.9_old/2689_world_spell_linked_spell.sql index 8e077e70f01..8e077e70f01 100644 --- a/sql/updates/2689_world_spell_linked_spell.sql +++ b/sql/updates/3.0.9_old/2689_world_spell_linked_spell.sql diff --git a/sql/updates/2702_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2702_world_spell_proc_event.sql index a887d590c54..a887d590c54 100644 --- a/sql/updates/2702_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2702_world_spell_proc_event.sql diff --git a/sql/updates/2706_world_SD2_scripts.sql b/sql/updates/3.0.9_old/2706_world_SD2_scripts.sql index 71f97997461..71f97997461 100644 --- a/sql/updates/2706_world_SD2_scripts.sql +++ b/sql/updates/3.0.9_old/2706_world_SD2_scripts.sql diff --git a/sql/updates/2715_TC1_1362_world_creature_linked_respawn.sql b/sql/updates/3.0.9_old/2715_TC1_1362_world_creature_linked_respawn.sql index 52adffa7bd8..52adffa7bd8 100644 --- a/sql/updates/2715_TC1_1362_world_creature_linked_respawn.sql +++ b/sql/updates/3.0.9_old/2715_TC1_1362_world_creature_linked_respawn.sql diff --git a/sql/updates/2724_TC1_world_1371_script.sql b/sql/updates/3.0.9_old/2724_TC1_world_1371_script.sql index c101373eb4e..c101373eb4e 100644 --- a/sql/updates/2724_TC1_world_1371_script.sql +++ b/sql/updates/3.0.9_old/2724_TC1_world_1371_script.sql diff --git a/sql/updates/2774_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2774_world_spell_proc_event.sql index 9b91199f5d7..9b91199f5d7 100644 --- a/sql/updates/2774_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2774_world_spell_proc_event.sql diff --git a/sql/updates/2792_world_spell_bonus_data.sql b/sql/updates/3.0.9_old/2792_world_spell_bonus_data.sql index 166622d382b..166622d382b 100644 --- a/sql/updates/2792_world_spell_bonus_data.sql +++ b/sql/updates/3.0.9_old/2792_world_spell_bonus_data.sql diff --git a/sql/updates/2792_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2792_world_spell_proc_event.sql index 4c1ec0b4fe7..4c1ec0b4fe7 100644 --- a/sql/updates/2792_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2792_world_spell_proc_event.sql diff --git a/sql/updates/2793_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2793_world_spell_proc_event.sql index abb186aa1e9..abb186aa1e9 100644 --- a/sql/updates/2793_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2793_world_spell_proc_event.sql diff --git a/sql/updates/2794_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2794_world_spell_proc_event.sql index abb186aa1e9..abb186aa1e9 100644 --- a/sql/updates/2794_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2794_world_spell_proc_event.sql diff --git a/sql/updates/2798_world_SD2_scripts.sql b/sql/updates/3.0.9_old/2798_world_SD2_scripts.sql index 2ac36a64517..2ac36a64517 100644 --- a/sql/updates/2798_world_SD2_scripts.sql +++ b/sql/updates/3.0.9_old/2798_world_SD2_scripts.sql diff --git a/sql/updates/2802_world_SD2_scripts.sql b/sql/updates/3.0.9_old/2802_world_SD2_scripts.sql index bb3cc76c7ba..bb3cc76c7ba 100644 --- a/sql/updates/2802_world_SD2_scripts.sql +++ b/sql/updates/3.0.9_old/2802_world_SD2_scripts.sql diff --git a/sql/updates/2813_world_SD2_scripts.sql b/sql/updates/3.0.9_old/2813_world_SD2_scripts.sql index f0f6d9694e8..f0f6d9694e8 100644 --- a/sql/updates/2813_world_SD2_scripts.sql +++ b/sql/updates/3.0.9_old/2813_world_SD2_scripts.sql diff --git a/sql/updates/2813_world_scripts.sql b/sql/updates/3.0.9_old/2813_world_scripts.sql index 6d7f0317797..6d7f0317797 100644 --- a/sql/updates/2813_world_scripts.sql +++ b/sql/updates/3.0.9_old/2813_world_scripts.sql diff --git a/sql/updates/2814_world_spell_linked_spell.sql b/sql/updates/3.0.9_old/2814_world_spell_linked_spell.sql index 2d72e74395b..2d72e74395b 100644 --- a/sql/updates/2814_world_spell_linked_spell.sql +++ b/sql/updates/3.0.9_old/2814_world_spell_linked_spell.sql diff --git a/sql/updates/2828_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2828_world_spell_proc_event.sql index cd168bf6a67..cd168bf6a67 100644 --- a/sql/updates/2828_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2828_world_spell_proc_event.sql diff --git a/sql/updates/2885_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2885_world_spell_proc_event.sql index 0fad491b7cb..0fad491b7cb 100644 --- a/sql/updates/2885_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2885_world_spell_proc_event.sql diff --git a/sql/updates/2907_mangos_7705_01_world_command.sql b/sql/updates/3.0.9_old/2907_mangos_7705_01_world_command.sql index b711be14457..b711be14457 100644 --- a/sql/updates/2907_mangos_7705_01_world_command.sql +++ b/sql/updates/3.0.9_old/2907_mangos_7705_01_world_command.sql diff --git a/sql/updates/2907_mangos_7706_01_world_command.sql b/sql/updates/3.0.9_old/2907_mangos_7706_01_world_command.sql index d9661276880..d9661276880 100644 --- a/sql/updates/2907_mangos_7706_01_world_command.sql +++ b/sql/updates/3.0.9_old/2907_mangos_7706_01_world_command.sql diff --git a/sql/updates/2923_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2923_world_spell_proc_event.sql index c49c8b643a5..c49c8b643a5 100644 --- a/sql/updates/2923_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2923_world_spell_proc_event.sql diff --git a/sql/updates/2928_characters_character_pet.sql b/sql/updates/3.0.9_old/2928_characters_character_pet.sql index 95a34404413..95a34404413 100644 --- a/sql/updates/2928_characters_character_pet.sql +++ b/sql/updates/3.0.9_old/2928_characters_character_pet.sql diff --git a/sql/updates/2932_mangos_7714_01_world_command.sql b/sql/updates/3.0.9_old/2932_mangos_7714_01_world_command.sql index 15de76894bc..15de76894bc 100644 --- a/sql/updates/2932_mangos_7714_01_world_command.sql +++ b/sql/updates/3.0.9_old/2932_mangos_7714_01_world_command.sql diff --git a/sql/updates/2938_mangos_7720_01_world_trinity_string.sql b/sql/updates/3.0.9_old/2938_mangos_7720_01_world_trinity_string.sql index 67907163fed..67907163fed 100644 --- a/sql/updates/2938_mangos_7720_01_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2938_mangos_7720_01_world_trinity_string.sql diff --git a/sql/updates/2949_world_creature_template.sql b/sql/updates/3.0.9_old/2949_world_creature_template.sql index 00bfea086ce..00bfea086ce 100644 --- a/sql/updates/2949_world_creature_template.sql +++ b/sql/updates/3.0.9_old/2949_world_creature_template.sql diff --git a/sql/updates/2955_world_scripts_naxx.sql b/sql/updates/3.0.9_old/2955_world_scripts_naxx.sql index ae3f9324752..ae3f9324752 100644 --- a/sql/updates/2955_world_scripts_naxx.sql +++ b/sql/updates/3.0.9_old/2955_world_scripts_naxx.sql diff --git a/sql/updates/2963_world_spell_proc_event.sql b/sql/updates/3.0.9_old/2963_world_spell_proc_event.sql index aad391944ea..aad391944ea 100644 --- a/sql/updates/2963_world_spell_proc_event.sql +++ b/sql/updates/3.0.9_old/2963_world_spell_proc_event.sql diff --git a/sql/updates/2986_TC1_world.sql b/sql/updates/3.0.9_old/2986_TC1_world.sql index 520455f3f5e..520455f3f5e 100644 --- a/sql/updates/2986_TC1_world.sql +++ b/sql/updates/3.0.9_old/2986_TC1_world.sql diff --git a/sql/updates/2996_world_trinity_string.sql b/sql/updates/3.0.9_old/2996_world_trinity_string.sql index 5bc66239ba2..5bc66239ba2 100644 --- a/sql/updates/2996_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2996_world_trinity_string.sql diff --git a/sql/updates/2997_world_trinity_string.sql b/sql/updates/3.0.9_old/2997_world_trinity_string.sql index e27f7d1fd9c..e27f7d1fd9c 100644 --- a/sql/updates/2997_world_trinity_string.sql +++ b/sql/updates/3.0.9_old/2997_world_trinity_string.sql diff --git a/sql/updates/805_world_scripts.sql b/sql/updates/3.0.9_old/805_world_scripts.sql index 743984d3ad0..743984d3ad0 100644 --- a/sql/updates/805_world_scripts.sql +++ b/sql/updates/3.0.9_old/805_world_scripts.sql diff --git a/sql/updates/875_mangos_7047_01_characters_character_spell.sql b/sql/updates/3.0.9_old/875_mangos_7047_01_characters_character_spell.sql index b74900cfdba..b74900cfdba 100644 --- a/sql/updates/875_mangos_7047_01_characters_character_spell.sql +++ b/sql/updates/3.0.9_old/875_mangos_7047_01_characters_character_spell.sql diff --git a/sql/updates/875_mangos_7059_01_characters_pet_spell.sql b/sql/updates/3.0.9_old/875_mangos_7059_01_characters_pet_spell.sql index 11f1063ebc3..11f1063ebc3 100644 --- a/sql/updates/875_mangos_7059_01_characters_pet_spell.sql +++ b/sql/updates/3.0.9_old/875_mangos_7059_01_characters_pet_spell.sql diff --git a/sql/updates/3.0.9_old/CMakeLists.txt b/sql/updates/3.0.9_old/CMakeLists.txt new file mode 100644 index 00000000000..7d2b2d975d3 --- /dev/null +++ b/sql/updates/3.0.9_old/CMakeLists.txt @@ -0,0 +1,5 @@ +FILE(GLOB _SQL_309 *.sql) + +INSTALL(FILES +${_SQL_309} +DESTINATION share/trinity/sql/updates/3.0.9_old)
\ No newline at end of file diff --git a/sql/updates/3204_mangos_7796_01_world_command.sql b/sql/updates/3204_mangos_7796_01_world_command.sql new file mode 100644 index 00000000000..547ccea849c --- /dev/null +++ b/sql/updates/3204_mangos_7796_01_world_command.sql @@ -0,0 +1,6 @@ +/*ALTER TABLE db_version CHANGE COLUMN required_7782_01_mangos_spell_proc_event required_7796_01_mangos_command bit;*/ + +DELETE FROM `command` WHERE `name` IN ('go taxinode','lookup taxinode'); +INSERT INTO `command` VALUES +('go taxinode',1,'Syntax: .go taxinode #taxinode\r\n\r\nTeleport player to taxinode coordinates. You can look up zone using .lookup taxinode $namepart'), +('lookup taxinode',3,'Syntax: .lookup taxinode $substring\r\n\r\nSearch and output all taxinodes with provide $substring in name.');
\ No newline at end of file diff --git a/sql/updates/3204_mangos_7796_02_world_trinity_string.sql b/sql/updates/3204_mangos_7796_02_world_trinity_string.sql new file mode 100644 index 00000000000..d97f1ccfbda --- /dev/null +++ b/sql/updates/3204_mangos_7796_02_world_trinity_string.sql @@ -0,0 +1,8 @@ +/*ALTER TABLE db_version CHANGE COLUMN required_7796_01_mangos_command required_7796_02_mangos_mangos_string bit;*/ + +DELETE FROM trinity_string WHERE entry IN(347,466,1128,1129); +INSERT INTO trinity_string VALUES +(347,'TaxiNode ID %u not found!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(466,'No taxinodes found!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1128,'%d - |cffffffff|Htaxinode:%u|h[%s %s]|h|r (Map:%u X:%f Y:%f Z:%f)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(1129,'%d - %s %s (Map:%u X:%f Y:%f Z:%f)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
\ No newline at end of file diff --git a/sql/updates/3210_mangos_7802_01_characters_character_achievement.sql b/sql/updates/3210_mangos_7802_01_characters_character_achievement.sql new file mode 100644 index 00000000000..b79de37a587 --- /dev/null +++ b/sql/updates/3210_mangos_7802_01_characters_character_achievement.sql @@ -0,0 +1,6 @@ +/*ALTER TABLE character_db_version CHANGE COLUMN required_7644_01_characters_character_pet required_7802_01_characters_character_achievement bit;*/ + +ALTER TABLE character_achievement + CHANGE COLUMN guid guid int(11) unsigned NOT NULL, + CHANGE COLUMN achievement achievement int(11) unsigned NOT NULL, + CHANGE COLUMN date date bigint(11) unsigned NOT NULL default '0';
\ No newline at end of file diff --git a/sql/updates/3210_mangos_7802_02_characters_character_achievement_progress.sql b/sql/updates/3210_mangos_7802_02_characters_character_achievement_progress.sql new file mode 100644 index 00000000000..fd5718ddb29 --- /dev/null +++ b/sql/updates/3210_mangos_7802_02_characters_character_achievement_progress.sql @@ -0,0 +1,7 @@ +/*ALTER TABLE character_db_version CHANGE COLUMN required_7802_01_characters_character_achievement required_7802_02_characters_character_achievement_progress bit;*/ + +ALTER TABLE character_achievement_progress + CHANGE COLUMN guid guid int(11) unsigned NOT NULL, + CHANGE COLUMN criteria criteria int(11) unsigned NOT NULL, + CHANGE COLUMN counter counter int(11) unsigned NOT NULL, + CHANGE COLUMN date date bigint(11) unsigned NOT NULL default '0';
\ No newline at end of file diff --git a/sql/updates/3233_world_scripts_naxx.sql b/sql/updates/3233_world_scripts_naxx.sql new file mode 100644 index 00000000000..a5a71ba6233 --- /dev/null +++ b/sql/updates/3233_world_scripts_naxx.sql @@ -0,0 +1,80 @@ +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-28169,28732,54097); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +( 28732,-28798, 1, 'Widow\'s Embrace - Frenzy'), +( 54097,-54100, 1, 'Widow\'s Embrace - Frenzy (H)'), +(-28169, 28206, 0, 'Mutating Injection - Mutagen Explosion'), +(-28169, 28240, 0, 'Mutating Injection - Poison Cloud'); + +UPDATE creature_template SET scriptname = 'boss_grobbulus' WHERE entry = 15931; +update creature_template set scriptname='mob_gothik_minion' where entry in (16124,16125,16126,16127,16148,16149,16150); + +INSERT INTO creature_template (entry, spell1, flags_extra, scriptname) VALUES +(16363, 28158, 128, ''), # Grobbulus Cloud +(29379, 54362, 128, '') # Grobbulus Cloud (H) +ON DUPLICATE KEY UPDATE +spell1 = VALUES(spell1), +flags_extra = VALUES(flags_extra), +scriptname = VALUES(scriptname); + +INSERT INTO creature_template (entry, spell1, spell2, flags_extra, scriptname) VALUES +(16474, 28547, 1000, 128, 'trigger_periodic'), # Blizzard (Sapphiron) +(30000, 55699, 1000, 128, 'trigger_periodic') # Blizzard (Sapphiron) (H) +ON DUPLICATE KEY UPDATE +spell1 = VALUES(spell1), +spell2 = VALUES(spell2), +flags_extra = VALUES(flags_extra), +scriptname = VALUES(scriptname); + +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (29912); +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `quest_id`, `cast_flags`) VALUES +(29912, 55479, 0, 1); # Obedience Crystal - Force Obedience + +DELETE FROM `spell_script_target` WHERE `entry` IN +(28732,54097,55479, +27892,27893,27928,27929,27935,27936); +INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES +(28732, 1, 15953), # Widow's Embrace +(54097, 1, 15953), # Widow's Embrace +(55479, 1, 16803), # Force Obedience - Death Knight Understudy +# (29105, 1, 16803), # Hopeless - Death Knight Understudy +(27892, 1, 16060), # To Anchor 1 - Gothik +(27893, 1, 16060), # To Anchor 2 - Gothik +(27928, 1, 16060), # To Anchor 1 - Gothik +(27929, 1, 16060), # To Anchor 2 - Gothik +(27935, 1, 16060), # To Anchor 1 - Gothik +(27936, 1, 16060); # To Anchor 2 - Gothik + +INSERT INTO creature_template (entry, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8) VALUES +(16573, 15284, 28991, 28969, 34970, 0, 0, 0, 28864), # Crypt Guard +(29256, 15284, 28991, 56098, 34970, 0, 0, 0, 28864), # Crypt Guard (H) +(16506, 54095, 0, 0, 0, 0, 0, 0, 28732), # Naxxramas Worshipper +(29274, 54096, 0, 0, 0, 0, 0, 0, 54097), # Naxxramas Worshipper (H) +(16984, 15496, 0, 0, 0, 0, 0, 0, 0), # Plagued Warrior +(29632, 15496, 0, 0, 0, 0, 0, 0, 0), # Plagued Warrior (H) +(16290, 28156, 0, 0, 0, 0, 0, 0, 0), # Fallout Slime +(29388, 54367, 0, 0, 0, 0, 0, 0, 0), # Fallout Slime (H) +(16803, 0, 0, 0, 61696, 29060, 29061, 0, 0), # Death Knight Understudy +(29941, 0, 0, 0, 61696, 29060, 29061, 0, 0), # Death Knight Understudy (H) +(16124, 55604, 0, 0, 0, 0, 0, 0, 27892), # Unrelenting Trainee +(16125, 27825, 0, 0, 0, 0, 0, 0, 27928), # Unrelenting Death Knight +(16126, 27831, 55606, 0, 0, 0, 0, 0, 27935), # Unrelenting Rider +(16127, 27989, 0, 0, 0, 0, 0, 0, 0), # Spectral Trainee +(16148, 56408, 0, 0, 0, 0, 0, 0, 0), # Spectral Death Knight +(16150, 27994, 55648, 55606, 0, 0, 0, 0, 0), # Spectral Rider +(16149, 27993, 0, 0, 0, 0, 0, 0, 0), # Spectral Horse +(29985, 55645, 0, 0, 0, 0, 0, 0, 27892), # Unrelenting Trainee (H) +(29986, 27825, 0, 0, 0, 0, 0, 0, 27928), # Unrelenting Death Knight (H) +(29987, 55638, 55608, 0, 0, 0, 0, 0, 27935), # Unrelenting Rider (H) +(30264, 56407, 0, 0, 0, 0, 0, 0, 0), # Spectral Trainee (H) +(29990, 56408, 0, 0, 0, 0, 0, 0, 0), # Spectral Death Knight (H) +(29988, 55646, 27995, 55608, 0, 0, 0, 0, 0), # Spectral Rider (H) +(29989, 27993, 0, 0, 0, 0, 0, 0, 0) # Spectral Horse (H) +ON DUPLICATE KEY UPDATE +spell1 = VALUES(spell1), +spell2 = VALUES(spell2), +spell3 = VALUES(spell3), +spell4 = VALUES(spell4), +spell5 = VALUES(spell5), +spell6 = VALUES(spell6), +spell7 = VALUES(spell7), +spell8 = VALUES(spell8);
\ No newline at end of file diff --git a/sql/updates/3235_characters.sql b/sql/updates/3235_characters.sql new file mode 100644 index 00000000000..c99cfb01db6 --- /dev/null +++ b/sql/updates/3235_characters.sql @@ -0,0 +1,4 @@ +DELETE FROM `character_action` WHERE `type` = 0 AND `action` = 28734; +DELETE FROM `character_aura` WHERE `spell` = 28734; +DELETE FROM `character_spell` WHERE `spell` = 28734; +DELETE FROM `character_spell_cooldown` WHERE `spell` = 28734;
\ No newline at end of file diff --git a/sql/updates/3235_world.sql b/sql/updates/3235_world.sql new file mode 100644 index 00000000000..719530b4150 --- /dev/null +++ b/sql/updates/3235_world.sql @@ -0,0 +1,5 @@ +DELETE FROM `playercreateinfo_action` WHERE `type` = 0 AND `action` = 28734; +DELETE FROM `playercreateinfo_spell` WHERE `spell` = 28734; +DELETE FROM `playercreateinfo_spell_custom` WHERE `spell` = 28734; +UPDATE `playercreateinfo_action` SET `button` = 3 WHERE `race` = 10 AND `class` IN (2, 3, 5, 8, 9) AND `action` = 28730 AND `type` = 0; +UPDATE `playercreateinfo_action` SET `button` = 4 WHERE `race` = 10 AND `class` = 4 AND `action` = 25046 AND `type` = 0;
\ No newline at end of file diff --git a/sql/updates/3257_world_creature_addon_(waypoint).sql b/sql/updates/3257_world_creature_addon_(waypoint).sql new file mode 100644 index 00000000000..1398baf1ccd --- /dev/null +++ b/sql/updates/3257_world_creature_addon_(waypoint).sql @@ -0,0 +1,2 @@ +ALTER TABLE creature_template_addon DROP COLUMN path_id; +ALTER TABLE creature_addon DROP COLUMN path_id;
\ No newline at end of file diff --git a/sql/updates/3257_world_waypoint_data_converter.sql b/sql/updates/3257_world_waypoint_data_converter.sql new file mode 100644 index 00000000000..4a620ad73f7 --- /dev/null +++ b/sql/updates/3257_world_waypoint_data_converter.sql @@ -0,0 +1,15 @@ +ALTER TABLE creature_addon ADD INDEX ( `path_id` ); +ALTER TABLE waypoint_data ADD INDEX ( `id` ); + +ALTER TABLE waypoint_data ADD COLUMN id_old int(10) unsigned NOT NULL default '0' COMMENT 'Creature GUID' AFTER wpguid; + +UPDATE waypoint_data SET id_old=id; +ALTER TABLE waypoint_data ADD INDEX ( `id_old` ); + +UPDATE waypoint_data,creature_addon SET waypoint_data.id=creature_addon.guid*10 WHERE creature_addon.path_id > 0 AND creature_addon.path_id=waypoint_data.id_old; +UPDATE waypoint_data SET id = 1343801 WHERE id_old = 2084; +UPDATE waypoint_scripts SET datalong = 1343801 WHERE id = 515; + +ALTER TABLE waypoint_data DROP COLUMN id_old; +ALTER TABLE `creature_addon` DROP INDEX `path_id` ; +ALTER TABLE waypoint_data DROP INDEX `id`;
\ No newline at end of file diff --git a/sql/updates/3263_world_scripts_(missing in full).sql b/sql/updates/3263_world_scripts_(missing in full).sql new file mode 100644 index 00000000000..942ffd1ccfd --- /dev/null +++ b/sql/updates/3263_world_scripts_(missing in full).sql @@ -0,0 +1,14 @@ +UPDATE creature_template SET ScriptName='npc_kingdom_of_dalaran_quests' WHERE entry IN (29169,23729,26673,27158,29158,29161,26471,29155,29159,29160,29162); +UPDATE `creature_template` SET `ScriptName` = 'boss_elder_nadox' WHERE `entry` = 29309; +UPDATE `creature_template` SET `ScriptName` = 'mob_ahnkahar_nerubian' WHERE `entry` in (30176,30178); +UPDATE `instance_template` SET `script`= 'instance_ahnkahet' WHERE `map` = 619; +update creature_template set scriptname = 'mob_parasitic_shadowfiend' where entry = 23498; +UPDATE `creature_template` SET `ScriptName`='npc_aeranas' WHERE `entry`=17085; +UPDATE `gameobject_template` SET `ScriptName`='go_haaleshi_altar' WHERE `entry`=181606; +UPDATE `creature_template` SET `ScriptName`='npc_commander_dawnforge' WHERE `entry`=19831; +UPDATE creature_template SET scriptname = 'boss_kalecgos' WHERE entry = 24850; +UPDATE creature_template SET scriptname = 'boss_sathrovarr' WHERE entry = 24892; +UPDATE creature_template SET scriptname = 'boss_kalec' WHERE entry = 24891; +UPDATE creature_template SET scriptname = 'npc_blackhole' WHERE entry = 25855; +UPDATE creature_template SET scriptname = 'boss_archavon' WHERE entry = 31125; +UPDATE creature_template SET scriptname = 'mob_archavon_warder' WHERE entry = 32353;
\ No newline at end of file diff --git a/sql/updates/3323_world_spell_proc_event.sql b/sql/updates/3323_world_spell_proc_event.sql new file mode 100644 index 00000000000..e1ed1649994 --- /dev/null +++ b/sql/updates/3323_world_spell_proc_event.sql @@ -0,0 +1,4 @@ +-- Glyph of Ice Block -- +DELETE FROM `spell_proc_event` WHERE `entry` = 56372; +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(56372, 0x00, 3, 0x00000000, 0x00000080, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0); diff --git a/sql/updates/7823_01_mangos_item_template.sql b/sql/updates/7823_01_mangos_item_template.sql new file mode 100644 index 00000000000..2b3a0b314b6 --- /dev/null +++ b/sql/updates/7823_01_mangos_item_template.sql @@ -0,0 +1,4 @@ +ALTER TABLE db_version CHANGE COLUMN required_7796_02_mangos_mangos_string required_7823_01_mangos_item_template bit; + +ALTER TABLE item_template +CHANGE COLUMN ScalingStatValue ScalingStatValue int(6) unsigned NOT NULL default '0';
\ No newline at end of file diff --git a/sql/updates/CMakeLists.txt b/sql/updates/CMakeLists.txt index 2300dd5c5f3..b27217e7a6e 100644 --- a/sql/updates/CMakeLists.txt +++ b/sql/updates/CMakeLists.txt @@ -1,7 +1,9 @@ add_subdirectory(2.4.3_updates) +add_subdirectory(Obsolete_updates) +add_subdirectory(3.0.9_old) FILE(GLOB _SQL_UPDATES *.sql) INSTALL(FILES ${_SQL_UPDATES} -DESTINATION share/trinity/sql/updates) +DESTINATION share/trinity/sql/updates)
\ No newline at end of file diff --git a/sql/updates/Obsolete_updates/3204_mangos_7782_01_world_spell_proc_event.sql.obs b/sql/updates/Obsolete_updates/3204_mangos_7782_01_world_spell_proc_event.sql.obs new file mode 100644 index 00000000000..8efa5573b3c --- /dev/null +++ b/sql/updates/Obsolete_updates/3204_mangos_7782_01_world_spell_proc_event.sql.obs @@ -0,0 +1,4 @@ +ALTER TABLE db_version CHANGE COLUMN required_7777_01_mangos_spell_proc_event required_7782_01_mangos_spell_proc_event bit; + +DELETE FROM spell_proc_event WHERE entry = 34074; +INSERT INTO spell_proc_event VALUES (34074, 0, 9, 522819, 8917121, 513, 0, 0, 0, 0, 0);
\ No newline at end of file diff --git a/sql/updates/TC1_1477_world_spell.sql b/sql/updates/TC1_1477_world_spell.sql new file mode 100644 index 00000000000..a7f9bd30b59 --- /dev/null +++ b/sql/updates/TC1_1477_world_spell.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_proc_event` WHERE `entry` = 42370; +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(42370, 0x00, 11, 0x00000080, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); diff --git a/sql/world.sql b/sql/world.sql index f11a5ca0411..c466956739a 100644 --- a/sql/world.sql +++ b/sql/world.sql @@ -9886,29 +9886,25 @@ INSERT INTO `playercreateinfo_action` VALUES (10,2,0,6603,0,0), (10,2,1,21084,0,0), (10,2,2,635,0,0), -(10,2,3,28734,0,0), -(10,2,4,28730,0,0), +(10,2,3,28730,0,0), (10,2,10,159,128,0), (10,2,11,20857,128,0), (10,3,0,6603,0,0), (10,3,1,2973,0,0), (10,3,2,75,0,0), -(10,3,3,28734,0,0), -(10,3,4,28730,0,0), +(10,3,3,28730,0,0), (10,3,10,159,128,0), (10,3,11,20857,128,0), (10,4,0,6603,0,0), (10,4,1,1752,0,0), (10,4,2,2098,0,0), (10,4,3,2764,0,0), -(10,4,4,28734,0,0), -(10,4,5,25046,0,0), +(10,4,4,25046,0,0), (10,4,11,20857,128,0), (10,5,0,6603,0,0), (10,5,1,585,0,0), (10,5,2,2050,0,0), -(10,5,3,28734,0,0), -(10,5,4,28730,0,0), +(10,5,3,28730,0,0), (10,5,10,159,128,0), (10,5,11,20857,128,0), (10,6,0,6603,0,0), @@ -9921,14 +9917,12 @@ INSERT INTO `playercreateinfo_action` VALUES (10,8,0,6603,0,0), (10,8,1,133,0,0), (10,8,2,168,0,0), -(10,8,3,28734,0,0), -(10,8,4,28730,0,0), +(10,8,3,28730,0,0), (10,8,10,159,128,0), (10,8,11,20857,128,0), (10,9,11,20857,128,0), (10,9,10,159,128,0), -(10,9,4,28730,0,0), -(10,9,3,28734,0,0), +(10,9,3,28730,0,0), (10,9,2,687,0,0), (10,9,1,686,0,0), (10,9,0,6603,0,0), @@ -12170,7 +12164,6 @@ INSERT INTO `playercreateinfo_spell` VALUES (10,2,22810,'Opening - No Text',1), (10,2,27762,'Libram',1), (10,2,28730,'Arcane Torrent',1), -(10,2,28734,'Mana Tap',1), (10,2,28877,'Arcane Affinity',1), (10,3,75,'Auto Shot',1), (10,3,81,'Dodge',1), @@ -12207,7 +12200,6 @@ INSERT INTO `playercreateinfo_spell` VALUES (10,3,22810,'Opening - No Text',1), (10,3,24949,'Defensive State 2(DND)',1), (10,3,28730,'Arcane Torrent',1), -(10,3,28734,'Mana Tap',1), (10,3,28877,'Arcane Affinity',1), (10,3,34082,'Advantaged State(DND)',1), (10,4,81,'Dodge',1), @@ -12246,7 +12238,6 @@ INSERT INTO `playercreateinfo_spell` VALUES (10,4,22027,'Remove Insignia',1), (10,4,22810,'Opening - No Text',1), (10,4,25046,'Arcane Torrent',1), -(10,4,28734,'Mana Tap',1), (10,4,28877,'Arcane Affinity',1), (10,5,81,'Dodge',1), (10,5,198,'One-Handed Maces',1), @@ -12281,7 +12272,6 @@ INSERT INTO `playercreateinfo_spell` VALUES (10,5,22027,'Remove Insignia',1), (10,5,22810,'Opening - No Text',1), (10,5,28730,'Arcane Torrent',1), -(10,5,28734,'Mana Tap',1), (10,5,28877,'Arcane Affinity',1), (10,6,81,'Dodge',1), (10,6,196,'One-Handed Axes',1), @@ -12383,7 +12373,6 @@ INSERT INTO `playercreateinfo_spell` VALUES (10,8,22027,'Remove Insignia',1), (10,8,22810,'Opening - No Text',1), (10,8,28730,'Arcane Torrent',1), -(10,8,28734,'Mana Tap',1), (10,8,28877,'Arcane Affinity',1), (10,9,81,'Dodge',1), (10,9,203,'Unarmed',1), @@ -12418,7 +12407,6 @@ INSERT INTO `playercreateinfo_spell` VALUES (10,9,22027,'Remove Insignia',1), (10,9,22810,'Opening - No Text',1), (10,9,28730,'Arcane Torrent',1), -(10,9,28734,'Mana Tap',1), (10,9,28877,'Arcane Affinity',1), (11,1,78,'Heroic Strike',1), (11,1,81,'Dodge',1), diff --git a/sql/world_script_waypoints.sql b/sql/world_script_waypoints.sql index 701de8ee4b0..b6c173dcb68 100644 --- a/sql/world_script_waypoints.sql +++ b/sql/world_script_waypoints.sql @@ -1,6 +1,16 @@ -- This file contains all waypoints used by escortAI scripts +DROP TABLE IF EXISTS script_waypoint; +CREATE TABLE script_waypoint ( + entry mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'creature_template entry', + pointid mediumint(8) unsigned NOT NULL DEFAULT '0', + location_x float NOT NULL DEFAULT '0', + location_y float NOT NULL DEFAULT '0', + location_z float NOT NULL DEFAULT '0', + waittime int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'waittime in millisecs', + point_comment text, + PRIMARY KEY (entry, pointid) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Creature waypoints'; -/* GHOSTLANDS */ DELETE FROM script_waypoint WHERE entry=16295; INSERT INTO script_waypoint VALUES @@ -40,5 +50,526 @@ INSERT INTO script_waypoint VALUES (16295, 33, 7603.768066, -7667.000488, 153.997726, 8000, 'SAY_END_2'), (16295, 34, 7603.768066, -7667.000488, 153.997726, 0, ''); -/* EOF */ +DELETE FROM script_waypoint WHERE entry=467; +INSERT INTO script_waypoint VALUES +(467, 0, -10508.40, 1068.00, 55.21, 0, ''), +(467, 1, -10518.30, 1074.84, 53.96, 0, ''), +(467, 2, -10534.82, 1081.92, 49.88, 0, ''), +(467, 3, -10546.51, 1084.88, 50.13, 0, ''), +(467, 4, -10555.29, 1084.45, 45.75, 0, ''), +(467, 5, -10566.57, 1083.53, 42.10, 0, ''), +(467, 6, -10575.83, 1082.34, 39.46, 0, ''), +(467, 7, -10585.67, 1081.08, 37.77, 0, ''), +(467, 8, -10600.08, 1078.19, 36.23, 0, ''), +(467, 9, -10608.69, 1076.08, 35.88, 0, ''), +(467, 10, -10621.26, 1073.00, 35.40, 0, ''), +(467, 11, -10638.12, 1060.18, 33.61, 0, ''), +(467, 12, -10655.87, 1038.99, 33.48, 0, ''), +(467, 13, -10664.68, 1030.54, 32.70, 0, ''), +(467, 14, -10708.68, 1033.86, 33.32, 0, ''), +(467, 15, -10754.43, 1017.93, 32.79, 0, ''), +(467, 16, -10802.26, 1018.01, 32.16, 0, ''), +(467, 17, -10832.60, 1009.04, 32.71, 0, ''), +(467, 18, -10866.56, 1006.51, 31.71, 0, ''), +(467, 19, -10879.98, 1005.10, 32.84, 0, ''), +(467, 20, -10892.45, 1001.32, 34.46, 0, ''), +(467, 21, -10906.14, 997.11, 36.15, 0, ''), +(467, 22, -10922.26, 1002.23, 35.74, 0, ''), +(467, 23, -10936.32, 1023.38, 36.52, 0, ''), +(467, 24, -10933.35, 1052.61, 35.85, 0, ''), +(467, 25, -10940.25, 1077.66, 36.49, 0, ''), +(467, 26, -10957.09, 1099.33, 36.83, 0, ''), +(467, 27, -10956.53, 1119.90, 36.73, 0, ''), +(467, 28, -10939.30, 1150.75, 37.42, 0, ''), +(467, 29, -10915.14, 1202.09, 36.55, 0, ''), +(467, 30, -10892.59, 1257.03, 33.37, 0, ''), +(467, 31, -10891.93, 1306.66, 35.45, 0, ''), +(467, 32, -10896.17, 1327.86, 37.77, 0, ''), +(467, 33, -10906.03, 1368.05, 40.91, 0, ''), +(467, 34, -10910.18, 1389.33, 42.62, 0, ''), +(467, 35, -10915.42, 1417.72, 42.93, 0, ''), +(467, 36, -10926.37, 1421.18, 43.04, 0, 'walk here and say'), +(467, 37, -10952.31, 1421.74, 43.40, 0, ''), +(467, 38, -10980.04, 1411.38, 42.79, 0, ''), +(467, 39, -11006.06, 1420.47, 43.26, 0, ''), +(467, 40, -11021.98, 1450.59, 43.09, 0, ''), +(467, 41, -11025.36, 1491.59, 43.15, 0, ''), +(467, 42, -11036.09, 1508.32, 43.28, 0, ''), +(467, 43, -11060.68, 1526.72, 43.19, 0, ''), +(467, 44, -11072.75, 1527.77, 43.20, 5000, 'say and quest credit'); + +DELETE FROM script_waypoint WHERE entry=2768; +INSERT INTO script_waypoint VALUES +(2768, 0, -2066.45, -2085.96, 9.08, 0, ''), +(2768, 1, -2077.99, -2105.33, 13.24, 0, ''), +(2768, 2, -2074.60, -2109.67, 14.24, 0, ''), +(2768, 3, -2076.60, -2117.46, 16.67, 0, ''), +(2768, 4, -2073.51, -2123.46, 18.42, 2000, ''), +(2768, 5, -2073.51, -2123.46, 18.42, 4000, ''), +(2768, 6, -2066.60, -2131.85, 21.56, 0, ''), +(2768, 7, -2053.85, -2143.19, 20.31, 0, ''), +(2768, 8, -2043.49, -2153.73, 20.20, 10000, ''), +(2768, 9, -2043.49, -2153.73, 20.20, 20000, ''), +(2768, 10, -2043.49, -2153.73, 20.20, 10000, ''), +(2768, 11, -2043.49, -2153.73, 20.20, 2000, ''), +(2768, 12, -2053.85, -2143.19, 20.31, 0, ''), +(2768, 13, -2066.60, -2131.85, 21.56, 0, ''), +(2768, 14, -2073.51, -2123.46, 18.42, 0, ''), +(2768, 15, -2076.60, -2117.46, 16.67, 0, ''), +(2768, 16, -2074.60, -2109.67, 14.24, 0, ''), +(2768, 17, -2077.99, -2105.33, 13.24, 0, ''), +(2768, 18, -2066.45, -2085.96, 9.08, 0, ''), +(2768, 19, -2066.41, -2086.21, 8.97, 6000, ''), +(2768, 20, -2066.41, -2086.21, 8.97, 2000, ''); + +DELETE FROM script_waypoint WHERE entry=12818; +INSERT INTO script_waypoint VALUES +(12818, 0, 3347.250089, -694.700989, 159.925995, 0, ''), +(12818, 1, 3341.527039, -694.725891, 161.124542, 4000, ''), +(12818, 2, 3338.351074, -686.088138, 163.444000, 0, ''), +(12818, 3, 3352.744873, -677.721741, 162.316269, 0, ''), +(12818, 4, 3370.291016, -669.366943, 160.751358, 0, ''), +(12818, 5, 3381.479492, -659.449097, 162.545303, 0, ''), +(12818, 6, 3389.554199, -648.500000, 163.651825, 0, ''), +(12818, 7, 3396.645020, -641.508911, 164.216019, 0, ''), +(12818, 8, 3410.498535, -634.299622, 165.773453, 0, ''), +(12818, 9, 3418.461426, -631.791992, 166.477615, 0, ''), +(12818, 10, 3429.500000, -631.588745, 166.921265, 0, ''), +(12818, 11,3434.950195, -629.245483, 168.333969, 0, ''), +(12818, 12,3438.927979, -618.503235, 171.503143, 0, ''), +(12818, 13,3444.217529, -609.293640, 173.077972, 1000, 'Ambush 1'), +(12818, 14,3460.505127, -593.794189, 174.342255, 0, ''), +(12818, 15,3480.283203, -578.210327, 176.652313, 0, ''), +(12818, 16,3492.912842, -562.335449, 181.396301, 0, ''), +(12818, 17,3495.230957, -550.977600, 184.652267, 0, ''), +(12818, 18,3496.247070, -529.194214, 188.172028, 0, ''), +(12818, 19,3497.619385, -510.411499, 188.345322, 1000, 'Ambush 2'), +(12818, 20,3498.498047, -497.787506, 185.806274, 0, ''), +(12818, 21,3484.218750, -489.717529, 182.389862, 4000, ''); + +DELETE FROM script_waypoint WHERE entry=12858; +INSERT INTO script_waypoint VALUES +(12858, 0, 1782.63, -2241.11, 109.73, 5000, ''), +(12858, 1, 1788.88, -2240.17, 111.71, 0, ''), +(12858, 2, 1797.49, -2238.11, 112.31, 0, ''), +(12858, 3, 1803.83, -2232.77, 111.22, 0, ''), +(12858, 4, 1806.65, -2217.83, 107.36, 0, ''), +(12858, 5, 1811.81, -2208.01, 107.45, 0, ''), +(12858, 6, 1820.85, -2190.82, 100.49, 0, ''), +(12858, 7, 1829.60, -2177.49, 96.44, 0, ''), +(12858, 8, 1837.98, -2164.19, 96.71, 0, 'prepare'), +(12858, 9, 1839.99, -2149.29, 96.78, 0, ''), +(12858, 10, 1835.14, -2134.98, 96.80, 0, ''), +(12858, 11, 1823.57, -2118.27, 97.43, 0, ''), +(12858, 12, 1814.99, -2110.35, 98.38, 0, ''), +(12858, 13, 1806.60, -2103.09, 99.19, 0, ''), +(12858, 14, 1798.27, -2095.77, 100.04, 0, ''), +(12858, 15, 1783.59, -2079.92, 100.81, 0, ''), +(12858, 16, 1776.79, -2069.48, 101.77, 0, ''), +(12858, 17, 1776.82, -2054.59, 109.82, 0, ''), +(12858, 18, 1776.88, -2047.56, 109.83, 0, ''), +(12858, 19, 1776.86, -2036.55, 109.83, 0, ''), +(12858, 20, 1776.90, -2024.56, 109.83, 0, 'win'), +(12858, 21, 1776.87, -2028.31, 109.83,60000, 'stay'), +(12858, 22, 1776.90, -2028.30, 109.83, 0, ''); + +DELETE FROM script_waypoint WHERE entry=15420; +INSERT INTO script_waypoint VALUES +(15420, 0, 9294.78, -6682.51, 22.42, 0, ''), +(15420, 1, 9298.27, -6667.99, 22.42, 0, ''), +(15420, 2, 9309.63, -6658.84, 22.43, 0, ''), +(15420, 3, 9304.43, -6649.31, 26.46, 0, ''), +(15420, 4, 9298.83, -6648.00, 28.61, 0, ''), +(15420, 5, 9291.06, -6653.46, 31.83,2500, ''), +(15420, 6, 9289.08, -6660.17, 31.85,5000, ''), +(15420, 7, 9291.06, -6653.46, 31.83, 0, ''); + +DELETE FROM script_waypoint WHERE entry=16993; +INSERT INTO script_waypoint VALUES +(16993, 0, -1137.72, 4272.10, 14.04, 5000, ''), +(16993, 1, -1141.34, 4232.42, 14.63, 0, ''), +(16993, 2, -1133.47, 4220.88, 11.78, 0, ''), +(16993, 3, -1126.18, 4213.26, 13.51, 0, ''), +(16993, 4, -1100.12, 4204.32, 16.41, 0, ''), +(16993, 5, -1063.68, 4197.92, 15.51, 0, ''), +(16993, 6, -1027.28, 4194.36, 15.52, 0, ''), +(16993, 7, -995.68, 4189.59, 19.84, 0, ''), +(16993, 8, -970.90, 4188.60, 24.61, 0, ''), +(16993, 9, -961.93, 4193.34, 26.11, 15000, 'Summon 1'), +(16993, 10, -935.52, 4210.99, 31.98, 0, ''), +(16993, 11, -913.42, 4218.27, 37.29, 0, ''), +(16993, 12, -896.53, 4207.73, 43.23, 0, ''), +(16993, 13, -868.49, 4194.77, 46.75, 30000, 'Kneel and Rest Here'), +(16993, 14, -852.83, 4198.29, 47.28, 15000, 'Summon 2'), +(16993, 15, -819.85, 4200.50, 46.37, 0, ''), +(16993, 16, -791.92, 4201.96, 44.19, 0, ''), +(16993, 17, -774.42, 4202.46, 47.41, 0, ''), +(16993, 18, -762.90, 4202.17, 48.81, 0, ''), +(16993, 19, -728.25, 4195.35, 50.68, 0, ''), +(16993, 20, -713.58, 4192.07, 53.98, 0, ''), +(16993, 21, -703.09, 4189.74, 56.96, 0, ''), +(16993, 22, -693.70, 4185.43, 57.06, 0, ''), +(16993, 23, -686.38, 4159.81, 60.26, 0, ''), +(16993, 24, -679.88, 4147.04, 64.20, 0, ''), +(16993, 25, -656.74, 4147.72, 64.11, 0, ''), +(16993, 26, -652.22, 4137.50, 64.58, 0, ''), +(16993, 27, -649.99, 4136.38, 64.63, 30000, 'Quest Credit'); + +DELETE FROM script_waypoint WHERE entry=17312; +INSERT INTO script_waypoint VALUES +(17312, 0, -4784.532227, -11051.060547, 3.484263, 0, ''), +(17312, 1, -4805.509277, -11037.293945, 3.043942, 0, ''), +(17312, 2, -4827.826172, -11034.398438, 1.741959, 0, ''), +(17312, 3, -4852.630859, -11033.695313, 2.208656, 0, ''), +(17312, 4, -4876.791992, -11034.517578, 3.175228, 0, ''), +(17312, 5, -4895.486816, -11038.306641, 9.390890, 0, ''), +(17312, 6, -4915.464844, -11048.402344, 12.369793, 0, ''), +(17312, 7, -4937.288086, -11067.041992, 13.857983, 0, ''), +(17312, 8, -4966.577637, -11067.507813, 15.754786, 0, ''), +(17312, 9, -4993.799805, -11056.544922, 19.175295, 0, ''), +(17312, 10, -5017.836426, -11052.569336, 22.476587, 0, ''), +(17312, 11, -5039.706543, -11058.459961, 25.831593, 0, ''), +(17312, 12, -5057.289063, -11045.474609, 26.972496, 0, ''), +(17312, 13, -5078.828125, -11037.601563, 29.053417, 0, ''), +(17312, 14, -5104.158691, -11039.195313, 29.440195, 0, ''), +(17312, 15, -5120.780273, -11039.518555, 30.142139, 0, ''), +(17312, 16, -5140.833008, -11039.810547, 28.788074, 0, ''), +(17312, 17, -5161.201660, -11040.050781, 27.879545, 4000, ''), +(17312, 18, -5171.842285, -11046.803711, 27.183821, 0, ''), +(17312, 19, -5185.995117, -11056.359375, 20.234867, 0, ''), +(17312, 20, -5198.485840, -11065.065430, 18.872593, 0, ''), +(17312, 21, -5214.062500, -11074.653320, 19.215731, 0, ''), +(17312, 22, -5220.157227, -11088.377930, 19.818476, 0, ''), +(17312, 23, -5233.652832, -11098.846680, 18.349432, 0, ''), +(17312, 24, -5250.163086, -11111.653320, 16.438959, 0, ''), +(17312, 25, -5268.194336, -11125.639648, 12.668313, 0, ''), +(17312, 26, -5286.270508, -11130.669922, 6.912246, 0, ''), +(17312, 27, -5317.449707, -11137.392578, 4.963446, 0, ''), +(17312, 28, -5334.854492, -11154.384766, 6.742664, 0, ''), +(17312, 29, -5353.874512, -11171.595703, 6.903912, 20000, ''), +(17312, 30, -5354.240000, -11171.940000, 6.890000, 0, ''); + +DELETE FROM script_waypoint WHERE entry=19685; +INSERT INTO script_waypoint VALUES +(19685, 0, -1863.369019, 5419.517090, -10.463668, 5000, ''), +(19685, 1, -1861.749023, 5416.465332, -10.508068, 0, ''), +(19685, 2, -1857.036133, 5410.966309, -12.428039, 0, ''), +(19685, 3, -1831.539185, 5365.472168, -12.428039, 0, ''), +(19685, 4, -1813.416504, 5333.776855, -12.428039, 0, ''), +(19685, 5, -1800.354370, 5313.290039, -12.428039, 0, ''), +(19685, 6, -1775.624878, 5268.786133, -38.809181, 0, ''), +(19685, 7, -1770.147339, 5259.268066, -38.829231, 0, ''), +(19685, 8, -1762.814209, 5261.098145, -38.848995, 0, ''), +(19685, 9, -1740.110474, 5268.858398, -40.208965, 0, ''), +(19685, 10, -1725.837402, 5270.936035, -40.208965, 0, ''), +(19685, 11, -1701.580322, 5290.323242, -40.209187, 0, ''), +(19685, 12, -1682.877808, 5291.406738, -34.429646, 0, ''), +(19685, 13, -1670.101685, 5291.201172, -32.786007, 0, ''), +(19685, 14, -1656.666870, 5294.333496, -37.862648, 0, ''), +(19685, 15, -1652.035767, 5295.413086, -40.245499, 0, ''), +(19685, 16, -1620.860596, 5300.133301, -40.208992, 0, ''), +(19685, 17, -1607.630981, 5293.983398, -38.577045, 5000, ''), +(19685, 18, -1607.630981, 5293.983398, -38.577045, 5000, ''), +(19685, 19, -1607.630981, 5293.983398, -38.577045, 5000, ''), +(19685, 20, -1622.140869, 5301.955566, -40.208897, 0, ''), +(19685, 21, -1621.131836, 5333.112793, -40.208897, 0, ''), +(19685, 22, -1637.598999, 5342.134277, -40.208790, 0, ''), +(19685, 23, -1648.521606, 5352.309570, -47.496170, 0, ''), +(19685, 24, -1654.606934, 5357.419434, -45.870892, 0, ''), +(19685, 25, -1633.670044, 5422.067871, -42.835541, 0, ''), +(19685, 26, -1656.567505, 5426.236328, -40.405815, 0, ''), +(19685, 27, -1664.932373, 5425.686523, -38.846405, 0, ''), +(19685, 28, -1681.406006, 5425.871094, -38.810928, 0, ''), +(19685, 29, -1730.875977, 5427.413574, -12.427910, 0, ''), +(19685, 30, -1743.509521, 5369.599121, -12.427910, 0, ''), +(19685, 31, -1877.217041, 5303.710449, -12.427989, 0, ''), +(19685, 32, -1890.371216, 5289.273438, -12.428268, 0, ''), +(19685, 33, -1905.505737, 5266.534668, 2.630672, 0, ''), +(19685, 34, -1909.381348, 5273.008301, 1.663714, 10000, ''), +(19685, 35, -1909.381348, 5273.008301, 1.663714, 12000, ''), +(19685, 36, -1909.381348, 5273.008301, 1.663714, 8000, ''), +(19685, 37, -1909.381348, 5273.008301, 1.663714, 15000, ''), +(19685, 38, -1927.561401, 5275.324707, 1.984987, 0, ''), +(19685, 39, -1927.385498, 5300.879883, -12.427236, 0, ''), +(19685, 40, -1921.063965, 5314.318359, -12.427236, 0, ''), +(19685, 41, -1965.425415, 5379.298828, -12.427236, 0, ''), +(19685, 42, -1981.233154, 5450.743652, -12.427236, 0, ''), +(19685, 43, -1958.022461, 5455.904297, 0.487659, 0, ''), +(19685, 44, -1951.991455, 5463.580566, 0.874490, 10000, ''), +(19685, 45, -1951.991455, 5463.580566, 0.874490, 12000, ''), +(19685, 46, -1968.730225, 5481.752930, -12.427846, 0, ''), +(19685, 47, -1881.839844, 5554.040039, -12.427846, 0, ''), +(19685, 48, -1841.566650, 5545.965332, -12.427846, 0, ''), +(19685, 49, -1837.658325, 5523.780273, 0.558756, 0, ''), +(19685, 50, -1831.321777, 5534.821777, 1.221819, 6000, ''), +(19685, 51, -1831.321777, 5534.821777, 1.221819, 8000, ''), +(19685, 52, -1831.321777, 5534.821777, 1.221819, 5000, ''), +(19685, 53, -1850.060669, 5472.610840, 0.857320, 6000, ''), +(19685, 54, -1850.060669, 5472.610840, 0.857320, 8000, ''), +(19685, 55, -1850.060669, 5472.610840, 0.857320, 9000, ''), +(19685, 56, -1850.060669, 5472.610840, 0.857320, 9000, ''), +(19685, 57, -1850.060669, 5472.610840, 0.857320, 4000, ''); + +DELETE FROM script_waypoint WHERE entry=20129; +INSERT INTO script_waypoint VALUES +(20129, 0, -8374.93,-4250.21, -204.38,5000, ''), +(20129, 1, -8374.93,-4250.21, -204.38,16000, ''), +(20129, 2, -8374.93,-4250.21, -204.38,10000, ''), +(20129, 3, -8374.93,-4250.21, -204.38,2000, ''), +(20129, 4, -8439.40,-4180.05, -209.25, 0, ''), +(20129, 5, -8437.82,-4120.84, -208.59,10000, ''), +(20129, 6, -8437.82,-4120.84, -208.59,16000, ''), +(20129, 7, -8437.82,-4120.84, -208.59,13000, ''), +(20129, 8, -8437.82,-4120.84, -208.59,18000, ''), +(20129, 9, -8437.82,-4120.84, -208.59,15000, ''), +(20129, 10, -8437.82,-4120.84, -208.59,2000, ''), +(20129, 11, -8467.26,-4198.63, -214.21, 0, ''), +(20129, 12, -8667.76,-4252.13, -209.56, 0, ''), +(20129, 13, -8703.71,-4234.58, -209.5,14000, ''), +(20129, 14, -8703.71,-4234.58, -209.5,2000, ''), +(20129, 15, -8642.81,-4304.37, -209.57, 0, ''), +(20129, 16, -8649.06,-4394.36, -208.46,6000, ''), +(20129, 17, -8649.06,-4394.36, -208.46,18000, ''), +(20129, 18, -8649.06,-4394.36, -208.46,2000, ''), +(20129, 19, -8468.72,-4437.67, -215.45, 0, ''), +(20129, 20, -8427.54,-4426, -211.13, 0, ''), +(20129, 21, -8364.83,-4393.32, -205.91, 0, ''), +(20129, 22, -8304.54,-4357.2, -208.2,18000, ''), +(20129, 23, -8304.54,-4357.2, -208.2,2000, ''), +(20129, 24, -8375.42,-4250.41, -205.14,5000, ''), +(20129, 25, -8375.42,-4250.41, -205.14,5000, ''); + +DELETE FROM script_waypoint WHERE entry=6575; +INSERT INTO script_waypoint VALUES +(6575, 0, 1945.81, -431.54, 16.36, 0, ''), +(6575, 1, 1946.21, -436.41, 16.36, 0, ''), +(6575, 2, 1950.01, -444.11, 14.63, 0, ''), +(6575, 3, 1956.08, -449.34, 13.12, 0, ''), +(6575, 4, 1966.59, -450.55, 11.27, 0, ''), +(6575, 5, 1976.09, -447.51, 11.27, 0, ''), +(6575, 6, 1983.42, -435.85, 11.27, 0, ''), +(6575, 7, 1978.17, -428.81, 11.27, 0, ''), +(6575, 8, 1973.97, -422.08, 9.04, 0, ''), +(6575, 9, 1963.84, -418.90, 6.17, 0, ''), +(6575, 10, 1961.22, -422.74, 6.17, 0, ''), +(6575, 11, 1964.80, -431.26, 6.17, 300000, ''); + +DELETE FROM script_waypoint WHERE entry=3849; +INSERT INTO script_waypoint VALUES +(3849, 0, -252.92, 2126.82, 81.17, 0, ''), +(3849, 1, -253.88, 2131.11, 81.21, 0, ''), +(3849, 2, -249.66, 2142.45, 87.01, 0, ''), +(3849, 3, -248.08, 2143.68, 87.01, 0, ''), +(3849, 4, -238.87, 2139.93, 87.01, 0, ''), +(3849, 5, -235.47, 2149.18, 90.59, 0, ''), +(3849, 6, -239.89, 2156.06, 90.62, 20000, 'SAY_FREE'); + +DELETE FROM script_waypoint WHERE entry=3850; +INSERT INTO script_waypoint VALUES +(3850, 0, -255.33, 2117.99, 81.17, 0, ''), +(3850, 1, -253.88, 2131.11, 81.21, 0, ''), +(3850, 2, -249.66, 2142.45, 87.01, 0, ''), +(3850, 3, -248.08, 2143.68, 87.01, 0, ''), +(3850, 4, -238.87, 2139.93, 87.01, 0, ''), +(3850, 5, -235.47, 2149.18, 90.59, 0, ''), +(3850, 6, -239.89, 2156.06, 90.62, 20000, 'SAY_FREE'); + +DELETE FROM script_waypoint WHERE entry=3849; +INSERT INTO script_waypoint VALUES +(3849, 0, -250.923431, 2116.264160, 81.179, 0, 'SAY_FREE_AD'), +(3849, 1, -255.048538, 2119.392578, 81.179, 0, ''), +(3849, 2, -254.129105, 2123.454346, 81.179, 0, ''), +(3849, 3, -253.897552, 2130.873535, 81.179, 0, ''), +(3849, 4, -249.889435, 2142.307861, 86.972, 0, ''), +(3849, 5, -248.204926, 2144.017090, 87.013, 0, ''), +(3849, 6, -240.552826, 2140.552734, 87.012, 0, ''), +(3849, 7, -237.513916, 2142.066650, 87.012, 0, ''), +(3849, 8, -235.638138, 2149.231689, 90.587, 0, ''), +(3849, 9, -237.188019, 2151.946045, 90.624, 0, ''), +(3849, 10, -241.162064, 2153.649658, 90.624, 0, 'SAY_OPEN_DOOR_AD'), +(3849, 11, -241.129700, 2154.562988, 90.624, 5000, ''), +(3849, 12, -241.129700, 2154.562988, 90.624, 5000, 'SAY_POST1_DOOR_AD'), +(3849, 13, -241.129700, 2154.562988, 90.624, 25000, 'SAY_POST2_DOOR_AD'); + +DELETE FROM script_waypoint WHERE entry=3850; +INSERT INTO script_waypoint VALUES +(3850, 0, -241.816895, 2122.904053, 81.179, 0, 'SAY_FREE_AS'), +(3850, 1, -247.139297, 2124.886475, 81.179, 0, ''), +(3850, 2, -253.179184, 2127.406738, 81.179, 0, ''), +(3850, 3, -253.897552, 2130.873535, 81.179, 0, ''), +(3850, 4, -249.889435, 2142.307861, 86.972, 0, ''), +(3850, 5, -248.204926, 2144.017090, 87.013, 0, ''), +(3850, 6, -240.552826, 2140.552734, 87.012, 0, ''), +(3850, 7, -237.513916, 2142.066650, 87.012, 0, ''), +(3850, 8, -235.638138, 2149.231689, 90.587, 0, ''), +(3850, 9, -237.188019, 2151.946045, 90.624, 0, ''), +(3850, 10, -241.162064, 2153.649658, 90.624, 0, 'SAY_OPEN_DOOR_AS'), +(3850, 11, -241.129700, 2154.562988, 90.624, 5000, 'cast'), +(3850, 12, -241.129700, 2154.562988, 90.624, 5000, 'SAY_POST_DOOR_AS'), +(3850, 13, -241.129700, 2154.562988, 90.624, 25000, ''); + +DELETE FROM script_waypoint WHERE entry=17876; +INSERT INTO script_waypoint VALUES +(17876, 0, 2230.91, 118.765, 82.2947,5000, ''), +(17876, 1, 2230.33, 114.980, 82.2946, 0, ''), +(17876, 2, 2233.36, 111.057, 82.2996, 0, ''), +(17876, 3, 2231.17, 108.486, 82.6624, 0, ''), +(17876, 4, 2220.22, 114.605, 89.4264, 0, ''), +(17876, 5, 2215.23, 115.990, 89.4549, 0, ''), +(17876, 6, 2210.00, 106.849, 89.4549, 0, ''), +(17876, 7, 2205.66, 105.234, 89.4549, 0, ''), +(17876, 8, 2192.26, 112.618, 89.4549, 0, 'spawn armorer'), +(17876, 9, 2181.28, 118.612, 89.4549,8000, 'get weapon'), +(17876, 10, 2181.62, 120.385, 89.4549,5000, 'get armor'), +(17876, 11, 2189.44, 113.922, 89.4549, 0, ''), +(17876, 12, 2195.63, 110.584, 89.4549, 0, ''), +(17876, 13, 2201.09, 115.115, 89.4549, 0, ''), +(17876, 14, 2204.34, 121.036, 89.4355, 0, ''), +(17876, 15, 2208.66, 129.127, 87.9560, 0, 'first ambush'), +(17876, 16, 2193.09, 137.940, 88.2164, 0, ''), +(17876, 17, 2173.39, 149.064, 87.9227, 0, ''), +(17876, 18, 2164.25, 137.965, 85.0595, 0, ''), +(17876, 19, 2149.31, 125.645, 77.0858, 0, ''), +(17876, 20, 2142.78, 127.173, 75.5954, 0, ''), +(17876, 21, 2139.28, 133.952, 73.6386, 0, 'second ambush'), +(17876, 22, 2139.54, 155.235, 67.1269, 0, ''), +(17876, 23, 2145.38, 167.551, 64.8974, 0, ''), +(17876, 24, 2134.28, 175.304, 67.9446, 0, ''), +(17876, 25, 2118.08, 187.387, 68.8141, 0, ''), +(17876, 26, 2105.88, 195.461, 65.1854, 0, 'third ambush'), +(17876, 27, 2096.77, 196.939, 65.2117, 0, ''), +(17876, 28, 2083.90, 209.395, 64.8736, 0, ''), +(17876, 29, 2067.84, 224.376, 64.8022,30000, 'meeting scarloc'), +(17876, 30, 2055.40, 242.90, 63.3418, 0, 'after skarloc'), +(17876, 31, 2039.20, 266.460, 63.0182,10000, 'mount up'), +(17876, 32, 2011.77, 278.478, 65.3388, 0, ''), +(17876, 33, 2005.08, 289.676, 66.1179, 0, ''), +(17876, 34, 2033.11, 337.450, 66.0948, 0, ''), +(17876, 35, 2070.30, 416.208, 66.0893, 0, ''), +(17876, 36, 2086.76, 469.768, 65.9182, 0, ''), +(17876, 37, 2101.70, 497.955, 61.7881, 0, 'road ambush'), +(17876, 38, 2133.39, 530.933, 55.3700,5000, ''), +(17876, 39, 2157.91, 559.635, 48.5157, 0, ''), +(17876, 40, 2167.34, 586.191, 42.4394, 0, ''), +(17876, 41, 2174.17, 637.643, 33.9002, 0, ''), +(17876, 42, 2179.31, 656.053, 34.723, 0, ''), +(17876, 43, 2183.65, 670.941, 34.0318, 0, ''), +(17876, 44, 2201.50, 668.616, 36.1236, 0, ''), +(17876, 45, 2221.56, 652.747, 36.6153, 0, ''), +(17876, 46, 2238.97, 640.125, 37.2214, 0, ''), +(17876, 47, 2251.17, 620.574, 40.1473, 0, ''), +(17876, 48, 2261.98, 595.303, 41.4117, 0, ''), +(17876, 49, 2278.67, 560.172, 38.9090, 0, ''), +(17876, 50, 2336.72, 528.327, 40.9369, 0, ''), +(17876, 51, 2381.04, 519.612, 37.7312, 0, ''), +(17876, 52, 2412.20, 515.425, 39.2068, 0, ''), +(17876, 53, 2452.39, 516.174, 42.9387, 0, ''), +(17876, 54, 2467.38, 539.389, 47.4992, 0, ''), +(17876, 55, 2470.70, 554.333, 46.6668, 0, ''), +(17876, 56, 2478.07, 575.321, 55.4549, 0, ''), +(17876, 57, 2480.00, 585.408, 56.6921, 0, ''), +(17876, 58, 2482.67, 608.817, 55.6643, 0, ''), +(17876, 59, 2485.62, 626.061, 58.0132, 2000, 'dismount'), +(17876, 60, 2486.91, 626.356, 58.0761, 0, 'scare horse'), +(17876, 61, 2488.58, 660.940, 57.3913, 0, ''), +(17876, 62, 2502.56, 686.059, 55.6252, 0, ''), +(17876, 63, 2502.08, 694.360, 55.5083, 0, ''), +(17876, 64, 2491.46, 694.321, 55.7163, 0, ''), +(17876, 65, 2491.10, 703.300, 55.7630, 0, ''), +(17876, 66, 2485.64, 702.992, 55.7917, 0, ''), +(17876, 67, 2479.10, 695.291, 55.7901, 10000, ''), +(17876, 68, 2476.75, 693.689, 55.7960, 0, 'spawn mobs'), +(17876, 69, 2475.39, 695.983, 55.8146, 0, ''), +(17876, 70, 2477.75, 694.473, 55.7945, 0, ''), +(17876, 71, 2481.27, 697.747, 55.7910, 0, 'mobs in doorway'), +(17876, 72, 2486.31, 703.131, 55.7861, 5000, ''), +(17876, 73, 2490.76, 703.511, 55.7662, 0, ''), +(17876, 74, 2491.30, 694.792, 55.7195, 0, ''), +(17876, 75, 2518.69, 693.876, 55.1383, 0, ''), +(17876, 76, 2531.33, 681.914, 55.1383, 0, ''), +(17876, 77, 2568.25, 682.654, 55.1778, 0, ''), +(17876, 78, 2589.61, 689.981, 55.1421, 0, ''), +(17876, 79, 2634.74, 679.833, 54.6613, 0, ''), +(17876, 80, 2630.41, 661.464, 54.2761, 0, ''), +(17876, 81, 2629.00, 656.982, 56.0651, 0, ''), +(17876, 82, 2620.84, 633.007, 56.0300, 3000, 'stop in church'), +(17876, 83, 2622.99, 639.178, 56.0300, 0, 'summon'), +(17876, 84, 2628.73, 656.693, 56.0610, 5000, ''), +(17876, 85, 2630.34, 661.135, 54.2738, 0, ''), +(17876, 86, 2635.38, 672.243, 54.4508, 0, ''), +(17876, 87, 2644.13, 668.158, 55.3797, 0, ''), +(17876, 88, 2646.82, 666.740, 56.9898, 0, ''), +(17876, 89, 2658.22, 665.432, 57.1725, 0, ''), +(17876, 90, 2661.88, 674.849, 57.1725, 0, ''), +(17876, 91, 2656.23, 677.208, 57.1725, 0, ''), +(17876, 92, 2652.28, 670.270, 61.9353, 0, ''), +(17876, 93, 2650.79, 664.290, 61.9302, 0, 'summon inn'), +(17876, 94, 2658.19, 660.454, 61.9320, 5000, ''), +(17876, 95, 2660.57, 659.173, 61.9370, 0, 'speak with Taretha'), +(17876, 96, 2658.19, 660.454, 61.9320, 5000, 'epoch calls'), +(17876, 97, 2659.84, 659.482, 61.9361, 5000, 'taretha "dies"'), +(17876, 98, 2654.28, 662.722, 61.9313, 0, ''), +(17876, 99, 2652.37, 670.561, 61.9368, 0, ''), +(17876, 100, 2656.05, 676.761, 57.1727, 0, ''), +(17876, 101, 2658.49, 677.166, 57.1727, 0, ''), +(17876, 102, 2659.28, 667.117, 57.1727, 0, ''), +(17876, 103, 2649.71, 665.387, 57.1727, 0, ''), +(17876, 104, 2634.79, 672.964, 54.4577, 0, 'outside inn'), +(17876, 105, 2635.06, 673.892, 54.4713, 30000, 'getting ready'), +(17876, 106, 2634.79, 672.964, 54.4577, 60000, 'when all dead and meet Taretha'), +(17876, 107, 2631.72, 665.629, 54.2923, 0, 'run off'), +(17876, 108, 2647.40, 640.530, 55.7634, 0, ''); + +DELETE FROM script_waypoint WHERE entry=18887; +INSERT INTO script_waypoint VALUES +(18887, 0, 2650.06, 665.473, 61.9305, 0, ''), +(18887, 1, 2652.44, 670.761, 61.9370, 0, ''), +(18887, 2, 2655.96, 676.913, 57.1725, 0, ''), +(18887, 3, 2659.40, 677.317, 57.1725, 0, ''), +(18887, 4, 2651.75, 664.482, 57.1725, 0, ''), +(18887, 5, 2647.49, 666.595, 57.0824, 0, ''), +(18887, 6, 2644.37, 668.167, 55.4182, 0, ''), +(18887, 7, 2640.96, 669.890, 54.7567, 60000, ''); + +DELETE FROM script_waypoint WHERE entry=10096; +INSERT INTO script_waypoint VALUES +(10096, 0, 604.802673, -191.081985, -54.058590, 0,'ring'), +(10096, 1, 604.072998, -222.106918, -52.743759, 0,'first gate'), +(10096, 2, 621.400391, -214.499054, -52.814453, 0,'hiding in corner'), +(10096, 3, 601.300781, -198.556992, -53.950256, 0,'ring'), +(10096, 4, 631.818359, -180.548126, -52.654770, 0,'second gate'), +(10096, 5, 627.390381, -201.075974, -52.692917, 0,'hiding in corner'); + +DELETE FROM script_waypoint WHERE entry=9503; +INSERT INTO script_waypoint VALUES +(9503, 0, 883.294861, -188.926300, -43.703655, 0,''), +(9503, 1, 872.763550, -185.605621, -43.703655, 5000,'b1'), +(9503, 2, 867.923401, -188.006393, -43.703655, 5000,'b2'), +(9503, 3, 863.295898, -190.795212, -43.703655, 5000,'b3'), +(9503, 4, 856.139587, -194.652756, -43.703655, 5000,'b4'), +(9503, 5, 851.878906, -196.928131, -43.703655, 15000,'b5'), +(9503, 6, 877.035217, -187.048080, -43.703655, 0,''), +(9503, 7, 891.198000, -197.924000, -43.620400, 0,'home'); + +DELETE FROM script_waypoint WHERE entry=12423; +INSERT INTO script_waypoint VALUES +(12423, 0, -9509.72, -147.03, 58.74, 0, ''), +(12423, 1, -9517.07, -172.82, 58.66, 0, ''); +DELETE FROM script_waypoint WHERE entry=12427; +INSERT INTO script_waypoint VALUES +(12427, 0, -5689.20, -456.44, 391.08, 0, ''), +(12427, 1, -5700.37, -450.77, 393.19, 0, ''); +DELETE FROM script_waypoint WHERE entry=12428; +INSERT INTO script_waypoint VALUES +(12428, 0, 2454.09, 361.26, 31.51, 0, ''), +(12428, 1, 2472.03, 378.08, 30.98, 0, ''); +DELETE FROM script_waypoint WHERE entry=12429; +INSERT INTO script_waypoint VALUES +(12429, 0, 9654.19, 909.58, 1272.11, 0, ''), +(12429, 1, 9642.53, 908.11, 1269.10, 0, ''); +DELETE FROM script_waypoint WHERE entry=12430; +INSERT INTO script_waypoint VALUES +(12430, 0, 161.65, -4779.34, 14.64, 0, ''), +(12430, 1, 140.71, -4813.56, 17.04, 0, ''); +/* EOF */
\ No newline at end of file diff --git a/sql/world_scripts_full.sql b/sql/world_scripts_full.sql index e5e11b6436a..8b28c3bc370 100644 --- a/sql/world_scripts_full.sql +++ b/sql/world_scripts_full.sql @@ -26,8 +26,8 @@ UPDATE `gameobject_template` SET `ScriptName`='go_jump_a_tron' WHERE `entry`=183 UPDATE `gameobject_template` SET `ScriptName`='go_ethereum_prison' WHERE `entry` IN (184418,184419,184420,184421,184422,184423,184424,184425,184426,184427,184428,184429,184430,184431); UPDATE `gameobject_template` SET `ScriptName`='go_sacred_fire_of_life' WHERE `entry`=175944; UPDATE `gameobject_template` SET `ScriptName`='go_skull_pile' WHERE `entry`=185913; -UPDATE `gameobject_template` SET `ScriptName`='go_tele_to_dalaran_crystal' WHERE entry=191230; -UPDATE `gameobject_template` SET `ScriptName`='go_tele_to_violet_stand' WHERE entry=191229; +UPDATE `gameobject_template` SET `ScriptName`='go_tele_to_dalaran_crystal' WHERE `entry`=191230; +UPDATE `gameobject_template` SET `ScriptName`='go_tele_to_violet_stand' WHERE `entry`=191229; UPDATE `gameobject_template` SET `ScriptName`='go_orb_of_the_blue_flight' WHERE `entry`=188415; UPDATE `gameobject_template` SET `ScriptName`='go_acherus_soul_prison' WHERE `entry` IN (191577,191580,191581,191582,191583,191584,191585,191586,191587,191588,191589,191590); @@ -98,6 +98,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_brewfest_reveler' WHERE `entry` UPDATE `creature_template` SET `ScriptName`='npc_snake_trap_serpents' WHERE `entry` IN (19921, 19833); UPDATE `creature_template` SET `ScriptName`='npc_unworthy_initiate' WHERE `entry` IN (29519,29520,29565,29566,29567); UPDATE `creature_template` SET `ScriptName`='npc_unworthy_initiate_anchor' WHERE `entry`=29521; +UPDATE `creature_template` SET `ScriptName`='npc_kingdom_of_dalaran_quests' WHERE `entry` IN (29169,23729,26673,27158,29158,29161,26471,29155,29159,29160,29162); /* */ /* ZONE */ @@ -146,6 +147,13 @@ UPDATE `creature_template` SET `ScriptName`='boss_blackheart_the_inciter' WHERE UPDATE `creature_template` SET `ScriptName`='boss_ambassador_hellmaw' WHERE `entry`=18731; UPDATE `creature_template` SET `ScriptName`='mob_voidtraveler' WHERE `entry`=19226; +/* AZJOL-NERUB */ + +/* AHN'KAHET: THE OLD KINGDOM */ +UPDATE `creature_template` SET `ScriptName`='boss_elder_nadox' WHERE `entry`=29309; +UPDATE `creature_template` SET `ScriptName`='mob_ahnkahar_nerubian' WHERE `entry` IN (30176,30178); +UPDATE `instance_template` SET `script`='instance_ahnkahet' WHERE `map`=619; + /* AZSHARA */ UPDATE `creature_template` SET `ScriptName`='mobs_spitelashes' WHERE `entry` IN (6190,6193,6194,6195,6196,7885,7886,12204,12205); UPDATE `creature_template` SET `ScriptName`='npc_loramus_thalipedes' WHERE `entry`=7783; @@ -208,6 +216,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_enslaved_soul' WHERE `entry`=23 UPDATE `creature_template` SET `ScriptName`='mob_doom_blossom' WHERE `entry`=23123; -- Doom Blossoms in Teron Gorefiend's encounter UPDATE `creature_template` SET `ScriptName`='npc_spirit_of_olum' WHERE `entry`=23411; UPDATE `creature_template` SET `ScriptName`='mob_shadowy_construct' WHERE `entry`=23111; +UPDATE `creature_template` SET `ScriptName`='mob_parasitic_shadowfiend' WHERE `entry`=23498; /* BLACKFATHOM DEPTHS */ @@ -344,7 +353,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_saat' WHERE `entry`=20201; /* THE UNDERBOG */ UPDATE `creature_template` SET `ScriptName`='mob_underbog_mushroom' WHERE `entry`=17990; UPDATE `creature_template` SET `ScriptName`='boss_hungarfen' WHERE `entry`=17770; -UPDATE `creature_template` SET `ScriptName`='boss_the_black_stalker' WHERE `entry`='17882'; +UPDATE `creature_template` SET `ScriptName`='boss_the_black_stalker' WHERE `entry`=17882; /* THE STEAMVAULT */ UPDATE `instance_template` SET `script`='instance_steam_vault' WHERE `map`=545; @@ -361,8 +370,8 @@ UPDATE `creature_template` SET `ScriptName`='boss_hydross_the_unstable' WHERE `e /* Leotheras the Blind event */ UPDATE `creature_template` SET `ScriptName`='boss_leotheras_the_blind' WHERE `entry`=21215; UPDATE `creature_template` SET `ScriptName`='boss_leotheras_the_blind_demonform' WHERE `entry`=21845; -UPDATE `creature_template` SET `ScriptName`='mob_greyheart_spellbinder' WHERE `entry`='21806'; -UPDATE `creature_template` SET `ScriptName`='mob_inner_demon' WHERE entry=21857; +UPDATE `creature_template` SET `ScriptName`='mob_greyheart_spellbinder' WHERE `entry`=21806; +UPDATE `creature_template` SET `ScriptName`='mob_inner_demon' WHERE `entry`=21857; /* Fathom-lord Karathress event */ UPDATE `creature_template` SET `ScriptName`='boss_fathomlord_karathress' WHERE `entry`=21214; UPDATE `creature_template` SET `ScriptName`='boss_fathomguard_sharkkis' WHERE `entry`=21966; @@ -381,7 +390,7 @@ UPDATE `creature_template` SET `ScriptName`='mob_enchanted_elemental' WHERE `ent UPDATE `creature_template` SET `ScriptName`='mob_tainted_elemental' WHERE `entry`=22009; UPDATE `creature_template` SET `ScriptName`='mob_coilfang_elite' WHERE `entry`=22055; UPDATE `creature_template` SET `ScriptName`='mob_coilfang_strider' WHERE `entry`=22056; -UPDATE `creature_template` SET `ScriptName`='mob_toxic_sporebat' WHERE entry=22140; +UPDATE `creature_template` SET `ScriptName`='mob_toxic_sporebat' WHERE `entry`=22140; UPDATE `creature_template` SET `ScriptName`='mob_shield_generator_channel' WHERE `entry`=19870; /* DARKSHORE */ @@ -499,6 +508,8 @@ UPDATE `creature_template` SET `ScriptName`='npc_wing_commander_brack' WHERE `en UPDATE `creature_template` SET `ScriptName`='npc_wing_commander_dabiree' WHERE `entry`=19409; UPDATE `creature_template` SET `ScriptName`='npc_gryphoneer_windbellow' WHERE `entry`=20235; UPDATE `creature_template` SET `ScriptName`='npc_wounded_blood_elf' WHERE `entry`=16993; +UPDATE `creature_template` SET `ScriptName`='npc_aeranas' WHERE `entry`=17085; +UPDATE `gameobject_template` SET `ScriptName`='go_haaleshi_altar' WHERE `entry`=181606; /* HILLSBRAD FOOTHILLS */ @@ -611,8 +622,8 @@ UPDATE `creature_template` SET `ScriptName`='npc_clintar_spirit' WHERE `entry`=2 /* MULGORE */ UPDATE `creature_template` SET `ScriptName`='npc_skorn_whitecloud' WHERE `entry`=3052; -UPDATE `creature_template` SET `ScriptName`='npc_kyle_frenzied' WHERE `entry`='23616'; -UPDATE `creature_template` SET `ScriptName`='npc_plains_vision' WHERE `entry`='2983'; +UPDATE `creature_template` SET `ScriptName`='npc_kyle_frenzied' WHERE `entry`=23616; +UPDATE `creature_template` SET `ScriptName`='npc_plains_vision' WHERE `entry`=2983; /* NAGRAND */ UPDATE `creature_template` SET `ScriptName`='mob_lump' WHERE `entry`=18351; @@ -634,6 +645,7 @@ UPDATE `creature_template` SET `ScriptName`='boss_heigan' WHERE `entry`=15936; UPDATE `creature_template` SET `ScriptName`='boss_loatheb' WHERE `entry`=16011; UPDATE `creature_template` SET `ScriptName`='boss_razuvious' WHERE `entry`=16061; UPDATE `creature_template` SET `ScriptName`='boss_gothik' WHERE `entry`=16060; +UPDATE `creature_template` SET `ScriptName`='mob_gothik_minion' where `entry` IN (16124,16125,16126,16127,16148,16149,16150); UPDATE `creature_template` SET `ScriptName`='boss_thane_korthazz' WHERE `entry`=16064; UPDATE `creature_template` SET `ScriptName`='boss_sir_zeliek' WHERE `entry`=16063; UPDATE `creature_template` SET `ScriptName`='boss_lady_blaumeux' WHERE `entry`=16065; @@ -657,6 +669,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_veronia' WHERE `entry`=20162; UPDATE `creature_template` SET `ScriptName`='mob_phase_hunter' WHERE `entry`=18879; UPDATE `creature_template` SET `ScriptName`='npc_professor_dabiri' WHERE `entry`=20907; UPDATE `creature_template` SET `ScriptName`='npc_bessy' WHERE `entry`=20415; +UPDATE `creature_template` SET `ScriptName`='npc_commander_dawnforge' WHERE `entry`=19831; /* ONYXIA'S LAIR */ UPDATE `creature_template` SET `ScriptName`='boss_onyxia' WHERE `entry`=10184; @@ -738,19 +751,19 @@ UPDATE `creature_template` SET `ScriptName`='mob_enslaved_netherwing_drake' WHER UPDATE `creature_template` SET `ScriptName`='npc_overlord_morghor' WHERE `entry`=23139; UPDATE `creature_template` SET `ScriptName`='mob_illidari_spawn' WHERE `entry` IN (22075, 22074, 19797); UPDATE `creature_template` SET `ScriptName`='mob_torloth_the_magnificent' WHERE `entry`=22076; -UPDATE `creature_template` SET `ScriptName`='npc_lord_illidan_stormrage' WHERE `entry`='22083'; -UPDATE `creature_template` SET `ScriptName`='npc_earthmender_wilda' WHERE `entry`='21027'; +UPDATE `creature_template` SET `ScriptName`='npc_lord_illidan_stormrage' WHERE `entry`=22083; +UPDATE `creature_template` SET `ScriptName`='npc_earthmender_wilda' WHERE `entry`=21027; UPDATE `creature_template` SET `ScriptName`='npc_enraged_spirit' WHERE `entry` IN (21050, 21061, 21060, 21059); UPDATE `creature_template` SET `ScriptName`='mob_dragonmaw_peon' WHERE `entry`=22252; UPDATE `creature_template` SET `ScriptName`='npc_karynaku' WHERE `entry`=22112; /* SHATTRATH */ -UPDATE `creature_template` SET `ScriptName`='npc_raliq_the_drunk' WHERE `entry`='18585'; -UPDATE `creature_template` SET `ScriptName`='npc_salsalabim' WHERE `entry`='18584'; +UPDATE `creature_template` SET `ScriptName`='npc_raliq_the_drunk' WHERE `entry`=18585; +UPDATE `creature_template` SET `ScriptName`='npc_salsalabim' WHERE `entry`=18584; UPDATE `creature_template` SET `ScriptName`='npc_shattrathflaskvendors' WHERE `entry` IN (23483,23484); -UPDATE `creature_template` SET `ScriptName`='npc_zephyr' WHERE `entry`='25967'; -UPDATE `creature_template` SET `ScriptName`='npc_kservant' WHERE `entry`='19685'; -UPDATE `creature_template` SET `ScriptName`='npc_dirty_larry' WHERE `entry`='19720'; +UPDATE `creature_template` SET `ScriptName`='npc_zephyr' WHERE `entry`=25967; +UPDATE `creature_template` SET `ScriptName`='npc_kservant' WHERE `entry`=19685; +UPDATE `creature_template` SET `ScriptName`='npc_dirty_larry' WHERE `entry`=19720; UPDATE `creature_template` SET `ScriptName`='npc_ishanah' WHERE `entry`=18538; UPDATE `creature_template` SET `ScriptName`='npc_khadgar' WHERE `entry`=18166; @@ -805,8 +818,8 @@ UPDATE `creature_template` SET `ScriptName`='mob_freed_soul' WHERE `entry`=11136 /* SUNKEN TEMPLE */ /* SUNWELL PLATEAU */ -UPDATE `instance_template` SET `script` ='instance_sunwell_plateau' WHERE map =580; -UPDATE `creature_template` SET `ScriptName`='boss_brutallus' WHERE `entry` =24882; +UPDATE `instance_template` SET `script`='instance_sunwell_plateau' WHERE `map`=580; +UPDATE `creature_template` SET `ScriptName`='boss_brutallus' WHERE `entry`=24882; UPDATE `creature_template` SET `ScriptName`='boss_felmyst' WHERE `entry`=25038; UPDATE `creature_template` SET `ScriptName`='mob_felmyst_vapor' WHERE `entry`=25265; UPDATE `creature_template` SET `ScriptName`='mob_felmyst_trail' WHERE `entry`=25267; @@ -827,6 +840,10 @@ UPDATE `creature_template` SET `ScriptName`='npc_dark_fiend' WHERE `entry`=25744 UPDATE `creature_template` SET `ScriptName`='boss_muru' WHERE `entry`=25741; UPDATE `creature_template` SET `ScriptName`='boss_entropius' WHERE `entry`=25840; UPDATE `creature_template` SET `ScriptName`='npc_muru_portal' WHERE `entry`=25770; +UPDATE `creature_template` SET `ScriptName`='boss_kalecgos' WHERE `entry`=24850; +UPDATE `creature_template` SET `ScriptName`='boss_sathrovarr' WHERE `entry`=24892; +UPDATE `creature_template` SET `ScriptName`='boss_kalec' WHERE `entry`=24891; +UPDATE `creature_template` SET `ScriptName`='npc_blackhole' WHERE `entry`=25855; /* SWAMP OF SORROWS */ @@ -925,7 +942,7 @@ UPDATE `creature_template` SET `ScriptName`='mob_unkor_the_ruthless' WHERE `entr /* THOUSAND NEEDLES */ UPDATE `creature_template` SET `ScriptName`='npc_swiftmountain' WHERE `entry`=10427; -UPDATE `creature_template` SET `ScriptName` ='npc_plucky' WHERE `entry`='6626'; +UPDATE `creature_template` SET `ScriptName`='npc_plucky' WHERE `entry`=6626; /* THUNDER BLUFF */ UPDATE `creature_template` SET `ScriptName`='npc_cairne_bloodhoof' WHERE `entry`=3057; @@ -953,16 +970,20 @@ UPDATE `creature_template` SET `ScriptName`='npc_highborne_lamenter' WHERE `entr UPDATE `creature_template` SET `ScriptName`='npc_parqual_fintallas' WHERE `entry`=4488; /* UTGARDE KEEP */ -UPDATE `creature_template` SET `scriptname`='boss_keleseth' WHERE `entry`='23953'; -UPDATE `creature_template` SET `scriptname`='mob_frost_tomb' WHERE `entry`='23965'; -UPDATE `instance_template` SET `script`='instance_utgarde_keep' WHERE `map`= '574'; +UPDATE `creature_template` SET `scriptname`='boss_keleseth' WHERE `entry`=23953; +UPDATE `creature_template` SET `scriptname`='mob_frost_tomb' WHERE `entry`=23965; +UPDATE `instance_template` SET `script`='instance_utgarde_keep' WHERE `map`=574; UPDATE `creature_template` SET `ScriptName`='mob_vrykul_skeleton' WHERE `entry`=23970; -UPDATE `creature_template` SET `ScriptName`= 'boss_skarvald_the_constructor' WHERE `entry` IN (24200,27390); -UPDATE `creature_template` SET `ScriptName`= 'boss_dalronn_the_controller' WHERE `entry` IN (24201,27389); +UPDATE `creature_template` SET `ScriptName`='boss_skarvald_the_constructor' WHERE `entry` IN (24200,27390); +UPDATE `creature_template` SET `ScriptName`='boss_dalronn_the_controller' WHERE `entry` IN (24201,27389); UPDATE `creature_template` SET `ScriptName`='boss_ingvar_the_plunderer' WHERE `entry`=23954; UPDATE `creature_template` SET `ScriptName`='mob_annhylde_the_caller' WHERE `entry`=24068; UPDATE `creature_template` SET `ScriptName`='mob_ingvar_throw_dummy' WHERE `entry`=23997; -UPDATE `creature_template` SET `ScriptName`='npc_dragonflayer_forge_master' WHERE `entry` = 24079; +UPDATE `creature_template` SET `ScriptName`='npc_dragonflayer_forge_master' WHERE `entry`=24079; + +/* VAULT OF ARCHAVON */ +UPDATE `creature_template` SET `ScriptName`='boss_archavon' WHERE `entry`=31125; +UPDATE `creature_template` SET `ScriptName`='mob_archavon_warder' WHERE `entry`=32353; /* WAILING CAVERNS */ @@ -996,10 +1017,10 @@ UPDATE `creature_template` SET `ScriptName`='mob_janalai_hatcher' WHERE `entry`= UPDATE `creature_template` SET `ScriptName`='mob_janalai_hatchling' WHERE `entry`=23598; UPDATE `creature_template` SET `ScriptName`='mob_janalai_egg' WHERE `entry`=23817; UPDATE `creature_template` SET `ScriptName`='npc_forest_frog' WHERE `entry`=24396; -UPDATE `creature_template` SET `ScriptName`='boss_akilzon' WHERE entry=23574; +UPDATE `creature_template` SET `ScriptName`='boss_akilzon' WHERE `entry`=23574; UPDATE `creature_template` SET `ScriptName`='mob_akilzon_eagle' WHERE `entry`=24858; -UPDATE `creature_template` SET `ScriptName`='boss_halazzi' WHERE `entry`='23577'; -UPDATE `creature_template` SET `ScriptName`='mob_halazzi_lynx' WHERE `entry`='24143'; +UPDATE `creature_template` SET `ScriptName`='boss_halazzi' WHERE `entry`=23577; +UPDATE `creature_template` SET `ScriptName`='mob_halazzi_lynx' WHERE `entry`=24143; UPDATE `creature_template` SET `ScriptName`='boss_hexlord_malacrass' WHERE `entry` =24239; UPDATE `creature_template` SET `ScriptName`='boss_alyson_antille' WHERE `entry` =24240; UPDATE `creature_template` SET `ScriptName`='boss_thurg' WHERE `entry` =24241; @@ -1010,8 +1031,8 @@ UPDATE `creature_template` SET `ScriptName`='boss_fenstalker' WHERE `entry` =242 UPDATE `creature_template` SET `ScriptName`='boss_darkheart' WHERE `entry` =24246; UPDATE `creature_template` SET `ScriptName`='boss_koragg' WHERE `entry` =24247; UPDATE `creature_template` SET `ScriptName`='boss_zuljin' WHERE `entry` =23863; -UPDATE `creature_template` SET `ScriptName`='do_nothing' WHERE `entry`='24187'; -UPDATE `creature_template` SET `ScriptName`='mob_zuljin_vortex' WHERE `entry`='24136'; +UPDATE `creature_template` SET `ScriptName`='do_nothing' WHERE `entry`=24187; +UPDATE `creature_template` SET `ScriptName`='mob_zuljin_vortex' WHERE `entry`=24136; UPDATE `creature_template` SET `ScriptName`='npc_zulaman_hostage' WHERE `entry` IN (23790, 23999, 24024, 24001); /* ZUL'FARRAK */ diff --git a/sql/world_scripts_structure.sql b/sql/world_scripts_structure.sql index 7ac482bb493..a9fea4e7514 100644 --- a/sql/world_scripts_structure.sql +++ b/sql/world_scripts_structure.sql @@ -1,25 +1,5 @@ -DROP TABLE IF EXISTS `custom_texts`; -CREATE TABLE IF NOT EXISTS `custom_texts` ( - `entry` mediumint(8) NOT NULL, - `content_default` text NOT NULL, - `content_loc1` text, - `content_loc2` text, - `content_loc3` text, - `content_loc4` text, - `content_loc5` text, - `content_loc6` text, - `content_loc7` text, - `content_loc8` text, - `sound` mediumint(8) unsigned NOT NULL DEFAULT '0', - `type` tinyint(3) unsigned NOT NULL DEFAULT '0', - `language` tinyint(3) unsigned NOT NULL DEFAULT '0', - `emote` tinyint(3) unsigned NOT NULL DEFAULT '0', - `comment` text, - PRIMARY KEY (`entry`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Custom Texts'; - -DROP TABLE IF EXISTS `eventai_scripts`; -CREATE TABLE `eventai_scripts` ( +DROP TABLE IF EXISTS `creature_ai_scripts`; +CREATE TABLE `creature_ai_scripts` ( `id` int(11) unsigned NOT NULL COMMENT 'Identifier' AUTO_INCREMENT, `creature_id` int(11) unsigned NOT NULL default '0' COMMENT 'Creature Template Identifier', `event_type` tinyint(5) unsigned NOT NULL default '0' COMMENT 'Event Type', @@ -46,8 +26,8 @@ CREATE TABLE `eventai_scripts` ( PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='EventAI Scripts'; -DROP TABLE IF EXISTS `eventai_summons`; -CREATE TABLE `eventai_summons` ( +DROP TABLE IF EXISTS `creature_ai_summons`; +CREATE TABLE `creature_ai_summons` ( `id` int(11) unsigned NOT NULL COMMENT 'Location Identifier' AUTO_INCREMENT, `position_x` float NOT NULL default '0', `position_y` float NOT NULL default '0', @@ -58,8 +38,8 @@ CREATE TABLE `eventai_summons` ( PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='EventAI Summoning Locations'; -DROP TABLE IF EXISTS `eventai_texts`; -CREATE TABLE `eventai_texts` ( +DROP TABLE IF EXISTS `creature_ai_texts`; +CREATE TABLE `creature_ai_texts` ( `entry` mediumint(8) NOT NULL, `content_default` text NOT NULL, `content_loc1` text, @@ -78,41 +58,9 @@ CREATE TABLE `eventai_texts` ( PRIMARY KEY (`entry`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Texts'; -DROP TABLE IF EXISTS `script_texts`; -CREATE TABLE IF NOT EXISTS `script_texts` ( - `entry` mediumint(8) NOT NULL, - `content_default` text NOT NULL, - `content_loc1` text, - `content_loc2` text, - `content_loc3` text, - `content_loc4` text, - `content_loc5` text, - `content_loc6` text, - `content_loc7` text, - `content_loc8` text, - `sound` mediumint(8) unsigned NOT NULL DEFAULT '0', - `type` tinyint(3) unsigned NOT NULL DEFAULT '0', - `language` tinyint(3) unsigned NOT NULL DEFAULT '0', - `emote` tinyint(3) unsigned NOT NULL DEFAULT '0', - `comment` text, - PRIMARY KEY (`entry`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Texts'; - -DROP TABLE IF EXISTS script_waypoint; -CREATE TABLE script_waypoint ( - entry mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'creature_template entry', - pointid mediumint(8) unsigned NOT NULL DEFAULT '0', - location_x float NOT NULL DEFAULT '0', - location_y float NOT NULL DEFAULT '0', - location_z float NOT NULL DEFAULT '0', - waittime int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'waittime in millisecs', - point_comment text, - PRIMARY KEY (entry, pointid) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Creature waypoints'; - - -DROP TABLE IF EXISTS `sd2_db_version`; -DROP TABLE IF EXISTS `script_db_version`; -CREATE TABLE `script_db_version` ( -`version` varchar(255) NOT NULL default '' COMMENT 'Database version string' -) ENGINE=MyISAM DEFAULT CHARSET=utf8;
\ No newline at end of file +CREATE TABLE IF NOT EXISTS `version` ( + `core_version` varchar(120) default NULL COMMENT 'Core revision dumped at startup.', + `core_revision` BIGINT UNSIGNED default '0', + `db_version` varchar(120) default NULL COMMENT 'Version of world DB.', + `script_version` varchar(120) default NULL COMMENT 'Version of scripts DB.' +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Version Notes';
\ No newline at end of file diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql index 915aabeb669..12a3f5d2745 100644 --- a/sql/world_spell_full.sql +++ b/sql/world_spell_full.sql @@ -1,9 +1,8 @@ --- up to TC2 3019 TC1 1434 +-- Up to TC2 3312 -- -------- -- LINKED -- -------- - # spell1 / spell2 / type # + + 0 caster casts 2 when casts 1 # + - 0 caster removes aura 2 when casts 1 @@ -136,6 +135,8 @@ INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comm ( 46262, 46265, 0, 'Void Zone Visual'), -- naxx (-28169, 28206, 0, 'Mutating Injection - Mutagen Explosion'), +( 28732,-28798, 1, 'Widow\'s Embrace - Frenzy'), +( 54097,-54100, 1, 'Widow\'s Embrace - Frenzy (H)'), (-28169, 28240, 0, 'Mutating Injection - Poison Cloud'); @@ -151,15 +152,59 @@ INSERT INTO creature_template (entry, spell1, flags_extra, scriptname) VALUES (23069, 40029, 128, ''), # demon fire (24187, 43218, 128, ''), # pillar of fire (17662, 30914, 128, ''), # Broggok Poison Cloud -(25879, 46262, 128, '') # Void Zone Periodic +(25879, 46262, 128, ''), # Void Zone Periodic +(16363, 28158, 128, ''), # Grobbulus Cloud +(29379, 54362, 128, '') # Grobbulus Cloud (H) +ON DUPLICATE KEY UPDATE +spell1 = VALUES(spell1), +flags_extra = VALUES(flags_extra), +scriptname = VALUES(scriptname); + +INSERT INTO creature_template (entry, spell1, spell2, flags_extra, scriptname) VALUES +(16474, 28547, 1000, 128, 'trigger_periodic'), # Blizzard (Sapphiron) +(30000, 55699, 1000, 128, 'trigger_periodic') # Blizzard (Sapphiron) (H) ON DUPLICATE KEY UPDATE spell1 = VALUES(spell1), +spell2 = VALUES(spell2), flags_extra = VALUES(flags_extra), scriptname = VALUES(scriptname); -UPDATE creature_template SET spell1 = 28158, spell2 = 54362, flags_extra = 128 WHERE entry = 16363; UPDATE creature_template SET speed = 1.0 WHERE entry = 23095; # molten_flame +INSERT INTO creature_template (entry, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8) VALUES +(16573, 15284, 28991, 28969, 34970, 0, 0, 0, 28864), # Crypt Guard +(29256, 15284, 28991, 56098, 34970, 0, 0, 0, 28864), # Crypt Guard (H) +(16506, 54095, 0, 0, 0, 0, 0, 0, 28732), # Naxxramas Worshipper +(29274, 54096, 0, 0, 0, 0, 0, 0, 54097), # Naxxramas Worshipper (H) +(16984, 15496, 0, 0, 0, 0, 0, 0, 0), # Plagued Warrior +(29632, 15496, 0, 0, 0, 0, 0, 0, 0), # Plagued Warrior (H) +(16290, 28156, 0, 0, 0, 0, 0, 0, 0), # Fallout Slime +(29388, 54367, 0, 0, 0, 0, 0, 0, 0), # Fallout Slime (H) +(16803, 0, 0, 0, 61696, 29060, 29061, 0, 0), # Death Knight Understudy +(29941, 0, 0, 0, 61696, 29060, 29061, 0, 0), # Death Knight Understudy (H) +(16124, 55604, 0, 0, 0, 0, 0, 0, 27892), # Unrelenting Trainee +(16125, 27825, 0, 0, 0, 0, 0, 0, 27928), # Unrelenting Death Knight +(16126, 27831, 55606, 0, 0, 0, 0, 0, 27935), # Unrelenting Rider +(16127, 27989, 0, 0, 0, 0, 0, 0, 0), # Spectral Trainee +(16148, 56408, 0, 0, 0, 0, 0, 0, 0), # Spectral Death Knight +(16150, 27994, 55648, 55606, 0, 0, 0, 0, 0), # Spectral Rider +(16149, 27993, 0, 0, 0, 0, 0, 0, 0), # Spectral Horse +(29985, 55645, 0, 0, 0, 0, 0, 0, 27892), # Unrelenting Trainee (H) +(29986, 27825, 0, 0, 0, 0, 0, 0, 27928), # Unrelenting Death Knight (H) +(29987, 55638, 55608, 0, 0, 0, 0, 0, 27935), # Unrelenting Rider (H) +(30264, 56407, 0, 0, 0, 0, 0, 0, 0), # Spectral Trainee (H) +(29990, 56408, 0, 0, 0, 0, 0, 0, 0), # Spectral Death Knight (H) +(29988, 55646, 27995, 55608, 0, 0, 0, 0, 0), # Spectral Rider (H) +(29989, 27993, 0, 0, 0, 0, 0, 0, 0) # Spectral Horse (H) +ON DUPLICATE KEY UPDATE +spell1 = VALUES(spell1), +spell2 = VALUES(spell2), +spell3 = VALUES(spell3), +spell4 = VALUES(spell4), +spell5 = VALUES(spell5), +spell6 = VALUES(spell6), +spell7 = VALUES(spell7), +spell8 = VALUES(spell8); -- -------- -- TARGET @@ -275,6 +320,22 @@ INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES (40106, 1, 22883), (42391, 0, 300152); +-- naxx +DELETE FROM `spell_script_target` WHERE `entry` IN +(28732,54097,55479, +27892,27893,27928,27929,27935,27936); +INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES +(28732, 1, 15953), # Widow's Embrace +(54097, 1, 15953), # Widow's Embrace +(55479, 1, 16803), # Force Obedience - Death Knight Understudy +# (29105, 1, 16803), # Hopeless - Death Knight Understudy +(27892, 1, 16060), # To Anchor 1 - Gothik +(27893, 1, 16060), # To Anchor 2 - Gothik +(27928, 1, 16060), # To Anchor 1 - Gothik +(27929, 1, 16060), # To Anchor 2 - Gothik +(27935, 1, 16060), # To Anchor 1 - Gothik +(27936, 1, 16060); # To Anchor 2 - Gothik + -- too many... REPLACE INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES (3730,1,15263), @@ -476,3 +537,960 @@ INSERT INTO spell_target_position () VALUES (46019, 580, 1704.34, 928.17, -74.55 INSERT INTO spell_target_position () VALUES (46020, 580, 1704.34, 928.17, 53.079, 0); INSERT INTO spell_target_position () VALUES (53360, 571, 5807.829, 587.960, 660.939, 1.663); +-- -------- +-- REQUIRED +-- -------- +DROP TABLE IF EXISTS `spell_required`; +CREATE TABLE `spell_required` ( + `spell_id` mediumint(9) NOT NULL default '0', + `req_spell` mediumint(9) NOT NULL default '0', + PRIMARY KEY (`spell_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Spell Additinal Data'; + +INSERT INTO `spell_required` (`spell_id`, `req_spell`) VALUES +(53312, 53308), +(48938, 48936), +(48937, 48935), +(48934, 48932), +(48933, 48931), +(27143, 27142), +(27141, 27140), +(27009, 26989), +(25916, 25291), +(25918, 25290), +(25894, 19854), +(25782, 19838), +(27681, 14752), +(17329, 9853), +(16813, 9852), +(16812, 5196), +(16811, 5195), +(16810, 1062), +(16689, 339), +(9788, 9785), +(17039, 9787), +(17040, 9787), +(17041, 9787), +(10660, 10662), +(10658, 10662), +(10656, 10662), +(28672, 28596), +(28675, 28596), +(28677, 28596), +(26801, 26790), +(26798, 26790), +(26797, 26790), +(20222, 12656), +(20219, 12656), +(25899, 20911); + +-- -------- +-- PROC +-- -------- +DROP TABLE IF EXISTS `spell_proc_event`; +CREATE TABLE `spell_proc_event` ( + `entry` smallint(5) unsigned NOT NULL default '0', + `SchoolMask` tinyint(4) NOT NULL default '0', + `SpellFamilyName` smallint(5) unsigned NOT NULL default '0', + `SpellFamilyMask0` int(10) unsigned NOT NULL default '0', + `SpellFamilyMask1` int(10) unsigned NOT NULL default '0', + `SpellFamilyMask2` int(10) unsigned NOT NULL default '0', + `procFlags` int(10) unsigned NOT NULL default '0', + `procEx` int(10) unsigned NOT NULL default '0', + `ppmRate` float NOT NULL default '0', + `CustomChance` float NOT NULL default '0', + `Cooldown` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(10191, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(10192, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(10193, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(10431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(10432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(11095, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0), +(11119, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(11120, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(11129, 0, 3, 12582935, 64, 0, 0, 0, 0, 0, 0), +(11180, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0), +(11185, 0, 3, 128, 0, 0, 327680, 0, 0, 0, 0), +(11255, 0, 3, 16384, 0, 0, 0, 0, 0, 0, 0), +(12169, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12289, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(12298, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12311, 0, 4, 2048, 1, 0, 0, 0, 0, 0, 0), +(12319, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12322, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(12487, 0, 3, 128, 0, 0, 327680, 0, 0, 0, 0), +(12488, 0, 3, 128, 0, 0, 327680, 0, 0, 0, 0), +(12598, 0, 3, 16384, 0, 0, 0, 0, 0, 0, 0), +(12668, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(12724, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12725, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12726, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12727, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(12797, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(12799, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(12812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(12834, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12846, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(12847, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(12848, 4, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(12849, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12867, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12872, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0), +(12873, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0), +(12958, 0, 4, 2048, 1, 0, 0, 0, 0, 0, 0), +(12966, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12967, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12968, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12969, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12970, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(12971, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12972, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12973, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12974, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(12999, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0), +(13000, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(13001, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0), +(13002, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0), +(13163, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(13165, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(13754, 0, 8, 16, 0, 0, 0, 0, 0, 0, 0), +(13867, 0, 8, 16, 0, 0, 0, 0, 0, 0, 0), +(13983, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0), +(14070, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0), +(14071, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0), +(14156, 0, 8, 4063232, 0, 0, 0, 0, 0, 0, 0), +(14160, 0, 8, 4063232, 0, 0, 0, 0, 0, 0, 0), +(14161, 0, 8, 4063232, 0, 0, 0, 0, 0, 0, 0), +(14186, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14190, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14193, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14194, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14195, 0, 8, 1082131720, 2, 0, 0, 2, 0, 0, 0), +(14318, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14319, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14320, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14321, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14322, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(14531, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(1463, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(14774, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(14892, 0, 6, 268443136, 65540, 0, 0, 2, 0, 0, 0), +(15088, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(15128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(15268, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15277, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(15286, 32, 6, 0, 0, 0, 0, 0, 0, 0, 0), +(15323, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15324, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15325, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15326, 32, 6, 101187584, 2, 0, 0, 0, 0, 0, 0), +(15337, 0, 6, 8192, 2, 0, 0, 2, 0, 0, 0), +(15338, 0, 6, 8192, 2, 0, 0, 2, 0, 0, 0), +(15346, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(15362, 0, 6, 268443136, 65540, 0, 0, 2, 0, 0, 0), +(15363, 0, 6, 268443136, 65540, 0, 0, 2, 0, 0, 0), +(15600, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), +(16086, 0, 11, 0, 262144, 0, 0, 0, 0, 0, 0), +(16164, 0, 11, 2416967875, 0, 0, 0, 2, 0, 0, 0), +(16176, 0, 11, 448, 0, 0, 0, 2, 0, 0, 0), +(16180, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(16196, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(16198, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(16235, 0, 11, 448, 0, 0, 0, 2, 0, 0, 0), +(16240, 0, 11, 448, 0, 0, 0, 2, 0, 0, 0), +(16256, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16257, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16277, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16278, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16279, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16280, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(16281, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16282, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16283, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16284, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16487, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16489, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16492, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16544, 0, 11, 0, 262144, 0, 0, 0, 0, 0, 0), +(16550, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(16624, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(16850, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0), +(16864, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(16880, 72, 7, 0, 0, 0, 0, 2, 0, 0, 0), +(16923, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0), +(16924, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0), +(16952, 0, 7, 233472, 1024, 0, 0, 2, 0, 0, 0), +(16954, 0, 7, 233472, 1024, 0, 0, 2, 0, 0, 0), +(16958, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(16961, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(17106, 0, 7, 524288, 0, 0, 0, 0, 0, 0, 0), +(17107, 0, 7, 524288, 0, 0, 0, 0, 0, 0, 0), +(17108, 0, 7, 524288, 0, 0, 0, 0, 0, 0, 0), +(17364, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17495, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(17619, 0, 13, 0, 0, 0, 32768, 0, 0, 0, 0), +(17793, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17794, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0), +(17796, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17797, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17798, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17799, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17800, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(17801, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17802, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(17803, 0, 5, 1, 0, 0, 0, 2, 0, 0, 0), +(18073, 0, 5, 96, 128, 0, 0, 0, 0, 0, 0), +(18094, 0, 5, 10, 0, 0, 0, 0, 0, 0, 0), +(18095, 0, 5, 10, 0, 0, 0, 0, 0, 0, 0), +(18096, 0, 5, 96, 128, 0, 0, 0, 0, 0, 0), +(18119, 0, 5, 997, 4288, 0, 0, 0, 0, 0, 0), +(18120, 0, 5, 997, 4288, 0, 0, 0, 0, 0, 0), +(18820, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(19184, 0, 9, 20, 8192, 0, 0, 0, 0, 0, 0), +(19228, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0), +(19232, 0, 9, 64, 0, 0, 0, 0, 0, 0, 0), +(19233, 0, 9, 64, 0, 0, 0, 0, 0, 0, 0), +(19387, 0, 9, 20, 8192, 0, 0, 0, 0, 0, 0), +(19388, 0, 9, 20, 8192, 0, 0, 0, 0, 0, 0), +(19572, 0, 9, 8388608, 0, 0, 16384, 0, 0, 0, 0), +(19573, 0, 9, 8388608, 0, 0, 16384, 0, 0, 0, 0), +(19615, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20049, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20056, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20057, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20128, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20131, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20132, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20164, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0), +(20165, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0), +(20166, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0), +(20182, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20210, 0, 10, 3221225472, 0, 0, 0, 2, 0, 0, 0), +(20212, 0, 10, 3221225472, 0, 0, 0, 2, 0, 0, 0), +(20213, 0, 10, 3221225472, 0, 0, 0, 2, 0, 0, 0), +(20214, 0, 10, 3221225472, 0, 0, 0, 2, 0, 0, 0), +(20215, 0, 10, 3221225472, 0, 0, 0, 2, 0, 0, 0), +(20234, 0, 10, 32768, 0, 0, 0, 0, 0, 0, 0), +(20235, 0, 10, 32768, 0, 0, 0, 0, 0, 0, 0), +(20375, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(20500, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0), +(20501, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0), +(20705, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(20911, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(20925, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20927, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(20928, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(21185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(21882, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(21890, 0, 4, 712396527, 876, 0, 0, 0, 0, 0, 0), +(22007, 0, 3, 2097185, 0, 0, 0, 65536, 0, 0, 0), +(22618, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(22648, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(23547, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(23548, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(23551, 0, 11, 192, 0, 0, 0, 0, 0, 0, 0), +(23552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(23572, 0, 11, 192, 0, 0, 0, 0, 0, 0, 0), +(23578, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(23581, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(23602, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(23686, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(23688, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(23689, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0), +(23695, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(23721, 0, 9, 2048, 0, 0, 0, 0, 0, 0, 0), +(23920, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(24353, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(24389, 0, 3, 12582935, 64, 0, 0, 0, 0, 0, 0), +(24398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(24658, 0, 0, 0, 0, 0, 82192, 0, 0, 0, 0), +(24905, 0, 0, 0, 0, 0, 0, 2, 15, 0, 0), +(24932, 0, 0, 0, 0, 0, 0, 2, 0, 0, 6), +(25050, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(25296, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(25469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(25472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(25669, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), +(25899, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(25988, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(26016, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(26107, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0), +(26119, 0, 10, 2416967683, 0, 0, 0, 65536, 0, 0, 0), +(26128, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0), +(26135, 0, 10, 8388608, 0, 0, 0, 65536, 0, 0, 0), +(26480, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(26605, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(27044, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(27131, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(27179, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(27419, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27498, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27521, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(27656, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27774, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(27787, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(27811, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(27815, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(27816, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(28592, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0), +(28593, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0), +(28716, 0, 7, 16, 0, 0, 294912, 0, 0, 0, 0), +(28719, 0, 7, 32, 0, 0, 0, 2, 0, 0, 0), +(28744, 0, 7, 64, 0, 0, 278528, 0, 0, 0, 0), +(28752, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(28789, 0, 10, 3221225472, 0, 0, 0, 0, 0, 0, 0), +(28802, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(28809, 0, 6, 4096, 0, 0, 0, 2, 0, 0, 0), +(28812, 0, 8, 33554438, 0, 0, 0, 2, 0, 0, 0), +(28816, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(28823, 0, 11, 192, 0, 0, 0, 0, 0, 0, 0), +(28847, 0, 7, 32, 0, 0, 0, 0, 0, 0, 0), +(28849, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(29074, 20, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(29075, 20, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(29076, 20, 3, 0, 0, 0, 0, 2, 0, 0, 0), +(29150, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29179, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(29180, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(29385, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(29441, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1), +(29444, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1), +(29455, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(29501, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29593, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(29594, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(29624, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29625, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29626, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29632, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29633, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29634, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29635, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29636, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29637, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(29801, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(29834, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(29838, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(29977, 0, 3, 12582935, 64, 0, 0, 0, 0, 0, 0), +(30003, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(30160, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30293, 0, 5, 897, 131264, 0, 0, 0, 0, 0, 0), +(30295, 0, 5, 897, 131264, 0, 0, 0, 0, 0, 0), +(30296, 0, 5, 897, 131264, 0, 0, 0, 0, 0, 0), +(30299, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30301, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30302, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30675, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30678, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30679, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30680, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30681, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0), +(30701, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30705, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(30802, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30803, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30804, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30805, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30806, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30807, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30808, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30809, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30810, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30811, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(30823, 0, 0, 0, 0, 0, 0, 0, 10.5, 0, 0), +(30881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5), +(30937, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(31124, 0, 8, 16777222, 0, 0, 0, 0, 0, 0, 0), +(31126, 0, 8, 16777222, 0, 0, 0, 0, 0, 0, 0), +(31221, 0, 8, 4194304, 0, 0, 81920, 24577, 0, 0, 0), +(31222, 0, 8, 4194304, 0, 0, 81920, 24577, 0, 0, 0), +(31223, 0, 8, 4194304, 0, 0, 81920, 24577, 0, 0, 0), +(31244, 0, 8, 4063232, 9, 0, 0, 4, 0, 0, 0), +(31245, 0, 8, 4063232, 9, 0, 0, 4, 0, 0, 0), +(31394, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(31569, 0, 3, 65536, 0, 0, 0, 0, 0, 0, 0), +(31570, 0, 3, 65536, 0, 0, 0, 0, 0, 0, 0), +(31785, 0, 0, 0, 0, 0, 34816, 0, 0, 0, 0), +(31794, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(31801, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0), +(31833, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(31835, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(31836, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(31871, 0, 10, 16, 0, 0, 16384, 0, 0, 0, 0), +(31872, 0, 10, 16, 0, 0, 16384, 0, 0, 0, 0), +(31876, 0, 10, 538444800, 8, 0, 0, 0, 0, 0, 0), +(31877, 0, 10, 538444800, 8, 0, 0, 0, 0, 0, 0), +(31878, 0, 10, 538444800, 8, 0, 0, 0, 0, 0, 0), +(31904, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(3232, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(32385, 0, 5, 1, 262144, 0, 0, 0, 0, 0, 0), +(32387, 0, 5, 1, 262144, 0, 0, 0, 0, 0, 0), +(32392, 0, 5, 1, 262144, 0, 0, 0, 0, 0, 0), +(32393, 0, 5, 1, 262144, 0, 0, 0, 0, 0, 0), +(32394, 0, 5, 1, 262144, 0, 0, 0, 0, 0, 0), +(324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32587, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32642, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(32748, 0, 8, 0, 1, 0, 320, 0, 0, 0, 0), +(32776, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32777, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(32837, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 45), +(32844, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0), +(32885, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33076, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(33089, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(33127, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(33142, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33145, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33146, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33150, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33151, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33154, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33174, 0, 6, 32, 0, 0, 16384, 0, 0, 0, 0), +(33182, 0, 6, 32, 0, 0, 16384, 0, 0, 0, 0), +(33191, 0, 6, 8421376, 1024, 0, 0, 0, 0, 0, 0), +(33192, 0, 6, 8421376, 1024, 0, 0, 0, 0, 0, 0), +(33193, 0, 6, 8421376, 1024, 0, 0, 0, 0, 0, 0), +(33299, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(33510, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0), +(33648, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33719, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(33736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(33746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(33757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(33759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(33776, 0, 0, 0, 0, 0, 34816, 0, 0, 0, 0), +(33881, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33882, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33883, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(33953, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 45), +(34074, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0), +(34080, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0), +(34138, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(34139, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(34258, 0, 10, 1024, 8, 0, 0, 0, 0, 0, 0), +(34262, 0, 10, 8388608, 0, 0, 0, 65536, 0, 0, 0), +(34320, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(34457, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34497, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34498, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34499, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34500, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34502, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34503, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(34586, 0, 0, 0, 0, 0, 0, 0, 1.5, 0, 0), +(34598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(34749, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0), +(34753, 0, 6, 6144, 4, 0, 0, 2, 0, 0, 0), +(34774, 0, 0, 0, 0, 0, 0, 0, 1.5, 0, 20), +(34783, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(34827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(34859, 0, 6, 6144, 4, 0, 0, 2, 0, 0, 0), +(34860, 0, 6, 6144, 4, 0, 0, 2, 0, 0, 0), +(34914, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(34916, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(34917, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(34935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8), +(34938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8), +(34939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8), +(34950, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(34954, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(35077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(35080, 0, 0, 0, 0, 0, 0, 0, 1, 0, 60), +(35083, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(35086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(35100, 0, 9, 12289, 0, 0, 65856, 0, 0, 0, 0), +(35102, 0, 9, 12289, 0, 0, 0, 0, 0, 0, 0), +(35103, 0, 9, 12289, 0, 0, 0, 0, 0, 0, 0), +(35121, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(36096, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(36111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(36541, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(37165, 0, 8, 2098176, 0, 0, 0, 0, 0, 0, 0), +(37168, 0, 8, 4063232, 9, 0, 0, 0, 0, 0, 0), +(37170, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), +(37173, 0, 8, 750519704, 262, 0, 0, 0, 0, 0, 30), +(37189, 0, 10, 3221225472, 0, 0, 0, 2, 0, 0, 60), +(37193, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(37195, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(37197, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 45), +(37213, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(37214, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37227, 0, 11, 448, 0, 0, 0, 2, 0, 0, 60), +(37237, 0, 11, 1, 0, 0, 0, 2, 0, 0, 0), +(37247, 8, 0, 0, 0, 0, 0, 65536, 0, 0, 45), +(37377, 32, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37379, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(37384, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0), +(37443, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(37514, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(37516, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(37519, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0), +(37523, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(37528, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0), +(37536, 0, 4, 65536, 0, 0, 0, 0, 0, 0, 0), +(37568, 0, 6, 2048, 0, 0, 0, 0, 0, 0, 0), +(37594, 0, 6, 4096, 0, 0, 0, 0, 0, 0, 0), +(37600, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37601, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(37603, 0, 6, 32768, 0, 0, 0, 0, 0, 0, 0), +(37655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(37657, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3), +(38026, 1, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(38031, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(38290, 0, 0, 0, 0, 0, 0, 0, 1.6, 0, 0), +(38326, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38327, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(38347, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38350, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(38394, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0), +(38857, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(39027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(39372, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0), +(39437, 4, 5, 4964, 192, 0, 0, 65536, 0, 0, 0), +(39442, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0), +(39443, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(39530, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(39958, 0, 0, 0, 0, 0, 0, 0, 0.7, 0, 40), +(40407, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0), +(40438, 0, 6, 32832, 0, 0, 0, 0, 0, 0, 0), +(40442, 0, 7, 20, 1088, 0, 0, 0, 0, 0, 0), +(40444, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(40458, 0, 4, 33554432, 1537, 0, 0, 0, 0, 0, 0), +(40463, 0, 11, 129, 16, 0, 0, 0, 0, 0, 0), +(40470, 0, 10, 3229614080, 0, 0, 0, 0, 0, 0, 0), +(40475, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(40478, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0), +(40482, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(40485, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(40899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(41034, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(41260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(41262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(41381, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(41393, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(41434, 0, 0, 0, 0, 0, 0, 0, 2, 0, 45), +(41469, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0), +(41635, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(41989, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0), +(42083, 0, 0, 0, 0, 0, 0, 2, 0, 0, 45), +(42135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90), +(42136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90), +(42368, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(42370, 0, 11, 64, 0, 0, 0, 0, 0, 0, 0), +(42770, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(43019, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(43020, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(43338, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(43443, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(43726, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(43728, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(43737, 0, 7, 0, 1088, 0, 0, 0, 0, 0, 10), +(43739, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(43741, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(43745, 0, 10, 0, 512, 0, 0, 0, 0, 0, 0), +(43748, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(43750, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0), +(43819, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(44394, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(44395, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(44396, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(44401, 0, 3, 2097152, 0, 0, 0, 4095, 0, 0, 0), +(44404, 0, 3, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(44442, 0, 3, 8388608, 64, 0, 0, 65536, 0, 0, 1), +(44443, 0, 3, 8388608, 64, 0, 0, 65536, 0, 0, 1), +(44445, 0, 3, 19, 4096, 0, 0, 0, 0, 0, 0), +(44446, 0, 3, 19, 4096, 0, 0, 0, 0, 0, 0), +(44448, 0, 3, 19, 4096, 0, 0, 0, 0, 0, 0), +(44449, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44469, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44470, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44471, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44472, 0, 3, 551686775, 102472, 0, 0, 2, 0, 0, 0), +(44543, 0, 3, 1049120, 4096, 0, 65536, 0, 0, 7, 0), +(44544, 0, 3, 0, 1048576, 0, 65536, 0, 0, 0, 0), +(44545, 0, 3, 1049120, 4096, 0, 65536, 0, 0, 15, 0), +(44546, 0, 3, 33555104, 0, 0, 0, 0, 0, 0, 0), +(44548, 0, 3, 33555104, 0, 0, 0, 0, 0, 0, 0), +(44549, 0, 3, 33555104, 0, 0, 0, 0, 0, 0, 0), +(44745, 0, 3, 0, 1, 0, 32768, 8192, 0, 0, 0), +(44835, 0, 7, 0, 128, 0, 16, 0, 0, 0, 0), +(45054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15), +(45057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(45234, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(45243, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(45244, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(45354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45469, 0, 15, 16, 0, 0, 16, 0, 0, 0, 0), +(45481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(45484, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 45), +(46025, 32, 6, 0, 0, 0, 0, 0, 0, 0, 0), +(46092, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(46098, 0, 11, 128, 0, 0, 0, 0, 0, 0, 0), +(46569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(46662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20), +(46832, 0, 7, 1, 0, 0, 0, 65536, 0, 0, 0), +(46854, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(46855, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(46867, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(46910, 0, 0, 0, 0, 0, 0, 1, 5.5, 0, 0), +(46911, 0, 0, 0, 0, 0, 0, 1, 7.5, 0, 0), +(46913, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), +(46914, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), +(46915, 0, 4, 64, 1028, 0, 0, 2, 0, 0, 0), +(46916, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), +(46951, 0, 4, 1024, 64, 0, 0, 0, 0, 0, 0), +(46952, 0, 0, 1024, 64, 0, 0, 0, 0, 0, 0), +(46953, 0, 0, 1024, 64, 0, 0, 0, 0, 0, 0), +(47195, 0, 5, 2, 0, 0, 0, 0, 0, 0, 30), +(47196, 0, 5, 2, 0, 0, 0, 0, 0, 0, 30), +(47197, 0, 5, 2, 0, 0, 0, 0, 0, 0, 30), +(47201, 0, 5, 8, 262144, 0, 0, 65536, 0, 0, 0), +(47202, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47203, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47204, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47205, 0, 5, 8, 262144, 0, 0, 0, 0, 0, 0), +(47232, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47234, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47235, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47245, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(47246, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(47247, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0), +(47258, 0, 5, 0, 8388608, 0, 0, 65536, 0, 0, 0), +(47259, 0, 5, 0, 8388608, 0, 0, 65536, 0, 0, 0), +(47260, 0, 5, 0, 8388608, 0, 0, 65536, 0, 0, 0), +(47263, 32, 5, 0, 0, 0, 0, 2, 0, 0, 20), +(47264, 32, 5, 0, 0, 0, 0, 2, 0, 0, 20), +(47265, 32, 5, 0, 0, 0, 0, 2, 0, 0, 20), +(47509, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47511, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47515, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(47516, 0, 6, 6144, 65536, 0, 0, 0, 0, 0, 0), +(47517, 0, 6, 6144, 65536, 0, 0, 0, 0, 0, 0), +(47535, 0, 6, 6144, 65536, 0, 81936, 0, 0, 0, 0), +(47536, 0, 6, 6144, 65536, 0, 81936, 0, 0, 0, 0), +(47537, 0, 6, 6144, 65536, 0, 81936, 0, 0, 0, 0), +(47538, 0, 6, 6144, 65536, 0, 81936, 0, 0, 0, 0), +(47539, 0, 6, 6144, 65536, 0, 81936, 0, 0, 0, 0), +(47549, 0, 6, 0, 512, 0, 0, 0, 0, 0, 0), +(47551, 0, 6, 0, 512, 0, 0, 0, 0, 0, 0), +(47552, 0, 6, 0, 512, 0, 0, 0, 0, 0, 0), +(47555, 0, 6, 6144, 0, 0, 0, 0, 0, 0, 0), +(47556, 0, 6, 6144, 0, 0, 0, 0, 0, 0, 0), +(47557, 0, 6, 6144, 0, 0, 0, 0, 0, 0, 0), +(47569, 0, 6, 16384, 0, 0, 16384, 0, 0, 50, 0), +(47570, 0, 6, 16384, 0, 0, 16384, 0, 0, 100, 0), +(47571, 0, 6, 65536, 0, 0, 65536, 24576, 0, 50, 0), +(47572, 0, 6, 65536, 0, 0, 65536, 24576, 0, 100, 0), +(47580, 0, 6, 0, 0, 64, 0, 65536, 0, 0, 0), +(47581, 0, 6, 0, 0, 64, 0, 65536, 0, 0, 0), +(47582, 0, 6, 0, 0, 64, 0, 65536, 0, 0, 0), +(48110, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48111, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48112, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48113, 0, 0, 0, 0, 0, 656040, 0, 0, 0, 0), +(48159, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(48160, 0, 6, 8192, 0, 0, 0, 0, 0, 0, 0), +(48483, 0, 7, 34816, 1088, 0, 0, 0, 0, 0, 0), +(48484, 0, 7, 34816, 1088, 0, 0, 0, 0, 0, 0), +(48485, 0, 7, 34816, 1088, 0, 0, 0, 0, 0, 0), +(48496, 0, 7, 96, 33554434, 0, 0, 2, 0, 0, 0), +(48499, 0, 7, 96, 33554434, 0, 0, 2, 0, 0, 0), +(48500, 0, 7, 96, 33554434, 0, 0, 2, 0, 0, 0), +(48506, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0), +(48510, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0), +(48511, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0), +(48516, 0, 7, 5, 0, 0, 0, 2, 0, 0, 30), +(48521, 0, 7, 5, 0, 0, 0, 2, 0, 0, 30), +(48525, 0, 7, 5, 0, 0, 0, 2, 0, 0, 30), +(48833, 0, 7, 0, 1088, 0, 0, 0, 0, 0, 0), +(48835, 0, 10, 0, 8, 0, 0, 0, 0, 0, 0), +(48837, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(48951, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(48952, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(48988, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(49018, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49137, 0, 15, 0, 16384, 0, 0, 0, 0, 0, 0), +(49188, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(49208, 0, 15, 4456448, 0, 0, 0, 0, 0, 0, 0), +(49222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(49503, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(49504, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(49529, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49530, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49531, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49532, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(49622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(49657, 0, 15, 0, 16384, 0, 0, 0, 0, 0, 0), +(50781, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51127, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51128, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51129, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51130, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10), +(51466, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51470, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51474, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(51478, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(51479, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(51556, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(51557, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(51558, 0, 11, 192, 0, 16, 0, 2, 0, 0, 0), +(51562, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51563, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51564, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51565, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51566, 0, 11, 256, 0, 16, 0, 0, 0, 0, 0), +(51625, 0, 8, 268476416, 0, 0, 0, 0, 0, 0, 0), +(51626, 0, 8, 268476416, 0, 0, 0, 0, 0, 0, 0), +(51627, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(51628, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(51629, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0), +(51634, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51635, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51636, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(51664, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51665, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51667, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51668, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51669, 0, 8, 131072, 8, 0, 0, 0, 0, 0, 0), +(51672, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1), +(51674, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1), +(51679, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0), +(51692, 0, 8, 512, 0, 0, 0, 2, 0, 0, 0), +(51696, 0, 8, 512, 0, 0, 0, 2, 0, 0, 0), +(51698, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1), +(51700, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1), +(51701, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1), +(51940, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(51989, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52004, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52005, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52007, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52008, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0), +(52020, 0, 7, 32768, 1048576, 0, 0, 0, 0, 0, 0), +(52127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(52420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30), +(52423, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(52795, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52797, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52798, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52799, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52800, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0), +(52898, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53137, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(53138, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(53215, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(53216, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(53217, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0), +(53221, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(53222, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(53224, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0), +(53228, 0, 9, 32, 16777216, 0, 0, 0, 0, 0, 0), +(53232, 0, 9, 32, 16777216, 0, 0, 0, 0, 0, 0), +(53256, 0, 9, 2048, 8388609, 0, 0, 2, 0, 0, 0), +(53259, 0, 9, 2048, 8388609, 0, 0, 2, 0, 0, 0), +(53260, 0, 9, 2048, 8388609, 0, 0, 2, 0, 0, 0), +(53290, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53291, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53292, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53293, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53294, 0, 9, 2048, 2147483647, 0, 0, 2, 0, 0, 0), +(53375, 0, 10, 0, 8192, 0, 16384, 0, 0, 0, 6), +(53380, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53381, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53382, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53383, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53384, 0, 10, 8388608, 131072, 0, 0, 2, 0, 0, 0), +(53486, 0, 10, 8388608, 163840, 0, 0, 2, 0, 0, 0), +(53488, 0, 10, 8388608, 163840, 0, 0, 2, 0, 0, 0), +(53501, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53502, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53503, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(53551, 0, 10, 4096, 0, 0, 0, 0, 0, 0, 0), +(53552, 0, 10, 4096, 0, 0, 0, 0, 0, 0, 0), +(53553, 0, 10, 4096, 0, 0, 0, 0, 0, 0, 0), +(53569, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0), +(53576, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0), +(53601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6), +(53651, 0, 10, 3221258240, 0, 0, 0, 0, 0, 0, 0), +(53671, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(53672, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0), +(53673, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(53754, 0, 5, 0, 1024, 0, 0, 24576, 0, 0, 0), +(53759, 0, 5, 0, 1024, 0, 0, 24576, 0, 0, 0), +(54149, 0, 10, 2097152, 65536, 0, 0, 2, 0, 0, 0), +(54151, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(54154, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(54155, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(54278, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(54486, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54488, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54489, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54490, 0, 0, 536870945, 36864, 0, 0, 0, 0, 0, 0), +(54707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(54738, 0, 0, 0, 0, 0, 0, 2, 0, 0, 45), +(54747, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(54749, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(54754, 0, 7, 16, 0, 0, 0, 0, 0, 0, 0), +(54787, 0, 3, 0, 1, 0, 32768, 8192, 0, 0, 0), +(54808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60), +(54841, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(54936, 0, 10, 1073741824, 0, 0, 0, 0, 0, 0, 0), +(54937, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), +(54939, 0, 10, 32768, 0, 0, 0, 0, 0, 0, 0), +(55198, 0, 11, 448, 0, 0, 16384, 2, 0, 0, 0), +(55380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(55440, 0, 11, 64, 0, 0, 0, 0, 0, 0, 0), +(55620, 0, 15, 1, 134217728, 0, 0, 0, 0, 0, 0), +(55623, 0, 15, 1, 134217728, 0, 0, 0, 0, 0, 0), +(55640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(55666, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55667, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55668, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55669, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55670, 0, 15, 1, 0, 0, 0, 0, 0, 0, 0), +(55672, 0, 6, 1, 0, 0, 16384, 0, 0, 0, 0), +(55677, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0), +(55680, 0, 6, 512, 0, 0, 0, 0, 0, 0, 0), +(55689, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(55768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(55776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(56218, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0), +(56333, 0, 9, 4, 0, 64, 139776, 0, 0, 0, 0), +(56336, 0, 9, 4, 0, 64, 139776, 0, 0, 0, 0), +(56337, 0, 9, 4, 0, 64, 139776, 0, 0, 0, 0), +(56342, 0, 9, 16384, 0, 0, 0, 0, 0, 0, 0), +(56343, 0, 9, 16384, 0, 0, 0, 0, 0, 0, 0), +(56344, 0, 9, 16384, 0, 0, 0, 0, 0, 0, 0), +(56355, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(56364, 0, 3, 0, 16777216, 0, 0, 0, 0, 0, 0), +(56451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(56611, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56612, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56613, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56614, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56636, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0), +(56637, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0), +(56638, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0), +(56821, 0, 8, 2, 0, 0, 0, 2, 0, 0, 0), +(56822, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(56834, 0, 15, 4456448, 0, 0, 0, 0, 0, 0, 0), +(56835, 0, 15, 4456448, 0, 0, 0, 0, 0, 0, 0), +(57318, 0, 10, 0, 8192, 0, 16384, 0, 0, 0, 6), +(57345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(57878, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(57880, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(57881, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(57960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(58357, 0, 4, 64, 0, 0, 0, 2, 0, 0, 0), +(58364, 0, 4, 1024, 0, 0, 0, 0, 0, 0, 0), +(58372, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0), +(58386, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(58388, 0, 4, 64, 0, 0, 272, 0, 0, 0, 0), +(58426, 0, 8, 4194304, 0, 0, 81920, 24577, 0, 0, 0), +(58435, 0, 5, 2, 256, 0, 0, 0, 0, 0, 0), +(58436, 0, 5, 2, 256, 0, 0, 0, 0, 0, 0), +(58437, 0, 5, 2, 256, 0, 0, 0, 0, 0, 0), +(58616, 0, 15, 262144, 0, 0, 0, 0, 0, 0, 0), +(58620, 0, 15, 0, 16384, 0, 0, 0, 0, 0, 0), +(58626, 0, 15, 33554432, 0, 0, 0, 0, 0, 0, 0), +(58631, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(58642, 0, 15, 0, 134217728, 0, 0, 0, 0, 0, 0), +(58644, 0, 15, 0, 4, 0, 0, 0, 0, 0, 0), +(58647, 0, 15, 0, 4, 0, 0, 0, 0, 0, 0), +(58676, 0, 15, 0, 8, 0, 0, 0, 0, 0, 0), +(58677, 0, 15, 8192, 0, 0, 0, 0, 0, 0, 0), +(58872, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(58874, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(58901, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(59057, 0, 15, 2, 0, 0, 0, 0, 0, 0, 0), +(59176, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(59327, 0, 15, 134217728, 0, 0, 0, 0, 0, 0, 0), +(5952, 0, 8, 1, 1, 0, 0, 0, 0, 0, 0), +(59725, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0), +(60132, 0, 15, 0, 134348800, 0, 0, 0, 0, 0, 0), +(60170, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0), +(60172, 0, 5, 262144, 0, 0, 0, 65536, 0, 0, 0), +(60442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(60493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(60503, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0), +(60537, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(60564, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60571, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60572, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60573, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60574, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60575, 0, 11, 2416967680, 0, 0, 0, 0, 0, 0, 0), +(60617, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0), +(60710, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60717, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60719, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60722, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60724, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60726, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0), +(60770, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0), +(60818, 0, 10, 0, 512, 0, 0, 0, 0, 0, 0), +(60826, 0, 15, 20971520, 0, 0, 0, 0, 0, 0, 0), +(61188, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0), +(61257, 0, 0, 0, 0, 0, 131752, 65536, 0, 0, 0), +(61324, 0, 10, 0, 131072, 0, 0, 0, 0, 0, 0), +(61345, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(61346, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(61356, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(61618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45), +(61846, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(61847, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(61848, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0), +(6346, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(7383, 1, 0, 0, 0, 0, 0, 256, 0, 0, 0), +(7434, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(8134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(8178, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0), +(8494, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(8495, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0), +(905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(9452, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0), +(974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3), +(9782, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(9784, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), +(9799, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), +(56372, 0, 3, 0, 128, 0, 16384, 0, 0, 0, 0); +-- (42370, 0x00, 11, 0x00000080, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
\ No newline at end of file diff --git a/src/bindings/scripts/ScriptMgr.cpp b/src/bindings/scripts/ScriptMgr.cpp index 18465bfacf7..849c4d64be5 100644 --- a/src/bindings/scripts/ScriptMgr.cpp +++ b/src/bindings/scripts/ScriptMgr.cpp @@ -389,6 +389,7 @@ extern void AddSC_boss_sapphiron(); extern void AddSC_boss_four_horsemen(); extern void AddSC_boss_faerlina(); extern void AddSC_boss_heigan(); +extern void AddSC_boss_gothik(); extern void AddSC_instance_naxxramas(); //Netherstorm @@ -1327,6 +1328,7 @@ void ScriptsInit(char const* cfg_file = "trinitycore.conf") AddSC_boss_sapphiron(); AddSC_boss_four_horsemen(); AddSC_boss_heigan(); + AddSC_boss_gothik(); AddSC_instance_naxxramas(); //Netherstorm @@ -1657,7 +1659,7 @@ void Script::RegisterSelf() m_scripts[id] = this; ++num_sc_scripts; } - else + else if(Name.find("example") == std::string::npos) { error_db_log("CRASH ALERT! TrinityScript: RegisterSelf, but script named %s does not have ScriptName assigned in database.",(this)->Name.c_str()); delete this; diff --git a/src/bindings/scripts/VC80/80ScriptDev2.vcproj b/src/bindings/scripts/VC80/80ScriptDev2.vcproj index c442ae52a2d..28875c526ab 100644 --- a/src/bindings/scripts/VC80/80ScriptDev2.vcproj +++ b/src/bindings/scripts/VC80/80ScriptDev2.vcproj @@ -68,10 +68,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="TrinityCore.lib zthread.lib" + AdditionalDependencies="TrinityCore.lib aced.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="2" - AdditionalLibraryDirectories="..\..\..\..\win\VC80\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/TrinityScript.pdb" SubSystem="2" @@ -151,10 +151,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="TrinityCore.lib zthread.lib" + AdditionalDependencies="TrinityCore.lib ace.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="..\..\..\..\win\VC80\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" @@ -236,10 +236,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="TrinityCore.lib zthread.lib" + AdditionalDependencies="TrinityCore.lib aced.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="2" - AdditionalLibraryDirectories="..\..\..\..\win\VC80\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/TrinityScript.pdb" SubSystem="2" @@ -320,10 +320,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="TrinityCore.lib zthread.lib" + AdditionalDependencies="TrinityCore.lib ace.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="..\..\..\..\win\VC80\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC80\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" diff --git a/src/bindings/scripts/VC90/90ScriptDev2.vcproj b/src/bindings/scripts/VC90/90ScriptDev2.vcproj index 398e54d6ec4..8f8330db453 100644 --- a/src/bindings/scripts/VC90/90ScriptDev2.vcproj +++ b/src/bindings/scripts/VC90/90ScriptDev2.vcproj @@ -68,10 +68,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zthread.lib" + AdditionalDependencies="trinitycore.lib aced.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="2" - AdditionalLibraryDirectories="..\..\..\..\win\VC90\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/TrinityScript.pdb" SubSystem="2" @@ -152,10 +152,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zthread.lib" + AdditionalDependencies="trinitycore.lib ace.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="..\..\..\..\win\VC90\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" @@ -237,10 +237,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zthread.lib" + AdditionalDependencies="trinitycore.lib aced.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="2" - AdditionalLibraryDirectories="..\..\..\..\win\VC90\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/TrinityScript.pdb" SubSystem="2" @@ -320,10 +320,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zthread.lib" + AdditionalDependencies="trinitycore.lib ace.lib" OutputFile="$(OutDir)/TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="..\..\..\..\win\VC90\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName)" + AdditionalLibraryDirectories="..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName);..\..\..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" diff --git a/src/bindings/scripts/include/precompiled.h b/src/bindings/scripts/include/precompiled.h index 2c36cc924e0..fa676f460ef 100644 --- a/src/bindings/scripts/include/precompiled.h +++ b/src/bindings/scripts/include/precompiled.h @@ -12,10 +12,11 @@ #include "GridNotifiersImpl.h" #include "Unit.h" #include "GameObject.h" -#include "TemporarySummon.h" #include "sc_creature.h" #include "sc_gossip.h" #include "sc_instance.h" +#include "AggressorAI.h" +#include "NullCreatureAI.h" #ifdef WIN32 #include <windows.h> diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp index 258c7627dce..e575e40fac1 100644 --- a/src/bindings/scripts/include/sc_creature.cpp +++ b/src/bindings/scripts/include/sc_creature.cpp @@ -9,6 +9,7 @@ #include "Item.h" #include "Spell.h" #include "ObjectMgr.h" +#include "TemporarySummon.h" // Spell summary for ScriptedAI::SelectSpell struct TSpellSummary { @@ -16,13 +17,26 @@ struct TSpellSummary { uint8 Effects; // set of enum SelectEffect } *SpellSummary; +void SummonList::DoZoneInCombat(uint32 entry) +{ + for(iterator i = begin(); i != end();) + { + Creature *summon = Unit::GetCreature(*m_creature, *i); + ++i; + if(summon && summon->IsAIEnabled + && (!entry || summon->GetEntry() == entry)) + summon->AI()->DoZoneInCombat(); + } +} + void SummonList::DoAction(uint32 entry, uint32 info) { for(iterator i = begin(); i != end();) { Creature *summon = Unit::GetCreature(*m_creature, *i); ++i; - if(summon && summon->IsAIEnabled) + if(summon && summon->IsAIEnabled + && (!entry || summon->GetEntry() == entry)) summon->AI()->DoAction(info); } } @@ -55,7 +69,11 @@ void SummonList::DespawnAll() else { erase(begin()); - summon->setDeathState(JUST_DIED); + summon->SetVisibility(VISIBILITY_OFF); + if(summon->HasSummonMask(SUMMON_MASK_SUMMON) && !summon->isPet()) + ((TempSummon*)summon)->UnSummon(); + else + summon->setDeathState(JUST_DIED); summon->RemoveCorpse(); } } @@ -108,26 +126,6 @@ void ScriptedAI::UpdateAI(const uint32 diff) } } -void ScriptedAI::EnterEvadeMode() -{ - //m_creature->InterruptNonMeleeSpells(true); - m_creature->RemoveAllAuras(); - m_creature->DeleteThreatList(); - m_creature->CombatStop(); - m_creature->LoadCreaturesAddon(); - m_creature->SetLootRecipient(NULL); - - if(m_creature->isAlive()) - m_creature->GetMotionMaster()->MoveTargetedHome(); - - Reset(); -} - -void ScriptedAI::JustRespawned() -{ - Reset(); -} - void ScriptedAI::DoStartMovement(Unit* victim, float distance, float angle) { if (!victim) @@ -228,6 +226,19 @@ Creature* ScriptedAI::DoSpawnCreature(uint32 id, float x, float y, float z, floa return m_creature->SummonCreature(id,m_creature->GetPositionX() + x,m_creature->GetPositionY() + y,m_creature->GetPositionZ() + z, angle, (TempSummonType)type, despawntime); } +Creature *ScriptedAI::DoSummon(uint32 entry, const float pos[4], uint32 despawntime, TempSummonType type) +{ + return me->SummonCreature(entry, pos[0], pos[1], pos[2], pos[3], type, despawntime); +} + +Creature *ScriptedAI::DoSummon(uint32 entry, WorldObject *obj, float radius, uint32 despawntime, TempSummonType type) +{ + float x, y, z; + obj->GetGroundPointAroundUnit(x, y, z, radius * rand_norm(), rand_norm()*2*M_PI); + return me->SummonCreature(entry, x, y, z, me->GetOrientation(), type, despawntime); +} + + Unit* ScriptedAI::SelectUnit(SelectAggroTarget target, uint32 position) { //ThreatList m_threatlist; @@ -259,147 +270,7 @@ Unit* ScriptedAI::SelectUnit(SelectAggroTarget target, uint32 position) return NULL; } -struct TargetDistanceOrder : public std::binary_function<const Unit, const Unit, bool> -{ - const Unit* me; - TargetDistanceOrder(const Unit* Target) : me(Target) {}; - // functor for operator ">" - bool operator()(const Unit* _Left, const Unit* _Right) const - { - return (me->GetDistance(_Left) < me->GetDistance(_Right)); - } -}; - -Unit* ScriptedAI::SelectUnit(SelectAggroTarget targetType, uint32 position, float dist, bool playerOnly) -{ - if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST) - { - std::list<HostilReference*> &m_threatlist = m_creature->getThreatManager().getThreatList(); - if(m_threatlist.empty()) return NULL; - std::list<Unit*> targetList; - std::list<HostilReference*>::iterator itr = m_threatlist.begin(); - for(; itr!= m_threatlist.end(); ++itr) - { - Unit *target = (*itr)->getTarget(); - if(!target - || playerOnly && target->GetTypeId() != TYPEID_PLAYER - || dist && !m_creature->IsWithinCombatRange(target, dist)) - { - continue; - } - targetList.push_back(target); - } - if(position >= targetList.size()) - return NULL; - targetList.sort(TargetDistanceOrder(m_creature)); - if(targetType == SELECT_TARGET_NEAREST) - { - std::list<Unit*>::iterator i = targetList.begin(); - advance(i, position); - return *i; - } - else - { - std::list<Unit*>::reverse_iterator i = targetList.rbegin(); - advance(i, position); - return *i; - } - } - else - { - std::list<HostilReference*> m_threatlist = m_creature->getThreatManager().getThreatList(); - std::list<HostilReference*>::iterator i; - Unit *target; - while(position < m_threatlist.size()) - { - if(targetType == SELECT_TARGET_BOTTOMAGGRO) - { - i = m_threatlist.end(); - advance(i, - (int32)position - 1); - } - else - { - i = m_threatlist.begin(); - if(targetType == SELECT_TARGET_TOPAGGRO) - advance(i, position); - else // random - advance(i, position + rand()%(m_threatlist.size() - position)); - } - - target = (*i)->getTarget(); - if(!target - || playerOnly && target->GetTypeId() != TYPEID_PLAYER - || dist && !m_creature->IsWithinCombatRange(target, dist)) - { - m_threatlist.erase(i); - } - else - { - return target; - } - } - } - - return NULL; -} - -void ScriptedAI::SelectUnitList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget targetType, float dist, bool playerOnly) -{ - if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST) - { - std::list<HostilReference*> &m_threatlist = m_creature->getThreatManager().getThreatList(); - if(m_threatlist.empty()) return; - std::list<HostilReference*>::iterator itr = m_threatlist.begin(); - for(; itr!= m_threatlist.end(); ++itr) - { - Unit *target = (*itr)->getTarget(); - if(!target - || playerOnly && target->GetTypeId() != TYPEID_PLAYER - || dist && !m_creature->IsWithinCombatRange(target, dist)) - { - continue; - } - targetList.push_back(target); - } - targetList.sort(TargetDistanceOrder(m_creature)); - targetList.resize(num); - if(targetType == SELECT_TARGET_FARTHEST) - targetList.reverse(); - } - else - { - std::list<HostilReference*> m_threatlist = m_creature->getThreatManager().getThreatList(); - std::list<HostilReference*>::iterator i; - Unit *target; - while(m_threatlist.size() && num) - { - if(targetType == SELECT_TARGET_BOTTOMAGGRO) - { - i = m_threatlist.end(); - --i; - } - else - { - i = m_threatlist.begin(); - if(targetType == SELECT_TARGET_RANDOM) - advance(i, rand()%m_threatlist.size()); - } - - target = (*i)->getTarget(); - m_threatlist.erase(i); - if(!target - || playerOnly && target->GetTypeId() != TYPEID_PLAYER - || dist && !m_creature->IsWithinCombatRange(target, dist)) - { - continue; - } - targetList.push_back(target); - --num; - } - } -} - -SpellEntry const* ScriptedAI::SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTarget Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effects) +SpellEntry const* ScriptedAI::SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTargetType Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effects) { //No target so we can't cast if (!Target) @@ -515,7 +386,6 @@ bool ScriptedAI::CanCast(Unit* Target, SpellEntry const *Spell, bool Triggered) return true; } - float GetSpellMaxRangeForHostile(uint32 id) { SpellEntry const *spellInfo = GetSpellStore()->LookupEntry(id); @@ -531,7 +401,7 @@ void FillSpellSummary() SpellEntry const* TempSpell; - for (int i=0; i < GetSpellStore()->GetNumRows(); i++ ) + for(uint32 i = 0; i < GetSpellStore()->GetNumRows(); ++i) { SpellSummary[i].Effects = 0; SpellSummary[i].Targets = 0; @@ -541,7 +411,7 @@ void FillSpellSummary() if (!TempSpell) continue; - for (int j=0; j<3; j++) + for(uint32 j = 0; j < 3; ++j) { //Spell targets self if ( TempSpell->EffectImplicitTargetA[j] == TARGET_UNIT_CASTER ) @@ -649,6 +519,11 @@ void ScriptedAI::DoTeleportTo(float x, float y, float z, uint32 time) m_creature->SendMonsterMove(x, y, z, time); } +void ScriptedAI::DoTeleportTo(const float pos[4]) +{ + me->NearTeleportTo(pos[0], pos[1], pos[2], pos[3]); +} + void ScriptedAI::DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float o) { if(!pUnit || pUnit->GetTypeId() != TYPEID_PLAYER) @@ -775,23 +650,85 @@ void Scripted_NoMovementAI::AttackStart(Unit* who) } } +void BossAI::_Reset() +{ + events.Reset(); + summons.DespawnAll(); + instance->SetBossState(bossId, NOT_STARTED); +} + +void BossAI::_JustDied() +{ + events.Reset(); + summons.DespawnAll(); + instance->SetBossState(bossId, DONE); +} + +void BossAI::_EnterCombat() +{ + DoZoneInCombat(); + instance->SetBossState(bossId, IN_PROGRESS); +} + +void BossAI::JustSummoned(Creature *summon) +{ + summons.Summon(summon); + if(me->isInCombat()) + DoZoneInCombat(summon); +} + +void BossAI::SummonedCreatureDespawn(Creature *summon) +{ + summons.Despawn(summon); +} + +#define GOBJECT(x) (const_cast<GameObjectInfo*>(GetGameObjectInfo(x))) + void LoadOverridenSQLData() { GameObjectInfo *goInfo; // Sunwell Plateau : Kalecgos : Spectral Rift - goInfo = const_cast<GameObjectInfo*>(GetGameObjectInfo(187055)); - if(goInfo && goInfo->type == GAMEOBJECT_TYPE_GOOBER) - goInfo->goober.lockId = 57; // need LOCKTYPE_QUICK_OPEN + if(goInfo = GOBJECT(187055)) + if(goInfo->type == GAMEOBJECT_TYPE_GOOBER) + goInfo->goober.lockId = 57; // need LOCKTYPE_QUICK_OPEN + + // Naxxramas : Sapphiron Birth + if(goInfo = GOBJECT(181356)) + if(goInfo->type == GAMEOBJECT_TYPE_TRAP) + goInfo->trap.radius = 50; } void LoadOverridenDBCData() { SpellEntry *spellInfo; + for(uint32 i = 0; i < GetSpellStore()->GetNumRows(); ++i) + { + spellInfo = (SpellEntry*)GetSpellStore()->LookupEntry(i); + if(!spellInfo) + continue; - // Black Temple : Illidan : Parasitic Shadowfiend Passive - spellInfo = const_cast<SpellEntry*>(GetSpellStore()->LookupEntry(41913)); - if(spellInfo) - spellInfo->EffectApplyAuraName[0] = 4; // proc debuff, and summon infinite fiends + switch(i) + { + // Black Temple : Illidan : Parasitic Shadowfiend Passive + case 41013: + spellInfo->EffectApplyAuraName[0] = 4; // proc debuff, and summon infinite fiends + break; + //temp, not needed in 310 + case 28531: + case 55799: + spellInfo->DurationIndex = 21; + spellInfo->Effect[0] = SPELL_EFFECT_APPLY_AREA_AURA_ENEMY; + break; + // Naxxramas: Gothik : Inform Inf range + case 27892: + case 27928: + case 27935: + case 27915: + case 27931: + case 27937: + spellInfo->rangeIndex = 13; + break; + } + } } - diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h index 638b6926a27..80016619e8b 100644 --- a/src/bindings/scripts/include/sc_creature.h +++ b/src/bindings/scripts/include/sc_creature.h @@ -8,75 +8,28 @@ #ifndef SC_CREATURE_H #define SC_CREATURE_H -#include "CreatureAI.h" #include "Creature.h" +#include "CreatureAI.h" +#include "CreatureAIImpl.h" -#define HEROIC(n,h) (HeroicMode ? h : n) - -template<class T> -inline -const T& RAND(const T& v1, const T& v2) -{ - return rand()%2 ? v1 : v2; -} - -template<class T> -inline -const T& RAND(const T& v1, const T& v2, const T& v3) -{ - switch(rand()%3) - { - default: - case 0: return v1; - case 1: return v2; - case 2: return v3; - } -} - -template<class T> -inline -const T& RAND(const T& v1, const T& v2, const T& v3, const T& v4) -{ - switch(rand()%4) - { - default: - case 0: return v1; - case 1: return v2; - case 2: return v3; - case 3: return v4; - } -} - -template<class T> -inline -const T& RAND(const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) -{ - switch(rand()%4) - { - default: - case 0: return v1; - case 1: return v2; - case 2: return v3; - case 3: return v4; - case 4: return v5; - } -} - -float GetSpellMaxRangeForHostile(uint32 id); +class ScriptedInstance; class SummonList : private std::list<uint64> { -public: - explicit SummonList(Creature* creature) : m_creature(creature) {} - void Summon(Creature *summon) { push_back(summon->GetGUID()); } - void Despawn(Creature *summon) { remove(summon->GetGUID()); } - void DespawnEntry(uint32 entry); - void DespawnAll(); - void DoAction(uint32 entry, uint32 info); -private: - Creature *m_creature; + public: + explicit SummonList(Creature* creature) : m_creature(creature) {} + void Summon(Creature *summon) { push_back(summon->GetGUID()); } + void Despawn(Creature *summon) { remove(summon->GetGUID()); } + void DespawnEntry(uint32 entry); + void DespawnAll(); + void DoAction(uint32 entry, uint32 info); + void DoZoneInCombat(uint32 entry = 0); + private: + Creature *m_creature; }; +float GetSpellMaxRangeForHostile(uint32 id); + //Get a single creature of given entry Unit* FindCreature(uint32 entry, float range, Unit* Finder); @@ -106,9 +59,6 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI void AttackStart(Unit *); void AttackStart(Unit *, bool melee); - //Called at stoping attack by any attacker - void EnterEvadeMode(); - // Called at any Damage from any attacker (before damage apply) void DamageTaken(Unit *done_by, uint32 &damage) {} @@ -133,11 +83,8 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI // Called when spell hits a target void SpellHitTarget(Unit* target, const SpellEntry*) {} - // Called when creature is spawned or respawned (for reseting variables) - void JustRespawned(); - //Called at waypoint reached or PointMovement end - void MovementInform(uint32, uint32){} + void MovementInform(uint32 type, uint32 id){} // Called when AI is temporarily replaced or put back when possess is applied or removed void OnPossess(bool apply) {} @@ -206,6 +153,7 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI void DoModifyThreatPercent(Unit *pUnit, int32 pct); void DoTeleportTo(float x, float y, float z, uint32 time = 0); + void DoTeleportTo(const float pos[4]); void DoAction(const int32 param) {} @@ -224,16 +172,16 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI //Spawns a creature relative to m_creature Creature* DoSpawnCreature(uint32 id, float x, float y, float z, float angle, uint32 type, uint32 despawntime); + Creature *DoSummon(uint32 entry, const float pos[4], uint32 despawntime = 30000, TempSummonType type = TEMPSUMMON_CORPSE_TIMED_DESPAWN); + Creature *DoSummon(uint32 entry, WorldObject *obj, float radius = 5.0f, uint32 despawntime = 30000, TempSummonType type = TEMPSUMMON_CORPSE_TIMED_DESPAWN); //Selects a unit from the creature's current aggro list Unit* SelectUnit(SelectAggroTarget target, uint32 position); - Unit* SelectUnit(SelectAggroTarget target, uint32 position, float dist, bool playerOnly); - void SelectUnitList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget target, float dist, bool playerOnly); bool HealthBelowPct(uint32 pct) const { return me->GetHealth() * 100 < m_creature->GetMaxHealth() * pct; } //Returns spells that meet the specified criteria from the creatures spell list - SpellEntry const* SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTarget Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effect); + SpellEntry const* SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTargetType Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effect); //Checks if you can cast the specified spell bool CanCast(Unit* Target, SpellEntry const *Spell, bool Triggered = false); @@ -254,19 +202,29 @@ struct TRINITY_DLL_DECL Scripted_NoMovementAI : public ScriptedAI void AttackStart(Unit *); }; -struct TRINITY_DLL_DECL NullCreatureAI : public ScriptedAI +struct TRINITY_DLL_DECL BossAI : public ScriptedAI { - NullCreatureAI(Creature* c) : ScriptedAI(c) {} - ~NullCreatureAI() {} + BossAI(Creature *c, uint32 id) : ScriptedAI(c), bossId(id) + , summons(me), instance(c->GetInstanceData()) + {} - void Reset() {} - void EnterCombat(Unit*) {} - void MoveInLineOfSight(Unit *) {} - void AttackStart(Unit *) {} - void EnterEvadeMode() {} - bool IsVisible(Unit *) const { return false; } + uint32 bossId; + EventMap events; + SummonList summons; + InstanceData *instance; + + void JustSummoned(Creature *summon); + void SummonedCreatureDespawn(Creature *summon); + + void UpdateAI(const uint32 diff) = 0; + + void _Reset(); + void _EnterCombat(); + void _JustDied(); - void UpdateAI(const uint32) {} + void Reset() { _Reset(); } + void EnterCombat(Unit *who) { _EnterCombat(); } + void JustDied(Unit *killer) { _JustDied(); } }; #endif diff --git a/src/bindings/scripts/include/sc_instance.h b/src/bindings/scripts/include/sc_instance.h index cdf0e03aa37..0620e89af07 100644 --- a/src/bindings/scripts/include/sc_instance.h +++ b/src/bindings/scripts/include/sc_instance.h @@ -17,20 +17,7 @@ class TRINITY_DLL_DECL ScriptedInstance : public InstanceData { public: - ScriptedInstance(Map *map) : InstanceData(map) {} - ~ScriptedInstance() {} - - //All-purpose data storage 64 bit - virtual uint64 GetData64(uint32 Data) { return 0; } - virtual void SetData64(uint32 Data, uint64 Value) { } - - // Called every instance update - virtual void Update(uint32) {} - - // Save and Load instance data to the database - const char* Save() { return NULL; } - void Load(const char* in) { } }; #endif diff --git a/src/bindings/scripts/scripts/creature/mob_generic_creature.cpp b/src/bindings/scripts/scripts/creature/mob_generic_creature.cpp index 2f2d5349f2a..ec987e31c0e 100644 --- a/src/bindings/scripts/scripts/creature/mob_generic_creature.cpp +++ b/src/bindings/scripts/scripts/creature/mob_generic_creature.cpp @@ -156,11 +156,41 @@ struct TRINITY_DLL_DECL generic_creatureAI : public ScriptedAI } } }; + CreatureAI* GetAI_generic_creature(Creature *_Creature) { return new generic_creatureAI (_Creature); } +struct TRINITY_DLL_DECL trigger_periodicAI : public NullCreatureAI +{ + trigger_periodicAI(Creature* c) : NullCreatureAI(c) + { + spell = me->m_spells[0] ? GetSpellStore()->LookupEntry(me->m_spells[0]) : NULL; + interval = me->m_spells[1] ? me->m_spells[1] : 1000; + timer = interval; + } + + uint32 timer, interval; + const SpellEntry * spell; + + void UpdateAI(const uint32 diff) + { + if(timer < diff) + { + if(spell) + me->CastSpell(me, spell, true); + timer = interval; + } + else + timer -= diff; + } +}; + +CreatureAI* GetAI_trigger_periodic(Creature *_Creature) +{ + return new trigger_periodicAI (_Creature); +} void AddSC_generic_creature() { @@ -169,5 +199,10 @@ void AddSC_generic_creature() newscript->Name="generic_creature"; newscript->GetAI = &GetAI_generic_creature; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name="trigger_periodic"; + newscript->GetAI = &GetAI_trigger_periodic; + newscript->RegisterSelf(); } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp index 89fd75b9bc8..52e5a3e8915 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp @@ -262,7 +262,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI if (HeroicMode && banish_Timer < diff) { - Unit *target = SelectUnit(SELECT_TARGET_RANDOM,0,30,false); + Unit *target = SelectTarget(SELECT_TARGET_RANDOM,0,30,false); if (target) { DoCast(target,SPELL_BANISH); diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp index 99bce54be62..599767b591f 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp @@ -118,7 +118,7 @@ struct TRINITY_DLL_DECL boss_murmurAI : public Scripted_NoMovementAI // Murmur's Touch if (MurmursTouch_Timer < diff) { - if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0,80,true)) + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM,0,80,true)) DoCast(target, SPELL_MURMURS_TOUCH); MurmursTouch_Timer = 25000 + rand()%10000; }else MurmursTouch_Timer -= diff; @@ -162,7 +162,7 @@ struct TRINITY_DLL_DECL boss_murmurAI : public Scripted_NoMovementAI // Sonic Shock if(SonicShock_Timer < diff) { - if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0,20,false)) + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM,0,20,false)) if(target->isAlive()) DoCast(target, SPELL_SONIC_SHOCK); SonicShock_Timer = 10000+rand()%10000; diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp index 3cfb0af2fa1..37194a89b21 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp @@ -191,7 +191,7 @@ struct TRINITY_DLL_DECL instance_shadow_labyrinth : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { return str_data.c_str(); } diff --git a/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/instance_ahnkahet.cpp b/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/instance_ahnkahet.cpp index 41cb91f86b7..595a05a727f 100644 --- a/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/instance_ahnkahet.cpp +++ b/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/instance_ahnkahet.cpp @@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; diff --git a/src/bindings/scripts/scripts/zone/azjol_nerub/azjol_nerub/instance_azjol_nerub.cpp b/src/bindings/scripts/scripts/zone/azjol_nerub/azjol_nerub/instance_azjol_nerub.cpp index bd3fccd98d9..7e0252f2009 100644 --- a/src/bindings/scripts/scripts/zone/azjol_nerub/azjol_nerub/instance_azjol_nerub.cpp +++ b/src/bindings/scripts/scripts/zone/azjol_nerub/azjol_nerub/instance_azjol_nerub.cpp @@ -117,7 +117,7 @@ struct TRINITY_DLL_DECL instance_azjol_nerub : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; diff --git a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp index 1a3c40273af..104ef575de5 100644 --- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp @@ -416,7 +416,8 @@ bool GossipSelect_npc_susurrus(Player *player, Creature *_Creature, uint32 sende nodes.resize(2); nodes[0] = 92; //from susurrus nodes[1] = 91; //end at exodar - player->ActivateTaxiPathTo(nodes,11686); //TaxiPath 506. Using invisible model, possible Trinity must allow 0(from dbc) for cases like this. +// player->ActivateTaxiPathTo(nodes,11686); //TaxiPath 506. Using invisible model, possible Trinity must allow 0(from dbc) for cases like this. + player->ActivateTaxiPathTo(nodes); } return true; } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index 60c51f0be33..68431cb81ee 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -785,7 +785,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI case EVENT_PARASITIC_SHADOWFIEND: { - if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1, 200, true)) + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true)) m_creature->CastSpell(target, SPELL_PARASITIC_SHADOWFIEND, true); Timer[EVENT_PARASITIC_SHADOWFIEND] = 35000 + rand()%10000; }break; @@ -907,7 +907,7 @@ struct TRINITY_DLL_DECL flame_of_azzinothAI : public ScriptedAI void ChargeCheck() { - Unit* target = SelectUnit(SELECT_TARGET_FARTHEST, 0, 200, false); + Unit* target = SelectTarget(SELECT_TARGET_FARTHEST, 0, 200, false); if(target && (!m_creature->IsWithinCombatRange(target, FLAME_CHARGE_DISTANCE))) { m_creature->AddThreat(target, 5000000.0f); @@ -1765,7 +1765,7 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI { if(!m_creature->getVictim()) { - if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) + if(Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 999, true)) AttackStart(target); else { @@ -1862,15 +1862,15 @@ void boss_illidan_stormrageAI::JustSummoned(Creature* summon) summon->setDeathState(JUST_DIED); return; } - Unit *target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0, 999, true); + Unit *target = SelectTarget(SELECT_TARGET_TOPAGGRO, 0, 999, true); if(!target || target->HasAura(SPELL_PARASITIC_SHADOWFIEND) || target->HasAura(SPELL_PARASITIC_SHADOWFIEND2)) - target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, 999, true); if(target) summon->AI()->AttackStart(target); }break; case SHADOW_DEMON: - if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) // only on players. + if(Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 999, true)) // only on players. { summon->AddThreat(target, 5000000.0f); summon->AI()->AttackStart(target); diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp index c01db75bd58..ff90f7e6a81 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp @@ -53,7 +53,9 @@ EndScriptData */ struct TRINITY_DLL_DECL molten_flameAI : public NullCreatureAI { - molten_flameAI(Creature *c) : NullCreatureAI(c) + molten_flameAI(Creature *c) : NullCreatureAI(c) {} + + void InitializeAI() { float x, y, z; me->GetNearPoint(me, x, y, z, 1, 50, M_PI*2*rand_norm()); @@ -198,7 +200,7 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI events.ScheduleEvent(EVENT_HATEFUL_STRIKE, 5000, GCD_CAST, PHASE_STRIKE); break; case EVENT_SWITCH_TARGET: - if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1, 100, true)) + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true)) { DoResetThreat(); m_creature->AddThreat(target, 5000000.0f); @@ -208,7 +210,7 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI break; case EVENT_VOLCANO: { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 999, true); if(!target) target = m_creature->getVictim(); if(target) { diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp index 7d6b7140a9d..032bccc57ed 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp @@ -171,7 +171,7 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI { //m_creature->CastSpell(m_creature, SPELL_NEEDLE_SPINE, true); std::list<Unit*> target; - SelectUnitList(target, 3, SELECT_TARGET_RANDOM, 80, true); + SelectTargetList(target, 3, SELECT_TARGET_RANDOM, 80, true); for(std::list<Unit*>::iterator i = target.begin(); i != target.end(); ++i) m_creature->CastSpell(*i, 39835, true); events.ScheduleEvent(EVENT_NEEDLE, 15000+rand()%10000, GCD_CAST); diff --git a/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp b/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp index 43646746505..bf5d62a7b86 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp @@ -303,7 +303,7 @@ struct TRINITY_DLL_DECL instance_black_temple : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { return str_data.c_str(); } diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp index 6e26f3a0c03..d9f3ecd808a 100644 --- a/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp +++ b/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp @@ -265,7 +265,7 @@ struct TRINITY_DLL_DECL instance_blackrock_depths : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { return str_data.c_str(); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp index 21b39fa378b..13b0c78ebc1 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp @@ -148,7 +148,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI if(SwarmTimer < diff) { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0,100,true); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM,0,100,true); if(target) DoCast(target,SPELL_CARRION_SWARM); @@ -170,7 +170,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI { for(uint8 i=0;i<3;++i) { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0,100,true); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM,0,100,true); if(target) target->CastSpell(target,SPELL_SLEEP,true); } @@ -194,7 +194,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI }else AuraTimer -= diff; if(InfernoTimer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM,0,100,true), SPELL_INFERNO); + DoCast(SelectTarget(SELECT_TARGET_RANDOM,0,100,true), SPELL_INFERNO); InfernoTimer = 45000; switch(rand()%2) { diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp index 15085963b20..33e3d344da2 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp @@ -140,13 +140,13 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI if(RainTimer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM,0,30,true), SPELL_RAIN_OF_FIRE); + DoCast(SelectTarget(SELECT_TARGET_RANDOM,0,30,true), SPELL_RAIN_OF_FIRE); RainTimer = 20000+rand()%15000; }else RainTimer -= diff; if(DoomTimer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM,1,100,true), SPELL_DOOM);//never on tank + DoCast(SelectTarget(SELECT_TARGET_RANDOM,1,100,true), SPELL_DOOM);//never on tank DoomTimer = 45000+rand()%5000; }else DoomTimer -= diff; @@ -260,7 +260,7 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI if(CrippleTimer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM,0,100,true), SPELL_CRIPPLE); + DoCast(SelectTarget(SELECT_TARGET_RANDOM,0,100,true), SPELL_CRIPPLE); CrippleTimer = 25000+rand()%5000; }else CrippleTimer -= diff; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp index addbddab5b8..3e6b2bc8e98 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp @@ -169,7 +169,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI }else NovaTimer -= diff; if(IceboltTimer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM,0,40,true), SPELL_ICEBOLT); + DoCast(SelectTarget(SELECT_TARGET_RANDOM,0,40,true), SPELL_ICEBOLT); IceboltTimer = 11000+rand()%20000; }else IceboltTimer -= diff; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp index 583c7831af5..30f0c14caaf 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp @@ -724,7 +724,7 @@ struct mob_necromancerAI : public hyjal_trashAI void JustSummoned(Creature* summon) { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0,30,true); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM,0,30,true); if(target && summon) summon->Attack(target,false); summons.Summon(summon); diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp index 0dfa99198ac..cdcd6cb6b66 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp @@ -279,7 +279,7 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance }else debug_log("TSCR: Instance Hyjal: UpdateWorldState, but PlayerList is empty!"); } - const char* Save() + std::string GetSaveData() { return str_data.c_str(); } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp index eb35a3c74b4..254a4d1d899 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp @@ -322,7 +322,7 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI if(WaterboltTimer < diff) { - Unit* target = SelectUnit(SELECT_TARGET_NEAREST,0,14,true); + Unit* target = SelectTarget(SELECT_TARGET_NEAREST,0,14,true); if(!target) { target = SelectUnit(SELECT_TARGET_RANDOM,0); diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp index cea591182d5..f8d27df5bb0 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp @@ -235,7 +235,7 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI for(uint8 i = 0; i < 4; i++) { counter = 0; - do{target = SelectUnit(SELECT_TARGET_RANDOM, 1, 50, true); //target players only + do{target = SelectTarget(SELECT_TARGET_RANDOM, 1, 50, true); //target players only if(counter < Playercount) break; if(target) itr = list.find(target->GetGUID()); @@ -272,7 +272,7 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI for (int8 g = 0; g < 4; g++) //one unit cant cast more than one spell per update, so some players have to cast for us XD { counter = 0; - do {globuletarget = SelectUnit(SELECT_TARGET_RANDOM, 0,50,true); + do {globuletarget = SelectTarget(SELECT_TARGET_RANDOM, 0,50,true); if(globuletarget) itr = globulelist.find(globuletarget->GetGUID()); if (counter > Playercount) break; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp index 6c4ae72aec1..8aa759a87c8 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp @@ -236,7 +236,7 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance } return 0; } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; std::ostringstream stream; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp index 6d01da7f625..d375d073c35 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp @@ -209,7 +209,7 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; std::ostringstream stream; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp index 370b07c8adc..72c7992e109 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp @@ -165,7 +165,7 @@ struct TRINITY_DLL_DECL boss_the_black_stalkerAI : public ScriptedAI // Static Charge if(StaticCharge_Timer < diff) { - if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM,0,30,true)) + if(Unit *target = SelectTarget(SELECT_TARGET_RANDOM,0,30,true)) DoCast(target, SPELL_STATIC_CHARGE); StaticCharge_Timer = 10000; }else StaticCharge_Timer -= diff; diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp index 34943449b1e..4c90fdf49a8 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp @@ -144,7 +144,7 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; std::ostringstream stream; diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp index 115dfeab269..52e6f2e363c 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -62,7 +62,10 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI { boss_moroesAI(Creature *c) : ScriptedAI(c) { - FirstTime = true; + for(int i = 0; i < 4; i++) + { + AddId[i] = 0; + } pInstance = ((ScriptedInstance*)c->GetInstanceData()); } @@ -77,7 +80,6 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI uint32 CheckAdds_Timer; uint32 AddId[4]; - bool FirstTime; bool InVanish; bool Enrage; @@ -91,12 +93,10 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI Enrage = false; InVanish = false; - - SpawnAdds(); - - m_creature->setFaction(16); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + if(m_creature->GetHealth() > 0) + { + SpawnAdds(); + } if(pInstance) pInstance->SetData(DATA_MOROES_EVENT, NOT_STARTED); @@ -106,9 +106,11 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI { if(pInstance) pInstance->SetData(DATA_MOROES_EVENT, IN_PROGRESS); + + DoZoneInCombat(); } - void EnterCombat(Unit* who) + void Aggro(Unit* who) { StartEvent(); @@ -129,7 +131,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI void JustDied(Unit* victim) { - DoScriptText(SAY_DEATH, m_creature); + DoScriptText(SAY_DEATH, m_creature); if (pInstance) pInstance->SetData(DATA_MOROES_EVENT, DONE); @@ -147,33 +149,21 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { - if (i->getSource()->isAlive() && i->getSource()->HasAura(SPELL_GARROTE)) + if (i->getSource()->isAlive() && i->getSource()->HasAura(SPELL_GARROTE,0)) i->getSource()->RemoveAurasDueToSpell(SPELL_GARROTE); } } } - uint8 CheckAdd(uint64 guid) - { - Unit* pUnit = Unit::GetUnit((*m_creature), guid); - if (pUnit) - { - if (!pUnit->isAlive()) - return 1; // Exists but is dead - else - return 2; // Exists and is alive - } - return 0; // Does not exist - } - void SpawnAdds() { - Creature *pCreature = NULL; - - if (FirstTime) + DeSpawnAdds(); + if(isAddlistEmpty()) { + Creature *pCreature = NULL; std::vector<uint32> AddList; + for(uint8 i = 0; i < 6; ++i) AddList.push_back(Adds[i]); @@ -193,48 +183,44 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI } ++i; } - - FirstTime = false; - } - else + }else { - for(uint8 i = 0; i < 4; ++i) + for(int i = 0; i < 4; i++) { - switch(CheckAdd(AddGUID[i])) + Creature *pCreature = m_creature->SummonCreature(AddId[i], Locations[i][0], Locations[i][1], POS_Z, Locations[i][2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000); + if (pCreature) { - case 0: - pCreature = m_creature->SummonCreature(AddId[i], Locations[i][0], Locations[i][1], POS_Z, Locations[i][2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000); - if (pCreature) - AddGUID[i] = pCreature->GetGUID(); - break; - case 1: - pCreature = (Unit::GetCreature((*m_creature), AddGUID[i])); - if (pCreature) - { - pCreature->Respawn(); - pCreature->AI()->EnterEvadeMode(); - } - break; - case 2: - pCreature = (Unit::GetCreature((*m_creature), AddGUID[i])); - if (!pCreature->IsInEvadeMode()) - pCreature->AI()->EnterEvadeMode(); - break; + AddGUID[i] = pCreature->GetGUID(); } } } } + bool isAddlistEmpty() + { + for(int i = 0; i < 4; i++) + { + if(AddId[i] == 0) + return true; + } + return false; + } + void DeSpawnAdds() { for(uint8 i = 0; i < 4 ; ++i) { - Unit* Temp = NULL; + Creature* Temp = NULL; if (AddGUID[i]) { - Temp = Unit::GetUnit((*m_creature),AddGUID[i]); + Temp = Creature::GetCreature((*m_creature),AddGUID[i]); if (Temp && Temp->isAlive()) + { + (*Temp).GetMotionMaster()->Clear(true); Temp->DealDamage(Temp, Temp->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + Temp->RemoveCorpse(); + } + } } } @@ -246,7 +232,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI Creature* Temp = NULL; if (AddGUID[i]) { - Temp = Unit::GetCreature(*m_creature, AddGUID[i]); + Temp = Creature::GetCreature((*m_creature),AddGUID[i]); if (Temp && Temp->isAlive()) { Temp->AI()->AttackStart(m_creature->getVictim()); @@ -295,39 +281,12 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI //Cast Vanish, then Garrote random victim if (Vanish_Timer < diff) { - m_creature->setFaction(35); - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); DoCast(m_creature, SPELL_VANISH); InVanish = true; Vanish_Timer = 30000; Wait_Timer = 5000; }else Vanish_Timer -= diff; - if (InVanish) - { - if (Wait_Timer < diff) - { - switch(rand()%2) - { - case 0: DoScriptText(SAY_SPECIAL_1, m_creature); break; - case 1: DoScriptText(SAY_SPECIAL_2, m_creature); break; - } - - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0)) - target->CastSpell(target, SPELL_GARROTE,true); - - m_creature->setFaction(16); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); - m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true); - m_creature->AI()->AttackStart(m_creature->getVictim()); - InVanish = false; - }else Wait_Timer -= diff; - } - - //Gouge highest aggro, and attack second highest if (Gouge_Timer < diff) { DoCast(m_creature->getVictim(), SPELL_GOUGE); @@ -336,27 +295,32 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI if (Blind_Timer < diff) { - Unit* target = NULL; - std::list<HostilReference*> t_list = m_creature->getThreatManager().getThreatList(); - - if (t_list.empty()) - return; + Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); + if (target && target->GetTypeId() == TYPEID_PLAYER && m_creature->IsWithinMeleeRange(target)) + { + DoCast(target, SPELL_BLIND); + Blind_Timer = 40000; + } + else + Blind_Timer = 1000; + }else Blind_Timer -= diff; + } - std::vector<Unit*> target_list; - for (std::list<HostilReference*>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) + if (InVanish) + { + if (Wait_Timer < diff) + { + switch(rand()%2) { - target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid()); - if (target && target->GetDistance2d(m_creature) < 5) - target_list.push_back(target); + case 0: DoScriptText(SAY_SPECIAL_1, m_creature); break; + case 1: DoScriptText(SAY_SPECIAL_2, m_creature); break; } - if (target_list.size()) - target = *(target_list.begin()+rand()%target_list.size()); - if (target) - DoCast(target, SPELL_BLIND); + if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0)) + target->CastSpell(target, SPELL_GARROTE,true); - Blind_Timer = 40000; - }else Blind_Timer -= diff; + InVanish = false; + }else Wait_Timer -= diff; } if (!InVanish) @@ -384,7 +348,7 @@ struct TRINITY_DLL_DECL boss_moroes_guestAI : public ScriptedAI pInstance->SetData(DATA_MOROES_EVENT, NOT_STARTED); } - void EnterCombat(Unit* who) {} + void Aggro(Unit* who) {} void AcquireGUID() { @@ -542,7 +506,7 @@ struct TRINITY_DLL_DECL boss_baron_rafe_dreugerAI : public boss_moroes_guestAI struct TRINITY_DLL_DECL boss_lady_catriona_von_indiAI : public boss_moroes_guestAI { //Holy Priest - boss_lady_catriona_von_indiAI(Creature *c) : boss_moroes_guestAI(c) {Reset();} + boss_lady_catriona_von_indiAI(Creature *c) : boss_moroes_guestAI(c) {} uint32 DispelMagic_Timer; uint32 GreaterHeal_Timer; @@ -612,7 +576,7 @@ struct TRINITY_DLL_DECL boss_lady_catriona_von_indiAI : public boss_moroes_guest struct TRINITY_DLL_DECL boss_lady_keira_berrybuckAI : public boss_moroes_guestAI { //Holy Pally - boss_lady_keira_berrybuckAI(Creature *c) : boss_moroes_guestAI(c) {Reset();} + boss_lady_keira_berrybuckAI(Creature *c) : boss_moroes_guestAI(c) {} uint32 Cleanse_Timer; uint32 GreaterBless_Timer; @@ -729,7 +693,7 @@ struct TRINITY_DLL_DECL boss_lord_robin_darisAI : public boss_moroes_guestAI struct TRINITY_DLL_DECL boss_lord_crispin_ferenceAI : public boss_moroes_guestAI { //Arms Warr - boss_lord_crispin_ferenceAI(Creature *c) : boss_moroes_guestAI(c) {Reset();} + boss_lord_crispin_ferenceAI(Creature *c) : boss_moroes_guestAI(c) {} uint32 Disarm_Timer; uint32 HeroicStrike_Timer; diff --git a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp index e8dccdd62a4..62ad6fcf42c 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp @@ -247,7 +247,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance } } - const char* Save() + std::string GetSaveData() { return str_data.c_str(); } diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp index 0a0fb17cce4..c675c8d7c27 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,14 +14,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Anubrekhan -SD%Complete: 100 -SDComment: -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" +#include "def_naxxramas.h" #define SAY_GREET RAND(-1533000,-1533004,-1533005,-1533006,-1533007) #define SAY_AGGRO RAND(-1533001,-1533002,-1533003) @@ -31,46 +25,29 @@ EndScriptData */ #define SPELL_LOCUSTSWARM HEROIC(28785,54021) #define SPELL_SELF_SPAWN_5 29105 //This spawns 5 corpse scarabs ontop of us (most likely the player casts this on death) -#define SPELL_SELF_SPAWN_10 28864 //This is used by the crypt guards when they die #define EVENT_IMPALE 1 #define EVENT_LOCUST 2 #define MOB_CRYPT_GUARD 16573 -struct TRINITY_DLL_DECL boss_anubrekhanAI : public ScriptedAI +struct TRINITY_DLL_DECL boss_anubrekhanAI : public BossAI { - boss_anubrekhanAI(Creature *c) : ScriptedAI(c), summons(me) {} + boss_anubrekhanAI(Creature *c) : BossAI(c, BOSS_ANUBREKHAN) {} bool HasTaunted; - EventMap events; - SummonList summons; void Prepare() { HasTaunted = false; - DoSpawnCreature(MOB_CRYPT_GUARD, 0, 10, 0, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000); + DoSpawnCreature(MOB_CRYPT_GUARD, 0, 10, 0, me->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000); if(HeroicMode) - DoSpawnCreature(MOB_CRYPT_GUARD, 0, -10, 0, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000); + DoSpawnCreature(MOB_CRYPT_GUARD, 0, -10, 0, me->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000); } void InitializeAI() { Prepare(); } void JustReachedHome() { Prepare(); } - void Reset() - { - events.Reset(); - summons.DespawnAll(); - } - - void JustSummoned(Creature *summon) - { - summons.Summon(summon); - DoZoneInCombat(summon); - } - - void SummonedCreatureDespawn(Creature *summon) {summons.Despawn(summon);} - void KilledUnit(Unit* victim) { //Force the player to spawn corpse scarabs via spell @@ -82,9 +59,8 @@ struct TRINITY_DLL_DECL boss_anubrekhanAI : public ScriptedAI void EnterCombat(Unit *who) { + _EnterCombat(); DoScriptText(SAY_AGGRO, me); - DoZoneInCombat(); - events.ScheduleEvent(EVENT_IMPALE, 15000, 1); events.ScheduleEvent(EVENT_LOCUST, 80000 + rand()%40000, 1); } diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp index 5ec67a8920b..9ee594b02b5 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp @@ -1,4 +1,6 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* + * Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,83 +16,63 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Faerlina -SD%Complete: 50 -SDComment: -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" +#include "def_naxxramas.h" -#define SAY_GREET -1533009 -#define SAY_AGGRO1 -1533010 -#define SAY_AGGRO2 -1533011 -#define SAY_AGGRO3 -1533012 -#define SAY_AGGRO4 -1533013 -#define SAY_SLAY1 -1533014 -#define SAY_SLAY2 -1533015 -#define SAY_DEATH -1533016 +#define SAY_GREET -1533009 +#define SAY_AGGRO RAND(-1533010,-1533011,-1533012,-1533013) +#define SAY_SLAY RAND(-1533014,-1533015) +#define SAY_DEATH -1533016 //#define SOUND_RANDOM_AGGRO 8955 //soundId containing the 4 aggro sounds, we not using this -#define SPELL_POSIONBOLT_VOLLEY 28796 -#define H_SPELL_POSIONBOLT_VOLLEY 54098 -#define SPELL_ENRAGE 28798 -#define H_SPELL_ENRAGE 54100 -#define SPELL_RAINOFFIRE 28794 //Not sure if targeted AoEs work if casted directly upon a player +#define SPELL_POSION_BOLT_VOLLEY HEROIC(28796,54098) +#define SPELL_RAIN_OF_FIRE HEROIC(28794,54099) +#define SPELL_FRENZY HEROIC(28798,54100) +#define SPELL_WIDOWS_EMBRACE HEROIC(28732,54097) -struct TRINITY_DLL_DECL boss_faerlinaAI : public ScriptedAI +enum Events { - boss_faerlinaAI(Creature *c) : ScriptedAI(c) {} + EVENT_POSION = 1, + EVENT_FIRE, + EVENT_FRENZY, +}; - uint32 PoisonBoltVolley_Timer; - uint32 RainOfFire_Timer; - uint32 Enrage_Timer; - bool HasTaunted; +struct TRINITY_DLL_DECL boss_faerlinaAI : public BossAI +{ + boss_faerlinaAI(Creature *c) : BossAI(c, BOSS_FAERLINA), greet(false) {} - void Reset() - { - PoisonBoltVolley_Timer = 8000; - RainOfFire_Timer = 16000; - Enrage_Timer = 60000; - HasTaunted = false; - } + bool greet; void EnterCombat(Unit *who) { - switch (rand()%4) - { - case 0: DoScriptText(SAY_AGGRO1, m_creature); break; - case 1: DoScriptText(SAY_AGGRO2, m_creature); break; - case 2: DoScriptText(SAY_AGGRO3, m_creature); break; - case 3: DoScriptText(SAY_AGGRO4, m_creature); break; - } + _EnterCombat(); + DoScriptText(SAY_AGGRO, me); + events.ScheduleEvent(EVENT_POSION, 10000 + rand()%15000); + events.ScheduleEvent(EVENT_FIRE, 5000 + rand()%15000); + events.ScheduleEvent(EVENT_FRENZY, 60000 + rand()%20000); } void MoveInLineOfSight(Unit *who) { - if (!HasTaunted && m_creature->IsWithinDistInMap(who, 60.0f)) - { - DoScriptText(SAY_GREET, m_creature); - HasTaunted = true; - + if(!greet) + { + DoScriptText(SAY_GREET, me); + greet = true; } - ScriptedAI::MoveInLineOfSight(who); + BossAI::MoveInLineOfSight(who); } void KilledUnit(Unit* victim) { - switch (rand()%2) - { - case 0: DoScriptText(SAY_SLAY1, m_creature); break; - case 1: DoScriptText(SAY_SLAY2, m_creature); break; - } + if(!(rand()%3)) + DoScriptText(SAY_SLAY, me); } void JustDied(Unit* Killer) { - DoScriptText(SAY_DEATH, m_creature); + _JustDied(); + DoScriptText(SAY_DEATH, me); } void UpdateAI(const uint32 diff) @@ -98,31 +80,33 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public ScriptedAI if (!UpdateVictim()) return; - //PoisonBoltVolley_Timer - if (PoisonBoltVolley_Timer < diff) - { - DoCast(m_creature->getVictim(),SPELL_POSIONBOLT_VOLLEY); - PoisonBoltVolley_Timer = 11000; - }else PoisonBoltVolley_Timer -= diff; + events.Update(diff); - //RainOfFire_Timer - if (RainOfFire_Timer < diff) + while(uint32 eventId = events.ExecuteEvent()) { - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) - DoCast(target,SPELL_RAINOFFIRE); - RainOfFire_Timer = 16000; - }else RainOfFire_Timer -= diff; - - //Enrage_Timer - if (Enrage_Timer < diff) - { - DoCast(m_creature,SPELL_ENRAGE); - Enrage_Timer = 61000; - }else Enrage_Timer -= diff; + switch(eventId) + { + case EVENT_POSION: + if(!me->HasAura(SPELL_WIDOWS_EMBRACE)) + DoCastAOE(SPELL_POSION_BOLT_VOLLEY); + events.ScheduleEvent(EVENT_POSION, 10000 + rand()%15000); + return; + case EVENT_FIRE: + if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(target, SPELL_RAIN_OF_FIRE); + events.ScheduleEvent(EVENT_FIRE, 5000 + rand()%15000); + return; + case EVENT_FRENZY: + DoCast(me,SPELL_FRENZY); + events.ScheduleEvent(EVENT_FRENZY, 60000 + rand()%20000); + return; + } + } DoMeleeAttackIfReady(); } }; + CreatureAI* GetAI_boss_faerlina(Creature *_Creature) { return new boss_faerlinaAI (_Creature); @@ -136,4 +120,3 @@ void AddSC_boss_faerlina() newscript->GetAI = &GetAI_boss_faerlina; newscript->RegisterSelf(); } - diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp index 0becff399da..7def6c370f4 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,14 +14,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Gothik -SD%Complete: 0 -SDComment: Placeholder -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" +#include "def_naxxramas.h" #define SAY_SPEECH -1533040 #define SAY_KILL -1533041 @@ -29,36 +23,336 @@ EndScriptData */ #define SAY_TELEPORT -1533043 //Gothik -#define SPELL_HARVESTSOUL 28679 -#define SPELL_SHADOWBOLT 29317 -#define H_SPELL_SHADOWBOLT 56405 -//Unrelenting Trainee -#define SPELL_EAGLECLAW 30285 -#define SPELL_KNOCKDOWN_PASSIVE 6961 - -//Unrelenting Deathknight -#define SPELL_CHARGE 22120 -#define SPELL_SHADOW_MARK 27825 - -//Unrelenting Rider -#define SPELL_UNHOLY_AURA 55606 -#define H_SPELL_UNHOLY_AURA 55608 -#define SPELL_SHADOWBOLT_VOLLEY 27831 //Search thru targets and find those who have the SHADOW_MARK to cast this on -#define H_SPELL_SHADOWBOLT_VOLLEY 55638 - -//Spectral Trainee -#define SPELL_ARCANE_EXPLOSION 27989 - -//Spectral Deathknight -#define SPELL_WHIRLWIND 28334 -#define SPELL_SUNDER_ARMOR 25051 //cannot find sunder that reduces armor by 2950 -#define SPELL_CLEAVE 20677 -#define SPELL_MANA_BURN 17631 - -//Spectral Rider -#define SPELL_LIFEDRAIN 24300 -//USES SAME UNHOLY AURA AS UNRELENTING RIDER - -//Spectral Horse -#define SPELL_STOMP 27993 +#define SPELL_HARVEST_SOUL 28679 +#define SPELL_SHADOW_BOLT HEROIC(29317,56405) + +#define SPELL_INFORM_LIVE_TRAINEE 27892 +#define SPELL_INFORM_LIVE_KNIGHT 27928 +#define SPELL_INFORM_LIVE_RIDER 27935 +#define SPELL_INFORM_DEAD_TRAINEE 27915 +#define SPELL_INFORM_DEAD_KNIGHT 27931 +#define SPELL_INFORM_DEAD_RIDER 27937 + +#define MOB_LIVE_TRAINEE 16124 +#define MOB_LIVE_KNIGHT 16125 +#define MOB_LIVE_RIDER 16126 +#define MOB_DEAD_TRAINEE 16127 +#define MOB_DEAD_KNIGHT 16148 +#define MOB_DEAD_RIDER 16150 +#define MOB_DEAD_HORSE 16149 + +const struct Waves { uint32 entry, number, time; } +waves[] = +{ + {MOB_LIVE_TRAINEE, 2, 20000}, + {MOB_LIVE_TRAINEE, 2, 20000}, + {MOB_LIVE_TRAINEE, 2, 10000}, + {MOB_LIVE_KNIGHT, 1, 10000}, + {MOB_LIVE_TRAINEE, 2, 15000}, + {MOB_LIVE_KNIGHT, 1, 10000}, + {MOB_LIVE_TRAINEE, 2, 15000}, + {MOB_LIVE_TRAINEE, 2, 0}, + {MOB_LIVE_KNIGHT, 1, 10000}, + {MOB_LIVE_RIDER, 1, 10000}, + {MOB_LIVE_TRAINEE, 2, 5000}, + {MOB_LIVE_KNIGHT, 1, 15000}, + {MOB_LIVE_TRAINEE, 2, 0}, + {MOB_LIVE_RIDER, 1, 10000}, + {MOB_LIVE_KNIGHT, 2, 10000}, + {MOB_LIVE_TRAINEE, 2, 10000}, + {MOB_LIVE_RIDER, 1, 5000}, + {MOB_LIVE_KNIGHT, 1, 5000}, + {MOB_LIVE_TRAINEE, 2, 20000}, + {MOB_LIVE_TRAINEE, 2, 0}, + {MOB_LIVE_KNIGHT, 1, 0}, + {MOB_LIVE_RIDER, 1, 15000}, + {MOB_LIVE_TRAINEE, 2, 29000}, + {0, 0, 0}, +}; + +#define POS_Y_GATE -3360.78f + +enum Events +{ + EVENT_SUMMON = 1, + EVENT_HARVEST, + EVENT_BOLT, +}; + +#define POS_LIVE 3 +#define POS_DEAD 5 + +const float PosSummonLive[POS_LIVE][4] = +{ + {2669.7, -3430.9, 268.56, 1.6}, + {2692.0, -3430.9, 268.56, 1.6}, + {2714.1, -3430.9, 268.56, 1.6}, +}; + +const float PosSummonDead[POS_DEAD][4] = +{ + {2725.1, -3310.0, 268.85, 3.4}, + {2699.3, -3322.8, 268.60, 3.3}, + {2733.1, -3348.5, 268.84, 3.1}, + {2682.8, -3304.2, 268.85, 3.9}, + {2664.8, -3340.7, 268.23, 3.7}, +}; + +const float PosGround[4] = {2691.2, -3362.7, 267.68, 1.7}; +const float PosPlatform[4] = {2640.5, -3360.6, 285.26, 0}; + +struct TRINITY_DLL_DECL boss_gothikAI : public BossAI +{ + boss_gothikAI(Creature *c) : BossAI(c, BOSS_GOTHIK) {} + + uint32 waveCount; + std::vector<Creature*> liveTrigger; + std::vector<Creature*> deadTrigger; + + void Reset() + { + liveTrigger.clear(); + deadTrigger.clear(); + me->setActive(false); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); + me->SetReactState(REACT_PASSIVE); + _Reset(); + } + + void EnterCombat(Unit *who) + { + for(uint32 i = 0; i < POS_LIVE; ++i) + if(Creature *trigger = DoSummon(WORLD_TRIGGER, PosSummonLive[i])) + liveTrigger.push_back(trigger); + for(uint32 i = 0; i < POS_DEAD; ++i) + if(Creature *trigger = DoSummon(WORLD_TRIGGER, PosSummonDead[i])) + deadTrigger.push_back(trigger); + + if(liveTrigger.size() < POS_LIVE || deadTrigger.size() < POS_DEAD) + { + error_log("Script Gothik: cannot summon triggers!"); + EnterEvadeMode(); + return; + } + + _EnterCombat(); + me->setActive(true); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); + waveCount = 0; + events.ScheduleEvent(EVENT_SUMMON, 30000); + DoTeleportTo(PosPlatform); + DoScriptText(SAY_SPEECH, me); + if(instance) + instance->SetData(DATA_GOTHIK_GATE, 1); + } + + void JustSummoned(Creature *summon) + { + if(summon->GetEntry() == WORLD_TRIGGER) + summon->setActive(true); + else + { + summon->AI()->DoAction(me->HasReactState(REACT_PASSIVE) ? 1 : 0); + summon->AI()->EnterEvadeMode(); + } + summons.Summon(summon); + } + + void KilledUnit(Unit* victim) + { + if(!(rand()%5)) + DoScriptText(SAY_KILL, me); + } + + void JustDied(Unit* Killer) + { + _JustDied(); + DoScriptText(SAY_DEATH, me); + } + + void SpellHit(Unit *caster, const SpellEntry *spell) + { + uint32 spellId = 0; + switch(spell->Id) + { + case SPELL_INFORM_LIVE_TRAINEE: spellId = SPELL_INFORM_DEAD_TRAINEE; break; + case SPELL_INFORM_LIVE_KNIGHT: spellId = SPELL_INFORM_DEAD_KNIGHT; break; + case SPELL_INFORM_LIVE_RIDER: spellId = SPELL_INFORM_DEAD_RIDER; break; + } + if(spellId && me->isInCombat()) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_SPELLCAST); + me->CastSpell(deadTrigger[rand()%POS_DEAD], spellId, true); + } + } + + void SpellHitTarget(Unit *target, const SpellEntry *spell) + { + if(!me->isInCombat()) + return; + + switch(spell->Id) + { + case SPELL_INFORM_DEAD_TRAINEE: DoSummon(MOB_DEAD_TRAINEE, target, 0); break; + case SPELL_INFORM_DEAD_KNIGHT: DoSummon(MOB_DEAD_KNIGHT, target, 0); break; + case SPELL_INFORM_DEAD_RIDER: DoSummon(MOB_DEAD_RIDER, target, 1.0f); + DoSummon(MOB_DEAD_HORSE, target, 1.0f); break; + } + } + + void UpdateAI(const uint32 diff) + { + if(!me->isInCombat()) + return; + + if(me->getThreatManager().isThreatListEmpty()) + { + EnterEvadeMode(); + return; + } + + if(me->HasReactState(REACT_AGGRESSIVE) && !UpdateVictim()) + return; + + events.Update(diff); + + if(me->hasUnitState(UNIT_STAT_CASTING)) + return; + + while(uint32 eventId = events.ExecuteEvent()) + { + switch(eventId) + { + case EVENT_SUMMON: + if(waves[waveCount].entry) + { + for(uint32 i = 0; i < waves[waveCount].number; ++i) + DoSummon(waves[waveCount].entry, liveTrigger[rand()%POS_LIVE], 1.0f); + events.ScheduleEvent(EVENT_SUMMON, waves[waveCount].time); + ++waveCount; + } + else + { + DoScriptText(SAY_TELEPORT, me); + DoTeleportTo(PosGround); + me->SetReactState(REACT_AGGRESSIVE); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); + if(instance) + instance->SetData(DATA_GOTHIK_GATE, 0); + summons.DoAction(0, 0); + summons.DoZoneInCombat(); + events.ScheduleEvent(EVENT_BOLT, 1000); + events.ScheduleEvent(EVENT_HARVEST, 15000); + } + break; + case EVENT_BOLT: + DoCast(me->getVictim(), SPELL_SHADOW_BOLT); + events.ScheduleEvent(EVENT_BOLT, 1000); + return; + case EVENT_HARVEST: + DoCast(me->getVictim(), SPELL_HARVEST_SOUL); + events.ScheduleEvent(EVENT_HARVEST, 15000); + return; + } + } + + DoMeleeAttackIfReady(); + } +}; + +struct TRINITY_DLL_DECL mob_gothik_minionAI : public SpellAI +{ + mob_gothik_minionAI(Creature *c) : SpellAI(c) + { + liveSide = me->GetPositionY() < POS_Y_GATE; + } + + bool liveSide; + bool gateClose; + +#define SIDE_CHECK(who) (liveSide == (who->GetPositionY() < POS_Y_GATE)) + + void DoAction(const int32 param) + { + gateClose = param; + } + + void DamageTaken(Unit *attacker, uint32 &damage) + { + if(gateClose && !SIDE_CHECK(attacker)) + damage = 0; + } + + void JustDied(Unit *killer) + { + if(me->isSummon()) + { + if(Unit *owner = ((TempSummon*)me)->GetSummoner()) + SpellAI::JustDied(owner); + } + } + + void EnterEvadeMode() + { + if(!gateClose) + { + SpellAI::EnterEvadeMode(); + return; + } + + if(!_EnterEvadeMode()) + return; + + Map *map = me->GetMap(); + if(map->IsDungeon()) + { + Map::PlayerList const &PlayerList = map->GetPlayers(); + for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) + { + if(i->getSource()->isAlive() && SIDE_CHECK(i->getSource())) + { + AttackStart(i->getSource()); + return; + } + } + } + + me->GetMotionMaster()->MoveIdle(); + Reset(); + } + + void UpdateAI(const uint32 diff) + { + if(gateClose && (!SIDE_CHECK(me) || me->getVictim() && !SIDE_CHECK(me->getVictim()))) + { + EnterEvadeMode(); + return; + } + + SpellAI::UpdateAI(diff); + } +}; + +CreatureAI* GetAI_boss_gothik(Creature *_Creature) +{ + return new boss_gothikAI (_Creature); +} + +CreatureAI* GetAI_mob_gothik_minion(Creature *_Creature) +{ + return new mob_gothik_minionAI (_Creature); +} + +void AddSC_boss_gothik() +{ + Script *newscript; + newscript = new Script; + newscript->Name="boss_gothik"; + newscript->GetAI = &GetAI_boss_gothik; + newscript->RegisterSelf(); + newscript = new Script; + newscript->Name="mob_gothik_minion"; + newscript->GetAI = &GetAI_mob_gothik_minion; + newscript->RegisterSelf(); +} diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp index f18cd81064a..45f54611ae3 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,20 +14,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Grobbulus -SD%Complete: 0 -SDComment: Place holder -SDCategory: Naxxramas -EndScriptData */ - -/*Poison Cloud 26590 -Slime Spray 28157 -Fallout slime 28218 -Mutating Injection 28169 -Enrages 26527*/ - #include "precompiled.h" +#include "def_naxxramas.h" #define SPELL_BOMBARD_SLIME 28280 @@ -43,20 +31,13 @@ Enrages 26527*/ #define MOB_FALLOUT_SLIME 16290 -struct TRINITY_DLL_DECL boss_grobbulusAI : public ScriptedAI +struct TRINITY_DLL_DECL boss_grobbulusAI : public BossAI { - boss_grobbulusAI(Creature *c) : ScriptedAI(c) {} - - EventMap events; - - void Reset() - { - events.Reset(); - } + boss_grobbulusAI(Creature *c) : BossAI(c, BOSS_GROBBULUS) {} void EnterCombat(Unit *who) { - DoZoneInCombat(); + _EnterCombat(); events.ScheduleEvent(EVENT_CLOUD, 15000); events.ScheduleEvent(EVENT_INJECT, 20000); events.ScheduleEvent(EVENT_SPRAY, 15000+rand()%15000); //not sure diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp index 9207b2c09a2..0302a93c488 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,13 +14,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Heigan -SD%Complete: 0 -SDComment: Place Holder -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" #include "def_naxxramas.h" @@ -50,25 +43,14 @@ enum Phases //Spell by eye stalks #define SPELL_MIND_FLAY 26143 -struct TRINITY_DLL_DECL boss_heiganAI : public ScriptedAI +struct TRINITY_DLL_DECL boss_heiganAI : public BossAI { - boss_heiganAI(Creature *c) : ScriptedAI(c) - { - instance = ((ScriptedInstance*)c->GetInstanceData()); - } + boss_heiganAI(Creature *c) : BossAI(c, BOSS_HEIGAN) {} - EventMap events; - ScriptedInstance *instance; uint32 eruptSection; bool eruptDirection; Phases phase; - void Reset() - { - events.Reset(); - instance->SetBossState(BOSS_HEIGAN, NOT_STARTED); - } - void KilledUnit(Unit* Victim) { if(!(rand()%5)) @@ -77,16 +59,15 @@ struct TRINITY_DLL_DECL boss_heiganAI : public ScriptedAI void JustDied(Unit* Killer) { + _JustDied(); DoScriptText(SAY_DEATH, me); - instance->SetBossState(BOSS_HEIGAN, DONE); } void EnterCombat(Unit *who) { + _EnterCombat(); DoScriptText(SAY_AGGRO, me); - DoZoneInCombat(); EnterPhase(PHASE_FIGHT); - instance->SetBossState(BOSS_HEIGAN, IN_PROGRESS); } void EnterPhase(Phases newPhase) diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp index 087bc8dc12c..1f7b1a55daa 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,13 +14,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Noth -SD%Complete: 40 -SDComment: Missing Balcony stage -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" #include "def_naxxramas.h" @@ -34,6 +27,7 @@ EndScriptData */ #define SPELL_CURSE_PLAGUEBRINGER HEROIC(29213,54835) #define SPELL_BLINK RAND(29208,29209,29210,29211) #define SPELL_CRIPPLE HEROIC(29212,54814) +#define SPELL_TELEPORT 29216 #define MOB_WARRIOR 16984 #define MOB_CHAMPION 16983 @@ -45,8 +39,16 @@ EndScriptData */ #define TELE_Z 274.040 #define TELE_O 6.277 -// IMPORTANT: BALCONY TELEPORT NOT ADDED YET! WILL BE ADDED SOON! -// Dev note 26.12.2008: When is soon? :) +#define MAX_SUMMON_POS 5 + +const float SummonPos[MAX_SUMMON_POS][4] = +{ + {2728.12, -3544.43, 261.91, 6.04}, + {2729.05, -3544.47, 261.91, 5.58}, + {2728.24, -3465.08, 264.20, 3.56}, + {2704.11, -3456.81, 265.53, 4.51}, + {2663.56, -3464.43, 262.66, 5.20}, +}; enum Events { @@ -54,62 +56,91 @@ enum Events EVENT_CURSE, EVENT_BLINK, EVENT_WARRIOR, + EVENT_BALCONY, + EVENT_WAVE, + EVENT_GROUND, }; -struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI +struct TRINITY_DLL_DECL boss_nothAI : public BossAI { - boss_nothAI(Creature *c) : ScriptedAI(c), summons(me) - { - instance = ((ScriptedInstance*)c->GetInstanceData()); - } + boss_nothAI(Creature *c) : BossAI(c, BOSS_NOTH) {} - EventMap events; - SummonList summons; - ScriptedInstance *instance; + uint32 waveCount, balconyCount; void Reset() { - events.Reset(); - summons.DespawnAll(); - instance->SetBossState(BOSS_NOTH, NOT_STARTED); + _Reset(); + me->setActive(false); } void EnterCombat(Unit *who) { + _EnterCombat(); DoScriptText(SAY_AGGRO, me); - DoZoneInCombat(); - - events.ScheduleEvent(EVENT_CURSE, 20000+rand()%10000); - events.ScheduleEvent(EVENT_WARRIOR, 30000); - if(HeroicMode) - events.ScheduleEvent(EVENT_BLINK, 20000+rand()%10000); + me->setActive(true); + balconyCount = 0; + EnterPhaseGround(); + } - instance->SetBossState(BOSS_NOTH, IN_PROGRESS); + void EnterPhaseGround() + { + DoZoneInCombat(); + if(me->getThreatManager().isThreatListEmpty()) + EnterEvadeMode(); + else + { + events.ScheduleEvent(EVENT_BALCONY, 110000); + events.ScheduleEvent(EVENT_CURSE, 20000+rand()%10000); + events.ScheduleEvent(EVENT_WARRIOR, 30000); + if(HeroicMode) + events.ScheduleEvent(EVENT_BLINK, 20000+rand()%10000); + } } void KilledUnit(Unit* victim) { - DoScriptText(SAY_SLAY, me); + if(!(rand()%5)) + DoScriptText(SAY_SLAY, me); } void JustSummoned(Creature *summon) { summons.Summon(summon); - DoZoneInCombat(summon); + summon->setActive(true); + summon->AI()->DoZoneInCombat(); } - void SummonedCreatureDespawn(Creature *summon) { summons.Despawn(summon); } - void JustDied(Unit* Killer) { + _JustDied(); DoScriptText(SAY_DEATH, me); - instance->SetBossState(BOSS_NOTH, DONE); + } + + void SummonUndead(uint32 entry, uint32 num) + { + for(uint32 i = 0; i < num; ++i) + { + uint32 pos = rand()%MAX_SUMMON_POS; + me->SummonCreature(entry, SummonPos[pos][0], SummonPos[pos][1], SummonPos[pos][2], + SummonPos[pos][3], TEMPSUMMON_CORPSE_DESPAWN, 60000); + } } void UpdateAI(const uint32 diff) { - if(!UpdateVictim()) - return; + if(me->HasReactState(REACT_AGGRESSIVE)) // ground + { + if(!UpdateVictim()) + return; + } + else // balcony + { + if(me->getThreatManager().isThreatListEmpty()) // if no enemy, go back at once + { + events.Reset(); + events.ScheduleEvent(EVENT_GROUND, 0); + } + } events.Update(diff); @@ -123,8 +154,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI return; case EVENT_WARRIOR: DoScriptText(SAY_SUMMON, me); - for(uint8 i = 0; i < 6; i++) - m_creature->SummonCreature(MOB_WARRIOR,2684.804,-3502.517,261.313,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,80000); + SummonUndead(MOB_WARRIOR, HEROIC(2,3)); events.ScheduleEvent(EVENT_WARRIOR, 30000); return; case EVENT_BLINK: @@ -133,10 +163,46 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI DoResetThreat(); events.ScheduleEvent(EVENT_BLINK, 20000+rand()%10000); return; + case EVENT_BALCONY: + me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + me->AttackStop(); + me->RemoveAllAuras(); + me->NearTeleportTo(TELE_X, TELE_Y, TELE_Z, TELE_O); + events.Reset(); + events.ScheduleEvent(EVENT_WAVE, 2000); + waveCount = 0; + return; + case EVENT_WAVE: + DoScriptText(SAY_SUMMON, me); + switch(balconyCount) + { + case 0: SummonUndead(MOB_CHAMPION, HEROIC(2,4)); break; + case 1: SummonUndead(MOB_CHAMPION, HEROIC(1,2)); + SummonUndead(MOB_GUARDIAN, HEROIC(1,2)); break; + case 2: SummonUndead(MOB_GUARDIAN, HEROIC(2,4)); break; + default:SummonUndead(MOB_CHAMPION, HEROIC(5,10)); + SummonUndead(MOB_GUARDIAN, HEROIC(5,10));break; + } + ++waveCount; + events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, 34000); + return; + case EVENT_GROUND: + { + ++balconyCount; + me->SetReactState(REACT_AGGRESSIVE); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + float x, y, z, o; + me->GetHomePosition(x, y, z, o); + me->NearTeleportTo(x, y, z, o); + EnterPhaseGround(); + return; + } } } - DoMeleeAttackIfReady(); + if(me->HasReactState(REACT_AGGRESSIVE)) + DoMeleeAttackIfReady(); } }; diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp index 3f51fc08ee4..7886fad94cc 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,14 +14,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Patchwerk -SD%Complete: 80 -SDComment: Some issues with hateful strike inturrupting the melee swing timer. -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" +#include "def_naxxramas.h" #define SAY_AGGRO RAND(-1533017,-1533018) #define SAY_SLAY -1533019 @@ -39,18 +33,11 @@ EndScriptData */ #define EVENT_HATEFUL 2 #define EVENT_SLIME 3 -struct TRINITY_DLL_DECL boss_patchwerkAI : public ScriptedAI +struct TRINITY_DLL_DECL boss_patchwerkAI : public BossAI { - boss_patchwerkAI(Creature *c) : ScriptedAI(c) {} + boss_patchwerkAI(Creature *c) : BossAI(c, BOSS_PATCHWERK) {} bool Enraged; - EventMap events; - - void Reset() - { - events.Reset(); - Enraged = false; - } void KilledUnit(Unit* Victim) { @@ -60,13 +47,15 @@ struct TRINITY_DLL_DECL boss_patchwerkAI : public ScriptedAI void JustDied(Unit* Killer) { + _JustDied(); DoScriptText(SAY_DEATH, me); } void EnterCombat(Unit *who) { + _EnterCombat(); + Enraged = false; DoScriptText(SAY_AGGRO, me); - DoZoneInCombat(); events.ScheduleEvent(EVENT_HATEFUL, 1200); events.ScheduleEvent(EVENT_BERSERK, 360000); } @@ -88,15 +77,14 @@ struct TRINITY_DLL_DECL boss_patchwerkAI : public ScriptedAI //amount of HP within melee distance uint32 MostHP = 0; Unit* pMostHPTarget = NULL; - std::list<HostilReference*>::iterator i = m_creature->getThreatManager().getThreatList().begin(); - for(; i != m_creature->getThreatManager().getThreatList().end();) + std::list<HostilReference*>::iterator i = me->getThreatManager().getThreatList().begin(); + for(; i != me->getThreatManager().getThreatList().end(); ++i) { - Unit* pTemp = Unit::GetUnit(*m_creature, (*i)->getUnitGuid()); - ++i; - if (pTemp && pTemp->isAlive() && pTemp->GetHealth() > MostHP && m_creature->IsWithinMeleeRange(pTemp)) + Unit* target = (*i)->getTarget(); + if (target->isAlive() && target->GetHealth() > MostHP && me->IsWithinMeleeRange(target)) { - MostHP = pTemp->GetHealth(); - pMostHPTarget = pTemp; + MostHP = target->GetHealth(); + pMostHPTarget = target; } } diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp index 64147eaea8a..67fcaee7de3 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp @@ -1,4 +1,6 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* + * Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,14 +16,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Razuvious -SD%Complete: 50 -SDComment: Missing adds and event is impossible without Mind Control -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" +#include "def_naxxramas.h" //Razuvious - NO TEXT sound only //8852 aggro01 - Hah hah, I'm just getting warmed up! @@ -37,121 +33,86 @@ EndScriptData */ //8860 death - An honorable... death... //8947 - Aggro Mixed? - ? -#define SOUND_AGGRO1 8852 -#define SOUND_AGGRO2 8853 -#define SOUND_AGGRO3 8854 -#define SOUND_SLAY1 8861 -#define SOUND_SLAY2 8863 -#define SOUND_COMMND1 8855 -#define SOUND_COMMND2 8856 -#define SOUND_COMMND3 8858 -#define SOUND_COMMND4 8859 -#define SOUND_COMMND5 8861 +#define SOUND_AGGRO RAND(8852,8853,8854) +#define SOUND_SLAY RAND(8861,8863) +#define SOUND_COMMND RAND(8855,8856,8858,8859,8861) #define SOUND_DEATH 8860 #define SOUND_AGGROMIX 8847 -#define SPELL_UNBALANCINGSTRIKE 26613 -#define SPELL_DISRUPTINGSHOUT 29107 +#define SPELL_UNBALANCING_STRIKE 26613 +#define SPELL_DISRUPTING_SHOUT HEROIC(29107,55543) +#define SPELL_JAGGED_KNIFE 55550 +#define SPELL_HOPELESS 29125 -struct TRINITY_DLL_DECL boss_razuviousAI : public ScriptedAI +enum Events { - boss_razuviousAI(Creature *c) : ScriptedAI(c) {} - - uint32 UnbalancingStrike_Timer; - uint32 DisruptingShout_Timer; - uint32 CommandSound_Timer; + EVENT_STRIKE, + EVENT_SHOUT, + EVENT_KNIFE, + EVENT_COMMAND, +}; - void Reset() - { - UnbalancingStrike_Timer = 30000; //30 seconds - DisruptingShout_Timer = 25000; //25 seconds - CommandSound_Timer = 40000; //40 seconds - } +struct TRINITY_DLL_DECL boss_razuviousAI : public BossAI +{ + boss_razuviousAI(Creature *c) : BossAI(c, BOSS_RAZUVIOUS) {} - void KilledUnit(Unit* Victim) + void KilledUnit(Unit* victim) { - if (rand()%3) - return; - - switch (rand()%2) - { - case 0: - DoPlaySoundToSet(m_creature, SOUND_SLAY1); - break; - case 1: - DoPlaySoundToSet(m_creature, SOUND_SLAY2); - break; - } + if(!(rand()%3)) + DoPlaySoundToSet(me, SOUND_SLAY); } - void JustDied(Unit* Killer) + void JustDied(Unit* killer) { - DoPlaySoundToSet(m_creature, SOUND_DEATH); + _JustDied(); + DoPlaySoundToSet(me, SOUND_DEATH); + me->CastSpell(me, SPELL_HOPELESS, true); // TODO: this may affect other creatures } void EnterCombat(Unit *who) { - switch (rand()%3) - { - case 0: - DoPlaySoundToSet(m_creature, SOUND_AGGRO1); - break; - case 1: - DoPlaySoundToSet(m_creature, SOUND_AGGRO2); - break; - case 2: - DoPlaySoundToSet(m_creature, SOUND_AGGRO3); - break; - } + _EnterCombat(); + DoPlaySoundToSet(m_creature, SOUND_AGGRO); + events.ScheduleEvent(EVENT_STRIKE, 30000); + events.ScheduleEvent(EVENT_SHOUT, 25000); + events.ScheduleEvent(EVENT_COMMAND, 40000); } void UpdateAI(const uint32 diff) { - if (!UpdateVictim()) + if(!UpdateVictim()) return; - //UnbalancingStrike_Timer - if (UnbalancingStrike_Timer < diff) - { - DoCast(m_creature->getVictim(),SPELL_UNBALANCINGSTRIKE); - UnbalancingStrike_Timer = 30000; - }else UnbalancingStrike_Timer -= diff; - - //DisruptingShout_Timer - if (DisruptingShout_Timer < diff) - { - DoCast(m_creature->getVictim(), SPELL_DISRUPTINGSHOUT); - DisruptingShout_Timer = 25000; - }else DisruptingShout_Timer -= diff; + events.Update(diff); - //CommandSound_Timer - if (CommandSound_Timer < diff) + while(uint32 eventId = events.ExecuteEvent()) { - switch (rand()%5) + switch(eventId) { - case 0: - DoPlaySoundToSet(m_creature, SOUND_COMMND1); - break; - case 1: - DoPlaySoundToSet(m_creature, SOUND_COMMND2); - break; - case 2: - DoPlaySoundToSet(m_creature, SOUND_COMMND3); - break; - case 3: - DoPlaySoundToSet(m_creature, SOUND_COMMND4); - break; - case 4: - DoPlaySoundToSet(m_creature, SOUND_COMMND5); - break; + case EVENT_STRIKE: + DoCast(me->getVictim(), SPELL_UNBALANCING_STRIKE); + events.ScheduleEvent(EVENT_STRIKE, 30000); + return; + case EVENT_SHOUT: + DoCastAOE(SPELL_DISRUPTING_SHOUT); + events.ScheduleEvent(EVENT_SHOUT, 25000); + return; + case EVENT_KNIFE: + if(Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45)) + DoCast(target, SPELL_JAGGED_KNIFE); + events.ScheduleEvent(EVENT_KNIFE, 25000); + return; + case EVENT_COMMAND: + DoPlaySoundToSet(me, SOUND_COMMND); + events.ScheduleEvent(EVENT_COMMAND, 40000); + return; } - - CommandSound_Timer = 40000; - }else CommandSound_Timer -= diff; + } DoMeleeAttackIfReady(); } }; + CreatureAI* GetAI_boss_razuvious(Creature *_Creature) { return new boss_razuviousAI (_Creature); @@ -165,4 +126,3 @@ void AddSC_boss_razuvious() newscript->GetAI = &GetAI_boss_razuvious; newscript->RegisterSelf(); } - diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp index a0cfb77c06c..71259df7824 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp @@ -1,4 +1,6 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* + * Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,171 +16,324 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Boss_Sapphiron -SD%Complete: 0 -SDComment: Place Holder -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" +#include "def_naxxramas.h" #define EMOTE_BREATH -1533082 #define EMOTE_ENRAGE -1533083 -#define SPELL_ICEBOLT 28522 -#define SPELL_FROST_BREATH 29318 #define SPELL_FROST_AURA HEROIC(28531,55799) -#define SPELL_LIFE_DRAIN HEROIC(28542,55665) -//#define SPELL_CHILL 28560 -#define SPELL_BLIZZARD 28547 -#define SPELL_BESERK 26662 #define SPELL_CLEAVE 19983 -#define SPELL_TAIL_SWEEP 55697 +#define SPELL_TAIL_SWEEP HEROIC(55697,55696) +#define SPELL_SUMMON_BLIZZARD 28560 +#define SPELL_LIFE_DRAIN HEROIC(28542,55665) +#define SPELL_ICEBOLT 28522 +#define SPELL_FROST_BREATH 29318 +#define SPELL_FROST_EXPLOSION 28524 +#define SPELL_FROST_MISSILE 30101 +#define SPELL_BERSERK 26662 +#define SPELL_DIES 29357 +#define SPELL_CHILL HEROIC(28547,55699) -struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI +#define MOB_BLIZZARD 16474 +#define GO_ICEBLOCK 181247 + +enum Phases { - boss_sapphironAI(Creature* c) : ScriptedAI(c) {} - - uint32 Icebolt_Count; - uint32 Icebolt_Timer; - uint32 FrostBreath_Timer; - uint32 FrostAura_Timer; - uint32 LifeDrain_Timer; - uint32 Blizzard_Timer; - uint32 Tail_Sweep_Timer; - uint32 Cleave_Timer; - uint32 Fly_Timer; - uint32 Fly2_Timer; - uint32 Beserk_Timer; - uint32 phase; - bool IsInFly; - uint32 land_Timer; + PHASE_NULL = 0, + PHASE_BIRTH, + PHASE_GROUND, + PHASE_FLIGHT, +}; + +enum Events +{ + EVENT_BERSERK = 1, + EVENT_CLEAVE, + EVENT_TAIL, + EVENT_DRAIN, + EVENT_BLIZZARD, + EVENT_FLIGHT, + EVENT_LIFTOFF, + EVENT_ICEBOLT, + EVENT_BREATH, + EVENT_EXPLOSION, + EVENT_LAND, + EVENT_GROUND, + EVENT_BIRTH, +}; + +typedef std::map<uint64, uint64> IceBlockMap; + +struct TRINITY_DLL_DECL boss_sapphironAI : public BossAI +{ + boss_sapphironAI(Creature* c) : BossAI(c, BOSS_SAPPHIRON) + , phase(PHASE_NULL) + {} + + Phases phase; + uint32 iceboltCount; + IceBlockMap iceblocks; + + void InitializeAI() + { + float x, y, z; + me->GetPosition(x, y, z); + me->SummonGameObject(GO_BIRTH, x, y, z, 0, 0, 0, 0, 0, 0); + me->SetVisibility(VISIBILITY_OFF); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + me->SetReactState(REACT_PASSIVE); + + Reset(); + } void Reset() { - FrostAura_Timer = 2000; - LifeDrain_Timer = 24000; - Blizzard_Timer = 20000; - Tail_Sweep_Timer=(rand()%2+9)*1000; - Cleave_Timer=10000; - Fly_Timer = 45000; - Icebolt_Timer = 4000; - land_Timer = 0; - Beserk_Timer = 15*60000; - phase = 1; - Icebolt_Count = 0; - IsInFly = false; - - m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING); + _Reset(); + + if(phase = PHASE_FLIGHT) + ClearIceBlock(); + + phase = PHASE_NULL; } void EnterCombat(Unit *who) { - DoZoneInCombat(); + _EnterCombat(); + me->CastSpell(me, SPELL_FROST_AURA, true); + + events.ScheduleEvent(EVENT_BERSERK, 15*60000); + EnterPhaseGround(); + } + + void SpellHitTarget(Unit *target, const SpellEntry *spell) + { + if(spell->Id == SPELL_ICEBOLT) + { + IceBlockMap::iterator itr = iceblocks.find(target->GetGUID()); + if(itr != iceblocks.end() && !itr->second) + { + if(GameObject *iceblock = me->SummonGameObject(GO_ICEBLOCK, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, 0, 0, 0, 0, 25000)) + itr->second = iceblock->GetGUID(); + } + } + } + + void JustDied(Unit*) + { + _JustDied(); + me->CastSpell(me, SPELL_DIES, true); + } + + void MovementInform(uint32, uint32 id) + { + if(id == 1) + events.ScheduleEvent(EVENT_LIFTOFF, 0); + } + + void DoAction(const int32 param) + { + if(param == DATA_SAPPHIRON_BIRTH) + { + phase = PHASE_BIRTH; + events.ScheduleEvent(EVENT_BIRTH, 23000); + } + } + + void EnterPhaseGround() + { + phase = PHASE_GROUND; + me->SetReactState(REACT_AGGRESSIVE); + events.SetPhase(PHASE_GROUND); + events.ScheduleEvent(EVENT_CLEAVE, 5000+rand()%10000, 0, PHASE_GROUND); + events.ScheduleEvent(EVENT_TAIL, 5000+rand()%10000, 0, PHASE_GROUND); + events.ScheduleEvent(EVENT_DRAIN, 24000, 0, PHASE_GROUND); + events.ScheduleEvent(EVENT_BLIZZARD, 5000+rand()%5000, 0, PHASE_GROUND); + events.ScheduleEvent(EVENT_FLIGHT, 45000); + } + + void ClearIceBlock() + { + for(IceBlockMap::iterator itr = iceblocks.begin(); itr != iceblocks.end(); ++itr) + { + if(Player *player = Unit::GetPlayer(itr->first)) + player->RemoveAura(SPELL_ICEBOLT); + if(GameObject *go = GameObject::GetGameObject(*me, itr->second)) + go->Delete(); + } + iceblocks.clear(); } void UpdateAI(const uint32 diff) { - if (!UpdateVictim()) + if(!phase) return; - if(phase == 1) + events.Update(diff); + + if(phase == PHASE_GROUND) { - if(LifeDrain_Timer < diff) - { - DoCastAOE(SPELL_LIFE_DRAIN); - LifeDrain_Timer = 24000; - }else LifeDrain_Timer -= diff; + if(!UpdateVictim()) + return; - if(Blizzard_Timer < diff) + while(uint32 eventId = events.ExecuteEvent()) { - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) + switch(eventId) { - DoCast(target,SPELL_BLIZZARD); - //It seems NO damage? + case EVENT_BERSERK: + DoScriptText(EMOTE_ENRAGE, m_creature); + DoCast(me, SPELL_BERSERK); + return; + case EVENT_CLEAVE: + DoCast(me->getVictim(), SPELL_CLEAVE); + events.ScheduleEvent(EVENT_CLEAVE, 5000+rand()%10000, 0, PHASE_GROUND); + return; + case EVENT_TAIL: + DoCastAOE(SPELL_TAIL_SWEEP); + events.ScheduleEvent(EVENT_TAIL, 5000+rand()%10000, 0, PHASE_GROUND); + return; + case EVENT_DRAIN: + DoCastAOE(SPELL_LIFE_DRAIN); + events.ScheduleEvent(EVENT_DRAIN, 24000, 0, PHASE_GROUND); + return; + case EVENT_BLIZZARD: + { + //DoCastAOE(SPELL_SUMMON_BLIZZARD); + float x, y, z; + me->GetGroundPointAroundUnit(x, y, z, rand_norm()*20, rand_norm()*2*M_PI); + if(Creature *summon = me->SummonCreature(MOB_BLIZZARD, x, y, z, 0, TEMPSUMMON_TIMED_DESPAWN, 25000+rand()%5000)) + summon->GetMotionMaster()->MoveRandom(40); + events.ScheduleEvent(EVENT_BLIZZARD, HEROIC(20000,7000), 0, PHASE_GROUND); + break; + } + case EVENT_FLIGHT: + phase = PHASE_FLIGHT; + events.SetPhase(PHASE_FLIGHT); + me->SetReactState(REACT_PASSIVE); + me->AttackStop(); + float x, y, z, o; + me->GetHomePosition(x, y, z, o); + me->GetMotionMaster()->MovePoint(1, x, y, z); + return; } - Blizzard_Timer = 20000; - }else Blizzard_Timer -= diff; + } - //SPELL_CLEAVE - if(Cleave_Timer < diff) + DoMeleeAttackIfReady(); + } + else + { + /*if(me->getThreatManager().isThreatListEmpty()) { - DoCast(m_creature->getVictim(),SPELL_CLEAVE); - Cleave_Timer = 10000; - }else Cleave_Timer -= diff; + EnterEvadeMode(); + return; + }*/ - //Tail Sweep_Timer, - if(Tail_Sweep_Timer < diff) + if(uint32 eventId = events.ExecuteEvent()) { - DoCast(m_creature,SPELL_TAIL_SWEEP); - Tail_Sweep_Timer=(rand()%2+9)*1000; - }else Tail_Sweep_Timer -= diff; + switch(eventId) + { + case EVENT_LIFTOFF: + me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF); + me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING); + me->SendMovementFlagUpdate(); + events.ScheduleEvent(EVENT_ICEBOLT, 1500); + iceboltCount = HEROIC(2,3); + return; + case EVENT_ICEBOLT: + { + std::vector<Unit*> targets; + std::list<HostilReference*>::iterator i = me->getThreatManager().getThreatList().begin(); + for(; i != me->getThreatManager().getThreatList().end(); ++i) + if((*i)->getTarget()->GetTypeId() == TYPEID_PLAYER && !(*i)->getTarget()->HasAura(SPELL_ICEBOLT)) + targets.push_back((*i)->getTarget()); + + if(targets.empty()) + iceboltCount = 0; + else + { + std::vector<Unit*>::iterator itr = targets.begin(); + advance(itr, rand()%targets.size()); + iceblocks.insert(std::make_pair((*itr)->GetGUID(), 0)); + DoCast(*itr, SPELL_ICEBOLT); + --iceboltCount; + } + + if(iceboltCount) + events.ScheduleEvent(EVENT_ICEBOLT, 1000); + else + events.ScheduleEvent(EVENT_BREATH, 1000); + return; + } + case EVENT_BREATH: + { + DoScriptText(EMOTE_BREATH, me); + DoCastAOE(SPELL_FROST_MISSILE); + events.ScheduleEvent(EVENT_EXPLOSION, 8000); + return; + } + case EVENT_EXPLOSION: + CastExplosion(); + ClearIceBlock(); + events.ScheduleEvent(EVENT_LAND, 3000); + return; + case EVENT_LAND: + me->HandleEmoteCommand(EMOTE_ONESHOT_LAND); + me->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING); + me->SendMovementFlagUpdate(); + events.ScheduleEvent(EVENT_GROUND, 1500); + return; + case EVENT_GROUND: + EnterPhaseGround(); + return; + case EVENT_BIRTH: + me->SetVisibility(VISIBILITY_ON); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + me->SetReactState(REACT_AGGRESSIVE); + return; + } + }//if(uint32 eventId = events.ExecuteEvent()) + }//if(phase == PHASE_GROUND) + } + + void CastExplosion() + { + DoZoneInCombat(); // make sure everyone is in threatlist + std::vector<Unit*> targets; + std::list<HostilReference*>::iterator i = me->getThreatManager().getThreatList().begin(); + for(; i != me->getThreatManager().getThreatList().end(); ++i) + { + Unit *target = (*i)->getTarget(); + if(target->GetTypeId() != TYPEID_PLAYER) + continue; - if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() > 10) + if(target->HasAura(SPELL_ICEBOLT)) { - if(Fly_Timer < diff) - { - phase = 2; - m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF); - m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING); - m_creature->GetMotionMaster()->Clear(false); - m_creature->GetMotionMaster()->MoveIdle(); - m_creature->SetHover(true); - Icebolt_Timer = 4000; - Icebolt_Count = 0; - IsInFly = true; - }else Fly_Timer -= diff; + target->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, true); + targets.push_back(target); + continue; } - } - if (phase == 2) - { - if(Icebolt_Timer < diff && Icebolt_Count < 5) + for(IceBlockMap::iterator itr = iceblocks.begin(); itr != iceblocks.end(); ++itr) { - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) + if(GameObject *go = GameObject::GetGameObject(*me, itr->second)) { - DoCast(target,SPELL_ICEBOLT); - ++Icebolt_Count; - error_log("Count incremented"); + if(go->IsInBetween(me, target, 2.0f) + && me->GetExactDistance2d(target->GetPositionX(), target->GetPositionY()) - me->GetExactDistance2d(go->GetPositionX(), go->GetPositionY()) < 5.0f) + { + target->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, true); + targets.push_back(target); + break; + } } - FrostBreath_Timer = 6000; - Icebolt_Timer = 4000; - }else Icebolt_Timer -= diff; - - if(Icebolt_Count == 5 && IsInFly && FrostBreath_Timer < diff ) - { - DoScriptText(EMOTE_BREATH, m_creature); - DoCast(m_creature->getVictim(),SPELL_FROST_BREATH); - land_Timer = 2000; - IsInFly = false; - FrostBreath_Timer = 6000; - }else FrostBreath_Timer -= diff; - - if(!IsInFly && land_Timer < diff) - { - phase = 1; - m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LAND); - m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING); - m_creature->GetMotionMaster()->Clear(false); - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); - m_creature->SetHover(true); - land_Timer = 0; - Fly_Timer = 67000; - }else land_Timer -= diff; + } } - if (Beserk_Timer < diff) - { - DoScriptText(EMOTE_ENRAGE, m_creature); - DoCast(m_creature,SPELL_BESERK); - Beserk_Timer = 300000; - }else Beserk_Timer -= diff; + me->CastSpell(me, SPELL_FROST_EXPLOSION, true); - if (phase!=2) - DoMeleeAttackIfReady(); + for(std::vector<Unit*>::iterator itr = targets.begin(); itr != targets.end(); ++itr) + (*itr)->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, false); } }; diff --git a/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h b/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h index b0931c556fe..383200d4600 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h +++ b/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,15 +21,32 @@ enum Encounter { + BOSS_ANUBREKHAN, + BOSS_FAERLINA, + BOSS_MAEXXNA, BOSS_NOTH, BOSS_HEIGAN, BOSS_LOATHEB, + BOSS_PATCHWERK, + BOSS_GROBBULUS, + BOSS_GLUTH, + BOSS_THADDIUS, + BOSS_RAZUVIOUS, + BOSS_GOTHIK, + BOSS_HORSEMEN, + BOSS_SAPPHIRON, + BOSS_KELTHUZAD, + MAX_BOSS_NUMBER }; enum Data { DATA_HEIGAN_ERUPT, + DATA_GOTHIK_GATE, + DATA_SAPPHIRON_BIRTH, }; +#define GO_BIRTH 181356 + #endif diff --git a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp index dfa085f39be..e5913660c3f 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -14,16 +14,38 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* ScriptData -SDName: Instance_Naxxramas -SD%Complete: 0 -SDComment: Place holder -SDCategory: Naxxramas -EndScriptData */ - #include "precompiled.h" #include "def_naxxramas.h" +const DoorData doorData[] = +{ + {181126, BOSS_ANUBREKHAN,DOOR_TYPE_ROOM}, + {181195, BOSS_ANUBREKHAN,DOOR_TYPE_PASSAGE}, + {194022, BOSS_FAERLINA, DOOR_TYPE_PASSAGE}, + {181209, BOSS_FAERLINA, DOOR_TYPE_PASSAGE}, + {181209, BOSS_MAEXXNA, DOOR_TYPE_ROOM}, + {181200, BOSS_NOTH, DOOR_TYPE_ROOM}, + {181201, BOSS_NOTH, DOOR_TYPE_PASSAGE}, + {181202, BOSS_NOTH, DOOR_TYPE_PASSAGE}, + {181202, BOSS_HEIGAN, DOOR_TYPE_ROOM}, + {181203, BOSS_HEIGAN, DOOR_TYPE_PASSAGE}, + {181241, BOSS_HEIGAN, DOOR_TYPE_PASSAGE}, + {181241, BOSS_LOATHEB, DOOR_TYPE_ROOM}, + {181123, BOSS_PATCHWERK, DOOR_TYPE_PASSAGE}, + {181123, BOSS_GROBBULUS, DOOR_TYPE_ROOM}, + {181120, BOSS_GLUTH, DOOR_TYPE_PASSAGE}, + {181121, BOSS_GLUTH, DOOR_TYPE_PASSAGE}, + {181121, BOSS_THADDIUS, DOOR_TYPE_ROOM}, + {181124, BOSS_RAZUVIOUS, DOOR_TYPE_PASSAGE}, + {181124, BOSS_GOTHIK, DOOR_TYPE_ROOM}, + {181125, BOSS_GOTHIK, DOOR_TYPE_PASSAGE}, + {181119, BOSS_GOTHIK, DOOR_TYPE_PASSAGE}, + {181119, BOSS_HORSEMEN, DOOR_TYPE_ROOM}, + {0, 0, DOOR_TYPE_ROOM}, // EOF +}; + +#define GO_GOTHIK_GATE 181170 + #define SPELL_ERUPTION 29371 const float HeiganPos[2] = {2796, -3707}; @@ -55,14 +77,28 @@ inline uint32 GetEruptionSection(float x, float y) return 3; } -struct TRINITY_DLL_DECL instance_naxxramas : public ScriptedInstance +struct TRINITY_DLL_DECL instance_naxxramas : public InstanceData { - instance_naxxramas(Map *map) : ScriptedInstance(map) + instance_naxxramas(Map *map) : InstanceData(map) + , Sapphiron(NULL) { - SetBossNumber(15); + SetBossNumber(MAX_BOSS_NUMBER); + LoadDoorData(doorData); } + std::set<Creature*> Worshipper; std::set<GameObject*> HeiganEruption[4]; + GameObject *GothikGate; + Creature *Sapphiron; + + void OnCreatureCreate(Creature *creature, bool add) + { + switch(creature->GetEntry()) + { + case 15989: Sapphiron = add ? creature : NULL; break; + case 16506: if(add) Worshipper.insert(creature); else Worshipper.erase(creature); break; + } + } void OnObjectCreate(GameObject* go, bool add) { @@ -78,11 +114,24 @@ struct TRINITY_DLL_DECL instance_naxxramas : public ScriptedInstance switch(go->GetEntry()) { - case 181200: SetBossRoomDoor(BOSS_NOTH, go, add); break; - case 181201: SetBossPassageDoor(BOSS_NOTH, go, add); break; - case 181202: SetBossRoomDoor(BOSS_HEIGAN, go, add); break; - case 181203: SetBossPassageDoor(BOSS_HEIGAN, go, add); break; - case 181241: SetBossRoomDoor(BOSS_LOATHEB, go, add); break; + case GO_BIRTH: if(!add && Sapphiron) Sapphiron->AI()->DoAction(DATA_SAPPHIRON_BIRTH); return; + case GO_GOTHIK_GATE: GothikGate = add ? go : NULL; break; + } + + AddDoor(go, add); + } + + void SetBossState(uint32 id, EncounterState state) + { + InstanceData::SetBossState(id, state); + switch(id) + { + case BOSS_FAERLINA: + if(state == NOT_STARTED) + for(std::set<Creature*>::iterator itr = Worshipper.begin(); itr != Worshipper.end(); ++itr) + if(!(*itr)->isAlive()) + (*itr)->Respawn(); + break; } } @@ -93,6 +142,10 @@ struct TRINITY_DLL_DECL instance_naxxramas : public ScriptedInstance case DATA_HEIGAN_ERUPT: HeiganErupt(value); break; + case DATA_GOTHIK_GATE: + if(GothikGate) + GothikGate->SetGoState(GOState(value)); + break; } } @@ -122,6 +175,6 @@ void AddSC_instance_naxxramas() Script *newscript; newscript = new Script; newscript->Name = "instance_naxxramas"; - newscript->GetInstanceData = GetInstanceData_instance_naxxramas; + newscript->GetInstanceData = &GetInstanceData_instance_naxxramas; newscript->RegisterSelf(); } diff --git a/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp b/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp index caf18778abb..30f843badb0 100644 --- a/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp +++ b/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp @@ -185,7 +185,7 @@ struct TRINITY_DLL_DECL instance_shadowfang_keep : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { return str_data.c_str(); } diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp index 8e42d074f88..e753d0b6047 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp @@ -306,7 +306,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI case 2:{ error_log("Summon Vapor case 2"); Unit* target; - target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true); if(!target) target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_PLAYER_GUID)); if(target) { @@ -331,7 +331,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI error_log("Summon Vapor case3"); //m_creature->CastSpell(m_creature, SPELL_VAPOR_SELECT); need core support Unit* target; - target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true); if(!target) target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_PLAYER_GUID)); if(target) { @@ -358,7 +358,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI break; case 5:{ Unit* target; - target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true); if(!target) target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_PLAYER_GUID)); if(target) { @@ -471,7 +471,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI Timer[EVENT_GAS_NOVA] = 20000 + rand()%5 * 1000; break; case EVENT_ENCAPSULATE: - if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true)) + if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true)) { m_creature->CastSpell(target, SPELL_ENCAPSULATE_CHANNEL, false); target->CastSpell(target, SPELL_ENCAPSULATE_EFFECT, true);// linked aura, need core patch to remove this hack diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp index 98cbfda7a7f..a0bd75cb156 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp @@ -540,7 +540,7 @@ struct TRINITY_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI float x,y,z; Unit* target; for(uint8 z = 0; z < 6; ++z){ - target = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); if (!target->HasAura(SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT,0)) break; } target->GetPosition(x,y,z); @@ -584,7 +584,7 @@ struct TRINITY_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI if(!m_creature->IsNonMeleeSpellCasted(false)){ m_creature->RemoveAurasDueToSpell(SPELL_SOUL_FLAY); for(uint8 z = 0; z < 6; ++z){ - randomPlayer = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true); + randomPlayer = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); if (!randomPlayer->HasAura(SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT,0)) break; } if(randomPlayer)DoCast(randomPlayer, SPELL_LEGION_LIGHTNING, false); @@ -658,7 +658,7 @@ struct TRINITY_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI case TIMER_ARMAGEDDON: //Phase 4 Unit* target; for(uint8 z = 0; z < 6; ++z){ - target = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); if (!target->HasAura(SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT,0)) break; } if(target){ @@ -1199,7 +1199,7 @@ struct TRINITY_DLL_DECL mob_sinster_reflectionAI : public ScriptedAI Timer[1] = 4000; } if(Timer[2] < diff){ - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_SR_CURSE_OF_AGONY, true); + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_SR_CURSE_OF_AGONY, true); Timer[2] = 3000; } DoMeleeAttackIfReady(); diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp index 6000ee474e0..b38607e1a7f 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp @@ -155,7 +155,7 @@ struct TRINITY_DLL_DECL boss_entropiusAI : public ScriptedAI m_creature->SummonCreature(CREATURE_DARK_FIENDS, x,y,z,o, TEMPSUMMON_CORPSE_DESPAWN, 0); break; } - summoned->AI()->AttackStart(SelectUnit(SELECT_TARGET_RANDOM,0, 50, true)); + summoned->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM,0, 50, true)); Summons.Summon(summoned); } @@ -180,10 +180,10 @@ struct TRINITY_DLL_DECL boss_entropiusAI : public ScriptedAI }else EnrageTimer -= diff; if(BlackHoleSummonTimer < diff){ - Unit* random = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true); + Unit* random = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); if(!random)return; DoCast(random, SPELL_DARKNESS_E, false); - random = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true); + random = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); if(!random)return; random->CastSpell(random, SPELL_BLACKHOLE, false); BlackHoleSummonTimer = 15000; @@ -260,7 +260,7 @@ struct TRINITY_DLL_DECL boss_muruAI : public Scripted_NoMovementAI summoned->CastSpell(summoned,SPELL_DARKFIEND_VISUAL,false); break; } - summoned->AI()->AttackStart(SelectUnit(SELECT_TARGET_RANDOM,0, 50, true)); + summoned->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM,0, 50, true)); Summons.Summon(summoned); } @@ -441,7 +441,7 @@ struct TRINITY_DLL_DECL npc_dark_fiendAI : public ScriptedAI if(!InAction){ m_creature->clearUnitState(UNIT_STAT_STUNNED); DoCastAOE(SPELL_DARKFIEND_SKIN, false); - AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true)); + AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)); InAction = true; WaitTimer = 500; }else{ diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/instance_sunwell_plateau.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/instance_sunwell_plateau.cpp index f8bba5acf21..597103b62cf 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/instance_sunwell_plateau.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/instance_sunwell_plateau.cpp @@ -236,7 +236,7 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance { } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; std::ostringstream stream; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp index 168f0f48e3a..dfeb7fea3e6 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp @@ -352,7 +352,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI if(Charge_Timer < diff) { - Unit *target= SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_CHARGE), true); + Unit *target= SelectTarget(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_CHARGE), true); if(target) DoCast(target, SPELL_CHARGE); Charge_Timer = 30000; @@ -410,7 +410,8 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI else { Unit *target = NULL; - if(Phase1 && target && (target = m_creature->SelectNearestTarget(5))) + target = m_creature->SelectNearestTarget(5); + if(Phase1 && target) m_creature->AI()->AttackStart(target); else { diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp index 83cb789b189..6af14eceeed 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp @@ -230,7 +230,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI if( Wrath_Timer < diff) { m_creature->InterruptNonMeleeSpells(false); - DoCast(SelectUnit(SELECT_TARGET_RANDOM,1,100,true), SPELL_WRATH_OF_THE_ASTROMANCER, true); + DoCast(SelectTarget(SELECT_TARGET_RANDOM,1,100,true), SPELL_WRATH_OF_THE_ASTROMANCER, true); Wrath_Timer = 20000+rand()%5000; }else Wrath_Timer -= diff; @@ -260,7 +260,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI if (MarkOfTheAstromancer_Timer < diff) //A debuff that lasts for 5 seconds, cast several times each phase on a random raid member, but not the main tank { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1, 100, true); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); if(target) DoCast(target, SPELL_MARK_OF_THE_ASTROMANCER); else DoCast(m_creature->getVictim(), SPELL_MARK_OF_THE_ASTROMANCER); diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp index 6745c4fd9ec..7557e03f8e5 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp @@ -804,7 +804,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI if (FlameStrike_Timer < diff) { - if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0, 70, true)) + if (Unit* pUnit = SelectTarget(SELECT_TARGET_RANDOM, 0, 70, true)) DoCast(pUnit, SPELL_FLAME_STRIKE); FlameStrike_Timer = 30000; @@ -816,7 +816,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI for (uint32 i = 0; i < 3; i++) { - Unit* target =SelectUnit(SELECT_TARGET_RANDOM, 1, 70, true); + Unit* target =SelectTarget(SELECT_TARGET_RANDOM, 1, 70, true); if(!target) target = m_creature->getVictim(); debug_log("TSCR: Kael'Thas mind control not supported."); if(target) @@ -1080,7 +1080,7 @@ struct TRINITY_DLL_DECL boss_thaladred_the_darkenerAI : public advisorbase_ai //Gaze_Timer if(Gaze_Timer < diff) { - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true)) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) { DoResetThreat(); if(target) diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp index 66e595ab729..55ef8c60bbd 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp @@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL instance_the_eye : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; std::ostringstream stream; diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp index c3d4d0f35eb..d2fff0e569f 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp @@ -465,7 +465,7 @@ struct TRINITY_DLL_DECL boss_veknilashAI : public boss_twinemperorsAI if (UpperCut_Timer < diff) { - Unit* randomMelee = SelectUnit(SELECT_TARGET_RANDOM, 0, NOMINAL_MELEE_RANGE, true); + Unit* randomMelee = SelectTarget(SELECT_TARGET_RANDOM, 0, NOMINAL_MELEE_RANGE, true); if (randomMelee) DoCast(randomMelee,SPELL_UPPERCUT); UpperCut_Timer = 15000+rand()%15000; @@ -560,7 +560,7 @@ struct TRINITY_DLL_DECL boss_veklorAI : public boss_twinemperorsAI if (Blizzard_Timer < diff) { Unit* target = NULL; - target = SelectUnit(SELECT_TARGET_RANDOM, 0, 45, true); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45, true); if (target) DoCast(target,SPELL_BLIZZARD); Blizzard_Timer = 15000+rand()%15000; @@ -569,7 +569,7 @@ struct TRINITY_DLL_DECL boss_veklorAI : public boss_twinemperorsAI if (ArcaneBurst_Timer < diff) { Unit *mvic; - if ((mvic=SelectUnit(SELECT_TARGET_NEAREST, 0, NOMINAL_MELEE_RANGE, true))!=NULL) + if ((mvic=SelectTarget(SELECT_TARGET_NEAREST, 0, NOMINAL_MELEE_RANGE, true))!=NULL) { DoCast(mvic,SPELL_ARCANEBURST); ArcaneBurst_Timer = 5000; diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp index d6f5828d295..d483006642d 100644 --- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp @@ -231,7 +231,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance return 0; } - const char* Save() + std::string GetSaveData() { OUT_SAVE_INST_DATA; diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp index 3c2b898653d..923328627e4 100644 --- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp @@ -155,6 +155,6 @@ void AddSC_utgarde_keep() newscript = new Script; newscript->Name="npc_dragonflayer_forge_master"; - newscript->GetAI = GetAI_npc_dragonflayer_forge_master; + newscript->GetAI = &GetAI_npc_dragonflayer_forge_master; newscript->RegisterSelf(); -}
\ No newline at end of file +} diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp index f31f944a3d4..85ba26ef20d 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp @@ -297,7 +297,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI } if (ElectricalStorm_Timer < diff) { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 50, true); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50, true); if(!target) { EnterEvadeMode(); diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp index 7fb8dc9b321..26229261905 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp @@ -383,7 +383,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI if(SiphonSoul_Timer < diff) { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 70, true); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 70, true); Unit *trigger = DoSpawnCreature(MOB_TEMP_TRIGGER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 30000); if(!target || !trigger) { diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp index 9fc50e621ac..68b92590025 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp @@ -406,7 +406,7 @@ struct TRINITY_DLL_DECL boss_nalorakkAI : public ScriptedAI { DoYell(YELL_SURGE, LANG_UNIVERSAL, NULL); DoPlaySoundToSet(m_creature, SOUND_YELL_SURGE); - Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_SURGE), true); + Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_SURGE), true); if(target) DoCast(target, SPELL_SURGE); Surge_Timer = 15000 + rand()%5000; diff --git a/src/bindings/scripts/scripts/zone/zulaman/instance_zulaman.cpp b/src/bindings/scripts/scripts/zone/zulaman/instance_zulaman.cpp index 4ebf541515b..8ff01927908 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/instance_zulaman.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/instance_zulaman.cpp @@ -179,7 +179,7 @@ struct TRINITY_DLL_DECL instance_zulaman : public ScriptedInstance instance->SendToPlayers(&data); } - const char* Save() + std::string GetSaveData() { std::ostringstream ss; ss << "S " << BossKilled << " " << ChestLooted << " " << QuestMinute; diff --git a/src/framework/Platform/Define.h b/src/framework/Platform/Define.h index 59c2418c745..35be370d65b 100644 --- a/src/framework/Platform/Define.h +++ b/src/framework/Platform/Define.h @@ -129,5 +129,11 @@ typedef uint32 DWORD; typedef uint64 OBJECT_HANDLE; +#define MaNGOS Trinity +#define MANGOS_DLL_DECL TRINITY_DLL_DECL +#define MANGOS_DLL_SPEC TRINITY_DLL_SPEC +#define MANGOS_DEBUG TRINITY_DEBUG +#define GetMangosString GetTrinityString + #endif //TRINITY_DEFINE_H diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 321922f821e..84ae9cb659e 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -407,7 +407,14 @@ void AchievementMgr::LoadFromDB(QueryResult *achievementResult, QueryResult *cri do { Field *fields = achievementResult->Fetch(); - CompletedAchievementData& ca = m_completedAchievements[fields[0].GetUInt32()]; + + uint32 achievement_id = fields[0].GetUInt32(); + + // don't must happen: cleanup at server startup in achievementmgr.LoadCompletedAchievements() + if(!sAchievementStore.LookupEntry(achievement_id)) + continue; + + CompletedAchievementData& ca = m_completedAchievements[achievement_id]; ca.date = time_t(fields[1].GetUInt64()); ca.changed = false; } while(achievementResult->NextRow()); @@ -425,7 +432,15 @@ void AchievementMgr::LoadFromDB(QueryResult *achievementResult, QueryResult *cri time_t date = time_t(fields[2].GetUInt64()); AchievementCriteriaEntry const* criteria = sAchievementCriteriaStore.LookupEntry(id); - if (!criteria || (criteria->timeLimit && time_t(date + criteria->timeLimit) < time(NULL))) + if (!criteria) + { + // we will remove not existed criteria for all characters + sLog.outError("Not existed achievement creataria %u data removed from table `character_achievement_progress`.",id); + CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE criteria = %u",id); + continue; + } + + if (criteria->timeLimit && time_t(date + criteria->timeLimit) < time(NULL)) continue; CriteriaProgress& progress = m_criteriaProgress[id]; @@ -1763,7 +1778,17 @@ void AchievementGlobalMgr::LoadCompletedAchievements() { bar.step(); Field *fields = result->Fetch(); - m_allCompletedAchievements.insert(fields[0].GetUInt32()); + + uint32 achievement_id = fields[0].GetUInt32(); + if(!sAchievementStore.LookupEntry(achievement_id)) + { + // we will remove not existed achievement for all characters + sLog.outError("Not existed achievement %u data removed from table `character_achievement`.",achievement_id); + CharacterDatabase.PExecute("DELETE FROM character_achievement WHERE achievement = %u",achievement_id); + continue; + } + + m_allCompletedAchievements.insert(achievement_id); } while(result->NextRow()); delete result; diff --git a/src/game/AggressorAI.cpp b/src/game/AggressorAI.cpp index a637e7e40f0..22ebe87cdc6 100644 --- a/src/game/AggressorAI.cpp +++ b/src/game/AggressorAI.cpp @@ -19,16 +19,9 @@ */ #include "AggressorAI.h" -#include "Errors.h" -#include "Creature.h" -#include "ObjectAccessor.h" -#include "VMapFactory.h" -#include "World.h" +#include "SpellMgr.h" -#include <list> - -int -AggressorAI::Permissible(const Creature *creature) +int AggressorAI::Permissible(const Creature *creature) { // have some hostile factions, it will be selected by IsHostileTo check at MoveInLineOfSight if( !creature->isCivilian() && !creature->IsNeutralToAll() ) @@ -37,79 +30,83 @@ AggressorAI::Permissible(const Creature *creature) return PERMIT_BASE_NO; } -AggressorAI::AggressorAI(Creature *c) : CreatureAI(c), i_victimGuid(0), i_state(STATE_NORMAL), i_tracker(TIME_INTERVAL_LOOK) +void AggressorAI::UpdateAI(const uint32 /*diff*/) { + if(!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); } -void AggressorAI::EnterEvadeMode() +int SpellAI::Permissible(const Creature *creature) { - if( !m_creature->isAlive() ) - { - DEBUG_LOG("Creature stopped attacking cuz his dead [guid=%u]", m_creature->GetGUIDLow()); - i_victimGuid = 0; - m_creature->CombatStop(true); - m_creature->DeleteThreatList(); - return; - } + return PERMIT_BASE_NO; +} - Unit* victim = ObjectAccessor::GetUnit(*m_creature, i_victimGuid ); +void SpellAI::InitializeAI() +{ + for(uint32 i = 0; i < CREATURE_MAX_SPELLS; ++i) + if(me->m_spells[i] && GetSpellStore()->LookupEntry(me->m_spells[i])) + spells.push_back(me->m_spells[i]); +} - if( !victim ) - { - DEBUG_LOG("Creature stopped attacking because victim is non exist [guid=%u]", m_creature->GetGUIDLow()); - } - else if( !victim->isAlive() ) - { - DEBUG_LOG("Creature stopped attacking cuz his victim is dead [guid=%u]", m_creature->GetGUIDLow()); - } - else if( victim->HasStealthAura() ) - { - DEBUG_LOG("Creature stopped attacking cuz his victim is stealth [guid=%u]", m_creature->GetGUIDLow()); - } - else if( victim->isInFlight() ) - { - DEBUG_LOG("Creature stopped attacking cuz his victim is fly away [guid=%u]", m_creature->GetGUIDLow()); - } - else - { - DEBUG_LOG("Creature stopped attacking due to target out run him [guid=%u]", m_creature->GetGUIDLow()); - //i_state = STATE_LOOK_AT_VICTIM; - //i_tracker.Reset(TIME_INTERVAL_LOOK); - } +void SpellAI::Reset() +{ + events.Reset(); +} - if(!m_creature->GetCharmerOrOwner()) - { - m_creature->RemoveAllAuras(); +void SpellAI::JustDied(Unit *killer) +{ + for(SpellVct::iterator i = spells.begin(); i != spells.end(); ++i) + if(AISpellInfo[*i].condition == AICOND_DIE) + me->CastSpell(killer, *i, true); +} - // Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead - if( m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == TARGETED_MOTION_TYPE ) - m_creature->GetMotionMaster()->MoveTargetedHome(); +void SpellAI::EnterCombat(Unit *who) +{ + for(SpellVct::iterator i = spells.begin(); i != spells.end(); ++i) + { + if(AISpellInfo[*i].condition == AICOND_AGGRO) + me->CastSpell(who, *i, true); + else if(AISpellInfo[*i].condition == AICOND_COMBAT) + events.ScheduleEvent(*i, AISpellInfo[*i].cooldown + rand()%AISpellInfo[*i].cooldown); } - else if (m_creature->GetOwner() && m_creature->GetOwner()->isAlive()) - m_creature->GetMotionMaster()->MoveFollow(m_creature->GetOwner(),PET_FOLLOW_DIST,PET_FOLLOW_ANGLE); - - m_creature->DeleteThreatList(); - i_victimGuid = 0; - m_creature->CombatStop(true); - m_creature->SetLootRecipient(NULL); } -void -AggressorAI::UpdateAI(const uint32 /*diff*/) +void SpellAI::UpdateAI(const uint32 diff) { - // update i_victimGuid if m_creature->getVictim() !=0 and changed if(!UpdateVictim()) return; - i_victimGuid = m_creature->getVictim()->GetGUID(); + events.Update(diff); - if( m_creature->isAttackReady() ) + if(me->hasUnitState(UNIT_STAT_CASTING)) + return; + + if(uint32 spellId = events.ExecuteEvent()) { - if( m_creature->IsWithinMeleeRange(m_creature->getVictim())) + Unit *target = NULL; + //sLog.outError("aggre %u %u", spellId, (uint32)AISpellInfo[spellId].target); + switch(AISpellInfo[spellId].target) { - m_creature->AttackerStateUpdate(m_creature->getVictim()); - m_creature->resetAttackTimer(); + default: + case AITARGET_SELF: target = me; break; + case AITARGET_VICTIM: target = me->getVictim(); break; + case AITARGET_ENEMY: target = SelectTarget(SELECT_TARGET_RANDOM); break; + case AITARGET_ALLY: target = me; break; + case AITARGET_BUFF: target = me; break; + case AITARGET_DEBUFF: + { + const SpellEntry * spellInfo = GetSpellStore()->LookupEntry(spellId); + bool playerOnly = spellInfo->AttributesEx3 & SPELL_ATTR_EX3_PLAYERS_ONLY; + float range = GetSpellMaxRange(spellInfo, false); + target = SelectTarget(SELECT_TARGET_RANDOM, 0, range, playerOnly, -(int32)spellId); + break; + } } + if(target) me->CastSpell(target, spellId, false); + events.ScheduleEvent(spellId, AISpellInfo[spellId].cooldown + rand()%AISpellInfo[spellId].cooldown); } + else + DoMeleeAttackIfReady(); } - diff --git a/src/game/AggressorAI.h b/src/game/AggressorAI.h index 983498716e6..2c43ccf82b7 100644 --- a/src/game/AggressorAI.h +++ b/src/game/AggressorAI.h @@ -22,31 +22,35 @@ #define TRINITY_AGGRESSORAI_H #include "CreatureAI.h" -#include "Timer.h" +#include "CreatureAIImpl.h" class Creature; class TRINITY_DLL_DECL AggressorAI : public CreatureAI { - enum AggressorState - { - STATE_NORMAL = 1, - STATE_LOOK_AT_VICTIM = 2 - }; - public: - - explicit AggressorAI(Creature *c); - - void EnterEvadeMode(); + explicit AggressorAI(Creature *c) : CreatureAI(c) {} void UpdateAI(const uint32); static int Permissible(const Creature *); +}; + +typedef std::vector<uint32> SpellVct; +class TRINITY_DLL_SPEC SpellAI : public CreatureAI +{ + public: + explicit SpellAI(Creature *c) : CreatureAI(c) {} + + void InitializeAI(); + void Reset(); + void EnterCombat(Unit* who); + void JustDied(Unit *killer); + void UpdateAI(const uint32 diff); + static int Permissible(const Creature *); private: - uint64 i_victimGuid; - AggressorState i_state; - TimeTracker i_tracker; + EventMap events; + SpellVct spells; }; -#endif +#endif diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index d179ec33691..b76e0c7835c 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -726,12 +726,10 @@ void BattleGround::EndBattleGround(uint32 winner) if (team == winner) { RewardMark(plr,ITEM_WINNER_COUNT); - RewardQuest(plr); + RewardQuestComplete(plr); } - else if(winner !=0) - { + else if(winner) RewardMark(plr,ITEM_LOSER_COUNT); - } plr->CombatStopWithPets(true); @@ -785,13 +783,6 @@ uint32 BattleGround::GetBattlemasterEntry() const void BattleGround::RewardMark(Player *plr,uint32 count) { - // 'Inactive' this aura prevents the player from gaining honor points and battleground tokens - if (plr->GetDummyAura(SPELL_AURA_PLAYER_INACTIVE)) - return; - - if(!plr || !count) - return; - BattleGroundMarks mark; switch(GetTypeID()) { @@ -811,21 +802,53 @@ void BattleGround::RewardMark(Player *plr,uint32 count) return; } - if ( objmgr.GetItemPrototype( mark ) ) + //if (IsSpell) + // RewardSpellCast(plr,mark); + //else + RewardItem(plr,mark,count); +} + +void BattleGround::RewardSpellCast(Player *plr, uint32 spell_id) +{ + // 'Inactive' this aura prevents the player from gaining honor points and battleground tokens + if (plr->GetDummyAura(SPELL_AURA_PLAYER_INACTIVE)) + return; + + SpellEntry const *spellInfo = sSpellStore.LookupEntry(spell_id); + if(!spellInfo) { - ItemPosCountVec dest; - uint32 no_space_count = 0; - uint8 msg = plr->CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, mark, count, &no_space_count ); - if( msg != EQUIP_ERR_OK ) // convert to possible store amount - count -= no_space_count; + sLog.outError("Battleground reward casting spell %u not exist.",spell_id); + return; + } - if(!dest.empty()) // can add some - if(Item* item = plr->StoreNewItem( dest, mark, true, 0)) - plr->SendNewItem(item,count,false,true); + plr->CastSpell(plr, spellInfo, true); +} + +void BattleGround::RewardItem(Player *plr, uint32 item_id, uint32 count) +{ + // 'Inactive' this aura prevents the player from gaining honor points and battleground tokens + if (plr->GetDummyAura(SPELL_AURA_PLAYER_INACTIVE)) + return; - if (no_space_count > 0) - SendRewardMarkByMail(plr,mark,no_space_count); + ItemPosCountVec dest; + uint32 no_space_count = 0; + uint8 msg = plr->CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, item_id, count, &no_space_count ); + + if( msg == EQUIP_ERR_ITEM_NOT_FOUND) + { + sLog.outErrorDb("Battleground reward item (Entry %u) not exist in `item_template`.",item_id); + return; } + + if( msg != EQUIP_ERR_OK ) // convert to possible store amount + count -= no_space_count; + + if( count != 0 && !dest.empty()) // can add some + if (Item* item = plr->StoreNewItem( dest, item_id, true, 0)) + plr->SendNewItem(item,count,false,true); + + if (no_space_count > 0) + SendRewardMarkByMail(plr,item_id,no_space_count); } void BattleGround::SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count) @@ -865,12 +888,8 @@ void BattleGround::SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count) } } -void BattleGround::RewardQuest(Player *plr) +void BattleGround::RewardQuestComplete(Player *plr) { - // 'Inactive' this aura prevents the player from gaining honor points and battleground tokens - if (plr->GetDummyAura(SPELL_AURA_PLAYER_INACTIVE)) - return; - uint32 quest; switch(GetTypeID()) { @@ -890,7 +909,7 @@ void BattleGround::RewardQuest(Player *plr) return; } - plr->CastSpell(plr, quest, true); + RewardSpellCast(plr, quest); } void BattleGround::BlockMovement(Player *plr) @@ -1739,7 +1758,7 @@ uint32 BattleGround::GetAlivePlayersCountByTeam(uint32 Team) const if (itr->second.Team == Team) { Player * pl = objmgr.GetPlayer(itr->first); - if (pl && pl->isAlive()) + if (pl && pl->isAlive() && !pl->HasByteFlag(UNIT_FIELD_BYTES_2, 3, FORM_SPIRITOFREDEMPTION)) ++count; } } diff --git a/src/game/BattleGround.h b/src/game/BattleGround.h index 9788f264502..509ba6eb972 100644 --- a/src/game/BattleGround.h +++ b/src/game/BattleGround.h @@ -421,7 +421,9 @@ class BattleGround void RewardReputationToTeam(uint32 faction_id, uint32 Reputation, uint32 TeamID); void RewardMark(Player *plr,uint32 count); void SendRewardMarkByMail(Player *plr,uint32 mark, uint32 count); - void RewardQuest(Player *plr); + void RewardItem(Player *plr, uint32 item_id, uint32 count); + void RewardQuestComplete(Player *plr); + void RewardSpellCast(Player *plr, uint32 spell_id); void UpdateWorldState(uint32 Field, uint32 Value); void UpdateWorldStateForPlayer(uint32 Field, uint32 Value, Player *Source); void EndBattleGround(uint32 winner); diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt index 081d9669696..89a9e460968 100644 --- a/src/game/CMakeLists.txt +++ b/src/game/CMakeLists.txt @@ -68,6 +68,7 @@ SET(game_STAT_SRCS Corpse.h CreatureAI.cpp CreatureAI.h + CreatureAIFactory.h CreatureAIImpl.h CreatureAIRegistry.cpp CreatureAIRegistry.h @@ -208,8 +209,6 @@ SET(game_STAT_SRCS PointMovementGenerator.h PoolHandler.cpp PoolHandler.h - PossessedAI.cpp - PossessedAI.h QueryHandler.cpp QuestDef.cpp QuestDef.h @@ -262,6 +261,8 @@ SET(game_STAT_SRCS Traveller.h Unit.cpp Unit.h + UnitAI.cpp + UnitAI.h UnitEvents.h UpdateData.cpp UpdateData.h diff --git a/src/game/CharacterHandler.cpp b/src/game/CharacterHandler.cpp index ca6a96c3b08..29a54da5d06 100644 --- a/src/game/CharacterHandler.cpp +++ b/src/game/CharacterHandler.cpp @@ -173,7 +173,7 @@ void WorldSession::HandleCharEnumOpcode( WorldPacket & /*recv_data*/ ) // 0 1 2 3 4 5 6 7 8 "SELECT characters.guid, characters.data, characters.name, characters.position_x, characters.position_y, characters.position_z, characters.map, characters.totaltime, characters.leveltime, " // 9 10 11 12 13 14 - "characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, guild_member.guildid, genitive " + "characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, guild_member.guildid, character_declinedname.genitive " "FROM characters LEFT JOIN character_pet ON characters.guid = character_pet.owner AND character_pet.slot='%u' " "LEFT JOIN character_declinedname ON characters.guid = character_declinedname.guid " "LEFT JOIN guild_member ON characters.guid = guild_member.guid " @@ -571,7 +571,6 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder) uint64 playerGuid = holder->GetGuid(); Player* pCurrChar = new Player(this); - pCurrChar->GetMotionMaster()->Initialize(); // for send server info and strings (config) ChatHandler chH = ChatHandler(pCurrChar); @@ -585,6 +584,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder) return; } + pCurrChar->GetMotionMaster()->Initialize(); + SetPlayer(pCurrChar); pCurrChar->SendDungeonDifficulty(false); @@ -769,7 +770,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder) { sLog.outDebug( "WORLD: Restart character %u taxi flight", pCurrChar->GetGUIDLow() ); - uint32 MountId = objmgr.GetTaxiMount(sourceNode, pCurrChar->GetTeam()); + uint32 MountId = objmgr.GetTaxiMount(sourceNode, pCurrChar->GetTeam(),true); uint32 path = pCurrChar->m_taxi.GetCurrentTaxiPath(); // search appropriate start path node diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 1bc6eb304e4..bf8ee9d3a77 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -49,6 +49,7 @@ // |color|Hskill:skill_id|h[name]|h|r // |color|Hspell:spell_id|h[name]|h|r - client, spellbook spell icon shift-click // |color|Htalent:talent_id,rank|h[name]|h|r - client, talent icon shift-click +// |color|Htaxinode:id|h[name]|h|r // |color|Htele:id|h[name]|h|r // |color|Htrade:spell_id,cur_value,max_value,unk3int,unk3str|h[name]|h|r - client, spellbook profession icon shift-click @@ -194,6 +195,7 @@ ChatCommand * ChatHandler::getCommandTable() { "graveyard", SEC_MODERATOR, false, &ChatHandler::HandleGoGraveyardCommand, "", NULL }, { "grid", SEC_MODERATOR, false, &ChatHandler::HandleGoGridCommand, "", NULL }, { "object", SEC_MODERATOR, false, &ChatHandler::HandleGoObjectCommand, "", NULL }, + { "taxinode", SEC_MODERATOR, false, &ChatHandler::HandleGoTaxinodeCommand, "", NULL }, { "trigger", SEC_MODERATOR, false, &ChatHandler::HandleGoTriggerCommand, "", NULL }, { "zonexy", SEC_MODERATOR, false, &ChatHandler::HandleGoZoneXYCommand, "", NULL }, { "xy", SEC_MODERATOR, false, &ChatHandler::HandleGoXYCommand, "", NULL }, @@ -301,6 +303,7 @@ ChatCommand * ChatHandler::getCommandTable() { "player", SEC_GAMEMASTER, true, NULL, "", lookupPlayerCommandTable }, { "skill", SEC_ADMINISTRATOR, true, &ChatHandler::HandleLookupSkillCommand, "", NULL }, { "spell", SEC_ADMINISTRATOR, true, &ChatHandler::HandleLookupSpellCommand, "", NULL }, + { "taxinode", SEC_ADMINISTRATOR, true, &ChatHandler::HandleLookupTaxiNodeCommand, "", NULL }, { "tele", SEC_MODERATOR, true, &ChatHandler::HandleLookupTeleCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; diff --git a/src/game/Chat.h b/src/game/Chat.h index cc7de6731a6..97570d2f250 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -195,6 +195,7 @@ class ChatHandler bool HandleGoGraveyardCommand(const char* args); bool HandleGoGridCommand(const char* args); bool HandleGoObjectCommand(const char* args); + bool HandleGoTaxinodeCommand(const char* args); bool HandleGoTriggerCommand(const char* args); bool HandleGoXYCommand(const char* args); bool HandleGoXYZCommand(const char* args); @@ -247,6 +248,7 @@ class ChatHandler bool HandleLookupQuestCommand(const char* args); bool HandleLookupSkillCommand(const char* args); bool HandleLookupSpellCommand(const char* args); + bool HandleLookupTaxiNodeCommand(const char * args); bool HandleLookupTeleCommand(const char * args); bool HandleModifyKnownTitlesCommand(const char* args); diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 01f43ac8163..8d7b877d4f5 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -164,8 +164,8 @@ Creature::~Creature() i_AI = NULL; } - if(m_uint32Values) - sLog.outDetail("Deconstruct Creature Entry = %u", GetEntry()); + //if(m_uint32Values) + // sLog.outDetail("Deconstruct Creature Entry = %u", GetEntry()); } void Creature::AddToWorld() @@ -175,7 +175,7 @@ void Creature::AddToWorld() { ObjectAccessor::Instance().AddObject(this); Unit::AddToWorld(); - SearchFormation(); + SearchFormationAndPath(); AIM_Initialize(); } } @@ -194,7 +194,7 @@ void Creature::RemoveFromWorld() } } -void Creature::SearchFormation() +void Creature::SearchFormationAndPath() { if(isSummon()) return; @@ -203,9 +203,28 @@ void Creature::SearchFormation() if(!lowguid) return; + bool usePath = (GetDefaultMovementType() == WAYPOINT_MOTION_TYPE); CreatureGroupInfoType::iterator frmdata = CreatureGroupMap.find(lowguid); if(frmdata != CreatureGroupMap.end()) + { + if(usePath && lowguid != frmdata->second->leaderGUID) + { + SetDefaultMovementType(IDLE_MOTION_TYPE); + usePath = false; + } formation_mgr.AddCreatureToGroup(frmdata->second->leaderGUID, this); + } + + if(usePath) + { + if(WaypointMgr.GetPath(lowguid * 10)) + SetWaypointPathId(lowguid * 10); + else + { + sLog.outErrorDb("Creature DBGUID %u has waypoint motion type, but it does not have a waypoint path!", lowguid); + SetDefaultMovementType(IDLE_MOTION_TYPE); + } + } } void Creature::RemoveCorpse() @@ -436,6 +455,9 @@ void Creature::Update(uint32 diff) } else { + // for delayed spells + m_Events.Update( diff ); + m_deathTimer -= diff; if (m_groupLootTimer && lootingGroupLeaderGUID) { @@ -2036,12 +2058,12 @@ bool Creature::IsOutOfThreatArea(Unit* pVictim) const if(sMapStore.LookupEntry(GetMapId())->IsDungeon()) return false; - float length = pVictim->GetDistance(mHome_X, mHome_Y, mHome_Z); float AttackDist = GetAttackDistance(pVictim); uint32 ThreatRadius = sWorld.getConfig(CONFIG_THREAT_RADIUS); //Use AttackDistance in distance check if threat radius is lower. This prevents creature bounce in and out of combat every update tick. - return ( length > (ThreatRadius > AttackDist ? ThreatRadius : AttackDist)); + return !pVictim->IsWithinDist3d(mHome_X,mHome_Y,mHome_Z, + ThreatRadius > AttackDist ? ThreatRadius : AttackDist); } CreatureDataAddon const* Creature::GetCreatureAddon() const @@ -2081,10 +2103,6 @@ bool Creature::LoadCreaturesAddon(bool reload) if (cainfo->move_flags != 0) SetUnitMovementFlags(cainfo->move_flags); - //Load Path - if (cainfo->path_id != 0) - m_path_id = cainfo->path_id; - if(cainfo->auras) { for (CreatureDataAddonAura const* cAura = cainfo->auras; cAura->spell_id; ++cAura) @@ -2105,7 +2123,7 @@ bool Creature::LoadCreaturesAddon(bool reload) continue; } - AddAuraEffect(AdditionalSpellInfo->Id, cAura->effect_idx, this); + AddAuraEffect(AdditionalSpellInfo, cAura->effect_idx, this); sLog.outDebug("Spell: %u with Aura %u added to creature (GUIDLow: %u Entry: %u )", cAura->spell_id, AdditionalSpellInfo->EffectApplyAuraName[cAura->effect_idx],GetGUIDLow(),GetEntry()); } } diff --git a/src/game/Creature.h b/src/game/Creature.h index 36cfee78c5f..f57f0592da5 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -108,6 +108,21 @@ enum Gossip_Guard_Skill GOSSIP_GUARD_SKILL_ENGINERING = 91 }; +enum GossipOptionIcon +{ + GOSSIP_ICON_CHAT = 0, //white chat bubble + GOSSIP_ICON_VENDOR = 1, //brown bag + GOSSIP_ICON_TAXI = 2, //flight + GOSSIP_ICON_TRAINER = 3, //book + GOSSIP_ICON_INTERACT_1 = 4, //interaction wheel + GOSSIP_ICON_INTERACT_2 = 5, //interaction wheel + GOSSIP_ICON_MONEY_BAG = 6, //brown bag with yellow dot + GOSSIP_ICON_TALK = 7, //white chat bubble with black dots + GOSSIP_ICON_TABARD = 8, //tabard + GOSSIP_ICON_BATTLE = 9, //two swords + GOSSIP_ICON_DOT = 10 //yellow dot +}; + struct GossipOption { uint32 Id; @@ -300,7 +315,6 @@ struct CreatureDataAddonAura struct CreatureDataAddon { uint32 guidOrEntry; - uint32 path_id; uint32 mount; uint32 bytes0; uint32 bytes1; @@ -635,6 +649,7 @@ class TRINITY_DLL_SPEC Creature : public Unit bool IsVisibleInGridForPlayer(Player const* pl) const; void RemoveCorpse(); + bool isDeadByDefault() const { return m_isDeadByDefault; }; time_t const& GetRespawnTime() const { return m_respawnTime; } time_t GetRespawnTimeEx() const; @@ -676,13 +691,13 @@ class TRINITY_DLL_SPEC Creature : public Unit uint32 GetGlobalCooldown() const { return m_GlobalCooldown; } - uint32 GetWaypointPath(){return m_path_id;} - void LoadPath(uint32 pathid) { m_path_id = pathid; } + uint32 GetWaypointPathId() const { return m_pathId; } + void SetWaypointPathId(uint32 pathid) { m_pathId = pathid; } uint32 GetCurrentWaypointID(){return m_waypointID;} void UpdateWaypointID(uint32 wpID){m_waypointID = wpID;} - void SearchFormation(); + void SearchFormationAndPath(); CreatureGroup *GetFormation() {return m_formation;} void SetFormation(CreatureGroup *formation) {m_formation = formation;} @@ -743,7 +758,7 @@ class TRINITY_DLL_SPEC Creature : public Unit private: //WaypointMovementGenerator vars uint32 m_waypointID; - uint32 m_path_id; + uint32 m_pathId; //Formation var CreatureGroup *m_formation; diff --git a/src/game/CreatureAI.cpp b/src/game/CreatureAI.cpp index 5fd35150b52..0864bc973ab 100644 --- a/src/game/CreatureAI.cpp +++ b/src/game/CreatureAI.cpp @@ -19,49 +19,10 @@ */ #include "CreatureAI.h" +#include "CreatureAIImpl.h" #include "Creature.h" -#include "Player.h" -#include "Pet.h" -#include "SpellAuras.h" #include "World.h" - -void UnitAI::AttackStart(Unit *victim) -{ - if(!victim) - return; - - if(me->Attack(victim, true)) - { - //DEBUG_LOG("Creature %s tagged a victim to kill [guid=%u]", me->GetName(), victim->GetGUIDLow()); - me->GetMotionMaster()->MoveChase(victim); - } -} - -void UnitAI::DoMeleeAttackIfReady() -{ - //Make sure our attack is ready and we aren't currently casting before checking distance - if (me->isAttackReady() && !me->hasUnitState(UNIT_STAT_CASTING)) - { - //If we are within range melee the target - if (me->IsWithinMeleeRange(me->getVictim())) - { - me->AttackerStateUpdate(me->getVictim()); - me->resetAttackTimer(); - } - } - if (me->haveOffhandWeapon() && me->isAttackReady(OFF_ATTACK) && !me->hasUnitState(UNIT_STAT_CASTING)) - { - //If we are within range melee the target - if (me->IsWithinMeleeRange(me->getVictim())) - { - me->AttackerStateUpdate(me->getVictim(), OFF_ATTACK); - me->resetAttackTimer(OFF_ATTACK); - } - } -} - -//Enable PlayerAI when charmed -void PlayerAI::OnCharmed(bool apply) { me->IsAIEnabled = apply; } +#include "SpellMgr.h" //Disable CreatureAI when charmed void CreatureAI::OnCharmed(bool apply) @@ -71,11 +32,16 @@ void CreatureAI::OnCharmed(bool apply) me->IsAIEnabled = false; } +AISpellInfoType * CreatureAI::AISpellInfo; + void CreatureAI::DoZoneInCombat(Creature* creature) { if (!creature) creature = me; + if(!creature->CanHaveThreatList()) + return; + Map *map = creature->GetMap(); if (!map->IsDungeon()) //use IsDungeon instead of Instanceable, in case battlegrounds will be instantiated { @@ -83,37 +49,38 @@ void CreatureAI::DoZoneInCombat(Creature* creature) return; } - if(!creature->getVictim()) + if(!creature->HasReactState(REACT_PASSIVE) && !creature->getVictim()) { if(Unit *target = creature->SelectNearestTarget()) - AttackStart(target); + creature->AI()->AttackStart(target); else if(creature->isSummon()) { if(Unit *summoner = ((TempSummon*)creature)->GetSummoner()) { - if(summoner->getVictim() - && (creature->IsFriendlyTo(summoner) || creature->IsHostileTo(summoner->getVictim()))) - AttackStart(summoner->getVictim()); + Unit *target = summoner->getAttackerForHelper(); + if(!target && summoner->CanHaveThreatList() && !summoner->getThreatManager().isThreatListEmpty()) + target = summoner->getThreatManager().getHostilTarget(); + if(target && (creature->IsFriendlyTo(summoner) || creature->IsHostileTo(target))) + creature->AI()->AttackStart(target); } } } - if (!creature->CanHaveThreatList() || !creature->getVictim()) + if(!creature->HasReactState(REACT_PASSIVE) && !creature->getVictim()) { - sLog.outError("DoZoneInCombat called for creature that either cannot have threat list or has empty threat list (creature entry = %d)", creature->GetTypeId() == TYPEID_UNIT ? ((Creature*)creature)->GetEntry() : 0); + sLog.outError("DoZoneInCombat called for creature that has empty threat list (creature entry = %u)", creature->GetEntry()); return; } Map::PlayerList const &PlayerList = map->GetPlayers(); for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { - if (Player* i_pl = i->getSource()) - if (i_pl->isAlive()) - { - creature->SetInCombatWith(i_pl); - i_pl->SetInCombatWith(creature); - creature->AddThreat(i_pl, 0.0f); - } + if (i->getSource()->isAlive()) + { + creature->SetInCombatWith(i->getSource()); + i->getSource()->SetInCombatWith(creature); + creature->AddThreat(i->getSource(), 0.0f); + } } } @@ -139,40 +106,222 @@ bool CreatureAI::UpdateVictim() return me->getVictim(); } -void CreatureAI::EnterEvadeMode() +bool CreatureAI::_EnterEvadeMode() { + if(me->IsInEvadeMode() || !me->isAlive()) + return false; + me->RemoveAllAuras(); me->DeleteThreatList(); - me->CombatStop(); + me->CombatStop(true); me->LoadCreaturesAddon(); me->SetLootRecipient(NULL); - if(me->isAlive()) + return true; +} + +void CreatureAI::EnterEvadeMode() +{ + if(!_EnterEvadeMode()) + return; + + if(Unit *owner = me->GetCharmerOrOwner()) + me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE, MOTION_SLOT_IDLE); + else me->GetMotionMaster()->MoveTargetedHome(); + + Reset(); +} + +inline bool SelectTargetHelper(const Unit * me, const Unit * target, const bool &playerOnly, const float &dist, const int32 &aura) +{ + if(playerOnly && target->GetTypeId() != TYPEID_PLAYER) + return false; + + if(dist && !me->IsWithinCombatRange(target, dist)) + return false; + + if(aura) + { + if(aura > 0) + { + if(!target->HasAura(aura)) + return false; + } + else + { + if(target->HasAura(aura)) + return false; + } + } + + return true; +} + +struct TargetDistanceOrder : public std::binary_function<const Unit *, const Unit *, bool> +{ + const Unit * me; + TargetDistanceOrder(const Unit* Target) : me(Target) {}; + // functor for operator ">" + bool operator()(const Unit * _Left, const Unit * _Right) const + { + return (me->GetDistanceSq(_Left) < me->GetDistanceSq(_Right)); + } +}; + +Unit* CreatureAI::SelectTarget(SelectAggroTarget targetType, uint32 position, float dist, bool playerOnly, int32 aura) +{ + if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST) + { + std::list<HostilReference*> &m_threatlist = me->getThreatManager().getThreatList(); + if(position >= m_threatlist.size()) + return NULL; + + std::list<Unit*> targetList; + for(std::list<HostilReference*>::iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) + if(SelectTargetHelper(me, (*itr)->getTarget(), playerOnly, dist, aura)) + targetList.push_back((*itr)->getTarget()); + + if(position >= targetList.size()) + return NULL; + + targetList.sort(TargetDistanceOrder(m_creature)); + + if(targetType == SELECT_TARGET_NEAREST) + { + std::list<Unit*>::iterator i = targetList.begin(); + advance(i, position); + return *i; + } + else + { + std::list<Unit*>::reverse_iterator i = targetList.rbegin(); + advance(i, position); + return *i; + } + } + else + { + std::list<HostilReference*> m_threatlist = me->getThreatManager().getThreatList(); + std::list<HostilReference*>::iterator i; + while(position < m_threatlist.size()) + { + if(targetType == SELECT_TARGET_BOTTOMAGGRO) + { + i = m_threatlist.end(); + advance(i, - (int32)position - 1); + } + else + { + i = m_threatlist.begin(); + if(targetType == SELECT_TARGET_TOPAGGRO) + advance(i, position); + else // random + advance(i, position + rand()%(m_threatlist.size() - position)); + } + + if(SelectTargetHelper(me, (*i)->getTarget(), playerOnly, dist, aura)) + return (*i)->getTarget(); + else + m_threatlist.erase(i); + } + } + + return NULL; } -void SimpleCharmedAI::UpdateAI(const uint32 /*diff*/) +void CreatureAI::SelectTargetList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget targetType, float dist, bool playerOnly, int32 aura) { - Creature *charmer = (Creature*)me->GetCharmer(); + if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST) + { + std::list<HostilReference*> &m_threatlist = m_creature->getThreatManager().getThreatList(); + if(m_threatlist.empty()) + return; + + for(std::list<HostilReference*>::iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) + if(SelectTargetHelper(me, (*itr)->getTarget(), playerOnly, dist, aura)) + targetList.push_back((*itr)->getTarget()); - //kill self if charm aura has infinite duration - if(charmer->IsInEvadeMode()) + targetList.sort(TargetDistanceOrder(me)); + targetList.resize(num); + if(targetType == SELECT_TARGET_FARTHEST) + targetList.reverse(); + } + else { - Unit::AuraEffectList const& auras = me->GetAurasByType(SPELL_AURA_MOD_CHARM); - for(Unit::AuraEffectList::const_iterator iter = auras.begin(); iter != auras.end(); ++iter) - if((*iter)->GetCasterGUID() == charmer->GetGUID() && (*iter)->GetParentAura()->IsPermanent()) + std::list<HostilReference*> m_threatlist = me->getThreatManager().getThreatList(); + std::list<HostilReference*>::iterator i; + while(!m_threatlist.empty() && num) + { + if(targetType == SELECT_TARGET_BOTTOMAGGRO) { - charmer->Kill(me); - return; + i = m_threatlist.end(); + --i; } + else + { + i = m_threatlist.begin(); + if(targetType == SELECT_TARGET_RANDOM) + advance(i, rand()%m_threatlist.size()); + } + + if(SelectTargetHelper(me, (*i)->getTarget(), playerOnly, dist, aura)) + { + targetList.push_back((*i)->getTarget()); + --num; + } + m_threatlist.erase(i); + } } +} + +void CreatureAI::FillAISpellInfo() +{ + AISpellInfo = new AISpellInfoType[GetSpellStore()->GetNumRows()]; - if(!charmer->isInCombat()) - me->GetMotionMaster()->MoveFollow(charmer, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + AISpellInfoType *AIInfo = AISpellInfo; + const SpellEntry * spellInfo; - Unit *target = me->getVictim(); - if(!target || !charmer->canAttack(target)) - AttackStart(charmer->SelectNearestTarget()); + for(uint32 i = 0; i < GetSpellStore()->GetNumRows(); ++i, ++AIInfo) + { + spellInfo = GetSpellStore()->LookupEntry(i); + if(!spellInfo) + continue; + + if(spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD) + AIInfo->condition = AICOND_DIE; + else if(IsPassiveSpell(i) || GetSpellDuration(spellInfo) == -1) + AIInfo->condition = AICOND_AGGRO; + else + AIInfo->condition = AICOND_COMBAT; + + if(AIInfo->cooldown < spellInfo->RecoveryTime) + AIInfo->cooldown = spellInfo->RecoveryTime; + + for(uint32 j = 0; j < 3; ++j) + { + if(spellInfo->EffectImplicitTargetA[j] == TARGET_UNIT_TARGET_ENEMY + || spellInfo->EffectImplicitTargetA[j] == TARGET_DST_TARGET_ENEMY) + { + if(AIInfo->target < AITARGET_VICTIM) + AIInfo->target = AITARGET_VICTIM; + } + + if(spellInfo->Effect[j] == SPELL_EFFECT_APPLY_AURA) + { + if(spellInfo->EffectImplicitTargetA[j] == TARGET_UNIT_TARGET_ENEMY) + { + if(AIInfo->target < AITARGET_DEBUFF) + AIInfo->target = AITARGET_DEBUFF; + } + else if(IsPositiveSpell(i)) + { + if(AIInfo->target < AITARGET_BUFF) + AIInfo->target = AITARGET_BUFF; + } + } + } + } } /*void CreatureAI::AttackedBy( Unit* attacker ) diff --git a/src/game/CreatureAI.h b/src/game/CreatureAI.h index e3a5a674e68..c46dd2a54f2 100644 --- a/src/game/CreatureAI.h +++ b/src/game/CreatureAI.h @@ -21,23 +21,21 @@ #ifndef TRINITY_CREATUREAI_H #define TRINITY_CREATUREAI_H +#include "UnitAI.h" #include "Common.h" -#include "Platform/Define.h" -#include "Policies/Singleton.h" -#include "Dynamic/ObjectRegistry.h" -#include "Dynamic/FactoryHolder.h" class WorldObject; class Unit; class Creature; class Player; struct SpellEntry; +struct AISpellInfoType; #define TIME_INTERVAL_LOOK 5000 #define VISIBILITY_RANGE 10000 //Spell targets used by SelectSpell -enum SelectTarget +enum SelectTargetType { SELECT_TARGET_DONTCARE = 0, //All target types allowed @@ -77,120 +75,11 @@ enum SCEquip EQUIP_UNEQUIP = 0 }; -class EventMap : private std::map<uint32, uint32> -{ - private: - uint32 m_time, m_phase; - public: - explicit EventMap() : m_phase(0), m_time(0) {} - - void Reset() { clear(); m_time = 0; m_phase = 0; } - - void Update(uint32 time) { m_time += time; } - - void SetPhase(uint32 phase) - { - if(phase && phase < 9) - m_phase = (1 << (phase + 24)); - } - - void ScheduleEvent(uint32 eventId, uint32 time, uint32 gcd = 0, uint32 phase = 0) - { - time += m_time; - if(gcd && gcd < 9) - eventId |= (1 << (gcd + 16)); - if(phase && phase < 9) - eventId |= (1 << (phase + 24)); - iterator itr = find(time); - while(itr != end()) - { - ++time; - itr = find(time); - } - insert(std::make_pair(time, eventId)); - } - - uint32 ExecuteEvent() - { - while(!empty()) - { - if(begin()->first > m_time) - return 0; - else if(m_phase && (begin()->second & 0xFF000000) && !(begin()->second & m_phase)) - erase(begin()); - else - { - uint32 eventId = (begin()->second & 0x0000FFFF); - erase(begin()); - return eventId; - } - } - return 0; - } - - void DelayEvents(uint32 time, uint32 gcd) - { - time += m_time; - gcd = (1 << (gcd + 16)); - for(iterator itr = begin(); itr != end();) - { - if(itr->first >= time) - break; - if(itr->second & gcd) - { - ScheduleEvent(time, itr->second); - erase(itr++); - } - else - ++itr; - } - } -}; - -class TRINITY_DLL_SPEC UnitAI -{ - protected: - Unit* const me; - public: - explicit UnitAI(Unit *u) : me(u) {} - virtual void AttackStart(Unit *); - virtual void UpdateAI(const uint32 diff) = 0; - - virtual void InitializeAI() { Reset(); } - - virtual void Reset() {}; - - // Called when unit is charmed - virtual void OnCharmed(bool apply) = 0; - - // Pass parameters between AI - virtual void DoAction(const int32 param) {} - - //Do melee swing of current victim if in rnage and ready and not casting - void DoMeleeAttackIfReady(); -}; - -class TRINITY_DLL_SPEC PlayerAI : public UnitAI -{ - protected: - Player* const me; - public: - explicit PlayerAI(Player *p) : UnitAI((Unit*)p), me(p) {} - - void OnCharmed(bool apply); -}; - -class TRINITY_DLL_SPEC SimpleCharmedAI : public PlayerAI -{ - public: - void UpdateAI(const uint32 diff); -}; - class TRINITY_DLL_SPEC CreatureAI : public UnitAI { protected: - Creature* const me; - Creature* const m_creature; + Creature * const me; + Creature * const m_creature; bool UpdateVictim(); public: @@ -235,7 +124,7 @@ class TRINITY_DLL_SPEC CreatureAI : public UnitAI //virtual void AttackedBy(Unit* attacker); // Called when creature is spawned or respawned (for reseting variables) - virtual void JustRespawned() {} + virtual void JustRespawned() { Reset(); } // Called at waypoint reached or point movement finished virtual void MovementInform(uint32 /*MovementType*/, uint32 /*Data*/) {} @@ -273,22 +162,15 @@ class TRINITY_DLL_SPEC CreatureAI : public UnitAI // Pointer to controlled by AI creature //Creature* const m_creature; -}; - -struct SelectableAI : public FactoryHolder<CreatureAI>, public Permissible<Creature> -{ - - SelectableAI(const char *id) : FactoryHolder<CreatureAI>(id) {} -}; -template<class REAL_AI> -struct CreatureAIFactory : public SelectableAI -{ - CreatureAIFactory(const char *name) : SelectableAI(name) {} + Unit* SelectTarget(SelectAggroTarget target, uint32 position = 0, float dist = 0, bool playerOnly = false, int32 aura = 0); + void SelectTargetList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget target, float dist = 0, bool playerOnly = false, int32 aura = 0); - CreatureAI* Create(void *) const; + static AISpellInfoType *AISpellInfo; + static void FillAISpellInfo(); - int Permit(const Creature *c) const { return REAL_AI::Permissible(c); } + protected: + bool _EnterEvadeMode(); }; enum Permitions @@ -301,8 +183,4 @@ enum Permitions PERMIT_BASE_SPECIAL = 800 }; -typedef FactoryHolder<CreatureAI> CreatureAICreator; -typedef FactoryHolder<CreatureAI>::FactoryHolderRegistry CreatureAIRegistry; -typedef FactoryHolder<CreatureAI>::FactoryHolderRepository CreatureAIRepository; #endif - diff --git a/src/game/CreatureAIFactory.h b/src/game/CreatureAIFactory.h new file mode 100644 index 00000000000..d546c2b1720 --- /dev/null +++ b/src/game/CreatureAIFactory.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> + * + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef TRINITY_CREATUREAIFACTORY_H +#define TRINITY_CREATUREAIFACTORY_H + +//#include "Policies/Singleton.h" +#include "Dynamic/ObjectRegistry.h" +#include "Dynamic/FactoryHolder.h" + +struct SelectableAI : public FactoryHolder<CreatureAI>, public Permissible<Creature> +{ + SelectableAI(const char *id) : FactoryHolder<CreatureAI>(id) {} +}; + +template<class REAL_AI> +struct CreatureAIFactory : public SelectableAI +{ + CreatureAIFactory(const char *name) : SelectableAI(name) {} + + CreatureAI* Create(void *) const; + + int Permit(const Creature *c) const { return REAL_AI::Permissible(c); } +}; + +template<class REAL_AI> +inline CreatureAI* +CreatureAIFactory<REAL_AI>::Create(void *data) const +{ + Creature* creature = reinterpret_cast<Creature *>(data); + return (new REAL_AI(creature)); +} + +typedef FactoryHolder<CreatureAI> CreatureAICreator; +typedef FactoryHolder<CreatureAI>::FactoryHolderRegistry CreatureAIRegistry; +typedef FactoryHolder<CreatureAI>::FactoryHolderRepository CreatureAIRepository; +#endif diff --git a/src/game/CreatureAIImpl.h b/src/game/CreatureAIImpl.h index a8b8271c5ff..7edebb709fd 100644 --- a/src/game/CreatureAIImpl.h +++ b/src/game/CreatureAIImpl.h @@ -20,14 +20,156 @@ #ifndef CREATUREAIIMPL_H #define CREATUREAIIMPL_H -#include "CreatureAI.h" +#include "Common.h" +#include "Platform/Define.h" -template<class REAL_AI> -inline CreatureAI* -CreatureAIFactory<REAL_AI>::Create(void *data) const +#define HEROIC(n,h) (HeroicMode ? h : n) + +template<class T> +inline +const T& RAND(const T& v1, const T& v2) +{ + return rand()%2 ? v1 : v2; +} + +template<class T> +inline +const T& RAND(const T& v1, const T& v2, const T& v3) +{ + switch(rand()%3) + { + default: + case 0: return v1; + case 1: return v2; + case 2: return v3; + } +} + +template<class T> +inline +const T& RAND(const T& v1, const T& v2, const T& v3, const T& v4) { - Creature* creature = reinterpret_cast<Creature *>(data); - return (new REAL_AI(creature)); + switch(rand()%4) + { + default: + case 0: return v1; + case 1: return v2; + case 2: return v3; + case 3: return v4; + } } + +template<class T> +inline +const T& RAND(const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) +{ + switch(rand()%4) + { + default: + case 0: return v1; + case 1: return v2; + case 2: return v3; + case 3: return v4; + case 4: return v5; + } +} + +class EventMap : private std::map<uint32, uint32> +{ + private: + uint32 m_time, m_phase; + public: + explicit EventMap() : m_phase(0), m_time(0) {} + + void Reset() { clear(); m_time = 0; m_phase = 0; } + + void Update(uint32 time) { m_time += time; } + + void SetPhase(uint32 phase) + { + if(phase && phase < 9) + m_phase = (1 << (phase + 24)); + } + + void ScheduleEvent(uint32 eventId, uint32 time, uint32 gcd = 0, uint32 phase = 0) + { + time += m_time; + if(gcd && gcd < 9) + eventId |= (1 << (gcd + 16)); + if(phase && phase < 9) + eventId |= (1 << (phase + 24)); + iterator itr = find(time); + while(itr != end()) + { + ++time; + itr = find(time); + } + insert(std::make_pair(time, eventId)); + } + + uint32 ExecuteEvent() + { + while(!empty()) + { + if(begin()->first > m_time) + return 0; + else if(m_phase && (begin()->second & 0xFF000000) && !(begin()->second & m_phase)) + erase(begin()); + else + { + uint32 eventId = (begin()->second & 0x0000FFFF); + erase(begin()); + return eventId; + } + } + return 0; + } + + void DelayEvents(uint32 time, uint32 gcd) + { + time += m_time; + gcd = (1 << (gcd + 16)); + for(iterator itr = begin(); itr != end();) + { + if(itr->first >= time) + break; + if(itr->second & gcd) + { + ScheduleEvent(time, itr->second); + erase(itr++); + } + else + ++itr; + } + } +}; + +enum AITarget +{ + AITARGET_SELF, + AITARGET_VICTIM, + AITARGET_ENEMY, + AITARGET_ALLY, + AITARGET_BUFF, + AITARGET_DEBUFF, +}; + +enum AICondition +{ + AICOND_AGGRO, + AICOND_COMBAT, + AICOND_DIE, +}; + +#define AI_DEFAULT_COOLDOWN 5000 + +struct AISpellInfoType +{ + AISpellInfoType() : target(AITARGET_SELF), condition(AICOND_COMBAT), cooldown(AI_DEFAULT_COOLDOWN) {} + AITarget target; + AICondition condition; + uint32 cooldown; +}; + #endif diff --git a/src/game/CreatureAIRegistry.cpp b/src/game/CreatureAIRegistry.cpp index 6253c06b8bc..162ebd9b47c 100644 --- a/src/game/CreatureAIRegistry.cpp +++ b/src/game/CreatureAIRegistry.cpp @@ -23,16 +23,16 @@ #include "AggressorAI.h" #include "GuardAI.h" #include "PetAI.h" -#include "PossessedAI.h" #include "TotemAI.h" #include "OutdoorPvPObjectiveAI.h" #include "CreatureEventAI.h" #include "RandomMovementGenerator.h" -#include "CreatureAIImpl.h" #include "MovementGeneratorImpl.h" #include "CreatureAIRegistry.h" #include "WaypointMovementGenerator.h" +#include "CreatureAIFactory.h" +#include "CreatureAIImpl.h" namespace AIRegistry { void Initialize() @@ -46,7 +46,7 @@ namespace AIRegistry (new CreatureAIFactory<PetAI>("PetAI"))->RegisterSelf(); (new CreatureAIFactory<TotemAI>("TotemAI"))->RegisterSelf(); (new CreatureAIFactory<OutdoorPvPObjectiveAI>("OutdoorPvPObjectiveAI"))->RegisterSelf(); - (new CreatureAIFactory<PossessedAI>("PossessedAI"))->RegisterSelf(); + (new CreatureAIFactory<SpellAI>("SpellAI"))->RegisterSelf(); (new CreatureAIFactory<CreatureEventAI>("EventAI"))->RegisterSelf(); (new MovementGeneratorFactory<RandomMovementGenerator<Creature> >(RANDOM_MOTION_TYPE))->RegisterSelf(); diff --git a/src/game/CreatureAISelector.cpp b/src/game/CreatureAISelector.cpp index a698d094e18..bac4f3a4973 100644 --- a/src/game/CreatureAISelector.cpp +++ b/src/game/CreatureAISelector.cpp @@ -19,7 +19,6 @@ */ #include "Creature.h" -#include "CreatureAIImpl.h" #include "CreatureAISelector.h" #include "NullCreatureAI.h" #include "Policies/SingletonImp.h" @@ -27,6 +26,7 @@ #include "ScriptCalls.h" #include "Pet.h" #include "TemporarySummon.h" +#include "CreatureAIFactory.h" INSTANTIATE_SINGLETON_1(CreatureAIRegistry); INSTANTIATE_SINGLETON_1(MovementGeneratorRegistry); @@ -69,6 +69,18 @@ namespace FactorySelector ai_factory = ai_registry.GetRegistryItem("CritterAI"); } + if(!ai_factory) + { + for(uint32 i = 0; i < CREATURE_MAX_SPELLS; ++i) + { + if(creature->m_spells[i]) + { + ai_factory = ai_registry.GetRegistryItem("SpellAI"); + break; + } + } + } + // select by permit check if(!ai_factory) { diff --git a/src/game/CreatureEventAI.cpp b/src/game/CreatureEventAI.cpp index fb7b7119860..5a84d43e80f 100644 --- a/src/game/CreatureEventAI.cpp +++ b/src/game/CreatureEventAI.cpp @@ -1054,14 +1054,7 @@ void CreatureEventAI::JustReachedHome() void CreatureEventAI::EnterEvadeMode() { - m_creature->RemoveAllAuras(); - m_creature->DeleteThreatList(); - m_creature->CombatStop(true); - - if (m_creature->isAlive()) - m_creature->GetMotionMaster()->MoveTargetedHome(); - - m_creature->SetLootRecipient(NULL); + CreatureAI::EnterEvadeMode(); if (bEmptyList) return; @@ -1295,13 +1288,10 @@ void CreatureEventAI::UpdateAI(const uint32 diff) break; case EVENT_T_RANGE: if (Combat) - { - if (m_creature->IsWithinDistInMap(m_creature->getVictim(),(float)(*i).Event.event_param2)) - { - if (m_creature->GetDistance(m_creature->getVictim()) >= (float)(*i).Event.event_param1) + if (m_creature->IsInMap(m_creature->getVictim())) + if (m_creature->IsInRange(m_creature->getVictim(), + (float)(*i).Event.event_param1,(float)(*i).Event.event_param2)) ProcessEvent(*i); - } - } break; } } @@ -1555,8 +1545,7 @@ bool CreatureEventAI::CanCast(Unit* Target, SpellEntry const *Spell, bool Trigge return false; //Unit is out of range of this spell - if (me->GetDistance(Target) > me->GetSpellMaxRangeForTarget(Target, TempRange) - || me->GetDistance(Target) < me->GetSpellMinRangeForTarget(Target, TempRange)) + if (!m_creature->IsInRange(Target,TempRange->minRangeHostile,TempRange->maxRangeHostile)) return false; return true; diff --git a/src/game/DBCEnums.h b/src/game/DBCEnums.h index 655c9967989..44ab34d7a11 100644 --- a/src/game/DBCEnums.h +++ b/src/game/DBCEnums.h @@ -48,7 +48,7 @@ enum AchievementFlags ACHIEVEMENT_FLAG_SUMM = 0x00000008, // Use summ criteria value from all reqirements (and calculate max value) ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // Show max criteria (and calculate max value ??) ACHIEVEMENT_FLAG_REQ_COUNT = 0x00000020, // Use not zero req count (and calculate max value) - ACHIEVEMENT_FLAG_AVERANGE = 0x00000040, // Show as averange value (value / time_in_days) depend from other flag (by def use last criteria value) + ACHIEVEMENT_FLAG_AVERAGE = 0x00000040, // Show as average value (value / time_in_days) depend from other flag (by def use last criteria value) ACHIEVEMENT_FLAG_BAR = 0x00000080, // Show as progress bar (value / max vale) depend from other flag (by def use last criteria value) ACHIEVEMENT_FLAG_REALM_FIRST_REACH = 0x00000100, // ACHIEVEMENT_FLAG_REALM_FIRST_KILL = 0x00000200, // diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index 8c8195c018b..d5078e8b408 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -1143,7 +1143,7 @@ struct RandomPropertiesPointsEntry struct ScalingStatDistributionEntry { uint32 Id; - uint32 StatMod[10]; + int32 StatMod[10]; uint32 Modifier[10]; uint32 MaxLevel; }; @@ -1152,7 +1152,58 @@ struct ScalingStatValuesEntry { uint32 Id; uint32 Level; - uint32 Multiplier[17]; + uint32 ssdMultiplier[5]; // Multiplier for ScalingStatDistribution + uint32 armorMod[4]; // Armor for level + uint32 dpsMod[6]; // DPS mod for level + uint32 spellBonus; // not sure.. TODO: need more info about + uint32 feralBonus; // Feral AP bonus + + uint32 getssdMultiplier(uint32 mask) const + { + if (mask&0x001F) + { + if(mask & 0x00000001) return ssdMultiplier[0]; + if(mask & 0x00000002) return ssdMultiplier[1]; + if(mask & 0x00000004) return ssdMultiplier[2]; + if(mask & 0x00000008) return ssdMultiplier[3]; + if(mask & 0x00000010) return ssdMultiplier[4]; + } + return 0; + } + uint32 getArmorMod(uint32 mask) const + { + if (mask&0x01E0) + { + if(mask & 0x00000020) return armorMod[0]; + if(mask & 0x00000040) return armorMod[1]; + if(mask & 0x00000080) return armorMod[2]; + if(mask & 0x00000100) return armorMod[3]; + } + return 0; + } + uint32 getDPSMod(uint32 mask) const + { + if (mask&0x7E00) + { + if(mask & 0x00000200) return dpsMod[0]; + if(mask & 0x00000400) return dpsMod[1]; + if(mask & 0x00000800) return dpsMod[2]; + if(mask & 0x00001000) return dpsMod[3]; + if(mask & 0x00002000) return dpsMod[4]; + if(mask & 0x00004000) return dpsMod[5]; + } + return 0; + } + uint32 getSpellBonus(uint32 mask) const + { + if (mask & 0x00008000) return spellBonus; + return 0; + } + uint32 getFeralBonus(uint32 mask) const + { + if (mask & 0x00010000) return feralBonus; + return 0; + } }; //struct SkillLineCategoryEntry{ @@ -1517,7 +1568,7 @@ struct TaxiNodesEntry float x; // 2 m_x float y; // 3 m_y float z; // 4 m_z - //char* name[16]; // 5-21 m_Name_lang + char* name[16]; // 5-21 m_Name_lang // 22 string flags uint32 MountCreatureID[2]; // 23-24 m_MountCreatureID[2] }; diff --git a/src/game/DBCfmt.h b/src/game/DBCfmt.h index ea2198ef22c..170fd25dd9f 100644 --- a/src/game/DBCfmt.h +++ b/src/game/DBCfmt.h @@ -96,7 +96,7 @@ const char StableSlotPricesfmt[] = "ni"; const char SummonPropertiesfmt[] = "niiiii"; const char TalentEntryfmt[]="niiiiiiiixxxxixxixxxxxx"; const char TalentTabEntryfmt[]="nxxxxxxxxxxxxxxxxxxxiiix"; -const char TaxiNodesEntryfmt[]="nifffxxxxxxxxxxxxxxxxxii"; +const char TaxiNodesEntryfmt[]="nifffssssssssssssssssxii"; const char TaxiPathEntryfmt[]="niii"; const char TaxiPathNodeEntryfmt[]="diiifffiixx"; const char TotemCategoryEntryfmt[]="nxxxxxxxxxxxxxxxxxii"; diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp index 2f1014eb769..540ea1e0dd7 100644 --- a/src/game/GameObject.cpp +++ b/src/game/GameObject.cpp @@ -174,7 +174,7 @@ bool GameObject::Create(uint32 guidlow, uint32 name_id, Map *map, uint32 phaseMa //Normally non-players do not teleport to other maps. if(map->IsDungeon() && ((InstanceMap*)map)->GetInstanceData()) { - ((InstanceMap*)map)->GetInstanceData()->OnObjectCreate(this); + ((InstanceMap*)map)->GetInstanceData()->OnObjectCreate(this, true); } return true; @@ -198,7 +198,7 @@ void GameObject::Update(uint32 /*p_time*/) { // Arming Time for GAMEOBJECT_TYPE_TRAP (6) Unit* owner = GetOwner(); - if (owner && ((Player*)owner)->isInCombat()) + if (owner && owner->isInCombat()) m_cooldownTime = time(NULL) + GetGOInfo()->trap.startDelay; m_lootState = GO_READY; break; diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index 03d8ea11b16..a9925f67406 100644 --- a/src/game/GridNotifiers.h +++ b/src/game/GridNotifiers.h @@ -489,7 +489,7 @@ namespace Trinity void Visit(PlayerMapType &m) { for(PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if(itr->getSource()->InSamePhase(i_searcher) && itr->getSource()->GetDistance(i_searcher) <= i_dist) + if (itr->getSource()->InSamePhase(i_searcher) && itr->getSource()->IsWithinDist(i_searcher,i_dist)) i_do(itr->getSource()); } @@ -499,6 +499,53 @@ namespace Trinity // CHECKS && DO classes // WorldObject check classes + class RaiseDeadObjectCheck + { + public: + RaiseDeadObjectCheck(Unit* funit, float range) : i_funit(funit), i_range(range) {} + bool operator()(Creature* u) + { + if (i_funit->GetTypeId()!=TYPEID_PLAYER || !((Player*)i_funit)->isHonorOrXPTarget(u) || + u->getDeathState() != CORPSE || u->isDeadByDefault() || u->isInFlight() || + ( u->GetCreatureTypeMask() & (1 << (CREATURE_TYPE_HUMANOID-1)) )==0 || + (u->GetDisplayId() != u->GetNativeDisplayId())) + return false; + + return i_funit->IsWithinDistInMap(u, i_range); + } + template<class NOT_INTERESTED> bool operator()(NOT_INTERESTED*) { return false; } + private: + Unit* const i_funit; + float i_range; + }; + + class ExplodeCorpseObjectCheck + { + public: + ExplodeCorpseObjectCheck(Unit* funit, float range) : i_funit(funit), i_range(range) {} + bool operator()(Player* u) + { + if (u->getDeathState()!=CORPSE || u->isInFlight() || + u->HasAuraType(SPELL_AURA_GHOST) || (u->GetDisplayId() != u->GetNativeDisplayId())) + return false; + + return i_funit->IsWithinDistInMap(u, i_range); + } + bool operator()(Creature* u) + { + if (u->getDeathState()!=CORPSE || u->isInFlight() || u->isDeadByDefault() || + (u->GetDisplayId() != u->GetNativeDisplayId()) || + (u->GetCreatureTypeMask() & CREATURE_TYPEMASK_MECHANICAL_OR_ELEMENTAL)!=0) + return false; + + return i_funit->IsWithinDistInMap(u, i_range); + } + template<class NOT_INTERESTED> bool operator()(NOT_INTERESTED*) { return false; } + private: + Unit* const i_funit; + float i_range; + }; + class CannibalizeObjectCheck { public: @@ -508,22 +555,16 @@ namespace Trinity if( i_funit->IsFriendlyTo(u) || u->isAlive() || u->isInFlight() ) return false; - if(i_funit->IsWithinDistInMap(u, i_range) ) - return true; - - return false; + return i_funit->IsWithinDistInMap(u, i_range); } bool operator()(Corpse* u); bool operator()(Creature* u) { - if( i_funit->IsFriendlyTo(u) || u->isAlive() || u->isInFlight() || + if (i_funit->IsFriendlyTo(u) || u->isAlive() || u->isInFlight() || (u->GetCreatureTypeMask() & CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD)==0) return false; - if(i_funit->IsWithinDistInMap(u, i_range) ) - return true; - - return false; + return i_funit->IsWithinDistInMap(u, i_range); } template<class NOT_INTERESTED> bool operator()(NOT_INTERESTED*) { return false; } private: diff --git a/src/game/GridNotifiersImpl.h b/src/game/GridNotifiersImpl.h index 7726d5647bd..12f3706c4e2 100644 --- a/src/game/GridNotifiersImpl.h +++ b/src/game/GridNotifiersImpl.h @@ -178,8 +178,11 @@ inline void Trinity::DynamicObjectUpdater::VisitHelper(Unit* target) if (i_dynobject.IsAffecting(target)) return; - SpellEntry const *spellInfo = sSpellStore.LookupEntry(i_dynobject.GetSpellId()); uint32 eff_index = i_dynobject.GetEffIndex(); + if(target->HasAuraEffect(i_dynobject.GetSpellId(), eff_index, i_check->GetGUID())) + return; + + SpellEntry const *spellInfo = sSpellStore.LookupEntry(i_dynobject.GetSpellId()); if(spellInfo->EffectImplicitTargetB[eff_index] == TARGET_DEST_DYNOBJ_ALLY || spellInfo->EffectImplicitTargetB[eff_index] == TARGET_UNIT_AREA_ALLY_DST) { @@ -205,7 +208,9 @@ inline void Trinity::DynamicObjectUpdater::VisitHelper(Unit* target) if (target->IsImmunedToSpell(spellInfo) || target->IsImmunedToSpellEffect(spellInfo, eff_index)) return; // Apply PersistentAreaAura on target - target->AddAuraEffect(spellInfo->Id, eff_index, i_dynobject.GetCaster()); + if(Aura *aur = target->AddAuraEffect(spellInfo, eff_index, i_dynobject.GetCaster())) + aur->SetAuraDuration(i_dynobject.GetDuration()); + i_dynobject.AddAffected(target); } diff --git a/src/game/Group.cpp b/src/game/Group.cpp index 02fc72f2022..d2c17680e52 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -571,7 +571,7 @@ void Group::GroupLoot(const uint64& playerGUID, Loot *loot, Creature *creature) continue; if ( i->AllowedForPlayer(member) ) { - if (member->GetDistance2d(creature) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if (member->IsWithinDist(creature,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) { r->playerVote[member->GetGUID()] = NOT_EMITED_YET; ++r->totalPlayersRolling; @@ -621,7 +621,7 @@ void Group::NeedBeforeGreed(const uint64& playerGUID, Loot *loot, Creature *crea if (playerToRoll->CanUseItem(item) && i->AllowedForPlayer(playerToRoll) ) { - if (playerToRoll->GetDistance2d(creature) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if (playerToRoll->IsWithinDist(creature,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) { r->playerVote[playerToRoll->GetGUID()] = NOT_EMITED_YET; ++r->totalPlayersRolling; @@ -669,7 +669,7 @@ void Group::MasterLoot(const uint64& playerGUID, Loot* /*loot*/, Creature *creat if (!looter->IsInWorld()) continue; - if (looter->GetDistance2d(creature) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if (looter->IsWithinDist(creature,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) { data << looter->GetGUID(); ++real_count; @@ -681,7 +681,7 @@ void Group::MasterLoot(const uint64& playerGUID, Loot* /*loot*/, Creature *creat for(GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) { Player *looter = itr->getSource(); - if (looter->GetDistance2d(creature) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if (looter->IsWithinDist(creature,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) looter->GetSession()->SendPacket(&data); } } @@ -1338,7 +1338,7 @@ void Group::UpdateLooterGuid( Creature* creature, bool ifneed ) { // not update if only update if need and ok Player* looter = ObjectAccessor::FindPlayer(guid_itr->guid); - if(looter && looter->GetDistance2d(creature) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if(looter && looter->IsWithinDist(creature,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) return; } ++guid_itr; @@ -1351,7 +1351,7 @@ void Group::UpdateLooterGuid( Creature* creature, bool ifneed ) { if(Player* pl = ObjectAccessor::FindPlayer(itr->guid)) { - if (pl->GetDistance2d(creature) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if (pl->IsWithinDist(creature,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) { bool refresh = pl->GetLootGUID()==creature->GetGUID(); @@ -1372,7 +1372,7 @@ void Group::UpdateLooterGuid( Creature* creature, bool ifneed ) { if(Player* pl = ObjectAccessor::FindPlayer(itr->guid)) { - if (pl->GetDistance2d(creature) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if (pl->IsWithinDist(creature,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) { bool refresh = pl->GetLootGUID()==creature->GetGUID(); diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp index b0094989e19..cd7004f5a07 100644 --- a/src/game/GroupHandler.cpp +++ b/src/game/GroupHandler.cpp @@ -78,6 +78,12 @@ void WorldSession::HandleGroupInviteOpcode( WorldPacket & recv_data ) return; } + // restrict invite to GMs + if (!sWorld.getConfig(CONFIG_ALLOW_GM_GROUP) && !GetPlayer()->isGameMaster() && player->isGameMaster()) + { + SendPartyResult(PARTY_OP_INVITE, membername, PARTY_RESULT_CANT_FIND_TARGET); + return; + } // can't group with if(!sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && GetPlayer()->GetTeam() != player->GetTeam()) { diff --git a/src/game/GuardAI.cpp b/src/game/GuardAI.cpp index b716642ebd7..b7268758583 100644 --- a/src/game/GuardAI.cpp +++ b/src/game/GuardAI.cpp @@ -126,7 +126,7 @@ void GuardAI::UpdateAI(const uint32 /*diff*/) bool GuardAI::IsVisible(Unit *pl) const { - return m_creature->GetDistance(pl) < sWorld.getConfig(CONFIG_SIGHT_GUARDER) + return m_creature->IsWithinDist(pl,sWorld.getConfig(CONFIG_SIGHT_GUARDER)) && pl->isVisibleForOrDetect(m_creature,true); } diff --git a/src/game/InstanceData.cpp b/src/game/InstanceData.cpp index 92e4b4afe3d..96c10f7b85c 100644 --- a/src/game/InstanceData.cpp +++ b/src/game/InstanceData.cpp @@ -26,8 +26,9 @@ void InstanceData::SaveToDB() { - if(!Save()) return; - std::string data = Save(); + std::string data = GetSaveData(); + if(data.empty()) + return; CharacterDatabase.escape_string(data); CharacterDatabase.PExecute("UPDATE instance SET data = '%s' WHERE id = '%d'", data.c_str(), instance->GetInstanceId()); } @@ -57,42 +58,66 @@ void InstanceData::OnCreatureCreate(Creature *creature, bool add) OnCreatureCreate(creature, creature->GetEntry()); } -void InstanceData::SetBossRoomDoor(uint32 id, GameObject *door, bool add) +void InstanceData::LoadDoorData(const DoorData *data) { - if(id < bosses.size()) + while(data->entry) { - if(add) + if(data->bossId < bosses.size()) + doors.insert(std::make_pair(data->entry, DoorInfo(&bosses[data->bossId], data->type))); + + ++data; + } + sLog.outDebug("InstanceData::LoadDoorData: %u doors loaded.", doors.size()); +} + +void InstanceData::UpdateDoorState(GameObject *door) +{ + DoorInfoMap::iterator lower = doors.lower_bound(door->GetEntry()); + DoorInfoMap::iterator upper = doors.upper_bound(door->GetEntry()); + if(lower == upper) + return; + + bool open = true; + for(DoorInfoMap::iterator itr = lower; itr != upper; ++itr) + { + if(itr->second.type == DOOR_TYPE_ROOM) { - BossInfo *bossInfo = &bosses[id]; - bossInfo->roomDoor.insert(door); - // Room door is only closed when encounter is in progress - if(bossInfo->state == IN_PROGRESS) - door->SetGoState(GO_STATE_READY); - else - door->SetGoState(GO_STATE_ACTIVE); + if(itr->second.bossInfo->state == IN_PROGRESS) + { + open = false; + break; + } + } + else if(itr->second.type == DOOR_TYPE_PASSAGE) + { + if(itr->second.bossInfo->state != DONE) + { + open = false; + break; + } } - else - bosses[id].roomDoor.erase(door); } + + door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY); } -void InstanceData::SetBossPassageDoor(uint32 id, GameObject *door, bool add) +void InstanceData::AddDoor(GameObject *door, bool add) { - if(id < bosses.size()) + DoorInfoMap::iterator lower = doors.lower_bound(door->GetEntry()); + DoorInfoMap::iterator upper = doors.upper_bound(door->GetEntry()); + if(lower == upper) + return; + + for(DoorInfoMap::iterator itr = lower; itr != upper; ++itr) { if(add) - { - BossInfo *bossInfo = &bosses[id]; - bossInfo->passageDoor.insert(door); - // Passage door is only opened when boss is defeated - if(bossInfo->state == DONE) - door->SetGoState(GO_STATE_ACTIVE); - else - door->SetGoState(GO_STATE_READY); - } + itr->second.bossInfo->door[itr->second.type].insert(door); else - bosses[id].passageDoor.erase(door); + itr->second.bossInfo->door[itr->second.type].erase(door); } + + if(add) + UpdateDoorState(door); } void InstanceData::SetBossState(uint32 id, EncounterState state) @@ -100,33 +125,41 @@ void InstanceData::SetBossState(uint32 id, EncounterState state) if(id < bosses.size()) { BossInfo *bossInfo = &bosses[id]; - bossInfo->state = state; - switch(state) + if(bossInfo->state == TO_BE_DECIDED) // loading + bossInfo->state = state; + else { - case NOT_STARTED: - // Open all room doors, close all passage doors - for(DoorSet::iterator i = bossInfo->roomDoor.begin(); i != bossInfo->roomDoor.end(); ++i) - (*i)->SetGoState(GO_STATE_ACTIVE); - for(DoorSet::iterator i = bossInfo->passageDoor.begin(); i != bossInfo->passageDoor.end(); ++i) - (*i)->SetGoState(GO_STATE_READY); - break; - case IN_PROGRESS: - // Close all doors - for(DoorSet::iterator i = bossInfo->roomDoor.begin(); i != bossInfo->roomDoor.end(); ++i) - (*i)->SetGoState(GO_STATE_READY); - for(DoorSet::iterator i = bossInfo->passageDoor.begin(); i != bossInfo->passageDoor.end(); ++i) - (*i)->SetGoState(GO_STATE_READY); - break; - case DONE: - // Open all doors - for(DoorSet::iterator i = bossInfo->roomDoor.begin(); i != bossInfo->roomDoor.end(); ++i) - (*i)->SetGoState(GO_STATE_ACTIVE); - for(DoorSet::iterator i = bossInfo->passageDoor.begin(); i != bossInfo->passageDoor.end(); ++i) - (*i)->SetGoState(GO_STATE_ACTIVE); - break; - default: - break; + if(bossInfo->state == state) + return; + bossInfo->state = state; + SaveToDB(); } + + for(uint32 type = 0; type < MAX_DOOR_TYPES; ++type) + for(DoorSet::iterator i = bossInfo->door[type].begin(); i != bossInfo->door[type].end(); ++i) + UpdateDoorState(*i); } } +std::string InstanceData::LoadBossState(const char * data) +{ + if(!data) return NULL; + std::istringstream loadStream(data); + uint32 buff; + uint32 bossId = 0; + for(std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i, ++bossId) + { + loadStream >> buff; + if(buff < TO_BE_DECIDED) + SetBossState(bossId, (EncounterState)buff); + } + return loadStream.str(); +} + +std::string InstanceData::GetBossSaveData() +{ + std::ostringstream saveStream; + for(std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i) + saveStream << (uint32)i->state << " "; + return saveStream.str(); +} diff --git a/src/game/InstanceData.h b/src/game/InstanceData.h index 2d7e5f84746..91f589384a0 100644 --- a/src/game/InstanceData.h +++ b/src/game/InstanceData.h @@ -37,16 +37,40 @@ enum EncounterState IN_PROGRESS = 1, FAIL = 2, DONE = 3, - SPECIAL = 4 + SPECIAL = 4, + TO_BE_DECIDED = 5, }; typedef std::set<GameObject*> DoorSet; +enum DoorType +{ + DOOR_TYPE_ROOM = 0, + DOOR_TYPE_PASSAGE, + MAX_DOOR_TYPES, +}; + struct BossInfo { - BossInfo() : state(NOT_STARTED) {} + BossInfo() : state(TO_BE_DECIDED) {} EncounterState state; - DoorSet roomDoor, passageDoor; + DoorSet door[MAX_DOOR_TYPES]; +}; + +struct DoorInfo +{ + explicit DoorInfo(BossInfo *_bossInfo, DoorType _type) + : bossInfo(_bossInfo), type(_type) {} + BossInfo *bossInfo; + DoorType type; +}; + +typedef std::multimap<uint32 /*entry*/, DoorInfo> DoorInfoMap; + +struct DoorData +{ + uint32 entry, bossId; + DoorType type; }; class TRINITY_DLL_SPEC InstanceData @@ -62,10 +86,10 @@ class TRINITY_DLL_SPEC InstanceData virtual void Initialize() {} //On load - virtual void Load(const char* /*data*/) {} + virtual void Load(const char * data) { LoadBossState(data); } //When save is needed, this function generates the data - virtual const char* Save() { return ""; } + virtual std::string GetSaveData() { return GetBossSaveData(); } void SaveToDB(); @@ -80,15 +104,10 @@ class TRINITY_DLL_SPEC InstanceData virtual void OnPlayerEnter(Player *) {} //Called when a gameobject is created - virtual void OnObjectCreate(GameObject *go, bool add) - { - OnObjectCreate(go); - } - virtual void OnObjectCreate(GameObject *) {} + virtual void OnObjectCreate(GameObject *go, bool add) { OnObjectCreate(go); } //called on creature creation virtual void OnCreatureCreate(Creature *, bool add); - virtual void OnCreatureCreate(Creature *, uint32 entry) {} //All-purpose data storage 64 bit virtual uint64 GetData64(uint32 /*Data*/) { return 0; } @@ -103,23 +122,22 @@ class TRINITY_DLL_SPEC InstanceData //use HandleGameObject(GUID,boolen,NULL); in any other script void HandleGameObject(uint64 GUID, bool open, GameObject *go = NULL); - void SetBossState(uint32 id, EncounterState state); + virtual void SetBossState(uint32 id, EncounterState state); protected: - void SetBossNumber(uint32 number) { bosses.resize(number); } - void SetBossRoomDoor(uint32 id, GameObject *door, bool add); - void SetBossPassageDoor(uint32 id, GameObject *door, bool add); + void LoadDoorData(const DoorData *data); - std::string GetBossSave() - { - std::ostringstream saveStream; - for(std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i) - saveStream << (uint32)i->state << " "; - return saveStream.str(); - } + void SetBossNumber(uint32 number) { bosses.resize(number); } + void AddDoor(GameObject *door, bool add); + void UpdateDoorState(GameObject *door); + std::string LoadBossState(const char * data); + std::string GetBossSaveData(); private: std::vector<BossInfo> bosses; + DoorInfoMap doors; + virtual void OnObjectCreate(GameObject *) {} + virtual void OnCreatureCreate(Creature *, uint32 entry) {} }; #endif diff --git a/src/game/InstanceSaveMgr.cpp b/src/game/InstanceSaveMgr.cpp index 9332f4b8f0a..7e2ad67c518 100644 --- a/src/game/InstanceSaveMgr.cpp +++ b/src/game/InstanceSaveMgr.cpp @@ -40,6 +40,8 @@ #include "Group.h" #include "InstanceData.h" #include "ProgressBar.h" +#include "Policies/Singleton.h" +#include "Policies/SingletonImp.h" INSTANTIATE_SINGLETON_1( InstanceSaveManager ); @@ -163,11 +165,11 @@ void InstanceSave::SaveToDB() if(map) { assert(map->IsDungeon()); - InstanceData *iData = ((InstanceMap *)map)->GetInstanceData(); - if(iData && iData->Save()) + if(InstanceData *iData = ((InstanceMap*)map)->GetInstanceData()) { - data = iData->Save(); - CharacterDatabase.escape_string(data); + data = iData->GetSaveData(); + if(!data.empty()) + CharacterDatabase.escape_string(data); } } diff --git a/src/game/InstanceSaveMgr.h b/src/game/InstanceSaveMgr.h index 2a913e5cedf..29972210f3d 100644 --- a/src/game/InstanceSaveMgr.h +++ b/src/game/InstanceSaveMgr.h @@ -24,7 +24,7 @@ #include "Platform/Define.h" #include "Policies/Singleton.h" -#include "zthread/Mutex.h" +#include "ace/Thread_Mutex.h" #include <list> #include <map> #include "Utilities/UnorderedMap.h" @@ -113,7 +113,7 @@ class InstanceSave bool m_canReset; }; -class TRINITY_DLL_DECL InstanceSaveManager : public Trinity::Singleton<InstanceSaveManager, Trinity::ClassLevelLockable<InstanceSaveManager, ZThread::Mutex> > +class MANGOS_DLL_DECL InstanceSaveManager : public MaNGOS::Singleton<InstanceSaveManager, MaNGOS::ClassLevelLockable<InstanceSaveManager, ACE_Thread_Mutex> > { friend class InstanceSave; public: diff --git a/src/game/ItemPrototype.h b/src/game/ItemPrototype.h index f87e52b2e22..e7a37dc8e14 100644 --- a/src/game/ItemPrototype.h +++ b/src/game/ItemPrototype.h @@ -600,46 +600,6 @@ struct ItemPrototype return false; } - uint32 GetScalingStatValuesColumn() const - { - if(ScalingStatValue & 0x00000001) // stat mod - return 0; - if(ScalingStatValue & 0x00000002) // stat mod - return 1; - if(ScalingStatValue & 0x00000004) // stat mod - return 2; - if(ScalingStatValue & 0x00000008) // stat mod - return 3; - if(ScalingStatValue & 0x00000010) // stat mod - return 4; - if(ScalingStatValue & 0x00000020) // armor mod - return 5; - if(ScalingStatValue & 0x00000040) // armor mod - return 6; - if(ScalingStatValue & 0x00000080) // armor mod - return 7; - if(ScalingStatValue & 0x00000100) // armor mod - return 8; - if(ScalingStatValue & 0x00000200) // damage mod - return 9; - if(ScalingStatValue & 0x00000400) // damage mod - return 10; - if(ScalingStatValue & 0x00000800) // damage mod - return 11; - if(ScalingStatValue & 0x00001000) // damage mod - return 12; - if(ScalingStatValue & 0x00002000) // damage mod - return 13; - if(ScalingStatValue & 0x00004000) // damage mod - return 14; - if(ScalingStatValue & 0x00008000) // spell power - return 15; - if(ScalingStatValue & 0x00020000) // feral AP - return 16; - - return 0; - } - uint32 GetMaxStackSize() const { return Stackable > 0 ? uint32(Stackable) : uint32(0x7FFFFFFF-1); } float getDPS() const @@ -652,12 +612,12 @@ struct ItemPrototype return temp*500/Delay; } - int32 getFeralBonus() const + int32 getFeralBonus(int32 extraDPS = 0) const { // 0x02A5F3 - is mask for Melee weapon from ItemSubClassMask.dbc if (Class == ITEM_CLASS_WEAPON && (1<<SubClass)&0x02A5F3) { - int32 bonus = int32(getDPS()*14.0f) - 767; + int32 bonus = int32((extraDPS + getDPS())*14.0f) - 767; if (bonus < 0) return 0; return bonus; diff --git a/src/game/Language.h b/src/game/Language.h index 69bfbf00159..8bc01a7deea 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -328,7 +328,8 @@ enum TrinityStrings LANG_YOU_ALREADY_HAVE_PET = 344, LANG_CUSTOMIZE_PLAYER = 345, LANG_CUSTOMIZE_PLAYER_GUID = 346, - // Room for more level 2 345-399 not used + LANG_COMMAND_GOTAXINODENOTFOUND = 347, + // Room for more level 2 348-399 not used // level 3 chat LANG_SCRIPTS_RELOADED = 400, @@ -403,8 +404,7 @@ enum TrinityStrings LANG_COMMAND_TP_ADDED = 463, LANG_COMMAND_TP_ADDEDERR = 464, LANG_COMMAND_TP_DELETED = 465, - // 466, // not used - + LANG_COMMAND_NOTAXINODEFOUND = 466, LANG_COMMAND_TARGET_LISTAURAS = 467, LANG_COMMAND_TARGET_AURADETAIL = 468, LANG_COMMAND_TARGET_LISTAURATYPE = 469, @@ -765,7 +765,9 @@ enum TrinityStrings LANG_COMMAND_LEARN_PET_TALENTS = 1125, LANG_RESET_PET_TALENTS = 1126, LANG_RESET_PET_TALENTS_ONLINE = 1127, - // Room for more level 3 1128-1199 not used + LANG_TAXINODE_ENTRY_LIST_CHAT = 1128, + LANG_TAXINODE_ENTRY_LIST_CONSOLE = 1129, + // Room for more level 3 1130-1199 not used // Debug commands LANG_CINEMATIC_NOT_EXIST = 1200, diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp index 963e79f8829..45137c5b214 100644 --- a/src/game/Level1.cpp +++ b/src/game/Level1.cpp @@ -2091,12 +2091,12 @@ bool ChatHandler::HandleModifyMoneyCommand(const char* args) uint32 moneyuser = chr->GetMoney(); - if(addmoney < 0) + if (addmoney < 0) { - int32 newmoney = moneyuser + addmoney; + int32 newmoney = int32(moneyuser) + addmoney; sLog.outDetail(GetTrinityString(LANG_CURRENT_MONEY), moneyuser, addmoney, newmoney); - if(newmoney <= 0 ) + if (newmoney <= 0 ) { PSendSysMessage(LANG_YOU_TAKE_ALL_MONEY, GetNameLink(chr).c_str()); if (needReportToTarget(chr)) @@ -2106,6 +2106,9 @@ bool ChatHandler::HandleModifyMoneyCommand(const char* args) } else { + if (newmoney > MAX_MONEY_AMOUNT) + newmoney = MAX_MONEY_AMOUNT; + PSendSysMessage(LANG_YOU_TAKE_MONEY, abs(addmoney), GetNameLink(chr).c_str()); if (needReportToTarget(chr)) ChatHandler(chr).PSendSysMessage(LANG_YOURS_MONEY_TAKEN, GetNameLink().c_str(), abs(addmoney)); @@ -2117,7 +2120,11 @@ bool ChatHandler::HandleModifyMoneyCommand(const char* args) PSendSysMessage(LANG_YOU_GIVE_MONEY, addmoney, GetNameLink(chr).c_str()); if (needReportToTarget(chr)) ChatHandler(chr).PSendSysMessage(LANG_YOURS_MONEY_GIVEN, GetNameLink().c_str(), addmoney); - chr->ModifyMoney( addmoney ); + + if (addmoney >=MAX_MONEY_AMOUNT) + chr->SetMoney(MAX_MONEY_AMOUNT); + else + chr->ModifyMoney( addmoney ); } sLog.outDetail(GetTrinityString(LANG_NEW_MONEY), moneyuser, addmoney, chr->GetMoney() ); @@ -2753,6 +2760,51 @@ bool ChatHandler::HandleGroupgoCommand(const char* args) return true; } +bool ChatHandler::HandleGoTaxinodeCommand(const char* args) +{ + Player* _player = m_session->GetPlayer(); + + if (!*args) + return false; + + char* cNodeId = extractKeyFromLink((char*)args,"Htaxinode"); + if (!cNodeId) + return false; + + int32 i_nodeId = atoi(cNodeId); + if (!i_nodeId) + return false; + + TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(i_nodeId); + if (!node) + { + PSendSysMessage(LANG_COMMAND_GOTAXINODENOTFOUND,i_nodeId); + SetSentErrorMessage(true); + return false; + } + + if (node->x == 0.0f && node->y == 0.0f && node->z == 0.0f || + !MapManager::IsValidMapCoord(node->map_id,node->x,node->y,node->z)) + { + PSendSysMessage(LANG_INVALID_TARGET_COORD,node->x,node->y,node->map_id); + SetSentErrorMessage(true); + return false; + } + + // stop flight if need + if (_player->isInFlight()) + { + _player->GetMotionMaster()->MovementExpired(); + _player->m_taxi.ClearTaxiDestinations(); + } + // save only in non-flight case + else + _player->SaveRecallPosition(); + + _player->TeleportTo(node->map_id, node->x, node->y, node->z, _player->GetOrientation()); + return true; +} + //teleport at coordinates bool ChatHandler::HandleGoXYCommand(const char* args) { diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index bc83aa7a352..782b0f9c44e 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -1288,7 +1288,7 @@ bool ChatHandler::HandleNpcAddMoveCommand(const char* args) // update movement type WorldDatabase.PExecuteLog("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", WAYPOINT_MOTION_TYPE,lowguid); - if(pCreature && pCreature->GetWaypointPath()) + if(pCreature && pCreature->GetWaypointPathId()) { pCreature->SetDefaultMovementType(WAYPOINT_MOTION_TYPE); pCreature->GetMotionMaster()->Initialize(); @@ -1609,7 +1609,7 @@ bool ChatHandler::HandleNpcSetMoveTypeCommand(const char* args) { // update movement type if(doNotDelete == false) - pCreature->LoadPath(0); + pCreature->SetWaypointPathId(0); pCreature->SetDefaultMovementType(move_type); pCreature->GetMotionMaster()->Initialize(); @@ -2639,7 +2639,7 @@ bool ChatHandler::HandleWpAddCommand(const char* args) if (!path_number) { if(target) - pathid = target->GetWaypointPath(); + pathid = target->GetWaypointPathId(); else { QueryResult *result = WorldDatabase.PQuery( "SELECT MAX(id) FROM waypoint_data"); @@ -2694,7 +2694,6 @@ bool ChatHandler::HandleWpLoadPathCommand(const char *args) if(*args) path_number = strtok((char*)args, " "); - uint32 pathid = 0; uint32 guidlow = 0; Creature* target = getSelectedCreature(); @@ -2725,6 +2724,7 @@ bool ChatHandler::HandleWpLoadPathCommand(const char *args) return true; } + /* guidlow = target->GetDBTableGUIDLow(); QueryResult *result = WorldDatabase.PQuery( "SELECT guid FROM creature_addon WHERE guid = '%u'",guidlow); @@ -2735,10 +2735,11 @@ bool ChatHandler::HandleWpLoadPathCommand(const char *args) } else WorldDatabase.PExecute("INSERT INTO creature_addon(guid,path_id) VALUES ('%u','%u')", guidlow, pathid); + */ WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", WAYPOINT_MOTION_TYPE, guidlow); - target->LoadPath(pathid); + target->SetWaypointPathId(pathid); target->SetDefaultMovementType(WAYPOINT_MOTION_TYPE); target->GetMotionMaster()->Initialize(); target->MonsterSay("Path loaded.",0,0); @@ -2746,20 +2747,19 @@ bool ChatHandler::HandleWpLoadPathCommand(const char *args) return true; } - bool ChatHandler::HandleReloadAllPaths(const char* args) { -if(!*args) - return false; + if(!*args) + return false; -uint32 id = atoi(args); + uint32 id = atoi(args); -if(!id) - return false; + if(!id) + return false; PSendSysMessage("%s%s|r|cff00ffff%u|r", "|cff00ff00", "Loading Path: ", id); WaypointMgr.UpdatePath(id); - return true; + return true; } bool ChatHandler::HandleWpUnLoadPathCommand(const char *args) @@ -2773,24 +2773,39 @@ bool ChatHandler::HandleWpUnLoadPathCommand(const char *args) return true; } - if(target->GetCreatureAddon()) + if(target->GetWaypointPathId()) { - if(target->GetCreatureAddon()->path_id != 0) + uint32 pathId = target->GetDBTableGUIDLow() * 10; + if(target->GetWaypointPathId() == pathId) { - WorldDatabase.PExecute("DELETE FROM creature_addon WHERE guid = %u", target->GetGUIDLow()); - target->UpdateWaypointID(0); - WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", IDLE_MOTION_TYPE, guidlow); - target->LoadPath(0); - target->SetDefaultMovementType(IDLE_MOTION_TYPE); - target->GetMotionMaster()->MoveTargetedHome(); - target->GetMotionMaster()->Initialize(); - target->MonsterSay("Path unloaded.",0,0); - return true; + for(uint32 i = 1; i < 11; ++i) + { + if(i == 10) + { + PSendSysMessage("%s%s|r", "|cffff33ff", "Target cannot have more than 9 script paths. Unloading failed."); + break; + } + + if(WaypointMgr.GetPath(++pathId)) + continue; + + WorldDatabase.PExecute("UPDATE waypoint_data SET id = %u WHERE id = %u", pathId, target->GetDBTableGUIDLow() * 10); + WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", IDLE_MOTION_TYPE, guidlow); + target->SetWaypointPathId(0); + target->UpdateWaypointID(0); + target->SetDefaultMovementType(IDLE_MOTION_TYPE); + target->GetMotionMaster()->Initialize(); + target->GetMotionMaster()->MoveTargetedHome(); + PSendSysMessage("Path unloaded."); + break; + } } - PSendSysMessage("%s%s|r", "|cffff33ff", "Target have no loaded path."); - return true; + else + PSendSysMessage("%s%s|r", "|cffff33ff", "Target has path but that path is not its default path. Unloading failed."); } - PSendSysMessage("%s%s|r", "|cffff33ff", "Target have no loaded path."); + else + PSendSysMessage("%s%s|r", "|cffff33ff", "Target has no loaded path."); + return true; } @@ -3264,7 +3279,7 @@ bool ChatHandler::HandleWpShowCommand(const char* args) return false; } - pathid = target->GetWaypointPath(); + pathid = target->GetWaypointPathId(); } else @@ -4629,7 +4644,7 @@ bool ChatHandler::HandleNpcAddFormationCommand(const char* args) group_member->groupAI = 0; CreatureGroupMap[lowguid] = group_member; - pCreature->SearchFormation(); + pCreature->SearchFormationAndPath(); WorldDatabase.PExecuteLog("INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES ('%u','%u','%f', '%f', '%u')", leaderGUID, lowguid, group_member->follow_dist, group_member->follow_angle, group_member->groupAI); diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 474a79c5680..9d43c348831 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -1612,11 +1612,7 @@ bool ChatHandler::HandleCooldownCommand(const char* args) return false; } - WorldPacket data( SMSG_CLEAR_COOLDOWN, (4+8) ); - data << uint32(spell_id); - data << uint64(target->GetGUID()); - target->GetSession()->SendPacket(&data); - target->RemoveSpellCooldown(spell_id); + target->RemoveSpellCooldown(spell_id,true); PSendSysMessage(LANG_REMOVE_COOLDOWN, spell_id, target==m_session->GetPlayer() ? GetMangosString(LANG_YOU) : tNameLink.c_str()); } return true; @@ -3694,6 +3690,68 @@ bool ChatHandler::HandleLookupObjectCommand(const char* args) return true; } +bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args) +{ + if(!*args) + return false; + + std::string namepart = args; + std::wstring wnamepart; + + if(!Utf8toWStr(namepart,wnamepart)) + return false; + + // converting string that we try to find to lower case + wstrToLower( wnamepart ); + + uint32 counter = 0; // Counter for figure out that we found smth. + + // Search in TaxiNodes.dbc + for (uint32 id = 0; id < sTaxiNodesStore.GetNumRows(); id++) + { + TaxiNodesEntry const *nodeEntry = sTaxiNodesStore.LookupEntry(id); + if(nodeEntry) + { + int loc = m_session ? m_session->GetSessionDbcLocale() : sWorld.GetDefaultDbcLocale(); + std::string name = nodeEntry->name[loc]; + if(name.empty()) + continue; + + if (!Utf8FitTo(name, wnamepart)) + { + loc = 0; + for(; loc < MAX_LOCALE; ++loc) + { + if(m_session && loc==m_session->GetSessionDbcLocale()) + continue; + + name = nodeEntry->name[loc]; + if(name.empty()) + continue; + + if (Utf8FitTo(name, wnamepart)) + break; + } + } + + if(loc < MAX_LOCALE) + { + // send taxinode in "id - [name] (Map:m X:x Y:y Z:z)" format + if (m_session) + PSendSysMessage (LANG_TAXINODE_ENTRY_LIST_CHAT, id, id, name.c_str(),localeNames[loc], + nodeEntry->map_id,nodeEntry->x,nodeEntry->y,nodeEntry->z); + else + PSendSysMessage (LANG_TAXINODE_ENTRY_LIST_CONSOLE, id, name.c_str(), localeNames[loc], + nodeEntry->map_id,nodeEntry->x,nodeEntry->y,nodeEntry->z); + ++counter; + } + } + } + if (counter == 0) // if counter == 0 then we found nth + SendSysMessage(LANG_COMMAND_NOSPELLFOUND); + return true; +} + /** \brief GM command level 3 - Create a guild. * * This command allows a GM (level 3) to create a guild. @@ -3966,31 +4024,34 @@ bool ChatHandler::HandleDamageCommand(const char * args) Unit* target = getSelectedUnit(); - if(!target || !m_session->GetPlayer()->GetSelection()) + if (!target || !m_session->GetPlayer()->GetSelection()) { SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); SetSentErrorMessage(true); return false; } - if( !target->isAlive() ) + if (!target->isAlive()) return true; char* damageStr = strtok((char*)args, " "); - if(!damageStr) + if (!damageStr) return false; - int32 damage = atoi((char*)damageStr); - if(damage <=0) + int32 damage_int = atoi((char*)damageStr); + if(damage_int <=0) return true; + uint32 damage = damage_int; + char* schoolStr = strtok((char*)NULL, " "); // flat melee damage without resistence/etc reduction - if(!schoolStr) + if (!schoolStr) { m_session->GetPlayer()->DealDamage(target, damage, NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - m_session->GetPlayer()->SendAttackStateUpdate (HITINFO_NORMALSWING2, target, 1, SPELL_SCHOOL_MASK_NORMAL, damage, 0, 0, VICTIMSTATE_NORMAL, 0); + if (target != m_session->GetPlayer()) + m_session->GetPlayer()->SendAttackStateUpdate (HITINFO_NORMALSWING2, target, 1, SPELL_SCHOOL_MASK_NORMAL, damage, 0, 0, VICTIMSTATE_NORMAL, 0); return true; } @@ -4006,7 +4067,7 @@ bool ChatHandler::HandleDamageCommand(const char * args) char* spellStr = strtok((char*)NULL, " "); // melee damage by specific school - if(!spellStr) + if (!spellStr) { uint32 absorb = 0; uint32 resist = 0; @@ -4018,6 +4079,7 @@ bool ChatHandler::HandleDamageCommand(const char * args) damage -= absorb + resist; + m_session->GetPlayer()->DealDamageMods(target,damage,&absorb); m_session->GetPlayer()->DealDamage(target, damage, NULL, DIRECT_DAMAGE, schoolmask, NULL, false); m_session->GetPlayer()->SendAttackStateUpdate (HITINFO_NORMALSWING2, target, 1, schoolmask, damage, absorb, resist, VICTIMSTATE_NORMAL, 0); return true; @@ -4027,7 +4089,7 @@ bool ChatHandler::HandleDamageCommand(const char * args) // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spellid = extractSpellIdFromLink((char*)args); - if(!spellid || !sSpellStore.LookupEntry(spellid)) + if (!spellid || !sSpellStore.LookupEntry(spellid)) return false; m_session->GetPlayer()->SpellNonMeleeDamageLog(target, spellid, damage); diff --git a/src/game/LootHandler.cpp b/src/game/LootHandler.cpp index f8e2a6cde15..172a6ef46c2 100644 --- a/src/game/LootHandler.cpp +++ b/src/game/LootHandler.cpp @@ -224,7 +224,7 @@ void WorldSession::HandleLootMoneyOpcode( WorldPacket & /*recv_data*/ ) Player* playerGroup = itr->getSource(); if(!playerGroup) continue; - if (player->GetDistance2d(playerGroup) < sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE)) + if (player->IsWithinDist(playerGroup,sWorld.getConfig(CONFIG_GROUP_XP_DISTANCE),false)) playersNear.push_back(playerGroup); } diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 3884f39f5a4..140904bfb19 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -120,7 +120,7 @@ void Map::LoadVMap(int gx,int gy) } } -void Map::LoadMap(int gx,int gy) +void Map::LoadMap(int gx,int gy, bool reload) { if( i_InstanceId != 0 ) { @@ -138,6 +138,9 @@ void Map::LoadMap(int gx,int gy) return; } + if(GridMaps[gx][gy] && !reload) + return; + //map already load, delete it before reloading (Is it necessary? Do we really need the ability the reload maps during runtime?) if(GridMaps[gx][gy]) { @@ -2503,7 +2506,7 @@ void InstanceMap::CreateInstanceData(bool load) { Field* fields = result->Fetch(); const char* data = fields[0].GetString(); - if(data) + if(data && data != "") { sLog.outDebug("Loading instance data for `%s` with id %u", objmgr.GetScriptName(i_script_id), i_InstanceId); i_data->Load(data); diff --git a/src/game/Map.h b/src/game/Map.h index d85eb459171..c69fe5f7345 100644 --- a/src/game/Map.h +++ b/src/game/Map.h @@ -23,9 +23,9 @@ #include "Platform/Define.h" #include "Policies/ThreadingModel.h" -#include "zthread/Lockable.h" -#include "zthread/Mutex.h" -#include "zthread/FairReadWriteLock.h" +#include "ace/RW_Thread_Mutex.h" +#include "ace/Thread_Mutex.h" + #include "DBCStructure.h" #include "GridDefines.h" #include "Cell.h" @@ -46,13 +46,8 @@ class WorldObject; class TempSummon; class CreatureGroup; -namespace ZThread -{ - class Lockable; - class ReadWriteLock; -} -typedef ZThread::FairReadWriteLock GridRWLock; +typedef ACE_RW_Thread_Mutex GridRWLock; template<class MUTEX, class LOCK_TYPE> struct RGuard @@ -68,9 +63,9 @@ struct WGuard Trinity::GeneralLock<LOCK_TYPE> i_lock; }; -typedef RGuard<GridRWLock, ZThread::Lockable> GridReadGuard; -typedef WGuard<GridRWLock, ZThread::Lockable> GridWriteGuard; -typedef Trinity::SingleThreaded<GridRWLock>::Lock NullGuard; +typedef RGuard<GridRWLock, ACE_Thread_Mutex> GridReadGuard; +typedef WGuard<GridRWLock, ACE_Thread_Mutex> GridWriteGuard; +typedef MaNGOS::SingleThreaded<GridRWLock>::Lock NullGuard; //****************************************** // Map file format defines @@ -251,7 +246,7 @@ typedef UNORDERED_MAP<Creature*, CreatureMover> CreatureMoveList; typedef std::map<uint32/*leaderDBGUID*/, CreatureGroup*> CreatureGroupHolderType; -class TRINITY_DLL_SPEC Map : public GridRefManager<NGridType>, public Trinity::ObjectLevelLockable<Map, ZThread::Mutex> +class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::ObjectLevelLockable<Map, ACE_Thread_Mutex> { friend class MapReference; public: @@ -426,7 +421,7 @@ class TRINITY_DLL_SPEC Map : public GridRefManager<NGridType>, public Trinity::O private: void LoadMapAndVMap(int gx, int gy); void LoadVMap(int gx, int gy); - void LoadMap(int gx,int gy); + void LoadMap(int gx,int gy, bool reload = false); GridMap *GetGrid(float x, float y); void SetTimer(uint32 t) { i_gridExpiry = t < MIN_GRID_DELAY ? MIN_GRID_DELAY : t; } @@ -466,7 +461,7 @@ class TRINITY_DLL_SPEC Map : public GridRefManager<NGridType>, public Trinity::O protected: void SetUnloadReferenceLock(const GridPair &p, bool on) { getNGrid(p.x_coord, p.y_coord)->setUnloadReferenceLock(on); } - typedef Trinity::ObjectLevelLockable<Map, ZThread::Mutex>::Lock Guard; + typedef MaNGOS::ObjectLevelLockable<Map, ACE_Thread_Mutex>::Lock Guard; MapEntry const* i_mapEntry; uint8 i_spawnMode; diff --git a/src/game/MapManager.cpp b/src/game/MapManager.cpp index 061e0252a13..d75ba22b19a 100644 --- a/src/game/MapManager.cpp +++ b/src/game/MapManager.cpp @@ -34,9 +34,9 @@ #include "ObjectMgr.h" #include "Language.h" -#define CLASS_LOCK Trinity::ClassLevelLockable<MapManager, ZThread::Mutex> +#define CLASS_LOCK MaNGOS::ClassLevelLockable<MapManager, ACE_Thread_Mutex> INSTANTIATE_SINGLETON_2(MapManager, CLASS_LOCK); -INSTANTIATE_CLASS_MUTEX(MapManager, ZThread::Mutex); +INSTANTIATE_CLASS_MUTEX(MapManager, ACE_Thread_Mutex); extern GridState* si_GridStates[]; // debugging code, should be deleted some day diff --git a/src/game/MapManager.h b/src/game/MapManager.h index 143248de162..b54c1cfbfa1 100644 --- a/src/game/MapManager.h +++ b/src/game/MapManager.h @@ -23,14 +23,14 @@ #include "Platform/Define.h" #include "Policies/Singleton.h" -#include "zthread/Mutex.h" +#include "ace/Thread_Mutex.h" #include "Common.h" #include "Map.h" #include "GridStates.h" class Transport; -class TRINITY_DLL_DECL MapManager : public Trinity::Singleton<MapManager, Trinity::ClassLevelLockable<MapManager, ZThread::Mutex> > +class MANGOS_DLL_DECL MapManager : public MaNGOS::Singleton<MapManager, MaNGOS::ClassLevelLockable<MapManager, ACE_Thread_Mutex> > { friend class Trinity::OperatorNew<MapManager>; @@ -149,7 +149,7 @@ class TRINITY_DLL_DECL MapManager : public Trinity::Singleton<MapManager, Trinit return (iter == i_maps.end() ? NULL : iter->second); } - typedef Trinity::ClassLevelLockable<MapManager, ZThread::Mutex>::Lock Guard; + typedef MaNGOS::ClassLevelLockable<MapManager, ACE_Thread_Mutex>::Lock Guard; uint32 i_gridCleanUpDelay; MapMapType i_maps; IntervalTimer i_timer; diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp index a75141e2937..f7c53e536c4 100644 --- a/src/game/MiscHandler.cpp +++ b/src/game/MiscHandler.cpp @@ -44,6 +44,7 @@ #include "Pet.h" #include "SocialMgr.h" #include "CellImpl.h" +#include "AccountMgr.h" #include "Vehicle.h" #include "CreatureAI.h" @@ -561,12 +562,13 @@ void WorldSession::HandleAddFriendOpcode( WorldPacket & recv_data ) sLog.outDebug( "WORLD: %s asked to add friend : '%s'", GetPlayer()->GetName(), friendName.c_str() ); - CharacterDatabase.AsyncPQuery(&WorldSession::HandleAddFriendOpcodeCallBack, GetAccountId(), friendNote, "SELECT guid, race FROM characters WHERE name = '%s'", friendName.c_str()); + CharacterDatabase.AsyncPQuery(&WorldSession::HandleAddFriendOpcodeCallBack, GetAccountId(), friendNote, "SELECT guid, race, account FROM characters WHERE name = '%s'", friendName.c_str()); } void WorldSession::HandleAddFriendOpcodeCallBack(QueryResult *result, uint32 accountId, std::string friendNote) { uint64 friendGuid; + uint64 friendAcctid; uint32 team; FriendsResult friendResult; @@ -582,30 +584,33 @@ void WorldSession::HandleAddFriendOpcodeCallBack(QueryResult *result, uint32 acc { friendGuid = MAKE_NEW_GUID((*result)[0].GetUInt32(), 0, HIGHGUID_PLAYER); team = Player::TeamForRace((*result)[1].GetUInt8()); + friendAcctid = (*result)[2].GetUInt32(); delete result; - if(friendGuid) + if ( session->GetSecurity() >= SEC_MODERATOR || sWorld.getConfig(CONFIG_ALLOW_GM_FRIEND) || accmgr.GetSecurity(friendAcctid) < SEC_MODERATOR) { - if(friendGuid==session->GetPlayer()->GetGUID()) - friendResult = FRIEND_SELF; - else if(session->GetPlayer()->GetTeam() != team && !sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND) && session->GetSecurity() < SEC_MODERATOR) - friendResult = FRIEND_ENEMY; - else if(session->GetPlayer()->GetSocial()->HasFriend(GUID_LOPART(friendGuid))) - friendResult = FRIEND_ALREADY; - else + if(friendGuid) { - Player* pFriend = ObjectAccessor::FindPlayer(friendGuid); - if( pFriend && pFriend->IsInWorld() && pFriend->IsVisibleGloballyFor(session->GetPlayer())) - friendResult = FRIEND_ADDED_ONLINE; + if(friendGuid==session->GetPlayer()->GetGUID()) + friendResult = FRIEND_SELF; + else if(session->GetPlayer()->GetTeam() != team && !sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND) && session->GetSecurity() < SEC_MODERATOR) + friendResult = FRIEND_ENEMY; + else if(session->GetPlayer()->GetSocial()->HasFriend(GUID_LOPART(friendGuid))) + friendResult = FRIEND_ALREADY; else - friendResult = FRIEND_ADDED_OFFLINE; - if(!session->GetPlayer()->GetSocial()->AddToSocialList(GUID_LOPART(friendGuid), false)) { - friendResult = FRIEND_LIST_FULL; - sLog.outDebug( "WORLD: %s's friend list is full.", session->GetPlayer()->GetName()); + Player* pFriend = ObjectAccessor::FindPlayer(friendGuid); + if( pFriend && pFriend->IsInWorld() && pFriend->IsVisibleGloballyFor(session->GetPlayer())) + friendResult = FRIEND_ADDED_ONLINE; + else + friendResult = FRIEND_ADDED_OFFLINE; + if(!session->GetPlayer()->GetSocial()->AddToSocialList(GUID_LOPART(friendGuid), false)) + { + friendResult = FRIEND_LIST_FULL; + sLog.outDebug( "WORLD: %s's friend list is full.", session->GetPlayer()->GetName()); + } } - session->GetPlayer()->GetSocial()->SetFriendNote(GUID_LOPART(friendGuid), friendNote); } } @@ -775,9 +780,7 @@ void WorldSession::HandleCorpseReclaimOpcode(WorldPacket &recv_data) if(corpse->GetGhostTime() + GetPlayer()->GetCorpseReclaimDelay(corpse->GetType()==CORPSE_RESURRECTABLE_PVP) > time(NULL)) return; - float dist = corpse->GetDistance2d(GetPlayer()); - sLog.outDebug("Corpse 2D Distance: \t%f",dist); - if (dist > CORPSE_RECLAIM_RADIUS) + if (!corpse->IsWithinDist(GetPlayer(),CORPSE_RECLAIM_RADIUS,false)) return; uint64 guid; diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp index b31d3231a3b..52b9ba56e3e 100644 --- a/src/game/MotionMaster.cpp +++ b/src/game/MotionMaster.cpp @@ -203,14 +203,7 @@ MotionMaster::MoveTargetedHome() Clear(false); - if(Unit *target = i_owner->GetCharmerOrOwner()) - { - DEBUG_LOG("Pet or controlled unit (Entry: %u GUID: %u) targeting home", - i_owner->GetEntry(), i_owner->GetGUIDLow() ); - - MoveFollow(target, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE, MOTION_SLOT_IDLE); - } - else if(i_owner->GetTypeId() == TYPEID_UNIT) + if(i_owner->GetTypeId() == TYPEID_UNIT) { DEBUG_LOG("Creature (Entry: %u GUID: %u) targeted home", i_owner->GetEntry(), i_owner->GetGUIDLow()); Mutate(new HomeMovementGenerator<Creature>(), MOTION_SLOT_ACTIVE); @@ -218,7 +211,6 @@ MotionMaster::MoveTargetedHome() else { sLog.outError("Player (GUID: %u) attempt targeted home", i_owner->GetGUIDLow() ); - return; } } diff --git a/src/game/NullCreatureAI.h b/src/game/NullCreatureAI.h index d5c12d8c9a0..347f52228b4 100644 --- a/src/game/NullCreatureAI.h +++ b/src/game/NullCreatureAI.h @@ -22,40 +22,47 @@ #define TRINITY_NULLCREATUREAI_H #include "CreatureAI.h" +#include "CreatureAIImpl.h" class TRINITY_DLL_DECL PassiveAI : public CreatureAI { public: explicit PassiveAI(Creature *c) : CreatureAI(c) {} - ~PassiveAI() {} void MoveInLineOfSight(Unit *) {} void AttackStart(Unit *) {} - void UpdateAI(const uint32); + static int Permissible(const Creature *) { return PERMIT_BASE_IDLE; } }; -class TRINITY_DLL_DECL PossessedAI : public PassiveAI +class TRINITY_DLL_DECL PossessedAI : public CreatureAI { public: - explicit PossessedAI(Creature *c) : PassiveAI(c) {} + explicit PossessedAI(Creature *c) : CreatureAI(c) {} + void MoveInLineOfSight(Unit *) {} void AttackStart(Unit *target); void UpdateAI(const uint32); void EnterEvadeMode() {} void JustDied(Unit*); void KilledUnit(Unit* victim); + + static int Permissible(const Creature *) { return PERMIT_BASE_IDLE; } }; -class TRINITY_DLL_DECL NullCreatureAI : public PassiveAI +class TRINITY_DLL_DECL NullCreatureAI : public CreatureAI { public: - explicit NullCreatureAI(Creature *c) : PassiveAI(c) {} + explicit NullCreatureAI(Creature *c) : CreatureAI(c) {} + void MoveInLineOfSight(Unit *) {} + void AttackStart(Unit *) {} void UpdateAI(const uint32) {} void EnterEvadeMode() {} + + static int Permissible(const Creature *) { return PERMIT_BASE_IDLE; } }; class TRINITY_DLL_DECL CritterAI : public PassiveAI diff --git a/src/game/Object.cpp b/src/game/Object.cpp index f649164e21b..5c186921524 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1148,7 +1148,6 @@ InstanceData* WorldObject::GetInstanceData() Map *map = GetMap(); return map->IsDungeon() ? ((InstanceMap*)map)->GetInstanceData() : NULL; } - //slow float WorldObject::GetDistance(const WorldObject* obj) const { @@ -1176,7 +1175,7 @@ float WorldObject::GetExactDistance2d(const float x, const float y) const return sqrt((dx*dx) + (dy*dy)); } -float WorldObject::GetDistance(const float x, const float y, const float z) const +float WorldObject::GetDistance(float x, float y, float z) const { float dx = GetPositionX() - x; float dy = GetPositionY() - y; @@ -1194,6 +1193,14 @@ float WorldObject::GetDistanceSq(const float &x, const float &y, const float &z) return dx*dx + dy*dy + dz*dz; } +float WorldObject::GetDistanceSq(const WorldObject *obj) const +{ + float dx = GetPositionX() - obj->GetPositionX(); + float dy = GetPositionY() - obj->GetPositionY(); + float dz = GetPositionZ() - obj->GetPositionZ(); + return dx*dx + dy*dy + dz*dz; +} + float WorldObject::GetDistance2d(const WorldObject* obj) const { float dx = GetPositionX() - obj->GetPositionX(); @@ -1211,10 +1218,33 @@ float WorldObject::GetDistanceZ(const WorldObject* obj) const return ( dist > 0 ? dist : 0); } -bool WorldObject::IsWithinDistInMap(const WorldObject* obj, const float dist2compare, const bool is3D) const +bool WorldObject::IsWithinDist3d(float x, float y, float z, float dist2compare) const { - if (!obj || !IsInMap(obj)) return false; + float dx = GetPositionX() - x; + float dy = GetPositionY() - y; + float dz = GetPositionZ() - z; + float distsq = dx*dx + dy*dy + dz*dz; + + float sizefactor = GetObjectSize(); + float maxdist = dist2compare + sizefactor; + + return distsq < maxdist * maxdist; +} + +bool WorldObject::IsWithinDist2d(float x, float y, float dist2compare) const +{ + float dx = GetPositionX() - x; + float dy = GetPositionY() - y; + float distsq = dx*dx + dy*dy; + + float sizefactor = GetObjectSize(); + float maxdist = dist2compare + sizefactor; + return distsq < maxdist * maxdist; +} + +bool WorldObject::_IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D) const +{ float dx = GetPositionX() - obj->GetPositionX(); float dy = GetPositionY() - obj->GetPositionY(); float distsq = dx*dx + dy*dy; @@ -1237,7 +1267,7 @@ bool WorldObject::IsWithinLOSInMap(const WorldObject* obj) const return(IsWithinLOS(ox, oy, oz )); } -bool WorldObject::IsWithinLOS(const float ox, const float oy, const float oz ) const +bool WorldObject::IsWithinLOS(float ox, float oy, float oz) const { float x,y,z; GetPosition(x,y,z); @@ -1245,6 +1275,83 @@ bool WorldObject::IsWithinLOS(const float ox, const float oy, const float oz ) c return vMapManager->isInLineOfSight(GetMapId(), x, y, z+2.0f, ox, oy, oz+2.0f); } +bool WorldObject::GetDistanceOrder(WorldObject const* obj1, WorldObject const* obj2, bool is3D /* = true */) const +{ + float dx1 = GetPositionX() - obj1->GetPositionX(); + float dy1 = GetPositionY() - obj1->GetPositionY(); + float distsq1 = dx1*dx1 + dy1*dy1; + if(is3D) + { + float dz1 = GetPositionZ() - obj1->GetPositionZ(); + distsq1 += dz1*dz1; + } + + float dx2 = GetPositionX() - obj2->GetPositionX(); + float dy2 = GetPositionY() - obj2->GetPositionY(); + float distsq2 = dx2*dx2 + dy2*dy2; + if(is3D) + { + float dz2 = GetPositionZ() - obj2->GetPositionZ(); + distsq2 += dz2*dz2; + } + + return distsq1 < distsq2; +} + +bool WorldObject::IsInRange(WorldObject const* obj, float minRange, float maxRange, bool is3D /* = true */) const +{ + float dx = GetPositionX() - obj->GetPositionX(); + float dy = GetPositionY() - obj->GetPositionY(); + float distsq = dx*dx + dy*dy; + if(is3D) + { + float dz = GetPositionZ() - obj->GetPositionZ(); + distsq += dz*dz; + } + + float sizefactor = GetObjectSize() + obj->GetObjectSize(); + + float mindist = minRange + sizefactor; + if(distsq < mindist * mindist) + return false; + + float maxdist = maxRange + sizefactor; + return distsq < maxdist * maxdist; +} + +bool WorldObject::IsInRange2d(float x, float y, float minRange, float maxRange) const +{ + float dx = GetPositionX() - x; + float dy = GetPositionY() - y; + float distsq = dx*dx + dy*dy; + + float sizefactor = GetObjectSize(); + + float mindist = minRange + sizefactor; + if(distsq < mindist * mindist) + return false; + + float maxdist = maxRange + sizefactor; + return distsq < maxdist * maxdist; +} + +bool WorldObject::IsInRange3d(float x, float y, float z, float minRange, float maxRange) const +{ + float dx = GetPositionX() - x; + float dy = GetPositionY() - y; + float dz = GetPositionZ() - z; + float distsq = dx*dx + dy*dy + dz*dz; + + float sizefactor = GetObjectSize(); + + float mindist = minRange + sizefactor; + if(distsq < mindist * mindist) + return false; + + float maxdist = maxRange + sizefactor; + return distsq < maxdist * maxdist; +} + float WorldObject::GetAngle(const WorldObject* obj) const { if(!obj) return 0; @@ -1309,6 +1416,21 @@ bool WorldObject::HasInArc(const float arcangle, const WorldObject* obj) const return (( angle >= lborder ) && ( angle <= rborder )); } +bool WorldObject::IsInBetween(const WorldObject *obj1, const WorldObject *obj2, float size) const +{ + if(GetPositionX() > std::max(obj1->GetPositionX(), obj2->GetPositionX()) + || GetPositionX() < std::min(obj1->GetPositionX(), obj2->GetPositionX()) + || GetPositionY() > std::max(obj1->GetPositionY(), obj2->GetPositionY()) + || GetPositionY() < std::min(obj1->GetPositionY(), obj2->GetPositionY())) + return false; + + if(!size) + size = GetObjectSize() / 2; + + float angle = obj1->GetAngle(this) - obj1->GetAngle(obj2); + return abs(sin(angle)) * GetExactDistance2d(obj1->GetPositionX(), obj1->GetPositionY()) < size; +} + void WorldObject::GetRandomPoint( float x, float y, float z, float distance, float &rand_x, float &rand_y, float &rand_z) const { if(distance==0) @@ -1658,6 +1780,8 @@ TempSummon *Map::SummonCreature(uint32 entry, float x, float y, float z, float a return NULL; } + summon->SetHomePosition(x, y, z, angle); + summon->InitStats(duration); Add((Creature*)summon); summon->InitSummon(); @@ -1680,7 +1804,6 @@ TempSummon* WorldObject::SummonCreature(uint32 entry, float x, float y, float z, if(!pCreature) return NULL; - pCreature->SetHomePosition(x, y, z, ang); pCreature->SetTempSummonType(spwtype); return pCreature; @@ -1890,6 +2013,81 @@ Creature* WorldObject::SummonTrigger(float x, float y, float z, float ang, uint3 return summon; } +/* +namespace MaNGOS +{ + class NearUsedPosDo + { + public: + NearUsedPosDo(WorldObject const& obj, WorldObject const* searcher, float angle, ObjectPosSelector& selector) + : i_object(obj), i_searcher(searcher), i_angle(angle), i_selector(selector) {} + + void operator()(Corpse*) const {} + void operator()(DynamicObject*) const {} + + void operator()(Creature* c) const + { + // skip self or target + if(c==i_searcher || c==&i_object) + return; + + float x,y,z; + + if( !c->isAlive() || c->hasUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED | UNIT_STAT_DISTRACTED) || + !c->GetMotionMaster()->GetDestination(x,y,z) ) + { + x = c->GetPositionX(); + y = c->GetPositionY(); + } + + add(c,x,y); + } + + template<class T> + void operator()(T* u) const + { + // skip self or target + if(u==i_searcher || u==&i_object) + return; + + float x,y; + + x = u->GetPositionX(); + y = u->GetPositionY(); + + add(u,x,y); + } + + // we must add used pos that can fill places around center + void add(WorldObject* u, float x, float y) const + { + // u is too nearest/far away to i_object + if(!i_object.IsInRange2d(x,y,i_selector.m_dist - i_selector.m_size,i_selector.m_dist + i_selector.m_size)) + return; + + float angle = i_object.GetAngle(u)-i_angle; + + // move angle to range -pi ... +pi + while( angle > M_PI) + angle -= 2.0f * M_PI; + while(angle < -M_PI) + angle += 2.0f * M_PI; + + // dist include size of u + float dist2d = i_object.GetDistance2d(x,y); + i_selector.AddUsedPos(u->GetObjectSize(),angle,dist2d + i_object.GetObjectSize()); + } + private: + WorldObject const& i_object; + WorldObject const* i_searcher; + float i_angle; + ObjectPosSelector& i_selector; + }; +} // namespace MaNGOS +*/ + +//=================================================================================================== + void WorldObject::GetNearPoint2D(float &x, float &y, float distance2d, float absAngle ) const { x = GetPositionX() + (GetObjectSize() + distance2d) * cos(absAngle); @@ -1902,10 +2100,127 @@ void WorldObject::GetNearPoint2D(float &x, float &y, float distance2d, float abs void WorldObject::GetNearPoint(WorldObject const* searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle ) const { GetNearPoint2D(x,y,distance2d+searcher_size,absAngle); - z = GetPositionZ(); - UpdateGroundPositionZ(x,y,z); + + /* + // if detection disabled, return first point + if(!sWorld.getConfig(CONFIG_DETECT_POS_COLLISION)) + { + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + return; + } + + // or remember first point + float first_x = x; + float first_y = y; + bool first_los_conflict = false; // first point LOS problems + + // prepare selector for work + ObjectPosSelector selector(GetPositionX(),GetPositionY(),GetObjectSize(),distance2d+searcher_size); + + // adding used positions around object + { + CellPair p(MaNGOS::ComputeCellPair(GetPositionX(), GetPositionY())); + Cell cell(p); + cell.data.Part.reserved = ALL_DISTRICT; + cell.SetNoCreate(); + + MaNGOS::NearUsedPosDo u_do(*this,searcher,absAngle,selector); + MaNGOS::WorldObjectWorker<MaNGOS::NearUsedPosDo> worker(this,u_do); + + TypeContainerVisitor<MaNGOS::WorldObjectWorker<MaNGOS::NearUsedPosDo>, GridTypeMapContainer > grid_obj_worker(worker); + TypeContainerVisitor<MaNGOS::WorldObjectWorker<MaNGOS::NearUsedPosDo>, WorldTypeMapContainer > world_obj_worker(worker); + + CellLock<GridReadGuard> cell_lock(cell, p); + cell_lock->Visit(cell_lock, grid_obj_worker, *GetMap()); + cell_lock->Visit(cell_lock, world_obj_worker, *GetMap()); + } + + // maybe can just place in primary position + if( selector.CheckOriginal() ) + { + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + + if(IsWithinLOS(x,y,z)) + return; + + first_los_conflict = true; // first point have LOS problems + } + + float angle; // candidate of angle for free pos + + // special case when one from list empty and then empty side preferred + if(selector.FirstAngle(angle)) + { + GetNearPoint2D(x,y,distance2d,absAngle+angle); + z = GetPositionZ(); + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + + if(IsWithinLOS(x,y,z)) + return; + } + + // set first used pos in lists + selector.InitializeAngle(); + + // select in positions after current nodes (selection one by one) + while(selector.NextAngle(angle)) // angle for free pos + { + GetNearPoint2D(x,y,distance2d,absAngle+angle); + z = GetPositionZ(); + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + + if(IsWithinLOS(x,y,z)) + return; + } + + // BAD NEWS: not free pos (or used or have LOS problems) + // Attempt find _used_ pos without LOS problem + + if(!first_los_conflict) + { + x = first_x; + y = first_y; + + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + return; + } + + // special case when one from list empty and then empty side preferred + if( selector.IsNonBalanced() ) + { + if(!selector.FirstAngle(angle)) // _used_ pos + { + GetNearPoint2D(x,y,distance2d,absAngle+angle); + z = GetPositionZ(); + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + + if(IsWithinLOS(x,y,z)) + return; + } + } + + // set first used pos in lists + selector.InitializeAngle(); + + // select in positions after current nodes (selection one by one) + while(selector.NextUsedAngle(angle)) // angle for used pos but maybe without LOS problem + { + GetNearPoint2D(x,y,distance2d,absAngle+angle); + z = GetPositionZ(); + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + + if(IsWithinLOS(x,y,z)) + return; + } + + // BAD BAD NEWS: all found pos (free and used) have LOS problem :( + x = first_x; + y = first_y; + + UpdateGroundPositionZ(x,y,z); // update to LOS height if available + */ } void WorldObject::GetGroundPoint(float &x, float &y, float &z, float dist, float angle) diff --git a/src/game/Object.h b/src/game/Object.h index 68438c4df85..326b09cfb73 100644 --- a/src/game/Object.h +++ b/src/game/Object.h @@ -461,10 +461,11 @@ class TRINITY_DLL_SPEC WorldObject : public Object virtual const char* GetNameForLocaleIdx(int32 /*locale_idx*/) const { return GetName(); } float GetDistance( const WorldObject* obj ) const; - float GetDistance(const float x, const float y, const float z) const; + float GetDistance(float x, float y, float z) const; float GetDistanceSq(const float &x, const float &y, const float &z) const; + float GetDistanceSq(const WorldObject *obj) const; float GetDistance2d(const WorldObject* obj) const; - float GetDistance2d(const float x, const float y) const; + float GetDistance2d(float x, float y) const; float GetExactDistance2d(const float x, const float y) const; float GetDistanceZ(const WorldObject* obj) const; bool IsInMap(const WorldObject* obj) const @@ -472,14 +473,30 @@ class TRINITY_DLL_SPEC WorldObject : public Object return IsInWorld() && obj->IsInWorld() && GetMapId()==obj->GetMapId() && GetInstanceId()==obj->GetInstanceId() && InSamePhase(obj); } - bool IsWithinDistInMap(const WorldObject* obj, const float dist2compare, const bool is3D = true) const; - bool IsWithinLOS(const float x, const float y, const float z ) const; + bool IsWithinDist3d(float x, float y, float z, float dist2compare) const; + bool IsWithinDist2d(float x, float y, float dist2compare) const; + bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D) const; + bool IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D = true) const + // use only if you will sure about placing both object at same map + { + return obj && _IsWithinDist(obj,dist2compare,is3D); + } + bool IsWithinDistInMap(WorldObject const* obj, float dist2compare, bool is3D = true) const + { + return obj && IsInMap(obj) && _IsWithinDist(obj,dist2compare,is3D); + } + bool IsWithinLOS(float x, float y, float z) const; bool IsWithinLOSInMap(const WorldObject* obj) const; + bool GetDistanceOrder(WorldObject const* obj1, WorldObject const* obj2, bool is3D = true) const; + bool IsInRange(WorldObject const* obj, float minRange, float maxRange, bool is3D = true) const; + bool IsInRange2d(float x, float y, float minRange, float maxRange) const; + bool IsInRange3d(float x, float y, float z, float minRange, float maxRange) const; float GetAngle( const WorldObject* obj ) const; float GetAngle( const float x, const float y ) const; void GetSinCos(const float x, const float y, float &vsin, float &vcos); bool HasInArc( const float arcangle, const WorldObject* obj ) const; + bool IsInBetween(const WorldObject *obj1, const WorldObject *obj2, float size = 0) const; virtual void SendMessageToSet(WorldPacket *data, bool self, bool to_possessor = true); virtual void SendMessageToSetInRange(WorldPacket *data, float dist, bool self, bool to_possessor = true); diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp index 1fa0bd6d1ca..da6279e068a 100644 --- a/src/game/ObjectAccessor.cpp +++ b/src/game/ObjectAccessor.cpp @@ -41,9 +41,9 @@ #include <cmath> -#define CLASS_LOCK Trinity::ClassLevelLockable<ObjectAccessor, ZThread::FastMutex> +#define CLASS_LOCK MaNGOS::ClassLevelLockable<ObjectAccessor, ACE_Thread_Mutex> INSTANTIATE_SINGLETON_2(ObjectAccessor, CLASS_LOCK); -INSTANTIATE_CLASS_MUTEX(ObjectAccessor, ZThread::FastMutex); +INSTANTIATE_CLASS_MUTEX(ObjectAccessor, ACE_Thread_Mutex); ObjectAccessor::ObjectAccessor() {} ObjectAccessor::~ObjectAccessor() {} @@ -470,7 +470,7 @@ ObjectAccessor::UpdateObjectVisibility(WorldObject *obj) /// Define the static member of HashMapHolder template <class T> UNORDERED_MAP< uint64, T* > HashMapHolder<T>::m_objectMap; -template <class T> ZThread::FastMutex HashMapHolder<T>::i_lock; +template <class T> ACE_Thread_Mutex HashMapHolder<T>::i_lock; /// Global definitions for the hashmap storage diff --git a/src/game/ObjectAccessor.h b/src/game/ObjectAccessor.h index dd8e02b81ab..f4452b81cab 100644 --- a/src/game/ObjectAccessor.h +++ b/src/game/ObjectAccessor.h @@ -23,7 +23,7 @@ #include "Platform/Define.h" #include "Policies/Singleton.h" -#include "zthread/FastMutex.h" +#include <ace/Thread_Mutex.h> #include "Utilities/UnorderedMap.h" #include "Policies/ThreadingModel.h" @@ -51,8 +51,8 @@ class HashMapHolder public: typedef UNORDERED_MAP< uint64, T* > MapType; - typedef ZThread::FastMutex LockType; - typedef Trinity::GeneralLock<LockType > Guard; + typedef ACE_Thread_Mutex LockType; + typedef MaNGOS::GeneralLock<LockType > Guard; static void Insert(T* o) { m_objectMap[o->GetGUID()] = o; } @@ -80,7 +80,7 @@ class HashMapHolder static MapType m_objectMap; }; -class TRINITY_DLL_DECL ObjectAccessor : public Trinity::Singleton<ObjectAccessor, Trinity::ClassLevelLockable<ObjectAccessor, ZThread::FastMutex> > +class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor, MaNGOS::ClassLevelLockable<ObjectAccessor, ACE_Thread_Mutex> > { friend class Trinity::OperatorNew<ObjectAccessor>; @@ -228,8 +228,8 @@ class TRINITY_DLL_DECL ObjectAccessor : public Trinity::Singleton<ObjectAccessor friend struct WorldObjectChangeAccumulator; Player2CorpsesMapType i_player2corpse; - typedef ZThread::FastMutex LockType; - typedef Trinity::GeneralLock<LockType > Guard; + typedef ACE_Thread_Mutex LockType; + typedef MaNGOS::GeneralLock<LockType > Guard; static void _buildChangeObjectForPlayer(WorldObject *, UpdateDataMapType &); static void _buildPacket(Player *, Object *, UpdateDataMapType &); diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 12fb26f0ad8..a448a73f1dc 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -4837,7 +4837,7 @@ void ObjectMgr::GetTaxiPath( uint32 source, uint32 destination, uint32 &path, ui path = dest_i->second.ID; } -uint16 ObjectMgr::GetTaxiMount( uint32 id, uint32 team ) +uint16 ObjectMgr::GetTaxiMount( uint32 id, uint32 team, bool allowed_alt_team /* = false */) { uint16 mount_entry = 0; uint16 mount_id = 0; @@ -4848,6 +4848,9 @@ uint16 ObjectMgr::GetTaxiMount( uint32 id, uint32 team ) if (team == ALLIANCE) { mount_entry = node->MountCreatureID[1]; + if(!mount_entry && allowed_alt_team) + mount_entry = node->MountCreatureID[0]; + CreatureInfo const *ci = GetCreatureTemplate(mount_entry); if(ci) mount_id = ci->Modelid_A1; @@ -4855,6 +4858,10 @@ uint16 ObjectMgr::GetTaxiMount( uint32 id, uint32 team ) if (team == HORDE) { mount_entry = node->MountCreatureID[0]; + + if(!mount_entry && allowed_alt_team) + mount_entry = node->MountCreatureID[1]; + CreatureInfo const *ci = GetCreatureTemplate(mount_entry); if(ci) mount_id = ci->Modelid_H1; diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index eff1f3812a1..3fe373f6a34 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -418,7 +418,7 @@ class ObjectMgr uint32 GetNearestTaxiNode( float x, float y, float z, uint32 mapid, uint32 team ); void GetTaxiPath( uint32 source, uint32 destination, uint32 &path, uint32 &cost); - uint16 GetTaxiMount( uint32 id, uint32 team ); + uint16 GetTaxiMount( uint32 id, uint32 team, bool allowed_alt_team = false); void GetTaxiPathNodes( uint32 path, Path &pathnodes, std::vector<uint32>& mapIds ); void GetTransportPathNodes( uint32 path, TransportPath &pathnodes ); diff --git a/src/game/OutdoorPvPEP.cpp b/src/game/OutdoorPvPEP.cpp index f0ff85574c0..fc688314e0c 100644 --- a/src/game/OutdoorPvPEP.cpp +++ b/src/game/OutdoorPvPEP.cpp @@ -768,7 +768,7 @@ bool OutdoorPvPObjectiveEP_PWT::HandleGossipOption(Player *plr, uint64 guid, uin nodes[1] = dst; plr->PlayerTalkClass->CloseGossip(); - plr->ActivateTaxiPathTo(nodes, 0, cr); + plr->ActivateTaxiPathTo(nodes, cr); // leave the opvp, seems like moveinlineofsight isn't called when entering a taxi HandlePlayerLeave(plr); } diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index e846f7004c0..7edc9144bdc 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -190,10 +190,7 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool return true; } - if (getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && cinfo->type == CREATURE_TYPE_DEMON && owner->getClass() == CLASS_WARLOCK)) - m_charmInfo->SetPetNumber(pet_number, true); - else - m_charmInfo->SetPetNumber(pet_number, false); + m_charmInfo->SetPetNumber(pet_number, IsPermanentPetFor(owner)); // set current pet as current // 0=current @@ -1685,6 +1682,27 @@ void Pet::ToggleAutocast(uint32 spellid, bool apply) } } +bool Pet::IsPermanentPetFor(Player* owner) +{ + switch(getPetType()) + { + case SUMMON_PET: + switch(owner->getClass()) + { + case CLASS_WARLOCK: + return GetCreatureInfo()->type == CREATURE_TYPE_DEMON; + case CLASS_DEATH_KNIGHT: + return GetCreatureInfo()->type == CREATURE_TYPE_UNDEAD; + default: + return false; + } + case HUNTER_PET: + return true; + default: + return false; + } +} + bool Pet::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry, uint32 pet_number) { SetMapId(map->GetId()); @@ -1735,10 +1753,10 @@ void Pet::LearnPetPassives() void Pet::CastPetAuras(bool current) { Unit* owner = GetOwner(); - if(!owner) + if(!owner || owner->GetTypeId()!=TYPEID_PLAYER) return; - if(getPetType() != HUNTER_PET && (getPetType() != SUMMON_PET || owner->getClass() != CLASS_WARLOCK)) + if(!IsPermanentPetFor((Player*)owner)) return; for(PetAuraSet::const_iterator itr = owner->m_petAuras.begin(); itr != owner->m_petAuras.end();) diff --git a/src/game/Pet.h b/src/game/Pet.h index 90414a321de..b76b53ab554 100644 --- a/src/game/Pet.h +++ b/src/game/Pet.h @@ -121,11 +121,13 @@ typedef std::vector<uint32> AutoSpellList; #define ACTIVE_SPELLS_MAX 4 -#define OWNER_MAX_DISTANCE 100 +#define OWNER_MAX_DISTANCE 100.0f #define PET_FOLLOW_DIST 1 #define PET_FOLLOW_ANGLE (M_PI/2) +class Player; + class Pet : public Guardian { public: @@ -140,6 +142,8 @@ class Pet : public Guardian bool isControlled() const { return getPetType()==SUMMON_PET || getPetType()==HUNTER_PET; } bool isTemporarySummoned() const { return m_duration > 0; } + bool IsPermanentPetFor(Player* owner); // pet have tab in character windows and set UNIT_FIELD_PETNUMBER + bool Create (uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry, uint32 pet_number); bool CreateBaseAtCreature(Creature* creature); bool LoadPetFromDB( Player* owner,uint32 petentry = 0,uint32 petnumber = 0, bool current = false ); diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 42d0093510b..bfbe8ca7df4 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -89,10 +89,6 @@ void WorldSession::HandlePetActionHelper(Unit *pet, uint64 guid1, uint16 spellid switch(flag) { case ACT_COMMAND: //0x0700 - // Possessed or shared vision pets are only able to attack - if ((pet->isPossessed() || pet->HasAuraType(SPELL_AURA_BIND_SIGHT)) && spellid != COMMAND_ATTACK) - return; - switch(spellid) { case COMMAND_STAY: //flat=1792 //STAY @@ -162,10 +158,7 @@ void WorldSession::HandlePetActionHelper(Unit *pet, uint64 guid1, uint16 spellid } case COMMAND_ABANDON: // abandon (hunter pet) or dismiss (summoned pet) if(pet->GetCharmerGUID() == GetPlayer()->GetGUID()) - { - if(GetPlayer()->m_seer != pet) - _player->StopCastingCharm(); - } + _player->StopCastingCharm(); else if(pet->GetOwnerGUID() == GetPlayer()->GetGUID()) { assert(pet->GetTypeId() == TYPEID_UNIT); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 494334466f4..a68002445bc 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -230,7 +230,7 @@ bool PlayerTaxi::LoadTaxiDestinationsFromString( const std::string& values, uint } // can't load taxi path without mount set (quest taxi path?) - if(!objmgr.GetTaxiMount(GetTaxiSource(),team)) + if(!objmgr.GetTaxiMount(GetTaxiSource(),team,true)) return false; return true; @@ -897,6 +897,8 @@ void Player::EnvironmentalDamage(EnviromentalDamage type, uint32 damage) damage-=absorb+resist; + DealDamageMods(this,damage,&absorb); + WorldPacket data(SMSG_ENVIRONMENTALDAMAGELOG, (21)); data << uint64(GetGUID()); data << uint8(type!=DAMAGE_FALL_TO_VOID ? type : DAMAGE_FALL); @@ -1490,7 +1492,12 @@ void Player::BuildEnumData( QueryResult * result, WorldPacket * p_data ) char_flags |= CHARACTER_FLAG_GHOST; if(HasAtLoginFlag(AT_LOGIN_RENAME)) char_flags |= CHARACTER_FLAG_RENAME; - if(sWorld.getConfig(CONFIG_DECLINED_NAMES_USED) && (fields[14].GetCppString() != "")) + if(sWorld.getConfig(CONFIG_DECLINED_NAMES_USED)) + { + if(!fields[14].GetCppString().empty()) + char_flags |= CHARACTER_FLAG_DECLINED; + } + else char_flags |= CHARACTER_FLAG_DECLINED; *p_data << uint32(char_flags); // character flags @@ -1505,7 +1512,7 @@ void Player::BuildEnumData( QueryResult * result, WorldPacket * p_data ) uint32 petFamily = 0; // show pet at selection character in character list only for non-ghost character - if(result && isAlive() && (pClass == CLASS_WARLOCK || pClass == CLASS_HUNTER)) + if (result && isAlive() && (pClass == CLASS_WARLOCK || pClass == CLASS_HUNTER || pClass == CLASS_DEATH_KNIGHT)) { uint32 entry = fields[10].GetUInt32(); CreatureInfo const* cInfo = sCreatureStorage.LookupEntry<CreatureInfo>(entry); @@ -1666,7 +1673,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati if (!(options & TELE_TO_NOT_UNSUMMON_PET)) { //same map, only remove pet if out of range for new position - if(pet && pet->GetDistance(x,y,z) >= OWNER_MAX_DISTANCE) + if(pet && !pet->IsWithinDist3d(x,y,z, OWNER_MAX_DISTANCE)) UnsummonPetTemporaryIfAny(); } @@ -1798,7 +1805,7 @@ void Player::AddToWorld() ///- The player should only be added when logging in Unit::AddToWorld(); - for(int i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; i++) + for(int i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i) { if(m_items[i]) m_items[i]->AddToWorld(); @@ -1815,7 +1822,7 @@ void Player::RemoveFromWorld() StopCastingBindSight(); } - for(int i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; i++) + for(int i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i) { if(m_items[i]) m_items[i]->RemoveFromWorld(); @@ -3287,6 +3294,20 @@ void Player::removeSpell(uint32 spell_id, bool disabled, bool update_action_bar_ } } + +void Player::RemoveSpellCooldown( uint32 spell_id, bool update /* = false */ ) +{ + m_spellCooldowns.erase(spell_id); + + if(update) + { + WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); + data << uint32(spell_id); + data << uint64(GetGUID()); + SendDirectMessage(&data); + } +} + void Player::RemoveArenaSpellCooldowns() { // remove cooldowns on spells that has < 15 min CD @@ -5729,23 +5750,26 @@ ReputationRank Player::GetReputationRank(uint32 faction) const } //Calculate total reputation percent player gain with quest/creature level -int32 Player::CalculateReputationGain(uint32 creatureOrQuestLevel, int32 rep, bool for_quest) +int32 Player::CalculateReputationGain(uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool for_quest) { float percent = 100.0f; float rate = for_quest ? sWorld.getRate(RATE_REPUTATION_LOWLEVEL_QUEST) : sWorld.getRate(RATE_REPUTATION_LOWLEVEL_KILL); - if(rate != 1.0f && creatureOrQuestLevel <= MaNGOS::XP::GetGrayLevel(getLevel())) + if (rate != 1.0f && creatureOrQuestLevel <= MaNGOS::XP::GetGrayLevel(getLevel())) percent *= rate; - int32 repMod = GetTotalAuraModifier(SPELL_AURA_MOD_REPUTATION_GAIN); + float repMod = GetTotalAuraModifier(SPELL_AURA_MOD_REPUTATION_GAIN); + + if (!for_quest) + repMod += GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_FACTION_REPUTATION_GAIN, faction); percent += rep > 0 ? repMod : -repMod; - if(percent <= 0.0f) + if (percent <= 0.0f) return 0; - return int32(sWorld.getRate(RATE_REPUTATION_GAIN)*rep*percent/100); + return int32(sWorld.getRate(RATE_REPUTATION_GAIN)*rep*percent/100.0f); } //Calculates how many reputation points player gains in victim's enemy factions @@ -5764,7 +5788,7 @@ void Player::RewardReputation(Unit *pVictim, float rate) if(Rep->repfaction1 && (!Rep->team_dependent || GetTeam()==ALLIANCE)) { - int32 donerep1 = CalculateReputationGain(pVictim->getLevel(),Rep->repvalue1,false); + int32 donerep1 = CalculateReputationGain(pVictim->getLevel(), Rep->repvalue1, Rep->repfaction1, false); donerep1 = int32(donerep1*rate); FactionEntry const *factionEntry1 = sFactionStore.LookupEntry(Rep->repfaction1); uint32 current_reputation_rank1 = GetReputationMgr().GetRank(factionEntry1); @@ -5782,7 +5806,7 @@ void Player::RewardReputation(Unit *pVictim, float rate) if(Rep->repfaction2 && (!Rep->team_dependent || GetTeam()==HORDE)) { - int32 donerep2 = CalculateReputationGain(pVictim->getLevel(),Rep->repvalue2,false); + int32 donerep2 = CalculateReputationGain(pVictim->getLevel(), Rep->repvalue2, Rep->repfaction2, false); donerep2 = int32(donerep2*rate); FactionEntry const *factionEntry2 = sFactionStore.LookupEntry(Rep->repfaction2); uint32 current_reputation_rank2 = GetReputationMgr().GetRank(factionEntry2); @@ -5807,7 +5831,7 @@ void Player::RewardReputation(Quest const *pQuest) { if(pQuest->RewRepFaction[i] && pQuest->RewRepValue[i] ) { - int32 rep = CalculateReputationGain(GetQuestLevel(pQuest),pQuest->RewRepValue[i],true); + int32 rep = CalculateReputationGain(GetQuestLevel(pQuest), pQuest->RewRepValue[i], pQuest->RewRepFaction[i], true); FactionEntry const* factionEntry = sFactionStore.LookupEntry(pQuest->RewRepFaction[i]); if(factionEntry) GetReputationMgr().ModifyReputation(factionEntry, rep); @@ -6425,8 +6449,8 @@ void Player::_ApplyItemMods(Item *item, uint8 slot,bool apply) if(slot >= INVENTORY_SLOT_BAG_END || !item) return; - // not apply/remove mods for broken item - if(item->IsBroken()) + // not apply mods for broken item + if(item->IsBroken() && apply) return; ItemPrototype const *proto = item->GetProto(); @@ -6464,30 +6488,25 @@ void Player::_ApplyItemBonuses(ItemPrototype const *proto, uint8 slot, bool appl if(slot >= INVENTORY_SLOT_BAG_END || !proto) return; + ScalingStatDistributionEntry const *ssd = proto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(proto->ScalingStatDistribution) : 0; + ScalingStatValuesEntry const *ssv = proto->ScalingStatValue ? sScalingStatValuesStore.LookupEntry(getLevel()) : 0; + for (int i = 0; i < MAX_ITEM_PROTO_STATS; ++i) { uint32 statType = 0; - int32 val = 0; - - if(proto->ScalingStatDistribution) + int32 val = 0; + // If set ScalingStatDistribution need get stats and values from it + if (ssd && ssv) { - if(ScalingStatDistributionEntry const *ssd = sScalingStatDistributionStore.LookupEntry(proto->ScalingStatDistribution)) - { - statType = ssd->StatMod[i]; - - if(uint32 modifier = ssd->Modifier[i]) - { - uint32 level = ((getLevel() > ssd->MaxLevel) ? ssd->MaxLevel : getLevel()); - if(ScalingStatValuesEntry const *ssv = sScalingStatValuesStore.LookupEntry(level)) - { - uint32 multiplier = ssv->Multiplier[proto->GetScalingStatValuesColumn()]; - val = (multiplier * modifier) / 10000; - } - } - } + if (ssd->StatMod[i] < 0) + continue; + statType = ssd->StatMod[i]; + val = (ssv->getssdMultiplier(proto->ScalingStatValue) * ssd->Modifier[i]) / 10000; } else { + if (i >= proto->StatsCount) + continue; statType = proto->ItemStat[i].ItemStatType; val = proto->ItemStat[i].ItemStatValue; } @@ -6642,8 +6661,18 @@ void Player::_ApplyItemBonuses(ItemPrototype const *proto, uint8 slot, bool appl } } - if (proto->Armor) - HandleStatModifier(UNIT_MOD_ARMOR, BASE_VALUE, float(proto->Armor), apply); + // If set ScalingStatValue armor get it or use item armor + uint32 armor = proto->Armor; + if (ssv) + { + if (uint32 ssvarmor = ssv->getArmorMod(proto->ScalingStatValue)) + armor = ssvarmor; + } + // Add armor bonus from ArmorDamageModifier if > 0 + if (proto->ArmorDamageModifier > 0) + armor+=proto->ArmorDamageModifier; + if (armor) + HandleStatModifier(UNIT_MOD_ARMOR, BASE_VALUE, float(armor), apply); if (proto->Block) HandleBaseModValue(SHIELD_BLOCK_VALUE, FLAT_MOD, float(proto->Block), apply); @@ -6680,23 +6709,42 @@ void Player::_ApplyItemBonuses(ItemPrototype const *proto, uint8 slot, bool appl attType = OFF_ATTACK; } - if (proto->Damage[0].DamageMin > 0 ) + float minDamage = proto->Damage[0].DamageMin; + float maxDamage = proto->Damage[0].DamageMax; + int32 extraDPS = 0; + // If set dpsMod in ScalingStatValue use it for min (70% from average), max (130% from average) damage + if (ssv) + { + if (extraDPS = ssv->getDPSMod(proto->ScalingStatValue)) + { + float average = extraDPS * proto->Delay / 1000.0f; + minDamage = 0.7f * average; + maxDamage = 1.3f * average; + } + } + if (minDamage > 0 ) { - damage = apply ? proto->Damage[0].DamageMin : BASE_MINDAMAGE; + damage = apply ? minDamage : BASE_MINDAMAGE; SetBaseWeaponDamage(attType, MINDAMAGE, damage); //sLog.outError("applying mindam: assigning %f to weapon mindamage, now is: %f", damage, GetWeaponDamageRange(attType, MINDAMAGE)); } - if (proto->Damage[0].DamageMax > 0 ) + if (maxDamage > 0 ) { - damage = apply ? proto->Damage[0].DamageMax : BASE_MAXDAMAGE; + damage = apply ? maxDamage : BASE_MAXDAMAGE; SetBaseWeaponDamage(attType, MAXDAMAGE, damage); } - // Druids get feral AP bonus from weapon dps + // Apply feral bonus from ScalingStatValue if set + if (ssv) + { + if (int32 feral_bonus = ssv->getFeralBonus(proto->ScalingStatValue)) + ApplyFeralAPBonus(feral_bonus, apply); + } + // Druids get feral AP bonus from weapon dps (lso use DPS from ScalingStatValue) if(getClass() == CLASS_DRUID) { - int32 feral_bonus = proto->getFeralBonus(); + int32 feral_bonus = proto->getFeralBonus(extraDPS); if (feral_bonus > 0) ApplyFeralAPBonus(feral_bonus, apply); } @@ -9825,18 +9873,22 @@ uint8 Player::CanEquipItem( uint8 slot, uint16 &dest, Item *pItem, bool swap, bo return EQUIP_ERR_CANT_DO_RIGHT_NOW; } + ScalingStatDistributionEntry const *ssd = pProto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(pProto->ScalingStatDistribution) : 0; + if (ssd && ssd->MaxLevel < getLevel()) + return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; + uint8 eslot = FindEquipSlot( pProto, slot, swap ); - if( eslot == NULL_SLOT ) + if (eslot == NULL_SLOT) return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; - uint8 msg = CanUseItem( pItem , not_loading ); - if( msg != EQUIP_ERR_OK ) + uint8 msg = CanUseItem(pItem , not_loading); + if (msg != EQUIP_ERR_OK) return msg; - if( !swap && GetItemByPos( INVENTORY_SLOT_BAG_0, eslot ) ) + if (!swap && GetItemByPos(INVENTORY_SLOT_BAG_0, eslot)) return EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE; // if swap ignore item (equipped also) - if(uint8 res2 = CanEquipUniqueItem(pItem, swap ? eslot : NULL_SLOT)) + if (uint8 res2 = CanEquipUniqueItem(pItem, swap ? eslot : NULL_SLOT)) return res2; // check unique-equipped special item classes @@ -9844,16 +9896,16 @@ uint8 Player::CanEquipItem( uint8 slot, uint16 &dest, Item *pItem, bool swap, bo { for(int i = INVENTORY_SLOT_BAG_START; i < INVENTORY_SLOT_BAG_END; ++i) { - if( Item* pBag = GetItemByPos( INVENTORY_SLOT_BAG_0, i ) ) + if (Item* pBag = GetItemByPos(INVENTORY_SLOT_BAG_0, i)) { - if( ItemPrototype const* pBagProto = pBag->GetProto() ) + if (pBag != pItem) { - if( pBagProto->Class==pProto->Class && (!swap || pBag->GetSlot() != eslot ) ) + if (ItemPrototype const* pBagProto = pBag->GetProto()) { - if(pBagProto->SubClass == ITEM_SUBCLASS_AMMO_POUCH) - return EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH; - else - return EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER; + if (pBagProto->Class==pProto->Class && (!swap || pBag->GetSlot() != eslot)) + return (pBagProto->SubClass == ITEM_SUBCLASS_AMMO_POUCH) + ? EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH + : EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER; } } } @@ -9862,25 +9914,25 @@ uint8 Player::CanEquipItem( uint8 slot, uint16 &dest, Item *pItem, bool swap, bo uint32 type = pProto->InventoryType; - if(eslot == EQUIPMENT_SLOT_OFFHAND) + if (eslot == EQUIPMENT_SLOT_OFFHAND) { if (type == INVTYPE_WEAPON || type == INVTYPE_WEAPONOFFHAND) { - if(!CanDualWield()) + if (!CanDualWield()) return EQUIP_ERR_CANT_DUAL_WIELD; } else if (type == INVTYPE_2HWEAPON) { - if(!CanDualWield() || !CanTitanGrip()) + if (!CanDualWield() || !CanTitanGrip()) return EQUIP_ERR_CANT_DUAL_WIELD; } - if(IsTwoHandUsed()) + if (IsTwoHandUsed()) return EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED; } // equip two-hand weapon case (with possible unequip 2 items) - if( type == INVTYPE_2HWEAPON ) + if (type == INVTYPE_2HWEAPON) { if (eslot == EQUIPMENT_SLOT_OFFHAND) { @@ -9895,9 +9947,9 @@ uint8 Player::CanEquipItem( uint8 slot, uint16 &dest, Item *pItem, bool swap, bo // offhand item must can be stored in inventory for offhand item and it also must be unequipped Item *offItem = GetItemByPos( INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND ); ItemPosCountVec off_dest; - if( offItem && (!not_loading || + if (offItem && (!not_loading || CanUnequipItem(uint16(INVENTORY_SLOT_BAG_0) << 8 | EQUIPMENT_SLOT_OFFHAND,false) != EQUIP_ERR_OK || - CanStoreItem( NULL_BAG, NULL_SLOT, off_dest, offItem, false ) != EQUIP_ERR_OK ) ) + CanStoreItem( NULL_BAG, NULL_SLOT, off_dest, offItem, false ) != EQUIP_ERR_OK )) return swap ? EQUIP_ERR_ITEMS_CANT_BE_SWAPPED : EQUIP_ERR_INVENTORY_FULL; } } @@ -9905,10 +9957,8 @@ uint8 Player::CanEquipItem( uint8 slot, uint16 &dest, Item *pItem, bool swap, bo return EQUIP_ERR_OK; } } - if( !swap ) - return EQUIP_ERR_ITEM_NOT_FOUND; - else - return EQUIP_ERR_ITEMS_CANT_BE_SWAPPED; + + return !swap ? EQUIP_ERR_ITEM_NOT_FOUND : EQUIP_ERR_ITEMS_CANT_BE_SWAPPED; } uint8 Player::CanUnequipItem( uint16 pos, bool swap ) const @@ -10127,38 +10177,49 @@ uint8 Player::CanBankItem( uint8 bag, uint8 slot, ItemPosCountVec &dest, Item *p uint8 Player::CanUseItem( Item *pItem, bool not_loading ) const { - if( pItem ) + if (pItem) { sLog.outDebug( "STORAGE: CanUseItem item = %u", pItem->GetEntry()); - if( !isAlive() && not_loading ) + + if (!isAlive() && not_loading) return EQUIP_ERR_YOU_ARE_DEAD; - //if( isStunned() ) + + //if (isStunned()) // return EQUIP_ERR_YOU_ARE_STUNNED; + ItemPrototype const *pProto = pItem->GetProto(); - if( pProto ) + if (pProto) { - if( pItem->IsBindedNotWith(GetGUID()) ) + if (pItem->IsBindedNotWith(GetGUID())) return EQUIP_ERR_DONT_OWN_THAT_ITEM; - if( (pProto->AllowableClass & getClassMask()) == 0 || (pProto->AllowableRace & getRaceMask()) == 0 ) + + if ((pProto->AllowableClass & getClassMask()) == 0 || (pProto->AllowableRace & getRaceMask()) == 0) return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM; - if( pItem->GetSkill() != 0 ) + + if (pItem->GetSkill() != 0) { - if( GetSkillValue( pItem->GetSkill() ) == 0 ) + if (GetSkillValue( pItem->GetSkill() ) == 0) return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; } - if( pProto->RequiredSkill != 0 ) + + if (pProto->RequiredSkill != 0) { - if( GetSkillValue( pProto->RequiredSkill ) == 0 ) + if (GetSkillValue( pProto->RequiredSkill ) == 0) return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; - else if( GetSkillValue( pProto->RequiredSkill ) < pProto->RequiredSkillRank ) + + if (GetSkillValue( pProto->RequiredSkill ) < pProto->RequiredSkillRank) return EQUIP_ERR_ERR_CANT_EQUIP_SKILL; } - if( pProto->RequiredSpell != 0 && !HasSpell( pProto->RequiredSpell ) ) + + if (pProto->RequiredSpell != 0 && !HasSpell(pProto->RequiredSpell)) return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; - if( pProto->RequiredReputationFaction && uint32(GetReputationRank(pProto->RequiredReputationFaction)) < pProto->RequiredReputationRank ) + + if (pProto->RequiredReputationFaction && uint32(GetReputationRank(pProto->RequiredReputationFaction)) < pProto->RequiredReputationRank) return EQUIP_ERR_CANT_EQUIP_REPUTATION; - if( getLevel() < pProto->RequiredLevel ) + + if (getLevel() < pProto->RequiredLevel) return EQUIP_ERR_CANT_EQUIP_LEVEL_I; + return EQUIP_ERR_OK; } } @@ -16712,7 +16773,7 @@ void Player::PetSpellInitialize() uint8 addlist = 0; data << uint8(addlist); // placeholder - if(pet->isControlled() && ((pet->getPetType() == HUNTER_PET) || ((pet->GetCreatureInfo()->type == CREATURE_TYPE_DEMON) && (getClass() == CLASS_WARLOCK)))) + if (pet->IsPermanentPetFor(this)) { // spells loop for (PetSpellMap::iterator itr = pet->m_spells.begin(); itr != pet->m_spells.end(); ++itr) @@ -17114,43 +17175,68 @@ void Player::HandleStealthedUnitsDetection() } } -bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, uint32 mount_id, Creature* npc) +bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc /*= NULL*/, uint32 spellid /*= 0*/) { if(nodes.size() < 2) return false; - // not let cheating with start flight mounted - if(IsMounted()) + // not let cheating with start flight in time of logout process || if casting not finished || while in combat || if not use Spell's with EffectSendTaxi + if(GetSession()->isLogingOut() || isInCombat()) { WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); - data << uint32(ERR_TAXIPLAYERALREADYMOUNTED); + data << uint32(ERR_TAXIPLAYERBUSY); GetSession()->SendPacket(&data); return false; } - if( m_ShapeShiftFormSpellId && m_form != FORM_BATTLESTANCE && m_form != FORM_BERSERKERSTANCE && m_form != FORM_DEFENSIVESTANCE && m_form != FORM_SHADOW ) - { - WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); - data << uint32(ERR_TAXIPLAYERSHAPESHIFTED); - GetSession()->SendPacket(&data); + if(HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE)) return false; - } - // not let cheating with start flight in time of logout process || if casting not finished || while in combat || if not use Spell's with EffectSendTaxi - if(GetSession()->isLogingOut() || - (!m_currentSpells[CURRENT_GENERIC_SPELL] || - m_currentSpells[CURRENT_GENERIC_SPELL]->m_spellInfo->Effect[0] != SPELL_EFFECT_SEND_TAXI)&& - IsNonMeleeSpellCasted(false) || - isInCombat()) + // taximaster case + if(npc) { - WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); - data << uint32(ERR_TAXIPLAYERBUSY); - GetSession()->SendPacket(&data); - return false; + // not let cheating with start flight mounted + if(IsMounted()) + { + WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); + data << uint32(ERR_TAXIPLAYERALREADYMOUNTED); + GetSession()->SendPacket(&data); + return false; + } + + if( m_ShapeShiftFormSpellId && m_form != FORM_BATTLESTANCE && m_form != FORM_BERSERKERSTANCE && m_form != FORM_DEFENSIVESTANCE && m_form != FORM_SHADOW ) + { + WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); + data << uint32(ERR_TAXIPLAYERSHAPESHIFTED); + GetSession()->SendPacket(&data); + return false; + } + + // not let cheating with start flight in time of logout process || if casting not finished || while in combat || if not use Spell's with EffectSendTaxi + if(IsNonMeleeSpellCasted(false)) + { + WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); + data << uint32(ERR_TAXIPLAYERBUSY); + GetSession()->SendPacket(&data); + return false; + } } + // cast case or scripted call case + else + { + RemoveAurasByType(SPELL_AURA_MOUNTED); - if(HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE)) - return false; + if( m_ShapeShiftFormSpellId && m_form != FORM_BATTLESTANCE && m_form != FORM_BERSERKERSTANCE && m_form != FORM_DEFENSIVESTANCE && m_form != FORM_SHADOW ) + RemoveAurasDueToSpell(m_ShapeShiftFormSpellId); + + if(m_currentSpells[CURRENT_GENERIC_SPELL] && m_currentSpells[CURRENT_GENERIC_SPELL]->m_spellInfo->Id != spellid) + InterruptSpell(CURRENT_GENERIC_SPELL,false); + + InterruptSpell(CURRENT_AUTOREPEAT_SPELL,false); + + if(m_currentSpells[CURRENT_CHANNELED_SPELL] && m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo->Id != spellid) + InterruptSpell(CURRENT_CHANNELED_SPELL,true); + } uint32 sourcenode = nodes[0]; @@ -17179,8 +17265,8 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, uint32 mount_i return false; } } - // node must have pos if not spell case (npc!=0) - else if(npc) + // node must have pos if taxi master case (npc != NULL) + else if (npc) { WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); data << uint32(ERR_TAXIUNSPECIFIEDSERVERERROR); @@ -17232,10 +17318,11 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, uint32 mount_i prevnode = lastnode; } - if(!mount_id) // if not provide then attempt use default. - mount_id = objmgr.GetTaxiMount(sourcenode, GetTeam()); + // get mount model (in case non taximaster (npc==NULL) allow more wide lookup) + uint16 mount_id = objmgr.GetTaxiMount(sourcenode, GetTeam(), npc == NULL); - if (mount_id == 0 || sourcepath == 0) + // in spell case allow 0 model + if (mount_id == 0 && spellid == 0 || sourcepath == 0) { WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); data << uint32(ERR_TAXIUNSPECIFIEDSERVERERROR); @@ -17277,6 +17364,21 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, uint32 mount_i return true; } +bool Player::ActivateTaxiPathTo( uint32 taxi_path_id, uint32 spellid /*= 0*/ ) +{ + TaxiPathEntry const* entry = sTaxiPathStore.LookupEntry(taxi_path_id); + if(!entry) + return false; + + std::vector<uint32> nodes; + + nodes.resize(2); + nodes[0] = entry->from; + nodes[1] = entry->to; + + return ActivateTaxiPathTo(nodes,NULL,spellid); +} + void Player::ProhibitSpellScholl(SpellSchoolMask idSchoolMask, uint32 unTimeMs ) { // last check 2.0.10 @@ -20509,12 +20611,14 @@ void Player::ResummonPetTemporaryUnSummonedIfAny() bool Player::canSeeSpellClickOn(Creature const *c) const { - SpellClickInfoMap const& map = objmgr.mSpellClickInfoMap; - if(map.empty()) + SpellClickInfoMap::const_iterator lower = objmgr.mSpellClickInfoMap.lower_bound(c->GetEntry()); + SpellClickInfoMap::const_iterator upper = objmgr.mSpellClickInfoMap.upper_bound(c->GetEntry()); + if(lower == upper) return true; - for(SpellClickInfoMap::const_iterator itr = map.lower_bound(c->GetEntry()); itr != map.upper_bound(c->GetEntry()); ++itr) + for(SpellClickInfoMap::const_iterator itr = lower; itr != upper; ++itr) { + sLog.outError("%u %u %u %u", (uint32)itr->second.castFlags, itr->second.questId, itr->second.spellId); if(itr->second.questId == 0 || GetQuestStatus(itr->second.questId) == QUEST_STATUS_INCOMPLETE) return true; } diff --git a/src/game/Player.h b/src/game/Player.h index ecab25122bf..0223364cce0 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -867,7 +867,8 @@ class TRINITY_DLL_SPEC Player : public Unit PlayerTaxi m_taxi; void InitTaxiNodesForLevel() { m_taxi.InitTaxiNodesForLevel(getRace(), getClass(), getLevel()); } - bool ActivateTaxiPathTo(std::vector<uint32> const& nodes, uint32 mount_id = 0 , Creature* npc = NULL); + bool ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc = NULL, uint32 spellid = 0); + bool ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid = 0); // mount_id can be used in scripting calls bool isAcceptWhispers() const { return m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS; } void SetAcceptWhispers(bool on) { if(on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; } @@ -1383,7 +1384,7 @@ class TRINITY_DLL_SPEC Player : public Unit void AddSpellCooldown(uint32 spell_id, uint32 itemid, time_t end_time); void SendCooldownEvent(SpellEntry const *spellInfo, uint32 itemId = 0, Spell* spell = NULL); void ProhibitSpellScholl(SpellSchoolMask idSchoolMask, uint32 unTimeMs ); - void RemoveSpellCooldown(uint32 spell_id) { m_spellCooldowns.erase(spell_id); } + void RemoveSpellCooldown(uint32 spell_id, bool update = false); void RemoveArenaSpellCooldowns(); void RemoveAllSpellCooldown(); void _LoadSpellCooldowns(QueryResult *result); @@ -1668,6 +1669,8 @@ class TRINITY_DLL_SPEC Player : public Unit //End of PvP System + inline SpellCooldowns GetSpellCooldowns() const { return m_spellCooldowns; } + void SetDrunkValue(uint16 newDrunkValue, uint32 itemid=0); uint16 GetDrunkValue() const { return m_drunk; } static DrunkenState GetDrunkenstateByValue(uint16 value); @@ -2151,7 +2154,6 @@ class TRINITY_DLL_SPEC Player : public Unit PlayerMails m_mail; PlayerSpellMap m_spells; - SpellCooldowns m_spellCooldowns; uint32 m_lastPotionId; // last used health/mana potion in combat, that block next potion use ActionButtonList m_actionButtons; @@ -2256,7 +2258,7 @@ class TRINITY_DLL_SPEC Player : public Unit Item* _StoreItem( uint16 pos, Item *pItem, uint32 count, bool clone, bool update ); void UpdateKnownCurrencies(uint32 itemId, bool apply); - int32 CalculateReputationGain(uint32 creatureOrQuestLevel, int32 rep, bool for_quest); + int32 CalculateReputationGain(uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool for_quest); void AdjustQuestReqItemCount( Quest const* pQuest, QuestStatusData& questStatusData ); GridReference<Player> m_gridRef; @@ -2284,6 +2286,8 @@ class TRINITY_DLL_SPEC Player : public Unit AchievementMgr m_achievementMgr; ReputationMgr m_reputationMgr; + + SpellCooldowns m_spellCooldowns; }; void AddItemsSetItem(Player*player,Item *item); diff --git a/src/game/PossessedAI.cpp b/src/game/PossessedAI.cpp deleted file mode 100644 index 8fd2e5ca014..00000000000 --- a/src/game/PossessedAI.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> - * - * Thanks to the original authors: MaNGOS <http://getmangos.com/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - diff --git a/src/game/PossessedAI.h b/src/game/PossessedAI.h deleted file mode 100644 index bef7853246e..00000000000 --- a/src/game/PossessedAI.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> - * - * Thanks to the original authors: MaNGOS <http://getmangos.com/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef MANGOS_POSSESSEDAI_H -#define MANGOS_POSSESSEDAI_H - - -#endif diff --git a/src/game/RandomMovementGenerator.cpp b/src/game/RandomMovementGenerator.cpp index 6d147f15b8d..93e10ad6115 100644 --- a/src/game/RandomMovementGenerator.cpp +++ b/src/game/RandomMovementGenerator.cpp @@ -58,6 +58,9 @@ RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature) bool is_water_ok = creature.canSwim(); bool is_air_ok = creature.canFly(); + for(uint32 i = 0;; ++i) + { + const float angle = rand_norm()*(M_PI*2); const float range = rand_norm()*wander_distance; const float distanceX = range * cos(angle); @@ -72,6 +75,12 @@ RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature) dist = (nx - X)*(nx - X) + (ny - Y)*(ny - Y); + if(i == 5) + { + nz = Z; + break; + } + if (is_air_ok) // 3D system above ground and above water (flying mode) { const float distanceZ = rand_norm() * sqrtf(dist)/2; // Limit height change @@ -79,12 +88,13 @@ RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature) float tz = map->GetHeight(nx, ny, nz-2.0f, false); // Map check only, vmap needed here but need to alter vmaps checks for height. float wz = map->GetWaterLevel(nx, ny); if (tz >= nz || wz >= nz) - return; // Problem here, we must fly above the ground and water, not under. Let's try on next tick + continue; // Problem here, we must fly above the ground and water, not under. Let's try on next tick } //else if (is_water_ok) // 3D system under water and above ground (swimming mode) else // 2D only { dist = dist>=100.0f ? 10.0f : sqrtf(dist); // 10.0 is the max that vmap high can check (MAX_CAN_FALL_DISTANCE) + // The fastest way to get an accurate result 90% of the time. // Better result can be obtained like 99% accuracy with a ray light, but the cost is too high and the code is too long. nz = map->GetHeight(nx,ny,Z+dist-2.0f,false); // Map check @@ -95,11 +105,14 @@ RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature) { nz = map->GetHeight(nx,ny,Z+dist-2.0f,true); // Vmap Higher if (fabs(nz-Z)>dist) - return; // let's forget this bad coords where a z cannot be find and retry at next tick + continue; // let's forget this bad coords where a z cannot be find and retry at next tick } } } + break; + } + Traveller<Creature> traveller(creature); creature.SetOrientation(creature.GetAngle(nx,ny)); i_destinationHolder.SetDestination(traveller, nx, ny, nz); @@ -130,7 +143,8 @@ RandomMovementGenerator<Creature>::Initialize(Creature &creature) if(!creature.isAlive()) return; - wander_distance = creature.GetRespawnRadius(); + if(!wander_distance) + wander_distance = creature.GetRespawnRadius(); if (creature.canFly()) creature.AddUnitMovementFlag(MOVEMENTFLAG_FLYING2); @@ -181,7 +195,7 @@ RandomMovementGenerator<Creature>::Update(Creature &creature, const uint32 &diff creature.SetUnitMovementFlags(irand(0,RUNNING_CHANCE_RANDOMMV) > 0 ? MOVEMENTFLAG_WALK_MODE : MOVEMENTFLAG_NONE); _setRandomLocation(creature); } - else if(creature.isPet() && creature.GetOwner() && creature.GetDistance(creature.GetOwner()) > PET_FOLLOW_DIST+2.5f) + else if(creature.isPet() && creature.GetOwner() && !creature.IsWithinDist(creature.GetOwner(),PET_FOLLOW_DIST+2.5f)) { creature.SetUnitMovementFlags(MOVEMENTFLAG_NONE); _setRandomLocation(creature); diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index cc8db7c30f8..a068815bb1c 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -24,9 +24,6 @@ #include "Platform/Define.h" #include <cassert> -#define MaNGOS Trinity -#define GetMangosString GetTrinityString - enum Gender { GENDER_MALE = 0, @@ -1109,9 +1106,10 @@ enum SpellHitType { SPELL_HIT_TYPE_UNK1 = 0x00001, SPELL_HIT_TYPE_CRIT = 0x00002, - SPELL_HIT_TYPE_UNK2 = 0x00004, - SPELL_HIT_TYPE_UNK3 = 0x00008, - SPELL_HIT_TYPE_UNK4 = 0x00020 + SPELL_HIT_TYPE_UNK3 = 0x00004, + SPELL_HIT_TYPE_UNK4 = 0x00008, + SPELL_HIT_TYPE_UNK5 = 0x00010, // replace caster? + SPELL_HIT_TYPE_UNK6 = 0x00020 }; enum SpellDmgClass @@ -1819,6 +1817,7 @@ enum CreatureType }; uint32 const CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD = (1 << (CREATURE_TYPE_HUMANOID-1)) | (1 << (CREATURE_TYPE_UNDEAD-1)); +uint32 const CREATURE_TYPEMASK_MECHANICAL_OR_ELEMENTAL = (1 << (CREATURE_TYPE_MECHANICAL-1)) | (1 << (CREATURE_TYPE_ELEMENTAL-1)); // CreatureFamily.dbc enum CreatureFamily diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 5934542f64f..2c778616d78 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -476,6 +476,35 @@ Spell::~Spell() delete m_spellValue; } +template<typename T> +WorldObject* Spell::FindCorpseUsing() +{ + // non-standard target selection + float max_range = GetSpellMaxRange(m_spellInfo, false); + + CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY())); + Cell cell(p); + cell.data.Part.reserved = ALL_DISTRICT; + cell.SetNoCreate(); + + WorldObject* result = NULL; + + T u_check(m_caster, max_range); + MaNGOS::WorldObjectSearcher<T> searcher(m_caster, result, u_check); + + TypeContainerVisitor<MaNGOS::WorldObjectSearcher<T>, GridTypeMapContainer > grid_searcher(searcher); + CellLock<GridReadGuard> cell_lock(cell, p); + cell_lock->Visit(cell_lock, grid_searcher, *m_caster->GetMap()); + + if (!result) + { + TypeContainerVisitor<MaNGOS::WorldObjectSearcher<T>, WorldTypeMapContainer > world_searcher(searcher); + cell_lock->Visit(cell_lock, world_searcher, *m_caster->GetMap()); + } + + return result; +} + void Spell::FillTargetMap() { for(uint32 i = 0; i < 3; ++i) @@ -535,17 +564,7 @@ void Spell::FillTargetMap() { case 20577: // Cannibalize { - // non-standard target selection - SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(m_spellInfo->rangeIndex); - float max_range = GetSpellMaxRangeForHostile(srange); - WorldObject* result = NULL; - - Trinity::CannibalizeObjectCheck u_check(m_caster, max_range); - Trinity::WorldObjectSearcher<Trinity::CannibalizeObjectCheck > searcher(m_caster, result, u_check); - m_caster->VisitNearbyGridObject(max_range, searcher); - if(!result) - m_caster->VisitNearbyWorldObject(max_range, searcher); - + WorldObject* result = FindCorpseUsing<MaNGOS::CannibalizeObjectCheck> (); if(result) { @@ -566,15 +585,7 @@ void Spell::FillTargetMap() { // clear cooldown at fail if(m_caster->GetTypeId()==TYPEID_PLAYER) - { - ((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id); - - WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); - data << uint32(m_spellInfo->Id); - data << uint64(m_caster->GetGUID()); - ((Player*)m_caster)->GetSession()->SendPacket(&data); - } - + ((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id,true); SendCastResult(SPELL_FAILED_NO_EDIBLE_CORPSES); finish(false); } @@ -598,6 +609,7 @@ void Spell::FillTargetMap() case SPELL_EFFECT_SELF_RESURRECT: case SPELL_EFFECT_REPUTATION: case SPELL_EFFECT_LEARN_SPELL: + case SPELL_EFFECT_SEND_TAXI: if(m_targets.getUnitTarget()) AddUnitTarget(m_targets.getUnitTarget(), i); // Triggered spells have additional spell targets - cast them even if no explicit unit target is given (required for spell 50516 for example) @@ -1027,6 +1039,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) // Add bonuses and fill damageInfo struct caster->CalculateSpellDamageTaken(&damageInfo, m_damage, m_spellInfo); + caster->DealDamageMods(damageInfo.target,damageInfo.damage,&damageInfo.absorb); // Send log damage message to client caster->SendSpellNonMeleeDamageLog(&damageInfo); @@ -1186,8 +1199,8 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask) if (aura_effmask) { - Unit * caster = m_originalCaster ? m_originalCaster : m_caster; - Aura * Aur= new Aura(m_spellInfo, aura_effmask, &m_currentBasePoints[0], unit, caster , m_CastItem, m_caster); + Unit * caster = m_originalCaster ? m_originalCaster : m_caster; + Aura * Aur = new Aura(m_spellInfo, aura_effmask, m_currentBasePoints, unit, caster, m_CastItem, m_caster); if (!Aur->IsAreaAura()) { @@ -1412,7 +1425,7 @@ struct TargetDistanceOrder : public std::binary_function<const Unit, const Unit, // functor for operator ">" bool operator()(const Unit* _Left, const Unit* _Right) const { - return (MainTarget->GetDistance(_Left) < MainTarget->GetDistance(_Right)); + return MainTarget->GetDistanceOrder(_Left,_Right); } }; @@ -1477,7 +1490,7 @@ void Spell::SearchChainTarget(std::list<Unit*> &TagUnitMap, float max_range, uin if(cur->GetDistance(*next) > CHAIN_SPELL_JUMP_RADIUS) break; while(m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE - && !m_caster->isInFront(*next, max_range) + && !m_caster->isInFrontInMap(*next, max_range) || !m_caster->canSeeOrDetect(*next, false) || !cur->IsWithinLOSInMap(*next)) { @@ -1595,6 +1608,8 @@ WorldObject* Spell::SearchNearbyTarget(float range, SpellTargets TargetType) break; } case SPELL_TARGET_TYPE_CREATURE: + if(m_targets.getUnitTarget() && m_targets.getUnitTarget()->GetEntry() == i_spellST->second.targetEntry) + return m_targets.getUnitTarget(); case SPELL_TARGET_TYPE_DEAD: default: { @@ -1752,15 +1767,15 @@ void Spell::SetTargetMap(uint32 i, uint32 cur) if(!target) return; - else if(target->GetTypeId() == TYPEID_UNIT) + else if(target->GetTypeId() == TYPEID_GAMEOBJECT) + AddGOTarget((GameObject*)target, i); + else { pushType = PUSH_CHAIN; - if(!m_targets.getUnitTarget()) + if(m_targets.getUnitTarget() != target) m_targets.setUnitTarget((Unit*)target); } - else if(target->GetTypeId() == TYPEID_GAMEOBJECT) - AddGOTarget((GameObject*)target, i); break; } @@ -1923,7 +1938,13 @@ void Spell::SetTargetMap(uint32 i, uint32 cur) m_targets.setDestination(st->target_X, st->target_Y, st->target_Z); } else - sLog.outError( "SPELL: unknown target coordinates for spell ID %u\n", m_spellInfo->Id ); + { + sLog.outError( "SPELL: unknown target coordinates for spell ID %u", m_spellInfo->Id ); + Unit *target = NULL; + if(uint64 guid = m_caster->GetUInt64Value(UNIT_FIELD_TARGET)) + target = ObjectAccessor::GetUnit(*m_caster, guid); + m_targets.setDestination(target ? target : m_caster); + } break; case TARGET_DST_HOME: if(m_caster->GetTypeId() == TYPEID_PLAYER) @@ -2043,7 +2064,7 @@ void Spell::SetTargetMap(uint32 i, uint32 cur) else if(pushType) { // Dummy, just for client - if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] == SPELL_REQUIRE_DEST) + if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] != SPELL_REQUIRE_UNIT) return; float radius; @@ -2225,9 +2246,20 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect* triggeredByAura if(!m_targets.getUnitTargetGUID() && m_spellInfo->Targets & TARGET_FLAG_UNIT) { - if(Unit *target = ObjectAccessor::GetUnit(*m_caster, m_caster->GetUInt64Value(UNIT_FIELD_TARGET))) - if(IsValidSingleTargetSpell(target)) - m_targets.setUnitTarget(target); + Unit *target = NULL; + if(m_caster->GetTypeId() == TYPEID_UNIT) + target = m_caster->getVictim(); + else + target = ObjectAccessor::GetUnit(*m_caster, ((Player*)m_caster)->GetSelection()); + + if(target && IsValidSingleTargetSpell(target)) + m_targets.setUnitTarget(target); + else + { + SendCastResult(SPELL_FAILED_BAD_TARGETS); + finish(false); + return; + } } m_spellState = SPELL_STATE_PREPARING; @@ -2835,8 +2867,7 @@ void Spell::finish(bool ok) m_caster->clearUnitState(UNIT_STAT_CASTING); // Unsummon summon as possessed creatures on spell cancel - if(IsChanneledSpell(m_spellInfo) - && m_caster->GetTypeId() == TYPEID_PLAYER) + if(IsChanneledSpell(m_spellInfo) && m_caster->GetTypeId() == TYPEID_PLAYER) { if (Unit * charm = m_caster->GetCharm()) for(int i = 0; i < 3; ++i) @@ -2854,7 +2885,12 @@ void Spell::finish(bool ok) } } } - else if (m_caster->GetTypeId()==TYPEID_UNIT && ((Creature*)m_caster)->isSummon()) + + // other code related only to successfully finished spells + if(!ok) + return; + + if (m_caster->GetTypeId()==TYPEID_UNIT && ((Creature*)m_caster)->isSummon()) { // Unsummon statue uint32 spell = m_caster->GetUInt32Value(UNIT_CREATED_BY_SPELL); @@ -2867,10 +2903,6 @@ void Spell::finish(bool ok) } } - // other code related only to successfully finished spells - if(!ok) - return; - //remove spell mods if (m_caster->GetTypeId() == TYPEID_PLAYER) ((Player*)m_caster)->RemoveSpellMods(this); @@ -3969,13 +4001,16 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_NOT_IN_ARENA; // zone check - uint32 zone, area; - m_caster->GetZoneAndAreaId(zone,area); + if(m_caster->GetTypeId() == TYPEID_UNIT || !((Player*)m_caster)->isGameMaster()) + { + uint32 zone, area; + m_caster->GetZoneAndAreaId(zone,area); - SpellCastResult locRes= spellmgr.GetSpellAllowedInLocationError(m_spellInfo,m_caster->GetMapId(),zone,area, - m_caster->GetTypeId()==TYPEID_PLAYER ? ((Player*)m_caster) : NULL); - if(locRes != SPELL_CAST_OK) - return locRes; + SpellCastResult locRes= spellmgr.GetSpellAllowedInLocationError(m_spellInfo,m_caster->GetMapId(),zone,area, + m_caster->GetTypeId()==TYPEID_PLAYER ? ((Player*)m_caster) : NULL); + if(locRes != SPELL_CAST_OK) + return locRes; + } // not let players cast spells at mount (and let do it to creatures) if( m_caster->IsMounted() && m_caster->GetTypeId()==TYPEID_PLAYER && !m_IsTriggeredSpell && @@ -4822,10 +4857,9 @@ SpellCastResult Spell::CheckRange(bool strict) if(m_targets.m_targetMask == TARGET_FLAG_DEST_LOCATION && m_targets.m_destX != 0 && m_targets.m_destY != 0 && m_targets.m_destZ != 0) { - float dist = m_caster->GetDistance(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ); - if(dist > max_range) + if(!m_caster->IsWithinDist3d(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ,max_range)) return SPELL_FAILED_OUT_OF_RANGE; - if(dist < min_range) + if(m_caster->IsWithinDist3d(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ,min_range)) return SPELL_FAILED_TOO_CLOSE; } diff --git a/src/game/Spell.h b/src/game/Spell.h index 6dc8477dcdb..694bcf11277 100644 --- a/src/game/Spell.h +++ b/src/game/Spell.h @@ -412,6 +412,8 @@ class Spell void SetTargetMap(uint32 i, uint32 cur); + template<typename T> WorldObject* FindCorpseUsing(); + bool CheckTarget( Unit* target, uint32 eff ); bool CanAutoCast(Unit* target); void CheckSrc() { if(!m_targets.HasSrc()) m_targets.setSrc(m_caster); } @@ -607,7 +609,7 @@ class Spell void SpellDamageWeaponDmg(uint32 i); void SpellDamageHeal(uint32 i); - void GetSummonPosition(float &x, float &y, float &z, float radius = 0.0f, uint32 count = 0); + void GetSummonPosition(uint32 i, float &x, float &y, float &z, float radius = 0.0f, uint32 count = 0); void SummonGuardian (uint32 entry, SummonPropertiesEntry const *properties); SpellCastResult CanOpenLock(uint32 effIndex, uint32 lockid, SkillType& skillid, int32& reqSkillValue, int32& skillValue); @@ -666,6 +668,10 @@ namespace Trinity { Unit *target = (Unit*)itr->getSource(); + // mostly phase check + if(!itr->getSource()->IsInMap(i_source)) + continue; + switch (i_TargetType) { case SPELL_TARGETS_ENEMY: @@ -706,11 +712,11 @@ namespace Trinity i_data->push_back(target); break; case PUSH_IN_FRONT: - if(i_source->isInFront(target, i_radius, M_PI/3)) + if(i_source->isInFrontInMap(target, i_radius, M_PI/3)) i_data->push_back(target); break; case PUSH_IN_BACK: - if(i_source->isInBack(target, i_radius, M_PI/3)) + if(i_source->isInBackInMap(target, i_radius, M_PI/3)) i_data->push_back(target); break; case PUSH_IN_LINE: diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index f7f13acc3f8..f7643747a21 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -196,7 +196,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &AuraEffect::HandleRangedAmmoHaste, //141 SPELL_AURA_MOD_RANGED_AMMO_HASTE &AuraEffect::HandleAuraModBaseResistancePCT, //142 SPELL_AURA_MOD_BASE_RESISTANCE_PCT &AuraEffect::HandleAuraModResistanceExclusive, //143 SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE - &AuraEffect::HandleNoImmediateEffect, //144 SPELL_AURA_SAFE_FALL implemented in WorldSession::HandleMovementOpcodes + &AuraEffect::HandleAuraSafeFall, //144 SPELL_AURA_SAFE_FALL implemented in WorldSession::HandleMovementOpcodes &AuraEffect::HandleAuraModPetTalentsPoints, //145 SPELL_AURA_MOD_PET_TALENT_POINTS &AuraEffect::HandleNoImmediateEffect, //146 SPELL_AURA_ALLOW_TAME_PET_TYPE &AuraEffect::HandleModStateImmunityMask, //147 SPELL_AURA_MECHANIC_IMMUNITY_MASK @@ -242,7 +242,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //187 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE implemented in Unit::GetUnitCriticalChance &AuraEffect::HandleNoImmediateEffect, //188 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE implemented in Unit::GetUnitCriticalChance &AuraEffect::HandleModRating, //189 SPELL_AURA_MOD_RATING - &AuraEffect::HandleNULL, //190 SPELL_AURA_MOD_FACTION_REPUTATION_GAIN + &AuraEffect::HandleNoImmediateEffect, //190 SPELL_AURA_MOD_FACTION_REPUTATION_GAIN implemented in Player::CalculateReputationGain &AuraEffect::HandleAuraModUseNormalSpeed, //191 SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED &AuraEffect::HandleModMeleeRangedSpeedPct, //192 SPELL_AURA_HASTE_MELEE &AuraEffect::HandleModCombatSpeedPct, //193 SPELL_AURA_MELEE_SLOW (in fact combat (any type attack) speed pct) @@ -721,28 +721,28 @@ void AreaAuraEffect::Update(uint32 diff) } } - for(std::list<Unit *>::iterator tIter = targets.begin(); tIter != targets.end(); tIter++) + for(std::list<Unit*>::iterator tIter = targets.begin(); tIter != targets.end(); tIter++) { - bool skip=false; - for(Unit::AuraMap::iterator iter = (*tIter)->GetAuras().begin(); iter != (*tIter)->GetAuras().end();++iter) + if(Aura *aur = (*tIter)->GetAura(GetId(), m_formalCasterGUID)) { - bool samecaster = iter->second->GetCasterGUID() == GetCasterGUID(); - if (samecaster && iter->first == GetId()) + if(aur->HasEffect(GetEffIndex())) + continue; + } + else + { + bool skip = false; + for(Unit::AuraMap::iterator iter = (*tIter)->GetAuras().begin(); iter != (*tIter)->GetAuras().end();++iter) { - if (AuraEffect * aurEff = iter->second->GetPartAura(m_effIndex)) + bool samecaster = iter->second->GetCasterGUID() == m_formalCasterGUID; + if(spellmgr.IsNoStackSpellDueToSpell(GetId(), iter->first, samecaster)) { - skip=true; + skip = true; + break; } - break; - } - if (spellmgr.IsNoStackSpellDueToSpell(GetId(), iter->first,samecaster)) - { - skip=true; - break; } + if(skip) + continue; } - if(skip) - continue; if(SpellEntry const *actualSpellInfo = spellmgr.SelectAuraRankForPlayerLevel(GetSpellProto(), (*tIter)->getLevel())) { @@ -750,7 +750,7 @@ void AreaAuraEffect::Update(uint32 diff) // recalculate basepoints for lower rank (all AreaAura spell not use custom basepoints?) //if(actualSpellInfo != GetSpellProto()) // actualBasePoints = actualSpellInfo->EffectBasePoints[m_effIndex]; - Aura * aur = (*tIter)->AddAuraEffect(actualSpellInfo->Id, GetEffIndex(), caster, &m_currentBasePoints); + (*tIter)->AddAuraEffect(actualSpellInfo, GetEffIndex(), caster, &m_currentBasePoints); if(m_areaAuraType == AREA_AURA_ENEMY) caster->CombatStart(*tIter); @@ -1000,7 +1000,7 @@ void Aura::_AddAura() for(std::vector<int32>::const_iterator itr = spell_triggered->begin(); itr != spell_triggered->end(); ++itr) { if(*itr < 0) - m_target->ApplySpellImmune(id, IMMUNITY_ID, -(*itr), m_target); + m_target->ApplySpellImmune(id, IMMUNITY_ID, -(*itr), true); else if(Unit* caster = GetCaster()) caster->AddAura(*itr, m_target); } @@ -2667,25 +2667,6 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real) } case SPELLFAMILY_HUNTER: { - // Improved Aspect of the Viper - if( GetId()==38390 && m_target->GetTypeId()==TYPEID_PLAYER ) - { - if(apply) - { - // + effect value for Aspect of the Viper - SpellModifier *mod = new SpellModifier; - mod->op = SPELLMOD_EFFECT1; - mod->value = m_amount; - mod->type = SPELLMOD_FLAT; - mod->spellId = GetId(); - mod->mask[1] = 0x40000; - - m_spellmod = mod; - } - - ((Player*)m_target)->AddSpellMod(m_spellmod, apply); - return; - } // Glyph of Aspect of the Monkey if(m_spellProto->Id==56833) { @@ -3880,25 +3861,11 @@ void AuraEffect::HandleAuraModSilence(bool apply, bool Real) if (m_target->m_currentSpells[i] && m_target->m_currentSpells[i]->m_spellInfo->PreventionType == SPELL_PREVENTION_TYPE_SILENCE) m_target->InterruptSpell(i,false); // Stop spells on prepare or casting state + /* switch (GetId()) { - // Arcane Torrent (Energy) - case 25046: - { - Unit * caster = GetCaster(); - if (!caster) - return; - - // Search Mana Tap auras on caster - AuraEffect * dummy = caster->GetDummyAura(28734); - if (dummy) - { - int32 bp = dummy->GetParentAura()->GetStackAmount() * 10; - caster->CastCustomSpell(caster, 25048, &bp, NULL, NULL, true); - m_target->RemoveAurasDueToSpell(28734); - } - } } + */ } else { @@ -5698,6 +5665,7 @@ void AuraEffect::PeriodicTick() if(!pCaster) return; + // Consecrate ticks can miss and will not show up in the combat log if( GetSpellProto()->Effect[GetEffIndex()]==SPELL_EFFECT_PERSISTENT_AREA_AURA && pCaster->SpellHitResult(m_target,GetSpellProto(),false)!=SPELL_MISS_NONE) return; @@ -5746,7 +5714,8 @@ void AuraEffect::PeriodicTick() } } m_amount = 100 * m_tickNumber; - }break; + break; + } default: break; } @@ -5800,6 +5769,8 @@ void AuraEffect::PeriodicTick() sLog.outDetail("PeriodicTick: %u (TypeId: %u) attacked %u (TypeId: %u) for %u dmg inflicted by %u abs is %u", GUID_LOPART(GetCasterGUID()), GuidHigh2TypeId(GUID_HIPART(GetCasterGUID())), m_target->GetGUIDLow(), m_target->GetTypeId(), pdamage, GetId(),absorb); + pCaster->DealDamageMods(m_target,pdamage,&absorb); + WorldPacket data(SMSG_PERIODICAURALOG, (21+16));// we guess size data.append(m_target->GetPackGUID()); data.appendPackGUID(GetCasterGUID()); @@ -5983,10 +5954,13 @@ void AuraEffect::PeriodicTick() } else { - pCaster->SendSpellNonMeleeDamageLog(pCaster, GetId(), gain, GetSpellSchoolMask(GetSpellProto()), 0, 0, false, 0, false); + uint32 damage = gain; + uint32 absorb = 0; + pCaster->DealDamageMods(pCaster,damage,&absorb); + pCaster->SendSpellNonMeleeDamageLog(pCaster, GetId(), damage, GetSpellSchoolMask(GetSpellProto()), absorb, 0, false, 0, false); CleanDamage cleanDamage = CleanDamage(0, BASE_ATTACK, MELEE_HIT_NORMAL ); - pCaster->DealDamage(pCaster, gain, &cleanDamage, NODAMAGE, GetSpellSchoolMask(GetSpellProto()), GetSpellProto(), true); + pCaster->DealDamage(pCaster, damage, &cleanDamage, NODAMAGE, GetSpellSchoolMask(GetSpellProto()), GetSpellProto(), true); } } @@ -6202,6 +6176,9 @@ void AuraEffect::PeriodicTick() SpellNonMeleeDamage damageInfo(pCaster, m_target, spellProto->Id, spellProto->SchoolMask); //no SpellDamageBonus for burn mana pCaster->CalculateSpellDamageTaken(&damageInfo, gain, spellProto); + + pCaster->DealDamageMods(damageInfo.target,damageInfo.damage,&damageInfo.absorb); + pCaster->SendSpellNonMeleeDamageLog(&damageInfo); // Set trigger flag @@ -6973,3 +6950,12 @@ void Aura::UnregisterSingleCastAura() m_isSingleTargetAura = false; } } + +void AuraEffect::HandleAuraSafeFall( bool Apply, bool Real ) +{ + // implemented in WorldSession::HandleMovementOpcodes + + // only special case + if(Apply && Real && GetId()==32474 && m_target->GetTypeId()==TYPEID_PLAYER) + ((Player*)m_target)->ActivateTaxiPathTo(506,GetId()); +} diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h index f0120596ce9..973272a75d2 100644 --- a/src/game/SpellAuras.h +++ b/src/game/SpellAuras.h @@ -217,6 +217,7 @@ class TRINITY_DLL_SPEC AuraEffect void HandlePeriodicTriggerSpellWithValue(bool apply, bool Real); void HandlePeriodicEnergize(bool Apply, bool Real); void HandleAuraModResistanceExclusive(bool Apply, bool Real); + void HandleAuraSafeFall(bool Apply, bool Real); void HandleAuraModPetTalentsPoints(bool Apply, bool Real); void HandleModStealth(bool Apply, bool Real); void HandleInvisibility(bool Apply, bool Real); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 14b012b6f73..330b0b9027b 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -286,8 +286,7 @@ void Spell::EffectInstaKill(uint32 /*i*/) if(m_caster==unitTarget) // prevent interrupt message finish(); - uint32 health = unitTarget->GetHealth(); - m_caster->DealDamage(unitTarget, health, NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + m_caster->DealDamage(unitTarget, unitTarget->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); } void Spell::EffectEnvirinmentalDMG(uint32 i) @@ -652,9 +651,9 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) else if(m_spellInfo->SpellFamilyFlags[1]&0x00040000) { // Add main hand dps * effect[2] amount - float averange = (m_caster->GetFloatValue(UNIT_FIELD_MINDAMAGE) + m_caster->GetFloatValue(UNIT_FIELD_MAXDAMAGE)) / 2; + float average = (m_caster->GetFloatValue(UNIT_FIELD_MINDAMAGE) + m_caster->GetFloatValue(UNIT_FIELD_MAXDAMAGE)) / 2; int32 count = m_caster->CalculateSpellDamage(m_spellInfo, 2, m_spellInfo->EffectBasePoints[2], unitTarget); - damage += count * int32(averange * IN_MILISECONDS) / m_caster->GetAttackTime(BASE_ATTACK); + damage += count * int32(average * IN_MILISECONDS) / m_caster->GetAttackTime(BASE_ATTACK); } // Shield of Righteousness else if(m_spellInfo->SpellFamilyFlags[1]&0x00100000) @@ -1012,17 +1011,6 @@ void Spell::EffectDummy(uint32 i) m_caster->CastSpell(unitTarget,29294,true); return; } - case 28730: // Arcane Torrent (Mana) - { - Aura * dummy = m_caster->GetAura(28734, m_caster->GetGUID()); - if (dummy) - { - int32 bp = damage * dummy->GetStackAmount(); - m_caster->CastCustomSpell(m_caster, 28733, &bp, NULL, NULL, true); - m_caster->RemoveAurasDueToSpell(28734); - } - return; - } case 29200: // Purify Helboar Meat { if( m_caster->GetTypeId() != TYPEID_PLAYER ) @@ -1324,12 +1312,7 @@ void Spell::EffectDummy(uint32 i) (GetSpellSchoolMask(spellInfo) & SPELL_SCHOOL_MASK_FROST) && spellInfo->Id != 11958 && GetSpellRecoveryTime(spellInfo) > 0 ) { - ((Player*)m_caster)->RemoveSpellCooldown(classspell); - - WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); - data << uint32(classspell); - data << uint64(m_caster->GetGUID()); - ((Player*)m_caster)->GetSession()->SendPacket(&data); + ((Player*)m_caster)->RemoveSpellCooldown(classspell,true); } } return; @@ -1367,24 +1350,29 @@ void Spell::EffectDummy(uint32 i) if(!unitTarget) return; - uint32 rage = m_caster->GetPower(POWER_RAGE); + uint32 rage=0; // Glyph of Execution bonus if (AuraEffect *aura = m_caster->GetDummyAura(58367)) rage+=aura->GetAmount(); spell_id = 20647; - bp = damage+int32(rage * m_spellInfo->DmgMultiplier[i] + - m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f); // Sudden death cost modifier if (Aura * aur = m_caster->GetAura(52437)) { + rage += m_powerCost; m_caster->ModifyPower(POWER_RAGE,- m_powerCost); if (m_caster->GetPower(POWER_RAGE)<100) m_caster->SetPower(POWER_RAGE,100); m_caster->RemoveAura(aur); } else + { + rage += m_caster->GetPower(POWER_RAGE); m_caster->SetPower(POWER_RAGE,0); + } + + bp = damage+int32(rage * m_spellInfo->DmgMultiplier[i] + + m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f); break; } // Slam @@ -1580,14 +1568,7 @@ void Spell::EffectDummy(uint32 i) SpellEntry const *spellInfo = sSpellStore.LookupEntry(classspell); if (spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE && (spellInfo->SpellFamilyFlags[1] & 0x00000240 || spellInfo->SpellFamilyFlags[0] & 0x00000860)) - { - ((Player*)m_caster)->RemoveSpellCooldown(classspell); - - WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); - data << uint32(classspell); - data << uint64(m_caster->GetGUID()); - ((Player*)m_caster)->GetSession()->SendPacket(&data); - } + ((Player*)m_caster)->RemoveSpellCooldown(classspell,true); } return; } @@ -1614,14 +1595,7 @@ void Spell::EffectDummy(uint32 i) SpellEntry const *spellInfo = sSpellStore.LookupEntry(classspell); if (spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && spellInfo->Id != 23989 && GetSpellRecoveryTime(spellInfo) > 0 ) - { - ((Player*)m_caster)->RemoveSpellCooldown(classspell); - - WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); - data << uint32(classspell); - data << uint64(m_caster->GetGUID()); - ((Player*)m_caster)->GetSession()->SendPacket(&data); - } + ((Player*)m_caster)->RemoveSpellCooldown(classspell,true); } return; } @@ -1716,17 +1690,8 @@ void Spell::EffectDummy(uint32 i) // non-standard cast requirement check if (!unitTarget || unitTarget->getAttackers().empty()) { - // clear cooldown at fail if(m_caster->GetTypeId()==TYPEID_PLAYER) - { - ((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id); - - WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); - data << uint32(m_spellInfo->Id); - data << uint64(m_caster->GetGUID()); - ((Player*)m_caster)->GetSession()->SendPacket(&data); - } - + ((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id,true); SendCastResult(SPELL_FAILED_TARGET_AFFECTING_COMBAT); return; } @@ -3230,7 +3195,7 @@ void Spell::EffectSummonType(uint32 i) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_DURATION, duration); float x, y, z; - GetSummonPosition(x, y, z); + GetSummonPosition(i, x, y, z); /*//totem must be at same Z in case swimming caster and etc. if( fabs( z - m_caster->GetPositionZ() ) > 5 ) @@ -3315,7 +3280,7 @@ void Spell::EffectSummonType(uint32 i) summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - summon->GetMotionMaster()->MoveTargetedHome(); + summon->AI()->EnterEvadeMode(); std::string name = m_originalCaster->GetName(); name.append(petTypeSuffix[3]); @@ -3331,7 +3296,7 @@ void Spell::EffectSummonType(uint32 i) for(int32 count = 0; count < amount; ++count) { float px, py, pz; - GetSummonPosition(px, py, pz, radius, count); + GetSummonPosition(i, px, py, pz, radius, count); TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN; @@ -4776,17 +4741,17 @@ void Spell::EffectScriptEffect(uint32 effIndex) unitTarget->CastSpell(unitTarget, 44870, true); break; } - // spell of Brutallus - Stomp - case 45185: - { - if(!unitTarget) - return; - - if(unitTarget->HasAura(46394)) // spell of Brutallus - Burn - unitTarget->RemoveAurasDueToSpell(46394); + // spell of Brutallus - Stomp + case 45185: + { + if(!unitTarget) + return; - break; - } + if(unitTarget->HasAura(46394)) // spell of Brutallus - Burn + unitTarget->RemoveAurasDueToSpell(46394); + + break; + } // Negative Energy case 46289: { @@ -5891,47 +5856,7 @@ void Spell::EffectSendTaxi(uint32 i) if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) return; - TaxiPathEntry const* entry = sTaxiPathStore.LookupEntry(m_spellInfo->EffectMiscValue[i]); - if(!entry) - return; - - std::vector<uint32> nodes; - - nodes.resize(2); - nodes[0] = entry->from; - nodes[1] = entry->to; - - uint32 mountid = 0; - switch(m_spellInfo->Id) - { - case 31606: //Stormcrow Amulet - mountid = 17447; - break; - case 45071: //Quest - Sunwell Daily - Dead Scar Bombing Run - case 45113: //Quest - Sunwell Daily - Ship Bombing Run - case 45353: //Quest - Sunwell Daily - Ship Bombing Run Return - mountid = 22840; - break; - case 34905: //Stealth Flight - mountid = 6851; - break; - case 45883: //Amber Ledge to Beryl Point - mountid = 23524; - break; - case 46064: //Amber Ledge to Coldarra - mountid = 6371; - break; - case 53335: //Stormwind Harbor Flight - Peaceful - mountid = 6852; - break; - case 41533: //Fly of the Netherwing - case 41540: //Fly of the Netherwing - mountid = 23468; - break; - } - - ((Player*)unitTarget)->ActivateTaxiPathTo(nodes,mountid); - + ((Player*)unitTarget)->ActivateTaxiPathTo(m_spellInfo->EffectMiscValue[i],m_spellInfo->Id); } void Spell::EffectPlayerPull(uint32 i) @@ -6292,7 +6217,7 @@ void Spell::EffectSummonDemon(uint32 i) for(int32 count = 0; count < amount; ++count) { float px, py, pz; - GetSummonPosition(px, py, pz, radius, count); + GetSummonPosition(i, px, py, pz, radius, count); int32 duration = GetSpellDuration(m_spellInfo); @@ -6492,7 +6417,7 @@ void Spell::SummonGuardian(uint32 entry, SummonPropertiesEntry const *properties for(int32 count = 0; count < amount; ++count) { float px, py, pz; - GetSummonPosition(px, py, pz, radius, count); + GetSummonPosition(0, px, py, pz, radius, count); TempSummon *summon = map->SummonCreature(entry, px, py, pz, m_caster->GetOrientation(), properties, duration, caster); if(!summon) @@ -6503,11 +6428,11 @@ void Spell::SummonGuardian(uint32 entry, SummonPropertiesEntry const *properties summon->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id); - summon->GetMotionMaster()->MoveTargetedHome(); + summon->AI()->EnterEvadeMode(); } } -void Spell::GetSummonPosition(float &x, float &y, float &z, float radius, uint32 count) +void Spell::GetSummonPosition(uint32 i, float &x, float &y, float &z, float radius, uint32 count) { if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION) { @@ -6520,7 +6445,25 @@ void Spell::GetSummonPosition(float &x, float &y, float &z, float radius, uint32 } // Summon in random point all other units if location present else - m_caster->GetRandomPoint(m_targets.m_destX,m_targets.m_destY,m_targets.m_destZ,radius,x,y,z); + { + //This is a workaround. Do not have time to write much about it + switch(m_spellInfo->EffectImplicitTargetA[i]) + { + case TARGET_MINION: + case TARGET_DEST_CASTER_RANDOM: + m_caster->GetGroundPointAroundUnit(x, y, z, radius * rand_norm(), rand_norm()*2*M_PI); + break; + case TARGET_DEST_DEST_RANDOM: + case TARGET_DEST_TARGET_RANDOM: + m_caster->GetRandomPoint(m_targets.m_destX,m_targets.m_destY,m_targets.m_destZ,radius,x,y,z); + break; + default: + x = m_targets.m_destX; + y = m_targets.m_destY; + z = m_targets.m_destZ; + break; + } + } } // Summon if dest location not present near caster else @@ -6534,4 +6477,4 @@ void Spell::EffectRenamePet(uint32 /*eff_idx*/) return; unitTarget->SetByteValue(UNIT_FIELD_BYTES_2, 2, UNIT_RENAME_ALLOWED); -} +}
\ No newline at end of file diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 945255f883a..4e5a4744e9a 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -27,6 +27,7 @@ #include "Chat.h" #include "Spell.h" #include "BattleGroundMgr.h" +#include "CreatureAI.h" bool IsAreaEffectTarget[TOTAL_SPELL_TARGETS]; @@ -1472,6 +1473,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2, bool //if spells have exactly the same effect they cannot stack for(uint32 i = 0; i < 3; ++i) if(spellInfo_1->Effect[i] != spellInfo_2->Effect[i] + // Overkill and master of subtlety need this + || spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_DUMMY + || spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_PERIODIC_DUMMY + || spellInfo_1->EffectApplyAuraName[i] != spellInfo_2->EffectApplyAuraName[i] || spellInfo_1->EffectMiscValue[i] != spellInfo_2->EffectMiscValue[i]) // paladin resist aura return false; // need itemtype check? need an example to add that check @@ -2426,31 +2431,32 @@ void SpellMgr::LoadSpellCustomAttr() case 45976: // Muru Portal Channel case 39365: // Thundering Storm case 41071: // Raise Dead (HACK) - case 28542: // Life Drain - Sapphiron spellInfo->MaxAffectedTargets = 1; break; case 41376: // Spite case 39992: // Needle Spine - case 29576: //Multi-Shot - case 40816: //Saber Lash - case 37790: //Spread Shot - case 46771: //Flame Sear - case 45248: //Shadow Blades + case 29576: // Multi-Shot + case 40816: // Saber Lash + case 37790: // Spread Shot + case 46771: // Flame Sear + case 45248: // Shadow Blades case 41303: // Soul Drain case 54172: // Divine Storm (heal) - case 29213: // Curse of the Plaguebringer + case 29213: // Curse of the Plaguebringer - Noth + case 28542: // Life Drain - Sapphiron spellInfo->MaxAffectedTargets = 3; break; case 38310: //Multi-Shot spellInfo->MaxAffectedTargets = 4; break; case 42005: // Bloodboil - case 38296: //Spitfire Totem - case 37676: //Insidious Whisper - case 46009: //Negative Energy - case 45641: //Fire Bloom - case 54937: //Glyph of Holy Light - case 55665: // Life Drain - Sapphiron + case 38296: // Spitfire Totem + case 37676: // Insidious Whisper + case 46009: // Negative Energy + case 45641: // Fire Bloom + case 54937: // Glyph of Holy Light + case 55665: // Life Drain - Sapphiron (H) + case 28796: // Poison Bolt Volly - Faerlina spellInfo->MaxAffectedTargets = 5; break; case 40827: // Sinful Beam @@ -2458,7 +2464,8 @@ void SpellMgr::LoadSpellCustomAttr() case 40860: // Vile Beam case 40861: // Wicked Beam case 57669: // Replenishment - case 54835: // Curse of the Plaguebringer + case 54835: // Curse of the Plaguebringer - Noth (H) + case 54098: // Poison Bolt Volly - Faerlina (H) spellInfo->MaxAffectedTargets = 10; break; case 8122: case 8124: case 10888: case 10890: // Psychic Scream @@ -2516,6 +2523,8 @@ void SpellMgr::LoadSpellCustomAttr() SummonPropertiesEntry *properties = const_cast<SummonPropertiesEntry*>(sSummonPropertiesStore.LookupEntry(121)); properties->Type = SUMMON_TYPE_TOTEM; + + CreatureAI::FillAISpellInfo(); } void SpellMgr::LoadSpellLinked() diff --git a/src/game/TaxiHandler.cpp b/src/game/TaxiHandler.cpp index 24c6aca147a..5ba65c00660 100644 --- a/src/game/TaxiHandler.cpp +++ b/src/game/TaxiHandler.cpp @@ -128,7 +128,8 @@ void WorldSession::SendDoFlight( uint16 MountId, uint32 path, uint32 pathNode ) while(GetPlayer()->GetMotionMaster()->GetCurrentMovementGeneratorType()==FLIGHT_MOTION_TYPE) GetPlayer()->GetMotionMaster()->MovementExpired(false); - GetPlayer()->Mount( MountId ); + if (MountId) + GetPlayer()->Mount( MountId ); GetPlayer()->GetMotionMaster()->MoveTaxiFlight(path,pathNode); } @@ -190,7 +191,7 @@ void WorldSession::HandleActivateTaxiFarOpcode ( WorldPacket & recv_data ) sLog.outDebug( "WORLD: Received CMSG_ACTIVATETAXIEXPRESS from %d to %d" ,nodes.front(),nodes.back()); - GetPlayer()->ActivateTaxiPathTo(nodes, 0, npc); + GetPlayer()->ActivateTaxiPathTo(nodes, npc); } void WorldSession::HandleTaxiNextDestinationOpcode(WorldPacket& /*recv_data*/) @@ -275,6 +276,6 @@ void WorldSession::HandleActivateTaxiOpcode( WorldPacket & recv_data ) return; } - GetPlayer()->ActivateTaxiPathTo(nodes, 0, npc); + GetPlayer()->ActivateTaxiPathTo(nodes, npc); } diff --git a/src/game/TemporarySummon.cpp b/src/game/TemporarySummon.cpp index 170e590fd9c..993ece988a0 100644 --- a/src/game/TemporarySummon.cpp +++ b/src/game/TemporarySummon.cpp @@ -208,10 +208,8 @@ void TempSummon::InitSummon() if(GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER && m_spells[0]) { setFaction(owner->getFaction()); - if(m_spells[1] && GetMap()->IsHeroic()) - CastSpell(this, m_spells[1], false, 0, 0, m_summonerGUID); - else - CastSpell(this, m_spells[0], false, 0, 0, m_summonerGUID); + SetLevel(owner->getLevel()); + CastSpell(this, m_spells[0], false, 0, 0, m_summonerGUID); } } } @@ -309,6 +307,8 @@ void Guardian::InitStats(uint32 duration) { Minion::InitStats(duration); + InitStatsForLevel(m_owner->getLevel()); + if(m_owner->GetTypeId() == TYPEID_PLAYER) m_charmInfo->InitCharmCreateSpells(); diff --git a/src/game/TemporarySummon.h b/src/game/TemporarySummon.h index 09e7f22afb0..e089c77c96e 100644 --- a/src/game/TemporarySummon.h +++ b/src/game/TemporarySummon.h @@ -23,7 +23,7 @@ #include "Creature.h" -class TempSummon : public Creature +class TRINITY_DLL_SPEC TempSummon : public Creature { public: explicit TempSummon(SummonPropertiesEntry const *properties, Unit *owner); diff --git a/src/game/TradeHandler.cpp b/src/game/TradeHandler.cpp index 439626861fd..3cead4551c1 100644 --- a/src/game/TradeHandler.cpp +++ b/src/game/TradeHandler.cpp @@ -461,30 +461,30 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) { CHECK_PACKET_SIZE(recvPacket,8); - if( GetPlayer()->pTrader ) + if (GetPlayer()->pTrader) return; uint64 ID; - if( !GetPlayer()->isAlive() ) + if (!GetPlayer()->isAlive()) { SendTradeStatus(TRADE_STATUS_YOU_DEAD); return; } - if( GetPlayer()->hasUnitState(UNIT_STAT_STUNNED) ) + if (GetPlayer()->hasUnitState(UNIT_STAT_STUNNED)) { SendTradeStatus(TRADE_STATUS_YOU_STUNNED); return; } - if( isLogingOut() ) + if (isLogingOut()) { SendTradeStatus(TRADE_STATUS_YOU_LOGOUT); return; } - if( GetPlayer()->isInFlight() ) + if (GetPlayer()->isInFlight()) { SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR); return; @@ -494,43 +494,43 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) Player* pOther = ObjectAccessor::FindPlayer( ID ); - if( !pOther ) + if (!pOther) { SendTradeStatus(TRADE_STATUS_NO_TARGET); return; } - if( pOther == GetPlayer() || pOther->pTrader ) + if (pOther == GetPlayer() || pOther->pTrader) { SendTradeStatus(TRADE_STATUS_BUSY); return; } - if( !pOther->isAlive() ) + if (!pOther->isAlive()) { SendTradeStatus(TRADE_STATUS_TARGET_DEAD); return; } - if( pOther->isInFlight() ) + if (pOther->isInFlight()) { SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR); return; } - if( pOther->hasUnitState(UNIT_STAT_STUNNED) ) + if (pOther->hasUnitState(UNIT_STAT_STUNNED)) { SendTradeStatus(TRADE_STATUS_TARGET_STUNNED); return; } - if( pOther->GetSession()->isLogingOut() ) + if (pOther->GetSession()->isLogingOut()) { SendTradeStatus(TRADE_STATUS_TARGET_LOGOUT); return; } - if( pOther->GetSocial()->HasIgnore(GetPlayer()->GetGUIDLow()) ) + if (pOther->GetSocial()->HasIgnore(GetPlayer()->GetGUIDLow())) { SendTradeStatus(TRADE_STATUS_IGNORE_YOU); return; @@ -542,7 +542,7 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) return; } - if( pOther->GetDistance2d( _player ) > 10.0f ) + if (!pOther->IsWithinDistInMap(_player,10.0f,false)) { SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR); return; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index bb2f8e98f4b..e36c25883d4 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -413,7 +413,7 @@ void Unit::resetAttackTimer(WeaponAttackType type) m_attackTimer[type] = uint32(GetAttackTime(type) * m_modAttackSpeedPct[type]); } -bool Unit::IsWithinCombatRange(Unit *obj, float dist2compare) const +bool Unit::IsWithinCombatRange(const Unit *obj, float dist2compare) const { if (!obj || !IsInMap(obj)) return false; @@ -428,7 +428,7 @@ bool Unit::IsWithinCombatRange(Unit *obj, float dist2compare) const return distsq < maxdist * maxdist; } -bool Unit::IsWithinMeleeRange(Unit *obj, float dist) const +bool Unit::IsWithinMeleeRange(const Unit *obj, float dist) const { if (!obj || !IsInMap(obj)) return false; @@ -535,10 +535,15 @@ void Unit::RemoveSpellbyDamageTaken(uint32 damage, uint32 spell) } } -uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellEntry const *spellProto, bool durabilityLoss) +void Unit::DealDamageMods(Unit *pVictim, uint32 &damage, uint32* absorb) { if (!pVictim->isAlive() || pVictim->hasUnitState(UNIT_STAT_UNATTACKABLE) || pVictim->GetTypeId() == TYPEID_UNIT && ((Creature*)pVictim)->IsInEvadeMode()) - return 0; + { + if(absorb) + absorb += damage; + damage = 0; + return; + } //You don't lose health from damage taken from another player while in a sanctuary //You still see it in the combat log though @@ -546,14 +551,30 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa { const AreaTableEntry *area = GetAreaEntryByAreaID(pVictim->GetAreaId()); if(area && area->flags & AREA_FLAG_SANCTUARY) //sanctuary - return 0; + { + if(absorb) + absorb += damage; + damage = 0; + } } + uint32 originalDamage = damage; + + //Script Event damage Deal + //if( GetTypeId()== TYPEID_UNIT && ((Creature *)this)->AI()) + // ((Creature *)this)->AI()->DamageDeal(pVictim, damage); //Script Event damage taken if( pVictim->GetTypeId()== TYPEID_UNIT && ((Creature *)pVictim)->IsAIEnabled ) - { ((Creature *)pVictim)->AI()->DamageTaken(this, damage); + if(absorb && originalDamage > damage) + absorb += (originalDamage - damage); +} + +uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellEntry const *spellProto, bool durabilityLoss) +{ + if( pVictim->GetTypeId()== TYPEID_UNIT) + { // Set tagging if(!pVictim->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_OTHER_TAGGER) && !((Creature*)pVictim)->isPet()) { @@ -1203,6 +1224,7 @@ uint32 Unit::SpellNonMeleeDamageLog(Unit *pVictim, uint32 spellID, uint32 damage SpellNonMeleeDamage damageInfo(this, pVictim, spellInfo->Id, spellInfo->SchoolMask); damage = SpellDamageBonus(pVictim, spellInfo, damage, SPELL_DIRECT_DAMAGE); CalculateSpellDamageTaken(&damageInfo, damage, spellInfo); + DealDamageMods(damageInfo.target,damageInfo.damage,&damageInfo.absorb); SendSpellNonMeleeDamageLog(&damageInfo); DealSpellDamage(&damageInfo, true); return damageInfo.damage; @@ -1706,6 +1728,8 @@ void Unit::DealMeleeDamage(CalcDamageInfo *damageInfo, bool durabilityLoss) //CalcAbsorbResist(pVictim, SpellSchools(spellProto->School), SPELL_DIRECT_DAMAGE, damage, &absorb, &resist); //damage-=absorb + resist; + pVictim->DealDamageMods(this,damage,NULL); + WorldPacket data(SMSG_SPELLDAMAGESHIELD,(8+8+4+4+4+4)); data << uint64(pVictim->GetGUID()); data << uint64(GetGUID()); @@ -2085,8 +2109,12 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe int32 canabsorb = caster->GetHealth(); if (canabsorb < absorbed) absorbed = canabsorb; - DealDamage(caster, absorbed, NULL, damagetype, schoolMask, 0, false); + RemainingDamage -= absorbed; + + uint32 ab_damage = absorbed; + DealDamageMods(caster,ab_damage,NULL); + DealDamage(caster, ab_damage, NULL, damagetype, schoolMask, 0, false); continue; } break; @@ -2195,10 +2223,15 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe RemainingDamage -= currentAbsorb; - SendSpellNonMeleeDamageLog(caster, (*i)->GetSpellProto()->Id, currentAbsorb, schoolMask, 0, 0, false, 0, false); - CleanDamage cleanDamage = CleanDamage(currentAbsorb, BASE_ATTACK, MELEE_HIT_NORMAL); - DealDamage(caster, currentAbsorb, &cleanDamage, DIRECT_DAMAGE, schoolMask, (*i)->GetSpellProto(), false); + uint32 splitted = currentAbsorb; + uint32 splitted_absorb = 0; + DealDamageMods(caster,splitted,&splitted_absorb); + + SendSpellNonMeleeDamageLog(caster, (*i)->GetSpellProto()->Id, splitted, schoolMask, splitted_absorb, 0, false, 0, false); + + CleanDamage cleanDamage = CleanDamage(splitted, BASE_ATTACK, MELEE_HIT_NORMAL); + DealDamage(caster, splitted, &cleanDamage, DIRECT_DAMAGE, schoolMask, (*i)->GetSpellProto(), false); } AuraEffectList const& vSplitDamagePct = pVictim->GetAurasByType(SPELL_AURA_SPLIT_DAMAGE_PCT); @@ -2215,11 +2248,14 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe if(!caster || caster == pVictim || !caster->IsInWorld() || !caster->isAlive()) continue; - int32 splitted = int32(RemainingDamage * (*i)->GetAmount() / 100.0f); + uint32 splitted = uint32(RemainingDamage * (*i)->GetAmount() / 100.0f); - RemainingDamage -= splitted; + RemainingDamage -= int32(splitted); - SendSpellNonMeleeDamageLog(caster, (*i)->GetSpellProto()->Id, splitted, schoolMask, 0, 0, false, 0, false); + uint32 split_absorb = 0; + DealDamageMods(caster,splitted,&split_absorb); + + SendSpellNonMeleeDamageLog(caster, (*i)->GetSpellProto()->Id, splitted, schoolMask, split_absorb, 0, false, 0, false); CleanDamage cleanDamage = CleanDamage(splitted, BASE_ATTACK, MELEE_HIT_NORMAL); DealDamage(caster, splitted, &cleanDamage, DIRECT_DAMAGE, schoolMask, (*i)->GetSpellProto(), false); @@ -2354,6 +2390,7 @@ void Unit::AttackerStateUpdate (Unit *pVictim, WeaponAttackType attType, bool ex CalcDamageInfo damageInfo; CalculateMeleeDamage(pVictim, 0, &damageInfo, attType); // Send log damage message to client + DealDamageMods(pVictim,damageInfo.damage,&damageInfo.absorb); SendAttackStateUpdate(&damageInfo); ProcDamageAndSpell(damageInfo.target, damageInfo.procAttacker, damageInfo.procVictim, damageInfo.procEx, damageInfo.damage, damageInfo.attackType); DealMeleeDamage(&damageInfo,true); @@ -2775,7 +2812,9 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit *pVictim, SpellEntry const *spell) return SPELL_MISS_NONE; // Ranged attack cannot be parry/dodge only deflect - if (attType == RANGED_ATTACK) + // Check damage class instead of attack type to correctly handle judgements + // - they are meele, but can't be dodged/parried/deflected because of ranged dmg class + if (spell->DmgClass == SPELL_DAMAGE_CLASS_RANGED) { // only if in front if (pVictim->HasInArc(M_PI,this)) @@ -3526,7 +3565,7 @@ Spell* Unit::FindCurrentSpellBySpellId(uint32 spell_id) const return NULL; } -bool Unit::isInFront(Unit const* target, float distance, float arc) const +bool Unit::isInFrontInMap(Unit const* target, float distance, float arc) const { return IsWithinDistInMap(target, distance) && HasInArc( arc, target ); } @@ -3536,7 +3575,7 @@ void Unit::SetInFront(Unit const* target) SetOrientation(GetAngle(target)); } -bool Unit::isInBack(Unit const* target, float distance, float arc) const +bool Unit::isInBackInMap(Unit const* target, float distance, float arc) const { return IsWithinDistInMap(target, distance) && !HasInArc( 2 * M_PI - arc, target ); } @@ -4272,7 +4311,7 @@ bool Unit::HasAura(Aura * aur) const bool Unit::HasAuraEffect(uint32 spellId, uint8 effIndex, uint64 caster) const { if (Aura * aur = GetAura(spellId, caster)) - return bool(aur->HasEffect(effIndex)); + return aur->HasEffect(effIndex); return false; } @@ -4486,38 +4525,32 @@ void Unit::SendSpellNonMeleeDamageLog(SpellNonMeleeDamage *log) data.append(log->target->GetPackGUID()); data.append(log->attacker->GetPackGUID()); data << uint32(log->SpellID); - data << uint32(log->damage); //damage amount + data << uint32(log->damage); // damage amount data << uint32(int32 (log->target->GetHealth()-log->damage ) >0 ? 0 : log->damage - log->target->GetHealth()); - data << uint8 (log->schoolMask); //damage school - data << uint32(log->absorb); //AbsorbedDamage - data << uint32(log->resist); //resist - data << uint8 (log->phusicalLog); // damsge type? flag - data << uint8 (log->unused); //unused - data << uint32(log->blocked); //blocked + //data << uint32(log->overkill); // overkill + data << uint8 (log->schoolMask); // damage school + data << uint32(log->absorb); // AbsorbedDamage + data << uint32(log->resist); // resist + data << uint8 (log->physicalLog); // if 1, then client show spell name (example: %s's ranged shot hit %s for %u school or %s suffers %u school damage from %s's spell_name + data << uint8 (log->unused); // unused + data << uint32(log->blocked); // blocked data << uint32(log->HitInfo); - data << uint8 (0); // flag to use extend data + data << uint8 (0); // flag to use extend data SendMessageToSet( &data, true ); } void Unit::SendSpellNonMeleeDamageLog(Unit *target,uint32 SpellID,uint32 Damage, SpellSchoolMask damageSchoolMask,uint32 AbsorbedDamage, uint32 Resist,bool PhysicalDamage, uint32 Blocked, bool CriticalHit) { - sLog.outDebug("Sending: SMSG_SPELLNONMELEEDAMAGELOG"); - WorldPacket data(SMSG_SPELLNONMELEEDAMAGELOG, (16+4+4+1+4+4+1+1+4+4+1)); // we guess size - data.append(target->GetPackGUID()); - data.append(GetPackGUID()); - data << uint32(SpellID); - int32 damageDone = Damage-AbsorbedDamage-Resist-Blocked; - data << uint32(damageDone); - data << uint32(int32 (target->GetHealth()-damageDone ) >0 ? 0 : damageDone - target->GetHealth());// wotlk - data << uint8(damageSchoolMask); // spell school - data << uint32(AbsorbedDamage); // AbsorbedDamage - data << uint32(Resist); // resist - data << uint8(PhysicalDamage); // if 1, then client show spell name (example: %s's ranged shot hit %s for %u school or %s suffers %u school damage from %s's spell_name - data << uint8(0); // unk isFromAura - data << uint32(Blocked); // blocked - data << uint32(CriticalHit ? 0x27 : 0x25); // hitType, flags: 0x2 - SPELL_HIT_TYPE_CRIT, 0x10 - replace caster? - data << uint8(0); // isDebug? - SendMessageToSet( &data, true ); + SpellNonMeleeDamage log(this,target,SpellID,damageSchoolMask); + log.damage = Damage-AbsorbedDamage-Resist-Blocked; + log.absorb = AbsorbedDamage; + log.resist = Resist; + log.physicalLog = PhysicalDamage; + log.blocked = Blocked; + log.HitInfo = SPELL_HIT_TYPE_UNK1 | SPELL_HIT_TYPE_UNK3 | SPELL_HIT_TYPE_UNK6; + if(CriticalHit) + log.HitInfo |= SPELL_HIT_TYPE_CRIT; + SendSpellNonMeleeDamageLog(&log); } void Unit::ProcDamageAndSpell(Unit *pVictim, uint32 procAttacker, uint32 procVictim, uint32 procExtra, uint32 amount, WeaponAttackType attType, SpellEntry const *procSpell) @@ -5301,6 +5334,25 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger CastSpell(this, 28682, true, castItem, triggeredByAura); return (procEx & PROC_EX_CRITICAL_HIT);// charge update only at crit hits, no hidden cooldowns } + // Glyph of Ice Block + case 56372: + { + if(GetTypeId() != TYPEID_PLAYER) + return false; + + SpellCooldowns SpellCDs = ((Player*)this)->GetSpellCooldowns(); + // remove cooldowns on all ranks of Frost Nova + for(SpellCooldowns::const_iterator itr = SpellCDs.begin(); itr != SpellCDs.end(); itr++) + { + SpellEntry const* SpellCDs_entry = sSpellStore.LookupEntry(itr->first); + // Frost Nova + if(SpellCDs_entry && SpellCDs_entry->SpellFamilyName == SPELLFAMILY_MAGE && SpellCDs_entry->SpellFamilyFlags[0] & 0x00000040) + { + ((Player*)this)->RemoveSpellCooldown(SpellCDs_entry->Id, true); + } + } + break; + } } break; } @@ -5579,6 +5631,31 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger triggered_spell_id = 56160; break; } + // Glyph of Prayer of Healing + case 55680: + { + triggered_spell_id = 56161; + + SpellEntry const* GoPoH = sSpellStore.LookupEntry(triggered_spell_id); + if(!GoPoH) + return false; + + int EffIndex = 0; + for(int i = 0; i < MAX_SPELL_EFFECTS; i++) + { + if(GoPoH->Effect[i] == SPELL_EFFECT_APPLY_AURA) + { + EffIndex = i; + break; + } + } + int32 tickcount = GetSpellMaxDuration(GoPoH) / GoPoH->EffectAmplitude[EffIndex]; + if(!tickcount) + return false; + + basepoints0 = damage * triggerAmount / tickcount / 100; + break; + } // Improved Shadowform case 47570: case 47569: @@ -6750,6 +6827,9 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig // Set trigger spell id, target, custom basepoints uint32 trigger_spell_id = auraSpellInfo->EffectTriggerSpell[triggeredByAura->GetEffIndex()]; + if(procSpell && procSpell->Id == trigger_spell_id) + return false; + Unit* target = NULL; int32 basepoints0 = 0; @@ -9918,7 +9998,7 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy) ((Creature*)this)->SetHomePosition(GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation()); if(enemy) { - if(!((Creature*)this)->HasReactState(REACT_PASSIVE) && ((Creature*)this)->IsAIEnabled) + if(((Creature*)this)->IsAIEnabled) ((Creature*)this)->AI()->EnterCombat(enemy); if(((Creature*)this)->GetFormation()) ((Creature*)this)->GetFormation()->MemberAttackStart((Creature*)this, enemy); @@ -11579,11 +11659,14 @@ void CharmInfo::InitPossessCreateSpells() { for(uint32 i = 0; i < CREATURE_MAX_SPELLS; ++i) { - uint32 spellid = ((Creature*)m_unit)->m_spells[i]; - if(IsPassiveSpell(spellid)) - m_unit->CastSpell(m_unit, spellid, true); + uint32 spellId = ((Creature*)m_unit)->m_spells[i]; + SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId); + if(spellInfo && spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD) + spellId = 0; + if(IsPassiveSpell(spellId)) + m_unit->CastSpell(m_unit, spellId, true); else - AddSpellToAB(0, spellid, ACT_DISABLED); + AddSpellToAB(0, spellId, ACT_DISABLED); } } } @@ -11601,6 +11684,10 @@ void CharmInfo::InitCharmCreateSpells() for(uint32 x = 0; x < MAX_SPELL_CHARM; ++x) { uint32 spellId = ((Creature*)m_unit)->m_spells[x]; + SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId); + if(spellInfo && spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD) + spellId = 0; + m_charmspells[x].spellId = spellId; if(!spellId) @@ -11615,7 +11702,6 @@ void CharmInfo::InitCharmCreateSpells() { ActiveStates newstate; bool onlyselfcast = true; - SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId); if(!spellInfo) onlyselfcast = false; for(uint32 i = 0;i<3 && onlyselfcast;++i) //non existent spell will not make any problems as onlyselfcast would be false -> break right away @@ -11925,6 +12011,7 @@ void Unit::ProcDamageAndSpellFor( bool isVictim, Unit * pTarget, uint32 procFlag SpellNonMeleeDamage damageInfo(this, pTarget, spellInfo->Id, spellInfo->SchoolMask); uint32 damage = SpellDamageBonus(pTarget, spellInfo, triggeredByAura->GetAmount(), SPELL_DIRECT_DAMAGE); CalculateSpellDamageTaken(&damageInfo, damage, spellInfo); + DealDamageMods(damageInfo.target,damageInfo.damage,&damageInfo.absorb); SendSpellNonMeleeDamageLog(&damageInfo); DealSpellDamage(&damageInfo, true); break; @@ -12166,6 +12253,13 @@ void Unit::StopMoving() SendMessageToSet(&data,false); } +void Unit::SendMovementFlagUpdate() +{ + WorldPacket data; + BuildHeartBeatMsg(&data); + SendMessageToSet(&data, false); +} + /* void Unit::SetFeared(bool apply, uint64 casterGUID, uint32 spellID) { @@ -13574,16 +13668,14 @@ void Unit::AddAura(uint32 spellId, Unit* target) target->AddAura(Aur); } -Aura * Unit::AddAuraEffect(uint32 spellId, uint8 effIndex, Unit* caster, int32 * basePoints) +Aura * Unit::AddAuraEffect(const SpellEntry * spellInfo, uint8 effIndex, Unit* caster, int32 * basePoints) { - SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId); - if(!spellInfo || !caster) - return NULL; - // can't do that for passive auras - they stack from same caster so there is no way to get exact aura which should get effect //assert (!IsPassiveSpell(spellInfo)); - Aura * aur = GetAura(spellId, caster->GetGUID()); + sLog.outDebug("AddAuraEffect: spell id: %u, effect index: %u", spellInfo->Id, (uint32)effIndex); + + Aura *aur = GetAura(spellInfo->Id, caster->GetGUID()); if (aur) { @@ -13600,10 +13692,10 @@ Aura * Unit::AddAuraEffect(uint32 spellId, uint8 effIndex, Unit* caster, int32 * aur = new Aura(spellInfo, 1<<effIndex, amount, this ,caster); } else - { aur = new Aura(spellInfo, 1<<effIndex, NULL, this ,caster); - } - AddAura(aur); + + if(!AddAura(aur)) + return NULL; } return aur; } @@ -13901,7 +13993,7 @@ void Unit::NearTeleportTo( float x, float y, float z, float orientation, bool ca DestroyForNearbyPlayers(); GetMap()->CreatureRelocation((Creature*)this, x, y, z, orientation); - ObjectAccessor::UpdateObjectVisibility(this); + //ObjectAccessor::UpdateObjectVisibility(this); //WorldPacket data; // Work strange for many spells: triggered active mover set for targeted player to creature diff --git a/src/game/Unit.h b/src/game/Unit.h index fcfc14b5394..bbd7471b1b8 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -745,24 +745,25 @@ struct CalcDamageInfo // Spell damage info structure based on structure sending in SMSG_SPELLNONMELEEDAMAGELOG opcode struct SpellNonMeleeDamage{ - SpellNonMeleeDamage(Unit *_attacker, Unit *_target, uint32 _SpellID, uint32 _schoolMask) - : target(_target), attacker(_attacker), SpellID(_SpellID), damage(0), schoolMask(_schoolMask), - absorb(0), resist(0), phusicalLog(false), unused(false), blocked(0), HitInfo(0), cleanDamage(0) - {} - - Unit *target; - Unit *attacker; - uint32 SpellID; - uint32 damage; - uint32 schoolMask; - uint32 absorb; - uint32 resist; - bool phusicalLog; - bool unused; - uint32 blocked; - uint32 HitInfo; - // Used for help - uint32 cleanDamage; + SpellNonMeleeDamage(Unit *_attacker, Unit *_target, uint32 _SpellID, uint32 _schoolMask) + : target(_target), attacker(_attacker), SpellID(_SpellID), damage(0), overkill(0), schoolMask(_schoolMask), + absorb(0), resist(0), physicalLog(false), unused(false), blocked(0), HitInfo(0), cleanDamage(0) + {} + + Unit *target; + Unit *attacker; + uint32 SpellID; + uint32 damage; + uint32 overkill; + uint32 schoolMask; + uint32 absorb; + uint32 resist; + bool physicalLog; + bool unused; + uint32 blocked; + uint32 HitInfo; + // Used for help + uint32 cleanDamage; }; uint32 createProcExtendMask(SpellNonMeleeDamage *damageInfo, SpellMissInfo missCondition); @@ -939,8 +940,8 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void SetCanDualWield(bool value) { m_canDualWield = value; } float GetCombatReach() const { return m_floatValues[UNIT_FIELD_COMBATREACH]; } float GetMeleeReach() const { float reach = m_floatValues[UNIT_FIELD_COMBATREACH]; return reach > MIN_MELEE_REACH ? reach : MIN_MELEE_REACH; } - bool IsWithinCombatRange(Unit *obj, float dist2compare) const; - bool IsWithinMeleeRange(Unit *obj, float dist = MELEE_RANGE) const; + bool IsWithinCombatRange(const Unit *obj, float dist2compare) const; + bool IsWithinMeleeRange(const Unit *obj, float dist = MELEE_RANGE) const; void GetRandomContactPoint( const Unit* target, float &x, float &y, float &z, float distance2dMin, float distance2dMax ) const; uint32 m_extraAttacks; bool m_canDualWield; @@ -1072,6 +1073,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject uint16 GetMaxSkillValueForLevel(Unit const* target = NULL) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; } void RemoveSpellbyDamageTaken(uint32 damage, uint32 spell); + void DealDamageMods(Unit *pVictim, uint32 &damage, uint32* absorb); uint32 DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDamage = NULL, DamageEffectType damagetype = DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask = SPELL_SCHOOL_MASK_NORMAL, SpellEntry const *spellProto = NULL, bool durabilityLoss = true); void Kill(Unit *pVictim, bool durabilityLoss = true); int32 DealHeal(Unit *pVictim, uint32 addhealth, SpellEntry const *spellProto, bool critical = false); @@ -1186,7 +1188,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void CastSpell(GameObject *go, uint32 spellId, bool triggered, Item *castItem = NULL, AuraEffect* triggeredByAura = NULL, uint64 originalCaster = 0); void AddAura(uint32 spellId, Unit *target); void HandleAuraEffect(AuraEffect * aureff, bool apply); - Aura *AddAuraEffect(uint32 spellId, uint8 effIndex, Unit* caster, int32 * basePoints=NULL); + Aura *AddAuraEffect(const SpellEntry * spellInfo, uint8 effIndex, Unit* caster, int32 * basePoints=NULL); bool IsDamageToThreatSpell(SpellEntry const * spellInfo) const; @@ -1212,6 +1214,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end); void SendMonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime = 0, Player* player = NULL); void SendMonsterMoveWithSpeedToCurrentDestination(Player* player = NULL); + void SendMovementFlagUpdate(); bool isAlive() const { return (m_deathState == ALIVE); }; bool isDead() const { return ( m_deathState == DEAD || m_deathState == CORPSE ); }; @@ -1400,9 +1403,9 @@ class TRINITY_DLL_SPEC Unit : public WorldObject float GetWeaponDamageRange(WeaponAttackType attType ,WeaponDamageRange type) const; void SetBaseWeaponDamage(WeaponAttackType attType ,WeaponDamageRange damageRange, float value) { m_weaponDamage[attType][damageRange] = value; } - bool isInFront(Unit const* target,float distance, float arc = M_PI) const; + bool isInFrontInMap(Unit const* target,float distance, float arc = M_PI) const; void SetInFront(Unit const* target); - bool isInBack(Unit const* target, float distance, float arc = M_PI) const; + bool isInBackInMap(Unit const* target, float distance, float arc = M_PI) const; bool isInLine(Unit const* target, float distance) const; // Visibility system diff --git a/src/game/UnitAI.cpp b/src/game/UnitAI.cpp new file mode 100644 index 00000000000..12dc20692c6 --- /dev/null +++ b/src/game/UnitAI.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> + * + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "UnitAI.h" +#include "Player.h" +#include "Creature.h" +#include "SpellAuras.h" + +void UnitAI::AttackStart(Unit *victim) +{ + if(!victim) + return; + + if(me->Attack(victim, true)) + { + //DEBUG_LOG("Creature %s tagged a victim to kill [guid=%u]", me->GetName(), victim->GetGUIDLow()); + me->GetMotionMaster()->MoveChase(victim); + } +} + +void UnitAI::DoMeleeAttackIfReady() +{ + if(me->hasUnitState(UNIT_STAT_CASTING)) + return; + + //Make sure our attack is ready and we aren't currently casting before checking distance + if (me->isAttackReady()) + { + //If we are within range melee the target + if (me->IsWithinMeleeRange(me->getVictim())) + { + me->AttackerStateUpdate(me->getVictim()); + me->resetAttackTimer(); + } + } + if (me->haveOffhandWeapon() && me->isAttackReady(OFF_ATTACK)) + { + //If we are within range melee the target + if (me->IsWithinMeleeRange(me->getVictim())) + { + me->AttackerStateUpdate(me->getVictim(), OFF_ATTACK); + me->resetAttackTimer(OFF_ATTACK); + } + } +} + +//Enable PlayerAI when charmed +void PlayerAI::OnCharmed(bool apply) { me->IsAIEnabled = apply; } + +void SimpleCharmedAI::UpdateAI(const uint32 /*diff*/) +{ + Creature *charmer = (Creature*)me->GetCharmer(); + + //kill self if charm aura has infinite duration + if(charmer->IsInEvadeMode()) + { + Unit::AuraEffectList const& auras = me->GetAurasByType(SPELL_AURA_MOD_CHARM); + for(Unit::AuraEffectList::const_iterator iter = auras.begin(); iter != auras.end(); ++iter) + if((*iter)->GetCasterGUID() == charmer->GetGUID() && (*iter)->GetParentAura()->IsPermanent()) + { + charmer->Kill(me); + return; + } + } + + if(!charmer->isInCombat()) + me->GetMotionMaster()->MoveFollow(charmer, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + + Unit *target = me->getVictim(); + if(!target || !charmer->canAttack(target)) + AttackStart(charmer->SelectNearestTarget()); +} diff --git a/src/game/UnitAI.h b/src/game/UnitAI.h new file mode 100644 index 00000000000..04de74f480e --- /dev/null +++ b/src/game/UnitAI.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> + * + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef TRINITY_UNITAI_H +#define TRINITY_UNITAI_H + +#include "Platform/Define.h" + +class Unit; +class Player; + +class TRINITY_DLL_SPEC UnitAI +{ + protected: + Unit * const me; + public: + explicit UnitAI(Unit *u) : me(u) {} + virtual void AttackStart(Unit *); + virtual void UpdateAI(const uint32 diff) = 0; + + virtual void InitializeAI() { Reset(); } + + virtual void Reset() {}; + + // Called when unit is charmed + virtual void OnCharmed(bool apply) = 0; + + // Pass parameters between AI + virtual void DoAction(const int32 param) {} + + //Do melee swing of current victim if in rnage and ready and not casting + void DoMeleeAttackIfReady(); +}; + +class TRINITY_DLL_SPEC PlayerAI : public UnitAI +{ + protected: + Player* const me; + public: + explicit PlayerAI(Player *p) : UnitAI((Unit*)p), me(p) {} + + void OnCharmed(bool apply); +}; + +class TRINITY_DLL_SPEC SimpleCharmedAI : public PlayerAI +{ + public: + void UpdateAI(const uint32 diff); +}; + +#endif diff --git a/src/game/WaypointManager.cpp b/src/game/WaypointManager.cpp index a677fd5b6d2..26be14d89fa 100644 --- a/src/game/WaypointManager.cpp +++ b/src/game/WaypointManager.cpp @@ -24,12 +24,12 @@ #include "ProgressBar.h" #include "MapManager.h" -UNORDERED_MAP<uint32, WaypointPath*> waypoint_map; +WaypointPathMap WaypointPathHolder; WaypointStore WaypointMgr; void WaypointStore::Free() { - waypoint_map.clear(); + WaypointPathHolder.clear(); } void WaypointStore::Load() @@ -37,7 +37,7 @@ void WaypointStore::Load() QueryResult *result = WorldDatabase.PQuery("SELECT MAX(`id`) FROM `waypoint_data`"); if(!result) { - sLog.outError(" an error occured while loading the table `waypoint_data` ( maybe it doesn't exist ?)\n"); + sLog.outError("an error occured while loading the table `waypoint_data` (maybe it doesn't exist ?)"); exit(1); // Stop server at loading non exited table or not accessable table } @@ -47,7 +47,7 @@ void WaypointStore::Load() result = WorldDatabase.PQuery("SELECT `id`,`point`,`position_x`,`position_y`,`position_z`,`move_flag`,`delay`,`action`,`action_chance` FROM `waypoint_data` ORDER BY `id`, `point`"); if(!result) { - sLog.outErrorDb("The table `creature_addon` is empty or corrupted"); + sLog.outErrorDb("The table `waypoint_data` is empty or corrupted"); return; } @@ -87,22 +87,21 @@ void WaypointStore::Load() path_data->push_back(wp); - if(id != last_id) - waypoint_map[id] = path_data; + if(id != last_id) + WaypointPathHolder[id] = path_data; last_id = id; } while(result->NextRow()) ; - delete result; } void WaypointStore::UpdatePath(uint32 id) { - - if(waypoint_map.find(id)!= waypoint_map.end()) - waypoint_map[id]->clear(); + // TODO: this will cause memory leak + if(WaypointPathHolder.find(id) != WaypointPathHolder.end()) + WaypointPathHolder[id]->clear(); QueryResult *result; @@ -145,7 +144,7 @@ void WaypointStore::UpdatePath(uint32 id) }while (result->NextRow()); - waypoint_map[id] = path_data; + WaypointPathHolder[id] = path_data; delete result; } diff --git a/src/game/WaypointManager.h b/src/game/WaypointManager.h index 85f8b765d45..a8f2d5746e9 100644 --- a/src/game/WaypointManager.h +++ b/src/game/WaypointManager.h @@ -34,7 +34,9 @@ struct WaypointData }; typedef std::vector<WaypointData*> WaypointPath; -extern UNORDERED_MAP<uint32, WaypointPath*> waypoint_map; +typedef UNORDERED_MAP<uint32, WaypointPath*> WaypointPathMap; + +extern WaypointPathMap WaypointPathHolder; class WaypointStore { @@ -48,9 +50,10 @@ class WaypointStore WaypointPath* GetPath(uint32 id) { - if(waypoint_map.find(id) != waypoint_map.end()) - return waypoint_map[id]; - else return 0; + WaypointPathMap::iterator itr = WaypointPathHolder.find(id); + if(itr != WaypointPathHolder.end()) + return itr->second; + return NULL; } inline uint32 GetRecordsCount() { return records; } diff --git a/src/game/WaypointMovementGenerator.cpp b/src/game/WaypointMovementGenerator.cpp index 7cabd63acf1..effc78d8026 100644 --- a/src/game/WaypointMovementGenerator.cpp +++ b/src/game/WaypointMovementGenerator.cpp @@ -100,7 +100,7 @@ WaypointMovementGenerator<Creature>::Initialize(Creature &u) //i_nextMoveTime.Reset(0); StopedByPlayer = false; if(!path_id) - path_id = u.GetWaypointPath(); + path_id = u.GetWaypointPathId(); waypoints = WaypointMgr.GetPath(path_id); i_currentNode = 0; if(waypoints && waypoints->size()) @@ -226,7 +226,7 @@ template bool WaypointMovementGenerator<Player>::Update(Player &, const uint32 & template void WaypointMovementGenerator<Player>::MovementInform(Player &); //----------------------------------------------------// -void FlightPathMovementGenerator::LoadPath(Player &) +void FlightPathMovementGenerator::SetWaypointPathId(Player &) { objmgr.GetTaxiPathNodes(i_pathId, i_path,i_mapIds); } @@ -251,7 +251,8 @@ void FlightPathMovementGenerator::Initialize(Player &player) player.getHostilRefManager().setOnlineOfflineState(false); player.addUnitState(UNIT_STAT_IN_FLIGHT); player.SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT); - LoadPath(player); + player.AddUnitMovementFlag(MOVEMENTFLAG_FLYING2); + SetWaypointPathId(player); Traveller<Player> traveller(player); // do not send movement, it was sent already i_destinationHolder.SetDestination(traveller, i_path[i_currentNode].x, i_path[i_currentNode].y, i_path[i_currentNode].z, false); @@ -270,6 +271,7 @@ void FlightPathMovementGenerator::Finalize(Player & player) player.Unmount(); player.RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT); + player.RemoveUnitMovementFlag(MOVEMENTFLAG_FLYING2); if(player.m_taxi.empty()) { diff --git a/src/game/WaypointMovementGenerator.h b/src/game/WaypointMovementGenerator.h index 9804c150d63..9c93486a675 100644 --- a/src/game/WaypointMovementGenerator.h +++ b/src/game/WaypointMovementGenerator.h @@ -50,7 +50,7 @@ class TRINITY_DLL_SPEC PathMovementBase bool MovementInProgress(void) const { return i_currentNode < i_path.Size(); } - void LoadPath(T &); + void SetWaypointPathId(T &); void ReloadPath(T &); uint32 GetCurrentNode() const { return i_currentNode; } @@ -104,7 +104,7 @@ public PathMovementBase<Player> bool Update(Player &, const uint32 &); MovementGeneratorType GetMovementGeneratorType() { return FLIGHT_MOTION_TYPE; } - void LoadPath(Player &); + void SetWaypointPathId(Player &); void ReloadPath(Player &) { /* don't reload flight path */ } Path& GetPath() { return i_path; } diff --git a/src/game/World.cpp b/src/game/World.cpp index fa44e527da5..665fb6d4bdc 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -792,7 +792,9 @@ void World::LoadConfigSettings(bool reload) m_configs[CONFIG_GM_IN_GM_LIST] = sConfig.GetBoolDefault("GM.InGMList", false); m_configs[CONFIG_GM_IN_WHO_LIST] = sConfig.GetBoolDefault("GM.InWhoList", false); m_configs[CONFIG_GM_LOG_TRADE] = sConfig.GetBoolDefault("GM.LogTrade", false); - m_configs[CONFIG_START_GM_LEVEL] = sConfig.GetIntDefault("GM.StartLevel", 1); + m_configs[CONFIG_START_GM_LEVEL] = sConfig.GetIntDefault("GM.StartLevel", 1); + m_configs[CONFIG_ALLOW_GM_GROUP] = sConfig.GetBoolDefault("GM.AllowInvite", false); + m_configs[CONFIG_ALLOW_GM_FRIEND] = sConfig.GetBoolDefault("GM.AllowFriend", false); if(m_configs[CONFIG_START_GM_LEVEL] < m_configs[CONFIG_START_PLAYER_LEVEL]) { sLog.outError("GM.StartLevel (%i) must be in range StartPlayerLevel(%u)..%u. Set to %u.", diff --git a/src/game/World.h b/src/game/World.h index 27075885368..62648ebce2c 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -141,6 +141,8 @@ enum WorldConfigs CONFIG_GM_IN_GM_LIST, CONFIG_GM_IN_WHO_LIST, CONFIG_GM_LOG_TRADE, + CONFIG_ALLOW_GM_GROUP, + CONFIG_ALLOW_GM_FRIEND, CONFIG_START_GM_LEVEL, CONFIG_GM_LOWER_SECURITY, CONFIG_GM_ALLOW_ACHIEVEMENT_GAINS, @@ -626,7 +628,7 @@ class World static float m_VisibleObjectGreyDistance; // CLI command holder to be thread safe - ZThread::LockedQueue<CliCommandHolder*, ZThread::FastMutex> cliCmdQueue; + ACE_Based::LockedQueue<CliCommandHolder*,ACE_Thread_Mutex> cliCmdQueue; SqlResultQueue *m_resultQueue; // next daily quests reset time @@ -637,7 +639,7 @@ class World //sessions that are added async void AddSession_(WorldSession* s); - ZThread::LockedQueue<WorldSession*, ZThread::FastMutex> addSessQueue; + ACE_Based::LockedQueue<WorldSession*, ACE_Thread_Mutex> addSessQueue; //used versions std::string m_DBVersion; diff --git a/src/game/WorldLog.cpp b/src/game/WorldLog.cpp index 52eb1e8b59c..978514ac7d7 100644 --- a/src/game/WorldLog.cpp +++ b/src/game/WorldLog.cpp @@ -27,9 +27,9 @@ #include "Config/ConfigEnv.h" #include "Log.h" -#define CLASS_LOCK Trinity::ClassLevelLockable<WorldLog, ZThread::FastMutex> +#define CLASS_LOCK MaNGOS::ClassLevelLockable<WorldLog, ACE_Thread_Mutex> INSTANTIATE_SINGLETON_2(WorldLog, CLASS_LOCK); -INSTANTIATE_CLASS_MUTEX(WorldLog, ZThread::FastMutex); +INSTANTIATE_CLASS_MUTEX(WorldLog, ACE_Thread_Mutex); #define WORLD_LOG_FILE_STRING "world.log" diff --git a/src/game/WorldLog.h b/src/game/WorldLog.h index 01f34535dd9..e6b72e654f7 100644 --- a/src/game/WorldLog.h +++ b/src/game/WorldLog.h @@ -32,13 +32,13 @@ #include <stdarg.h> /// %Log packets to a file -class TRINITY_DLL_DECL WorldLog : public Trinity::Singleton<WorldLog, Trinity::ClassLevelLockable<WorldLog, ZThread::FastMutex> > +class MANGOS_DLL_DECL WorldLog : public MaNGOS::Singleton<WorldLog, MaNGOS::ClassLevelLockable<WorldLog, ACE_Thread_Mutex> > { friend class Trinity::OperatorNew<WorldLog>; WorldLog(); WorldLog(const WorldLog &); WorldLog& operator=(const WorldLog &); - typedef Trinity::ClassLevelLockable<WorldLog, ZThread::FastMutex>::Lock Guard; + typedef MaNGOS::ClassLevelLockable<WorldLog, ACE_Thread_Mutex>::Lock Guard; /// Close the file in destructor ~WorldLog(); diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h index d514586957a..a8d6db72809 100644 --- a/src/game/WorldSession.h +++ b/src/game/WorldSession.h @@ -719,8 +719,7 @@ class TRINITY_DLL_SPEC WorldSession uint32 m_latency; AccountData m_accountData[NUM_ACCOUNT_DATA_TYPES]; AddonsList m_addonsList; - - ZThread::LockedQueue<WorldPacket*,ZThread::FastMutex> _recvQueue; + ACE_Based::LockedQueue<WorldPacket*, ACE_Thread_Mutex> _recvQueue; }; #endif /// @} diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt index 8ecfccad34f..b271e2b9545 100644 --- a/src/shared/CMakeLists.txt +++ b/src/shared/CMakeLists.txt @@ -14,6 +14,7 @@ SET(shared_STAT_SRCS Log.h ProgressBar.cpp ProgressBar.h + Threading.cpp Timer.h Util.cpp Util.h @@ -22,3 +23,7 @@ SET(shared_STAT_SRCS ) add_library(shared STATIC ${shared_STAT_SRCS}) +target_link_libraries( +shared +${ACE_LIBRARY} +) diff --git a/src/shared/Common.h b/src/shared/Common.h index abe804bb3a4..37ced4c8e11 100644 --- a/src/shared/Common.h +++ b/src/shared/Common.h @@ -62,26 +62,17 @@ #include "Platform/Define.h" #if COMPILER == COMPILER_MICROSOFT - -#pragma warning(disable:4996) - +# pragma warning(disable:4996) // 'function': was declared deprecated #ifndef __SHOW_STUPID_WARNINGS__ - -#pragma warning(disable:4244) - -#pragma warning(disable:4267) - -#pragma warning(disable:4800) - -#pragma warning(disable:4018) - -#pragma warning(disable:4311) - -#pragma warning(disable:4305) - -#pragma warning(disable:4005) - -#pragma warning(disable:4522)//warning when class has 2 constructosr +# pragma warning(disable:4005) // 'identifier' : macro redefinition +# pragma warning(disable:4018) // 'expression' : signed/unsigned mismatch +# pragma warning(disable:4244) // 'argument' : conversion from 'type1' to 'type2', possible loss of data +# pragma warning(disable:4267) // 'var' : conversion from 'size_t' to 'type', possible loss of data +# pragma warning(disable:4305) // 'identifier' : truncation from 'type1' to 'type2' +# pragma warning(disable:4311) // 'variable' : pointer truncation from 'type' to 'type' +# pragma warning(disable:4355) // 'this' : used in base member initializer list +# pragma warning(disable:4800) // 'type' : forcing value to bool 'true' or 'false' (performance warning) +# pragma warning(disable:4522) //warning when class has 2 constructosr #endif // __SHOW_STUPID_WARNINGS__ #endif // __GNUC__ @@ -93,6 +84,7 @@ #include <math.h> #include <errno.h> #include <signal.h> +#include <assert.h> #if PLATFORM == PLATFORM_WINDOWS #define STRCASECMP stricmp @@ -108,10 +100,13 @@ #include <sstream> #include <algorithm> -#include <zthread/FastMutex.h> -#include <zthread/LockedQueue.h> -#include <zthread/Runnable.h> -#include <zthread/Thread.h> +#include "LockedQueue.h" +#include "Threading.h" + +#include <ace/Guard_T.h> +#include <ace/RW_Thread_Mutex.h> +#include <ace/Thread_Mutex.h> + #if PLATFORM == PLATFORM_WINDOWS # define FD_SETSIZE 4096 diff --git a/src/shared/Database/Database.cpp b/src/shared/Database/Database.cpp index 07ece3b0cd9..d5ccc581232 100644 --- a/src/shared/Database/Database.cpp +++ b/src/shared/Database/Database.cpp @@ -110,7 +110,8 @@ bool Database::PExecuteLog(const char * format,...) void Database::SetResultQueue(SqlResultQueue * queue) { - m_queryQueues[ZThread::ThreadImpl::current()] = queue; + m_queryQueues[ACE_Based::Thread::current()] = queue; + } QueryResult* Database::PQuery(const char *format,...) diff --git a/src/shared/Database/Database.h b/src/shared/Database/Database.h index 92a1c991dcc..a9f7285c223 100644 --- a/src/shared/Database/Database.h +++ b/src/shared/Database/Database.h @@ -21,8 +21,7 @@ #ifndef DATABASE_H #define DATABASE_H -#include "zthread/Thread.h" -#include "../src/zthread/ThreadImpl.h" +#include "Threading.h" #include "Utilities/UnorderedMap.h" #include "Database/SqlDelayThread.h" @@ -30,8 +29,8 @@ class SqlTransaction; class SqlResultQueue; class SqlQueryHolder; -typedef UNORDERED_MAP<ZThread::ThreadImpl*, SqlTransaction*> TransactionQueues; -typedef UNORDERED_MAP<ZThread::ThreadImpl*, SqlResultQueue*> QueryQueues; +typedef UNORDERED_MAP<ACE_Based::Thread* , SqlTransaction*> TransactionQueues; +typedef UNORDERED_MAP<ACE_Based::Thread* , SqlResultQueue*> QueryQueues; #define MAX_QUERY_LEN 32*1024 @@ -43,7 +42,7 @@ class TRINITY_DLL_SPEC Database TransactionQueues m_tranQueues; ///< Transaction queues from diff. threads QueryQueues m_queryQueues; ///< Query queues from diff threads SqlDelayThread* m_threadBody; ///< Pointer to delay sql executer - ZThread::Thread* m_delayThread; ///< Pointer to executer thread + ACE_Based::Thread* m_delayThread; ///< Pointer to executer thread public: diff --git a/src/shared/Database/DatabaseImpl.h b/src/shared/Database/DatabaseImpl.h index 3d3c53f0873..7cbd0ed8ba5 100644 --- a/src/shared/Database/DatabaseImpl.h +++ b/src/shared/Database/DatabaseImpl.h @@ -29,7 +29,7 @@ QueryQueues::iterator queue_itr; \ \ { \ - ZThread::ThreadImpl * queryThread = ZThread::ThreadImpl::current(); \ + ACE_Based::Thread * queryThread = ACE_Based::Thread::current(); \ queue_itr = m_queryQueues.find(queryThread); \ if (queue_itr == m_queryQueues.end()) return false; \ } @@ -59,7 +59,7 @@ QueryQueues::iterator queue_itr; \ \ { \ - ZThread::ThreadImpl * queryThread = ZThread::ThreadImpl::current(); \ + ACE_Based::Thread * queryThread = ACE_Based::Thread::current(); \ queue_itr = m_queryQueues.find(queryThread); \ if (queue_itr == m_queryQueues.end()) return false; \ } diff --git a/src/shared/Database/DatabaseMysql.cpp b/src/shared/Database/DatabaseMysql.cpp index 5dc02c0a738..9574d3dc2ac 100644 --- a/src/shared/Database/DatabaseMysql.cpp +++ b/src/shared/Database/DatabaseMysql.cpp @@ -23,7 +23,7 @@ #include "Util.h" #include "Policies/SingletonImp.h" #include "Platform/Define.h" -#include "../src/zthread/ThreadImpl.h" +#include "Threading.h" #include "DatabaseEnv.h" #include "Database/MySQLDelayThread.h" #include "Database/SqlOperations.h" @@ -203,8 +203,8 @@ QueryResult* DatabaseMysql::Query(const char *sql) { // guarded block for thread-safe mySQL request - ZThread::Guard<ZThread::FastMutex> query_connection_guard(mMutex); - #ifdef TRINITY_DEBUG + ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); + #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif if(mysql_query(mMysql, sql)) @@ -251,7 +251,7 @@ bool DatabaseMysql::Execute(const char *sql) // don't use queued execution if it has not been initialized if (!m_threadBody) return DirectExecute(sql); - tranThread = ZThread::ThreadImpl::current(); // owner of this transaction + tranThread = ACE_Based::Thread::current(); // owner of this transaction TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) { // Statement for transaction @@ -273,8 +273,9 @@ bool DatabaseMysql::DirectExecute(const char* sql) { // guarded block for thread-safe mySQL request - ZThread::Guard<ZThread::FastMutex> query_connection_guard(mMutex); - #ifdef TRINITY_DEBUG + ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); + + #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif if(mysql_query(mMysql, sql)) @@ -318,8 +319,9 @@ bool DatabaseMysql::BeginTransaction() // don't use queued execution if it has not been initialized if (!m_threadBody) { - if (tranThread==ZThread::ThreadImpl::current()) + if (tranThread == ACE_Based::Thread::current()) return false; // huh? this thread already started transaction + mMutex.acquire(); if (!_TransactionCmd("START TRANSACTION")) { @@ -329,7 +331,7 @@ bool DatabaseMysql::BeginTransaction() return true; // transaction started } - tranThread = ZThread::ThreadImpl::current(); // owner of this transaction + tranThread = ACE_Based::Thread::current(); // owner of this transaction TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) // If for thread exists queue and also contains transaction @@ -349,7 +351,7 @@ bool DatabaseMysql::CommitTransaction() // don't use queued execution if it has not been initialized if (!m_threadBody) { - if (tranThread!=ZThread::ThreadImpl::current()) + if (tranThread != ACE_Based::Thread::current()) return false; bool _res = _TransactionCmd("COMMIT"); tranThread = NULL; @@ -357,7 +359,7 @@ bool DatabaseMysql::CommitTransaction() return _res; } - tranThread = ZThread::ThreadImpl::current(); + tranThread = ACE_Based::Thread::current(); TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) { @@ -377,7 +379,7 @@ bool DatabaseMysql::RollbackTransaction() // don't use queued execution if it has not been initialized if (!m_threadBody) { - if (tranThread!=ZThread::ThreadImpl::current()) + if (tranThread != ACE_Based::Thread::current()) return false; bool _res = _TransactionCmd("ROLLBACK"); tranThread = NULL; @@ -385,7 +387,7 @@ bool DatabaseMysql::RollbackTransaction() return _res; } - tranThread = ZThread::ThreadImpl::current(); + tranThread = ACE_Based::Thread::current(); TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) { @@ -408,7 +410,8 @@ void DatabaseMysql::InitDelayThread() assert(!m_delayThread); //New delay thread for delay execute - m_delayThread = new ZThread::Thread(m_threadBody = new MySQLDelayThread(this)); + m_threadBody = new MySQLDelayThread(this); + m_delayThread = new ACE_Based::Thread(*m_threadBody); } void DatabaseMysql::HaltDelayThread() diff --git a/src/shared/Database/DatabaseMysql.h b/src/shared/Database/DatabaseMysql.h index 2fa157e75a5..7f5730f9579 100644 --- a/src/shared/Database/DatabaseMysql.h +++ b/src/shared/Database/DatabaseMysql.h @@ -25,7 +25,8 @@ #include "Database.h" #include "Policies/Singleton.h" -#include "zthread/FastMutex.h" +#include "ace/Thread_Mutex.h" +#include "ace/Guard_T.h" #ifdef WIN32 #define FD_SETSIZE 1024 @@ -65,9 +66,9 @@ class TRINITY_DLL_SPEC DatabaseMysql : public Database // must be call before finish thread run void ThreadEnd(); private: - ZThread::FastMutex mMutex; + ACE_Thread_Mutex mMutex; - ZThread::ThreadImpl* tranThread; + ACE_Based::Thread * tranThread; MYSQL *mMysql; diff --git a/src/shared/Database/DatabasePostgre.cpp b/src/shared/Database/DatabasePostgre.cpp index 79e1c87f5e3..12875b33200 100644 --- a/src/shared/Database/DatabasePostgre.cpp +++ b/src/shared/Database/DatabasePostgre.cpp @@ -23,7 +23,7 @@ #include "Util.h" #include "Policies/SingletonImp.h" #include "Platform/Define.h" -#include "../src/zthread/ThreadImpl.h" +#include "Threading.h" #include "DatabaseEnv.h" #include "Database/PGSQLDelayThread.h" #include "Database/SqlOperations.h" @@ -126,8 +126,8 @@ QueryResult* DatabasePostgre::Query(const char *sql) uint32 fieldCount = 0; // guarded block for thread-safe request - ZThread::Guard<ZThread::FastMutex> query_connection_guard(mMutex); - #ifdef TRINITY_DEBUG + ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); + #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif // Send the query @@ -174,9 +174,10 @@ bool DatabasePostgre::Execute(const char *sql) return false; // don't use queued execution if it has not been initialized - if (!m_threadBody) return DirectExecute(sql); + if (!m_threadBody) + return DirectExecute(sql); - tranThread = ZThread::ThreadImpl::current(); // owner of this transaction + tranThread = ACE_Based::Thread::current(); // owner of this transaction TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) { // Statement for transaction @@ -197,8 +198,8 @@ bool DatabasePostgre::DirectExecute(const char* sql) return false; { // guarded block for thread-safe request - ZThread::Guard<ZThread::FastMutex> query_connection_guard(mMutex); - #ifdef TRINITY_DEBUG + ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); + #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif PGresult *res = PQexec(mPGconn, sql); @@ -247,7 +248,7 @@ bool DatabasePostgre::BeginTransaction() // don't use queued execution if it has not been initialized if (!m_threadBody) { - if (tranThread==ZThread::ThreadImpl::current()) + if (tranThread == ACE_Based::Thread::current()) return false; // huh? this thread already started transaction mMutex.acquire(); if (!_TransactionCmd("START TRANSACTION")) @@ -258,7 +259,7 @@ bool DatabasePostgre::BeginTransaction() return true; } // transaction started - tranThread = ZThread::ThreadImpl::current(); // owner of this transaction + tranThread = ACE_Based::Thread::current(); // owner of this transaction TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) // If for thread exists queue and also contains transaction @@ -278,14 +279,14 @@ bool DatabasePostgre::CommitTransaction() // don't use queued execution if it has not been initialized if (!m_threadBody) { - if (tranThread!=ZThread::ThreadImpl::current()) + if (tranThread != ACE_Based::Thread::current()) return false; bool _res = _TransactionCmd("COMMIT"); tranThread = NULL; mMutex.release(); return _res; } - tranThread = ZThread::ThreadImpl::current(); + tranThread = ACE_Based::Thread::current(); TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) { @@ -304,14 +305,14 @@ bool DatabasePostgre::RollbackTransaction() // don't use queued execution if it has not been initialized if (!m_threadBody) { - if (tranThread!=ZThread::ThreadImpl::current()) + if (tranThread != ACE_Based::Thread::current()) return false; bool _res = _TransactionCmd("ROLLBACK"); tranThread = NULL; mMutex.release(); return _res; } - tranThread = ZThread::ThreadImpl::current(); + tranThread = ACE_Based::Thread::current(); TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) { @@ -334,7 +335,8 @@ void DatabasePostgre::InitDelayThread() assert(!m_delayThread); //New delay thread for delay execute - m_delayThread = new ZThread::Thread(m_threadBody = new PGSQLDelayThread(this)); + m_threadBody = new PGSQLDelayThread(this); + m_delayThread = new ACE_Based::Thread(*m_threadBody); } void DatabasePostgre::HaltDelayThread() diff --git a/src/shared/Database/DatabasePostgre.h b/src/shared/Database/DatabasePostgre.h index c7242add572..53f0802f86c 100644 --- a/src/shared/Database/DatabasePostgre.h +++ b/src/shared/Database/DatabasePostgre.h @@ -22,7 +22,6 @@ #define _DatabasePostgre_H #include "Policies/Singleton.h" -#include "zthread/FastMutex.h" #include <stdarg.h> #ifdef WIN32 @@ -63,10 +62,8 @@ class DatabasePostgre : public Database // must be call before finish thread run void ThreadEnd(); private: - ZThread::FastMutex mMutex; - ZThread::FastMutex tranMutex; - - ZThread::ThreadImpl* tranThread; + ACE_Thread_Mutex mMutex; + ACE_Based::Thread * tranThread; PGconn *mPGconn; diff --git a/src/shared/Database/QueryResult.h b/src/shared/Database/QueryResult.h index 01da45ed281..39228dd4ba9 100644 --- a/src/shared/Database/QueryResult.h +++ b/src/shared/Database/QueryResult.h @@ -40,7 +40,7 @@ class TRINITY_DLL_SPEC QueryResult if(iter->second == name) return iter->first; } - assert(false && "unknown field name"); + ASSERT(false && "unknown field name"); return uint32(-1); } diff --git a/src/shared/Database/SQLStorage.cpp b/src/shared/Database/SQLStorage.cpp index 8561afc4a33..67091174c77 100644 --- a/src/shared/Database/SQLStorage.cpp +++ b/src/shared/Database/SQLStorage.cpp @@ -29,9 +29,9 @@ extern DatabaseMysql WorldDatabase; const char CreatureInfosrcfmt[]="iiiiiisssiiiiiiiiiiffiffiiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifflliiis"; const char CreatureInfodstfmt[]="iiiiiisssiiiiiiiiiiffiffiiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifflliiii"; -const char CreatureDataAddonInfofmt[]="iiiiiiiis"; +const char CreatureDataAddonInfofmt[]="iiiiiiis"; const char CreatureModelfmt[]="iffbi"; -const char CreatureInfoAddonInfofmt[]="iiiiiiiis"; +const char CreatureInfoAddonInfofmt[]="iiiiiiis"; const char EquipmentInfofmt[]="iiii"; const char GameObjectInfosrcfmt[]="iiisssiifiiiiiiiiiiiiiiiiiiiiiiiis"; const char GameObjectInfodstfmt[]="iiisssiifiiiiiiiiiiiiiiiiiiiiiiiii"; diff --git a/src/shared/Database/SqlDelayThread.cpp b/src/shared/Database/SqlDelayThread.cpp index 27f58510a0a..9a92fd5dd63 100644 --- a/src/shared/Database/SqlDelayThread.cpp +++ b/src/shared/Database/SqlDelayThread.cpp @@ -37,7 +37,7 @@ void SqlDelayThread::run() { // if the running state gets turned off while sleeping // empty the queue before exiting - ZThread::Thread::sleep(10); + ACE_Based::Thread::Sleep(10); while (!m_sqlQueue.empty()) { s = m_sqlQueue.next(); diff --git a/src/shared/Database/SqlDelayThread.h b/src/shared/Database/SqlDelayThread.h index cbae0c1e5eb..3c24d3525b7 100644 --- a/src/shared/Database/SqlDelayThread.h +++ b/src/shared/Database/SqlDelayThread.h @@ -21,21 +21,22 @@ #ifndef __SQLDELAYTHREAD_H #define __SQLDELAYTHREAD_H -#include "zthread/Thread.h" -#include "zthread/Runnable.h" -#include "zthread/FastMutex.h" -#include "zthread/LockedQueue.h" +#include "ace/Thread_Mutex.h" +#include "LockedQueue.h" +#include "Threading.h" + class Database; class SqlOperation; -class SqlDelayThread : public ZThread::Runnable +class SqlDelayThread : public ACE_Based::Runnable { - typedef ZThread::LockedQueue<SqlOperation*, ZThread::FastMutex> SqlQueue; + typedef ACE_Based::LockedQueue<SqlOperation*, ACE_Thread_Mutex> SqlQueue; + private: SqlQueue m_sqlQueue; ///< Queue of SQL statements Database* m_dbEngine; ///< Pointer to used Database engine - bool m_running; + volatile bool m_running; SqlDelayThread(); public: diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h index 61eef4bb7c4..e91d83b6611 100644 --- a/src/shared/Database/SqlOperations.h +++ b/src/shared/Database/SqlOperations.h @@ -23,9 +23,8 @@ #include "Common.h" -#include "zthread/LockedQueue.h" -#include "zthread/FastMutex.h" -#include "zthread/Thread.h" +#include "ace/Thread_Mutex.h" +#include "LockedQueue.h" #include <queue> #include "Utilities/Callback.h" @@ -72,7 +71,7 @@ class SqlResultQueue; /// queue for thread class SqlQueryHolder; /// groups several async quries class SqlQueryHolderEx; /// points to a holder, added to the delay thread -class SqlResultQueue : public ZThread::LockedQueue<Trinity::IQueryCallback*, ZThread::FastMutex> +class SqlResultQueue : public ACE_Based::LockedQueue<MaNGOS::IQueryCallback* , ACE_Thread_Mutex> { public: SqlResultQueue() {} diff --git a/src/shared/LockedQueue.h b/src/shared/LockedQueue.h new file mode 100644 index 00000000000..b085dd09b83 --- /dev/null +++ b/src/shared/LockedQueue.h @@ -0,0 +1,144 @@ +/* + * Copyright (C) 2009 MaNGOS <http://getmangos.com/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef LOCKEDQUEUE_H +#define LOCKEDQUEUE_H + +#include <ace/Guard_T.h> +#include <ace/Thread_Mutex.h> +#include <deque> +#include <assert.h> +#include "Errors.h" + +namespace ACE_Based +{ + + template <class T, class LockType, typename StorageType=std::deque<T> > + class LockedQueue + { + + //! Serialize access to the Queue + LockType _lock; + + //! Storage backing the queue + StorageType _queue; + + //! Cancellation flag + volatile bool _canceled; + + public: + + //! Create a LockedQueue + LockedQueue() : _canceled(false) {} + + //! Destroy a LockedQueue + virtual ~LockedQueue() { } + + /** + * @see Queue::add(const T& item) + */ + void add(const T& item) + { + + ACE_Guard<LockType> g(_lock); + + ASSERT(!_canceled); + // throw Cancellation_Exception(); + + _queue.push_back(item); + + } + + /** + * @see Queue::next() + */ + T next() + { + + ACE_Guard<LockType> g(_lock); + + ASSERT (!_queue.empty() || !_canceled); + // throw Cancellation_Exception(); + + T item = _queue.front(); + _queue.pop_front(); + + return item; + + } + + T front() + { + ACE_Guard<LockType> g(_lock); + + ASSERT (!_queue.empty()); + // throw NoSuchElement_Exception(); + + return _queue.front(); + } + + /** + * @see Queue::cancel() + */ + void cancel() + { + + ACE_Guard<LockType> g(_lock); + + _canceled = true; + + } + + /** + * @see Queue::isCanceled() + */ + bool isCanceled() + { + + // Faster check since the queue will not become un-canceled + if(_canceled) + return true; + + ACE_Guard<LockType> g(_lock); + + return _canceled; + + } + + /** + * @see Queue::size() + */ + size_t size() + { + + ACE_Guard<LockType> g(_lock); + return _queue.size(); + + } + + bool empty() + { + + ACE_Guard<LockType> g(_lock); + return _queue.empty(); + } + + }; + +} +#endif diff --git a/src/shared/Log.h b/src/shared/Log.h index 654f3c0f04c..23555995020 100644 --- a/src/shared/Log.h +++ b/src/shared/Log.h @@ -82,7 +82,7 @@ enum ColorTypes const int Colors = int(WHITE)+1; -class Log : public Trinity::Singleton<Log, Trinity::ClassLevelLockable<Log, ZThread::FastMutex> > +class Log : public Trinity::Singleton<Log, Trinity::ClassLevelLockable<Log, ACE_Thread_Mutex> > { friend class Trinity::OperatorNew<Log>; Log(); diff --git a/src/shared/Makefile.am b/src/shared/Makefile.am index 6b99351cb26..60af5b8a4b5 100644 --- a/src/shared/Makefile.am +++ b/src/shared/Makefile.am @@ -38,6 +38,7 @@ libmangosshared_a_SOURCES = \ Common.cpp \ Common.h \ Errors.h \ + LockedQueue.h \ Log.cpp \ Log.h \ MemoryLeaks.cpp \ @@ -45,6 +46,8 @@ libmangosshared_a_SOURCES = \ ProgressBar.cpp \ ProgressBar.h \ Timer.h \ + Threading.cpp \ + Threading.h \ Util.cpp \ Util.h \ WorldPacket.h \ diff --git a/src/shared/MemoryLeaks.h b/src/shared/MemoryLeaks.h index fcea1f557b1..c8b8fb8e1b1 100644 --- a/src/shared/MemoryLeaks.h +++ b/src/shared/MemoryLeaks.h @@ -31,9 +31,9 @@ //# include <stdlib.h> //# include <crtdbg.h> #else -# define _CRTDBG_MAP_ALLOC -# include <stdlib.h> -# include <crtdbg.h> +//# define _CRTDBG_MAP_ALLOC +//# include <stdlib.h> +//# include <crtdbg.h> #endif #endif diff --git a/src/shared/Threading.cpp b/src/shared/Threading.cpp new file mode 100644 index 00000000000..496e86353ca --- /dev/null +++ b/src/shared/Threading.cpp @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2009 MaNGOS <http://getmangos.com/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Threading.h" +#include <ace/OS_NS_unistd.h> +#include <ace/Sched_Params.h> +#include <vector> + +using namespace ACE_Based; + +ThreadPriority::ThreadPriority() +{ + for (int i = Idle; i < MAXPRIORITYNUM; ++i) + m_priority[i] = ACE_THR_PRI_OTHER_DEF; + + m_priority[Idle] = ACE_Sched_Params::priority_min(ACE_SCHED_OTHER); + m_priority[Realtime] = ACE_Sched_Params::priority_max(ACE_SCHED_OTHER); + + std::vector<int> _tmp; + + ACE_Sched_Params::Policy _policy = ACE_SCHED_OTHER; + ACE_Sched_Priority_Iterator pr_iter(_policy); + + while (pr_iter.more()) + { + _tmp.push_back(pr_iter.priority()); + pr_iter.next(); + } + + ASSERT (!_tmp.empty()); + + if(_tmp.size() >= MAXPRIORITYNUM) + { + const size_t max_pos = _tmp.size(); + size_t min_pos = 1; + size_t norm_pos = 0; + for (size_t i = 0; i < max_pos; ++i) + { + if(_tmp[i] == ACE_THR_PRI_OTHER_DEF) + { + norm_pos = i + 1; + break; + } + } + + //since we have only 7(seven) values in enum Priority + //and 3 we know already (Idle, Normal, Realtime) so + //we need to split each list [Idle...Normal] and [Normal...Realtime] + //into ¹ piesces + const size_t _divider = 4; + size_t _div = (norm_pos - min_pos) / _divider; + if(_div == 0) + _div = 1; + + min_pos = (norm_pos - 1); + + m_priority[Low] = _tmp[min_pos -= _div]; + m_priority[Lowest] = _tmp[min_pos -= _div ]; + + _div = (max_pos - norm_pos) / _divider; + if(_div == 0) + _div = 1; + + min_pos = norm_pos - 1; + + m_priority[High] = _tmp[min_pos += _div]; + m_priority[Highest] = _tmp[min_pos += _div]; + } +} + +int ThreadPriority::getPriority(Priority p) const +{ + if(p < Idle) + p = Idle; + + if(p > Realtime) + p = Realtime; + + return m_priority[p]; +} + +#define THREADFLAG (THR_NEW_LWP | THR_SCHED_DEFAULT| THR_JOINABLE) + +Thread::Thread() : m_task(0), m_iThreadId(0), m_hThreadHandle(0) +{ + +} + +Thread::Thread(Runnable& instance) : m_task(&instance), m_iThreadId(0), m_hThreadHandle(0) +{ + bool _start = start(); + ASSERT (_start); +} + +Thread::~Thread() +{ + //Wait(); +} + +//initialize Thread's class static member +Thread::ThreadStorage Thread::m_ThreadStorage; +ThreadPriority Thread::m_TpEnum; + +bool Thread::start() +{ + if(m_task == 0 || m_iThreadId != 0) + return false; + + return (ACE_Thread::spawn(&Thread::ThreadTask, (void*)m_task, THREADFLAG, &m_iThreadId, &m_hThreadHandle) == 0); +} + +bool Thread::wait() +{ + if(!m_hThreadHandle || !m_task) + return false; + + ACE_THR_FUNC_RETURN _value = ACE_THR_FUNC_RETURN(-1); + int _res = ACE_Thread::join(m_hThreadHandle, &_value); + + m_iThreadId = 0; + m_hThreadHandle = 0; + + return (_res == 0); +} + +void Thread::destroy() +{ + ACE_Thread::kill(m_iThreadId, -1); +} + +void Thread::suspend() +{ + ACE_Thread::suspend(m_hThreadHandle); +} + +void Thread::resume() +{ + ACE_Thread::resume(m_hThreadHandle); +} + +ACE_THR_FUNC_RETURN Thread::ThreadTask(void * param) +{ + Runnable * _task = (Runnable*)param; + _task->run(); + + return (ACE_THR_FUNC_RETURN)0; +} + +ACE_thread_t Thread::currentId() +{ + return ACE_Thread::self(); +} + +ACE_hthread_t Thread::currentHandle() +{ + ACE_hthread_t _handle; + ACE_Thread::self(_handle); + + return _handle; +} + +Thread * Thread::current() +{ + Thread * _thread = m_ThreadStorage.ts_object(); + if(!_thread) + { + _thread = new Thread(); + _thread->m_iThreadId = Thread::currentId(); + _thread->m_hThreadHandle = Thread::currentHandle(); + + Thread * _oldValue = m_ThreadStorage.ts_object(_thread); + if(_oldValue) + delete _oldValue; + } + + return _thread; +} + +void Thread::setPriority(Priority type) +{ + int _priority = m_TpEnum.getPriority(type); + int _ok = ACE_Thread::setprio(m_hThreadHandle, _priority); + //remove this ASSERT in case you don't want to know is thread priority change was successful or not + ASSERT (_ok == 0); +} + +void Thread::Sleep(unsigned long msecs) +{ + ACE_OS::sleep(ACE_Time_Value(0, 1000 * msecs)); +} diff --git a/src/shared/Threading.h b/src/shared/Threading.h new file mode 100644 index 00000000000..eac3c0e8efb --- /dev/null +++ b/src/shared/Threading.h @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2009 MaNGOS <http://getmangos.com/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef THREADING_H +#define THREADING_H + +#include <ace/Thread.h> +#include <ace/TSS_T.h> +#include <assert.h> +#include "Errors.h" + +namespace ACE_Based +{ + + class Runnable + { + public: + virtual ~Runnable() {} + virtual void run() = 0; + }; + + enum Priority + { + Idle, + Lowest, + Low, + Normal, + High, + Highest, + Realtime, + }; + +#define MAXPRIORITYNUM (Realtime + 1) + + class ThreadPriority + { + public: + ThreadPriority(); + int getPriority(Priority p) const; + + private: + int m_priority[MAXPRIORITYNUM]; + }; + + class Thread + { + public: + Thread(); + Thread(Runnable& instance); + ~Thread(); + + bool start(); + bool wait(); + void destroy(); + + void suspend(); + void resume(); + + void setPriority(Priority type); + + static void Sleep(unsigned long msecs); + static ACE_thread_t currentId(); + static ACE_hthread_t currentHandle(); + static Thread * current(); + + private: + Thread(const Thread&); + Thread& operator=(const Thread&); + + static ACE_THR_FUNC_RETURN ThreadTask(void * param); + + ACE_thread_t m_iThreadId; + ACE_hthread_t m_hThreadHandle; + Runnable * m_task; + + typedef ACE_TSS<Thread> ThreadStorage; + //global object - container for Thread class representation of every thread + static ThreadStorage m_ThreadStorage; + //use this object to determine current OS thread priority values mapped to enum Priority{} + static ThreadPriority m_TpEnum; + }; + +} +#endif diff --git a/src/shared/Util.cpp b/src/shared/Util.cpp index 767b65e441c..ac57fc3c9e9 100644 --- a/src/shared/Util.cpp +++ b/src/shared/Util.cpp @@ -23,40 +23,34 @@ #include "sockets/socket_include.h" #include "utf8cpp/utf8.h" #include "mersennetwister/MersenneTwister.h" -#include "zthread/ThreadLocal.h" +#include <ace/TSS_T.h> -typedef ZThread::ThreadLocal<MTRand> MTRandTSS; - -/* NOTE: Not sure if static initialization is ok for TSS objects , - * as I see zthread uses custom implementation of the TSS - * ,and in the consturctor there is no code ,so I suppose its ok - * If its not ok ,change it to use singleton. - */ +typedef ACE_TSS<MTRand> MTRandTSS; static MTRandTSS mtRand; int32 irand (int32 min, int32 max) { - return int32 (mtRand.get ().randInt (max - min)) + min; + return int32 (mtRand->randInt (max - min)) + min; } uint32 urand (uint32 min, uint32 max) { - return mtRand.get ().randInt (max - min) + min; + return mtRand->randInt (max - min) + min; } int32 rand32 () { - return mtRand.get ().randInt (); + return mtRand->randInt (); } double rand_norm(void) { - return mtRand.get ().randExc (); + return mtRand->randExc (); } double rand_chance (void) { - return mtRand.get ().randExc (100.0); + return mtRand->randExc (100.0); } Tokens StrSplit(const std::string &src, const std::string &sep) diff --git a/src/trinitycore/CliRunnable.cpp b/src/trinitycore/CliRunnable.cpp index 91f37cd1b48..d53ee8c24be 100644 --- a/src/trinitycore/CliRunnable.cpp +++ b/src/trinitycore/CliRunnable.cpp @@ -155,7 +155,7 @@ bool ChatHandler::HandleCharacterDeleteCommand(const char* args) } /// Exit the realm -bool ChatHandler::HandleServerExitCommand(const char* args) +bool ChatHandler::HandleServerExitCommand(const char* /*args*/) { SendSysMessage(LANG_COMMAND_EXIT); World::StopNow(SHUTDOWN_EXIT_CODE); @@ -163,7 +163,7 @@ bool ChatHandler::HandleServerExitCommand(const char* args) } /// Display info on users currently in the realm -bool ChatHandler::HandleAccountOnlineListCommand(const char* args) +bool ChatHandler::HandleAccountOnlineListCommand(const char* /*args*/) { ///- Get the list of accounts ID logged to the realm QueryResult *resultDB = CharacterDatabase.Query("SELECT name,account FROM characters WHERE online > 0"); diff --git a/src/trinitycore/CliRunnable.h b/src/trinitycore/CliRunnable.h index 20ff58f27ba..cf745bbb195 100644 --- a/src/trinitycore/CliRunnable.h +++ b/src/trinitycore/CliRunnable.h @@ -26,7 +26,7 @@ #define __CLIRUNNABLE_H /// Command Line Interface handling thread -class CliRunnable : public ZThread::Runnable +class CliRunnable : public ACE_Based::Runnable { public: void run(); diff --git a/src/trinitycore/Makefile.am b/src/trinitycore/Makefile.am index 7e1cd086d3c..f0ac432dab1 100644 --- a/src/trinitycore/Makefile.am +++ b/src/trinitycore/Makefile.am @@ -35,8 +35,13 @@ trinity_worldd_SOURCES = \ WorldRunnable.h ## Link world daemon against the shared library +<<<<<<< HEAD:src/mangosd/Makefile.am trinity_worldd_LDADD = ../bindings/scripts/libtrinityscript.la ../game/libmangosgame.a ../shared/Database/libmangosdatabase.a ../shared/Config/libmangosconfig.a ../shared/Auth/libmangosauth.a ../shared/libmangosshared.a ../shared/vmap/libmangosvmaps.a ../framework/libmangosframework.a ../../dep/src/sockets/libmangossockets.a ../../dep/src/zthread/libZThread.la ../../dep/src/g3dlite/libg3dlite.a trinity_worldd_LDFLAGS = -L../../dep/src/sockets -L../../dep/src/zthread -L../../dep/src/g3dlite -L../bindings/scripts/ -L$(libdir) $(TRINI_LIBS) -export-dynamic +======= +mangos_worldd_LDADD = ../bindings/universal/libmangosscript.la ../game/libmangosgame.a ../shared/Database/libmangosdatabase.a ../shared/Config/libmangosconfig.a ../shared/Auth/libmangosauth.a ../shared/libmangosshared.a ../shared/vmap/libmangosvmaps.a ../framework/libmangosframework.a ../../dep/src/sockets/libmangossockets.a ../../dep/src/g3dlite/libg3dlite.a +mangos_worldd_LDFLAGS = -L../../dep/src/sockets -L../../dep/src/g3dlite -L../bindings/universal/ -L$(libdir) $(MANGOS_LIBS) -export-dynamic +>>>>>>> 00c7d15a78b1dcdbf888b768c55424183b2231e4:src/mangosd/Makefile.am ## Additional files to include when running 'make dist' # Include world daemon configuration diff --git a/src/trinitycore/Master.cpp b/src/trinitycore/Master.cpp index 6a952b936d3..2e2d75d5c3c 100644 --- a/src/trinitycore/Master.cpp +++ b/src/trinitycore/Master.cpp @@ -60,7 +60,7 @@ INSTANTIATE_SINGLETON_1( Master ); volatile uint32 Master::m_masterLoopCounter = 0; -class FreezeDetectorRunnable : public ZThread::Runnable +class FreezeDetectorRunnable : public ACE_Based::Runnable { public: FreezeDetectorRunnable() { _delaytime = 0; } @@ -79,7 +79,7 @@ public: w_lastchange = 0; while(!World::IsStopped()) { - ZThread::Thread::sleep(1000); + ACE_Based::Thread::Sleep(1000); uint32 curtime = getMSTime(); //DEBUG_LOG("anti-freeze: time=%u, counters=[%u; %u]",curtime,Master::m_masterLoopCounter,World::m_worldLoopCounter); @@ -115,7 +115,7 @@ public: } }; -class RARunnable : public ZThread::Runnable +class RARunnable : public ACE_Based::Runnable { public: uint32 numLoops, loopCounter; @@ -181,7 +181,7 @@ public: { while (!World::IsStopped()) { - ZThread::Thread::sleep (static_cast<unsigned long> (socketSelecttime / 1000)); + ACE_Based::Thread::Sleep (static_cast<unsigned long> (socketSelecttime / 1000)); checkping (); } } @@ -237,8 +237,8 @@ int Master::Run() _HookSignals(); ///- Launch WorldRunnable thread - ZThread::Thread t(new WorldRunnable); - t.setPriority ((ZThread::Priority )2); + ACE_Based::Thread t(*new WorldRunnable); + t.setPriority ((ACE_Based::Priority )2); // set server online LoginDatabase.PExecute("UPDATE realmlist SET color = 0, population = 0 WHERE id = '%d'",realmID); @@ -250,10 +250,10 @@ int Master::Run() #endif { ///- Launch CliRunnable thread - ZThread::Thread td1(new CliRunnable); + ACE_Based::Thread td1(*new CliRunnable); } - ZThread::Thread td2(new RARunnable); + ACE_Based::Thread td2(*new RARunnable); ///- Handle affinity for multiple processors and process priority on Windows #ifdef WIN32 @@ -314,8 +314,8 @@ int Master::Run() { FreezeDetectorRunnable *fdr = new FreezeDetectorRunnable(); fdr->SetDelayTime(freeze_delay*1000); - ZThread::Thread t(fdr); - t.setPriority(ZThread::High); + ACE_Based::Thread t(*fdr); + t.setPriority(ACE_Based::High); } ///- Launch the world listener socket diff --git a/src/trinitycore/WorldRunnable.cpp b/src/trinitycore/WorldRunnable.cpp index e49e4ad74b8..bd4d3170c52 100644 --- a/src/trinitycore/WorldRunnable.cpp +++ b/src/trinitycore/WorldRunnable.cpp @@ -76,7 +76,7 @@ void WorldRunnable::run() if (diff <= WORLD_SLEEP_CONST+prevSleepTime) { prevSleepTime = WORLD_SLEEP_CONST+prevSleepTime-diff; - ZThread::Thread::sleep(prevSleepTime); + ACE_Based::Thread::Sleep(prevSleepTime); } else prevSleepTime = 0; diff --git a/src/trinitycore/WorldRunnable.h b/src/trinitycore/WorldRunnable.h index 8df3a6a0c89..07ce246b04f 100644 --- a/src/trinitycore/WorldRunnable.h +++ b/src/trinitycore/WorldRunnable.h @@ -26,7 +26,7 @@ #define __WORLDRUNNABLE_H /// Heartbeat thread for the World -class WorldRunnable : public ZThread::Runnable +class WorldRunnable : public ACE_Based::Runnable { public: void run(); diff --git a/src/trinitycore/trinitycore.conf.dist b/src/trinitycore/trinitycore.conf.dist index 018ddf378b5..2748c92529a 100644 --- a/src/trinitycore/trinitycore.conf.dist +++ b/src/trinitycore/trinitycore.conf.dist @@ -1006,6 +1006,16 @@ Channel.SilentlyGMJoin = 0 # GM starting level (1-100) # Default: 1 # +# GM.AllowInvite +# Is GM accepting invites from players by default or not +# Default: 0 (false) +# 1 (true) +# +# GM.AllowFriend +# Are players allowed to add GMs to their friend list +# Default: 0 (false) +# 1 (true) +# # GM.LowerSecurity # Disallow a lower security member to interact with a higher one using commands # Default: 0 (disable) @@ -1027,6 +1037,8 @@ GM.InGMList = 0 GM.InWhoList = 0 GM.LogTrade = 1 GM.StartLevel = 80 +GM.AllowInvite = 0 +GM.AllowFriend = 0 GM.LowerSecurity = 0 GM.AllowAchievementGain = 1 diff --git a/src/trinityrealm/AuthSocket.cpp b/src/trinityrealm/AuthSocket.cpp index c5c81593737..8c9eab653ec 100644 --- a/src/trinityrealm/AuthSocket.cpp +++ b/src/trinityrealm/AuthSocket.cpp @@ -173,7 +173,7 @@ typedef struct AuthHandler #endif /// Launch a thread to transfer a patch to the client -class PatcherRunnable: public ZThread::Runnable +class PatcherRunnable: public ACE_Based::Runnable { public: PatcherRunnable(class AuthSocket *); @@ -236,7 +236,8 @@ AuthSocket::AuthSocket(ISocketHandler &h) : TcpSocket(h) /// Close patch file descriptor before leaving AuthSocket::~AuthSocket() { - ZThread::Guard<ZThread::Mutex> g(patcherLock); + ACE_Guard<ACE_Thread_Mutex> g(patcherLock); + if(pPatch) fclose(pPatch); } @@ -912,7 +913,7 @@ bool AuthSocket::_HandleXferResume() ibuf.Read((char*)&start,sizeof(start)); fseek(pPatch,start,0); - ZThread::Thread u(new PatcherRunnable(this)); + ACE_Based::Thread u(*new PatcherRunnable(this)); return true; } @@ -924,7 +925,6 @@ bool AuthSocket::_HandleXferCancel() ///- Close and delete the socket ibuf.Remove(1); //clear input buffer - //ZThread::Thread::sleep(15); SetCloseAndDelete(); return true; @@ -946,8 +946,7 @@ bool AuthSocket::_HandleXferAccept() ibuf.Remove(1); //clear input buffer fseek(pPatch,0,0); - ZThread::Thread u(new PatcherRunnable(this)); - + ACE_Based::Thread u(*new PatcherRunnable(this)); return true; } @@ -965,7 +964,8 @@ PatcherRunnable::PatcherRunnable(class AuthSocket * as) /// Send content of patch file to the client void PatcherRunnable::run() { - ZThread::Guard<ZThread::Mutex> g(mySocket->patcherLock); + ACE_Guard<ACE_Thread_Mutex> g(mySocket->patcherLock); + XFER_DATA_STRUCT xfdata; xfdata.opcode = XFER_DATA; @@ -974,7 +974,7 @@ void PatcherRunnable::run() ///- Wait until output buffer is reasonably empty while(mySocket->Ready() && mySocket->IsLag()) { - ZThread::Thread::sleep(1); + ACE_Based::Thread::Sleep(1); } ///- And send content of the patch file to the client xfdata.data_size=fread(&xfdata.data,1,ChunkSize,mySocket->pPatch); diff --git a/src/trinityrealm/AuthSocket.h b/src/trinityrealm/AuthSocket.h index 3cae54c7789..43b880a1e74 100644 --- a/src/trinityrealm/AuthSocket.h +++ b/src/trinityrealm/AuthSocket.h @@ -33,7 +33,6 @@ #include "sockets/Utility.h" #include "sockets/Parse.h" #include "sockets/Socket.h" -#include "zthread/Mutex.h" /// Handle login commands class AuthSocket: public TcpSocket @@ -61,7 +60,7 @@ class AuthSocket: public TcpSocket void _SetVSFields(const std::string& rI); FILE *pPatch; - ZThread::Mutex patcherLock; + ACE_Thread_Mutex patcherLock; bool IsLag(); private: diff --git a/src/trinityrealm/Makefile.am b/src/trinityrealm/Makefile.am index a14b50c847a..197d6ebf8c4 100644 --- a/src/trinityrealm/Makefile.am +++ b/src/trinityrealm/Makefile.am @@ -32,8 +32,13 @@ trinity_realmd_SOURCES = \ RealmList.h ## Link realm list daemon against the shared library +<<<<<<< HEAD:src/realmd/Makefile.am trinity_realmd_LDADD = ../shared/Database/libmangosdatabase.a ../shared/Config/libmangosconfig.a ../shared/Auth/libmangosauth.a ../shared/libmangosshared.a ../framework/libmangosframework.a ../../dep/src/sockets/libmangossockets.a ../../dep/src/zthread/libZThread.la trinity_realmd_LDFLAGS = -L../../dep/src/sockets -L../../dep/src/zthread -L$(libdir) $(TRINI_LIBS) +======= +mangos_realmd_LDADD = ../shared/Database/libmangosdatabase.a ../shared/Config/libmangosconfig.a ../shared/Auth/libmangosauth.a ../shared/libmangosshared.a ../framework/libmangosframework.a ../../dep/src/sockets/libmangossockets.a +mangos_realmd_LDFLAGS = -L../../dep/src/sockets -L$(libdir) $(MANGOS_LIBS) +>>>>>>> 00c7d15a78b1dcdbf888b768c55424183b2231e4:src/realmd/Makefile.am ## Additional files to include when running 'make dist' # Include realm list daemon configuration diff --git a/win/TrinityCore&Script VC71.sln b/win/TrinityCore&Script VC71.sln index 8c4432075b4..2eee999cede 100644 --- a/win/TrinityCore&Script VC71.sln +++ b/win/TrinityCore&Script VC71.sln @@ -14,10 +14,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared", "VC71\shared.vcpro {DE0380F9-C910-4E99-A841-93550D0E61D7} = {DE0380F9-C910-4E99-A841-93550D0E61D7} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zthread", "VC71\zthread.vcproj", "{262199E8-EEDF-4700-A1D1-E9CC901CF480}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "VC71\zlib.vcproj", "{8F1DEA42-6A5B-4B62-839D-C141A7BFACF2}" ProjectSection(ProjectDependencies) = postProject EndProjectSection diff --git a/win/TrinityCore&Script VC80.sln b/win/TrinityCore&Script VC80.sln index 167b00a4b8b..cb880001dc2 100644 --- a/win/TrinityCore&Script VC80.sln +++ b/win/TrinityCore&Script VC80.sln @@ -23,8 +23,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TrinityCore", "VC80\Trinity {563E9905-3657-460C-AE63-0AC39D162E23} = {563E9905-3657-460C-AE63-0AC39D162E23} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zthread", "VC80\zthread.vcproj", "{262199E8-EEDF-4700-A1D1-E9CC901CF480}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "VC80\zlib.vcproj", "{8F1DEA42-6A5B-4B62-839D-C141A7BFACF2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "framework", "VC80\framework.vcproj", "{BF6F5D0E-33A5-4E23-9E7D-DD481B7B5B9E}" diff --git a/win/TrinityCore&Script VC90.sln b/win/TrinityCore&Script VC90.sln index 2904ca6f20a..a81cbfc570e 100644 --- a/win/TrinityCore&Script VC90.sln +++ b/win/TrinityCore&Script VC90.sln @@ -23,8 +23,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TrinityCore", "VC90\Trinity {1DC6C4DA-A028-41F3-877D-D5400C594F88} = {1DC6C4DA-A028-41F3-877D-D5400C594F88} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zthread", "VC90\zthread.vcproj", "{262199E8-EEDF-4700-A1D1-E9CC901CF480}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "VC90\zlib.vcproj", "{8F1DEA42-6A5B-4B62-839D-C141A7BFACF2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "framework", "VC90\framework.vcproj", "{BF6F5D0E-33A5-4E23-9E7D-DD481B7B5B9E}" diff --git a/win/VC71/ScriptsInterfaces.vcproj b/win/VC71/ScriptsInterfaces.vcproj index 5d229de138a..813f477dd35 100644 --- a/win/VC71/ScriptsInterfaces.vcproj +++ b/win/VC71/ScriptsInterfaces.vcproj @@ -33,10 +33,17 @@ Name="VCCustomBuildTool"/> <Tool Name="VCLinkerTool" +<<<<<<< HEAD:win/VC71/script.vcproj AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib MSVCPRTD.LIB msvcrtd.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="2" AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" +======= + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" + LinkIncremental="1" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" +>>>>>>> 00c7d15a78b1dcdbf888b768c55424183b2231e4:win/VC71/script.vcproj GenerateDebugInformation="TRUE" ProgramDatabaseFile="$(OutDir)/TrinityScript.pdb" SubSystem="2" @@ -83,10 +90,17 @@ Name="VCCustomBuildTool"/> <Tool Name="VCLinkerTool" +<<<<<<< HEAD:win/VC71/script.vcproj AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib MSVCPRT.LIB msvcrt.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" +======= + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib ace.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" + LinkIncremental="1" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" +>>>>>>> 00c7d15a78b1dcdbf888b768c55424183b2231e4:win/VC71/script.vcproj GenerateDebugInformation="FALSE" SubSystem="2" OptimizeReferences="2" diff --git a/win/VC71/TrinityCore.vcproj b/win/VC71/TrinityCore.vcproj index 1da3ad630dd..df6ab1c709e 100644 --- a/win/VC71/TrinityCore.vcproj +++ b/win/VC71/TrinityCore.vcproj @@ -4,7 +4,7 @@ Version="7.10" Name="TrinityCore" ProjectGUID="{D1EA3EE9-4DCF-4CB9-BA6E-B9321E0D552A}" - RootNamespace="mangosd" + RootNamespace="trinitycore" SccProjectName="" SccLocalPath=""> <Platforms> @@ -58,7 +58,7 @@ ImportLibrary="$(OutDir)\trinitycore.lib"/> <Tool Name="VCMIDLTool" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb"/> + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb"/> <Tool Name="VCPostBuildEventTool" CommandLine="copy ..\..\dep\lib\$(PlatformName)_$(ConfigurationName)\*.dll ..\..\bin\$(PlatformName)_$(ConfigurationName) @@ -131,7 +131,7 @@ copy ..\..\src\trinitycore\trinitycore.conf.dist ..\..\bin\$(PlatformName)_$(Con FixedBaseAddress="1"/> <Tool Name="VCMIDLTool" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb"/> + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb"/> <Tool Name="VCPostBuildEventTool" CommandLine="copy ..\..\dep\lib\$(PlatformName)_$(ConfigurationName)\*.dll ..\..\bin\$(PlatformName)_$(ConfigurationName) diff --git a/win/VC71/TrinityRealm.vcproj b/win/VC71/TrinityRealm.vcproj index 472b893197d..5ce3c6c0e6e 100644 --- a/win/VC71/TrinityRealm.vcproj +++ b/win/VC71/TrinityRealm.vcproj @@ -4,7 +4,7 @@ Version="7.10" Name="TrinityRealm" ProjectGUID="{563E9905-3657-460C-AE63-0AC39D162E23}" - RootNamespace="realmd" + RootNamespace="TrinityRealm" SccProjectName="" SccLocalPath=""> <Platforms> @@ -15,7 +15,7 @@ <Configuration Name="Release|Win32" OutputDirectory=".\trinityrealm__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)\" + IntermediateDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" ConfigurationType="1" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="FALSE" @@ -23,17 +23,17 @@ <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN",WIN32,NDEBUG,_CONSOLE" StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" EnableEnhancedInstructionSet="1" RuntimeTypeInfo="TRUE" - PrecompiledHeaderFile=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.pch" - AssemblerListingLocation=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\realmd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" + AssemblerListingLocation=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="TRUE" Detect64BitPortabilityProblems="TRUE" @@ -44,11 +44,16 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" +<<<<<<< HEAD:win/VC71/TrinityRealm.vcproj AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRT.LIB msvcrt.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" +======= + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" +>>>>>>> 00c7d15a78b1dcdbf888b768c55424183b2231e4:win/VC71/TrinityRealm.vcproj LinkIncremental="1" SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="TRUE" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="TRUE" @@ -57,7 +62,7 @@ LargeAddressAware="2"/> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb"/> + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb"/> <Tool Name="VCPostBuildEventTool" CommandLine="copy ..\..\src\trinityrealm\trinityrealm.conf.dist ..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.conf.dist"/> @@ -83,7 +88,7 @@ <Configuration Name="Debug|Win32" OutputDirectory=".\trinityrealm__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="FALSE" @@ -91,16 +96,16 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="FALSE" BasicRuntimeChecks="3" RuntimeLibrary="3" RuntimeTypeInfo="TRUE" - PrecompiledHeaderFile=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.pch" - AssemblerListingLocation=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\realmd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" + AssemblerListingLocation=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="TRUE" Detect64BitPortabilityProblems="TRUE" @@ -111,11 +116,17 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" +<<<<<<< HEAD:win/VC71/TrinityRealm.vcproj AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="2" +======= + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" + LinkIncremental="1" +>>>>>>> 00c7d15a78b1dcdbf888b768c55424183b2231e4:win/VC71/TrinityRealm.vcproj SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="TRUE" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="TRUE" @@ -125,7 +136,7 @@ FixedBaseAddress="1"/> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb"/> + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb"/> <Tool Name="VCPostBuildEventTool" CommandLine="copy ..\..\src\trinityrealm\trinityrealm.conf.dist ..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.conf.dist"/> diff --git a/win/VC71/shared.vcproj b/win/VC71/shared.vcproj index 2bd75f70231..81da9f674f8 100644 --- a/win/VC71/shared.vcproj +++ b/win/VC71/shared.vcproj @@ -44,6 +44,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="TRUE"/> <Tool Name="VCMIDLTool"/> @@ -98,6 +99,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="TRUE"/> <Tool Name="VCMIDLTool"/> @@ -374,6 +376,7 @@ <File RelativePath="..\..\src\shared\Common.h"> </File> +<<<<<<< HEAD:win/VC71/shared.vcproj <File RelativePath="..\..\src\shared\revision.h" > @@ -399,6 +402,38 @@ Outputs="revision.h" /> </FileConfiguration> +======= + <File + RelativePath="..\..\src\shared\LockedQueue.h"> + </File> + <File + RelativePath="..\..\src\shared\revision.h"> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Extract revision" + CommandLine="cd "$(SolutionDir)..\src\shared" +"$(TargetDir)\..\genrevision__$(PlatformName)_$(ConfigurationName)\genrevision.exe" "..\.." +" + AdditionalDependencies="$(SolutionDir)../.svn/entries;$(SolutionDir)../_svn/entries;$(SolutionDir)../.git/FETCH_HEAD" + Outputs="revision.h"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Extract revision" + CommandLine="cd "$(SolutionDir)..\src\shared" +"$(TargetDir)\..\genrevision__$(PlatformName)_$(ConfigurationName)\genrevision.exe" "..\.." +" + AdditionalDependencies="$(SolutionDir)../.svn/entries;$(SolutionDir)../_svn/entries;$(SolutionDir)../.git/FETCH_HEAD" + Outputs="revision.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\src\shared\revision_nr.h"> +>>>>>>> 00c7d15a78b1dcdbf888b768c55424183b2231e4:win/VC71/shared.vcproj </File> <File RelativePath="..\..\src\shared\ServiceWin32.cpp"> @@ -409,6 +444,12 @@ <File RelativePath="..\..\src\shared\SystemConfig.h"> </File> + <File + RelativePath="..\..\src\shared\Threading.cpp"> + </File> + <File + RelativePath="..\..\src\shared\Threading.h"> + </File> </Files> <Globals> </Globals> diff --git a/win/VC71/zthread.vcproj b/win/VC71/zthread.vcproj deleted file mode 100644 index 723c90ed7a5..00000000000 --- a/win/VC71/zthread.vcproj +++ /dev/null @@ -1,381 +0,0 @@ -<?xml version="1.0" encoding="windows-1251"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="zthread" - ProjectGUID="{262199E8-EEDF-4700-A1D1-E9CC901CF480}" - SccProjectName="" - SccLocalPath=""> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB" - MinimalRebuild="TRUE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - RuntimeTypeInfo="TRUE" - UsePrecompiledHeader="2" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB" - RuntimeLibrary="2" - EnableEnhancedInstructionSet="1" - RuntimeTypeInfo="TRUE" - UsePrecompiledHeader="2" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> - <File - RelativePath="..\..\dep\src\zthread\AtomicCount.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ConcurrentExecutor.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Condition.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ConditionImpl.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\config.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\CountingSemaphore.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Debug.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\DeferredInterruptionScope.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\FastLock.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\FastMutex.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\FastRecursiveLock.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\FastRecursiveMutex.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\IntrusivePtr.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Monitor.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Monitor.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Mutex.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\MutexImpl.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\PoolExecutor.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\PriorityCondition.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\PriorityInheritanceMutex.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\PriorityMutex.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\PrioritySemaphore.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\RecursiveMutex.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\RecursiveMutexImpl.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\RecursiveMutexImpl.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Scheduling.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Semaphore.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\SemaphoreImpl.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\State.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Status.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\SynchronousExecutor.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Thread.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadedExecutor.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadImpl.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadImpl.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadLocalImpl.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadOps.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadOps.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadQueue.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadQueue.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\Time.cxx"> - </File> - <File - RelativePath="..\..\dep\src\zthread\TimeStrategy.h"> - </File> - <File - RelativePath="..\..\dep\src\zthread\TSS.h"> - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> - <File - RelativePath="..\..\dep\include\zthread\AtomicCount.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Barrier.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\BiasedReadWriteLock.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\BlockingQueue.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\BoundedQueue.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Cancelable.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\ClassLockable.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\ConcurrentExecutor.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Condition.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Config.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\CountedPtr.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\CountingSemaphore.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Exceptions.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Executor.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\FairReadWriteLock.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\FastMutex.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\FastRecursiveMutex.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Guard.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\GuardedClass.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Lockable.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\LockedQueue.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\MonitoredQueue.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Mutex.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\NonCopyable.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\PoolExecutor.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Priority.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\PriorityCondition.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\PriorityInheritanceMutex.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\PriorityMutex.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\PrioritySemaphore.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Queue.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\ReadWriteLock.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\RecursiveMutex.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Runnable.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Semaphore.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Singleton.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\SynchronousExecutor.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Task.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Thread.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\ThreadedExecutor.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\ThreadLocal.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\ThreadLocalImpl.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Time.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\Waitable.h"> - </File> - <File - RelativePath="..\..\dep\include\zthread\ZThread.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/win/VC80/ScriptsInterfaces.vcproj b/win/VC80/ScriptsInterfaces.vcproj index 72c7626138d..d4329a747cc 100644 --- a/win/VC80/ScriptsInterfaces.vcproj +++ b/win/VC80/ScriptsInterfaces.vcproj @@ -65,10 +65,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" - LinkIncremental="2" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + LinkIncremental="1" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)\TrinityScript.pdb" SubSystem="2" @@ -148,10 +148,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" - LinkIncremental="2" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + LinkIncremental="1" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)TrinityScript.pdb" SubSystem="2" @@ -209,7 +209,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_WINDOWS;_USRDLL;SCRIPT" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -230,14 +230,14 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="mangosd.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\mangosd__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_debug";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb" + ProgramDatabaseFile="$(OutDir)\TrinityScript.pdb" SubSystem="2" - ImportLibrary="$(OutDir)\MaNGOSScript.lib" + ImportLibrary="$(OutDir)\TrinityScript.lib" TargetMachine="1" /> <Tool @@ -292,7 +292,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_WINDOWS;_USRDLL;SCRIPT" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -313,14 +313,14 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="mangosd.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\mangosd__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_debug";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb" + ProgramDatabaseFile="$(OutDir)\TrinityScript.pdb" SubSystem="2" - ImportLibrary="$(OutDir)\MaNGOSScript.lib" + ImportLibrary="$(OutDir)\TrinityScript.lib" TargetMachine="17" /> <Tool @@ -394,10 +394,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib ace.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" @@ -477,10 +477,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib ace.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" diff --git a/win/VC80/TrinityCore.vcproj b/win/VC80/TrinityCore.vcproj index 2d252123d11..3548c707cc5 100644 --- a/win/VC80/TrinityCore.vcproj +++ b/win/VC80/TrinityCore.vcproj @@ -4,7 +4,7 @@ Version="8,00" Name="TrinityCore" ProjectGUID="{A3A04E47-43A2-4C08-90B3-029CEF558594}" - RootNamespace="mangosd" + RootNamespace="trinitycore" > <Platforms> <Platform @@ -41,7 +41,7 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\..\..\bin\Release\mangosd.tlb" + TypeLibraryName=".\..\..\bin\Release\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" @@ -120,8 +120,8 @@ </Configuration> <Configuration Name="Debug|Win32" - OutputDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -142,22 +142,22 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\mangosd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\trinitycore;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.13.0-DEV";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE;ENABLE_CLI" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.pch" - AssemblerListingLocation=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\mangosd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.pch" + AssemblerListingLocation=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="true" @@ -179,18 +179,18 @@ Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib msvcrtd.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.exe" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.exe" Version="" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.map" SubSystem="1" LargeAddressAware="2" - ImportLibrary="$(OutDir)\mangosd.lib" + ImportLibrary="$(OutDir)\trinitycore.lib" FixedBaseAddress="1" /> <Tool @@ -221,8 +221,8 @@ </Configuration> <Configuration Name="Debug_NoPCH|Win32" - OutputDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -243,22 +243,22 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\mangosd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\trinitycore;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.13.0-DEV";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE;ENABLE_CLI" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.pch" - AssemblerListingLocation=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\mangosd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.pch" + AssemblerListingLocation=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="true" @@ -280,18 +280,18 @@ Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib msvcrtd.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.exe" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.exe" Version="" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.map" SubSystem="1" LargeAddressAware="2" - ImportLibrary="$(OutDir)\mangosd.lib" + ImportLibrary="$(OutDir)\trinitycore.lib" FixedBaseAddress="1" /> <Tool @@ -345,7 +345,7 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\..\..\bin\Release\mangosd.tlb" + TypeLibraryName=".\..\..\bin\Release\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" @@ -446,7 +446,7 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" @@ -547,7 +547,7 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" diff --git a/win/VC80/TrinityRealm.vcproj b/win/VC80/TrinityRealm.vcproj index dfd64134a48..8be0bdf2829 100644 --- a/win/VC80/TrinityRealm.vcproj +++ b/win/VC80/TrinityRealm.vcproj @@ -4,7 +4,7 @@ Version="8,00" Name="TrinityRealm" ProjectGUID="{563E9905-3657-460C-AE63-0AC39D162E23}" - RootNamespace="realmd" + RootNamespace="TrinityRealm" > <Platforms> <Platform @@ -41,20 +41,20 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN",WIN32,NDEBUG,_CONSOLE" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" EnableEnhancedInstructionSet="1" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -78,11 +78,11 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRT.LIB msvcrt.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -141,20 +141,20 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN",WIN32,NDEBUG,_CONSOLE" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" EnableEnhancedInstructionSet="0" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -177,11 +177,11 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRT.LIB msvcrt.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -239,19 +239,19 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -275,11 +275,11 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -339,19 +339,19 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -374,11 +374,11 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -415,8 +415,8 @@ </Configuration> <Configuration Name="Debug_NoPCH|Win32" - OutputDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -437,22 +437,22 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.13.0-DEV";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.pch" - AssemblerListingLocation=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\realmd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" + AssemblerListingLocation=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="true" @@ -473,15 +473,15 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.exe" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_debug";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.map" SubSystem="1" LargeAddressAware="2" FixedBaseAddress="1" @@ -513,8 +513,8 @@ </Configuration> <Configuration Name="Debug_NoPCH|x64" - OutputDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -536,22 +536,22 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.13.0-DEV";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.pch" - AssemblerListingLocation=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\realmd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" + AssemblerListingLocation=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="true" @@ -571,15 +571,15 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.exe" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_debug";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.map" SubSystem="1" TargetMachine="17" FixedBaseAddress="1" diff --git a/win/VC80/game.vcproj b/win/VC80/game.vcproj index 7cd964ca9a1..002b5e7fb2d 100644 --- a/win/VC80/game.vcproj +++ b/win/VC80/game.vcproj @@ -1070,14 +1070,6 @@ Name="Object" > <File - RelativePath="..\..\src\game\AggressorAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\AggressorAI.h" - > - </File> - <File RelativePath="..\..\src\game\AnimalRandomMovementGenerator.h" > </File> @@ -1138,50 +1130,6 @@ > </File> <File - RelativePath="..\..\src\game\CreatureAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAI.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAIImpl.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAIRegistry.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAIRegistry.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAISelector.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAISelector.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAI.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAIMgr.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAIMgr.h" - > - </File> - <File RelativePath="..\..\src\game\CreatureGroups.cpp" > </File> @@ -1230,14 +1178,6 @@ > </File> <File - RelativePath="..\..\src\game\GuardAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\GuardAI.h" - > - </File> - <File RelativePath="..\..\src\game\Guild.cpp" > </File> @@ -1306,14 +1246,6 @@ > </File> <File - RelativePath="..\..\src\game\NullCreatureAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\NullCreatureAI.h" - > - </File> - <File RelativePath="..\..\src\game\Object.cpp" > </File> @@ -1342,14 +1274,6 @@ > </File> <File - RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.h" - > - </File> - <File RelativePath="..\..\src\game\Pet.cpp" > </File> @@ -1358,14 +1282,6 @@ > </File> <File - RelativePath="..\..\src\game\PetAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\PetAI.h" - > - </File> - <File RelativePath="..\..\src\game\Player.cpp" > </File> @@ -1382,14 +1298,6 @@ > </File> <File - RelativePath="..\..\src\game\PossessedAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\PossessedAI.h" - > - </File> - <File RelativePath="..\..\src\game\RandomMovementGenerator.cpp" > </File> @@ -1398,14 +1306,6 @@ > </File> <File - RelativePath="..\..\src\game\ReactorAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\ReactorAI.h" - > - </File> - <File RelativePath="..\..\src\game\ReputationMgr.cpp" > </File> @@ -1466,14 +1366,6 @@ > </File> <File - RelativePath="..\..\src\game\TotemAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\TotemAI.h" - > - </File> - <File RelativePath="..\..\src\game\Traveller.h" > </File> @@ -1682,6 +1574,122 @@ > </File> </Filter> + <Filter + Name="AI" + > + <File + RelativePath="..\..\src\game\AggressorAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\AggressorAI.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAI.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIFactory.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIImpl.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIRegistry.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIRegistry.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAISelector.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAISelector.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAI.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAIMgr.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAIMgr.h" + > + </File> + <File + RelativePath="..\..\src\game\GuardAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\GuardAI.h" + > + </File> + <File + RelativePath="..\..\src\game\NullCreatureAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\NullCreatureAI.h" + > + </File> + <File + RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.h" + > + </File> + <File + RelativePath="..\..\src\game\PetAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\PetAI.h" + > + </File> + <File + RelativePath="..\..\src\game\ReactorAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\ReactorAI.h" + > + </File> + <File + RelativePath="..\..\src\game\TotemAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\TotemAI.h" + > + </File> + <File + RelativePath="..\..\src\game\UnitAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\UnitAI.h" + > + </File> + </Filter> <File RelativePath="..\..\src\game\pchdef.cpp" > diff --git a/win/VC80/shared.vcproj b/win/VC80/shared.vcproj index f27a928691a..9ae4929de01 100644 --- a/win/VC80/shared.vcproj +++ b/win/VC80/shared.vcproj @@ -79,6 +79,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -161,6 +162,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -239,6 +241,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -317,6 +320,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib user32.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_debug" SuppressStartupBanner="true" /> <Tool @@ -397,6 +401,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -477,6 +482,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib user32.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_debug" SuppressStartupBanner="true" /> <Tool @@ -836,6 +842,10 @@ > </File> <File + RelativePath="..\..\src\shared\LockedQueue.h" + > + </File> + <File RelativePath="..\..\src\shared\revision.h" > <FileConfiguration @@ -895,6 +905,14 @@ RelativePath="..\..\src\shared\SystemConfig.h" > </File> + <File + RelativePath="..\..\src\shared\Threading.cpp" + > + </File> + <File + RelativePath="..\..\src\shared\Threading.h" + > + </File> </Files> <Globals> </Globals> diff --git a/win/VC90/ScriptsInterfaces.vcproj b/win/VC90/ScriptsInterfaces.vcproj index 34ad97341e5..7037cffdf68 100644 --- a/win/VC90/ScriptsInterfaces.vcproj +++ b/win/VC90/ScriptsInterfaces.vcproj @@ -67,10 +67,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib MSVCPRTD.LIB msvcrtd.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)\TrinityScript.pdb" SubSystem="2" @@ -150,10 +150,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib MSVCPRTD.LIB msvcrtd.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)\TrinityScript.pdb" SubSystem="2" @@ -230,10 +230,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib MSVCPRT.LIB msvcrt.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib ace.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" @@ -312,10 +312,10 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="trinitycore.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib MSVCPRT.LIB msvcrt.lib" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib ace.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\trinitycore__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="false" SubSystem="2" OptimizeReferences="2" @@ -372,7 +372,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_WINDOWS;_USRDLL;SCRIPT" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -395,16 +395,16 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="mangosd.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\mangosd__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_debug";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb" + ProgramDatabaseFile="$(OutDir)\TrinityScript.pdb" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" - ImportLibrary="$(OutDir)\MaNGOSScript.lib" + ImportLibrary="$(OutDir)\TrinityScript.lib" TargetMachine="1" /> <Tool @@ -455,7 +455,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\src\shared;..\..\src\framework;..\..\dep\include;..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_WINDOWS;_USRDLL;SCRIPT" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -478,16 +478,16 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="mangosd.lib zlib.lib zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll" + AdditionalDependencies="trinitycore.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityScript.dll" LinkIncremental="1" - AdditionalLibraryDirectories="".\mangosd__$(PlatformName)_$(ConfigurationName)";"..\..\dep\lib\$(PlatformName)_debug";".\zlib__$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories=";.\trinitycore__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb" + ProgramDatabaseFile="$(OutDir)\TrinityScript.pdb" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" - ImportLibrary="$(OutDir)\MaNGOSScript.lib" + ImportLibrary="$(OutDir)\TrinityScript.lib" TargetMachine="17" /> <Tool diff --git a/win/VC90/TrinityCore.vcproj b/win/VC90/TrinityCore.vcproj index 876af9c0cd4..c93fa3eda09 100644 --- a/win/VC90/TrinityCore.vcproj +++ b/win/VC90/TrinityCore.vcproj @@ -4,7 +4,7 @@ Version="9,00" Name="TrinityCore" ProjectGUID="{A3A04E47-43A2-4C08-90B3-029CEF558594}" - RootNamespace="mangosd" + RootNamespace="trinitycore" Keyword="Win32Proj" TargetFrameworkVersion="0" > @@ -42,7 +42,7 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\..\..\bin\Release\mangosd.tlb" + TypeLibraryName=".\..\..\bin\Release\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" @@ -143,7 +143,7 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\..\..\bin\Release\mangosd.tlb" + TypeLibraryName=".\..\..\bin\Release\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" @@ -242,7 +242,7 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" @@ -344,7 +344,7 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" @@ -423,8 +423,8 @@ </Configuration> <Configuration Name="Debug_NoPCH|Win32" - OutputDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" @@ -444,23 +444,23 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\mangosd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\trinitycore;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.13.0-DEV";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE;ENABLE_CLI" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" EnableFunctionLevelLinking="true" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.pch" - AssemblerListingLocation=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\mangosd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.pch" + AssemblerListingLocation=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="false" @@ -483,21 +483,21 @@ Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.exe" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.exe" Version="" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.map" SubSystem="1" LargeAddressAware="2" RandomizedBaseAddress="1" FixedBaseAddress="1" DataExecutionPrevention="0" - ImportLibrary="$(OutDir)\mangosd.lib" + ImportLibrary="$(OutDir)\trinitycore.lib" /> <Tool Name="VCALinkTool" @@ -524,8 +524,8 @@ </Configuration> <Configuration Name="Debug_NoPCH|x64" - OutputDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\mangosd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\trinitycore__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" @@ -546,23 +546,23 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.tlb" + TypeLibraryName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\mangosd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include,..\..\src\framework,..\..\src\shared,..\..\src\game,..\..\src\trinitycore;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.13.0-DEV";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE;ENABLE_CLI" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" EnableFunctionLevelLinking="true" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\mangosd.pch" - AssemblerListingLocation=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\mangosd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\mangosd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\trinitycore.pch" + AssemblerListingLocation=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\trinitycore__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="false" @@ -584,20 +584,20 @@ <Tool Name="VCLinkerTool" AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.exe" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.exe" Version="" LinkIncremental="1" SuppressStartupBanner="true" AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\trinitycore.map" SubSystem="1" RandomizedBaseAddress="1" FixedBaseAddress="1" DataExecutionPrevention="0" - ImportLibrary="$(OutDir)\mangosd.lib" + ImportLibrary="$(OutDir)\trinitycore.lib" TargetMachine="17" /> <Tool diff --git a/win/VC90/TrinityRealm.vcproj b/win/VC90/TrinityRealm.vcproj index e8854c107c6..98f1979ab1d 100644 --- a/win/VC90/TrinityRealm.vcproj +++ b/win/VC90/TrinityRealm.vcproj @@ -4,7 +4,7 @@ Version="9,00" Name="TrinityRealm" ProjectGUID="{563E9905-3657-460C-AE63-0AC39D162E23}" - RootNamespace="realmd" + RootNamespace="TrinityRealm" Keyword="Win32Proj" > <Platforms> @@ -41,20 +41,20 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN",WIN32,NDEBUG,_CONSOLE" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" EnableEnhancedInstructionSet="1" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -79,11 +79,11 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRT.LIB msvcrt.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRT.LIB msvcrt.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -140,20 +140,20 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN",WIN32,NDEBUG,_CONSOLE" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" EnableEnhancedInstructionSet="0" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -177,11 +177,11 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRT.LIB msvcrt.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRT.LIB msvcrt.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -237,20 +237,20 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" EnableFunctionLevelLinking="true" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -275,11 +275,11 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -337,20 +337,20 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" EnableFunctionLevelLinking="true" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\realmd.pch" + PrecompiledHeaderFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" AssemblerListingLocation=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" ProgramDataBaseFileName=".\trinityrealm__$(PlatformName)_$(ConfigurationName)\" @@ -374,11 +374,11 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_$(ConfigurationName)";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_$(ConfigurationName)" GenerateDebugInformation="true" ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" @@ -414,8 +414,8 @@ </Configuration> <Configuration Name="Debug_NoPCH|Win32" - OutputDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" @@ -435,23 +435,23 @@ /> <Tool Name="VCMIDLTool" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" EnableFunctionLevelLinking="true" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.pch" - AssemblerListingLocation=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\realmd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" + AssemblerListingLocation=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="false" @@ -473,15 +473,15 @@ <Tool Name="VCLinkerTool" AdditionalOptions="/MACHINE:I386" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.exe" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_debug";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.map" SubSystem="1" LargeAddressAware="2" RandomizedBaseAddress="1" @@ -512,8 +512,8 @@ </Configuration> <Configuration Name="Debug_NoPCH|x64" - OutputDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\realmd__$(PlatformName)_$(ConfigurationName)" + OutputDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" + IntermediateDirectory=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)" ConfigurationType="1" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" @@ -534,23 +534,23 @@ <Tool Name="VCMIDLTool" TargetEnvironment="3" - TypeLibraryName=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.tlb" + TypeLibraryName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.tlb" /> <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\realmd;..\..\dep\ACE_wrappers" + AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\TrinityRealm;..\..\dep\ACE_wrappers" PreprocessorDefinitions="VERSION="0.12.0-SVN";WIN32;_DEBUG;TRINITY_DEBUG;_CONSOLE" IgnoreStandardIncludePath="false" BasicRuntimeChecks="3" RuntimeLibrary="3" EnableFunctionLevelLinking="true" RuntimeTypeInfo="true" - PrecompiledHeaderFile=".\realmd__$(PlatformName)_$(ConfigurationName)\realmd.pch" - AssemblerListingLocation=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ObjectFile=".\realmd__$(PlatformName)_$(ConfigurationName)\" - ProgramDataBaseFileName=".\realmd__$(PlatformName)_$(ConfigurationName)\" + PrecompiledHeaderFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\TrinityRealm.pch" + AssemblerListingLocation=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ObjectFile=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" + ProgramDataBaseFileName=".\TrinityRealm__$(PlatformName)_$(ConfigurationName)\" WarningLevel="3" SuppressStartupBanner="true" Detect64BitPortabilityProblems="false" @@ -571,15 +571,15 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="zthread.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" - OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.exe" + AdditionalDependencies="libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib advapi32.lib dbghelp.lib MSVCPRTD.LIB msvcrtd.lib" + OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.exe" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories=""..\..\dep\lib\$(PlatformName)_debug";".\zthread__$(PlatformName)_$(ConfigurationName)"" + AdditionalLibraryDirectories="..\..\dep\lib\$(PlatformName)_debug" GenerateDebugInformation="true" - ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.pdb" + ProgramDatabaseFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.pdb" GenerateMapFile="true" - MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\realmd.map" + MapFileName="..\..\bin\$(PlatformName)_$(ConfigurationName)\TrinityRealm.map" SubSystem="1" RandomizedBaseAddress="1" FixedBaseAddress="1" diff --git a/win/VC90/game.vcproj b/win/VC90/game.vcproj index fcd4f3c3ddd..15fc293a02c 100644 --- a/win/VC90/game.vcproj +++ b/win/VC90/game.vcproj @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="game" ProjectGUID="{1DC6C4DA-A028-41F3-877D-D5400C594F88}" RootNamespace="game" Keyword="Win32Proj" + TargetFrameworkVersion="0" > <Platforms> <Platform @@ -101,7 +102,7 @@ /> </Configuration> <Configuration - Name="Debug|x64" + Name="Release|Win32" OutputDirectory=".\game__$(PlatformName)_$(ConfigurationName)" IntermediateDirectory=".\game__$(PlatformName)_$(ConfigurationName)" ConfigurationType="4" @@ -123,19 +124,17 @@ /> <Tool Name="VCMIDLTool" - TargetEnvironment="3" /> <Tool Name="VCCLCompilerTool" - AdditionalOptions="/MP /bigobj /Zm200" - Optimization="0" + AdditionalOptions="/MP /Zm200" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\shared\vmap;..\..\dep\ACE_wrappers" - PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_LIB;" - StringPooling="false" - MinimalRebuild="false" - BasicRuntimeChecks="3" - RuntimeLibrary="3" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FASTBUILD" + StringPooling="true" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" + EnableEnhancedInstructionSet="1" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="pchdef.h" @@ -156,7 +155,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -164,7 +163,6 @@ /> <Tool Name="VCLibrarianTool" - AdditionalDependencies=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" OutputFile=".\game__$(PlatformName)_$(ConfigurationName)\game.lib" SuppressStartupBanner="true" /> @@ -185,7 +183,7 @@ /> </Configuration> <Configuration - Name="Release|Win32" + Name="Debug_NoPCH|Win32" OutputDirectory=".\game__$(PlatformName)_$(ConfigurationName)" IntermediateDirectory=".\game__$(PlatformName)_$(ConfigurationName)" ConfigurationType="4" @@ -210,17 +208,17 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalOptions="/MP /Zm200" - InlineFunctionExpansion="1" + AdditionalOptions="/MP" + Optimization="0" AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\shared\vmap;..\..\dep\ACE_wrappers" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FASTBUILD" - StringPooling="true" - RuntimeLibrary="2" + PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_LIB;" + StringPooling="false" + MinimalRebuild="false" + BasicRuntimeChecks="3" + RuntimeLibrary="3" EnableFunctionLevelLinking="true" - EnableEnhancedInstructionSet="1" RuntimeTypeInfo="true" - UsePrecompiledHeader="2" - PrecompiledHeaderThrough="pchdef.h" + UsePrecompiledHeader="0" PrecompiledHeaderFile=".\game__$(PlatformName)_$(ConfigurationName)\game.pch" AssemblerListingLocation=".\game__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\game__$(PlatformName)_$(ConfigurationName)\" @@ -231,14 +229,13 @@ DebugInformationFormat="3" CallingConvention="0" CompileAs="0" - ForcedIncludeFiles="pchdef.h" /> <Tool Name="VCManagedResourceCompilerTool" /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -266,7 +263,7 @@ /> </Configuration> <Configuration - Name="Release|x64" + Name="Debug|x64" OutputDirectory=".\game__$(PlatformName)_$(ConfigurationName)" IntermediateDirectory=".\game__$(PlatformName)_$(ConfigurationName)" ConfigurationType="4" @@ -293,13 +290,14 @@ <Tool Name="VCCLCompilerTool" AdditionalOptions="/MP /bigobj /Zm200" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\shared\vmap;..\..\dep\ACE_wrappers" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FASTBUILD" - StringPooling="true" - RuntimeLibrary="2" + PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_LIB;" + StringPooling="false" + MinimalRebuild="false" + BasicRuntimeChecks="3" + RuntimeLibrary="3" EnableFunctionLevelLinking="true" - EnableEnhancedInstructionSet="0" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="pchdef.h" @@ -320,7 +318,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -349,7 +347,7 @@ /> </Configuration> <Configuration - Name="Debug_NoPCH|Win32" + Name="Release|x64" OutputDirectory=".\game__$(PlatformName)_$(ConfigurationName)" IntermediateDirectory=".\game__$(PlatformName)_$(ConfigurationName)" ConfigurationType="4" @@ -371,20 +369,21 @@ /> <Tool Name="VCMIDLTool" + TargetEnvironment="3" /> <Tool Name="VCCLCompilerTool" - AdditionalOptions="/MP" - Optimization="0" + AdditionalOptions="/MP /bigobj /Zm200" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\dep\include;..\..\src\framework;..\..\src\shared;..\..\src\shared\vmap;..\..\dep\ACE_wrappers" - PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_LIB;" - StringPooling="false" - MinimalRebuild="false" - BasicRuntimeChecks="3" - RuntimeLibrary="3" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FASTBUILD" + StringPooling="true" + RuntimeLibrary="2" EnableFunctionLevelLinking="true" + EnableEnhancedInstructionSet="0" RuntimeTypeInfo="true" - UsePrecompiledHeader="0" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="pchdef.h" PrecompiledHeaderFile=".\game__$(PlatformName)_$(ConfigurationName)\game.pch" AssemblerListingLocation=".\game__$(PlatformName)_$(ConfigurationName)\" ObjectFile=".\game__$(PlatformName)_$(ConfigurationName)\" @@ -395,13 +394,14 @@ DebugInformationFormat="3" CallingConvention="0" CompileAs="0" + ForcedIncludeFiles="pchdef.h" /> <Tool Name="VCManagedResourceCompilerTool" /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -409,6 +409,7 @@ /> <Tool Name="VCLibrarianTool" + AdditionalDependencies=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" OutputFile=".\game__$(PlatformName)_$(ConfigurationName)\game.lib" SuppressStartupBanner="true" /> @@ -1070,14 +1071,6 @@ Name="Object" > <File - RelativePath="..\..\src\game\AggressorAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\AggressorAI.h" - > - </File> - <File RelativePath="..\..\src\game\AnimalRandomMovementGenerator.h" > </File> @@ -1138,50 +1131,6 @@ > </File> <File - RelativePath="..\..\src\game\CreatureAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAI.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAIImpl.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAIRegistry.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAIRegistry.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAISelector.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureAISelector.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAI.h" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAIMgr.cpp" - > - </File> - <File - RelativePath="..\..\src\game\CreatureEventAIMgr.h" - > - </File> - <File RelativePath="..\..\src\game\CreatureGroups.cpp" > </File> @@ -1230,14 +1179,6 @@ > </File> <File - RelativePath="..\..\src\game\GuardAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\GuardAI.h" - > - </File> - <File RelativePath="..\..\src\game\Guild.cpp" > </File> @@ -1306,14 +1247,6 @@ > </File> <File - RelativePath="..\..\src\game\NullCreatureAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\NullCreatureAI.h" - > - </File> - <File RelativePath="..\..\src\game\Object.cpp" > </File> @@ -1342,14 +1275,6 @@ > </File> <File - RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.h" - > - </File> - <File RelativePath="..\..\src\game\Pet.cpp" > </File> @@ -1358,14 +1283,6 @@ > </File> <File - RelativePath="..\..\src\game\PetAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\PetAI.h" - > - </File> - <File RelativePath="..\..\src\game\Player.cpp" > </File> @@ -1382,14 +1299,6 @@ > </File> <File - RelativePath="..\..\src\game\PossessedAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\PossessedAI.h" - > - </File> - <File RelativePath="..\..\src\game\RandomMovementGenerator.cpp" > </File> @@ -1398,14 +1307,6 @@ > </File> <File - RelativePath="..\..\src\game\ReactorAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\ReactorAI.h" - > - </File> - <File RelativePath="..\..\src\game\ReputationMgr.cpp" > </File> @@ -1466,14 +1367,6 @@ > </File> <File - RelativePath="..\..\src\game\TotemAI.cpp" - > - </File> - <File - RelativePath="..\..\src\game\TotemAI.h" - > - </File> - <File RelativePath="..\..\src\game\Traveller.h" > </File> @@ -1682,6 +1575,122 @@ > </File> </Filter> + <Filter + Name="AI" + > + <File + RelativePath="..\..\src\game\AggressorAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\AggressorAI.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAI.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIFactory.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIImpl.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIRegistry.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAIRegistry.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAISelector.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureAISelector.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAI.h" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAIMgr.cpp" + > + </File> + <File + RelativePath="..\..\src\game\CreatureEventAIMgr.h" + > + </File> + <File + RelativePath="..\..\src\game\GuardAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\GuardAI.h" + > + </File> + <File + RelativePath="..\..\src\game\NullCreatureAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\NullCreatureAI.h" + > + </File> + <File + RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\OutdoorPvPObjectiveAI.h" + > + </File> + <File + RelativePath="..\..\src\game\PetAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\PetAI.h" + > + </File> + <File + RelativePath="..\..\src\game\ReactorAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\ReactorAI.h" + > + </File> + <File + RelativePath="..\..\src\game\TotemAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\TotemAI.h" + > + </File> + <File + RelativePath="..\..\src\game\UnitAI.cpp" + > + </File> + <File + RelativePath="..\..\src\game\UnitAI.h" + > + </File> + </Filter> <File RelativePath="..\..\src\game\pchdef.cpp" > @@ -1695,7 +1704,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|x64" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -1704,7 +1713,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|x64" > <Tool Name="VCCLCompilerTool" diff --git a/win/VC90/shared.vcproj b/win/VC90/shared.vcproj index 11aaff1251b..ddc64f094f5 100644 --- a/win/VC90/shared.vcproj +++ b/win/VC90/shared.vcproj @@ -80,6 +80,7 @@ <Tool Name="VCLibrarianTool" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -162,6 +163,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -241,6 +243,7 @@ <Tool Name="VCLibrarianTool" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -322,6 +325,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_$(ConfigurationName)" SuppressStartupBanner="true" /> <Tool @@ -401,6 +405,7 @@ <Tool Name="VCLibrarianTool" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_debug" SuppressStartupBanner="true" /> <Tool @@ -482,6 +487,7 @@ Name="VCLibrarianTool" AdditionalDependencies=".\g3dlite__$(PlatformName)_$(ConfigurationName)\g3dlite.lib" OutputFile=".\shared__$(PlatformName)_$(ConfigurationName)\shared.lib" + AdditionalLibraryDirectories="dep\lib\$(PlatformName)_debug" SuppressStartupBanner="true" /> <Tool @@ -845,6 +851,10 @@ > </File> <File + RelativePath="..\..\src\shared\LockedQueue.h" + > + </File> + <File RelativePath="..\..\src\shared\revision.h" > <FileConfiguration @@ -926,6 +936,14 @@ RelativePath="..\..\src\shared\SystemConfig.h" > </File> + <File + RelativePath="..\..\src\shared\Threading.cpp" + > + </File> + <File + RelativePath="..\..\src\shared\Threading.h" + > + </File> </Files> <Globals> </Globals> diff --git a/win/VC90/zthread.vcproj b/win/VC90/zthread.vcproj deleted file mode 100644 index a381daa3198..00000000000 --- a/win/VC90/zthread.vcproj +++ /dev/null @@ -1,799 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9,00" - Name="zthread" - ProjectGUID="{262199E8-EEDF-4700-A1D1-E9CC901CF480}" - RootNamespace="zthread" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - <Platform - Name="x64" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - EnableFunctionLevelLinking="true" - RuntimeTypeInfo="true" - UsePrecompiledHeader="0" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="false" - DebugInformationFormat="3" - CallingConvention="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|x64" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - EnableFunctionLevelLinking="true" - RuntimeTypeInfo="true" - UsePrecompiledHeader="0" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="false" - DebugInformationFormat="3" - CallingConvention="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalOptions="/MP" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" - RuntimeLibrary="2" - EnableEnhancedInstructionSet="1" - RuntimeTypeInfo="true" - UsePrecompiledHeader="0" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="false" - DebugInformationFormat="3" - CallingConvention="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|x64" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalOptions="/MP" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" - RuntimeLibrary="2" - EnableEnhancedInstructionSet="0" - RuntimeTypeInfo="true" - UsePrecompiledHeader="0" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="false" - DebugInformationFormat="3" - CallingConvention="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug_NoPCH|Win32" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - EnableFunctionLevelLinking="true" - RuntimeTypeInfo="true" - UsePrecompiledHeader="0" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="false" - DebugInformationFormat="3" - CallingConvention="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug_NoPCH|x64" - OutputDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - IntermediateDirectory=".\zthread__$(PlatformName)_$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="3" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\dep\include" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - EnableFunctionLevelLinking="true" - RuntimeTypeInfo="true" - UsePrecompiledHeader="0" - PrecompiledHeaderFile=".\zthread__$(PlatformName)_$(ConfigurationName)\zthread.pch" - WarningLevel="3" - Detect64BitPortabilityProblems="false" - DebugInformationFormat="3" - CallingConvention="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)/zthread.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath="..\..\dep\src\zthread\AtomicCount.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ConcurrentExecutor.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Condition.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ConditionImpl.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\config.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\CountingSemaphore.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Debug.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\DeferredInterruptionScope.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\FastLock.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\FastMutex.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\FastRecursiveLock.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\FastRecursiveMutex.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\IntrusivePtr.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Monitor.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Monitor.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Mutex.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\MutexImpl.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\PoolExecutor.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\PriorityCondition.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\PriorityInheritanceMutex.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\PriorityMutex.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\PrioritySemaphore.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\RecursiveMutex.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\RecursiveMutexImpl.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\RecursiveMutexImpl.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Scheduling.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Semaphore.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\SemaphoreImpl.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\State.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Status.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\SynchronousExecutor.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Thread.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadedExecutor.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadImpl.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadImpl.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadLocalImpl.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadOps.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadOps.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadQueue.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\ThreadQueue.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\Time.cxx" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\TimeStrategy.h" - > - </File> - <File - RelativePath="..\..\dep\src\zthread\TSS.h" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath="..\..\dep\include\zthread\AtomicCount.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Barrier.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\BiasedReadWriteLock.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\BlockingQueue.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\BoundedQueue.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Cancelable.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\ClassLockable.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\ConcurrentExecutor.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Condition.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Config.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\CountedPtr.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\CountingSemaphore.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Exceptions.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Executor.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\FairReadWriteLock.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\FastMutex.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\FastRecursiveMutex.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Guard.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\GuardedClass.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Lockable.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\LockedQueue.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\MonitoredQueue.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Mutex.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\NonCopyable.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\PoolExecutor.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Priority.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\PriorityCondition.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\PriorityInheritanceMutex.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\PriorityMutex.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\PrioritySemaphore.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Queue.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\ReadWriteLock.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\RecursiveMutex.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Runnable.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Semaphore.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Singleton.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\SynchronousExecutor.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Task.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Thread.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\ThreadedExecutor.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\ThreadLocal.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\ThreadLocalImpl.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Time.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\Waitable.h" - > - </File> - <File - RelativePath="..\..\dep\include\zthread\ZThread.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> |