diff --git a/PreLoad.cmake b/PreLoad.cmake
index a6dc928b906..0f1c0f6ce19 100644
--- a/PreLoad.cmake
+++ b/PreLoad.cmake
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2010 Trinity
+# Copyright (C) 2005-2012 Trinity
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/cmake/compiler/gcc/settings.cmake b/cmake/compiler/gcc/settings.cmake
index 3a2745702c8..8247831fdd8 100644
--- a/cmake/compiler/gcc/settings.cmake
+++ b/cmake/compiler/gcc/settings.cmake
@@ -3,14 +3,12 @@ add_definitions(-D_BUILD_DIRECTIVE='"${CMAKE_BUILD_TYPE}"')
add_definitions(-fno-delete-null-pointer-checks)
-if( USE_SFMT)
- if(PLATFORM EQUAL 32)
- # Required on 32-bit systems to enable SSE2 (standard on x64)
- add_definitions(-msse2 -mfpmath=sse)
- endif()
- add_definitions(-DHAVE_SSE2 -D__SSE2__)
- message(STATUS "GCC: SFMT enabled, SSE2 flags forced")
+if(PLATFORM EQUAL 32)
+ # Required on 32-bit systems to enable SSE2 (standard on x64)
+ add_definitions(-msse2 -mfpmath=sse)
endif()
+add_definitions(-DHAVE_SSE2 -D__SSE2__)
+message(STATUS "GCC: SSE2 flags forced")
if( WITH_WARNINGS )
add_definitions(-Wall -Wfatal-errors -Wextra)
diff --git a/cmake/compiler/icc/settings.cmake b/cmake/compiler/icc/settings.cmake
index 0e614ef97f8..b7e4cb742b3 100644
--- a/cmake/compiler/icc/settings.cmake
+++ b/cmake/compiler/icc/settings.cmake
@@ -1,13 +1,10 @@
# Set build-directive (used in core to tell which buildtype we used)
add_definitions(-D_BUILD_DIRECTIVE="${CMAKE_BUILD_TYPE}")
-if( USE_SFMT)
- if(PLATFORM EQUAL 32)
- add_definitions(-axSSE2)
- else()
- add_definitions(-xSSE2)
- endif()
- message(STATUS "ICC: SFMT enabled, SSE2 flags forced")
+if(PLATFORM EQUAL 32)
+ add_definitions(-axSSE2)
+else()
+ add_definitions(-xSSE2)
endif()
if( WITH_WARNINGS )
diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake
index eb55dc66c50..3d8fe43b6aa 100644
--- a/cmake/compiler/msvc/settings.cmake
+++ b/cmake/compiler/msvc/settings.cmake
@@ -20,11 +20,8 @@ else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE")
message(STATUS "MSVC: Enabled large address awareness")
- # Test if we need SSE2-support
- if(USE_SFMT)
- add_definitions(/arch:SSE2)
- message(STATUS "MSVC: Enabled SSE2 support")
- endif()
+ add_definitions(/arch:SSE2)
+ message(STATUS "MSVC: Enabled SSE2 support")
endif()
# Set build-directive (used in core to tell which buildtype we used)
diff --git a/cmake/genrev.cmake b/cmake/genrev.cmake
index 37cea9b3deb..b1112d13c12 100644
--- a/cmake/genrev.cmake
+++ b/cmake/genrev.cmake
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2010 Trinity
+# Copyright (C) 2008-2012 Trinity
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/cmake/macros/CheckBuildDir.cmake b/cmake/macros/CheckBuildDir.cmake
index 868643285ef..d67f930df99 100644
--- a/cmake/macros/CheckBuildDir.cmake
+++ b/cmake/macros/CheckBuildDir.cmake
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2010 Trinity
+# Copyright (C) 2008-2012 Trinity
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/cmake/options.cmake b/cmake/options.cmake
index 17edc2697b7..11ebe6ddd12 100644
--- a/cmake/options.cmake
+++ b/cmake/options.cmake
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2010 Trinity
+# Copyright (C) 2008-2012 Trinity
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
@@ -13,6 +13,5 @@ option(SCRIPTS "Build core with scripts included"
option(TOOLS "Build map/vmap extraction/assembler tools" 0)
option(USE_SCRIPTPCH "Use precompiled headers when compiling scripts" 1)
option(USE_COREPCH "Use precompiled headers when compiling servers" 1)
-option(USE_SFMT "Use SFMT as random numbergenerator" 0)
option(WITH_WARNINGS "Show all warnings during compile" 0)
option(WITH_COREDEBUG "Include additional debug-code in core" 0)
diff --git a/cmake/platform/unix/settings.cmake b/cmake/platform/unix/settings.cmake
index 81f438befc9..dd8b7c081f3 100644
--- a/cmake/platform/unix/settings.cmake
+++ b/cmake/platform/unix/settings.cmake
@@ -1,6 +1,8 @@
# Package overloads - Linux
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- set(JEMALLOC_LIBRARY "jemalloc")
+ if (NOT NOJEM)
+ set(JEMALLOC_LIBRARY "jemalloc")
+ endif()
endif()
# set default configuration directory
diff --git a/cmake/showoptions.cmake b/cmake/showoptions.cmake
index 31e1b412b32..47ad7b0889b 100644
--- a/cmake/showoptions.cmake
+++ b/cmake/showoptions.cmake
@@ -50,13 +50,6 @@ else()
message("* Build scripts w/PCH : No")
endif()
-if( USE_SFMT )
- message("* Use SFMT for RNG : Yes")
- add_definitions(-DUSE_SFMT_FOR_RNG)
-else()
- message("* Use SFMT for RNG : No (default)")
-endif()
-
if( WITH_WARNINGS )
message("* Show all warnings : Yes")
else()
@@ -78,4 +71,10 @@ if( WIN32 )
endif()
endif( WIN32 )
+if ( NOJEM )
+ message("")
+ message("*** WARNING: jemalloc linking has been disabled!")
+ message("*** Please note that this is for DEBUGGING WITH VALGRIND only!")
+ message("*** DO NOT DISABLE IT UNLESS YOU KNOW WHAT YOU'RE DOING!")
+endif()
message("")
diff --git a/contrib/conf_merge/tc-conf-merger.pl b/contrib/conf_merge/tc-conf-merger.pl
index d4902aba279..138d51705d7 100644
--- a/contrib/conf_merge/tc-conf-merger.pl
+++ b/contrib/conf_merge/tc-conf-merger.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
-# Copyright (C) 2008-2011 TrinityCore
+# Copyright (C) 2008-2012 TrinityCore
# Author: leak
# Date: 2010-12-06
# Note: Based on conf file format of rev 10507
diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt
index ce80d43b0c1..946dadf33d8 100644
--- a/dep/CMakeLists.txt
+++ b/dep/CMakeLists.txt
@@ -15,8 +15,8 @@ elseif( MSVC )
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- if(SERVERS)
- add_subdirectory(jemalloc)
+ if(SERVERS AND NOT NOJEM)
+ add_subdirectory(jemalloc)
endif()
endif()
diff --git a/dep/PackageList.txt b/dep/PackageList.txt
index b599bd0e11b..5d3d4bdcc4d 100644
--- a/dep/PackageList.txt
+++ b/dep/PackageList.txt
@@ -14,12 +14,8 @@ G3D (a commercial-grade C++ 3D engine available as Open Source (BSD License)
jemalloc (a general-purpose scalable concurrent malloc-implementation)
http://www.canonware.com/jemalloc/
- Version: 2.1.0
+ Version: 2.2.5
-MersenneTwister (a very fast random number generator)
- http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
- Version: 0.4.2
-
MySQL (the world's most popular open source database software)
http://www.mysql.com/
Version: 5.5.9 (GA)
@@ -38,7 +34,7 @@ zlib (A Massively Spiffy Yet Delicately Unobtrusive Compression Library)
gSOAP (a portable development toolkit for C and C++ XML Web services and XML data bindings)
http://gsoap2.sourceforge.net/
- Version: 2.8.0
+ Version: 2.8.2
StormLib (a pack of modules, written in C++, which are able to read and also to write files from/to the MPQ archives)
http://www.zezula.net/en/mpq/stormlib.html
diff --git a/dep/SFMT/SFMT.h b/dep/SFMT/SFMT.h
index 03a7e853316..5498b9ac5fb 100644
--- a/dep/SFMT/SFMT.h
+++ b/dep/SFMT/SFMT.h
@@ -7,7 +7,7 @@
* in effect in addition to the GNU General Public License.
* Copyright (c) 2006, 2007 by Mutsuo Saito, Makoto Matsumoto and Hiroshima University.
* Copyright (c) 2008 by Agner Fog.
- * Copyright (c) 2010 Trinity Core
+ * Copyright (c) 2012 Trinity Core
*
* BSD License:
* Redistribution and use in source and binary forms, with or without
@@ -39,6 +39,7 @@
#include // Define SSE2 intrinsics
#include "randomc.h" // Define integer types etc
#include
+#include
// Choose one of the possible Mersenne exponents.
// Higher values give longer cycle length and use more memory:
@@ -149,8 +150,14 @@ __m128i const &c, __m128i const &d, __m128i const &mask) {
// Class for SFMT generator
class SFMTRand { // Encapsulate random number generator
+ friend class ACE_TSS;
+
public:
- SFMTRand() { LastInterval = 0; RandomInit((int)(time(0))); }
+ SFMTRand()
+ {
+ LastInterval = 0;
+ RandomInit((int)(time(0)));
+ }
void RandomInit(int seed) // Re-seed
{
@@ -298,6 +305,46 @@ private:
ix = 0;
}
+ void* operator new(size_t size, std::nothrow_t const&)
+ {
+ return _mm_malloc(size, 16);
+ }
+
+ void operator delete(void* ptr, std::nothrow_t const&)
+ {
+ _mm_free(ptr);
+ }
+
+ void* operator new(size_t size)
+ {
+ return _mm_malloc(size, 16);
+ }
+
+ void operator delete(void* ptr)
+ {
+ _mm_free(ptr);
+ }
+
+ void* operator new[](size_t size, std::nothrow_t const&)
+ {
+ return _mm_malloc(size, 16);
+ }
+
+ void operator delete[](void* ptr, std::nothrow_t const&)
+ {
+ _mm_free(ptr);
+ }
+
+ void* operator new[](size_t size)
+ {
+ return _mm_malloc(size, 16);
+ }
+
+ void operator delete[](void* ptr)
+ {
+ _mm_free(ptr);
+ }
+
uint32_t ix; // Index into state array
uint32_t LastInterval; // Last interval length for IRandom
uint32_t RLimit; // Rejection limit used by IRandom
diff --git a/dep/SFMT/randomc.h b/dep/SFMT/randomc.h
index 5370a701c0e..ee5ad9aa43b 100644
--- a/dep/SFMT/randomc.h
+++ b/dep/SFMT/randomc.h
@@ -7,7 +7,7 @@
* in effect in addition to the GNU General Public License.
* Copyright (c) 2006, 2007 by Mutsuo Saito, Makoto Matsumoto and Hiroshima University.
* Copyright (c) 2008 by Agner Fog.
- * Copyright (c) 2010 Trinity Core
+ * Copyright (c) 2012 Trinity Core
*
* BSD License:
* Redistribution and use in source and binary forms, with or without
diff --git a/dep/mersennetwister/MersenneTwister.h b/dep/mersennetwister/MersenneTwister.h
deleted file mode 100644
index 1cff879643f..00000000000
--- a/dep/mersennetwister/MersenneTwister.h
+++ /dev/null
@@ -1,405 +0,0 @@
-// MersenneTwister.h
-// Mersenne Twister random number generator -- a C++ class MTRand
-// Based on code by Makoto Matsumoto, Takuji Nishimura, and Shawn Cokus
-// Richard J. Wagner v1.0 15 May 2003 rjwagner@writeme.com
-
-// The Mersenne Twister is an algorithm for generating random numbers. It
-// was designed with consideration of the flaws in various other generators.
-// The period, 2^19937-1, and the order of equidistribution, 623 dimensions,
-// are far greater. The generator is also fast; it avoids multiplication and
-// division, and it benefits from caches and pipelines. For more information
-// see the inventors' web page at http://www.math.keio.ac.jp/~matumoto/emt.html
-
-// Reference
-// M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-Dimensionally
-// Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on
-// Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.
-
-// Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
-// Copyright (C) 2000 - 2003, Richard J. Wagner
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// 3. The names of its contributors may not be used to endorse or promote
-// products derived from this software without specific prior written
-// permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// The original code included the following notice:
-//
-// When you use this, send an email to: matumoto@math.keio.ac.jp
-// with an appropriate reference to your work.
-//
-// It would be nice to CC: rjwagner@writeme.com and Cokus@math.washington.edu
-// when you write.
-
-#ifndef MERSENNETWISTER_H
-#define MERSENNETWISTER_H
-
-// Not thread safe (unless auto-initialization is avoided and each thread has
-// its own MTRand object)
-
-#include"Define.h"
-
-#include
-#include
-#include
-
-class MTRand {
-// Data
-public:
- typedef ::uint32 uint32;
- enum { N = 624 }; // length of state vector
- enum { SAVE = N + 1 }; // length of array for save()
-
-protected:
- enum { M = 397 }; // period parameter
-
- uint32 state[N]; // internal state
- uint32 *pNext; // next value to get from state
- int left; // number of values left before reload needed
-
-//Methods
-public:
- MTRand( const uint32& oneSeed ); // initialize with a simple uint32
- MTRand( uint32 *const bigSeed, uint32 const seedLength = N ); // or an array
- MTRand(); // auto-initialize with /dev/urandom or time() and clock()
- MTRand(const MTRand&); // prevent copy constructor
- MTRand& operator=(const MTRand&); // no-op operator=
-
- // Do NOT use for CRYPTOGRAPHY without securely hashing several returned
- // values together, otherwise the generator state can be learned after
- // reading 624 consecutive values.
-
- // Access to 32-bit random numbers
- double rand(); // real number in [0,1]
- double rand( const double& n ); // real number in [0,n]
- double randExc(); // real number in [0,1)
- double randExc( const double& n ); // real number in [0,n)
- double randDblExc(); // real number in (0,1)
- double randDblExc( const double& n ); // real number in (0,n)
- uint32 randInt(); // integer in [0,2^32-1]
- uint32 randInt( const uint32& n ); // integer in [0,n] for n < 2^32
- double operator()() { return rand(); } // same as rand()
-
- // Access to 53-bit random numbers (capacity of IEEE double precision)
- double rand53(); // real number in [0,1)
-
- // Access to nonuniform random number distributions
- double randNorm( const double& mean = 0.0, const double& variance = 0.0 );
-
- // Re-seeding functions with same behavior as initializers
- void seed( const uint32 oneSeed );
- void seed( uint32 *const bigSeed, const uint32 seedLength = N );
- void seed();
-
- // Saving and loading generator state
- void save( uint32* saveArray ) const; // to array of size SAVE
- void load( uint32 *const loadArray ); // from such array
- /* Trinity not use streams for random values output
- friend std::ostream& operator<<( std::ostream& os, const MTRand& mtrand );
- friend std::istream& operator>>( std::istream& is, MTRand& mtrand );
- */
-protected:
- void initialize( const uint32 oneSeed );
- void reload();
- uint32 hiBit( const uint32& u ) const { return u & 0x80000000UL; }
- uint32 loBit( const uint32& u ) const { return u & 0x00000001UL; }
- uint32 loBits( const uint32& u ) const { return u & 0x7fffffffUL; }
- uint32 mixBits( const uint32& u, const uint32& v ) const
- { return hiBit(u) | loBits(v); }
- uint32 twist( const uint32& m, const uint32& s0, const uint32& s1 ) const
- { return m ^ (mixBits(s0,s1)>>1) ^ uint32(-(int32)(loBit(s1) & 0x9908b0dfUL)); }
- static uint32 hash( time_t t, clock_t c );
-};
-
-inline MTRand::MTRand(const MTRand&)
- { seed(); }
-
-inline MTRand& MTRand::operator=(const MTRand&)
- { return *this; }
-
-inline MTRand::MTRand( const uint32& oneSeed )
- { seed(oneSeed); }
-
-inline MTRand::MTRand( uint32 *const bigSeed, const uint32 seedLength )
- { seed(bigSeed,seedLength); }
-
-inline MTRand::MTRand()
- { seed(); }
-
-inline double MTRand::rand()
- { return double(randInt()) * (1.0/4294967295.0); }
-
-inline double MTRand::rand( const double& n )
- { return rand() * n; }
-
-inline double MTRand::randExc()
- { return double(randInt()) * (1.0/4294967296.0); }
-
-inline double MTRand::randExc( const double& n )
- { return randExc() * n; }
-
-inline double MTRand::randDblExc()
- { return ( double(randInt()) + 0.5 ) * (1.0/4294967296.0); }
-
-inline double MTRand::randDblExc( const double& n )
- { return randDblExc() * n; }
-
-inline double MTRand::rand53()
-{
- uint32 a = randInt() >> 5, b = randInt() >> 6;
- return ( a * 67108864.0 + b ) * (1.0/9007199254740992.0); // by Isaku Wada
-}
-
-inline double MTRand::randNorm( const double& mean, const double& variance )
-{
- // Return a real number from a normal (Gaussian) distribution with given
- // mean and variance by Box-Muller method
- double r = sqrt( -2.0 * log( 1.0-randDblExc()) ) * variance;
- double phi = 2.0 * 3.14159265358979323846264338328 * randExc();
- return mean + r * cos(phi);
-}
-
-inline MTRand::uint32 MTRand::randInt()
-{
- // Pull a 32-bit integer from the generator state
- // Every other access function simply transforms the numbers extracted here
-
- if( left == 0 ) reload();
- --left;
-
- register uint32 s1;
- s1 = *pNext++;
- s1 ^= (s1 >> 11);
- s1 ^= (s1 << 7) & 0x9d2c5680UL;
- s1 ^= (s1 << 15) & 0xefc60000UL;
- return ( s1 ^ (s1 >> 18) );
-}
-
-inline MTRand::uint32 MTRand::randInt( const uint32& n )
-{
- // Find which bits are used in n
- // Optimized by Magnus Jonsson (magnus@smartelectronix.com)
- uint32 used = n;
- used |= used >> 1;
- used |= used >> 2;
- used |= used >> 4;
- used |= used >> 8;
- used |= used >> 16;
-
- // Draw numbers until one is found in [0,n]
- uint32 i;
- do
- i = randInt() & used; // toss unused bits to shorten search
- while( i > n );
- return i;
-}
-
-inline void MTRand::seed( const uint32 oneSeed )
-{
- // Seed the generator with a simple uint32
- initialize(oneSeed);
- reload();
-}
-
-inline void MTRand::seed( uint32 *const bigSeed, const uint32 seedLength )
-{
- // Seed the generator with an array of uint32's
- // There are 2^19937-1 possible initial states. This function allows
- // all of those to be accessed by providing at least 19937 bits (with a
- // default seed length of N = 624 uint32's). Any bits above the lower 32
- // in each element are discarded.
- // Just call seed() if you want to get array from /dev/urandom
- initialize(19650218UL);
- register int i = 1;
- register uint32 j = 0;
- register int k = ( N > int(seedLength) ? N : int(seedLength) );
- for (; k; --k )
- {
- state[i] =
- state[i] ^ ( (state[i-1] ^ (state[i-1] >> 30)) * 1664525UL );
- state[i] += ( bigSeed[j] & 0xffffffffUL ) + j;
- state[i] &= 0xffffffffUL;
- ++i; ++j;
- if( i >= N ) { state[0] = state[N-1]; i = 1; }
- if( j >= seedLength ) j = 0;
- }
- for (k = N - 1; k; --k )
- {
- state[i] =
- state[i] ^ ( (state[i-1] ^ (state[i-1] >> 30)) * 1566083941UL );
- state[i] -= i;
- state[i] &= 0xffffffffUL;
- ++i;
- if( i >= N ) { state[0] = state[N-1]; i = 1; }
- }
- state[0] = 0x80000000UL; // MSB is 1, assuring non-zero initial array
- reload();
-}
-
-inline void MTRand::seed()
-{
- // Seed the generator with hash of time() and clock() values
- seed( hash( time(NULL), clock() ) );
-}
-
-inline void MTRand::initialize( const uint32 seed )
-{
- // Initialize generator state with seed
- // See Knuth TAOCP Vol 2, 3rd Ed, p.106 for multiplier.
- // In previous versions, most significant bits (MSBs) of the seed affect
- // only MSBs of the state array. Modified 9 Jan 2002 by Makoto Matsumoto.
- register uint32 *s = state;
- register uint32 *r = state;
- register int i = 1;
- *s++ = seed & 0xffffffffUL;
- for (; i < N; ++i )
- {
- *s++ = ( 1812433253UL * ( *r ^ (*r >> 30) ) + i ) & 0xffffffffUL;
- r++;
- }
-}
-
-inline void MTRand::reload()
-{
- // Generate N new values in state
- // Made clearer and faster by Matthew Bellew (matthew.bellew@home.com)
- register uint32 *p = state;
- register int i;
- for (i = N - M; i--; ++p )
- *p = twist( p[M], p[0], p[1] );
- for (i = M; --i; ++p )
- *p = twist( p[M-N], p[0], p[1] );
- *p = twist( p[M-N], p[0], state[0] );
-
- left = N, pNext = state;
-}
-
-inline MTRand::uint32 MTRand::hash( time_t t, clock_t c )
-{
- // Get a uint32 from t and c
- // Better than uint32(x) in case x is floating point in [0,1]
- // Based on code by Lawrence Kirby (fred@genesis.demon.co.uk)
-
- static uint32 differ = 0; // guarantee time-based seeds will change
-
- uint32 h1 = 0;
- unsigned char *p = (unsigned char *) &t;
- for (size_t i = 0; i < sizeof(t); ++i )
- {
- h1 *= UCHAR_MAX + 2U;
- h1 += p[i];
- }
- uint32 h2 = 0;
- p = (unsigned char *) &c;
- for (size_t j = 0; j < sizeof(c); ++j )
- {
- h2 *= UCHAR_MAX + 2U;
- h2 += p[j];
- }
- return ( h1 + differ++ ) ^ h2;
-}
-
-inline void MTRand::save( uint32* saveArray ) const
-{
- register uint32 *sa = saveArray;
- register const uint32 *s = state;
- register int i = N;
- for (; i--; *sa++ = *s++ ) {}
- *sa = left;
-}
-
-inline void MTRand::load( uint32 *const loadArray )
-{
- register uint32 *s = state;
- register uint32 *la = loadArray;
- register int i = N;
- for (; i--; *s++ = *la++ ) {}
- left = *la;
- pNext = &state[N-left];
-}
-
-/* Trinity not use streams for random values output
-inline std::ostream& operator<<( std::ostream& os, const MTRand& mtrand )
-{
- register const MTRand::uint32 *s = mtrand.state;
- register int i = mtrand.N;
- for (; i--; os << *s++ << "\t" ) {}
- return os << mtrand.left;
-}
-
-inline std::istream& operator>>( std::istream& is, MTRand& mtrand )
-{
- register MTRand::uint32 *s = mtrand.state;
- register int i = mtrand.N;
- for (; i--; is >> *s++ ) {}
- is >> mtrand.left;
- mtrand.pNext = &mtrand.state[mtrand.N-mtrand.left];
- return is;
-}
-*/
-
-#endif // MERSENNETWISTER_H
-
-// Change log:
-//
-// v0.1 - First release on 15 May 2000
-// - Based on code by Makoto Matsumoto, Takuji Nishimura, and Shawn Cokus
-// - Translated from C to C++
-// - Made completely ANSI compliant
-// - Designed convenient interface for initialization, seeding, and
-// obtaining numbers in default or user-defined ranges
-// - Added automatic seeding from /dev/urandom or time() and clock()
-// - Provided functions for saving and loading generator state
-//
-// v0.2 - Fixed bug which reloaded generator one step too late
-//
-// v0.3 - Switched to clearer, faster reload() code from Matthew Bellew
-//
-// v0.4 - Removed trailing newline in saved generator format to be consistent
-// with output format of built-in types
-//
-// v0.5 - Improved portability by replacing static const int's with enum's and
-// clarifying return values in seed(); suggested by Eric Heimburg
-// - Removed MAXINT constant; use 0xffffffffUL instead
-//
-// v0.6 - Eliminated seed overflow when uint32 is larger than 32 bits
-// - Changed integer [0,n] generator to give better uniformity
-//
-// v0.7 - Fixed operator precedence ambiguity in reload()
-// - Added access for real numbers in (0,1) and (0,n)
-//
-// v0.8 - Included time.h header to properly support time_t and clock_t
-//
-// v1.0 - Revised seeding to match 26 Jan 2002 update of Nishimura and Matsumoto
-// - Allowed for seeding with arrays of any length
-// - Added access for real numbers in [0,1) with 53-bit resolution
-// - Added access for real numbers from normal (Gaussian) distributions
-// - Increased overall speed by optimizing twist()
-// - Doubled speed of integer [0,n] generation
-// - Fixed out-of-range number generation on 64-bit machines
-// - Improved portability by substituting literal constants for long enum's
-// - Changed license from GNU LGPL to BSD
-
diff --git a/doc/UnixInstall.txt b/doc/UnixInstall.txt
index 8691e5cf559..71ee4282a7c 100644
--- a/doc/UnixInstall.txt
+++ b/doc/UnixInstall.txt
@@ -1,5 +1,5 @@
= TrinityCore -- Linux installation =
-Copyright (C) 2008-2011 TrinityCore (http://www.trinitycore.org)
+Copyright (C) 2008-2012 TrinityCore (http://www.trinitycore.org)
=========================================================
WARNING: THIS DOCUMENTATION IS NOT ALWAYS UP TO DATE.
diff --git a/revision.h.in.cmake b/revision.h.in.cmake
index 9212b8060ef..b553bb2f26f 100644
--- a/revision.h.in.cmake
+++ b/revision.h.in.cmake
@@ -3,7 +3,7 @@
#define _HASH "@rev_hash@"
#define _DATE "@rev_date@"
#define VER_COMPANYNAME_STR "TrinityCore Developers"
- #define VER_LEGALCOPYRIGHT_STR "(c)2008-2011 TrinityCore"
+ #define VER_LEGALCOPYRIGHT_STR "(c)2008-2012 TrinityCore"
#define VER_FILEVERSION 0,0,0
#define VER_FILEVERSION_STR "@rev_date@ (@rev_hash@)"
#define VER_PRODUCTVERSION VER_FILEVERSION
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index 2a86ad75166..9e894850fd7 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.13 Distrib 5.5.19, for Win64 (x86)
+-- MySQL dump 10.13 Distrib 5.5.22, for Win64 (x86)
--
-- Host: localhost Database: auth
-- ------------------------------------------------------
--- Server version 5.5.19
+-- Server version 5.5.22
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -23,27 +23,27 @@ DROP TABLE IF EXISTS `account`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `account` (
- `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier',
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier',
`username` varchar(32) NOT NULL DEFAULT '',
`sha_pass_hash` varchar(40) NOT NULL DEFAULT '',
- `sessionkey` longtext,
- `v` longtext,
- `s` longtext,
- `email` text,
+ `sessionkey` varchar(80) NOT NULL DEFAULT '',
+ `v` varchar(64) NOT NULL DEFAULT '',
+ `s` varchar(64) NOT NULL DEFAULT '',
+ `email` varchar(254) NOT NULL DEFAULT '',
`joindate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `last_ip` varchar(30) NOT NULL DEFAULT '127.0.0.1',
- `failed_logins` int(11) unsigned NOT NULL DEFAULT '0',
+ `last_ip` varchar(15) NOT NULL DEFAULT '127.0.0.1',
+ `failed_logins` int(10) unsigned NOT NULL DEFAULT '0',
`locked` tinyint(3) unsigned NOT NULL DEFAULT '0',
`last_login` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `online` tinyint(4) NOT NULL DEFAULT '0',
+ `online` tinyint(3) unsigned NOT NULL DEFAULT '0',
`expansion` tinyint(3) unsigned NOT NULL DEFAULT '2',
- `mutetime` bigint(40) NOT NULL DEFAULT '0',
+ `mutetime` bigint(20) NOT NULL DEFAULT '0',
`locale` tinyint(3) unsigned NOT NULL DEFAULT '0',
- `os` varchar(4) NOT NULL DEFAULT '',
- `recruiter` int(11) NOT NULL DEFAULT '0',
+ `os` varchar(3) NOT NULL DEFAULT '',
+ `recruiter` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`)
-) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Account System';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Account System';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -63,11 +63,11 @@ DROP TABLE IF EXISTS `account_access`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `account_access` (
- `id` int(11) unsigned NOT NULL,
+ `id` int(10) unsigned NOT NULL,
`gmlevel` tinyint(3) unsigned NOT NULL,
`RealmID` int(11) NOT NULL DEFAULT '-1',
PRIMARY KEY (`id`,`RealmID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -87,14 +87,14 @@ DROP TABLE IF EXISTS `account_banned`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `account_banned` (
- `id` int(11) NOT NULL DEFAULT '0' COMMENT 'Account id',
- `bandate` bigint(40) NOT NULL DEFAULT '0',
- `unbandate` bigint(40) NOT NULL DEFAULT '0',
+ `id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Account id',
+ `bandate` int(10) unsigned NOT NULL DEFAULT '0',
+ `unbandate` int(10) unsigned NOT NULL DEFAULT '0',
`bannedby` varchar(50) NOT NULL,
`banreason` varchar(255) NOT NULL,
- `active` tinyint(4) NOT NULL DEFAULT '1',
+ `active` tinyint(3) unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`,`bandate`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Ban List';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Ban List';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -114,13 +114,13 @@ DROP TABLE IF EXISTS `ip_banned`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ip_banned` (
- `ip` varchar(32) NOT NULL DEFAULT '127.0.0.1',
- `bandate` bigint(40) NOT NULL,
- `unbandate` bigint(40) NOT NULL,
+ `ip` varchar(15) NOT NULL DEFAULT '127.0.0.1',
+ `bandate` int(10) unsigned NOT NULL,
+ `unbandate` int(10) unsigned NOT NULL,
`bannedby` varchar(50) NOT NULL DEFAULT '[Console]',
`banreason` varchar(255) NOT NULL DEFAULT 'no reason',
PRIMARY KEY (`ip`,`bandate`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Banned IPs';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Banned IPs';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -140,11 +140,11 @@ DROP TABLE IF EXISTS `logs`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `logs` (
- `time` int(14) NOT NULL,
- `realm` int(4) NOT NULL,
- `type` int(4) NOT NULL,
- `string` text
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+ `time` int(10) unsigned NOT NULL,
+ `realm` int(10) unsigned NOT NULL,
+ `type` tinyint(3) unsigned NOT NULL,
+ `string` text CHARACTER SET latin1
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -164,12 +164,12 @@ DROP TABLE IF EXISTS `realmcharacters`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `realmcharacters` (
- `realmid` int(11) unsigned NOT NULL DEFAULT '0',
- `acctid` bigint(20) unsigned NOT NULL,
+ `realmid` int(10) unsigned NOT NULL DEFAULT '0',
+ `acctid` int(10) unsigned NOT NULL,
`numchars` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`realmid`,`acctid`),
KEY `acctid` (`acctid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Realm Character Tracker';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Realm Character Tracker';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -189,19 +189,19 @@ DROP TABLE IF EXISTS `realmlist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `realmlist` (
- `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL DEFAULT '',
- `address` varchar(32) NOT NULL DEFAULT '127.0.0.1',
- `port` int(11) NOT NULL DEFAULT '8085',
+ `address` varchar(255) NOT NULL DEFAULT '127.0.0.1',
+ `port` smallint(5) unsigned NOT NULL DEFAULT '8085',
`icon` tinyint(3) unsigned NOT NULL DEFAULT '0',
- `color` tinyint(3) unsigned NOT NULL DEFAULT '2',
+ `flag` tinyint(3) unsigned NOT NULL DEFAULT '2',
`timezone` tinyint(3) unsigned NOT NULL DEFAULT '0',
`allowedSecurityLevel` tinyint(3) unsigned NOT NULL DEFAULT '0',
`population` float unsigned NOT NULL DEFAULT '0',
- `gamebuild` int(11) unsigned NOT NULL DEFAULT '14545',
+ `gamebuild` int(10) unsigned NOT NULL DEFAULT '14545',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_name` (`name`)
-) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Realm System';
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='Realm System';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -223,14 +223,13 @@ DROP TABLE IF EXISTS `uptime`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `uptime` (
- `realmid` int(11) unsigned NOT NULL,
- `starttime` bigint(20) unsigned NOT NULL DEFAULT '0',
- `startstring` varchar(64) NOT NULL DEFAULT '',
- `uptime` bigint(20) unsigned NOT NULL DEFAULT '0',
+ `realmid` int(10) unsigned NOT NULL,
+ `starttime` int(10) unsigned NOT NULL DEFAULT '0',
+ `uptime` int(10) unsigned NOT NULL DEFAULT '0',
`maxplayers` smallint(5) unsigned NOT NULL DEFAULT '0',
`revision` varchar(255) NOT NULL DEFAULT 'Trinitycore',
PRIMARY KEY (`realmid`,`starttime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Uptime system';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Uptime system';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -251,4 +250,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2012-02-19 13:18:35
+-- Dump completed on 2012-03-28 18:26:06
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql
index 5f4b90d9f17..6820bdee1c0 100644
--- a/sql/base/characters_database.sql
+++ b/sql/base/characters_database.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.13 Distrib 5.5.9, for Win64 (x86)
+-- MySQL dump 10.13 Distrib 5.5.21, for Win64 (x86)
--
-- Host: localhost Database: characters
-- ------------------------------------------------------
--- Server version 5.5.9
+-- Server version 5.5.21
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -1924,6 +1924,8 @@ CREATE TABLE `lag_reports` (
`posX` float NOT NULL DEFAULT '0',
`posY` float NOT NULL DEFAULT '0',
`posZ` float NOT NULL DEFAULT '0',
+ `latency` int(10) unsigned NOT NULL DEFAULT '0',
+ `createTime` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`reportId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -2262,3 +2264,5 @@ UNLOCK TABLES;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2012-03-25 21:14:19
diff --git a/sql/updates/world/2012_02_13_00_world_version.sql b/sql/old/3.3.5a/2012_02_13_00_world_version.sql
similarity index 100%
rename from sql/updates/world/2012_02_13_00_world_version.sql
rename to sql/old/3.3.5a/2012_02_13_00_world_version.sql
diff --git a/sql/updates/world/2012_02_14_00_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2012_02_14_00_world_achievement_criteria_data.sql
similarity index 91%
rename from sql/updates/world/2012_02_14_00_world_achievement_criteria_data.sql
rename to sql/old/3.3.5a/2012_02_14_00_world_achievement_criteria_data.sql
index 4361f33cf38..e7993726132 100644
--- a/sql/updates/world/2012_02_14_00_world_achievement_criteria_data.sql
+++ b/sql/old/3.3.5a/2012_02_14_00_world_achievement_criteria_data.sql
@@ -4,4 +4,4 @@ INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,
(13013, 12, 1, 0, ""), -- heroic
(13012, 12, 1, 0, ""), -- heroic
(13011, 12, 0, 0, ""), -- normal
-(12780, 12, 0, 0, ""); -- normal
\ No newline at end of file
+(12780, 12, 0, 0, ""); -- normal
diff --git a/sql/updates/world/2012_02_15_00_world_quest_template.sql b/sql/old/3.3.5a/2012_02_15_00_world_quest_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_00_world_quest_template.sql
rename to sql/old/3.3.5a/2012_02_15_00_world_quest_template.sql
diff --git a/sql/updates/world/2012_02_15_01_world_areatrigger_tavern.sql b/sql/old/3.3.5a/2012_02_15_01_world_areatrigger_tavern.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_01_world_areatrigger_tavern.sql
rename to sql/old/3.3.5a/2012_02_15_01_world_areatrigger_tavern.sql
diff --git a/sql/updates/world/2012_02_15_02_world_item_template.sql b/sql/old/3.3.5a/2012_02_15_02_world_item_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_02_world_item_template.sql
rename to sql/old/3.3.5a/2012_02_15_02_world_item_template.sql
diff --git a/sql/updates/world/2012_02_15_03_world_quest_template.sql b/sql/old/3.3.5a/2012_02_15_03_world_quest_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_03_world_quest_template.sql
rename to sql/old/3.3.5a/2012_02_15_03_world_quest_template.sql
diff --git a/sql/updates/world/2012_02_15_04_world_quest_template.sql b/sql/old/3.3.5a/2012_02_15_04_world_quest_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_04_world_quest_template.sql
rename to sql/old/3.3.5a/2012_02_15_04_world_quest_template.sql
diff --git a/sql/updates/world/2012_02_15_06_world_creature_involvedrelation.sql b/sql/old/3.3.5a/2012_02_15_06_world_creature_involvedrelation.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_06_world_creature_involvedrelation.sql
rename to sql/old/3.3.5a/2012_02_15_06_world_creature_involvedrelation.sql
diff --git a/sql/updates/world/2012_02_15_07_00_world_creature.sql b/sql/old/3.3.5a/2012_02_15_07_00_world_creature.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_07_00_world_creature.sql
rename to sql/old/3.3.5a/2012_02_15_07_00_world_creature.sql
diff --git a/sql/updates/world/2012_02_15_07_01_world_waypoint_data.sql b/sql/old/3.3.5a/2012_02_15_07_01_world_waypoint_data.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_07_01_world_waypoint_data.sql
rename to sql/old/3.3.5a/2012_02_15_07_01_world_waypoint_data.sql
diff --git a/sql/updates/world/2012_02_15_07_02_world_misc.sql b/sql/old/3.3.5a/2012_02_15_07_02_world_misc.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_07_02_world_misc.sql
rename to sql/old/3.3.5a/2012_02_15_07_02_world_misc.sql
diff --git a/sql/updates/world/2012_02_15_08_world_sai.sql b/sql/old/3.3.5a/2012_02_15_08_world_sai.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_08_world_sai.sql
rename to sql/old/3.3.5a/2012_02_15_08_world_sai.sql
diff --git a/sql/updates/world/2012_02_15_09_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_02_15_09_world_spell_proc_event.sql
similarity index 100%
rename from sql/updates/world/2012_02_15_09_world_spell_proc_event.sql
rename to sql/old/3.3.5a/2012_02_15_09_world_spell_proc_event.sql
diff --git a/sql/updates/world/2012_02_16_00_world_conditions.sql b/sql/old/3.3.5a/2012_02_16_00_world_conditions.sql
similarity index 99%
rename from sql/updates/world/2012_02_16_00_world_conditions.sql
rename to sql/old/3.3.5a/2012_02_16_00_world_conditions.sql
index a01792ef838..5bef38fc485 100644
--- a/sql/updates/world/2012_02_16_00_world_conditions.sql
+++ b/sql/old/3.3.5a/2012_02_16_00_world_conditions.sql
@@ -4,8 +4,8 @@ CREATE TABLE `temp_convert_spells`
PRIMARY KEY (`id`)
);
-# spells with EffectImplicitTarget In (6,21, 25) + spells having Targets & 1115534
-# those spells are the ones which require explicit unit target to cast
+-- spells with EffectImplicitTarget In (6,21, 25) + spells having Targets & 1115534
+-- those spells are the ones which require explicit unit target to cast
INSERT INTO `temp_convert_spells` VALUES
(5),
(11),
@@ -12783,13 +12783,13 @@ INSERT IGNORE INTO `temp_item_spell` SELECT `entry`, `spellid_5` FROM `item_temp
INSERT INTO `temp_cond_vals` (`spellId`, `entry`, `dead`, `errorTextId`, `comment`) SELECT DISTINCT (SELECT `spellId` FROM `temp_item_spell` WHERE `itemId` = `SourceEntry`), `ConditionValue2`, (`ConditionValue1` - 1), `ErrorTextId`, `Comment` FROM `conditions`
WHERE `SourceTypeOrReferenceId` = 18;
-#use CONDITION_OBJECT_ENTRY instead of CONDITION_ITEM_TARGET
+-- use CONDITION_OBJECT_ENTRY instead of CONDITION_ITEM_TARGET
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorTextId`, `Comment`)
SELECT DISTINCT 17, 0, `spellId`, 0, `elseGroup` - 1, 31, 1, 3, `entry`, 0, 0, `errorTextId`, `comment` FROM `temp_cond_vals`;
-#for CONDITION_ITEM_TARGET with ConditionValue1 = DEAD we're adding !CONDITION_ALIVE as a second requirement
+-- for CONDITION_ITEM_TARGET with ConditionValue1 = DEAD we're adding !CONDITION_ALIVE as a second requirement
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorTextId`, `Comment`)
SELECT DISTINCT 17, 0, `spellId`, 0, `elseGroup` - 1, 36, 1, 0, 0, 0, 1, `errorTextId`, `comment` FROM `temp_cond_vals` WHERE `dead`;
-#remove entries which could be converted by this sql
+-- remove entries which could be converted by this sql
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 18 AND `SourceEntry` IN (SELECT `itemId` FROM `temp_item_spell`);
DROP TABLE `temp_convert_spells`;
DROP TABLE `temp_cond_vals`;
diff --git a/sql/updates/world/2012_02_16_01_world_conditions.sql b/sql/old/3.3.5a/2012_02_16_01_world_conditions.sql
similarity index 100%
rename from sql/updates/world/2012_02_16_01_world_conditions.sql
rename to sql/old/3.3.5a/2012_02_16_01_world_conditions.sql
diff --git a/sql/updates/world/2012_02_17_00_world_waypoints.sql b/sql/old/3.3.5a/2012_02_17_00_world_waypoints.sql
similarity index 100%
rename from sql/updates/world/2012_02_17_00_world_waypoints.sql
rename to sql/old/3.3.5a/2012_02_17_00_world_waypoints.sql
diff --git a/sql/updates/world/2012_02_18_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_02_18_00_world_spell_script_names.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_00_world_spell_script_names.sql
rename to sql/old/3.3.5a/2012_02_18_00_world_spell_script_names.sql
diff --git a/sql/updates/world/2012_02_18_01_world_spell_dbc.sql b/sql/old/3.3.5a/2012_02_18_01_world_spell_dbc.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_01_world_spell_dbc.sql
rename to sql/old/3.3.5a/2012_02_18_01_world_spell_dbc.sql
diff --git a/sql/updates/world/2012_02_18_02_world_gossip.sql b/sql/old/3.3.5a/2012_02_18_02_world_gossip.sql
similarity index 98%
rename from sql/updates/world/2012_02_18_02_world_gossip.sql
rename to sql/old/3.3.5a/2012_02_18_02_world_gossip.sql
index c72532e3f21..47882d4eb36 100644
--- a/sql/updates/world/2012_02_18_02_world_gossip.sql
+++ b/sql/old/3.3.5a/2012_02_18_02_world_gossip.sql
@@ -49,4 +49,4 @@ INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`
(573,0,0,'These dwarves are the same ones today, yes? Do dwarves maintain any other links to the Earthen?',1,1,574,0,0,0,''),
(574,0,0,'Who are the Creators?',1,1,575,0,0,0,''),
(575,0,0,'This is a lot to think about.',1,1,576,0,0,0,''),
-(576,0,0,'I will access the discs now.',1,1,0,0,0,0,'');
\ No newline at end of file
+(576,0,0,'I will access the discs now.',1,1,0,0,0,0,'');
diff --git a/sql/updates/world/2012_02_18_03_world_gossip.sql b/sql/old/3.3.5a/2012_02_18_03_world_gossip.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_03_world_gossip.sql
rename to sql/old/3.3.5a/2012_02_18_03_world_gossip.sql
diff --git a/sql/updates/world/2012_02_18_04_world_spell_script_names.sql b/sql/old/3.3.5a/2012_02_18_04_world_spell_script_names.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_04_world_spell_script_names.sql
rename to sql/old/3.3.5a/2012_02_18_04_world_spell_script_names.sql
diff --git a/sql/updates/world/2012_02_18_05_world_creatures.sql b/sql/old/3.3.5a/2012_02_18_05_world_creatures.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_05_world_creatures.sql
rename to sql/old/3.3.5a/2012_02_18_05_world_creatures.sql
diff --git a/sql/updates/world/2012_02_18_06_world_gossip.sql b/sql/old/3.3.5a/2012_02_18_06_world_gossip.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_06_world_gossip.sql
rename to sql/old/3.3.5a/2012_02_18_06_world_gossip.sql
diff --git a/sql/updates/world/2012_02_18_07_world_gossip.sql b/sql/old/3.3.5a/2012_02_18_07_world_gossip.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_07_world_gossip.sql
rename to sql/old/3.3.5a/2012_02_18_07_world_gossip.sql
diff --git a/sql/updates/world/2012_02_18_08_world_gossip.sql b/sql/old/3.3.5a/2012_02_18_08_world_gossip.sql
similarity index 100%
rename from sql/updates/world/2012_02_18_08_world_gossip.sql
rename to sql/old/3.3.5a/2012_02_18_08_world_gossip.sql
diff --git a/sql/updates/auth/2012_02_19_00_auth_account.sql b/sql/old/3.3.5a/2012_02_19_00_auth_account.sql
similarity index 100%
rename from sql/updates/auth/2012_02_19_00_auth_account.sql
rename to sql/old/3.3.5a/2012_02_19_00_auth_account.sql
diff --git a/sql/updates/characters/2012_02_19_00_characters_warden_action.sql b/sql/old/3.3.5a/2012_02_19_00_characters_warden_action.sql
similarity index 83%
rename from sql/updates/characters/2012_02_19_00_characters_warden_action.sql
rename to sql/old/3.3.5a/2012_02_19_00_characters_warden_action.sql
index 6e317f5100d..587f65fedc5 100644
--- a/sql/updates/characters/2012_02_19_00_characters_warden_action.sql
+++ b/sql/old/3.3.5a/2012_02_19_00_characters_warden_action.sql
@@ -4,4 +4,4 @@ CREATE TABLE `warden_action` (
`wardenId` smallint(5) unsigned NOT NULL,
`action` tinyint(3) unsigned DEFAULT NULL,
PRIMARY KEY (`wardenId`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/sql/updates/world/2012_02_19_00_world_quest_template.sql b/sql/old/3.3.5a/2012_02_19_00_world_quest_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_19_00_world_quest_template.sql
rename to sql/old/3.3.5a/2012_02_19_00_world_quest_template.sql
diff --git a/sql/updates/world/2012_02_19_01_world_quest_template.sql b/sql/old/3.3.5a/2012_02_19_01_world_quest_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_19_01_world_quest_template.sql
rename to sql/old/3.3.5a/2012_02_19_01_world_quest_template.sql
diff --git a/sql/updates/world/2012_02_19_02_world_gameobject.sql b/sql/old/3.3.5a/2012_02_19_02_world_gameobject.sql
similarity index 100%
rename from sql/updates/world/2012_02_19_02_world_gameobject.sql
rename to sql/old/3.3.5a/2012_02_19_02_world_gameobject.sql
diff --git a/sql/updates/world/2012_02_19_03_world_warden_checks.sql b/sql/old/3.3.5a/2012_02_19_03_world_warden_checks.sql
similarity index 100%
rename from sql/updates/world/2012_02_19_03_world_warden_checks.sql
rename to sql/old/3.3.5a/2012_02_19_03_world_warden_checks.sql
diff --git a/sql/updates/world/2012_02_19_04_world_misc_db_updates.sql b/sql/old/3.3.5a/2012_02_19_04_world_misc_db_updates.sql
similarity index 100%
rename from sql/updates/world/2012_02_19_04_world_misc_db_updates.sql
rename to sql/old/3.3.5a/2012_02_19_04_world_misc_db_updates.sql
diff --git a/sql/updates/world/2012_02_19_05_world_say_text.sql b/sql/old/3.3.5a/2012_02_19_05_world_creature_text.sql
similarity index 100%
rename from sql/updates/world/2012_02_19_05_world_say_text.sql
rename to sql/old/3.3.5a/2012_02_19_05_world_creature_text.sql
diff --git a/sql/updates/world/2012_02_19_06_world_say_text.sql b/sql/old/3.3.5a/2012_02_19_06_world_creature_text.sql
similarity index 100%
rename from sql/updates/world/2012_02_19_06_world_say_text.sql
rename to sql/old/3.3.5a/2012_02_19_06_world_creature_text.sql
diff --git a/sql/updates/world/2012_02_20_00_world_sai.sql b/sql/old/3.3.5a/2012_02_20_00_world_sai.sql
similarity index 100%
rename from sql/updates/world/2012_02_20_00_world_sai.sql
rename to sql/old/3.3.5a/2012_02_20_00_world_sai.sql
diff --git a/sql/updates/world/2012_02_20_01_world_misc_db.sql b/sql/old/3.3.5a/2012_02_20_01_world_gossip.sql
similarity index 100%
rename from sql/updates/world/2012_02_20_01_world_misc_db.sql
rename to sql/old/3.3.5a/2012_02_20_01_world_gossip.sql
diff --git a/sql/updates/world/2012_02_20_02_world_conditons.sql b/sql/old/3.3.5a/2012_02_20_02_world_conditons.sql
similarity index 96%
rename from sql/updates/world/2012_02_20_02_world_conditons.sql
rename to sql/old/3.3.5a/2012_02_20_02_world_conditons.sql
index 832d8dbdae5..f87a95fb1c9 100644
--- a/sql/updates/world/2012_02_20_02_world_conditons.sql
+++ b/sql/old/3.3.5a/2012_02_20_02_world_conditons.sql
@@ -1,9 +1,10 @@
-# Update a typo in original data entry
+-- Update a typo in original data entry
UPDATE `npc_spellclick_spells` SET `quest_end`=11999 WHERE `npc_entry`=26477 AND `spell_id`=61832 AND `quest_start`=11999;
-# Delete redundant data with invalid condition type
+
+-- Delete redundant data with invalid condition type
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18;
-# Static Data
+-- Static Data
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,
`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`Comment`) VALUES
(18,24752,44363,0,8,0,11460,0,0,1,'Forbidden rewarded quest for spellclick'),
@@ -167,9 +168,10 @@ INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,
(18,40176,74905,0,8,0,25444,0,0,1,'Forbidden rewarded quest for spellclick'),
(18,40176,74905,0,9,0,25444,0,0,0,'Required quest active for spellclick');
-# Below is a procedure to dynamically convert custom content to conditions table.
-# However this procedure only works for MySQL server versions >= 5.6 due to
-# a bug / missing feature in older MySQL versions.
+-- Below is a procedure to dynamically convert custom content to conditions table.
+-- However this procedure only works for MySQL server versions >= 5.6 due to
+-- a bug / missing feature in older MySQL versions.
+
/*
DROP PROCEDURE IF EXISTS ConvertSpellClickConditions;
@@ -185,7 +187,7 @@ BEGIN
DECLARE quest INT DEFAULT 0;
DECLARE quest2 INT DEFAULT 0;
DECLARE questStartCanActive INT DEFAULT 0;
- DECLARE maxElseGroupId INT DEFAULT 14; # Change this for custom content
+ DECLARE maxElseGroupId INT DEFAULT 14; -- Change this for custom content
SELECT COUNT(*) INTO recordCount FROM `npc_spellclick_spells` WHERE `aura_required` !=0;
WHILE counter < recordCount DO
SELECT `npc_entry`, `spell_id`, `aura_required`
@@ -228,12 +230,12 @@ BEGIN
`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`NegativeCondition`,`Comment`)
VALUES (18,npcEntry,spellId,maxElseGroupId+1,8,0,quest,0,0,'Required quest rewarded for spellclick');
SET maxElseGroupId = maxElseGroupId+1;
- # ELSE IF quest2 != 0 is handled in next loop (forbidden rewarded quest)
+ -- ELSE IF quest2 != 0 is handled in next loop (forbidden rewarded quest)
ELSEIF questStartCanActive = 1 && quest2 = quest THEN
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,
`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`NegativeCondition`,`Comment`)
VALUES (18,npcEntry,spellId,9,0,quest,0,0,'Required quest active for spellclick');
- # ^Adds the required active quest condition. Prohibit quest reward is done in next loop
+ -- ^Adds the required active quest condition. Prohibit quest reward is done in next loop
ELSEIF questStartCanActive = 0 THEN
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,
`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`NegativeCondition`,`Comment`)
diff --git a/sql/updates/world/2012_02_21_00_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_02_21_00_world_creature_loot_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_21_00_world_creature_loot_template.sql
rename to sql/old/3.3.5a/2012_02_21_00_world_creature_loot_template.sql
diff --git a/sql/updates/world/2012_02_21_01_world_conditions.sql b/sql/old/3.3.5a/2012_02_21_01_world_conditions.sql
similarity index 99%
rename from sql/updates/world/2012_02_21_01_world_conditions.sql
rename to sql/old/3.3.5a/2012_02_21_01_world_conditions.sql
index 54685868186..95c32703ea4 100644
--- a/sql/updates/world/2012_02_21_01_world_conditions.sql
+++ b/sql/old/3.3.5a/2012_02_21_01_world_conditions.sql
@@ -3589,4 +3589,4 @@ UPDATE `conditions` SET `ConditionTypeOrReference` = 32, `ConditionValue1` = 0x9
UPDATE `conditions` SET `ConditionTypeOrReference` = 31, `ConditionValue1` = 5 WHERE `ConditionTypeOrReference` = 18 AND `ConditionValue1` = 0;
DROP TABLE `temp_convert_spells`;
-DROP TABLE `temp_cond_vals`;
\ No newline at end of file
+DROP TABLE `temp_cond_vals`;
diff --git a/sql/updates/world/2012_02_21_02_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_02_21_02_world_creature_loot_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_21_02_world_creature_loot_template.sql
rename to sql/old/3.3.5a/2012_02_21_02_world_creature_loot_template.sql
diff --git a/sql/updates/world/2012_02_21_03_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_02_21_03_world_creature_loot_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_21_03_world_creature_loot_template.sql
rename to sql/old/3.3.5a/2012_02_21_03_world_creature_loot_template.sql
diff --git a/sql/updates/world/2012_02_21_04_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_02_21_04_world_creature_loot_template.sql
similarity index 100%
rename from sql/updates/world/2012_02_21_04_world_creature_loot_template.sql
rename to sql/old/3.3.5a/2012_02_21_04_world_creature_loot_template.sql
diff --git a/sql/updates/world/2012_02_21_05_world_Gossip_SAI.sql b/sql/old/3.3.5a/2012_02_21_05_world_gossip.sql
similarity index 100%
rename from sql/updates/world/2012_02_21_05_world_Gossip_SAI.sql
rename to sql/old/3.3.5a/2012_02_21_05_world_gossip.sql
diff --git a/sql/updates/world/2012_02_21_06_world_Gossip.sql b/sql/old/3.3.5a/2012_02_21_06_world_Gossip.sql
similarity index 100%
rename from sql/updates/world/2012_02_21_06_world_Gossip.sql
rename to sql/old/3.3.5a/2012_02_21_06_world_Gossip.sql
diff --git a/sql/updates/world/2012_02_22_00_world_SAI.sql b/sql/old/3.3.5a/2012_02_22_00_world_sai.sql
similarity index 100%
rename from sql/updates/world/2012_02_22_00_world_SAI.sql
rename to sql/old/3.3.5a/2012_02_22_00_world_sai.sql
diff --git a/sql/updates/world/2012_02_22_01_world_say_text.sql b/sql/old/3.3.5a/2012_02_22_01_world_creature_text.sql
similarity index 98%
rename from sql/updates/world/2012_02_22_01_world_say_text.sql
rename to sql/old/3.3.5a/2012_02_22_01_world_creature_text.sql
index 035962e11c3..8b7761e48a0 100644
--- a/sql/updates/world/2012_02_22_01_world_say_text.sql
+++ b/sql/old/3.3.5a/2012_02_22_01_world_creature_text.sql
@@ -31,4 +31,4 @@ INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`pr
(15214,27,0, 'The Horde has defended Wintergrasp Fortress!',41,0,100,0,0,0, 'Invisible Stalker'),
(15214,28,0, 'The Horde has captured Wintergrasp Fortress!',41,0,100,0,0,0, 'Invisible Stalker'),
(15214,29,0, 'The Alliance has defended Wintergrasp Fortress!',41,0,100,0,0,0, 'Invisible Stalker'),
-(15214,30,0, 'The Alliance has captured Wintergrasp Fortress!',41,0,100,0,0,0, 'Invisible Stalker');
\ No newline at end of file
+(15214,30,0, 'The Alliance has captured Wintergrasp Fortress!',41,0,100,0,0,0, 'Invisible Stalker');
diff --git a/sql/updates/world/2012_02_22_02_world_misc.sql b/sql/old/3.3.5a/2012_02_22_02_world_misc.sql
similarity index 100%
rename from sql/updates/world/2012_02_22_02_world_misc.sql
rename to sql/old/3.3.5a/2012_02_22_02_world_misc.sql
diff --git a/sql/updates/world/2012_02_22_03_world_conditions.sql b/sql/old/3.3.5a/2012_02_22_03_world_conditions.sql
similarity index 100%
rename from sql/updates/world/2012_02_22_03_world_conditions.sql
rename to sql/old/3.3.5a/2012_02_22_03_world_conditions.sql
diff --git a/sql/old/3.3.5a/2012_02_23_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_02_23_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..6ea96033091
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_23_00_world_spell_script_names.sql
@@ -0,0 +1,7 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` in (11885,11886,11887,11888,11889);
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(11885,'spell_item_muisek_vessel'),
+(11886,'spell_item_muisek_vessel'),
+(11887,'spell_item_muisek_vessel'),
+(11888,'spell_item_muisek_vessel'),
+(11889,'spell_item_muisek_vessel');
diff --git a/sql/old/3.3.5a/2012_02_24_00_world_gameobject_loot_template.sql b/sql/old/3.3.5a/2012_02_24_00_world_gameobject_loot_template.sql
new file mode 100644
index 00000000000..daecfc02dfc
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_24_00_world_gameobject_loot_template.sql
@@ -0,0 +1,10 @@
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (28058,28074,28088,28064,28082,28096) AND `item`=49908;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Deathbringer's Cache
+(28058,49908,20,1,0,1,1), -- Primordial Saronite 10H
+(28074,49908,20,1,0,1,1), -- Primordial Saronite 25N
+(28088,49908,20,1,0,1,1), -- Primordial Saronite 25H
+-- Cache of the Dreamwalker
+(28064,49908,20,1,0,1,1), -- Primordial Saronite 10H
+(28082,49908,20,1,0,1,1), -- Primordial Saronite 25N
+(28096,49908,20,1,0,1,1); -- Primordial Saronite 25H
diff --git a/sql/old/3.3.5a/2012_02_24_01_world_sai.sql b/sql/old/3.3.5a/2012_02_24_01_world_sai.sql
new file mode 100644
index 00000000000..19e4e8fb772
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_24_01_world_sai.sql
@@ -0,0 +1,44 @@
+-- Fix for quest "You've Really Done It This Time, Kul" 14096 Alliance / 14142 Horde
+-- SAI for Black Cage
+SET @ENTRY=195310;
+UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY AND `source_type`=1);
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY*100 AND `source_type`=9);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,1,0,0,70,0,100,0,2,0,0,0,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Black Cage - On activate - Run Script'),
+(@ENTRY*100,9,0,0,0,0,100,0,6000,6000,6000,6000,32,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Black Cage - Script - set go state');
+-- SAI for Captive Aspirant
+SET @ENTRY=34716;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY AND `source_type`=0);
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY*100 AND `source_type`=9);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,8,0,100,0,66531,0,0,0,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Captive Aspirant - On spellhit - Run Script'),
+(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Captive Aspirant - Script - Say random text'),
+(@ENTRY*100,9,1,0,0,0,100,0,2000,2000,2000,2000,33,@ENTRY,0,0,0,0,0,7,0,0,0,0,0,0,0,'Captive Aspirant - Script - Kill credit'),
+(@ENTRY*100,9,2,0,0,0,100,0,2000,2000,2000,2000,46,10,0,0,0,0,0,1,0,0,0,0,0,0,0,'Captive Aspirant - Script - move 10 yards'),
+(@ENTRY*100,9,3,0,0,0,100,0,4000,4000,4000,4000,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Captive Aspirant - Script - despawn');
+-- SAI for Kul the Reckless
+SET @ENTRY=34956;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY AND `source_type`=0);
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY*100 AND `source_type`=9);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,8,0,100,0,66531,0,0,0,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Kul the Reckless - On spellhit - Run Script'),
+(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Kul the Reckless - Script - Say random text'),
+(@ENTRY*100,9,1,0,0,0,100,0,2000,2000,2000,2000,33,@ENTRY,0,0,0,0,0,7,0,0,0,0,0,0,0,'Kul the Reckless - Script - Kill credit'),
+(@ENTRY*100,9,2,0,0,0,100,0,2000,2000,2000,2000,46,10,0,0,0,0,0,1,0,0,0,0,0,0,0,'Kul the Reckless - Script - move 10 yards'),
+(@ENTRY*100,9,3,0,0,0,100,0,4000,4000,4000,4000,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Kul the Reckless - Script - despawn');
+-- Captive Aspirant & Kul the Reckless text from sniff
+DELETE FROM `creature_text` WHERE `entry` IN (34716,34956);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(34716,0,0, 'Thank you, $c.',12,0,100,5,0,0, 'Captive Aspirant'),
+(34716,0,1, 'They''re killing the prisoners! Hurry, help the others.',12,0,100,5,0,0, 'Captive Aspirant'),
+(34716,0,2, 'I knew I shouldn''t have come to the tournament!',12,0,100,5,0,0, 'Captive Aspirant'),
+(34716,0,3, 'I thought I was going to die in there!',12,0,100,5,0,0, 'Captive Aspirant'),
+(34956,0,0, 'They were seconds from strapping me to one of those altars and sucking my soul out. Let''s get out of here!',12,0,100,5,0,0, 'Kul the Reckless');
+-- Target conditions for spell 66531
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=66531;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,2,66531,0,0,31,3,34716,0,0,0,'','Spell 66531 targets npc 34716 or npc 34956'),
+(13,2,66531,0,1,31,3,34956,0,0,0,'','Spell 66531 targets npc 34716 or npc 34956');
diff --git a/sql/old/3.3.5a/2012_02_25_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_02_25_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..9619121e982
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_25_00_world_spell_script_names.sql
@@ -0,0 +1 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_sindragosa_collision_filter';
diff --git a/sql/old/3.3.5a/2012_02_25_01_world_command.sql b/sql/old/3.3.5a/2012_02_25_01_world_command.sql
new file mode 100644
index 00000000000..de708b7a9cc
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_25_01_world_command.sql
@@ -0,0 +1,6 @@
+DELETE FROM `command` WHERE `name` IN ('group','group leader','group disband','group remove');
+INSERT INTO `command` (`name`,`security`,`help`) VALUES
+('group', 3, 'Syntax: .group $subcommand\nType .group to see the list of possible subcommands or .help group $subcommand to see info on subcommands'),
+('group leader', 3, 'Syntax: .group leader [$characterName]\n\nSets the given character as his group''s leader.'),
+('group disband', 3, 'Syntax: .group disband [$characterName]\n\nDisbands the given character''s group.'),
+('group remove', 3, 'Syntax: .group remove [$characterName]\n\nRemoves the given character from his group.');
diff --git a/sql/old/3.3.5a/2012_02_25_01_world_misc.sql b/sql/old/3.3.5a/2012_02_25_01_world_misc.sql
new file mode 100644
index 00000000000..deedd50a819
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_25_01_world_misc.sql
@@ -0,0 +1,11 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (61698);
+INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUES
+(61698,'spell_gen_ds_flush_knockback');
+
+DELETE FROM `spell_dbc` WHERE `id`=61698;
+INSERT INTO `spell_dbc` (`Id`, `Dispel`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `Stances`, `StancesNot`, `Targets`, `CastingTimeIndex`, `AuraInterruptFlags`, `ProcFlags`, `ProcChance`, `ProcCharges`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `RangeIndex`, `StackAmount`, `EquippedItemClass`, `EquippedItemSubClassMask`, `EquippedItemInventoryTypeMask`, `Effect1`, `Effect2`, `Effect3`, `EffectDieSides1`, `EffectDieSides2`, `EffectDieSides3`, `EffectRealPointsPerLevel1`, `EffectRealPointsPerLevel2`, `EffectRealPointsPerLevel3`, `EffectBasePoints1`, `EffectBasePoints2`, `EffectBasePoints3`, `EffectMechanic1`, `EffectMechanic2`, `EffectMechanic3`, `EffectImplicitTargetA1`, `EffectImplicitTargetA2`, `EffectImplicitTargetA3`, `EffectImplicitTargetB1`, `EffectImplicitTargetB2`, `EffectImplicitTargetB3`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectRadiusIndex3`, `EffectApplyAuraName1`, `EffectApplyAuraName2`, `EffectApplyAuraName3`, `EffectAmplitude1`, `EffectAmplitude2`, `EffectAmplitude3`, `EffectMultipleValue1`, `EffectMultipleValue2`, `EffectMultipleValue3`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectMiscValue3`, `EffectMiscValueB1`, `EffectMiscValueB2`, `EffectMiscValueB3`, `EffectTriggerSpell1`, `EffectTriggerSpell2`, `EffectTriggerSpell3`, `EffectSpellClassMaskA1`, `EffectSpellClassMaskA2`, `EffectSpellClassMaskA3`, `EffectSpellClassMaskB1`, `EffectSpellClassMaskB2`, `EffectSpellClassMaskB3`, `EffectSpellClassMaskC1`, `EffectSpellClassMaskC2`, `EffectSpellClassMaskC3`, `MaxTargetLevel`, `SpellFamilyName`, `SpellFamilyFlags1`, `SpellFamilyFlags2`, `SpellFamilyFlags3`, `MaxAffectedTargets`, `DmgClass`, `PreventionType`, `DmgMultiplier1`, `DmgMultiplier2`, `DmgMultiplier3`, `AreaGroupId`, `SchoolMask`, `Comment`) VALUES
+(61698,0,0,536871296,269058048,67108868,268894272,2048,0,1024,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,-1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,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,0,0,0,0,0,0,0,0,0,0,0,0,0,'Flush - Knockback effect');
+
+UPDATE `battleground_template` SET `HordeStartO`=3.14159 WHERE `id`=10;
+
+UPDATE `creature_template` SET `flags_extra`=128 WHERE `entry`=28567;
diff --git a/sql/old/3.3.5a/2012_02_25_02_world_sai.sql b/sql/old/3.3.5a/2012_02_25_02_world_sai.sql
new file mode 100644
index 00000000000..e2ff99534b4
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_25_02_world_sai.sql
@@ -0,0 +1,28 @@
+-- Fix for Quest: 12843 "They Took Our Men!"
+-- SAI for Rusty Cage
+SET @ENTRY=191544;
+UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY AND `source_type`=1);
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY*100 AND `source_type`=9);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,1,0,1,70,0,100,0,2,0,0,0,45,0,1,0,0,0,0,11,29466,5,0,0,0,0,0,'Rusty Cage - On activate - set data on Goblin Prisoner'),
+(@ENTRY,1,1,0,61,0,100,0,0,0,0,0,33,29466,0,0,0,0,0,7,0,0,0,0,0,0,0,'Rusty Cage - On activate - quest credit');
+-- SAI for Goblin Prisoner
+SET @ENTRY=29466;
+UPDATE `creature` SET `modelid`=0,`spawntimesecs`=120,`curhealth`=1 WHERE `id`=29466;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY AND `source_type`=0);
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY*100 AND `source_type`=9);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,11,0,100,1,0,0,0,0,32,0,0,0,0,0,0,15,191544,5,0,0,0,0,0,'Goblin Prisoner - On respawn - reset cage'),
+(@ENTRY,0,1,0,38,0,100,0,0,1,0,0,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Goblin Prisoner - On dataset - Run Script'),
+(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,45,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Goblin Prisoner - Script - set data 0'),
+(@ENTRY*100,9,1,0,0,0,100,0,1000,1000,1000,1000,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Goblin Prisoner - Script - Say random text'),
+(@ENTRY*100,9,2,0,0,0,100,0,2000,2000,2000,2000,46,10,0,0,0,0,0,1,0,0,0,0,0,0,0,'Goblin Prisoner - Script - move 10 yards'),
+(@ENTRY*100,9,3,0,0,0,100,0,4000,4000,4000,4000,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Goblin Prisoner - Script - despawn');
+-- Goblin Prisoner
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'I can''t believe it! I''m free to go!',12,0,100,5,0,0, 'Goblin Prisoner'),
+(@ENTRY,0,1, 'I''m free? I''m free!',12,0,100,5,0,0, 'Goblin Prisoner'),
+(@ENTRY,0,2, 'Time to hightail it! Thanks, friend!',12,0,100,5,0,0, 'Goblin Prisoner');
diff --git a/sql/old/3.3.5a/2012_02_26_00_world_misc.sql b/sql/old/3.3.5a/2012_02_26_00_world_misc.sql
new file mode 100644
index 00000000000..3df42934aa9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_26_00_world_misc.sql
@@ -0,0 +1,13 @@
+UPDATE `spell_area` SET `quest_start`=12987,`quest_end`=12987 WHERE `spell`=56305;
+
+DELETE FROM `reference_loot_template` WHERE `entry` IN (28058,28074,28088,28064,28082,28096) AND `item`=49908; -- bad data
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (28058,28074,28088,28064,28082,28096) AND `item`=49908;
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Deathbringer's Cache
+(28058,49908,20,1,0,1,1), -- Primordial Saronite 10H
+(28074,49908,20,1,0,1,1), -- Primordial Saronite 25N
+(28088,49908,20,1,0,1,1), -- Primordial Saronite 25H
+-- Cache of the Dreamwalker
+(28064,49908,20,1,0,1,1), -- Primordial Saronite 10H
+(28082,49908,20,1,0,1,1), -- Primordial Saronite 25N
+(28096,49908,20,1,0,1,1); -- Primordial Saronite 25H
diff --git a/sql/old/3.3.5a/2012_02_26_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_02_26_01_world_spell_script_names.sql
new file mode 100644
index 00000000000..7bb38d5f2e0
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_26_01_world_spell_script_names.sql
@@ -0,0 +1,4 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (48018, 48020);
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(48018,'spell_warl_demonic_circle_summon'),
+(48020,'spell_warl_demonic_circle_teleport');
diff --git a/sql/old/3.3.5a/2012_02_27_00_world_creature_template.sql b/sql/old/3.3.5a/2012_02_27_00_world_creature_template.sql
new file mode 100644
index 00000000000..b8936774e36
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_27_00_world_creature_template.sql
@@ -0,0 +1,8 @@
+-- Update gold drops in ICC bosses based on old.wowhead.com data
+UPDATE `creature_template` SET `mingold`=250000,`maxgold`=300000 WHERE `entry` IN(36612,37957,37958,37959); -- Lord Marrowgar
+UPDATE `creature_template` SET `mingold`=175000,`maxgold`=225000 WHERE `entry` IN (36626,37504,37505,37506); -- Festergut
+UPDATE `creature_template` SET `mingold`=400000,`maxgold`=500000 WHERE `entry` IN (36627,38390,38549,38550); -- Rotface
+UPDATE `creature_template` SET `mingold`=400000,`maxgold`=500000 WHERE `entry` IN (36678,38431,38585,38586); -- Professor Putricide
+UPDATE `creature_template` SET `mingold`=300000,`maxgold`=350000 WHERE `entry` IN (37955,38434,38435,38436); -- Blood-Queen Lana'thel
+UPDATE `creature_template` SET `mingold`=1330000,`maxgold`=1400000 WHERE `entry` IN (36853,38265,38266,38267); -- Sindragosa
+UPDATE `creature_template` SET `mingold`=1300000,`maxgold`=1500000 WHERE `entry` IN (36597,39166,39167,39168); -- The Lich King
diff --git a/sql/old/3.3.5a/2012_02_28_00_world_wintergrasp_spawns.sql b/sql/old/3.3.5a/2012_02_28_00_world_wintergrasp_spawns.sql
new file mode 100644
index 00000000000..9c07709246f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_28_00_world_wintergrasp_spawns.sql
@@ -0,0 +1,366 @@
+-- Delete unused creature_data rows
+DELETE FROM `creature_addon` WHERE `guid` IN (131728,131282,131283,131284,131285,131286,131287,131288,131289,131290,131291,131292,131293,131294,131295,131296,131297,131298,131299,131300,131301,131302,131303,131304,131305,131306,131307,131308,131309,131310,131311,131312,131313,131314,131315,131316,131317,131318,131319,131320,131321,131322,131326,131327,131328,131350,131351,131352,131353,131354,131376,131377,131378,131379,131380,131392,131437,131458,131631,131632,131633,131634,131635,131636,131706,131727,13128,131729,131730,131731);
+
+-- Replace Wintergrasp spawns with properly phased spawns
+SET @GUID := 88310;
+DELETE FROM `creature` WHERE `id` IN (31841,31842,30400,30499,30489,30869,31036,31051,31052,31054,31108,31109,31153,39172,30870,31053,31091,31101,31102,31106,31107,31151,32294,39173,32296,30488);
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES
+-- Taunka Spirit Guide (Horde)
+(@GUID+0,31841,571,1,0x00000010,0,0,4318.436,2408.06738,392.675751,6.23082542,120,0,0,1,0,0), -- Eastspark Workshop
+(@GUID+1,31841,571,1,0x00000010,0,0,4336.25439,3235.51978,390.334,0.628318548,120,0,0,1,0,0), -- Westspark Workshop
+(@GUID+2,31841,571,1,0x00000010,0,0,5104.753,2300.9458,368.568054,0.7330383,120,0,0,1,0,0), -- The Sunken Ring
+(@GUID+3,31841,571,1,0x00000010,0,0,5103.133,3462.128,368.568054,5.270895,120,0,0,1,0,0), -- The Chilled Quagmire "Outside broker Temple"
+(@GUID+4,31841,571,1,0x00000040,0,0,5537.482,2898.90674,517.2589,4.86946869,120,0,0,1,0,0), -- Fortress
+(@GUID+5,31841,571,1,0x00000001,0,0,5031.84131,3710.74878,372.4835,0,120,5,0,1,0,0), -- Horde Landing Zone
+-- Dwarven Spirit Guide (Alliance)
+(@GUID+6,31842,571,1,0x00000020,0,0,4318.436,2408.06738,392.675751,6.23082542,120,0,0,1,0,0), -- Eastspark Workshop
+(@GUID+7,31842,571,1,0x00000020,0,0,4336.25439,3235.51978,390.334,0.628318548,120,0,0,1,0,0), -- Westspark Workshop
+(@GUID+8,31842,571,1,0x00000020,0,0,5104.753,2300.9458,368.568054,0.7330383,120,0,0,1,0,0), -- The Sunken Ring
+(@GUID+9,31842,571,1,0x00000020,0,0,5103.133,3462.128,368.568054,5.270895,120,0,0,1,0,0), -- The Chilled Quagmire "Outside The Broken Temple"
+(@GUID+10,31842,571,1,0x00000080,0,0,5537.482,2898.90674,517.2589,4.86946869,120,0,0,1,0,0), -- Fortress
+(@GUID+11,31842,571,1,0x00000001,0,0,5140.7876,2179.12451,390.9512,1.97222209,120,0,0,1,0,0), -- Aliance Landing Zone
+-- Goblin Mechanic (Horde)
+(@GUID+12,30400,571,1,0x00000010,0,0,4964.89,3383.06,382.911,6.12611,180,0,0,1,0,0), -- The Broken Temple
+(@GUID+13,30400,571,1,0x00000010,0,0,4939.76,2389.06,326.153,3.26377,180,0,0,1,0,0), -- The Sunken Ring
+(@GUID+14,30400,571,1,0x00000010,0,0,4357.67,2357.99,382.007,1.67552,180,0,0,1,0,0), -- Eastspark Workshop
+(@GUID+15,30400,571,1,0x00000010,0,0,4354.15,3312.82,378.046,1.67552,180,0,0,1,0,0), -- Westspark Workshop
+(@GUID+16,30400,571,1,0x00000040,0,0,5391.61,2707.72,415.051,4.55531,180,0,0,1,0,0), -- Wintergrasp Fortress
+(@GUID+17,30400,571,1,0x00000040,0,0,5392.91,2975.26,415.223,4.55531,180,0,0,1,0,0), -- Wintergrasp Fortress
+-- Gnomish Engineer (Alliance)
+(@GUID+18,30499,571,1,0x00000020,0,0,4964.89,3383.06,382.911,6.12611,180,0,0,1,0,0), -- The Broken Temple
+(@GUID+19,30499,571,1,0x00000020,0,0,4939.76,2389.06,326.153,3.26377,180,0,0,1,0,0), -- The Sunken Ring
+(@GUID+20,30499,571,1,0x00000020,0,0,4357.67,2357.99,382.007,1.67552,180,0,0,1,0,0), -- Eastspark Workshop
+(@GUID+21,30499,571,1,0x00000020,0,0,4354.15,3312.82,378.046,1.67552,180,0,0,1,0,0), -- Westspark Workshop
+(@GUID+22,30499,571,1,0x00000080,0,0,5391.61,2707.72,415.051,4.55531,180,0,0,1,0,0), -- Wintergrasp Fortress
+(@GUID+23,30499,571,1,0x00000080,0,0,5392.91,2975.26,415.223,4.55531,180,0,0,1,0,0), -- Wintergrasp Fortress
+-- Alliance NPC's
+(@GUID+24,30489,571,1,0x00000080,0,0,5369.973,2874.83081,409.3225,3.12413931,120,0,0,1,0,0), -- Morgan Day
+(@GUID+25,30869,571,1,0x00000001,0,0,5102.75049,2187.82837,365.707855,3.996804,120,0,0,1,0,0), -- Arzo Safeflight
+(@GUID+26,31036,571,1,0x00000040,0,0,5078.281,2183.704,365.028564,1.46607661,120,0,0,1,0,0), -- Commander Zanneth
+(@GUID+27,31036,571,1,0x00000080,0,0,5358.641,2841.76416,409.3225,1.13262534,120,0,0,1,0,0),
+(@GUID+28,31051,571,1,0x00000040,0,0,5081.697,2173.73,365.8777,0.8552113,120,0,0,1,0,0), -- Sorceress Kaylana
+(@GUID+29,31051,571,1,0x00000080,0,0,5296.869,2887.67114,409.274658,5.60250664,120,0,0,1,0,0),
+(@GUID+30,31052,571,1,0x00000040,0,0,5100.06543,2168.89,365.7788,1.97222209,120,0,0,1,0,0), -- Bowyer Randolph
+(@GUID+31,31052,571,1,0x00000080,0,0,5302.57373,2750.40332,409.274658,5.46288061,120,0,0,1,0,0),
+(@GUID+32,31054,571,1,0x00000040,0,0,5088.611,2167.66235,365.688751,0.6806784,120,0,0,1,0,0), -- Anchorite Tessa
+(@GUID+33,31054,571,1,0x00000080,0,0,5372.05859,3028.33618,409.206024,0.012565271,120,0,0,1,0,0),
+(@GUID+34,31108,571,1,0x00000040,0,0,5095.673,2193.284,365.9236,4.939282,120,0,0,1,0,0), -- Siege Master Stouthandle
+(@GUID+35,31108,571,1,0x00000080,0,0,5298.267,2924.97632,409.274658,0.9075712,120,0,0,1,0,0),
+(@GUID+36,31109,571,1,0x00000040,0,0,5080.403,2199.00244,359.4894,2.96705961,120,0,0,1,0,0), -- Senior Demolitionist Legoso
+(@GUID+37,31109,571,1,0x00000080,0,0,5228.2915,2809.888,409.274658,3.19395256,120,0,0,1,0,0),
+(@GUID+38,31153,571,1,0x00000040,0,0,5088.48633,2188.17871,365.646973,5.253441,120,0,0,1,0,0), -- Tactical Officer Ahbramis
+(@GUID+39,31153,571,1,0x00000080,0,0,5364.784,2835.135,409.3225,3.12413931,120,0,0,1,0,0),
+(@GUID+40,32294,571,1,0x00000080,0,0,5374.568,2790.784,409.3225,2.72271371,120,0,0,1,0,0), -- Knight Dameron
+(@GUID+41,39172,571,1,0x00000080,0,0,5372.672,2786.74048,409.4423,2.80998015,120,0,0,1,0,0), -- Marshal Magruder
+(@GUID+42,30488,571,1,0x00000080,0,0,5370.428,2814.274,409.3225,3.054326,120,0,0,1,0,0), -- Travis Day
+-- Horde NPC's
+(@GUID+43,30870,571,1,0x00000001,0,0,5023.4043,3686.03345,363.1192,5.131268,120,0,0,1,0,0), -- Herzo Safeflight
+(@GUID+44,31053,571,1,0x00000040,0,0,5379.875,3027.43359,409.206024,0,120,0,0,1,0,0), -- Primalist Mulfort
+(@GUID+45,31053,571,1,0x00000080,0,0,5034.703125,3666.703125,363.273865,4.310963,120,0,0,1,0,0),
+(@GUID+46,31091,571,1,0x00000040,0,0,5347.7915,2837.38574,409.3466,2.62603331,120,0,0,1,0,0), -- Commander Dardosh
+(@GUID+47,31091,571,1,0x00000080,0,0,5018.662109,3672.279541,362.862885,2.209141,120,0,0,1,0,0),
+(@GUID+48,31101,571,1,0x00000040,0,0,5296.564,2789.87378,409.274658,0.7330383,120,0,0,1,0,0), -- Hoodoo Master Fu'jin
+(@GUID+49,31101,571,1,0x00000080,0,0,5014.065430,3678.846436,362.995575,5.096361,120,0,0,1,0,0),
+(@GUID+50,31102,571,1,0x00000040,0,0,5295.455,2732.87549,409.274658,4.7211113,120,0,0,1,0,0), -- Vieron Blazefeather
+(@GUID+51,31102,571,1,0x00000080,0,0,5031.676270,3655.820801,362.234558,5.131268,120,0,0,1,0,0),
+(@GUID+52,31106,571,1,0x00000040,0,0,5295.56348,2926.67188,409.274658,0.87266463,120,0,0,1,0,0), -- Siegesmith Stronghoof
+(@GUID+53,31106,571,1,0x00000080,0,0,5037.602051,3675.459717,363.147888,3.176499,120,0,0,1,0,0),
+(@GUID+54,31107,571,1,0x00000040,0,0,5230.09033,2876.635,409.316254,-2.19854617,120,0,0,1,0,0), -- Lieutenant Murp
+(@GUID+55,31107,571,1,0x00000080,0,0,5004.455078,3661.089111,361.335785,3.979351,120,0,0,1,0,0),
+(@GUID+56,31151,571,1,0x00000040,0,0,5363.2876,2834.52954,409.3606,2.76273036,120,0,0,1,0,0), -- Tactical Officer Kilrath
+(@GUID+57,31151,571,1,0x00000080,0,0,5034.698242,3683.268799,363.129120,4.310963,120,0,0,1,0,0),
+(@GUID+58,32296,571,1,0x00000040,0,0,5374.568,2790.784,409.3225,2.60054,120,0,0,1,0,0), -- Stone Guard Mukar
+-- Missing noc in fortress
+(@GUID+60,39173,571,1,0x00000040,0,0,5372.672,2786.74048,409.4423,2.80998015,120,0,0,1,0,0); -- Champion Ros'slai
+
+-- corrects previously inserted creature
+UPDATE `creature` SET `spawndist`=0 WHERE `guid`=88315;
+
+-- Pathing for Anchorite Tessa Entry: 31054
+SET @NPC := @GUID+33;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,5382.507,3028.468,409.206,0,0,0,100,0),
+(@PATH,2,5392.744,3028.737,409.206,0,0,0,100,0),
+(@PATH,3,5382.507,3028.468,409.206,0,0,0,100,0),
+(@PATH,4,5371.491,3028.329,409.206,0,0,0,100,0),
+(@PATH,5,5360.032,3028.516,409.3161,0,0,0,100,0),
+(@PATH,6,5371.491,3028.329,409.206,0,0,0,100,0);
+
+-- Pathing for Commander Zanneth Entry: 31036
+SET @NPC := @GUID+27;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=5358.854,`position_y`=2859.232,`position_z`=409.5425 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,14337, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,5359.788,2846.359,409.3642,0,0,0,100,0),
+(@PATH,2,5359.187,2839.211,409.3642,0,0,0,100,0),
+(@PATH,3,5360.083,2823.116,409.5381,0,0,0,100,0),
+(@PATH,4,5359.187,2839.211,409.3642,0,0,0,100,0),
+(@PATH,5,5359.788,2846.359,409.3642,0,0,0,100,0),
+(@PATH,6,5358.854,2859.232,409.5425,0,0,0,100,0);
+
+-- Pathing for Commander Dardosh Entry: 31091
+SET @NPC := @GUID+46;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `MovementType`=2,`position_x`=5359.546,`position_y`=2858.049,`position_z`=409.3642 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,257,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,5359.202,2843.208,409.3642,0,0,0,100,0),
+(@PATH,2,5358.997,2827.974,409.3639,0,0,0,100,0),
+(@PATH,3,5359.202,2843.208,409.3642,0,0,0,100,0),
+(@PATH,4,5359.546,2858.049,409.3642,0,0,0,100,0);
+
+-- Pathing for Commander Dardosh Entry: 31091
+SET @NPC := @GUID+47;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `MovementType`=2,`position_x`=5018.411133,`position_y`=3672.615967,`position_z`=362.863525 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,257,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,5022.827637,3666.665771,362.205750,0,0,0,100,0),
+(@PATH,2,5024.270508,3658.739258,361.705750,0,0,0,100,0),
+(@PATH,3,5022.827637,3666.665771,362.205750,0,0,0,100,0),
+(@PATH,4,5018.411133,3672.615967,362.863525,0,0,0,100,0);
+
+-- Pathing for Primalist Mulfort Entry: 31053
+SET @NPC := @GUID+44;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,257,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,5390.624,3027.994,409.206,0,0,0,100,0),
+(@PATH,2,5379.875,3027.434,409.206,0,0,0,100,0),
+(@PATH,3,5371.404,3026.511,409.206,0,0,0,100,0),
+(@PATH,4,5379.875,3027.434,409.206,0,0,0,100,0);
+
+-- Pathing for Vieron Blazefeather Entry: 31102
+SET @NPC := @GUID+50;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `MovementType`=2,`position_x`=5296.644,`position_y`=2731.107,`position_z`=409.3163 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,5295.544,2722.631,409.3163,0,0,0,100,0),
+(@PATH,2,5296.644,2731.107,409.3163,0,0,0,100,0),
+(@PATH,3,5297.874,2738.155,409.3163,0,0,0,100,0),
+(@PATH,4,5305.192,2746.161,409.3061,0,0,0,100,0),
+(@PATH,5,5297.874,2738.155,409.3163,0,0,0,100,0),
+(@PATH,6,5296.644,2731.107,409.3163,0,0,0,100,0);
+
+-- Guards "Alliance" (Valiance Expedition Champion)
+SET @GUID := 88371;
+DELETE FROM `creature` WHERE `id`=30740;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES
+-- Fortress
+(@GUID+0,30740,571,1,0x00000080,0,0,5150.26855,2786.02173,409.5469,3.22885919,120,0,0,1,0,0),
+(@GUID+1,30740,571,1,0x00000080,0,0,5150.657,2777.9502,409.4053,2.94960642,120,0,0,1,0,0),
+(@GUID+2,30740,571,1,0x00000080,0,0,5193.632,2734.172,409.272552,4.694936,120,0,0,1,0,0),
+(@GUID+3,30740,571,1,0x00000080,0,0,5200.497,2733.88843,409.272552,4.677482,120,0,0,1,0,0),
+(@GUID+4,30740,571,1,0x00000080,0,0,5264.64648,2670.1936,409.1819,3.07177949,120,0,0,1,0,0),
+(@GUID+5,30740,571,1,0x00000080,0,0,5265.30566,2663.15381,409.1819,3.12413931,120,0,0,1,0,0),
+(@GUID+6,30740,571,1,0x00000080,0,0,5307.02051,2613.89771,409.172363,4.694936,120,0,0,1,0,0),
+(@GUID+7,30740,571,1,0x00000080,0,0,5311.133,3061.04248,408.809937,1.50098312,120,0,0,1,0,0),
+(@GUID+8,30740,571,1,0x00000080,0,0,5315.87354,2614.21924,408.972748,4.677482,120,0,0,1,0,0),
+(@GUID+9,30740,571,1,0x00000080,0,0,5318.09,3060.634,408.882782,1.62315619,120,0,0,1,0,0),
+(@GUID+10,30740,571,1,0x00000080,0,0,5149.395,2897.044,409.304443,3.03687286,120,0,0,1,0,0),
+(@GUID+11,30740,571,1,0x00000080,0,0,5149.51953,2904.19336,409.276062,3.07177949,120,0,0,1,0,0),
+(@GUID+12,30740,571,1,0x00000080,0,0,5192.79248,2948.454,409.2746,1.50098312,120,0,0,1,0,0),
+(@GUID+13,30740,571,1,0x00000080,0,0,5201.645,2948.77612,409.2746,1.62315619,120,0,0,1,0,0),
+(@GUID+14,30740,571,1,0x00000080,0,0,5265.28,3010.10083,408.895782,2.82743335,120,0,0,1,0,0),
+(@GUID+15,30740,571,1,0x00000080,0,0,5265.47559,3017.39941,408.582977,3.07177949,120,0,0,1,0,0),
+(@GUID+16,30740,571,1,0x00000080,0,0,5367.91455,2826.52026,409.3225,3.33357882,120,0,0,1,0,0),
+(@GUID+17,30740,571,1,0x00000080,0,0,5368.71338,2856.36035,409.3225,2.94960642,120,0,0,1,0,0),
+(@GUID+18,30740,571,1,0x00000080,0,0,5388.56,2834.76782,418.7585,3.07177949,120,0,0,1,0,0),
+(@GUID+19,30740,571,1,0x00000080,0,0,5389.272,2847.36816,418.7585,3.106686,120,0,0,1,0,0),
+(@GUID+20,30740,571,1,0x00000080,0,0,4684.475,2414.28979,369.9621,-2.85779858,120,0,0,1,0,0),
+(@GUID+21,30740,571,1,0x00000080,0,0,4692.75635,2392.88574,369.0177,-2.82921553,120,0,0,1,0,0),
+(@GUID+22,30740,571,1,0x00000080,0,0,5327.264648,2659.455322,409.178711,3.069901,120,0,0,1,0,0), -- F1307814000A2DAD path
+(@GUID+23,30740,571,1,0x00000080,0,0,5154.225586,2833.824219,409.262451,3.124139,120,0,0,1,0,0),
+(@GUID+24,30740,571,1,0x00000080,0,0,5154.119629,2847.892822,409.247559,3.071779,120,0,0,1,0,0),
+(@GUID+25,30740,571,1,0x00000080,0,0,5179.111328,2837.129639,409.274658,3.211406,120,0,0,1,0,0),
+(@GUID+26,30740,571,1,0x00000080,0,0,5179.666504,2846.597900,409.274658,3.089233,120,0,0,1,0,0),
+(@GUID+27,30740,571,1,0x00000080,0,0,5270.163086,2833.479248,409.274658,3.124139,120,0,0,1,0,0),
+(@GUID+28,30740,571,1,0x00000080,0,0,5270.057129,2847.547607,409.274658,3.071779,120,0,0,1,0,0),
+(@GUID+29,30740,571,1,0x00000080,0,0,5307.750000,3008.872559,409.193024,4.781681,120,0,0,1,0,0), -- F1307814000A43AE path
+(@GUID+30,30740,571,1,0x00000080,0,0,5335.117188,2916.802002,409.443756,1.500983,120,0,0,1,0,0),
+(@GUID+31,30740,571,1,0x00000080,0,0,5350.681152,2917.011719,409.274658,1.466077,120,0,0,1,0,0),
+(@GUID+32,30740,571,1,0x00000080,0,0,5335.306152,2764.110352,409.274567,4.834562,120,0,0,1,0,0),
+(@GUID+33,30740,571,1,0x00000080,0,0,5349.811523,2763.634766,409.333374,4.660029,120,0,0,1,0,0),
+-- Eastspark Workshop
+(@GUID+34,30740,571,1,0x00000080,0,0,4349.537,2411.25781,374.743317,2.05948853,120,0,0,1,0,0),
+(@GUID+35,30740,571,1,0x00000080,0,0,4388.13135,2411.97827,374.743317,1.6406095,120,0,0,1,0,0),
+(@GUID+36,30740,571,1,0x00000080,0,0,4391.6665,2300.60913,374.7433,4.92182827,120,0,0,1,0,0),
+(@GUID+37,30740,571,1,0x00000080,0,0,4413.42969,2393.44946,376.3599,1.06465089,120,0,0,1,0,0),
+(@GUID+38,30740,571,1,0x00000080,0,0,4417.92,2331.237,370.9189,5.846853,120,0,0,1,0,0),
+(@GUID+39,30740,571,1,0x00000080,0,0,4349.11768,2299.27954,374.7433,4.904375,120,0,0,1,0,0),
+(@GUID+40,30740,571,1,0x00000080,0,0,4418.608,2355.28735,372.4907,6.02138567,120,0,0,1,0,0);
+
+-- banners
+SET @OGUID := 75939;
+DELETE FROM `gameobject` WHERE `id` IN (192254,192255,192269,192284,192285,192286,192287,192292,192299,192304,192305,192306,192307,192308,192309,192310,192312,192313,192314,192316,192317,192318,192319,192320,192321,
+ 192322,192323,192324,192325,192326,192327,192328,192329,192330,192331,192332,192333,192334,192335,192336,192338,192339,192349,192350,192351,192352,192353,192354,192355,192356,
+ 192357,192358,192359,192360,192361,192362,192363,192364,192366,192367,192368,192369,192370,192371,192372,192373,192374,192375,192376,192377,192378,192379,192487,192488,192501,
+ 192502);
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID AND @OGUID+115;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+-- Fortress Banners "Alliance"
+(@OGUID+0,192286,571,1,128,5371.44873,2820.79346,409.426575,3.124123,0,0,0,0,120,0,1),
+(@OGUID+1,192287,571,1,128,5372.42432,2862.47925,409.3659,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+2,192292,571,1,128,5154.35059,2862.08423,445.0105,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+3,192299,571,1,128,5155.21631,2820.63013,444.9789,-3.115388,0,0,0,0,120,0,1),
+(@OGUID+4,192304,571,1,128,5398.03564,2873.013,455.203552,3.132858,0,0,0,0,120,0,1),
+(@OGUID+5,192305,571,1,128,5397.31348,2809.264,455.101624,3.132858,0,0,0,0,120,0,1),
+(@OGUID+6,192306,571,1,128,5270.55469,2861.68237,444.917236,-3.124123,0,0,0,0,120,0,1),
+(@OGUID+7,192307,571,1,128,5271.16064,2820.10864,445.109,-3.132858,0,0,0,0,120,0,1),
+(@OGUID+8,192308,571,1,128,5235.12744,2942.12329,444.2792,1.58824873,0,0,0,0,120,0,1),
+(@OGUID+9,192309,571,1,128,5272.549,2976.54175,444.493,3.132858,0,0,0,0,120,0,1),
+(@OGUID+10,192310,571,1,128,5352.19775,3055.0166,444.5646,1.57952213,0,0,0,0,120,0,1),
+(@OGUID+11,192312,571,1,128,5236.315,2739.21533,444.992828,-1.60570168,0,0,0,0,120,0,1),
+(@OGUID+12,192313,571,1,128,5271.634,2704.829,445.182617,-3.124123,0,0,0,0,120,0,1),
+(@OGUID+13,192314,571,1,128,5350.905,2622.48,444.649323,-1.56206989,0,0,0,0,120,0,1),
+(@OGUID+14,192316,571,1,128,5322.013,2781.13281,435.6727,1.57952213,0,0,0,0,120,0,1),
+(@OGUID+15,192317,571,1,128,5363.387,2781.27856,435.634125,1.58824873,0,0,0,0,120,0,1),
+(@OGUID+16,192318,571,1,128,5322.24854,2898.94629,435.642975,-1.57952213,0,0,0,0,120,0,1),
+(@OGUID+17,192319,571,1,128,5364.30371,2899.216,435.690826,-1.55334139,0,0,0,0,120,0,1),
+(@OGUID+18,192320,571,1,128,5289.048,2820.22656,435.6738,0,0,0,0,0,120,0,1),
+(@OGUID+19,192321,571,1,128,5288.847,2861.82128,435.590485,0.0261791088,0,0,0,0,120,0,1),
+(@OGUID+20,192322,571,1,128,5322.89258,2917.14233,445.1543,1.56206989,0,0,0,0,120,0,1),
+(@OGUID+21,192323,571,1,128,5364.283,2917.264,445.332184,1.58824611,0,0,0,0,120,0,1),
+(@OGUID+22,192324,571,1,128,5290.514,2976.56177,435.087463,0.008724241,0,0,0,0,120,0,1),
+(@OGUID+23,192325,571,1,128,5352.37744,3036.95483,435.111053,-1.56206989,0,0,0,0,120,0,1),
+(@OGUID+24,192326,571,1,128,5392.64063,3036.967,433.648682,-1.51843357,0,0,0,0,120,0,1),
+(@OGUID+25,192327,571,1,128,5172.336,2862.57544,435.65802,0,0,0,0,0,120,0,1),
+(@OGUID+26,192328,571,1,128,5173.12842,2820.95654,435.657623,0.0261791088,0,0,0,0,120,0,1),
+(@OGUID+27,192329,571,1,128,5235.32227,2924.31079,434.8981,-1.56206989,0,0,0,0,120,0,1),
+(@OGUID+28,192330,571,1,128,5237.02344,2757.35669,435.625641,1.55334139,0,0,0,0,120,0,1),
+(@OGUID+29,192331,571,1,128,5289.78125,2704.62158,435.714325,0.008724241,0,0,0,0,120,0,1),
+(@OGUID+30,192332,571,1,128,5350.93945,2640.43066,435.2642,1.56206989,0,0,0,0,120,0,1),
+(@OGUID+31,192333,571,1,128,5392.28027,2639.84033,435.207916,1.52716041,0,0,0,0,120,0,1),
+(@OGUID+32,192334,571,1,128,5322.17041,2763.20142,444.9744,-1.56206715,0,0,0,0,120,0,1),
+(@OGUID+33,192335,571,1,128,5363.71631,2763.24731,445.023132,-1.54461551,0,0,0,0,120,0,1),
+(@OGUID+34,192487,571,1,128,5145.11133,2934.948,433.254852,-3.10665226,0,0,0,0,120,0,1),
+(@OGUID+35,192487,571,1,128,5146.04443,2747.30249,433.527039,3.124123,0,0,0,0,120,0,1),
+(@OGUID+36,192487,571,1,128,5158.71,2882.90161,431.27417,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+37,192487,571,1,128,5160.28369,2798.59766,430.6037,-3.124123,0,0,0,0,120,0,1),
+(@OGUID+38,192487,571,1,128,5162.90674,2952.59766,433.368,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+39,192487,571,1,128,5163.85,2729.677,433.327545,-1.60570168,0,0,0,0,120,0,1),
+(@OGUID+40,192487,571,1,128,5260.82471,2631.81763,433.181061,3.124123,0,0,0,0,120,0,1),
+(@OGUID+41,192487,571,1,128,5262.544,3047.93018,431.96524,3.124123,0,0,0,0,120,0,1),
+(@OGUID+42,192487,571,1,128,5278.43066,2613.83276,433.294434,-1.62315571,0,0,0,0,120,0,1),
+(@OGUID+43,192487,571,1,128,5280.894,3064.95386,431.9758,1.55334139,0,0,0,0,120,0,1),
+-- Fortress Banners "Horde"
+(@OGUID+44,192269,571,1,64,4526.46,2810.18,391.2,-2.99322,0,0,0,1,180,0,1),
+(@OGUID+45,192284,571,1,64,5372.48,2862.5,409.049,3.14159,0,0,0,1,180,0,1),
+(@OGUID+46,192285,571,1,64,5371.49,2820.8,409.177,3.14159,0,0,0,1,180,0,1),
+(@OGUID+47,192338,571,1,64,5397.76,2873.08,455.461,3.10665,0,0,0,1,180,0,1),
+(@OGUID+48,192339,571,1,64,5397.39,2809.33,455.344,3.10665,0,0,0,1,180,0,1),
+(@OGUID+49,192349,571,1,64,5155.31,2820.74,444.979,-3.13286,0,0,0,1,180,0,1),
+(@OGUID+50,192350,571,1,64,5270.69,2861.78,445.058,-3.11539,0,0,0,1,180,0,1),
+(@OGUID+51,192351,571,1,64,5271.28,2820.16,445.201,-3.13286,0,0,0,1,180,0,1),
+(@OGUID+52,192352,571,1,64,5173.02,2820.93,435.72,0.017452,0,0,0,1,180,0,1),
+(@OGUID+53,192353,571,1,64,5172.11,2862.57,435.721,0.017452,0,0,0,1,180,0,1),
+(@OGUID+54,192354,571,1,64,5288.41,2861.79,435.721,0.017452,0,0,0,1,180,0,1),
+(@OGUID+55,192355,571,1,64,5288.92,2820.22,435.721,0.017452,0,0,0,1,180,0,1),
+(@OGUID+56,192356,571,1,64,5237.07,2757.03,435.796,1.51844,0,0,0,1,180,0,1),
+(@OGUID+57,192357,571,1,64,5235.34,2924.34,435.04,-1.5708,0,0,0,1,180,0,1),
+(@OGUID+58,192358,571,1,64,5322.23,2899.43,435.808,-1.58825,0,0,0,1,180,0,1),
+(@OGUID+59,192359,571,1,64,5364.35,2899.4,435.839,-1.5708,0,0,0,1,180,0,1),
+(@OGUID+60,192360,571,1,64,5352.37,3037.09,435.252,-1.5708,0,0,0,1,180,0,1),
+(@OGUID+61,192361,571,1,64,5392.65,3037.11,433.713,-1.52716,0,0,0,1,180,0,1),
+(@OGUID+62,192362,571,1,64,5322.12,2763.61,444.974,-1.55334,0,0,0,1,180,0,1),
+(@OGUID+63,192363,571,1,64,5363.61,2763.39,445.024,-1.54462,0,0,0,1,180,0,1),
+(@OGUID+64,192364,571,1,64,5350.88,2622.72,444.686,-1.5708,0,0,0,1,180,0,1),
+(@OGUID+65,192366,571,1,64,5236.27,2739.46,444.992,-1.59698,0,0,0,1,180,0,1),
+(@OGUID+66,192367,571,1,64,5271.8,2704.87,445.183,-3.13286,0,0,0,1,180,0,1),
+(@OGUID+67,192368,571,1,64,5289.46,2704.68,435.875,-0.017451,0,0,0,1,180,0,1),
+(@OGUID+68,192369,571,1,64,5350.95,2640.36,435.408,1.5708,0,0,0,1,180,0,1),
+(@OGUID+69,192370,571,1,64,5392.27,2639.74,435.331,1.50971,0,0,0,1,180,0,1),
+(@OGUID+70,192371,571,1,64,5364.29,2916.94,445.331,1.57952,0,0,0,1,180,0,1),
+(@OGUID+71,192372,571,1,64,5322.86,2916.95,445.154,1.56207,0,0,0,1,180,0,1),
+(@OGUID+72,192373,571,1,64,5290.35,2976.56,435.221,0.017452,0,0,0,1,180,0,1),
+(@OGUID+73,192374,571,1,64,5272.94,2976.55,444.492,3.12412,0,0,0,1,180,0,1),
+(@OGUID+74,192375,571,1,64,5235.19,2941.9,444.278,1.58825,0,0,0,1,180,0,1),
+(@OGUID+75,192376,571,1,64,5352.19775,3055.0166,444.5646,1.57952,0,0,0,0,120,0,1),
+(@OGUID+76,192377,571,1,64,5414.19,3069.8,415.187,1.64061,0,0,0,1,180,0,1),
+(@OGUID+77,192378,571,1,64,5322.02,2781.13,435.811,1.5708,0,0,0,1,180,0,1),
+(@OGUID+78,192379,571,1,64,5363.42,2781.03,435.763,1.5708,0,0,0,1,180,0,1),
+(@OGUID+79,192254,571,1,64,5154.46,2828.94,409.189,3.14159,0,0,0,1,180,0,1),
+(@OGUID+80,192255,571,1,64,5154.52,2853.31,409.183,3.14159,0,0,0,1,180,0,1),
+(@OGUID+81,192336,571,1,64,5154.49,2862.15,445.012,3.14159,0,0,0,1,180,0,1),
+(@OGUID+82,192488,571,1,64,5160.34,2798.61,430.769,3.14159,0,0,0,1,180,0,1),
+(@OGUID+83,192488,571,1,64,5158.81,2883.13,431.618,3.14159,0,0,0,1,180,0,1),
+(@OGUID+84,192488,571,1,64,5278.38,2613.83,433.409,-1.58825,0,0,0,1,180,0,1),
+(@OGUID+85,192488,571,1,64,5260.82,2631.8,433.324,3.05433,0,0,0,1,180,0,1),
+(@OGUID+86,192488,571,1,64,5163.13,2952.59,433.503,1.53589,0,0,0,1,180,0,1),
+(@OGUID+87,192488,571,1,64,5145.11,2935,433.386,3.14159,0,0,0,1,180,0,1),
+(@OGUID+88,192488,571,1,64,5262.54,3047.95,432.055,3.10665,0,0,0,1,180,0,1),
+(@OGUID+89,192488,571,1,64,5146.04,2747.21,433.584,3.07177,0,0,0,1,180,0,1),
+(@OGUID+90,192488,571,1,64,5163.78,2729.68,433.394,-1.58825,0,0,0,1,180,0,1),
+(@OGUID+91,192488,571,1,64,5280.894,3064.95386,431.9758,1.55334139,0,0,0,0,120,0,1),
+-- Tower Banners "Alliance"
+(@OGUID+92,192501,571,1,64,4398.82,2804.7,429.792,-1.58825,0,0,0,1,180,0,1),
+(@OGUID+93,192501,571,1,64,4416,2822.67,429.851,-0.017452,0,0,0,1,180,0,1),
+(@OGUID+94,192501,571,1,64,4559.11,3606.22,419.999,-1.48353,0,0,0,1,180,0,1),
+(@OGUID+95,192501,571,1,64,4539.42,3622.49,420.034,-3.07177,0,0,0,1,180,0,1),
+(@OGUID+96,192501,571,1,64,4555.26,3641.65,419.974,1.67551,0,0,0,1,180,0,1),
+(@OGUID+97,192501,571,1,64,4574.87,3625.91,420.079,0.087266,0,0,0,1,180,0,1),
+(@OGUID+98,192501,571,1,64,4466.79,1960.42,459.144,1.15192,0,0,0,1,180,0,1),
+(@OGUID+99,192501,571,1,64,4475.35,1937.03,459.07,-0.436332,0,0,0,1,180,0,1),
+(@OGUID+100,192501,571,1,64,4451.76,1928.1,459.076,-2.00713,0,0,0,1,180,0,1),
+(@OGUID+101,192501,571,1,64,4442.99,1951.9,459.093,2.74016,0,0,0,1,180,0,1),
+(@OGUID+102,192501,571,1,64,4380.36328,2822.38013,429.8818,-3.106652,0,0,0,0,120,0,1),
+(@OGUID+103,192501,571,1,64,4397.6626,2840.299,429.921661,1.58824873,0,0,0,0,120,0,1),
+-- Tower Banners "Horde"
+(@OGUID+104,192502,571,1,128,4398.82,2804.7,429.792,-1.58825,0,0,0,1,180,0,1),
+(@OGUID+105,192502,571,1,128,4416,2822.67,429.851,-0.017452,0,0,0,1,180,0,1),
+(@OGUID+106,192502,571,1,128,4559.11,3606.22,419.999,-1.48353,0,0,0,1,180,0,1),
+(@OGUID+107,192502,571,1,128,4539.42,3622.49,420.034,-3.07177,0,0,0,1,180,0,1),
+(@OGUID+108,192502,571,1,128,4555.26,3641.65,419.974,1.67551,0,0,0,1,180,0,1),
+(@OGUID+109,192502,571,1,128,4574.87,3625.91,420.079,0.087266,0,0,0,1,180,0,1),
+(@OGUID+110,192502,571,1,128,4466.79,1960.42,459.144,1.15192,0,0,0,1,180,0,1),
+(@OGUID+111,192502,571,1,128,4475.35,1937.03,459.07,-0.436332,0,0,0,1,180,0,1),
+(@OGUID+112,192502,571,1,128,4451.76,1928.1,459.076,-2.00713,0,0,0,1,180,0,1),
+(@OGUID+113,192502,571,1,128,4442.99,1951.9,459.093,2.74016,0,0,0,1,180,0,1),
+(@OGUID+114,192502,571,1,128,4380.36328,2822.38013,429.8818,-3.106652,0,0,0,0,120,0,1),
+(@OGUID+115,192502,571,1,128,4397.6626,2840.299,429.921661,1.58824873,0,0,0,0,120,0,1);
+
+SET @OGUID := 17780;
+DELETE FROM `gameobject` WHERE `id` IN (192458,192459,192460,192461,192289,192290,192434,192435,192280,192283,192425,192426,192427,192428,192288,192291,192400,192401,192281,192282);
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+-- The Sunken Ring "Horde"
+(@OGUID+0,192458,571,1,16,4811.4,2441.9,358.207,-2.0333,0,0,0,1,180,0,1),
+(@OGUID+1,192459,571,1,16,4805.67,2407.48,358.191,1.78023,0,0,0,1,180,0,1),
+(@OGUID+2,192460,571,1,16,5004.35,2486.36,358.449,2.17294,0,0,0,1,180,0,1),
+(@OGUID+3,192461,571,1,16,4983.28,2503.09,358.177,-0.427603,0,0,0,1,180,0,1),
+(@OGUID+4,192289,571,1,16,4778.19,2438.06,345.644,-2.94088,0,0,0,1,180,0,1),
+(@OGUID+5,192290,571,1,16,5024.57,2532.75,344.023,-1.93732,0,0,0,1,180,0,1),
+-- The Sunken Ring "Alliance"
+(@OGUID+6,192425,571,1,32,4811.435,2441.84546,357.982483,-2.02457881,0,0,0,0,120,0,1),
+(@OGUID+7,192426,571,1,32,4805.514,2407.84375,357.940765,1.7715075,0,0,0,0,120,0,1),
+(@OGUID+8,192427,571,1,32,5004.35,2486.36,358.449,2.17294,0,0,0,1,180,0,1),
+(@OGUID+9,192428,571,1,32,4983.221,2503.27271,357.959534,-0.43633157,0,0,0,0,120,0,1),
+(@OGUID+10,192288,571,1,32,4778.065,2438.02441,345.7063,-2.932139,0,0,0,0,120,0,1),
+(@OGUID+11,192291,571,1,32,5024.608,2532.72583,344.4308,-1.94604158,0,0,0,0,120,0,1),
+-- The Broken Temple "Horde"
+(@OGUID+12,192434,571,1,16,5041.61,3294.4,382.15,-1.63188,0,0,0,1,180,0,1),
+(@OGUID+13,192435,571,1,16,4855.63,3297.62,376.739,-3.13286,0,0,0,1,180,0,1),
+(@OGUID+14,192280,571,1,16,4857.97,3335.44,368.881,-2.94959,0,0,0,1,180,0,1),
+(@OGUID+15,192283,571,1,16,5006.34,3280.4,371.163,2.22529,0,0,0,1,180,0,1),
+-- The Broken Temple "Alliance"
+(@OGUID+16,192400,571,1,32,5041.650879,3294.318604,381.919952,-1.605702,0,0,0,1,180,0,1),
+(@OGUID+17,192401,571,1,32,4855.444336,3297.600830,376.495758,-3.115388,0,0,0,1,180,0,1),
+(@OGUID+18,192281,571,1,32,4857.971191,3335.415771,369.291901,-2.888511,0,0,0,1,180,0,1),
+(@OGUID+19,192282,571,1,32,5006.322754,3280.362061,371.242249,2.242746,0,0,0,1,180,0,1);
diff --git a/sql/old/3.3.5a/2012_02_29_00_world_conditions_misc.sql b/sql/old/3.3.5a/2012_02_29_00_world_conditions_misc.sql
new file mode 100644
index 00000000000..34eb1261ed1
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_29_00_world_conditions_misc.sql
@@ -0,0 +1,126 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup` IN(34125,33796,33798,33799,33791,33792,33790,
+33795,33793,33800,33794,33843,33842,26421,26477,28161,29856,32788,32790);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,
+`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`Comment`) VALUES
+-- Stabled Campagin Warhorse Requires Any of the Dailies
+(18,34125,63215,1,9,0,13847,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,2,9,0,13851,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,3,9,0,13852,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,4,9,0,13854,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,5,9,0,13855,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,6,9,0,13856,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,7,9,0,13857,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,8,9,0,13858,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,9,9,0,13859,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,10,9,0,13860,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,11,9,0,13861,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,12,9,0,13862,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,13,9,0,13863,0,0,0,'Required quest active for spellclick'),
+(18,34125,63215,14,9,0,13864,0,0,0,'Required quest active for spellclick'),
+-- Raptor requires (A) Valiant of Sen'Jin
+(18,33796,62784,1,8,0,13693,0,0,0,'Required quest rewarded for spellclick'),
+(18,33796,62784,2,8,0,13708,0,0,0,'Required quest rewarded for spellclick'),
+-- Forsaken Warhorse requires (A) Valiant of Undercity
+(18,33798,62787,1,8,0,13695,0,0,0,'Required quest rewarded for spellclick'),
+(18,33798,62787,2,8,0,13710,0,0,0,'Required quest rewarded for spellclick'),
+-- Orgrimmar Wolf requires (A) Valiant of Orgrimmar
+(18,33799,62783,1,8,0,13691,0,0,0,'Required quest rewarded for spellclick'),
+(18,33799,62783,2,8,0,13707,0,0,0,'Required quest rewarded for spellclick'),
+-- Silvermoon Hawkstrider requires (A) Valiant of Silvermoon
+(18,33791,62786,1,8,0,13696,0,0,0,'Required quest rewarded for spellclick'),
+(18,33791,62786,2,8,0,13711,0,0,0,'Required quest rewarded for spellclick'),
+-- Thunder Bluff Kodo requires (A) Valiant of Thunder Bluff
+(18,33792,62785,1,8,0,13694,0,0,0,'Required quest rewarded for spellclick'),
+(18,33792,62785,2,8,0,13709,0,0,0,'Required quest rewarded for spellclick'),
+-- Exodar Elekk requires (A) Valiant of the Exodar
+(18,33790,62781,1,8,0,13690,0,0,0,'Required quest rewarded for spellclick'),
+(18,33790,62781,2,8,0,13705,0,0,0,'Required quest rewarded for spellclick'),
+-- Ironforge Ram requires (A) Valiant of Ironforge
+(18,33795,62779,1,8,0,13685,0,0,0,'Required quest rewarded for spellclick'),
+(18,33795,62779,2,8,0,13703,0,0,0,'Required quest rewarded for spellclick'),
+-- Gnomeregan Mechanostrider requires (A) Valiant of Gnomeregan
+(18,33793,62780,1,8,0,13688,0,0,0,'Required quest rewarded for spellclick'),
+(18,33793,62780,2,8,0,13704,0,0,0,'Required quest rewarded for spellclick'),
+-- Stormwind Steed requires (A) Valiant of Stormwind
+(18,33800,62774,1,8,0,13593,0,0,0,'Required quest rewarded for spellclick'),
+(18,33800,62774,2,8,0,13684,0,0,0,'Required quest rewarded for spellclick'),
+-- Darnassian Nightsaber requires (A) Valiant of Darnassus
+(18,33794,62782,1,8,0,13689,0,0,0,'Required quest rewarded for spellclick'),
+(18,33794,62782,2,8,0,13706,0,0,0,'Required quest rewarded for spellclick'),
+-- Stabled Quel'Dorei steeds requires The Argent Tournament rewarded
+(18,33843,63792,0,8,0,13667,0,0,0,'Required quest rewarded for spellclick'),
+-- Stabled Quel'Dorei steed forbids Alliance Eligibility Marker rewarded
+(18,33843,63792,0,8,0,13686,0,0,1,'Forbidden rewarded quest for spellclick'),
+-- Sunreaver Hawkstrider requires The Argent Tournament rewarded
+(18,33842,63791,0,8,0,13668,0,0,0,'Required quest rewarded for spellclick'),
+-- Sunreaver Hawkstrider forbids Horde Eligibility Marker rewarded
+(18,33842,63791,0,8,0,13687,0,0,1,'Forbidden rewarded quest for spellclick'),
+-- Misc
+(18,26421,47575,0,8,0,12092,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26421,47575,0,8,0,12096,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26421,47575,1,9,0,12092,0,0,0,'Required quest active for spellclick'),
+(18,26421,47575,2,9,0,12096,0,0,0,'Required quest active for spellclick'),
+(18,26477,47096,0,8,0,11999,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26477,47096,0,8,0,12000,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26477,61286,0,8,0,11999,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26477,61286,0,8,0,12000,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26477,61832,0,8,0,11999,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26477,61832,0,8,0,12000,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,26477,61286,1,9,0,11999,0,0,0,'Required quest active for spellclick'),
+(18,26477,61286,2,9,0,12000,0,0,0,'Required quest active for spellclick'),
+(18,26477,47096,1,9,0,11999,0,0,0,'Required quest active for spellclick'),
+(18,26477,47096,2,9,0,12000,0,0,0,'Required quest active for spellclick'),
+(18,26477,61832,1,9,0,11999,0,0,0,'Required quest active for spellclick'),
+(18,26477,61832,2,9,0,12000,0,0,0,'Required quest active for spellclick'),
+(18,28161,39996,0,8,0,12532,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,28161,39996,0,8,0,12702,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,28161,39996,1,9,0,12532,0,0,0,'Required quest active for spellclick'),
+(18,28161,39996,2,9,0,12702,0,0,0,'Required quest active for spellclick'),
+(18,28161,51037,0,8,0,12532,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,28161,51037,0,8,0,12702,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,28161,51037,1,9,0,12532,0,0,0,'Required quest active for spellclick'),
+(18,28161,51037,2,9,0,12702,0,0,0,'Required quest active for spellclick'),
+(18,28161,51961,0,8,0,12532,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,28161,51961,0,8,0,12702,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,28161,51961,1,9,0,12532,0,0,0,'Required quest active for spellclick'),
+(18,28161,51961,2,9,0,12702,0,0,0,'Required quest active for spellclick'),
+(18,29856,55363,0,8,0,12629,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,29856,55363,0,8,0,12643,0,0,1,'Forbidden rewarded quest for spellclick'),
+(18,29856,55363,1,9,0,12629,0,0,0,'Required quest active for spellclick'),
+(18,29856,55363,2,9,0,12643,0,0,0,'Required quest active for spellclick'),
+(18,32788,57539,1,8,0,13075,0,0,0,'Required quest rewarded for spellclick'),
+(18,32788,57539,2,9,0,13075,0,0,0,'Required quest active for spellclick'),
+(18,32790,57654,1,8,0,13073,0,0,0,'Required quest rewarded for spellclick'),
+(18,32790,57654,2,9,0,13073,0,0,0,'Required quest active for spellclick');
+
+-- Remove duplicate entries in npc_spellclick_spells (leave 1)
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN(34125,26421,26477,28161,
+31157,33790,33791,33792,33793,33794,33795,33796,33798,33799,33800,34944,29856,30564,29414,31269);
+INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
+(26477,47096,2,0),
+(26477,61286,2,0),
+(26477,61832,0,0),
+(29414,18277,1,0),
+(29856,55363,2,0),
+(31269,46598,1,0),
+(33794,62782,1,0),
+(28161,51037,2,0),
+(28161,39996,1,0),
+(30564,57401,1,0),
+(34125,63215,1,0),
+(34944,68458,1,0),
+(33790,62781,1,0),
+(33793,62780,1,0),
+(33795,62779,1,0),
+(33800,62774,1,0),
+(33798,62787,1,0),
+(31157,46598,1,0),
+(26421,47575,1,0),
+(28161,51961,1,0),
+(33791,62786,1,0),
+(33792,62785,1,0),
+(33796,62784,1,0),
+(33799,62783,1,0);
+
+-- If this query fails, fix your custom content
+ALTER TABLE `npc_spellclick_spells` ADD PRIMARY KEY(`npc_entry`,`spell_id`);
\ No newline at end of file
diff --git a/sql/old/3.3.5a/2012_02_29_01_world_conditions.sql b/sql/old/3.3.5a/2012_02_29_01_world_conditions.sql
new file mode 100644
index 00000000000..bae8baf51a9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_29_01_world_conditions.sql
@@ -0,0 +1,5 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup`=29488 AND `SourceEntry`=54568;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,
+`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`Comment`) VALUES
+(18,29488,54568,15,8,0,12670,0,0,0,'Required quest rewarded for spellclick'),
+(18,29488,54568,15,9,0,12670,0,0,0,'Required quest active for spellclick');
diff --git a/sql/old/3.3.5a/2012_02_29_02_world_conditions.sql b/sql/old/3.3.5a/2012_02_29_02_world_conditions.sql
new file mode 100644
index 00000000000..a28e6d6424f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_29_02_world_conditions.sql
@@ -0,0 +1,5 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup`=29488 AND `SourceEntry`=54568;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,
+`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`Comment`) VALUES
+(18,29488,54568,1,8,0,12670,0,0,0,'Required quest rewarded for spellclick'),
+(18,29488,54568,2,9,0,12670,0,0,0,'Required quest active for spellclick');
diff --git a/sql/old/3.3.5a/2012_02_29_03_world_creature_text.sql b/sql/old/3.3.5a/2012_02_29_03_world_creature_text.sql
new file mode 100644
index 00000000000..2e1d3d77dde
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_29_03_world_creature_text.sql
@@ -0,0 +1,18 @@
+-- NPC talk text insert from sniff
+DELETE FROM `script_texts` WHERE `npc_entry`=28923;
+DELETE FROM `creature_text` WHERE `entry`=28923;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(28923,0,0, 'I have witnessed the rise and fall of empires... the birth and extinction of entire species... Over countless millennia the foolishness of mortals has remained the only constant. Your presence here confirms this.',14,0,100,0,0,14160, 'Loken'),
+(28923,1,0, 'My master has shown me the future, and you have no place in it. Azeroth will be reborn in darkness. Yogg-Saron shall be released! The Pantheon shall fall!',14,0,100,0,0,14161, 'Loken'),
+(28923,2,0, 'What hope is there for you? None!',14,0,100,0,0,14162, 'Loken'),
+(28923,3,0, 'You cannot hide from fate!',14,0,100,0,0,14163, 'Loken'),
+(28923,3,1, 'Come closer. I will make it quick.',14,0,100,0,0,14164, 'Loken'),
+(28923,3,2, 'Your flesh cannot hold out for long.',14,0,100,0,0,14165, 'Loken'),
+(28923,4,0, 'Only mortal...',14,0,100,0,0,14166, 'Loken'),
+(28923,4,1, 'I... am... FOREVER!',14,0,100,0,0,14167, 'Loken'),
+(28923,4,2, 'What little time you had, you wasted!',14,0,100,0,0,14168, 'Loken'),
+(28923,5,0, 'You stare blindly into the abyss!',14,0,100,0,0,14169, 'Loken'),
+(28923,6,0, 'Your ignorance is profound. Can you not see where this path leads?',14,0,100,0,0,14170, 'Loken'),
+(28923,7,0, 'You cross the precipice of oblivion!',14,0,100,0,0,14171, 'Loken'),
+(28923,8,0, 'My death... heralds the end of this world.',14,0,100,0,0,14172, 'Loken'),
+(28923,9,0, '%s begins to cast Lightning Nova!',41,0,100,0,0,0, 'Loken');
diff --git a/sql/old/3.3.5a/2012_02_29_04_world_creature_text.sql b/sql/old/3.3.5a/2012_02_29_04_world_creature_text.sql
new file mode 100644
index 00000000000..d8b7c2c048a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_29_04_world_creature_text.sql
@@ -0,0 +1,11 @@
+-- NPC talk text insert from sniff
+DELETE FROM `script_texts` WHERE `npc_entry`=28546;
+DELETE FROM `creature_text` WHERE `entry`=28546;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(28546,0,0, 'You wish to confront the master? You must first weather the storm!',14,0,100,0,0,14453, 'Ionar'),
+(28546,1,0, 'The slightest spark shall be your undoing.',14,0,100,0,0,14454, 'Ionar'),
+(28546,1,1, 'No one is safe!',14,0,100,0,0,14455, 'Ionar'),
+(28546,2,0, 'Shocking ... I know!',14,0,100,0,0,14456, 'Ionar'),
+(28546,2,1, 'You atempt the unpossible.',14,0,100,0,0,14457, 'Ionar'),
+(28546,2,2, 'Your spark of light is ... extinguish.',14,0,100,0,0,14458, 'Ionar'),
+(28546,3,0, 'Master... you have guests.',14,0,100,0,0,14459, 'Ionar');
diff --git a/sql/old/3.3.5a/2012_02_29_05_world_creature_text.sql b/sql/old/3.3.5a/2012_02_29_05_world_creature_text.sql
new file mode 100644
index 00000000000..332fecf6326
--- /dev/null
+++ b/sql/old/3.3.5a/2012_02_29_05_world_creature_text.sql
@@ -0,0 +1,15 @@
+-- NPC talk text insert from sniff
+DELETE FROM `script_texts` WHERE `npc_entry`=28587;
+DELETE FROM `creature_text` WHERE `entry`=28587;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(28587,0,0, 'It is you who have destroyed my children? You... shall... pay!',14,0,100,0,0,13960, 'Volkhan'),
+(28587,1,0, 'Life from lifelessness... death for you.',14,0,100,0,0,13961, 'Volkhan'),
+(28587,1,1, 'Nothing is wasted in the process. You will see....',14,0,100,0,0,13962, 'Volkhan'),
+(28587,2,0, 'I will crush you beneath my boots!',14,0,100,0,0,13963, 'Volkhan'),
+(28587,2,1, 'All my work... undone!',14,0,100,0,0,13964, 'Volkhan'),
+(28587,3,0, 'The armies of iron will conquer all!',14,0,100,0,0,13965, 'Volkhan'),
+(28587,3,1, 'Ha, pathetic!',14,0,100,0,0,13966, 'Volkhan'),
+(28587,3,2, 'You have cost me too much work!',14,0,100,0,0,13967, 'Volkhan'),
+(28587,4,0, 'The master was right... to be concerned.',14,0,100,0,0,13968, 'Volkhan'),
+(28587,5,0, '%s runs to his anvil!',41,0,100,0,0,0, 'Volkhan'),
+(28587,6,0, '%s prepares to shatter his Brittle Golems!',41,0,100,0,0,0, 'Volkhan');
diff --git a/sql/old/3.3.5a/2012_03_01_00_world_conditions.sql b/sql/old/3.3.5a/2012_03_01_00_world_conditions.sql
new file mode 100644
index 00000000000..794a5ce1210
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_01_00_world_conditions.sql
@@ -0,0 +1,5 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup`=29488 AND `SourceEntry`=54568;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,
+`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`Comment`) VALUES
+(18,29488,54568,1,8,0,12670,0,0,0,'Required quest rewarded for spellclick'),
+(18,29488,54568,2,28,0,12670,0,0,0,'Required quest completed for spellclick');
diff --git a/sql/old/3.3.5a/2012_03_01_01_world_creature_text.sql b/sql/old/3.3.5a/2012_03_01_01_world_creature_text.sql
new file mode 100644
index 00000000000..dd4f6693654
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_01_01_world_creature_text.sql
@@ -0,0 +1,15 @@
+-- NPC talk text insert from sniff
+DELETE FROM `script_texts` WHERE `npc_entry`=28586;
+DELETE FROM `creature_text` WHERE `entry`=28586;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(28586,0,0, 'I am the greatest of my father''s sons! Your end has come!',14,0,100,0,0,14149, 'General Bjarngrim'),
+(28586,1,0, 'Give me your worst!',14,0,100,0,0,14150, 'General Bjarngrim'),
+(28586,2,0, 'Defend yourself, for all the good it will do!',14,0,100,0,0,14151, 'General Bjarngrim'),
+(28586,3,0, 'GRAAAAAH! Behold the fury of iron and steel!',14,0,100,0,0,14152, 'General Bjarngrim'),
+(28586,4,0, 'So ends your curse!',14,0,100,0,0,14153, 'General Bjarngrim'),
+(28586,4,1, 'Flesh... is... weak!',14,0,100,0,0,14154, 'General Bjarngrim'),
+(28586,4,2, '...',14,0,100,0,0,14155, 'General Bjarngrim'),
+(28586,5,0, 'How can it be...? Flesh is not... stronger!',14,0,100,0,0,14156, 'General Bjarngrim'),
+(28586,6,0, '%s switches to Defensive Stance!',41,0,100,0,0,0, 'General Bjarngrim'),
+(28586,7,0, '%s switches to Battle Stance!',41,0,100,0,0,0, 'General Bjarngrim'),
+(28586,8,0, '%s switches to Berserker Stance!',41,0,100,0,0,0, 'General Bjarngrim');
diff --git a/sql/old/3.3.5a/2012_03_01_02_world_locales_creature_text.sql b/sql/old/3.3.5a/2012_03_01_02_world_locales_creature_text.sql
new file mode 100644
index 00000000000..c44ca191835
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_01_02_world_locales_creature_text.sql
@@ -0,0 +1,15 @@
+DROP TABLE IF EXISTS `locales_creature_text`;
+CREATE TABLE `locales_creature_text` (
+ `entry` int(10) UNSIGNED NOT NULL,
+ `textGroup` tinyint(3) UNSIGNED NOT NULL,
+ `id` int(10) UNSIGNED NOT NULL,
+ `text_loc1` text,
+ `text_loc2` text,
+ `text_loc3` text,
+ `text_loc4` text,
+ `text_loc5` text,
+ `text_loc6` text,
+ `text_loc7` text,
+ `text_loc8` text,
+ PRIMARY KEY (`entry`,`textGroup`,`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/sql/old/3.3.5a/2012_03_03_00_world_command.sql b/sql/old/3.3.5a/2012_03_03_00_world_command.sql
new file mode 100644
index 00000000000..52938c0b76b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_03_00_world_command.sql
@@ -0,0 +1,9 @@
+DELETE FROM `command` WHERE `name` LIKE 'debug moveflags';
+INSERT INTO `command` (`name`,`security`,`help`) VALUES
+('debug moveflags',3,'Syntax: .debug moveflags [$newMoveFlags [$newMoveFlags2]]\r\nNo params given will output the current moveflags of the target');
+
+DELETE FROM `trinity_string` WHERE `entry` IN(1143,1144);
+INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES
+(1143,'Target''s moveFlags: %u, moveFlagsExtra: %u.'),
+(1144,'Target''s moveFlags set to: %u, moveFlagsExtra to: %u');
+
diff --git a/sql/old/3.3.5a/2012_03_04_00_world_misc.sql b/sql/old/3.3.5a/2012_03_04_00_world_misc.sql
new file mode 100644
index 00000000000..af556f648b8
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_04_00_world_misc.sql
@@ -0,0 +1,13 @@
+-- Spotlight aura for spotlight NPC
+DELETE FROM `creature_template_addon` WHERE `entry`=19913;
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(19913,0,0,0,0,'39312');
+
+-- Scriptnames for areatriggers
+SET @AT_AREA_52_SOUTH := 4472;
+SET @AT_AREA_52_NORTH := 4466;
+SET @AT_AREA_52_WEST := 4471;
+SET @AT_AREA_52_EAST := 4422;
+DELETE FROM `areatrigger_scripts` WHERE `entry` IN (@AT_AREA_52_SOUTH,@AT_AREA_52_NORTH,@AT_AREA_52_WEST,@AT_AREA_52_EAST);
+INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES
+(@AT_AREA_52_SOUTH,"at_area_52_entrance"),(@AT_AREA_52_NORTH,"at_area_52_entrance"),(@AT_AREA_52_WEST,"at_area_52_entrance"),(@AT_AREA_52_EAST,"at_area_52_entrance");
diff --git a/sql/old/3.3.5a/2012_03_04_01_world_areatrigger_scripts.sql b/sql/old/3.3.5a/2012_03_04_01_world_areatrigger_scripts.sql
new file mode 100644
index 00000000000..ae4a0bc1f77
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_04_01_world_areatrigger_scripts.sql
@@ -0,0 +1,7 @@
+-- Add Area trigger scripts
+DELETE FROM `areatrigger_scripts` WHERE `entry` IN (4422,4466,4471,4472);
+INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES
+(4422,'at_area_52_entrance'),
+(4466,'at_area_52_entrance'),
+(4471,'at_area_52_entrance'),
+(4472,'at_area_52_entrance');
diff --git a/sql/old/3.3.5a/2012_03_06_00_world_commands.sql b/sql/old/3.3.5a/2012_03_06_00_world_commands.sql
new file mode 100644
index 00000000000..d782a76c70d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_06_00_world_commands.sql
@@ -0,0 +1,3 @@
+DELETE FROM `command` WHERE `name` = 'reload locales_creature_text';
+INSERT INTO `command` (`name`, `security`, `help`) VALUES
+('reload locales_creature_text', 3, 'Syntax: .reload locales_creature_text\nReload locales_creature_text Table.');
\ No newline at end of file
diff --git a/sql/old/3.3.5a/2012_03_06_01_world_misc.sql b/sql/old/3.3.5a/2012_03_06_01_world_misc.sql
new file mode 100644
index 00000000000..7eb208a9673
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_06_01_world_misc.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `warden_checks` ENGINE=MYISAM;
+ALTER TABLE `achievement_dbc` ENGINE=MYISAM;
+ALTER TABLE `creature_text` ENGINE=MYISAM;
+ALTER TABLE `game_event_seasonal_questrelation` ENGINE=MYISAM;
diff --git a/sql/old/3.3.5a/2012_03_06_02_world_queststatus_seasonal.sql b/sql/old/3.3.5a/2012_03_06_02_world_queststatus_seasonal.sql
new file mode 100644
index 00000000000..0efbb6609cf
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_06_02_world_queststatus_seasonal.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS `character_queststatus_seasonal`;
diff --git a/sql/old/3.3.5a/2012_03_06_03_world_smart_scripts.sql b/sql/old/3.3.5a/2012_03_06_03_world_smart_scripts.sql
new file mode 100644
index 00000000000..cb2468c4d5c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_06_03_world_smart_scripts.sql
@@ -0,0 +1,17 @@
+-- SAI for Elrodan
+SET @ENTRY=18743;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY AND `source_type`=0);
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY*100 AND `source_type`=9);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,5000,8000,15000,25000,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Elrodan - OOC - run script'),
+(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,11,18744,20,0,0,0,0,0,'Elrodan - Script - Aurosalia say random'),
+(@ENTRY*100,9,1,0,0,0,100,0,3000,3000,3000,3000,11,32826,0,0,0,0,0,1,0,0,0,0,0,0,0,'Elrodan - Script - cast Polymorph Cast Visual');
+-- Aurosalia fix model
+UPDATE `creature_model_info` SET `modelid_other_gender`=0 WHERE `modelid`=18145;
+-- Aurosalia text
+DELETE FROM `creature_text` WHERE `entry`=18744;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(18744,0,0, 'Stop!',1,0,100,5,0,0, 'Aurosalia'),
+(18744,0,1, 'Will you stop--',1,0,100,274,0,0, 'Aurosalia'),
+(18744,0,2, '',1,0,100,6,0,0, 'Aurosalia');
diff --git a/sql/old/3.3.5a/2012_03_06_04_world_creature_text.sql b/sql/old/3.3.5a/2012_03_06_04_world_creature_text.sql
new file mode 100644
index 00000000000..f49599e1ba0
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_06_04_world_creature_text.sql
@@ -0,0 +1,6 @@
+-- Aurosalia text
+DELETE FROM `creature_text` WHERE `entry`=18744;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(18744,0,0, 'Stop!',12,1,100,5,0,0, 'Aurosalia'),
+(18744,0,1, 'Will you stop--',12,1,100,6,0,0, 'Aurosalia'),
+(18744,0,2, '',12,1,100,274,0,0, 'Aurosalia');
diff --git a/sql/old/3.3.5a/2012_03_07_00_world_trinity_string.sql b/sql/old/3.3.5a/2012_03_07_00_world_trinity_string.sql
new file mode 100644
index 00000000000..df5afea5d4f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_07_00_world_trinity_string.sql
@@ -0,0 +1,3 @@
+DELETE FROM `trinity_string` WHERE `entry`=175;
+INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES
+(175, 'Liquid level: %f, ground: %f, type: %u, flags %u, status: %d.');
diff --git a/sql/old/3.3.5a/2012_03_10_00_world_creature.sql b/sql/old/3.3.5a/2012_03_10_00_world_creature.sql
new file mode 100644
index 00000000000..a0143af73c7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_10_00_world_creature.sql
@@ -0,0 +1,21 @@
+-- Add some missing guids
+SET @GUID := 42153;
+DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+4;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES
+(@GUID,32666,530,1,1,0,0,9830.201,-7389.711,13.68803,5.532694,120,0,0,1,0,0),
+(@GUID+1,32667,530,1,1,0,0,9859.044,-7406.975,13.7113,1.658063,120,0,0,1,0,0),
+(@GUID+2,31144,530,1,1,0,0,9869.401,-7389.657,13.69022,3.90953755,120,0,0,1,0,0),
+(@GUID+3,31144,530,1,1,0,0,9871.973,-7392.763,13.6818113,3.35103226,120,0,0,1,0,0),
+(@GUID+4,31146,530,1,1,0,0,9850.529,-7395.442,13.72216,4.694936,120,0,0,1,0,0);
+-- Addons
+DELETE FROM `creature_addon` WHERE `guid` BETWEEN @GUID AND @GUID+4;
+DELETE FROM `creature_addon` WHERE `guid`=66686;
+INSERT INTO `creature_addon` (`guid`,`bytes2`,`auras`) VALUES
+(@GUID,1, '7056 61573'),
+(@GUID+1,1, '7056 61573'),
+(@GUID+2,1, '7056 61573'),
+(@GUID+3,1, '7056 61573'),
+(@GUID+4,1, '7056 61573'),
+(66686,1, '7056');
+-- convert npc to trigger
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=18504;
diff --git a/sql/old/3.3.5a/2012_03_10_00_world_smart_scripts.sql b/sql/old/3.3.5a/2012_03_10_00_world_smart_scripts.sql
new file mode 100644
index 00000000000..aaa02c2e3df
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_10_00_world_smart_scripts.sql
@@ -0,0 +1,129 @@
+-- SAI for Champion Vranesh
+SET @ENTRY=18146;
+UPDATE `creature` SET `position_x`=9834.044,`position_y`=-7480.845,`position_z`=14.93467 WHERE `id`=@ENTRY;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+UPDATE `creature_template_addon` SET `mount`=0 WHERE `entry`=@ENTRY; -- 19085
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid` IN (@ENTRY*100,@ENTRY*100+1,@ENTRY*100+2,@ENTRY*100+3,@ENTRY*100+4);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+-- AI
+(@ENTRY,0,0,0,11,0,100,1,0,0,0,0,53,0,@ENTRY,1,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On respawn - load path'),
+(@ENTRY,0,1,2,40,0,100,0,7,@ENTRY,0,0,54,6000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Pause Path'),
+(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Run Script'),
+(@ENTRY,0,3,4,40,0,100,0,11,@ENTRY,0,0,54,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Pause Path'),
+(@ENTRY,0,4,0,61,0,100,0,0,0,0,0,80,@ENTRY*100+1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Run Script'),
+(@ENTRY,0,5,6,40,0,100,0,25,@ENTRY,0,0,54,8000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Pause Path'),
+(@ENTRY,0,6,0,61,0,100,0,0,0,0,0,80,@ENTRY*100+2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Run Script'),
+(@ENTRY,0,7,8,40,0,100,0,34,@ENTRY,0,0,54,8000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Pause Path'),
+(@ENTRY,0,8,0,61,0,100,0,0,0,0,0,80,@ENTRY*100+3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Run Script'),
+(@ENTRY,0,9,10,40,0,100,0,50,@ENTRY,0,0,54,7000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Pause Path'),
+(@ENTRY,0,10,0,61,0,100,0,0,0,0,0,80,@ENTRY*100+4,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Run Script'),
+(@ENTRY,0,11,0,40,0,100,0,57,@ENTRY,0,0,54,600000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - On waypoint reached - Pause Path'),
+-- Script 0
+(@ENTRY*100,9,0,0,0,0,100,0,3500,3500,3500,3500,5,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - Script 0 - emote bow'),
+-- Script 1
+(@ENTRY*100+1,9,0,0,0,0,100,0,100,100,100,100,43,0,19085,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - Script 1 - mount horse'),
+(@ENTRY*100+1,9,1,0,0,0,100,0,100,100,100,100,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - Script 1 - say 0'),
+(@ENTRY*100+1,9,2,0,0,0,100,0,100,100,100,100,5,16,0,0,0,0,0,11,16222,10,0,0,0,0,0,'Champion Vranesh - Script 1 - Silvermoon City Guardian emote bow'),
+(@ENTRY*100+1,9,3,0,0,0,100,0,100,100,100,100,1,0,0,0,0,0,0,19,16222,10,0,0,0,0,0,'Champion Vranesh - Script 1 - Silvermoon City Guardian say 0'),
+-- Script 2
+(@ENTRY*100+2,9,0,0,0,0,100,0,3000,3000,3000,3000,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - Script 2 - say 1'),
+(@ENTRY*100+2,9,1,0,0,0,100,0,100,100,100,100,5,16,0,0,0,0,0,11,16222,18,0,0,0,0,0,'Champion Vranesh - Script 2 - Silvermoon City Guardian emote bow'),
+(@ENTRY*100+2,9,2,0,0,0,100,0,100,100,100,100,1,1,0,0,0,0,0,19,16222,18,0,0,0,0,0,'Champion Vranesh - Script 2 - Silvermoon City Guardian say 1'),
+-- Script 3
+(@ENTRY*100+3,9,0,0,0,0,100,0,3000,3000,3000,3000,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - Script 3 - say 2'),
+(@ENTRY*100+3,9,1,0,0,0,100,0,100,100,100,100,5,16,0,0,0,0,0,11,16222,30,0,0,0,0,0,'Champion Vranesh - Script 3 - Silvermoon City Guardian emote bow'),
+-- Script 4
+(@ENTRY*100+4,9,0,0,0,0,100,0,1000,1000,1000,1000,43,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - Script 4 - dismount horse'),
+(@ENTRY*100+4,9,1,0,0,0,100,0,1000,1000,1000,1000,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Champion Vranesh - Script 3 - say 3');
+
+-- NPC talk text for Champion Vranesh and Silvermoon City Guardian
+DELETE FROM `creature_text` WHERE `entry` IN (@ENTRY,16222);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Champion Vranesh inclines his head slightly to the pair of guardians in greeting.',16,1,100,0,0,0, 'Champion Vranesh'),
+(@ENTRY,1,0, 'Champion Vranesh arches a scrulpled brow at the guards. a disapproving scowl on his face',16,1,100,0,0,0, 'Champion Vranesh'),
+(@ENTRY,2,0, 'Champion Vranesh glances from guard to guard.',16,1,100,0,0,0, 'Champion Vranesh'),
+(@ENTRY,3,0, 'Champion Vranesh surveys the small ranger practice ground with a condescending smirk.',16,1,100,0,0,0, 'Champion Vranesh'),
+(16222,0,0, 'Glory to the Sun K-- ah... Silvermoon!',12,1,100,0,0,0, 'Silvermoon City Guardian'),
+(16222,1,0, 'Our lives are yours, Blood Knight.',12,1,100,0,0,0, 'Silvermoon City Guardian');
+
+-- Pathing for Champion Vranesh
+DELETE FROM `waypoints` WHERE `entry`=@ENTRY;
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@ENTRY,1,9834.044,-7480.845,14.93467, 'Champion Vranesh'),
+(@ENTRY,2,9829.106,-7493.609,14.93653, 'Champion Vranesh'),
+(@ENTRY,3,9826.172,-7516.15,19.73714, 'Champion Vranesh'),
+(@ENTRY,4,9841.332,-7518.849,19.70547, 'Champion Vranesh'),
+(@ENTRY,5,9845.063,-7512.885,19.68096, 'Champion Vranesh'),
+(@ENTRY,6,9850.942,-7512.470,19.71548, 'Champion Vranesh'),
+(@ENTRY,7,9850.934,-7513.604,19.71813, 'Champion Vranesh'), -- pause 6000
+(@ENTRY,8,9872.733,-7517.256,19.75283, 'Champion Vranesh'),
+(@ENTRY,9,9872.419,-7489.979,14.91272, 'Champion Vranesh'),
+(@ENTRY,10,9851.401,-7490.209,14.93464, 'Champion Vranesh'),
+(@ENTRY,11,9850.948,-7470.096,14.91403, 'Champion Vranesh'), -- pause 1000
+(@ENTRY,12,9851.16,-7469.154,14.91319, 'Champion Vranesh'),
+(@ENTRY,13,9849.688,-7442.579,13.50931, 'Champion Vranesh'),
+(@ENTRY,14,9848.726,-7423.561,13.31949, 'Champion Vranesh'),
+(@ENTRY,15,9816.583,-7423.817,13.30332, 'Champion Vranesh'),
+(@ENTRY,16,9794.673,-7424.877,13.50989, 'Champion Vranesh'),
+(@ENTRY,17,9794.48,-7442.293,14.40225, 'Champion Vranesh'),
+(@ENTRY,18,9767.989,-7442.611,14.39258, 'Champion Vranesh'),
+(@ENTRY,19,9767.406,-7422.982,13.35852, 'Champion Vranesh'),
+(@ENTRY,20,9739.563,-7422.83,13.28878, 'Champion Vranesh'),
+(@ENTRY,21,9736.46,-7440.873,13.53963, 'Champion Vranesh'),
+(@ENTRY,22,9740.345,-7464.682,13.57483, 'Champion Vranesh'),
+(@ENTRY,23,9746.739,-7482.594,13.55744, 'Champion Vranesh'),
+(@ENTRY,24,9748.767,-7486.576,13.54981, 'Champion Vranesh'),
+(@ENTRY,25,9753.25,-7486.52,13.5461, 'Champion Vranesh'), -- pause 8000
+(@ENTRY,26,9720.037,-7486.478,13.52865, 'Champion Vranesh'),
+(@ENTRY,27,9681.502,-7475.868,13.52783, 'Champion Vranesh'),
+(@ENTRY,28,9666.59,-7479.547,13.53783, 'Champion Vranesh'),
+(@ENTRY,29,9638.033,-7492.629,13.50889, 'Champion Vranesh'),
+(@ENTRY,30,9620.123,-7488.486,13.53853, 'Champion Vranesh'),
+(@ENTRY,31,9605.795,-7475.276,13.55774, 'Champion Vranesh'),
+(@ENTRY,32,9597.921,-7460.307,13.54336, 'Champion Vranesh'),
+(@ENTRY,33,9594.605,-7450.369,13.5353, 'Champion Vranesh'),
+(@ENTRY,34,9592.944,-7450.381,13.53116, 'Champion Vranesh'), -- pause 8000
+(@ENTRY,35,9594.605,-7450.369,13.5353, 'Champion Vranesh'),
+(@ENTRY,36,9615.793,-7419.515,13.30549, 'Champion Vranesh'),
+(@ENTRY,37,9654.939,-7420.383,13.29342, 'Champion Vranesh'),
+(@ENTRY,38,9673.072,-7429.818,13.2933, 'Champion Vranesh'),
+(@ENTRY,39,9689.373,-7431.429,13.2933, 'Champion Vranesh'),
+(@ENTRY,40,9709.577,-7422.25,13.2933, 'Champion Vranesh'),
+(@ENTRY,41,9722.3,-7415.217,13.39988, 'Champion Vranesh'),
+(@ENTRY,42,9748.049,-7414.597,13.32135, 'Champion Vranesh'),
+(@ENTRY,43,9766.792,-7413.542,13.38617, 'Champion Vranesh'),
+(@ENTRY,44,9767.26,-7396.828,14.43101, 'Champion Vranesh'),
+(@ENTRY,45,9793.145,-7395.393,14.3936, 'Champion Vranesh'),
+(@ENTRY,46,9794.217,-7415.122,13.48684, 'Champion Vranesh'),
+(@ENTRY,47,9817.575,-7415.299,13.30596, 'Champion Vranesh'),
+(@ENTRY,48,9837.021,-7414.861,13.30863, 'Champion Vranesh'),
+(@ENTRY,49,9848.048,-7414.794,13.31137, 'Champion Vranesh'),
+(@ENTRY,50,9848.199,-7414.07,13.31068, 'Champion Vranesh'), -- pause 7000
+(@ENTRY,51,9847.695,-7415.903,13.31243, 'Champion Vranesh'),
+(@ENTRY,52,9848.259,-7428.576,13.33225, 'Champion Vranesh'),
+(@ENTRY,53,9846.748,-7446.964,13.56501, 'Champion Vranesh'),
+(@ENTRY,54,9850.373,-7465.03,14.9097, 'Champion Vranesh'),
+(@ENTRY,55,9850.84,-7480.409,14.93768, 'Champion Vranesh'),
+(@ENTRY,56,9840.165,-7480.267,14.92917, 'Champion Vranesh'),
+(@ENTRY,57,9843.284,-7480.133,14.92655, 'Champion Vranesh'); -- pause 60000
+
+-- SAI for Silvermoon Farstrider
+SET @ENTRY=18507;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,25,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Farstrider - Reset - Set Phase 1'),
+(@ENTRY,0,1,2,1,1,100,0,3000,3000,5000,5000,11,36802,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Farstrider - OOC - Cast Spell (Phase 1)'),
+(@ENTRY,0,2,0,61,1,100,0,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Farstrider - OOC - Set Phase 2 (Phase 1)'),
+(@ENTRY,0,3,4,1,2,100,0,3000,3000,5000,5000,11,36803,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Farstrider - OOC - Cast Spell (Phase 2)'),
+(@ENTRY,0,4,0,61,2,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Farstrider - OOC - Set Phase 1 (Phase 2)');
+-- SAI for Silvermoon Ranger
+SET @ENTRY=18147;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid` IN (-64950,-64951,-64952,-64953);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(-64950,0,0,0,1,0,100,0,18000,22000,18000,22000,11,29121,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Ranger - OOC - Cast Spell'),
+(-64951,0,0,0,1,0,100,0,18000,22000,18000,22000,11,29121,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Ranger - OOC - Cast Spell'),
+(-64952,0,0,0,1,0,100,0,18000,22000,18000,22000,11,29120,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Ranger - OOC - Cast Spell'),
+(-64953,0,0,0,1,0,100,0,18000,22000,18000,22000,11,29122,0,0,0,0,0,1,0,0,0,0,0,0,0,'Silvermoon Ranger - OOC - Cast Spell');
diff --git a/sql/old/3.3.5a/2012_03_10_00_world_waypoint_data.sql b/sql/old/3.3.5a/2012_03_10_00_world_waypoint_data.sql
new file mode 100644
index 00000000000..01c2bc50402
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_10_00_world_waypoint_data.sql
@@ -0,0 +1,25 @@
+-- Silvermoon City Guardian pathing
+SET @NPC := 56902;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=9595.755,`position_y`=-7366.754,`position_z`=13.50131 WHERE `guid`=@NPC;
+UPDATE `creature_addon` SET `path_id`=@PATH WHERE `guid`=@NPC;
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,9595.755,-7366.754,13.50131,0,0,0,100,0),
+(@PATH,2,9594.553,-7336.536,14.15131,0,0,0,100,0),
+(@PATH,3,9586.897,-7325.241,14.1312,0,0,0,100,0),
+(@PATH,4,9561.705,-7326.179,14.05934,0,0,0,100,0),
+(@PATH,5,9519.901,-7327.064,14.12175,0,0,0,100,0),
+(@PATH,6,9508.228,-7352.014,14.33403,0,0,0,100,0),
+(@PATH,7,9505.697,-7394.406,14.32095,0,0,0,100,0),
+(@PATH,8,9535.751,-7396.176,16.8303,0,0,0,100,0),
+(@PATH,9,9564.451,-7396.184,16.84703,0,0,0,100,0),
+(@PATH,10,9563.777,-7415.961,19.47212,0,0,0,100,0),
+(@PATH,11,9559.149,-7418.953,19.47643,0,0,0,100,0),
+(@PATH,12,9563.34,-7432.895,15.4851,0,0,0,100,0),
+(@PATH,13,9564.645,-7464.229,15.51088,0,0,0,100,0),
+(@PATH,14,9588.409,-7464.643,13.52051,0,0,0,100,0),
+(@PATH,15,9603.896,-7430.126,13.30448,0,0,0,100,0),
+(@PATH,16,9595.137,-7387.862,13.52731,0,0,0,100,0),
+(@PATH,17,9572.599,-7384.971,14.39343,0,0,0,100,0),
+(@PATH,18,9573.106,-7369.531,14.40827,0,0,0,100,0);
diff --git a/sql/old/3.3.5a/2012_03_11_00_world_sai.sql b/sql/old/3.3.5a/2012_03_11_00_world_sai.sql
new file mode 100644
index 00000000000..a8cab265ac0
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_11_00_world_sai.sql
@@ -0,0 +1,60 @@
+-- Coilfang Guardian
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=21873 AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(21873, 0, 0, 0, 0, 0, 0, 0, 5000, 5000, 15000, 15000, 11, 28168, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Guardian - IC - Cast Arcing Smash'),
+(21873, 0, 1, 0, 0, 0, 0, 0, 2000, 2000, 10000, 10000, 11, 9080, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Guardian - IC - Cast Harmstring'),
+(21873, 0, 2, 0, 0, 0, 50, 0, 3000, 4000, 10000, 20000, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Guardian - IC - Say 0'); -- randomly guessed timers
+
+DELETE FROM `creature_text` WHERE `entry`=21873;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES
+(21873, 0, 0, 'By Nazjatar''s Depths!', 12, 0, 0, 0, 0, 0, 'Coilfang Guardian'),
+(21873, 0, 1, 'Die, warmblood!', 12, 0, 0, 0, 0, 0, 'Coilfang Guardian'),
+(21873, 0, 2, 'For the Master!', 12, 0, 0, 0, 0, 0, 'Coilfang Guardian'),
+(21873, 0, 3, 'Illidan reigns!', 12, 0, 0, 0, 0, 0, 'Coilfang Guardian'),
+(21873, 0, 4, 'My blood is like venom!', 12, 0, 0, 0, 0, 0, 'Coilfang Guardian');
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=21873;
+
+-- Coilfang Strider
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=22056 AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(22056, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 11, 38257, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Strider - On Reset - Cast Panic Periodic'),
+(22056, 0, 1, 0, 0, 0, 0, 0, 8000, 8000, 30000, 40000, 11, 38259, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Strider - IC - Cast Mind Blast');
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=22056;
+
+-- Coilfang Elite
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=22055 AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(22055, 0, 0, 0, 0, 0, 0, 0, 5000, 5000, 15000, 20000, 11, 38260, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Elite - IC - Cast Cleave'),
+(22055, 0, 1, 0, 0, 0, 0, 0, 2000, 2000, 10000, 10000, 11, 38262, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Elite - IC - Cast Harmstring');
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=22055;
+
+-- Core Hound
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=11673 AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` BETWEEN 11673*100+0 AND 11673*100+5 AND `source_type`=9;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(11673, 0, 0, 0, 0, 0, 0, 0, 10000, 10000, 7000, 7000, 11, 19272, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - IC - Cast Lava Breath'),
+(11673, 0, 1, 0, 0, 0, 0, 0, 4000, 4000, 6000, 6000, 11, 19319, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - IC - Cast Vicious Bite'),
+(11673, 0, 2, 0, 0, 0, 0, 0, 15000, 15000, 24000, 24000, 88, 11673*100+0, 11673*100+5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - IC - Call random script'),
+(11673*100+0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19364, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - Random 0 - Cast Ground Stomp'),
+(11673*100+1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19366, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - Random 1 - Cast Cauterizing Flames'),
+(11673*100+2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19367, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - Random 2 - Cast Withering Heat'),
+(11673*100+3, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19369, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - Random 3 - Cast Ancient Despair'),
+(11673*100+4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19372, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - Random 4 - Cast Ancient Hysteria'),
+(11673*100+5, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19365, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Core Hound - Random 5 - Cast Ancient Dread');
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=11673;
+
+-- Shadow of Aran
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=18254 AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(18254, 0, 0, 0, 0, 0, 0, 0, 1000, 1000, 5000, 5000, 11, 29978, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Aran - IC - Cast Pyro Blast');
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=18254;
diff --git a/sql/old/3.3.5a/2012_03_12_00_world_creature_template.sql b/sql/old/3.3.5a/2012_03_12_00_world_creature_template.sql
new file mode 100644
index 00000000000..cc70ff7a557
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_12_00_world_creature_template.sql
@@ -0,0 +1 @@
+ALTER TABLE `creature_template` ADD COLUMN `HoverHeight` FLOAT NOT NULL DEFAULT 1 AFTER `InhabitType`;
diff --git a/sql/old/3.3.5a/2012_03_12_01_world_conditions.sql b/sql/old/3.3.5a/2012_03_12_01_world_conditions.sql
new file mode 100644
index 00000000000..d58d8f54ddf
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_12_01_world_conditions.sql
@@ -0,0 +1,3 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=72257;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,72257,0,0,32,0,144,0,0,0,0,'','Remove Marks of the Fallen Champion - target player');
diff --git a/sql/old/3.3.5a/2012_03_12_01_world_gameobject.sql b/sql/old/3.3.5a/2012_03_12_01_world_gameobject.sql
new file mode 100644
index 00000000000..38c615a3b0a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_12_01_world_gameobject.sql
@@ -0,0 +1,4 @@
+UPDATE `gameobject_template` SET `flags`=0x32 WHERE `entry` IN (202239,202240,202238,202241,201959,202339,202338,202340);
+
+-- Set Deathbringer's Cache spawned by default
+UPDATE `gameobject` SET `spawntimesecs`=604800 WHERE `id` IN (202239,202240,202238,202241);
diff --git a/sql/old/3.3.5a/2012_03_12_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_03_12_01_world_spell_script_names.sql
new file mode 100644
index 00000000000..db98aa0fbea
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_12_01_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_deathbringer_remove_marks';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(72257,'spell_deathbringer_remove_marks');
diff --git a/sql/old/3.3.5a/2012_03_14_00_world_creature_addon.sql b/sql/old/3.3.5a/2012_03_14_00_world_creature_addon.sql
new file mode 100644
index 00000000000..c7e4edb97ed
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_14_00_world_creature_addon.sql
@@ -0,0 +1,2 @@
+UPDATE `creature_addon` SET `bytes1`=0x3000000 WHERE `guid`=207210;
+UPDATE `creature_addon` SET `bytes1`=0x3000000 WHERE `guid`=207211;
diff --git a/sql/old/3.3.5a/2012_03_19_00_world_smart_scripts.sql b/sql/old/3.3.5a/2012_03_19_00_world_smart_scripts.sql
new file mode 100644
index 00000000000..20241efa9cc
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_19_00_world_smart_scripts.sql
@@ -0,0 +1,21 @@
+-- SAI for Unrestrained Dragonhawk
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=25236;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=25236 AND `source_type`=0);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(25236,0,0,1,62,0,100,0,9143,0,0,0,11,45353,0,0,0,0,0,7,0,0,0,0,0,0,0,'Unrestrained Dragonhawk - On Gossip option select - cast "Quest - Sunwell Daily - Ship Bombing Run Return" on player'),
+(25236,0,1,0,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Unrestrained Dragonhawk - On Gossip option select - Close Gossip');
+-- Unrestrained Dragonhawk Gossip
+UPDATE `creature_template` SET `gossip_menu_id`=9143 WHERE `entry`=25236;
+-- Gossip_menu from UDB
+DELETE FROM `gossip_menu` WHERE `entry`=9143;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(9143,12371);
+-- Gossip_menu_option Update from UDB
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=9143;
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES
+(9143,0,0, '',1,1,0,0,0,0, '');
+-- Gossip option Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9143;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,9143,0,0,9,11542,0,0,0,'','Show gossip option if player has quest 11542 but not complete'),
+(15,9143,0,1,9,11543,0,0,0,'','Show gossip option if player has quest 11543 but not complete');
diff --git a/sql/old/3.3.5a/2012_03_20_00_world_gossip.sql b/sql/old/3.3.5a/2012_03_20_00_world_gossip.sql
new file mode 100644
index 00000000000..00214d805e7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_20_00_world_gossip.sql
@@ -0,0 +1,88 @@
+-- Creature Gossip_menu_id Update from sniff
+UPDATE `creature_template` SET `gossip_menu_id`=9052 WHERE `entry`=24965; -- Vindicator Xayann
+UPDATE `creature_template` SET `gossip_menu_id`=9050 WHERE `entry`=24975; -- Mar'nah
+UPDATE `creature_template` SET `gossip_menu_id`=9126 WHERE `entry`=25032; -- Eldara Dawnrunner
+UPDATE `creature_template` SET `gossip_menu_id`=9087 WHERE `entry`=25046; -- Smith Hauthaa
+UPDATE `creature_template` SET `gossip_menu_id`=9064 WHERE `entry`=25057; -- Battlemage Arynna
+UPDATE `creature_template` SET `gossip_menu_id`=9062, `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=25059; -- Ayren Cloudbreaker
+UPDATE `creature_template` SET `gossip_menu_id`=9063 WHERE `entry`=25061; -- Harbinger Inuuro
+UPDATE `creature_template` SET `gossip_menu_id`=9127 WHERE `entry`=25069; -- Magister Ilastar
+UPDATE `creature_template` SET `gossip_menu_id`=9115 WHERE `entry`=25112; -- Anchorite Ayuri
+UPDATE `creature_template` SET `gossip_menu_id`=9105 WHERE `entry`=25169; -- Archmage Ne'thul
+UPDATE `creature_template` SET `gossip_menu_id`=9286 WHERE `entry`=25632; -- Vindicator Moorba
+UPDATE `creature_template` SET `gossip_menu_id`=9285 WHERE `entry`=25638; -- Captain Selana
+UPDATE `creature_template` SET `gossip_menu_id`=9198 WHERE `entry`=25950; -- Shaani
+
+-- Gossip Menu insert from sniff
+DELETE FROM `gossip_menu` WHERE `entry`=9050 AND `text_id`=12237;
+DELETE FROM `gossip_menu` WHERE `entry`=9052 AND `text_id`=12241;
+DELETE FROM `gossip_menu` WHERE `entry`=9062 AND `text_id`=12252;
+DELETE FROM `gossip_menu` WHERE `entry`=9063 AND `text_id`=12256;
+DELETE FROM `gossip_menu` WHERE `entry`=9064 AND `text_id`=12258;
+DELETE FROM `gossip_menu` WHERE `entry`=9087 AND `text_id`=12286;
+DELETE FROM `gossip_menu` WHERE `entry`=9115 AND `text_id`=12323;
+DELETE FROM `gossip_menu` WHERE `entry`=9126 AND `text_id`=12338;
+DELETE FROM `gossip_menu` WHERE `entry`=9127 AND `text_id`=12340;
+DELETE FROM `gossip_menu` WHERE `entry`=9198 AND `text_id`=12497;
+DELETE FROM `gossip_menu` WHERE `entry`=9285 AND `text_id`=12596;
+DELETE FROM `gossip_menu` WHERE `entry`=9286 AND `text_id`=12597;
+DELETE FROM `gossip_menu` WHERE `entry`=9287 AND `text_id`=12598;
+DELETE FROM `gossip_menu` WHERE `entry`=9288 AND `text_id`=12599;
+DELETE FROM `gossip_menu` WHERE `entry`=9289 AND `text_id`=12600;
+DELETE FROM `gossip_menu` WHERE `entry`=9290 AND `text_id`=12601;
+DELETE FROM `gossip_menu` WHERE `entry`=9293 AND `text_id`=12604;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(9050,12237),
+(9052,12241),
+(9062,12252),
+(9063,12256),
+(9064,12258),
+(9087,12286),
+(9115,12323),
+(9126,12338),
+(9127,12340),
+(9198,12497),
+(9285,12596),
+(9286,12597),
+(9287,12598),
+(9288,12599),
+(9289,12600),
+(9290,12601),
+(9293,12604);
+
+-- Creature Gossip_menu_option insert from sniff
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (9050,9087,9126,9198,9285,9287,9288,9289) AND `id`=0;
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=9062 AND `id` IN (0,1);
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=9286 AND `id`=2;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`)VALUES
+(9050,0,1,'Let me browse your goods.',3,128,0,0,0,0,''),
+(9062,0,0,'Speaking of action, I''ve been ordered to undertake an air strike.',1,1,0,0,0,0,''),
+(9062,1,0,'I need to intercept the Dawnblade reinforcements.',1,1,0,0,0,0,''),
+(9087,0,1,'Let me browse your goods.',3,128,0,0,0,0,''),
+(9126,0,1,'Let me browse your goods.',3,128,0,0,0,0,''),
+(9198,0,1,'Let me browse your goods.',3,128,0,0,0,0,''),
+(9285,0,0,'Give me a situation report, Captain.',1,1,9287,0,0,0,''),
+(9286,2,0,'What is the current state of the Sunwell''s Gates?',1,1,9293,0,0,0,''),
+(9287,0,0,'What went wrong?',1,1,9288,0,0,0,''),
+(9288,0,0,'Why did they stop?',1,1,9289,0,0,0,''),
+(9289,0,0,'Your insight is appreciated.',1,1,9290,0,0,0,'');
+
+-- Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9062 AND `SourceEntry` IN (0,1);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,9062,0,0,0,9,11532,0,0,0,0,'','Show gossip option only if player has taken quest 11532'),
+(15,9062,0,0,1,9,11533,0,0,0,0,'','Show gossip option only if player has taken quest 11533'),
+(15,9062,1,0,0,9,11542,0,0,0,0,'','Show gossip option only if player has taken quest 11542'),
+(15,9062,1,0,1,9,11543,0,0,0,0,'','Show gossip option only if player has taken quest 11543');
+
+-- SmartAI
+DELETE FROM `smart_scripts` WHERE `entryorguid`=25059 AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(25059,0,0,2,62,0,100,0,9062,0,0,0,11,45071,0,0,0,0,0,7,0,0,0,0,0,0,0,'Ayren Cloudbreaker - On Gossip option select - Cast "Quest - Sunwell Daily - Dead Scar Bombing Run" on player'),
+(25059,0,1,2,62,0,100,0,9062,1,0,0,11,45113,0,0,0,0,0,7,0,0,0,0,0,0,0,'Ayren Cloudbreaker - On Gossip option select - Cast "Quest - Sunwell Daily - Ship Bombing Run" on player'),
+(25059,0,2,0,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Ayren Cloudbreaker - On Gossip option select - Close Gossip');
+
+-- Spell scripts from sniff
+DELETE FROM `spell_scripts` WHERE `id`=45071;
+INSERT INTO `spell_scripts` (`id`,`effIndex`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES
+(45071,2,0,16,12318,1,0,0,0,0,0); -- Play sound
diff --git a/sql/old/3.3.5a/2012_03_21_00_world_creature.sql b/sql/old/3.3.5a/2012_03_21_00_world_creature.sql
new file mode 100644
index 00000000000..def72f74cd6
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_21_00_world_creature.sql
@@ -0,0 +1,71 @@
+-- ToC missing trigger spawns
+
+SET @GUID := 88412;
+SET @NPC_TRIGGER1 := 34704; -- Val'kyr Twins Bullet Stalker Dark
+SET @NPC_TRIGGER2 := 34720; -- Val'kyr Twins Bullet Stalker Light
+
+UPDATE `creature_template` SET `flags_extra`=128 WHERE `entry` IN (@NPC_TRIGGER1,@NPC_TRIGGER2);
+DELETE FROM `creature` WHERE `guid` BETWEEN @GUID+0 AND @GUID+61;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`) VALUES
+(@GUID+0,@NPC_TRIGGER1,649,15,1,0,0,619.771,143.71,395.244,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+1,@NPC_TRIGGER1,649,15,1,0,0,515.352,115.349,395.288,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+2,@NPC_TRIGGER1,649,15,1,0,0,605.514,103.863,395.29,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+3,@NPC_TRIGGER1,649,15,1,0,0,615.137,156.997,395.28,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+4,@NPC_TRIGGER1,649,15,1,0,0,539.179,184.132,395.282,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+5,@NPC_TRIGGER1,649,15,1,0,0,547.76,184.634,395.289,2.93215,7200,0,0,1,0,0,0,0,0),
+(@GUID+6,@NPC_TRIGGER1,649,15,1,0,0,549.764,86.4444,395.266,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+7,@NPC_TRIGGER1,649,15,1,0,0,511.417,127.158,395.266,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+8,@NPC_TRIGGER1,649,15,1,0,0,597.38,183.672,395.28,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+9,@NPC_TRIGGER1,649,15,1,0,0,573.578,187.665,395.492,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+10,@NPC_TRIGGER1,649,15,1,0,0,620.465,134.66,395.233,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+11,@NPC_TRIGGER1,649,15,1,0,0,560.484,187.743,395.959,2.93215,7200,0,0,1,0,0,0,0,0),
+(@GUID+12,@NPC_TRIGGER1,649,15,1,0,0,577.299,186.854,395.289,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+13,@NPC_TRIGGER1,649,15,1,0,0,563.467,81.9323,395.288,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+14,@NPC_TRIGGER1,649,15,1,0,0,534.748,92.6424,395.289,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+15,@NPC_TRIGGER1,649,15,1,0,0,518.503,170.649,395.289,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+16,@NPC_TRIGGER1,649,15,1,0,0,514.566,159.918,395.287,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+17,@NPC_TRIGGER1,649,15,1,0,0,568.049,187.67,395.563,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+18,@NPC_TRIGGER1,649,15,1,0,0,522.955,102.127,395.29,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+19,@NPC_TRIGGER1,649,15,1,0,0,611.656,114.281,395.288,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+20,@NPC_TRIGGER1,649,15,1,0,0,616.432,126.418,395.264,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+21,@NPC_TRIGGER1,649,15,1,0,0,526.833,181.783,395.285,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+22,@NPC_TRIGGER1,649,15,1,0,0,578.722,87.4444,395.272,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+23,@NPC_TRIGGER1,649,15,1,0,0,509.743,149.005,395.253,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+24,@NPC_TRIGGER1,649,15,1,0,0,592.736,93.6667,395.289,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+25,@NPC_TRIGGER1,649,15,1,0,0,506.038,139.517,395.288,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+26,@NPC_TRIGGER1,649,15,1,0,0,608.116,171.731,395.289,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+27,@NPC_TRIGGER1,649,15,1,0,0,586.344,184.078,395.283,4.60767,7200,0,0,1,0,0,0,0,0),
+(@GUID+28,@NPC_TRIGGER1,649,15,1,0,0,554.818,187.568,395.288,2.93215,7200,0,0,1,0,0,0,0,0),
+(@GUID+29,@NPC_TRIGGER2,649,15,1,0,0,557.743,187.729,395.915,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+30,@NPC_TRIGGER2,649,15,1,0,0,544.094,184.648,395.286,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+31,@NPC_TRIGGER2,649,15,1,0,0,551.328,187.646,395.596,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+32,@NPC_TRIGGER2,649,15,1,0,0,615.137,150.818,395.269,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+33,@NPC_TRIGGER2,649,15,1,0,0,571.158,187.691,395.629,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+34,@NPC_TRIGGER2,649,15,1,0,0,606.686,106.731,395.289,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+35,@NPC_TRIGGER2,649,15,1,0,0,612.118,118.844,395.287,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+36,@NPC_TRIGGER2,649,15,1,0,0,546.057,88.7691,395.284,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+37,@NPC_TRIGGER2,649,15,1,0,0,517.722,169.069,395.289,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+38,@NPC_TRIGGER2,649,15,1,0,0,507.181,142.285,395.255,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+39,@NPC_TRIGGER2,649,15,1,0,0,515.399,159.75,395.287,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+40,@NPC_TRIGGER2,649,15,1,0,0,592.151,183.8,395.279,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+41,@NPC_TRIGGER2,649,15,1,0,0,510.759,127.333,395.263,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+42,@NPC_TRIGGER2,649,15,1,0,0,524.257,178.134,395.29,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+43,@NPC_TRIGGER2,649,15,1,0,0,570.779,86.2986,395.253,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+44,@NPC_TRIGGER2,649,15,1,0,0,588.675,93.0938,395.289,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+45,@NPC_TRIGGER2,649,15,1,0,0,603.528,175.476,395.289,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+46,@NPC_TRIGGER2,649,15,1,0,0,509.639,133.26,395.247,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+47,@NPC_TRIGGER2,649,15,1,0,0,618.965,139.174,395.288,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+48,@NPC_TRIGGER2,649,15,1,0,0,514.785,118.731,395.287,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+49,@NPC_TRIGGER2,649,15,1,0,0,581.243,184.062,395.287,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+50,@NPC_TRIGGER2,649,15,1,0,0,577.757,184.436,395.289,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+51,@NPC_TRIGGER2,649,15,1,0,0,580.486,89.691,395.287,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+52,@NPC_TRIGGER2,649,15,1,0,0,511.132,151.156,395.264,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+53,@NPC_TRIGGER2,649,15,1,0,0,615.401,130.816,395.263,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+54,@NPC_TRIGGER2,649,15,1,0,0,599.307,98.8003,395.29,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+55,@NPC_TRIGGER2,649,15,1,0,0,520.212,108.429,395.289,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+56,@NPC_TRIGGER2,649,15,1,0,0,610.983,164.696,395.288,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+57,@NPC_TRIGGER2,649,15,1,0,0,526.337,99.5556,395.29,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+58,@NPC_TRIGGER2,649,15,1,0,0,563.997,187.644,395.489,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+59,@NPC_TRIGGER2,649,15,1,0,0,555.695,86.0208,395.253,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+60,@NPC_TRIGGER2,649,15,1,0,0,535.924,184.207,395.279,0,7200,0,0,1,0,0,0,0,0),
+(@GUID+61,@NPC_TRIGGER2,649,15,1,0,0,538.024,92.441,395.289,0,7200,0,0,1,0,0,0,0,0);
diff --git a/sql/old/3.3.5a/2012_03_22_00_world_creature_template.sql b/sql/old/3.3.5a/2012_03_22_00_world_creature_template.sql
new file mode 100644
index 00000000000..e6c03ed589c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_22_00_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Flame Sphere should not be visible to players(only their visual)
+UPDATE `creature_template` SET `flags_extra`=128 WHERE `entry` IN (30106,31686,31687);
diff --git a/sql/old/3.3.5a/2012_03_22_01_world_conditions.sql b/sql/old/3.3.5a/2012_03_22_01_world_conditions.sql
new file mode 100644
index 00000000000..074328137a5
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_22_01_world_conditions.sql
@@ -0,0 +1,2 @@
+-- Manual: Heavy Frostweave Bandage should be lootable if you have at least 390 skills in First Aid
+UPDATE `conditions` SET `ConditionValue2`=390 WHERE `SourceTypeOrReferenceId`=1 AND `SourceEntry`=39152 AND `ConditionTypeOrReference`=7 AND `ConditionValue1`=129;
diff --git a/sql/old/3.3.5a/2012_03_23_00_world_ip2nation.sql b/sql/old/3.3.5a/2012_03_23_00_world_ip2nation.sql
new file mode 100644
index 00000000000..dadeaddf85a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_23_00_world_ip2nation.sql
@@ -0,0 +1,21 @@
+DROP TABLE IF EXISTS ip2nation;
+
+CREATE TABLE ip2nation (
+ ip int(11) unsigned NOT NULL default '0',
+ country char(2) NOT NULL default '',
+ KEY ip (ip)
+);
+
+DROP TABLE IF EXISTS ip2nationCountries;
+
+CREATE TABLE ip2nationCountries (
+ code varchar(4) NOT NULL default '',
+ iso_code_2 varchar(2) NOT NULL default '',
+ iso_code_3 varchar(3) default '',
+ iso_country varchar(255) NOT NULL default '',
+ country varchar(255) NOT NULL default '',
+ lat float NOT NULL default '0',
+ lon float NOT NULL default '0',
+ PRIMARY KEY (code),
+ KEY code (code)
+);
diff --git a/sql/old/3.3.5a/2012_03_24_00_world_misc.sql b/sql/old/3.3.5a/2012_03_24_00_world_misc.sql
new file mode 100644
index 00000000000..e6f6ce77307
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_24_00_world_misc.sql
@@ -0,0 +1,22 @@
+-- Beam Visual
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=60342;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,60342,0,0,31,0,3,29308,0,0,0,'','Beam Visual target Prince Taldaram');
+
+-- script texts for Prince Taldaram
+DELETE FROM `creature_text` WHERE `entry`=29308;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(29308,0,0,'The hum of magic energy in the air diminishes...',16,0,100,0,0,0,'prince taldaram SAY_1'),
+(29308,1,0,'Intruders! Who trespasses in the Old Kingdom?',14,0,100,0,0,0,'prince taldaram SAY_WARNING'),
+(29308,2,0,'I will feast on your remains.',14,0,100,0,0,14360,'prince taldaram SAY_AGGRO'),
+(29308,3,0,'',14,10,100,0,0,14365,'prince taldaram SAY_SLAY_0'),
+(29308,3,1,'I will drink no blood before it''s time.',14,0,100,0,0,14366,'prince taldaram SAY_SLAY_1'),
+(29308,3,2,'One final embrace.',14,0,100,0,0,14367,'prince taldaram SAY_SLAY_2'),
+(29308,4,0,'Still I hunger. Still... I... thirst.',14,0,100,0,0,14368,'prince taldaram SAY_DEATH'),
+(29308,5,0,'So... appetizing.',14,0,100,0,0,14363,'prince taldaram SAY_FEED1'),
+(29308,5,1,'Fresh, warm blood. It has been too long.',14,0,100,0,0,14364,'prince taldaram SAY_FEED2'),
+(29308,6,0,'Your heartbeat is... music to my ears.',14,0,100,0,0,14361,'prince taldaram SAY_VANISH1'),
+(29308,6,1,'I am nowhere... I am everywhere. I am the watcher, unseen.',14,0,100,0,0,14362,'prince taldaram SAY_VANISH2');
+
+-- cleanup
+DELETE FROM `script_texts` WHERE `npc_entry`=29308;
diff --git a/sql/old/3.3.5a/2012_03_24_01_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_03_24_01_world_creature_loot_template.sql
new file mode 100644
index 00000000000..078c48a47b7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_24_01_world_creature_loot_template.sql
@@ -0,0 +1,290 @@
+-- -----------------------------------
+-- -- Loot for The Siege of Ulduar --
+-- -----------------------------------
+
+-- Old Cleanups:
+DELETE FROM `reference_loot_template` WHERE `entry` IN ( 34116,34117,34118,34119,34120,34121,34157,34158,34159,34160,34161,34162);
+-- -------------------
+-- -- Set Variables --
+-- -------------------
+-- 10 man mode npcids
+SET @FlameLevi10 :=33113;
+SET @IgnisFM10 :=33118;
+SET @Razorscale10 :=33186;
+SET @XT002_10 :=33293;
+-- 25 man mode npcids (via procedure)
+call `sp_get_npc_diffentry`(@FlameLevi10,1,@FlameLevi25);
+call `sp_get_npc_diffentry`(@IgnisFM10,1,@IgnisFM25);
+call `sp_get_npc_diffentry`(@Razorscale10,1,@Razorscale25);
+call `sp_get_npc_diffentry`(@XT002_10,1,@XT002_25);
+
+SET @Emblem := 47241;
+SET @Orb := 45087;
+-- -------------------------------------
+-- -- Set Reference Loot Template ids --
+-- -------------------------------------
+
+SET @EmblemRef := 34349; -- First Free ID
+SET @OrbRef := @EmblemRef+1;
+SET @Flame10Ref := @EmblemRef+2;
+SET @Flame25Ref := @EmblemRef+3;
+SET @Ignis10Ref := @EmblemRef+4;
+SET @Ignis25Ref := @EmblemRef+5;
+SET @Razor10Ref := @EmblemRef+6;
+SET @Razor25Ref := @EmblemRef+7;
+SET @XT002_10Ref := @EmblemRef+8;
+SET @XT002_25Ref := @EmblemRef+9;
+-- Flame Levithian
+DELETE FROM `reference_loot_template` WHERE `entry` BETWEEN @EmblemRef AND @EmblemRef+9;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Emblem Ref
+(@EmblemRef,47241,0,1,1,1,1), -- Emblem of Triumph 1x
+-- OrbRef
+(@OrbRef,45087,0,1,1,1,1), -- Runed Orb 1x
+-- Flame Levithian 10man
+(@Flame10Ref,45286,0,1,1,1,1), -- Pyrite Infuser
+(@Flame10Ref,45287,0,1,1,1,1), -- Firesoul
+(@Flame10Ref,45288,0,1,1,1,1), -- Firestrider Chestguard
+(@Flame10Ref,45289,0,1,1,1,1), -- Lifespark Visage
+(@Flame10Ref,45291,0,1,1,1,1), -- Combustion Bracers
+(@Flame10Ref,45284,0,1,1,1,1), -- Kinetic Ripper
+(@Flame10Ref,45282,0,1,1,1,1), -- Ironsoul
+(@Flame10Ref,45285,0,1,1,1,1), -- Might of the Leviathan
+(@Flame10Ref,45292,0,1,1,1,1), -- Energy Siphon
+(@Flame10Ref,45283,0,1,1,1,1), -- Flamewatch Armguards
+-- Flame Levithian 25man
+(@Flame25Ref,45117,0,1,1,1,1), -- Constructors Handwraps
+(@Flame25Ref,45119,0,1,1,1,1), -- Embrace of the Leviathan
+(@Flame25Ref,45113,0,1,1,1,1), -- Glowing Ring of Reclamation
+(@Flame25Ref,45115,0,1,1,1,1), -- Leviathan Fueling Manual
+(@Flame25Ref,45108,0,1,1,1,1), -- Mechanists Bindings
+(@Flame25Ref,45106,0,1,1,1,1), -- Strenght of the Automaton
+(@Flame25Ref,45109,0,1,1,1,1), -- Gloves of the Fiery Behemoth
+(@Flame25Ref,45114,0,1,1,1,1), -- Steamcallers Totem
+(@Flame25Ref,45118,0,1,1,1,1), -- Steamworkers Goggles
+(@Flame25Ref,45116,0,1,1,1,1), -- Freya's Choker of Warding
+(@Flame25Ref,45111,0,1,1,1,1), -- Mimiron's Inferno Couplings
+(@Flame25Ref,45112,0,1,1,1,1), -- The Leviathan's Coil
+(@Flame25Ref,45107,0,1,1,1,1), -- Iron Riveted War Helm
+
+-- Ignis the Furnace Master 10man
+(@Ignis10Ref,45309,0,1,1,1,1), -- Rifle of the Platinum Guard
+(@Ignis10Ref,45310,0,1,1,1,1), -- Gauntlets of the Iron Furnace
+(@Ignis10Ref,45311,0,1,1,1,1), -- Relentless Edge
+(@Ignis10Ref,45312,0,1,1,1,1), -- Gloves of Smoldering Touch
+(@Ignis10Ref,45313,0,1,1,1,1), -- Furnace Stone
+(@Ignis10Ref,45314,0,1,1,1,1), -- Igniter Rod
+(@Ignis10Ref,45316,0,1,1,1,1), -- Armbraces of the Vibrant Flame
+(@Ignis10Ref,45317,0,1,1,1,1), -- Shawl of the Caretaker
+(@Ignis10Ref,45318,0,1,1,1,1), -- Drape of Fuming Anger
+(@Ignis10Ref,45321,0,1,1,1,1), -- Pauldrons of Tempered Will
+-- Ignis the Furnace Master 25man
+(@Ignis25Ref,45157,0,1,1,1,1), -- Cindershard Ring
+(@Ignis25Ref,45158,0,1,1,1,1), -- Heart of Iron
+(@Ignis25Ref,45161,0,1,1,1,1), -- Girdle of Embers
+(@Ignis25Ref,45162,0,1,1,1,1), -- Flamestalker Boots
+(@Ignis25Ref,45164,0,1,1,1,1), -- Helm of the Furnace Master
+(@Ignis25Ref,45165,0,1,1,1,1), -- Worldcarver
+(@Ignis25Ref,45166,0,1,1,1,1), -- Charred Saronite Greaves
+(@Ignis25Ref,45167,0,1,1,1,1), -- Lifeforge Breastplate
+(@Ignis25Ref,45168,0,1,1,1,1), -- Pyrelight Circle
+(@Ignis25Ref,45169,0,1,1,1,1), -- Totem of the Dancing Flame
+(@Ignis25Ref,45170,0,1,1,1,1), -- Scepter of Creation
+(@Ignis25Ref,45171,0,1,1,1,1), -- Intensity
+(@Ignis25Ref,45185,0,1,1,1,1), -- Flamewrought Cinch
+(@Ignis25Ref,45186,0,1,1,1,1), -- Soot-Covered Mantle
+(@Ignis25Ref,45187,0,1,1,1,1), -- Wristguards of the Firetender
+
+-- Razorscale 10man
+(@Razor10Ref,45298,0,1,1,1,1), -- RazoRazorcale Talon
+(@Razor10Ref,45299,0,1,1,1,1), -- Dragonsteel Faceplate
+(@Razor10Ref,45301,0,1,1,1,1), -- BraceRazor of the Smothering Inferno
+(@Razor10Ref,45302,0,1,1,1,1), -- Treads of the Invader
+(@Razor10Ref,45303,0,1,1,1,1), -- Band of Draconic Guile
+(@Razor10Ref,45304,0,1,1,1,1), -- Stormtempered Girdle
+(@Razor10Ref,45305,0,1,1,1,1), -- Breastplate of the Afterlife
+(@Razor10Ref,45306,0,1,1,1,1), -- Binding of the Dragon Matriarch
+(@Razor10Ref,45307,0,1,1,1,1), -- Ironscale Leggings
+(@Razor10Ref,45308,0,1,1,1,1), -- Eye of the Broodmother
+-- Razorscale 25man
+(@Razor25Ref,45137,0,1,1,1,1), -- Veranus' Bane
+(@Razor25Ref,45138,0,1,1,1,1), -- Drape of the Drakerider
+(@Razor25Ref,45139,0,1,1,1,1), -- Dragonslayer's Brace
+(@Razor25Ref,45140,0,1,1,1,1), -- RazoRazorcale Shoulderguards
+(@Razor25Ref,45141,0,1,1,1,1), -- Proto-hide Leggings
+(@Razor25Ref,45142,0,1,1,1,1), -- RemoRazore
+(@Razor25Ref,45143,0,1,1,1,1), -- Saronite Mesh Legguards
+(@Razor25Ref,45144,0,1,1,1,1), -- Sigil of Deflection
+(@Razor25Ref,45146,0,1,1,1,1), -- Shackles of the Odalisque
+(@Razor25Ref,45147,0,1,1,1,1), -- Guiding Star
+(@Razor25Ref,45148,0,1,1,1,1), -- Living Flame
+(@Razor25Ref,45149,0,1,1,1,1), -- BraceRazor of the Broodmother
+(@Razor25Ref,45150,0,1,1,1,1), -- Collar of the Wyrmhunter
+(@Razor25Ref,45151,0,1,1,1,1), -- Belt of the Fallen Wyrm
+(@Razor25Ref,45510,0,1,1,1,1), -- Libram of Discord
+
+-- XT-002 Deconstructor 10man
+(@XT002_10Ref,45675,0,1,1,1,1), -- Power Enchancing Loop
+(@XT002_10Ref,45676,0,1,1,1,1), -- Chestplate of Vicious Potency
+(@XT002_10Ref,45677,0,1,1,1,1), -- Treacherous shoulderpads
+(@XT002_10Ref,45679,0,1,1,1,1), -- Gloves of Taut grip
+(@XT002_10Ref,45680,0,1,1,1,1), -- Armbands of the construct
+(@XT002_10Ref,45682,0,1,1,1,1), -- Pulsing spellshield
+(@XT002_10Ref,45685,0,1,1,1,1), -- Plasma Foil
+(@XT002_10Ref,45686,0,1,1,1,1), -- Vest of the glowing Cresent
+(@XT002_10Ref,45687,0,1,1,1,1), -- Helm of Veiled Energies
+(@XT002_10Ref,45694,0,1,1,1,1), -- Conductive cord
+(@XT002_10Ref,45867,0,2,2,1,1), -- Breasktplate of the Stoneshaper
+(@XT002_10Ref,45868,0,2,2,1,1), -- Aesir's Edge
+(@XT002_10Ref,45869,0,2,2,1,1), -- Fluxing Energy Coils
+(@XT002_10Ref,45870,0,2,2,1,1), -- Magnetized Projectile Emitter
+(@XT002_10Ref,45871,0,2,2,1,1), -- Seal of Ulduar
+-- XT-002 Deconstructor 25man
+(@XT002_25Ref,45254,0,1,1,1,1), -- Sigil of the Vengeful Heart
+(@XT002_25Ref,45251,0,1,1,1,1), -- Shoulderplates of the Deconstructor
+(@XT002_25Ref,45247,0,1,1,1,1), -- Signet of the Earthshaker
+(@XT002_25Ref,45256,0,1,1,1,1), -- Twisted Visage
+(@XT002_25Ref,45250,0,1,1,1,1), -- Crazed Construct Ring
+(@XT002_25Ref,45257,0,1,1,1,1), -- Quartz Crystal Wand
+(@XT002_25Ref,45260,0,1,1,1,1), -- Boots of Hasty Revival
+(@XT002_25Ref,45252,0,1,1,1,1), -- Horologist's Wristguards
+(@XT002_25Ref,45253,0,1,1,1,1), -- Mantle of Wavering Calm
+(@XT002_25Ref,45258,0,1,1,1,1), -- Sandals of Rash Temperament
+(@XT002_25Ref,45249,0,1,1,1,1), -- Brass-lined Boots
+(@XT002_25Ref,45246,0,1,1,1,1), -- Golem-Shard Sticker
+(@XT002_25Ref,45248,0,1,1,1,1), -- Clockwork Legplates
+(@XT002_25Ref,45259,0,1,1,1,1), -- Quartz-studded Harness
+(@XT002_25Ref,45255,0,1,1,1,1); -- Thunderfall Totem
+-- -----------------------------------------------------------------------------------------------
+-- -- END OF REFERENCES -- -- END OF REFERENCES -- -- END OF REFERENCES -- -- END OF REFERENCES --
+-- -- END OF REFERENCES -- -- END OF REFERENCES -- -- END OF REFERENCES -- -- END OF REFERENCES --
+-- -- END OF REFERENCES -- -- END OF REFERENCES -- -- END OF REFERENCES -- -- END OF REFERENCES --
+-- -----------------------------------------------------------------------------------------------
+
+-- Flame Levithian 10Man:
+-- NORMAL MODE : 2x [Normal Loot Item] + 1x [Emblem of Valor]
+-- ONE TOWER : 2x [Normal Loot Item] + 2x [Emblem of Conquest] + CHANCE TO [Recipe]
+-- TWO TOWERS : 2x [Normal Loot Item] + 2x [Emblem of Conquest] + 1x [Runed Orb] + CHANCE TO [Recipe]
+-- THREE TOWERS: 2x [Normal Loot Item] + 3x [Emblem of Conquest] + 1x [Runed Orb] + CHANCE TO [Recipe] + 1x [Recipe]
+-- FOUR TOWERS : 2x [Normal Loot Item] + 3x [Emblem of Conquest] + 1x [Runed Orb] + CHANCE TO [Recipe] + 1x [Recipe] + 1x [Hard Loot Item]
+-- Flame Levithian 25 man
+-- NORMAL MODE : 3x [Normal Loot Item] + 1x [Emblem of Conquest] + CHANCE TO [Runed Orb] + CHANCE TO [Recipe]
+-- ONE TOWER : 3x [Normal Loot Item] + 2x [Emblem of Conquest] + CHANCE TO [Runed Orb] + CHANCE TO [Recipe]
+-- TWO TOWERS : 3x [Normal Loot Item] + 2x [Emblem of Conquest] + CHANCE TO [Runed Orb] + CHANCE TO [Recipe] + 2x [Runed Orb]
+-- THREE TOWERS: 3x [Normal Loot Item] + 3x [Emblem of Conquest] + CHANCE TO [Runed Orb] + CHANCE TO [Recipe] + 2x [Runed Orb] + [Recipe]
+-- FOUR TOWERS : 3x [Normal Loot Item] + 3x [Emblem of Conquest] + CHANCE TO [Runed Orb] + CHANCE TO [Recipe] + 2x [Runed Orb] + [Recipe] + 1x [Hard Loot Item]
+
+DELETE FROM `creature_loot_template` WHERE `entry` IN (@FlameLevi10,@FlameLevi25,@IgnisFM10,@IgnisFM25,@Razorscale10,@Razorscale25,@XT002_10,@XT002_25);
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- ---------------------------
+-- -- Flame Levithian 10man --
+-- ---------------------------
+(@FlameLevi10,1,100,1,0,-@EmblemRef,1), -- 1x emblem
+(@FlameLevi10,2,100,1,0,-@Flame10Ref,2), -- 2 from 10man reference
+-- Hardmode: 1 tower left
+(@FlameLevi10,3,100,2,0,-@EmblemRef,2), -- 2x emblem
+(@FlameLevi10,4,100,2,0,-@Flame10Ref,2), -- 2 from 10man reference
+-- Hardmode: 2 towers left
+(@FlameLevi10,5,100,4,0,-@EmblemRef,2), -- 2x emblem
+(@FlameLevi10,6,100,4,0,-@Flame10Ref,2), -- 2 from 10man reference
+-- Hardmode: 3 towers left
+(@FlameLevi10,7,100,8,0,-@EmblemRef,3), -- 3x emblem
+(@FlameLevi10,8,100,8,0,-@Flame10Ref,2), -- 2 from 10man reference
+-- Hardmode: 4 towers left
+(@FlameLevi10,9,100,16,0,-@EmblemRef,3), -- 3x emblem
+(@FlameLevi10,10,100,16,0,-@Flame10Ref,2), -- 2 from 10man reference
+-- one from hardmodeloot:
+(@FlameLevi10,45296,0,16,1,1,1), -- Twirling Blades
+(@FlameLevi10,45293,0,16,1,1,1), -- Handguards of Potent Cures
+(@FlameLevi10,45295,0,16,1,1,1), -- Gilded Steel Legplates
+(@FlameLevi10,45300,0,16,1,1,1), -- Mantle of Fiery Vengeance
+(@FlameLevi10,45297,0,16,1,1,1), -- Shimmering Seal
+-- Shared Loot over the modes (masked)
+-- Non-Normal (Modes 2|4|8|16)
+(@FlameLevi10,11,5,30,0,-34154,1), -- 1 from recepies (chanced)
+-- More then 1 tower up (Modes 4|8|16)
+(@FlameLevi10,@Orb,100,28,0,1,3), -- Runed Orb (1-3)
+-- More then 2 towers up (Modes 8|16)
+(@FlameLevi10,12,100,24,0,-34154,1), -- 1 from recepies
+-- ---------------------------
+-- -- Flame Levithian 25man --
+-- ---------------------------
+(@FlameLevi25,1,100,1,0,-@EmblemRef,1), -- 1x emblem
+(@FlameLevi25,2,100,1,0,-@Flame25Ref,3), -- 3 from 25man reference
+-- Hardmode: 1 tower left
+(@FlameLevi25,3,100,2,0,-@EmblemRef,2), -- 2x emblem
+(@FlameLevi25,4,100,2,0,-@Flame25Ref,3), -- 3 from 25man reference
+-- Hardmode: 2 towers left
+(@FlameLevi25,5,100,4,0,-@EmblemRef,2), -- 2x emblem
+(@FlameLevi25,6,100,4,0,-@Flame25Ref,3), -- 3 from 25man reference
+-- Hardmode: 3 towers left
+(@FlameLevi25,7,100,8,0,-@EmblemRef,3), -- 3x emblem
+(@FlameLevi25,8,100,8,0,-@Flame25Ref,3), -- 3 from 25man reference
+-- Hardmode: 4 towers left
+(@FlameLevi25,9,100,16,0,-@EmblemRef,3), -- 3x emblem
+(@FlameLevi25,10,100,16,0,-@Flame25Ref,3), -- 3 from 25man reference
+-- one from hardmodeloot:
+(@FlameLevi25,45132,0,16,1,1,1), -- Golden Saronite Dragon
+(@FlameLevi25,45133,0,16,1,1,1), -- Pendant of Fiery Havoc
+(@FlameLevi25,45134,0,16,1,1,1), -- Plated Leggings of Ruination
+(@FlameLevi25,45135,0,16,1,1,1), -- Boots of Fiery Resolution
+(@FlameLevi25,45136,0,16,1,1,1), -- Shoulderpads of Dormant Energies
+(@FlameLevi25,45086,0,16,1,1,1), -- Rising Sun
+(@FlameLevi25,45110,0,16,1,1,1), -- Titanguard
+-- Shared Loot over the modes (masked)
+-- All Modes (1|2|4|8|16):
+(@FlameLevi25,11,5,31,0,-@OrbRef,1), -- Runed Orb (1x Chanced)
+(@FlameLevi25,45038,8,1,0,1,1), -- Fragment of Val'anyr (quest only!?)
+(@FlameLevi25,12,5,31,0,-34154,1), -- 1 from recepies (chanced)
+-- More then 1 tower up (Modes 4|8|16)
+(@FlameLevi25,13,100,28,0,-@OrbRef,2), -- Runed Orb (2x garanteed)
+-- More then 2 towers up (Modes 8|16)
+(@FlameLevi25,14,100,24,0,-34154,1), -- 1 from recepies
+-- ------------------------------
+-- -- IGNIS THE FURNACE MASTER --
+-- ------------------------------
+-- Ignis the Furnace Master 10man
+(@IgnisFM10,1,100,1,0,-@Ignis10Ref,2), -- 2 items from Ref loot
+(@IgnisFM10,@Emblem,100,1,0,1,1), -- 1 Emblem
+-- Ignis the Furnace Master 25man
+(@IgnisFM25,1,100,1,0,-@Ignis25Ref,3), -- 3 items from Ref loot
+(@IgnisFM25,@Emblem,100,1,0,2,2), -- 2 Emblem
+(@IgnisFM25,3,10,1,0,-34154,1), -- 1 from recepies
+(@IgnisFM25,45038,8,1,0,1,1), -- Fragment of Val'anyr (quest only!?)
+(@IgnisFM25,45087,75,1,0,1,1), -- Runed Orb
+-- ----------------
+-- -- RAZORSCALE --
+-- ----------------
+-- Razorscale 10man
+(@Razorscale10,1,100,1,0,-@Razor10Ref ,2), -- 2 items from ref loot
+(@Razorscale10,@Emblem,100,1,0,1,1), -- Emblem of Triumph
+-- Razorscale 25man
+(@Razorscale25,1,100,1,0,-@Razor25Ref,3), -- 3 items from Ref loot
+(@Razorscale25,@Emblem,100,1,0,1,2), -- 2 Emblems
+(@Razorscale25,2,10,1,0,-34154,1), -- 1 from recepies
+(@Razorscale25,45038,8,1,0,1,1), -- Fragment of Val'anyr (quest only!?)
+(@Razorscale25,45087,75,1,0,1,1), -- Runed Orb
+-- -------------------------
+-- -- XT002 DECONSTRUCTOR --
+-- -------------------------
+-- X002 Deconstructor 10man (and hardmode)
+(@XT002_10,1,100,3,0,-@XT002_10Ref,2), -- 2items from Ref loot
+(@XT002_10,@Emblem,100,3,0,1,1), -- 1x Emblem
+-- Hard mode 10man only:
+(@XT002_10,45442,0,2,1,1,1), -- Sorthalis,Hammer of the Watchers
+(@XT002_10,45443,0,2,1,1,1), -- Charm of Meticulous Timing
+(@XT002_10,45444,0,2,1,1,1), -- Gloves of the Steady Hand
+(@XT002_10,45445,0,2,1,1,1), -- Breastplate of the Devoted
+(@XT002_10,45446,0,2,1,1,1), -- Grasps of Reason
+-- X002 Deconstructor 25man (and hardmode)
+(@XT002_25,1,100,3,0,-@XT002_25Ref,3), -- 3 items from Ref loot
+(@XT002_25,2,10,3,0,-34154,1), -- 1 from recepies
+(@XT002_25,45038,8,3,0,1,1), -- Fragment of Val'anyr (quest only!?)
+(@XT002_25,45087,75,3,0,1,1), -- Runed Orb
+(@XT002_25,47241,100,3,0,1,2), -- 2 Emblem of Triumph
+-- Hard Mode 25man only:
+(@XT002_25,45442,0,2,1,1,1), -- Sorthalis,Hammer of the Watchers
+(@XT002_25,45443,0,2,1,1,1), -- Charm of Meticulous Timing
+(@XT002_25,45444,0,2,1,1,1), -- Gloves of the Steady Hand
+(@XT002_25,45445,0,2,1,1,1), -- Breastplate of the Devoted
+(@XT002_25,45446,0,2,1,1,1); -- Grasps of Reason
diff --git a/sql/old/3.3.5a/2012_03_24_02_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_03_24_02_world_creature_loot_template.sql
new file mode 100644
index 00000000000..cdac3335aed
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_24_02_world_creature_loot_template.sql
@@ -0,0 +1,136 @@
+-- (re) Add reference 26042
+SET @NEC := 26042; -- Northrend Emotion Cooking Recipe Reference
+DELETE FROM `reference_loot_template` WHERE `entry`=@NEC;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(@NEC,43507,0,1,1,1,1), -- Recipe: Tasty cupcake
+(@NEC,43508,0,1,1,1,1), -- Recipe: Last Week's Mammoth
+(@NEC,43509,0,1,1,1,1), -- Recipe: Bad Clams
+(@NEC,43510,0,1,1,1,1); -- Recipe: Haunted Herring
+
+DELETE FROM `creature_loot_template` WHERE `entry` IN (2436,5928,5936,12239,12240,12241,12242,12243,14527,14529,14531,16506,16836,17307,21166,23809,23954,23963,23964,23983,24175,25234,28027,28113,28138,28494,29554,30177,30954,31779,40419);
+UPDATE `creature_template`SET `lootid`=entry WHERE `entry` IN (2436,5928,5936,12239,12240,12241,12242,12243,14527,14529,14531,16506,16836,21166,23809,23963,23964,23983,25234,28027,28138,28494,29554,30954,31779,40419);
+UPDATE `creature_template` SET `lootid`=0 WHERE `entry` IN (17307,23954,24175,28113,30177);
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Farmer Kent (friendly?)
+(2436,3692,-100,1,0,1,1), -- Hilsbrad Human Skull
+-- Sorrow Wing
+(5928,5808,-50,1,0,1,1), -- Pridewing Venom Sac
+(5928,5137,80,1,0,1,1), -- Bright Eyeball
+(5928,5136,10,1,0,1,1), -- Torn Furry Ear
+(5928,1,100,1,0,-@NEC,1), -- Random world green drop ilvl 25-30
+-- Orca
+(5936,26000,3,1,1,-26000,1), -- Northrend World Grey Reference #1
+(5936,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(5936,26003,1,1,1,-26003,1), -- Northrend World Green Reference #1
+(5936,26004,1,1,1,-26004,1), -- Northrend World Green Reference #2
+(5936,26005,1,1,1,-26005,1), -- Northrend World Green Reference #3
+(5936,26006,1,1,1,-26006,1), -- Northrend World Green Reference #4
+(5936,26017,0.5,1,1,-26017,1), -- Northrend World Blue Reference #1
+(5936,26018,0.5,1,1,-26018,1), -- Northrend World Blue Reference #2
+(5936,26019,0.5,1,1,-26019,1), -- Northrend World Blue Reference #3
+(5936,26020,0.5,1,1,-26020,1), -- Northrend World Blue Reference #4
+-- Add Theradric Crystal Carving (17684) to the following creatures
+(12239,17684,-25,1,0,1,1), -- Spirit of Gelk
+(12240,17684,-25,1,0,1,1), -- Spirit of Kolk
+(12241,17684,-25,1,0,1,1), -- Spirit of Magra
+(12242,17684,-25,1,0,1,1), -- Spirit of Maraudos
+(12243,17684,-25,1,0,1,1), -- Spirit of Veng
+(14527,18952,-100,1,0,1,1), -- Simone the Inconspicuous - Simone's Head
+(14529,18953,-100,1,0,1,1), -- Franklin the Friendly - Klinfran's Head
+(14531,18955,-100,1,0,1,1), -- Artorius the Amiable - Artorius's Head
+(16506,22708,-100,1,0,1,1), -- Naxxramas Worshipper - Fate of Ramaladni
+(16836,23460,-100,1,0,1,1), -- Escaped Dreghood - Broken Blood Sample
+(21166,30451,-15,1,0,1,1), -- Illidari Dreadlord - Lohn'goron, Bow of the Torn-heart
+-- Vengeance Landing Cannoneer
+(23809,26000,3,1,1,-26000,1), -- Northrend World Grey Reference #1
+(23809,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(23809,26005,1,1,1,-26005,1), -- Northrend World Green Reference #3
+-- Sergeant Lorric
+(23963,26000,3,1,1,-26000,1), -- Northrend World Grey Reference #1
+(23963,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(23963,26003,1,1,1,-26003,1), -- Northrend World Green Reference #1
+(23963,26004,1,1,1,-26004,1), -- Northrend World Green Reference #2
+(23963,26017,0.5,1,1,-26017,1), -- Northrend World Blue Reference #1
+(23963,26018,0.5,1,1,-26018,1), -- Northrend World Blue Reference #2
+(23963,26044,2,1,0,-@NEC,1), -- Northrend Emotion Cooking Recipes
+-- Lieutenant Celeyne
+(23964,26000,3,1,1,-26000,1), -- Northrend World Grey Reference #1
+(23964,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(23964,26003,1,1,1,-26003,1), -- Northrend World Green Reference #1
+(23964,26004,1,1,1,-26004,1), -- Northrend World Green Reference #2
+(23964,26017,0.5,1,1,-26017,1), -- Northrend World Blue Reference #1
+(23964,26018,0.5,1,1,-26018,1), -- Northrend World Blue Reference #2
+(23964,26044,2,1,0,-@NEC,1), -- Northrend Emotion Cooking Recipes
+-- North Fleet Marine
+(23983,26000,3,1,1,-26000,1), -- Northrend World Grey Reference #1
+(23983,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(23983,26003,1,1,1,-26003,1), -- Northrend World Green Reference #1
+(23983,26004,1,1,1,-26004,1), -- Northrend World Green Reference #2
+(23983,26017,0.5,1,1,-26017,1), -- Northrend World Blue Reference #1
+(23983,26018,0.5,1,1,-26018,1), -- Northrend World Blue Reference #2
+(23983,26044,2,1,0,-@NEC,1), -- Northrend Emotion Cooking Recipes
+-- Stormfleet Deckhand
+(25234,26000,3,1,1,-26000,1), -- Northrend World Grey Reference #1
+(25234,26003,1,1,1,-26003,1), -- Northrend World Green Reference #1
+-- High-Oracle Soo-say
+(28027,17058,50,1,0,1,1), -- Fish Oil
+(28027,17057,30,1,0,1,1), -- Shiny Fish Scales
+(28027,33470,15,1,0,2,4), -- Frostweave Cloth
+(28027,35951,10,1,0,1,3), -- Poached Emperor Salmon
+(28027,38642,-1,1,0,1,1), -- Golden Engagement Ring
+-- Elder Harkek
+(28138,33470,40,1,0,2,4), -- Frostweave Cloth
+(28138,33447,4,1,0,1,1), -- Runic Healing Potion
+(28138,38642,-1,1,0,1,1), -- Golden Engagement Ring
+-- Kutube'sa
+(28494,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(28494,26002,3,1,1,-26002,1), -- Northrend World Grey Reference #3
+(28494,26010,1,1,1,-26010,1), -- Northrend World Green Reference #4
+(28494,26011,1,1,1,-26011,1), -- Northrend World Green Reference #5
+(28494,26012,1,1,1,-26012,1), -- Northrend World Green Reference #6
+(28494,26023,0.5,1,1,-26023,1), -- Northrend World Blue Reference #3
+(28494,26025,0.5,1,1,-26025,1), -- Northrend World Blue Reference #4
+(28494,26026,0.5,1,1,-26026,1), -- Northrend World Blue Reference #5
+(28494,26044,2,1,0,-@NEC,1), -- Northrend Emotion Cooking Recipes
+(28494,39152,35,1,0,1,1), -- Manual: Heavy Frostweave Bandage
+(28494,43297,1,1,0,1,1), -- Damaged Necklace
+-- Snowblind Devotee
+(29554,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(29554,26002,3,1,1,-26002,1), -- Northrend World Grey Reference #3
+(29554,26009,1,1,1,-26009,1), -- Northrend World Green Reference #3
+(29554,26010,1,1,1,-26010,1), -- Northrend World Green Reference #4
+(29554,26011,1,1,1,-26011,1), -- Northrend World Green Reference #5
+(29554,26012,1,1,1,-26012,1), -- Northrend World Green Reference #6
+(29554,26013,1,1,1,-26013,1), -- Northrend World Green Reference #7
+(29554,26023,0.5,1,1,-26023,1), -- Northrend World Blue Reference #3
+(29554,26024,0.5,1,1,-26024,1), -- Northrend World Blue Reference #4
+(29554,26025,0.5,1,1,-26025,1), -- Northrend World Blue Reference #5
+(29554,26026,0.5,1,1,-26026,1), -- Northrend World Blue Reference #6
+(29554,26044,2,1,0,-@NEC,1), -- Northrend Emotion Cooking Recipes
+(29554,39152,35,1,0,1,1), -- Manual: Heavy Frostweave Bandage
+(29554,43297,1,1,0,1,1), -- Damaged Necklace
+-- Rokir
+(30954,26001,6,1,1,-26001,1), -- Northrend World Grey Reference #2
+(30954,26002,6,1,1,-26002,1), -- Northrend World Grey Reference #3
+(30954,26014,2,1,1,-26014,1), -- Northrend World Green Reference #8
+(30954,26015,2,1,1,-26015,1), -- Northrend World Green Reference #9
+-- Skeletal Archmage
+(31779,26001,3,1,1,-26001,1), -- Northrend World Grey Reference #2
+(31779,26002,3,1,1,-26002,1), -- Northrend World Grey Reference #3
+(31779,26013,1,1,1,-26013,1), -- Northrend World Green Reference #7
+(31779,26014,1,1,1,-26014,1), -- Northrend World Green Reference #8
+(31779,26015,1,1,1,-26015,1), -- Northrend World Green Reference #9
+(31779,26028,0.5,1,1,-26028,1), -- Northrend World Blue Reference #8
+(31779,39152,50,1,0,1,1), -- Manual: Heavy Frostweave Bandage
+(31779,43297,1,1,0,1,1), -- Damaged Necklace
+-- Charscale Assaulter
+(40419,26001,6,1,1,-26001,1), -- Northrend World Grey Reference #2
+(40419,26002,6,1,1,-26002,1), -- Northrend World Grey Reference #3
+(40419,26015,2,1,1,-26015,1), -- Northrend World Green Reference #9
+(40419,26016,2,1,1,-26016,1); -- Northrend World Green Reference #10
+-- conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 1 AND `SourceGroup` IN (28494,29554,31779);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`Comment`) VALUES
+(1,28494,39152,7,129,390,'Manual: Heavy Frostweave Bandage will drop only if the player has first aid at 390'),
+(1,29554,39152,7,129,390,'Manual: Heavy Frostweave Bandage will drop only if the player has first aid at 390'),
+(1,31779,39152,7,129,390,'Manual: Heavy Frostweave Bandage will drop only if the player has first aid at 390');
diff --git a/sql/old/3.3.5a/2012_03_25_00_auth_misc.sql b/sql/old/3.3.5a/2012_03_25_00_auth_misc.sql
new file mode 100644
index 00000000000..f34882af8f6
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_25_00_auth_misc.sql
@@ -0,0 +1,8 @@
+ALTER TABLE `account_banned`
+ CHANGE `bandate` `bandate` INT(10) UNSIGNED DEFAULT 0 NOT NULL,
+ CHANGE `unbandate` `unbandate` INT(10) UNSIGNED DEFAULT 0 NOT NULL;
+
+ALTER TABLE `ip_banned`
+ CHANGE `ip` `ip` VARCHAR(15) CHARSET utf8 COLLATE utf8_general_ci DEFAULT '127.0.0.1' NOT NULL,
+ CHANGE `bandate` `bandate` INT(10) UNSIGNED NOT NULL,
+ CHANGE `unbandate` `unbandate` INT(10) UNSIGNED NOT NULL;
diff --git a/sql/old/3.3.5a/2012_03_25_00_world_game_event.sql b/sql/old/3.3.5a/2012_03_25_00_world_game_event.sql
new file mode 100644
index 00000000000..82dfaa3f494
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_25_00_world_game_event.sql
@@ -0,0 +1,4 @@
+-- darkmoon faerie resync, again
+UPDATE `game_event` SET `start_time`='2012-04-01 00:01:00' WHERE `eventEntry`=5;
+UPDATE `game_event` SET `start_time`='2012-05-06 00:01:00' WHERE `eventEntry`=3;
+UPDATE `game_event` SET `start_time`='2012-06-03 00:01:00' WHERE `eventEntry`=4;
diff --git a/sql/old/3.3.5a/2012_03_26_00_auth_realmlist.sql b/sql/old/3.3.5a/2012_03_26_00_auth_realmlist.sql
new file mode 100644
index 00000000000..0a570a31773
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_26_00_auth_realmlist.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `realmlist`
+ CHANGE `color` `flag` tinyint(3) unsigned NOT NULL DEFAULT '2';
diff --git a/sql/old/3.3.5a/2012_03_26_00_world_creature_template.sql b/sql/old/3.3.5a/2012_03_26_00_world_creature_template.sql
new file mode 100644
index 00000000000..f60849476bd
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_26_00_world_creature_template.sql
@@ -0,0 +1,73 @@
+UPDATE `creature_template` SET `HoverHeight`=10.8, `VehicleId`=232 WHERE `entry`=30393;
+UPDATE `creature_template` SET `HoverHeight`=10.8, `VehicleId`=237 WHERE `entry`=30461;
+UPDATE `creature_template` SET `HoverHeight`=10 WHERE `entry`=27530;
+UPDATE `creature_template` SET `HoverHeight`=10 WHERE `entry`=26277;
+UPDATE `creature_template` SET `HoverHeight`=10 WHERE `entry`=26276;
+UPDATE `creature_template` SET `HoverHeight`=1.2 WHERE `entry`=31070;
+UPDATE `creature_template` SET `HoverHeight`=12 WHERE `entry`=37126;
+UPDATE `creature_template` SET `HoverHeight`=15 WHERE `entry`=27608;
+UPDATE `creature_template` SET `HoverHeight`=15 WHERE `entry`=27608;
+UPDATE `creature_template` SET `HoverHeight`=1.6 WHERE `entry`=38392;
+UPDATE `creature_template` SET `HoverHeight`=2.25 WHERE `entry`=30272;
+UPDATE `creature_template` SET `HoverHeight`=2.58, `Scale`=1.72 WHERE `entry`=26607;
+UPDATE `creature_template` SET `HoverHeight`=25 WHERE `entry`=37755;
+UPDATE `creature_template` SET `HoverHeight`=26 WHERE `entry`=29790;
+UPDATE `creature_template` SET `HoverHeight`=2.7 WHERE `entry`=25451;
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry`=29048;
+UPDATE `creature_template` SET `HoverHeight`=2, `VehicleId`=234 WHERE `entry`=30228;
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry`=25445;
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry`=26761;
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry`=26761;
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry`=25721;
+UPDATE `creature_template` SET `HoverHeight`=35 WHERE `entry`=27789;
+UPDATE `creature_template` SET `HoverHeight`=3 WHERE `entry`=34567;
+UPDATE `creature_template` SET `HoverHeight`=3 WHERE `entry`=26668;
+UPDATE `creature_template` SET `HoverHeight`=3, `VehicleId`=390 WHERE `entry`=34120;
+UPDATE `creature_template` SET `HoverHeight`=3, `VehicleId`=108 WHERE `entry`=24083;
+UPDATE `creature_template` SET `HoverHeight`=3, `VehicleId`=270 WHERE `entry`=31137;
+UPDATE `creature_template` SET `HoverHeight`=4 WHERE `entry`=24272;
+UPDATE `creature_template` SET `HoverHeight`=4 WHERE `entry`=37098;
+UPDATE `creature_template` SET `HoverHeight`=4 WHERE `entry`=28534;
+UPDATE `creature_template` SET `HoverHeight`=4 WHERE `entry`=28511;
+UPDATE `creature_template` SET `HoverHeight`=5.85 WHERE `entry`=26736;
+UPDATE `creature_template` SET `HoverHeight`=5.85 WHERE `entry`=26736;
+UPDATE `creature_template` SET `HoverHeight`=5.85 WHERE `entry`=32534;
+UPDATE `creature_template` SET `HoverHeight`=5, `VehicleId`=348 WHERE `entry`=33214;
+UPDATE `creature_template` SET `HoverHeight`=5 WHERE `entry`=27693;
+UPDATE `creature_template` SET `HoverHeight`=5 WHERE `entry`=34203;
+UPDATE `creature_template` SET `HoverHeight`=6.25 WHERE `entry`=40083;
+UPDATE `creature_template` SET `HoverHeight`=6.25 WHERE `entry`=40100;
+UPDATE `creature_template` SET `HoverHeight`=6 WHERE `entry`=34496;
+UPDATE `creature_template` SET `HoverHeight`=6 WHERE `entry`=34496;
+UPDATE `creature_template` SET `HoverHeight`=6 WHERE `entry`=34497;
+UPDATE `creature_template` SET `HoverHeight`=7.5 WHERE `entry`=26933;
+UPDATE `creature_template` SET `HoverHeight`=8.4, `VehicleId`=232 WHERE `entry`=30420;
+UPDATE `creature_template` SET `HoverHeight`=8 WHERE `entry`=33186;
+UPDATE `creature_template` SET `HoverHeight`=9 WHERE `entry`=26933;
+UPDATE `creature_template` SET `HoverHeight`=9 WHERE `entry`=37528;
+UPDATE `creature_template` SET `HoverHeight`=9 WHERE `entry`=37230;
+UPDATE `creature_template` SET `HoverHeight`=9, `VehicleId`=375 WHERE `entry`=33687;
+UPDATE `creature_template` SET `HoverHeight`=9, `VehicleId`=535 WHERE `entry`=36661;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=10.8, `VehicleId`=232 WHERE `entry`=30393;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=10 WHERE `entry`=27608;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=10 WHERE `entry`=27608;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=15 WHERE `entry`=32630;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=1.6 WHERE `entry`=38391;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=2.25, `VehicleId`=247 WHERE `entry`=30564;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=2.25 WHERE `entry`=30272;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=2 WHERE `entry`=25721;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=2 WHERE `entry`=29570;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=2 WHERE `entry`=26761;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=3.12, `Scale`=2.08 WHERE `entry`=26607;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=3 WHERE `entry`=26668;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=3, `VehicleId`=108 WHERE `entry`=24083;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=4 WHERE `entry`=37098;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=4 WHERE `entry`=30945;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=5.85 WHERE `entry`=26736;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=5.85 WHERE `entry`=26736;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=5, `VehicleId`=276 WHERE `entry`=31432;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=6 WHERE `entry`=30501;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=7.5 WHERE `entry`=26933;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=8.4, `VehicleId`=232 WHERE `entry`=30420;
+UPDATE `creature_template` SET `InhabitType`=0x4, `HoverHeight`=9 WHERE `entry`=26933;
+
diff --git a/sql/old/3.3.5a/2012_03_26_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_03_26_01_world_spell_script_names.sql
new file mode 100644
index 00000000000..0a5c90f798f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_26_01_world_spell_script_names.sql
@@ -0,0 +1,4 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (34477, 35079);
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(34477,'spell_hun_misdirection'),
+(35079,'spell_hun_misdirection_proc');
diff --git a/sql/old/3.3.5a/2012_03_27_00_world_misc.sql b/sql/old/3.3.5a/2012_03_27_00_world_misc.sql
new file mode 100644
index 00000000000..132c91b81d7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_27_00_world_misc.sql
@@ -0,0 +1,49 @@
+ALTER TABLE `battleground_template` CHANGE `Weight` `Weight` tinyint(3) unsigned NOT NULL DEFAULT '1';
+ALTER TABLE `conditions` CHANGE `SourceId` `SourceId` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `creature` CHANGE `equipment_id` `equipment_id` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_addon` CHANGE `path_id` `path_id` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_ai_scripts` CHANGE `id` `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier';
+ALTER TABLE `creature_ai_scripts` CHANGE `creature_id` `creature_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Creature Template Identifier';
+ALTER TABLE `creature_ai_scripts` CHANGE `event_type` `event_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Event Type';
+ALTER TABLE `creature_ai_scripts` CHANGE `event_chance` `event_chance` int(10) unsigned NOT NULL DEFAULT '100';
+ALTER TABLE `creature_ai_scripts` CHANGE `event_flags` `event_flags` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_ai_scripts` CHANGE `action1_type` `action1_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Action Type';
+ALTER TABLE `creature_ai_scripts` CHANGE `action2_type` `action2_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Action Type';
+ALTER TABLE `creature_ai_scripts` CHANGE `action3_type` `action3_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Action Type';
+ALTER TABLE `creature_ai_summons` CHANGE `id` `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Location Identifier';
+ALTER TABLE `creature_ai_summons` CHANGE `spawntimesecs` `spawntimesecs` int(10) unsigned NOT NULL DEFAULT '120';
+ALTER TABLE `creature_classlevelstats` CHANGE `level` `level` tinyint(4) NOT NULL;
+ALTER TABLE `creature_classlevelstats` CHANGE `class` `class` tinyint(4) NOT NULL;
+ALTER TABLE `creature_classlevelstats` CHANGE `basehp0` `basehp0` smallint(6) NOT NULL;
+ALTER TABLE `creature_classlevelstats` CHANGE `basehp1` `basehp1` smallint(6) NOT NULL;
+ALTER TABLE `creature_classlevelstats` CHANGE `basehp2` `basehp2` smallint(6) NOT NULL;
+ALTER TABLE `creature_classlevelstats` CHANGE `basemana` `basemana` smallint(6) NOT NULL;
+ALTER TABLE `creature_classlevelstats` CHANGE `basearmor` `basearmor` smallint(6) NOT NULL;
+ALTER TABLE `creature_formations` CHANGE `leaderGUID` `leaderGUID` int(10) unsigned NOT NULL;
+ALTER TABLE `creature_formations` CHANGE `memberGUID` `memberGUID` int(10) unsigned NOT NULL;
+ALTER TABLE `creature_formations` CHANGE `groupAI` `groupAI` int(10) unsigned NOT NULL;
+ALTER TABLE `creature_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `creature_onkill_reputation` CHANGE `RewOnKillRepValue1` `RewOnKillRepValue1` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `KillCredit1` `KillCredit1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `KillCredit2` `KillCredit2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `exp` `exp` smallint(6) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `resistance1` `resistance1` smallint(6) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `resistance2` `resistance2` smallint(6) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `resistance3` `resistance3` smallint(6) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `resistance4` `resistance4` smallint(6) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `resistance5` `resistance5` smallint(6) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `resistance6` `resistance6` smallint(6) NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `questItem1` `questItem1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `questItem2` `questItem2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `questItem3` `questItem3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `questItem4` `questItem4` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `questItem5` `questItem5` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `questItem6` `questItem6` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `WDBVerified` `WDBVerified` smallint(6) NULL DEFAULT '1';
+ALTER TABLE `creature_template_addon` CHANGE `path_id` `path_id` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_transport` CHANGE `guid` `guid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'GUID of NPC on transport - not the same as creature.guid';
+ALTER TABLE `creature_transport` CHANGE `transport_entry` `transport_entry` int(11) NOT NULL COMMENT 'Transport entry';
+ALTER TABLE `creature_transport` CHANGE `npc_entry` `npc_entry` int(11) NOT NULL COMMENT 'NPC entry';
+ALTER TABLE `creature_transport` CHANGE `emote` `emote` int(11) NOT NULL;
+ALTER TABLE `db_script_string` CHANGE `entry` `entry` int(10) unsigned NOT NULL DEFAULT '0';
+
\ No newline at end of file
diff --git a/sql/old/3.3.5a/2012_03_27_01_world_misc.sql b/sql/old/3.3.5a/2012_03_27_01_world_misc.sql
new file mode 100644
index 00000000000..38c11c8ae65
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_27_01_world_misc.sql
@@ -0,0 +1,15 @@
+ALTER TABLE `exploration_basexp` CHANGE `level` `level` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `exploration_basexp` CHANGE `basexp` `basexp` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `fishing_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `game_event_creature` CHANGE `eventEntry` `eventEntry` tinyint(4) NOT NULL COMMENT 'Entry of the game event. Put negative entry to remove during event.';
+ALTER TABLE `game_event_gameobject` CHANGE `eventEntry` `eventEntry` tinyint(4) NOT NULL COMMENT 'Entry of the game event. Put negative entry to remove during event.';
+ALTER TABLE `game_event_model_equip` CHANGE `eventEntry` `eventEntry` tinyint(4) NOT NULL COMMENT 'Entry of the game event.';
+ALTER TABLE `game_event_npc_vendor` CHANGE `eventEntry` `eventEntry` tinyint(4) NOT NULL COMMENT 'Entry of the game event.';
+ALTER TABLE `game_event_pool` CHANGE `eventEntry` `eventEntry` tinyint(4) NOT NULL COMMENT 'Entry of the game event. Put negative entry to remove during event.';
+ALTER TABLE `gameobject_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `gameobject_template` CHANGE `WDBVerified` `WDBVerified` smallint(6) NULL DEFAULT '1';
+ALTER TABLE `gossip_menu` CHANGE `entry` `entry` smallint(5) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `gossip_menu_option` CHANGE `menu_id` `menu_id` smallint(5) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `gossip_menu_option` CHANGE `id` `id` smallint(5) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `gossip_menu_option` CHANGE `box_money` `box_money` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `gossip_menu_option` CHANGE `action_menu_id` `action_menu_id` int(10) unsigned NOT NULL DEFAULT '0';
diff --git a/sql/old/3.3.5a/2012_03_27_02_world_misc.sql b/sql/old/3.3.5a/2012_03_27_02_world_misc.sql
new file mode 100644
index 00000000000..f83a98b8100
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_27_02_world_misc.sql
@@ -0,0 +1,78 @@
+ALTER TABLE `instance_template` CHANGE `allowMount` `allowMount` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `ip2nation` CHANGE `ip` `ip` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `item_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `item_set_names` CHANGE `WDBVerified` `WDBVerified` smallint(6) NOT NULL DEFAULT '1';
+ALTER TABLE `item_template` CHANGE `spellcharges_1` `spellcharges_1` smallint(6) NULL DEFAULT NULL;
+ALTER TABLE `item_template` CHANGE `spellcharges_2` `spellcharges_2` smallint(6) NULL DEFAULT NULL;
+ALTER TABLE `item_template` CHANGE `spellcharges_3` `spellcharges_3` smallint(6) NULL DEFAULT NULL;
+ALTER TABLE `item_template` CHANGE `spellcharges_4` `spellcharges_4` smallint(6) NULL DEFAULT NULL;
+ALTER TABLE `item_template` CHANGE `spellcharges_5` `spellcharges_5` smallint(6) NULL DEFAULT NULL;
+ALTER TABLE `item_template` CHANGE `BagFamily` `BagFamily` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `item_template` CHANGE `TotemCategory` `TotemCategory` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `item_template` CHANGE `socketContent_1` `socketContent_1` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `item_template` CHANGE `socketContent_2` `socketContent_2` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `item_template` CHANGE `socketContent_3` `socketContent_3` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `item_template` CHANGE `socketBonus` `socketBonus` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `item_template` CHANGE `GemProperties` `GemProperties` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `item_template` CHANGE `WDBVerified` `WDBVerified` smallint(6) NULL DEFAULT '1';
+ALTER TABLE `item_template` CHANGE `ScalingStatValue` `ScalingStatValue` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `mail_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `milling_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `npc_spellclick_spells` CHANGE `user_type` `user_type` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'relation with summoner: 0-no 1-friendly 2-raid 3-party player can click';
+ALTER TABLE `outdoorpvp_template` CHANGE `TypeId` `TypeId` tinyint(3) unsigned NOT NULL;
+ALTER TABLE `page_text` CHANGE `WDBVerified` `WDBVerified` smallint(6) NULL DEFAULT '1';
+ALTER TABLE `pet_name_generation` CHANGE `half` `half` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `pickpocketing_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `player_factionchange_achievement` CHANGE `alliance_id` `alliance_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_achievement` CHANGE `horde_id` `horde_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_items` CHANGE `race_A` `race_A` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_items` CHANGE `alliance_id` `alliance_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_items` CHANGE `race_H` `race_H` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_items` CHANGE `horde_id` `horde_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_reputations` CHANGE `alliance_id` `alliance_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_reputations` CHANGE `horde_id` `horde_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_spells` CHANGE `alliance_id` `alliance_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_factionchange_spells` CHANGE `horde_id` `horde_id` int(10) unsigned NOT NULL; -- also changed to unsigned
+ALTER TABLE `player_xp_for_level` CHANGE `lvl` `lvl` tinyint(3) unsigned NOT NULL; -- also changed from int to tinyint
+ALTER TABLE `playercreateinfo_action` CHANGE `action` `action` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `playercreateinfo_item` CHANGE `amount` `amount` tinyint(4) NOT NULL DEFAULT '1';
+ALTER TABLE `playercreateinfo_spell_custom` DROP `Active`; -- delete field, it's not used anywhere
+ALTER TABLE `prospecting_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `quest_poi` CHANGE `objIndex` `objIndex` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_poi_points` CHANGE `x` `x` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_poi_points` CHANGE `y` `y` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredFactionValue1` `RequiredFactionValue1` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredFactionValue2` `RequiredFactionValue2` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredMinRepValue` `RequiredMinRepValue` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredMinRepValue` `RequiredMinRepValue` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredMaxRepValue` `RequiredMaxRepValue` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `PrevQuestId` `PrevQuestId` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `NextQuestId` `NextQuestId` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `ExclusiveGroup` `ExclusiveGroup` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardSpellCast` `RewardSpellCast` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardHonor` `RewardHonor` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardXPId` `RewardXPId` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueId1` `RewardFactionValueId1` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueId2` `RewardFactionValueId2` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueId3` `RewardFactionValueId3` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueId4` `RewardFactionValueId4` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueId5` `RewardFactionValueId5` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueIdOverride1` `RewardFactionValueIdOverride1` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueIdOverride2` `RewardFactionValueIdOverride2` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueIdOverride3` `RewardFactionValueIdOverride3` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueIdOverride4` `RewardFactionValueIdOverride4` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RewardFactionValueIdOverride5` `RewardFactionValueIdOverride5` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredNpcOrGo1` `RequiredNpcOrGo1` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredNpcOrGo2` `RequiredNpcOrGo2` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredNpcOrGo3` `RequiredNpcOrGo3` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `RequiredNpcOrGo4` `RequiredNpcOrGo4` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `Unknown0` `Unknown0` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `DetailsEmoteDelay1` `DetailsEmoteDelay1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `DetailsEmoteDelay2` `DetailsEmoteDelay2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `DetailsEmoteDelay3` `DetailsEmoteDelay3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `DetailsEmoteDelay4` `DetailsEmoteDelay4` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `OfferRewardEmoteDelay1` `OfferRewardEmoteDelay1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `OfferRewardEmoteDelay2` `OfferRewardEmoteDelay2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `OfferRewardEmoteDelay3` `OfferRewardEmoteDelay3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `OfferRewardEmoteDelay4` `OfferRewardEmoteDelay4` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `quest_template` CHANGE `WDBVerified` `WDBVerified` smallint(6) NOT NULL DEFAULT '1';
diff --git a/sql/old/3.3.5a/2012_03_27_03_world_misc.sql b/sql/old/3.3.5a/2012_03_27_03_world_misc.sql
new file mode 100644
index 00000000000..aba847dbc3f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_27_03_world_misc.sql
@@ -0,0 +1,59 @@
+ALTER TABLE `reference_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `reputation_spillover_template` CHANGE `faction` `faction` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'faction entry';
+ALTER TABLE `reputation_spillover_template` CHANGE `faction1` `faction1` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'faction to give spillover for';
+ALTER TABLE `reputation_spillover_template` CHANGE `faction2` `faction2` smallint(5) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `reputation_spillover_template` CHANGE `faction3` `faction3` smallint(5) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `reputation_spillover_template` CHANGE `faction4` `faction4` smallint(5) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `skinning_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `spell_area` CHANGE `quest_start_active` `quest_start_active` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_area` CHANGE `gender` `gender` tinyint(3) unsigned NOT NULL DEFAULT '2';
+ALTER TABLE `spell_area` CHANGE `autocast` `autocast` tinyint(3) unsigned NOT NULL DEFAULT '0';
+-- All the fields in spell_dbc where changed to full int32 since the DBC structure is used
+ALTER TABLE `spell_dbc` CHANGE `Dispel` `Dispel` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `Mechanic` `Mechanic` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `CastingTimeIndex` `CastingTimeIndex` int(10) unsigned NOT NULL DEFAULT '1';
+ALTER TABLE `spell_dbc` CHANGE `DurationIndex` `DurationIndex` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `ProcChance` `ProcChance` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `ProcCharges` `ProcCharges` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `BaseLevel` `BaseLevel` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `MaxLevel` `MaxLevel` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `SpellLevel` `SpellLevel` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `RangeIndex` `RangeIndex` int(10) unsigned NOT NULL DEFAULT '1';
+ALTER TABLE `spell_dbc` CHANGE `Effect1` `Effect1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `Effect2` `Effect2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `Effect3` `Effect3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectMechanic1` `EffectMechanic1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectMechanic2` `EffectMechanic2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectMechanic3` `EffectMechanic3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectImplicitTargetA1` `EffectImplicitTargetA1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectImplicitTargetA2` `EffectImplicitTargetA2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectImplicitTargetA3` `EffectImplicitTargetA3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectImplicitTargetB1` `EffectImplicitTargetB1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectImplicitTargetB2` `EffectImplicitTargetB2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectImplicitTargetB3` `EffectImplicitTargetB3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectRadiusIndex1` `EffectRadiusIndex1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectRadiusIndex2` `EffectRadiusIndex2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectRadiusIndex3` `EffectRadiusIndex3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectApplyAuraName1` `EffectApplyAuraName1` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectApplyAuraName2` `EffectApplyAuraName2` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `EffectApplyAuraName3` `EffectApplyAuraName3` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `MaxTargetLevel` `MaxTargetLevel` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `SpellFamilyName` `SpellFamilyName` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `MaxAffectedTargets` `MaxAffectedTargets` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `DmgClass` `DmgClass` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_dbc` CHANGE `PreventionType` `PreventionType` int(10) unsigned NOT NULL DEFAULT '0';
+--
+ALTER TABLE `spell_group` CHANGE `id` `id` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `spell_loot_template` CHANGE `mincountOrRef` `mincountOrRef` mediumint(8) NOT NULL DEFAULT '1';
+ALTER TABLE `spell_proc` CHANGE `spellPhaseMask` `spellPhaseMask` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `spell_proc` CHANGE `hitMask` `hitMask` int(11) NOT NULL DEFAULT '0';
+ALTER TABLE `spell_enchant_proc_data` CHANGE `procEx` `procEx` int(10) unsigned NOT NULL DEFAULT '0'; -- changed from float to int
+ALTER TABLE `spell_required` CHANGE `spell_id` `spell_id` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `spell_required` CHANGE `req_spell` `req_spell` mediumint(8) NOT NULL DEFAULT '0';
+ALTER TABLE `spell_threat` CHANGE `flatMod` `flatMod` int(11) NULL DEFAULT NULL;
+ALTER TABLE `vehicle_accessory` CHANGE `seat_id` `seat_id` tinyint(4) NOT NULL DEFAULT '0';
+ALTER TABLE `vehicle_accessory` CHANGE `minion` `minion` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `vehicle_template_accessory` CHANGE `seat_id` `seat_id` tinyint(4) NOT NULL DEFAULT '0';
+ALTER TABLE `vehicle_template_accessory` CHANGE `minion` `minion` tinyint(3) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `version` CHANGE `cache_id` `cache_id` int(11) NULL DEFAULT '0';
+ALTER TABLE `waypoint_data` CHANGE `move_flag` `move_flag` tinyint(4) NOT NULL DEFAULT '0';
diff --git a/sql/old/3.3.5a/2012_03_27_04_world_misc.sql b/sql/old/3.3.5a/2012_03_27_04_world_misc.sql
new file mode 100644
index 00000000000..e85350476c9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_27_04_world_misc.sql
@@ -0,0 +1,3 @@
+ALTER TABLE `spell_dbc` CHANGE `StackAmount` `StackAmount` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `waypoint_data` CHANGE `action_chance` `action_chance` smallint(6) NOT NULL DEFAULT '100';
+ALTER TABLE `item_loot_template` CHANGE `maxcount` `maxcount` tinyint(3) unsigned NOT NULL DEFAULT '1';
diff --git a/sql/old/3.3.5a/2012_03_28_00_auth_account.sql b/sql/old/3.3.5a/2012_03_28_00_auth_account.sql
new file mode 100644
index 00000000000..199baac5178
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_00_auth_account.sql
@@ -0,0 +1,13 @@
+ALTER TABLE `account`
+ CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Identifier',
+ CHANGE `sessionkey` `sessionkey` VARCHAR(80) NOT NULL DEFAULT '',
+ CHANGE `v` `v` VARCHAR(64) NOT NULL DEFAULT '',
+ CHANGE `s` `s` VARCHAR(64) NOT NULL DEFAULT '',
+ CHANGE `email` `email` VARCHAR(254) NOT NULL DEFAULT '',
+ CHANGE `last_ip` `last_ip` VARCHAR(15) NOT NULL DEFAULT '127.0.0.1',
+ CHANGE `failed_logins` `failed_logins` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+ CHANGE `online` `online` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+ CHANGE `mutetime` `mutetime` BIGINT(20) NOT NULL DEFAULT '0',
+ CHANGE `os` `os` VARCHAR(3) NOT NULL DEFAULT '',
+ CHANGE `recruiter` `recruiter` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_28_01_auth_account_access.sql b/sql/old/3.3.5a/2012_03_28_01_auth_account_access.sql
new file mode 100644
index 00000000000..456dbf6c104
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_01_auth_account_access.sql
@@ -0,0 +1,3 @@
+ALTER TABLE `account_access`
+ CHANGE `id` `id` INT(10) UNSIGNED NOT NULL,
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_28_01_world_spell_bonus_data.sql b/sql/old/3.3.5a/2012_03_28_01_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..e150cad1c2e
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_01_world_spell_bonus_data.sql
@@ -0,0 +1,2 @@
+-- Hunter Volley
+UPDATE `spell_bonus_data` SET `ap_bonus`=0.0837 WHERE `entry`=42243;
diff --git a/sql/old/3.3.5a/2012_03_28_02_auth_account_banned.sql b/sql/old/3.3.5a/2012_03_28_02_auth_account_banned.sql
new file mode 100644
index 00000000000..917cea1a684
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_02_auth_account_banned.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `account_banned`
+ CHANGE `id` `id` INT(10) UNSIGNED DEFAULT '0' NOT NULL COMMENT 'Account id',
+ CHANGE `active` `active` TINYINT(3) UNSIGNED DEFAULT '1' NOT NULL,
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_28_03_auth_ip_banned.sql b/sql/old/3.3.5a/2012_03_28_03_auth_ip_banned.sql
new file mode 100644
index 00000000000..2e754effc60
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_03_auth_ip_banned.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `ip_banned`
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_28_04_auth_logs.sql b/sql/old/3.3.5a/2012_03_28_04_auth_logs.sql
new file mode 100644
index 00000000000..4c837a47ed1
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_04_auth_logs.sql
@@ -0,0 +1,5 @@
+ALTER TABLE `logs`
+ CHANGE `time` `time` INT(10) UNSIGNED NOT NULL,
+ CHANGE `realm` `realm` INT(10) UNSIGNED NOT NULL,
+ CHANGE `type` `type` TINYINT(3) UNSIGNED NOT NULL,
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_28_05_auth_realmcharacters.sql b/sql/old/3.3.5a/2012_03_28_05_auth_realmcharacters.sql
new file mode 100644
index 00000000000..e50b3c3f331
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_05_auth_realmcharacters.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `realmcharacters`
+ CHANGE `realmid` `realmid` INT(10) UNSIGNED DEFAULT 0 NOT NULL,
+ CHANGE `acctid` `acctid` INT(10) UNSIGNED NOT NULL,
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_28_06_auth_realmlist.sql b/sql/old/3.3.5a/2012_03_28_06_auth_realmlist.sql
new file mode 100644
index 00000000000..725702a9803
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_06_auth_realmlist.sql
@@ -0,0 +1,6 @@
+ALTER TABLE `realmlist`
+ CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+ CHANGE `address` `address` VARCHAR(15) DEFAULT '127.0.0.1' NOT NULL,
+ CHANGE `port` `port` SMALLINT(5) UNSIGNED DEFAULT '8085' NOT NULL,
+ CHANGE `gamebuild` `gamebuild` INT(10) UNSIGNED DEFAULT '12340' NOT NULL,
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_28_07_auth_uptime.sql b/sql/old/3.3.5a/2012_03_28_07_auth_uptime.sql
new file mode 100644
index 00000000000..0ea4e3321df
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_28_07_auth_uptime.sql
@@ -0,0 +1,6 @@
+ALTER TABLE `uptime`
+ DROP COLUMN `startstring`,
+ CHANGE `realmid` `realmid` INT(10) UNSIGNED NOT NULL,
+ CHANGE `starttime` `starttime` INT(10) UNSIGNED DEFAULT 0 NOT NULL,
+ CHANGE `uptime` `uptime` INT(10) UNSIGNED DEFAULT 0 NOT NULL,
+ ROW_FORMAT=DEFAULT ENGINE=INNODB;
diff --git a/sql/old/3.3.5a/2012_03_30_00_world_smart_scripts.sql b/sql/old/3.3.5a/2012_03_30_00_world_smart_scripts.sql
new file mode 100644
index 00000000000..3ec709d76c1
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_30_00_world_smart_scripts.sql
@@ -0,0 +1,94 @@
+-- revised from Unholys original works
+-- quest 12702 chicken party!
+-- quest 12532 flown the coop!
+--
+SET @ENTRY := 28161; -- the chicken
+SET @PARTY := 12702; -- chicken party quest
+SET @COOP := 12532; -- flown the coop quest
+SET @LIFE := 900000; -- minutes
+
+-- set up required spells for the spells to work as they should
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`=@ENTRY;
+INSERT INTO `npc_spellclick_spells` (`npc_entry`,`spell_id`,`cast_flags`,`user_type`) VALUES
+(@ENTRY,39996,1,0), -- cover spell (dummy)
+(@ENTRY,51037,2,0); -- creates item in players back pack
+
+-- set npc up to use event script
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+
+-- convert over to smart script
+DELETE FROM `creature_ai_scripts` WHERE `id`=@ENTRY; -- delete old eai scripts
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,1000,1000,2000,3000,89,35,0,0,0,0,0,1,0,0,0,0,0,0,0, 'create random movement every 2-3 secs'),
+(@ENTRY,0,1,0,8,0,100,0,51951,0,0,0,11,50839,0,0,0,0,0,1,0,0,0,0,0,0,0, 'when hit with net cast self stun'),
+(@ENTRY,0,2,0,8,0,100,0,39996,0,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'force despawn @1 sec when hit with dummy spell');
+
+-- Remove previous scripts that may interfere with this work
+DELETE FROM `quest_start_scripts` WHERE `id` IN (@PARTY,@COOP);
+
+-- start script for quest chicken party (they do not all spawn at same time)
+UPDATE `quest_template` SET `StartScript`=@PARTY WHERE `id`=@PARTY; -- 12072
+INSERT INTO `quest_start_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES
+(@PARTY,1,10,@ENTRY,@LIFE, 0,5251.09,4413.76,-96.086,4.8714),
+(@PARTY,2,10,@ENTRY,@LIFE, 0,5251.22,4419.74,-95.8995,3.58335),
+(@PARTY,23,10,@ENTRY,@LIFE, 0,5257.58,4421.77,-95.9072,2.62124),
+(@PARTY,4,10,@ENTRY,@LIFE,0, 5255.97,4420.37,-95.9999,0.0451326),
+(@PARTY,5,10,@ENTRY,@LIFE,0, 5256.78,4420.63,-95.9957,0.320021),
+(@PARTY,6,10,@ENTRY,@LIFE,0, 5257.58,4421.77,-95.9072,0.956194),
+(@PARTY,27,10,@ENTRY,@LIFE,0, 5258.54,4420.49,-96.0195,0.551714),
+(@PARTY,8,10,@ENTRY,@LIFE,0, 5250.67,4417.98,-95.9787,4.39231),
+(@PARTY,9,10,@ENTRY,@LIFE,0, 5273.53,4430.32,-96.0241,1.0897),
+(@PARTY,40,10,@ENTRY,@LIFE,0, 5158.3,4605.25,-130.988,3.7522),
+(@PARTY,21,10,@ENTRY,@LIFE,0, 5164.6,4609.43,-130.427,3.70115),
+(@PARTY,22,10,@ENTRY,@LIFE,0, 5169.53,4612.44,-130.817,4.05065),
+(@PARTY,23,10,@ENTRY,@LIFE,0, 5188.49,4627.85,-132.485,3.60691),
+(@PARTY,44,10,@ENTRY,@LIFE,0, 5203.19,4631.63,-132.611,2.849),
+(@PARTY,25,10,@ENTRY,@LIFE,0, 5219.62,4632.46,-134.232,0.378917),
+(@PARTY,26,10,@ENTRY,@LIFE,0, 5219.62,4632.46,-134.232,0.66166),
+(@PARTY,27,10,@ENTRY,@LIFE,0, 5203.5,4595.02,-111.327,5.51542),
+(@PARTY,48,10,@ENTRY,@LIFE,0, 5179.35,4558,-100.344,0.579192),
+(@PARTY,29,10,@ENTRY,@LIFE,0, 5179.35,4558,-100.344,1.09756),
+(@PARTY,30,10,@ENTRY,@LIFE,0, 5172.43,4533.25,-97.3836,1.15253),
+(@PARTY,41,10,@ENTRY,@LIFE,0, 5186.29,4522.69,-91.0957,3.02571),
+(@PARTY,32,10,@ENTRY,@LIFE,0, 5214.67,4485.22,-91.3113,2.40524),
+(@PARTY,33,10,@ENTRY,@LIFE,0, 5221.85,4475.99,-96.8801,4.89495),
+(@PARTY,34,10,@ENTRY,@LIFE,0, 5222.95,4438.1,-96.8062,1.6277),
+(@PARTY,35,10,@ENTRY,@LIFE,0, 5224.36,4427.83,-96.9221,2.63301),
+(@PARTY,36,10,@ENTRY,@LIFE,0, 5234.72,4406.44,-95.2917,0.0647549),
+(@PARTY,47,10,@ENTRY,@LIFE,0, 5227.28,4407.01,-95.3888,3.79933),
+(@PARTY,38,10,@ENTRY,@LIFE,0, 5227.28,4407.01,-95.3888,4.29414),
+(@PARTY,39,10,@ENTRY,@LIFE,0, 5251.09,4413.76,-96.086,3.90536),
+(@PARTY,40,10,@ENTRY,@LIFE,0, 5251.09,4413.76,-96.086,4.36089);
+
+-- start script for quest flown the coop (they do not all spawn at same time)
+UPDATE `quest_template` SET `StartScript`=@COOP WHERE `id`=@COOP; -- 12532
+INSERT INTO `quest_start_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES
+(@COOP,23,10,@ENTRY,@LIFE,0, 5257.58,4421.77,-95.9072,2.62124),
+(@COOP,4,10,@ENTRY,@LIFE,0, 5255.97,4420.37,-95.9999,0.0451326),
+(@COOP,5,10,@ENTRY,@LIFE,0, 5256.78,4420.63,-95.9957,0.320021),
+(@COOP,6,10,@ENTRY,@LIFE,0, 5257.58,4421.77,-95.9072,0.956194),
+(@COOP,27,10,@ENTRY,@LIFE,0, 5258.54,4420.49,-96.0195,0.551714),
+(@COOP,8,10,@ENTRY,@LIFE,0, 5250.67,4417.98,-95.9787,4.39231),
+(@COOP,9,10,@ENTRY,@LIFE,0, 5273.53,4430.32,-96.0241,1.0897),
+(@COOP,40,10,@ENTRY,@LIFE,0, 5158.3,4605.25,-130.988,3.7522),
+(@COOP,21,10,@ENTRY,@LIFE,0, 5164.6,4609.43,-130.427,3.70115),
+(@COOP,22,10,@ENTRY,@LIFE,0, 5169.53,4612.44,-130.817,4.05065),
+(@COOP,23,10,@ENTRY,@LIFE,0, 5188.49,4627.85,-132.485,3.60691),
+(@COOP,44,10,@ENTRY,@LIFE,0, 5203.19,4631.63,-132.611,2.849),
+(@COOP,25,10,@ENTRY,@LIFE,0, 5219.62,4632.46,-134.232,0.378917),
+(@COOP,26,10,@ENTRY,@LIFE,0, 5219.62,4632.46,-134.232,0.66166),
+(@COOP,27,10,@ENTRY,@LIFE,0, 5203.5,4595.02,-111.327,5.51542),
+(@COOP,48,10,@ENTRY,@LIFE,0, 5179.35,4558,-100.344,0.579192),
+(@COOP,29,10,@ENTRY,@LIFE,0, 5179.35,4558,-100.344,1.09756),
+(@COOP,30,10,@ENTRY,@LIFE,0, 5172.43,4533.25,-97.3836,1.15253),
+(@COOP,41,10,@ENTRY,@LIFE,0, 5186.29,4522.69,-91.0957,3.02571),
+(@COOP,32,10,@ENTRY,@LIFE,0, 5214.67,4485.22,-91.3113,2.40524),
+(@COOP,33,10,@ENTRY,@LIFE,0, 5221.85,4475.99,-96.8801,4.89495),
+(@COOP,34,10,@ENTRY,@LIFE,0, 5222.95,4438.1,-96.8062,1.6277),
+(@COOP,35,10,@ENTRY,@LIFE,0, 5224.36,4427.83,-96.9221,2.63301),
+(@COOP,36,10,@ENTRY,@LIFE,0, 5234.72,4406.44,-95.2917,0.0647549),
+(@COOP,47,10,@ENTRY,@LIFE,0, 5227.28,4407.01,-95.3888,3.79933),
+(@COOP,38,10,@ENTRY,@LIFE,0, 5227.28,4407.01,-95.3888,4.29414),
+(@COOP,39,10,@ENTRY,@LIFE,0, 5251.09,4413.76,-96.086,3.90536),
+(@COOP,40,10,@ENTRY,@LIFE,0, 5251.09,4413.76,-96.086,4.36089);
diff --git a/sql/old/3.3.5a/2012_03_31_00_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_03_31_00_world_creature_loot_template.sql
new file mode 100644
index 00000000000..a817cdccf50
--- /dev/null
+++ b/sql/old/3.3.5a/2012_03_31_00_world_creature_loot_template.sql
@@ -0,0 +1,191 @@
+-- -------------------------------
+-- -- The Antechamber of Ulduar --
+-- -------------------------------
+-- Creatures
+SET @Brundir10 :=32857;
+call `sp_get_npc_diffentry`(@Brundir10,1,@Brundir25); -- Get 25man id using procedure
+SET @Molgeim10 :=32927;
+call `sp_get_npc_diffentry`(@Molgeim10,1,@Molgeim25); -- Get 25man id using procedure
+SET @Steelbreaker10 :=32867;
+call `sp_get_npc_diffentry`(@Steelbreaker10,1,@Steelbreaker25); -- Get 25man id using procedure
+SET @Auriaya10 :=33515;
+call `sp_get_npc_diffentry`(@Auriaya10,1,@Auriaya25); -- Get 25man id using procedure
+-- Gameobjects
+SET @Kologarn10 := 195046; -- Cache of the Living Stone 10man
+CALL `sp_get_go_lootid`(@Kologarn10,@CacheLivingStone10); -- Get Lootid from data1 field using procedure
+SET @Kologarn25 := 195047; -- Cache of the Living Stone 25man
+CALL `sp_get_go_lootid`(@Kologarn25,@CacheLivingStone25); -- Get Lootid from data1 field using procedure
+-- bosses
+SET @Assembly10Ref := 34359;
+SET @Assembly25Ref := @Assembly10Ref+1;
+SET @Kologarn10Ref := @Assembly10Ref+2;
+SET @Kologarn25Ref := @Assembly10Ref+3;
+SET @Auriaya10Ref := @Assembly10Ref+4;
+SET @Auriaya25Ref := @Assembly10Ref+5;
+
+-- ------------------------------
+-- -- Reference Loot Templates --
+-- ------------------------------
+-- Delete previous templates if existing
+DELETE FROM `reference_loot_template` WHERE `entry` IN (12019,34122,34123,34124,34163,34216);
+-- Delete the current if existing & add
+DELETE FROM `reference_loot_template` WHERE `entry` BETWEEN @Assembly10Ref AND @Assembly10Ref+5;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Assembly Of Iron 10man
+(@Assembly10Ref,45322,0,1,1,1,1), -- Cloak of the Iron Council
+(@Assembly10Ref,45324,0,1,1,1,1), -- Leggings of Swift Reflexes
+(@Assembly10Ref,45329,0,1,1,1,1), -- Circlet of True Sight
+(@Assembly10Ref,45330,0,1,1,1,1), -- Greaves of Iron Intensity
+(@Assembly10Ref,45331,0,1,1,1,1), -- Rune-Etched Nightblade
+(@Assembly10Ref,45332,0,1,1,1,1), -- Stormtip
+(@Assembly10Ref,45333,0,1,1,1,1), -- Belt of the Iron Servant
+(@Assembly10Ref,45378,0,1,1,1,1), -- Boots of the Petrified Forest
+(@Assembly10Ref,45418,0,1,1,1,1), -- Lady Maye's Sapphire Ring
+(@Assembly10Ref,45423,0,1,1,1,1), -- Runetouch Wristwraps
+-- Assembly Of Iron 25man
+(@Assembly25Ref,45233,0,1,1,1,1), -- Stormrune Edge
+(@Assembly25Ref,45234,0,1,1,1,1), -- Rapture
+(@Assembly25Ref,45237,0,1,1,1,1), -- Phaelia's Vestments of the Sprouting Seed
+(@Assembly25Ref,45193,0,1,1,1,1), -- Insurmountable Fervor
+(@Assembly25Ref,45236,0,1,1,1,1), -- Unblinking Eye
+(@Assembly25Ref,45225,0,1,1,1,1), -- Steelbreaker's Embrace
+(@Assembly25Ref,45240,0,1,1,1,1), -- Raiments of the Iron Council
+(@Assembly25Ref,45226,0,1,1,1,1), -- Ancient Iron Heaume
+(@Assembly25Ref,45235,0,1,1,1,1), -- Radiant Seal
+(@Assembly25Ref,45227,0,1,1,1,1), -- Iron-studded Mantle
+(@Assembly25Ref,45239,0,1,1,1,1), -- Runeshaper's Gloves
+(@Assembly25Ref,45224,0,1,1,1,1), -- Drape of the Lithe
+(@Assembly25Ref,45232,0,1,1,1,1), -- Runed Ironhide Boots
+(@Assembly25Ref,45228,0,1,1,1,1), -- Handguards of the Enclave
+(@Assembly25Ref,45238,0,1,1,1,1), -- Overload Legwraps
+-- Cache of Living Stone 10man
+(@Kologarn10Ref,45701,0,1,1,1,1), -- Greaves of the Earthbinder
+(@Kologarn10Ref,45965,0,1,1,1,1), -- Spire of Withering Dreams
+(@Kologarn10Ref,45702,0,1,1,1,1), -- Emerald Signet Ring
+(@Kologarn10Ref,45696,0,1,1,1,1), -- Mark of the Unyielding
+(@Kologarn10Ref,45698,0,1,1,1,1), -- Sabatons of the Iron Watcher
+(@Kologarn10Ref,45697,0,1,1,1,1), -- Shoulderguards of the Solemn Watch
+(@Kologarn10Ref,45703,0,2,2,1,1), -- Spark of Hope
+(@Kologarn10Ref,45700,0,2,2,1,1), -- Stoneguard
+(@Kologarn10Ref,45699,0,2,2,1,1), -- Pendant of the Piercing Glare
+(@Kologarn10Ref,45704,0,2,2,1,1), -- Shawl of the Shattered Giant
+-- Cache of Living Stone 25man
+(@Kologarn25Ref,45261,0,1,1,1,1), -- Giant's Bane
+(@Kologarn25Ref,45266,0,1,1,1,1), -- Malice
+(@Kologarn25Ref,45274,0,1,1,1,1), -- Leggings of the Stoneweaver
+(@Kologarn25Ref,45269,0,1,1,1,1), -- Unfaltering Armguards
+(@Kologarn25Ref,45268,0,1,1,1,1), -- Gloves of the Pythonic Guardian
+(@Kologarn25Ref,45262,0,1,1,1,1), -- Necklace of Unerring Mettle
+(@Kologarn25Ref,45275,0,1,1,1,1), -- Bracers of Unleashed Magic
+(@Kologarn25Ref,45272,0,1,1,1,1), -- Robes of the Umbral Brute
+(@Kologarn25Ref,45267,0,1,1,1,1), -- Saronite Plated Legguards
+(@Kologarn25Ref,45263,0,1,1,1,1), -- Wrathstone
+(@Kologarn25Ref,45271,0,1,1,1,1), -- Ironmender
+(@Kologarn25Ref,45264,0,1,1,1,1), -- Decimator's Armguards
+(@Kologarn25Ref,45265,0,1,1,1,1), -- Shoulderpads of the Monolith
+(@Kologarn25Ref,45273,0,1,1,1,1), -- Handwraps of Plentiful Recovery
+(@Kologarn25Ref,45270,0,1,1,1,1), -- Idol of the Crying Wind
+-- Auriaya 10man
+(@Auriaya10Ref,45707,0,1,1,1,1), -- Shieldwall of the Breaker
+(@Auriaya10Ref,45708,0,1,1,1,1), -- Archaedas' Lost Legplates
+(@Auriaya10Ref,45709,0,1,1,1,1), -- Nimble Climber's Belt
+(@Auriaya10Ref,45711,0,1,1,1,1), -- Ironaya's Discarded Mantle
+(@Auriaya10Ref,45712,0,1,1,1,1), -- Chestplate of Titanic Fury
+(@Auriaya10Ref,45713,0,1,1,1,1), -- Nurturing Touch
+(@Auriaya10Ref,45832,0,1,1,1,1), -- Mantle of the Preserver
+(@Auriaya10Ref,45864,0,1,1,1,1), -- Cover of the Keepers
+(@Auriaya10Ref,45865,0,1,1,1,1), -- Raiments of the Corrupted
+(@Auriaya10Ref,45866,0,1,1,1,1), -- Elemental Focus Stone
+-- Auriaya 25man
+(@Auriaya25Ref,45327,0,1,1,1,1), -- Siren's Cry
+(@Auriaya25Ref,45437,0,1,1,1,1), -- Runescribed Blade
+(@Auriaya25Ref,45315,0,1,1,1,1), -- Stonerender
+(@Auriaya25Ref,45439,0,1,1,1,1), -- Unwavering Stare
+(@Auriaya25Ref,45326,0,1,1,1,1), -- Platinum Band of the Aesir
+(@Auriaya25Ref,45441,0,1,1,1,1), -- Sandals of the Ancient Keeper
+(@Auriaya25Ref,45435,0,1,1,1,1), -- Cowl of the Absolute
+(@Auriaya25Ref,45438,0,1,1,1,1), -- Ring of the Faithful Servant
+(@Auriaya25Ref,45434,0,1,1,1,1), -- Greaves of the Rockmender
+(@Auriaya25Ref,45320,0,1,1,1,1), -- Shoulderplates of the Eternal
+(@Auriaya25Ref,45325,0,1,1,1,1), -- Gloves of the Stonereaper
+(@Auriaya25Ref,45440,0,1,1,1,1), -- Amice of the Stoic Watch
+(@Auriaya25Ref,45334,0,1,1,1,1), -- Unbreakable Chestguard
+(@Auriaya25Ref,45319,0,1,1,1,1), -- Cloak of the Makers
+(@Auriaya25Ref,45436,0,1,1,1,1); -- Libram of the Resolute
+
+-- ---------------------------
+-- -- ASSIGN CREATURE LOOTS --
+-- ---------------------------
+UPDATE `creature_template` SET `lootid`=`entry` WHERE `entry` IN (@Brundir10,@Molgeim10,@Steelbreaker10,@Brundir25,@Molgeim25,@Steelbreaker25,@Auriaya10,@Auriaya25);
+DELETE FROM `creature_loot_template` WHERE `entry` IN (@Brundir10,@Molgeim10,@Steelbreaker10,@Brundir25,@Molgeim25,@Steelbreaker25);
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- ASSEMBLY OF IRON 10-man
+-- Stormcaller Brundir killed last
+(@Brundir10,1,100,1,0,-@Assembly10Ref,2), -- 2 items from reference loot
+(@Brundir10,47241,100,1,0,1,1), -- 1 Emblem of Triumph
+-- Runemaster Molgeim killed last
+(@Molgeim10,1,100,1,0,-@Assembly10Ref,2), -- 2 items from reference loot
+(@Molgeim10,47241,100,1,0,2,2), -- 2 Emblem of Triumph
+(@Molgeim10,45506,100,2,0,1,1), -- Archivum Data Disc
+(@Molgeim10,45087,75,1,0,1,1), -- Runed Orb
+-- Steelbreaker killed last
+(@Steelbreaker10,1,100,1,0,-@Assembly10Ref,2), -- 2 items from reference loot
+(@Steelbreaker10,47241,100,1,0,2,2), -- 2 Emblem of Triumph
+(@Steelbreaker10,45087,75,1,0,1,1), -- Runed Orb
+(@Steelbreaker10,45506,100,1,0,1,1), -- Archivum Data Disc for Quest
+(@Steelbreaker10,25455,0,1,1,1,1), -- Belt fo the Crystal Tree
+(@Steelbreaker10,45447,0,1,1,1,1), -- Watchful Eye of Fate
+(@Steelbreaker10,45456,0,1,1,1,1), -- Loop of the Agile
+(@Steelbreaker10,45449,0,1,1,1,1), -- The Masticator
+(@Steelbreaker10,45448,0,1,1,1,1), -- Perilous Bite
+-- ASSEMBLY OF IRON 25-man
+-- Stormcaller Brundir killed last
+(@Brundir25,1,100,1,0,-@Assembly25Ref,3), -- 3 items from reference loot
+(@Brundir25,2,10,1,0,-34154,1), -- Chance on Recipe
+(@Brundir25,45038,8,1,0,1,1), -- Fragment of Val'anyr
+(@Brundir25,45087,75,1,0,1,1), -- Runed Orb
+(@Brundir25,47241,100,1,0,1,2), -- 2 Emblems of Triumph
+-- Runemaster Molgeim killed last
+(@Molgeim25,1,100,1,0,-@Assembly25Ref,3), -- 3 items from reference loot
+(@Molgeim25,2,10,1,0,-34154,1), -- Chance on Recipe
+(@Molgeim25,45038,8,1,0,1,1), -- Fragment of Val'anyr
+(@Molgeim25,45087,75,1,0,1,1), -- Runed Orb
+(@Molgeim25,47241,100,1,0,2,2), -- 2 Emblems of Triumph
+(@Molgeim25,45506,100,1,0,1,1), -- Archivum Data Disc
+-- Steelbreaker killed last
+(@Steelbreaker25,1,100,1,0,-@Assembly25Ref,3), -- 3 items from reference loot
+(@Steelbreaker25,2,10,1,0,-34154,1), -- Chance on Recipe
+(@Steelbreaker25,45038,18,1,0,1,1), -- Fragment of Val'anyr
+(@Steelbreaker25,45087,75,1,0,2,2), -- 2x Runed Orb
+(@Steelbreaker25,47241,100,1,0,2,2), -- 2 Emblems of Triumph
+(@Steelbreaker25,45506,100,1,0,1,1), -- Archivum Data Disc
+(@Steelbreaker25,45241,0,1,1,1,1), -- Belt of Colossal Rage
+(@Steelbreaker25,45242,0,1,1,1,1), -- Drape of Mortal Downfall
+(@Steelbreaker25,45607,0,1,1,1,1), -- Fang of Oblivion
+(@Steelbreaker25,45244,0,1,1,1,1), -- Greaves of Swift Vengeance
+(@Steelbreaker25,45243,0,1,1,1,1), -- Sapphire Amulet of Renewal
+(@Steelbreaker25,45245,0,1,1,1,1); -- Shoulderpads of the Intruder
+
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (@CacheLivingStone10,@CacheLivingStone25);
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- KOLOGARN 10-man
+(@CacheLivingStone10,1,100,1,0,-@Kologarn10Ref,2), -- 2 items from reference loot
+(@CacheLivingStone10,47241,100,1,0,1,1), -- 1 Emblem of Triumph
+-- KOLOGARN 25-Man
+(@CacheLivingStone25,1,100,1,0,-@Kologarn25Ref,3), -- 3 items from reference loot
+(@CacheLivingStone25,2,10,1,0,-34154,1), -- Chance on Recipe
+(@CacheLivingStone25,45038,8,1,0,1,1), -- Fragment of Val'anyr
+(@CacheLivingStone25,45087,50,1,0,1,1), -- Runed Orb
+(@CacheLivingStone25,47241,100,1,0,1,2); -- 2 Emblems of Triumph
+
+DELETE FROM `creature_loot_template` WHERE `entry` IN (@Auriaya10,@Auriaya25);
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- AURIAYA 10-man
+(@Auriaya10,1,100,1,0,-@Auriaya10Ref,2), -- 2 items from reference loot
+(@Auriaya10,47241,100,1,0,1,1), -- 1 Emblem of Triumph
+-- AURIAYA 25-man
+(@Auriaya25,1,100,1,0,-@Auriaya25Ref,3), -- 3 items from reference loot
+(@Auriaya25,2,10,1,0,-34154,1), -- Chance on Recipe
+(@Auriaya25,45038,8,1,0,1,1), -- Fragment of Val'anyr
+(@Auriaya25,45087,75,1,0,1,1), -- Runed Orb
+(@Auriaya25,47241,100,1,0,1,2); -- 2 Emblems of Triumph
diff --git a/sql/old/3.3.5a/2012_04_01_00_auth_realmlist.sql b/sql/old/3.3.5a/2012_04_01_00_auth_realmlist.sql
new file mode 100644
index 00000000000..e2e1efaf993
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_00_auth_realmlist.sql
@@ -0,0 +1 @@
+ALTER TABLE `realmlist` CHANGE `address` `address` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '127.0.0.1';
diff --git a/sql/old/3.3.5a/2012_04_01_00_world_creature.sql b/sql/old/3.3.5a/2012_04_01_00_world_creature.sql
new file mode 100644
index 00000000000..f6a42a6ef08
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_00_world_creature.sql
@@ -0,0 +1,17 @@
+-- Add missing spawns to db
+DELETE FROM `creature` WHERE `guid` IN (4764,28648,40266,40267,40470,40471,40510,40516,40517,40518,40601,40602,40603,41320);
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `curhealth`) VALUES
+(4764,33608,530,1,1,-2263.63,5559.49,67.0918,5.91667,180,0,9156), -- Alchemy
+(28648,33609,530,1,1,-2262.64,5561.96,67.0948,5.89921,180,0,9156), -- Blacksmithing
+(40266,33610,530,1,1,-2261.59,5564.54,67.095,5.93412,180,0,9156), -- Enchanting
+(40267,33611,530,1,1,-2260.64,5567.08,67.092,5.93412,180,0,9156), -- Engineering
+(40470,33612,530,1,1,-2264.54,5562.77,67.0939,2.79253,180,0,9156), -- Leatherworking
+(40471,33613,530,1,1,-2265.57,5560.32,67.0911,2.80998,180,0,9156), -- Tailoring
+(40510,33614,530,1,1,-2263.47,5565.35,67.0937,2.80998,180,0,9156), -- Jewelcrafting
+(40516,33615,530,1,1,-2262.36,5567.8,67.0909,2.79253,180,0,9156), -- Inscription
+(40517,33616,530,1,1,-2268.1,5563.18,67.0919,5.89921,180,0,9156), -- Herbalism
+(40518,33617,530,1,1,-2266.98,5565.78,67.0927,5.89921,180,0,9156), -- Mining
+(40601,33618,530,1,1,-2265.86,5568.36,67.0911,5.84685,180,0,9156), -- Skinning
+(40602,33619,530,1,1,-2267.52,5569.19,67.0896,2.74017,180,0,9156), -- Cooking
+(40603,33621,530,1,1,-2269.93,5564.2,67.09,2.75762,180,0,9156), -- First Aid
+(41320,33623,530,1,1,-2268.81,5566.68,67.0905,2.74017,180,0,9156); -- Fishing
diff --git a/sql/old/3.3.5a/2012_04_01_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_01_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..9d37f6ad4cb
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_00_world_spell_script_names.sql
@@ -0,0 +1,6 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_spinning_pain_spike';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(66316,'spell_spinning_pain_spike'),
+(67100,'spell_spinning_pain_spike'),
+(67101,'spell_spinning_pain_spike'),
+(67102,'spell_spinning_pain_spike');
diff --git a/sql/old/3.3.5a/2012_04_01_01_world_creature.sql b/sql/old/3.3.5a/2012_04_01_01_world_creature.sql
new file mode 100644
index 00000000000..f6dff34cfa9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_01_world_creature.sql
@@ -0,0 +1,26 @@
+-- Re-add deleted data
+DELETE FROM `creature` WHERE `guid` IN (4764,28648,40266,40267,40470,40471,40510,40516,40517,40518,40601,40602,40603,41320);
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(4764,26796,576,2,1,0,0,424.547,185.962,-34.9367,4.72984,3600,0,0,1,0,0,0,0,0),
+(28648,17148,530,1,1,0,0,-2910.22,6473.03,82.4898,2.49669,300,0,0,5914,0,0,0,0,0),
+(40267,37671,1,1,1,0,0,1391.2,-4486.23,31.4544,3.3355,300,0,0,42,0,0,0,0,0),
+(40470,37671,1,1,1,0,0,1392.66,-4481.87,31.3782,1.97284,300,0,0,42,0,0,0,0,0),
+(40471,37671,1,1,1,0,0,1393.92,-4489.57,31.4737,4.93701,300,0,0,42,0,0,0,0,0);
+
+-- Add missing spawns to db (trainers)
+DELETE FROM `creature` WHERE `guid` IN (40266,40510,40516,40517,40518,40601,40602,40603,41320,41674,41723,41775,41779,41780);
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`curhealth`) VALUES
+(40266,33608,530,1,1,-2263.63,5559.49,67.0918,5.91667,180,0,1), -- Alchemy
+(40510,33609,530,1,1,-2262.64,5561.96,67.0948,5.89921,180,0,1), -- Blacksmithing
+(40516,33610,530,1,1,-2261.59,5564.54,67.095,5.93412,180,0,1), -- Enchanting
+(40517,33611,530,1,1,-2260.64,5567.08,67.092,5.93412,180,0,1), -- Engineering
+(40518,33612,530,1,1,-2264.54,5562.77,67.0939,2.79253,180,0,1), -- Leatherworking
+(40601,33613,530,1,1,-2265.57,5560.32,67.0911,2.80998,180,0,1), -- Tailoring
+(40602,33614,530,1,1,-2263.47,5565.35,67.0937,2.80998,180,0,1), -- Jewelcrafting
+(40603,33615,530,1,1,-2262.36,5567.8,67.0909,2.79253,180,0,1), -- Inscription
+(41320,33616,530,1,1,-2268.1,5563.18,67.0919,5.89921,180,0,1), -- Herbalism
+(41674,33617,530,1,1,-2266.98,5565.78,67.0927,5.89921,180,0,1), -- Mining
+(41723,33618,530,1,1,-2265.86,5568.36,67.0911,5.84685,180,0,1), -- Skinning
+(41775,33619,530,1,1,-2267.52,5569.19,67.0896,2.74017,180,0,1), -- Cooking
+(41779,33621,530,1,1,-2269.93,5564.2,67.09,2.75762,180,0,1), -- First Aid
+(41780,33623,530,1,1,-2268.81,5566.68,67.0905,2.74017,180,0,1); -- Fishing
diff --git a/sql/old/3.3.5a/2012_04_01_02_world_spell_group_stack_rules.sql b/sql/old/3.3.5a/2012_04_01_02_world_spell_group_stack_rules.sql
new file mode 100644
index 00000000000..d42afd1d955
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_02_world_spell_group_stack_rules.sql
@@ -0,0 +1,9 @@
+-- Greater Blessing of Wisdom and Mana Spring Totem should not stack (hotfix)
+SET @GROUP := 1117;
+DELETE FROM `spell_group` WHERE id=@GROUP;
+INSERT INTO `spell_group`(`id`,`spell_id`) VALUES
+(@GROUP,25894), -- Greater Blessing of Wisdom
+(@GROUP,5677); -- Mana Spring (cast by Mana Spring Totem)
+DELETE FROM `spell_group_stack_rules` WHERE `group_id`=@GROUP;
+INSERT INTO `spell_group_stack_rules`(`group_id`,`stack_rule`) VALUES
+(@GROUP,3); -- Make them SPELL_GROUP_STACK_RULE_EXCLUSIVE_SAME_EFFECT
diff --git a/sql/old/3.3.5a/2012_04_01_03_world_trainers.sql b/sql/old/3.3.5a/2012_04_01_03_world_trainers.sql
new file mode 100644
index 00000000000..1edc9ae09af
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_03_world_trainers.sql
@@ -0,0 +1,83 @@
+-- Template updates
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33608; -- Alchemy
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16/*80*/,`trainer_type`=2 WHERE `entry`=33609; -- Blacksmithing
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33610; -- Enchanting
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33611; -- Engineering
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33612; -- Leatherworking
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16 WHERE `entry`=33613; -- Tailoring
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33614; -- Jewelcrafting
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33616; -- Herbalism
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33618; -- Skinning (guessed)
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33617; -- Mining (guessed)
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16 WHERE `entry`=33619; -- Cooking (guessed)
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16 WHERE `entry`=33621; -- First Aid (guessed)
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33615; -- Inscription (guessed)
+UPDATE `creature_template` SET `faction_A`=1744,`faction_H`=1744,`npcflag`=`npcflag`|16,`trainer_type`=2 WHERE `entry`=33623; -- Fishing (guessed)
+
+-- Model data
+UPDATE `creature_model_info` SET `bounding_radius`=0.11,`combat_reach`=0,`gender`=2 WHERE `modelid`=28738; -- shared by many
+UPDATE `creature_model_info` SET `bounding_radius`=0.14,`combat_reach`=0,`gender`=2 WHERE `modelid`=28758; -- shared by many
+
+-- Addon data
+DELETE FROM `creature_template_addon` WHERE `entry` IN (33608,33609,33610,33611,33612,33613,33614,33616,33618,33617,33619,33621,33615,33623);
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(33608,0,0,1,0, NULL), -- Alchemy
+(33609,0,0,1,0, NULL), -- Blacksmithing
+(33610,0,0,1,0, NULL), -- Enchanting
+(33611,0,0,1,0, NULL), -- Engineering
+(33612,0,0,1,0, NULL), -- Leatherworking
+(33613,0,0,1,0, NULL), -- Tailoring
+(33614,0,0,1,0, NULL), -- Jewelcrafting
+(33616,0,0,1,0, NULL), -- Herbalism
+(33618,0,0,1,0, NULL), -- Skinning (guessed)
+(33617,0,0,1,0, NULL), -- Mining (guessed)
+(33619,0,0,1,0, NULL), -- Cooking (guessed)
+(33621,0,0,1,0, NULL), -- First Aid (guessed)
+(33615,0,0,1,0, NULL), -- Inscription (guessed)
+(33623,0,0,1,0, NULL); -- Fishing (guessed)
+
+-- Trainer spells
+DELETE FROM `npc_trainer` WHERE `entry` IN (33608,33609,33610,33611,33612,33613,33614,33616,33618,33617,33619,33621,33615,33623);
+INSERT INTO `npc_trainer` (`entry`, `spell`, `spellcost`, `reqskill`, `reqskillvalue`, `reqlevel`) VALUES
+(33608, -201001, 0, 0, 0, 0), -- Alchemy
+(33608, -201002, 0, 0, 0, 0), -- Alchemy
+(33608, -201003, 0, 0, 0, 0), -- Alchemy
+(33609, -201004, 0, 0, 0, 0), -- Blacksmithing
+(33609, -201005, 0, 0, 0, 0), -- Blacksmithing
+(33609, -201006, 0, 0, 0, 0), -- Blacksmithing
+(33610, -201009, 0, 0, 0, 0), -- Enchanting
+(33610, -201010, 0, 0, 0, 0), -- Enchanting
+(33610, -201011, 0, 0, 0, 0), -- Enchanting
+(33611, -201012, 0, 0, 0, 0), -- Engineering
+(33611, -201013, 0, 0, 0, 0), -- Engineering
+(33611, -201014, 0, 0, 0, 0), -- Engineering
+(33612, -201027, 0, 0, 0, 0), -- Leatherworking
+(33612, -201028, 0, 0, 0, 0), -- Leatherworking
+(33612, -201029, 0, 0, 0, 0), -- Leatherworking
+(33613, -201039, 0, 0, 0, 0), -- Tailoring
+(33613, -201040, 0, 0, 0, 0), -- Tailoring
+(33613, -201041, 0, 0, 0, 0), -- Tailoring
+(33614, -201024, 0, 0, 0, 0), -- Jewelcrafting
+(33614, -201025, 0, 0, 0, 0), -- Jewelcrafting
+(33614, -201026, 0, 0, 0, 0), -- Jewelcrafting
+(33616, -201018, 0, 0, 0, 0), -- Herbalism
+(33616, -201019, 0, 0, 0, 0), -- Herbalism
+(33616, -201020, 0, 0, 0, 0), -- Herbalism
+(33618, -201036, 0, 0, 0, 0), -- Skinning
+(33618, -201037, 0, 0, 0, 0), -- Skinning
+(33618, -201038, 0, 0, 0, 0), -- Skinning
+(33617, -201033, 0, 0, 0, 0), -- Mining
+(33617, -201034, 0, 0, 0, 0), -- Mining
+(33617, -201035, 0, 0, 0, 0), -- Mining
+(33619, -202004, 0, 0, 0, 0), -- Cooking
+(33619, -202005, 0, 0, 0, 0), -- Cooking
+(33619, -202006, 0, 0, 0, 0), -- Cooking
+(33621, -202007, 0, 0, 0, 0), -- First Aid
+(33621, -202008, 0, 0, 0, 0), -- First Aid
+(33621, -202009, 0, 0, 0, 0), -- First Aid
+(33615, -201021, 0, 0, 0, 0), -- Inscription
+(33615, -201022, 0, 0, 0, 0), -- Inscription
+(33615, -201023, 0, 0, 0, 0), -- Inscription
+(33623, -202001, 0, 0, 0, 0), -- Fishing
+(33623, -202002, 0, 0, 0, 0), -- Fishing
+(33623, -202003, 0, 0, 0, 0); -- Fishing
diff --git a/sql/old/3.3.5a/2012_04_01_04_world_conditions.sql b/sql/old/3.3.5a/2012_04_01_04_world_conditions.sql
new file mode 100644
index 00000000000..e84307e0b05
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_04_world_conditions.sql
@@ -0,0 +1,5 @@
+-- Quest: Blending In (11633)
+-- Spell from Cape only Appliable in City Area
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=45614;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(17,0,45614,11633,23,4125,0,0,0, '', 'Shroud of the Scourge - Temple City of En''kilah');
diff --git a/sql/old/3.3.5a/2012_04_01_05_world_creature_template.sql b/sql/old/3.3.5a/2012_04_01_05_world_creature_template.sql
new file mode 100644
index 00000000000..a4d13f1513a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_05_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- CREATURE_FLAG_EXTRA_NO_XP_AT_KILL
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|64 WHERE `entry`=21267; -- Mana Beast
diff --git a/sql/old/3.3.5a/2012_04_01_06_world_sai.sql b/sql/old/3.3.5a/2012_04_01_06_world_sai.sql
new file mode 100644
index 00000000000..9b8857da1e4
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_06_world_sai.sql
@@ -0,0 +1,7 @@
+-- Fix quest 11468 - Falcon versus hawk
+SET @entry := 24747; -- Fjord Hawk
+UPDATE creature_template SET AIName='SmartAI' WHERE entry=@entry;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@entry AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@entry,0,0,1,8,0,100,0,44407,0,0,0,11,44408,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Fjord Hawk - On Spellhit - Cast spell on invoker'),
+(@entry,0,1,0,61,0,100,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Fjord Hawk - On Spellhit - Despawn');
diff --git a/sql/old/3.3.5a/2012_04_01_07_world_misc.sql b/sql/old/3.3.5a/2012_04_01_07_world_misc.sql
new file mode 100644
index 00000000000..346627fd88b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_01_07_world_misc.sql
@@ -0,0 +1,4 @@
+UPDATE `conditions` SET `ElseGroup`=0 WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=45614; -- typo fix for previous commit
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=47431;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(17,0,47431,0,23,4195,0,0,64,'','Capture Jormungar Spawn can only be used in Ice Heart Cavern');
diff --git a/sql/old/3.3.5a/2012_04_03_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_03_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..70f675daa20
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_03_00_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` = 36444;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(36444, 'spell_gen_wg_water');
diff --git a/sql/old/3.3.5a/2012_04_04_00_auth_realmlist.sql b/sql/old/3.3.5a/2012_04_04_00_auth_realmlist.sql
new file mode 100644
index 00000000000..18f2d7b3d4c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_04_00_auth_realmlist.sql
@@ -0,0 +1 @@
+ALTER TABLE `realmlist` CHANGE `address` `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '127.0.0.1';
diff --git a/sql/old/3.3.5a/2012_04_04_00_world_conditions.sql b/sql/old/3.3.5a/2012_04_04_00_world_conditions.sql
new file mode 100644
index 00000000000..55cab4ca730
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_04_00_world_conditions.sql
@@ -0,0 +1,7 @@
+-- Will of Sartharion should only target the drakes and Sartharion
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=61254;
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13, 1, 61254, 0, 0, 31, 0, 3, 30449, 0, 0, 0, '', 'Will of Sartharion'),
+(13, 1, 61254, 0, 1, 31, 0, 3, 30451, 0, 0, 0, '', 'Will of Sartharion'),
+(13, 1, 61254, 0, 2, 31, 0, 3, 30452, 0, 0, 0, '', 'Will of Sartharion'),
+(13, 1, 61254, 0, 3, 31, 0, 3, 28860, 0, 0, 0, '', 'Will of Sartharion');
diff --git a/sql/old/3.3.5a/2012_04_04_01_world_spell_dbc.sql b/sql/old/3.3.5a/2012_04_04_01_world_spell_dbc.sql
new file mode 100644
index 00000000000..7eccdf811e4
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_04_01_world_spell_dbc.sql
@@ -0,0 +1 @@
+UPDATE `spell_dbc` SET `EffectApplyAuraName1`=4 WHERE `Id`=56817;
diff --git a/sql/old/3.3.5a/2012_04_05_00_world_gameobject_template.sql b/sql/old/3.3.5a/2012_04_05_00_world_gameobject_template.sql
new file mode 100644
index 00000000000..d50c4ad8d1c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_05_00_world_gameobject_template.sql
@@ -0,0 +1,32 @@
+DELETE FROM `gameobject_template` WHERE `entry`=202931;
+INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `data0`, `data1`, `data2`, `data3`, `data4`, `data5`, `data6`, `data7`, `data8`, `data9`, `data10`, `data11`, `data12`, `data13`, `data14`, `data15`, `data16`, `data17`, `data18`, `data19`, `data20`, `data21`, `data22`, `data23`, `size`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `WDBVerified`) VALUES
+(202931, 5, 9463, 'Serpent Offering', '', '', '', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.17, 0, 0, 0, 0, 0, 0, 12340); -- -Unknown-
+
+UPDATE `gameobject_template` SET `questItem1`=30527, `questItem2`=30524, `questItem3`=30525, `questItem4`=30526 WHERE `entry`=184815; -- Sealed Coffin
+-- UPDATE `gameobject_template` SET `data0`=2061, `WDBVerified`=12340 WHERE `entry`=151951; -- Idol Oven Fire
+-- UPDATE `gameobject_template` SET `type`=5, `data3`=0, `data5`=0 WHERE `entry`=188187; -- Snow Pile
+UPDATE `gameobject_template` SET `size`=0.45 WHERE `entry`=190169; -- Tiger Lily
+UPDATE `gameobject_template` SET `unk1`='' WHERE `entry`=190549; -- The Zephyr
+-- UPDATE `gameobject_template` SET `data0`=2061 WHERE `entry`=191300; -- Fire
+UPDATE `gameobject_template` SET `displayId`=7836 WHERE `entry`=196485; -- Saronite Rock
+-- UPDATE `gameobject_template` SET `data0`=2061 WHERE `entry`=126337; -- 126337
+-- UPDATE `gameobject_template` SET `data0`=2061 WHERE `entry`=126338; -- 126338
+-- UPDATE `gameobject_template` SET `data0`=2061 WHERE `entry`=126339; -- 126339
+-- UPDATE `gameobject_template` SET `data0`=2061 WHERE `entry`=126340; -- 126340
+-- UPDATE `gameobject_template` SET `data0`=2061 WHERE `entry`=126341; -- 126341
+-- UPDATE `gameobject_template` SET `data0`=2061 WHERE `entry`=126345; -- 126345
+UPDATE `gameobject_template` SET `data2`=23787, `data7`=3605, `data19`=0 WHERE `entry`=202443; -- Dedication of Honor
+UPDATE `gameobject_template` SET `type`=10 WHERE `entry`=166872; -- Supply Crate
+UPDATE `gameobject_template` SET `data6`=-1000 WHERE `entry`=178559; -- Larva Spewer
+
+/*
+GameObject (Entry: 126337 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+GameObject (Entry: 126338 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+GameObject (Entry: 126339 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+GameObject (Entry: 126340 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+GameObject (Entry: 126341 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+GameObject (Entry: 126345 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+GameObject (Entry: 151951 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+GameObject (Entry: 191300 GoType: 8) have data0=2061 but SpellFocus (Id: 2061) not exist.
+Gameobject (Entry: 188192 GoType: 3) have data7=188187 but GO (Entry 188187) have not GAMEOBJECT_TYPE_TRAP (6) type.
+*/
diff --git a/sql/old/3.3.5a/2012_04_05_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_05_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..43f6760e8d6
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_05_00_world_spell_script_names.sql
@@ -0,0 +1,6 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` in (7384,7887,11584,11585);
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(7384, 'spell_warr_overpower'),
+(7887, 'spell_warr_overpower'),
+(11584, 'spell_warr_overpower'),
+(11585, 'spell_warr_overpower');
diff --git a/sql/old/3.3.5a/2012_04_05_01_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_05_01_world_spell_proc_event.sql
new file mode 100644
index 00000000000..076f97b8736
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_05_01_world_spell_proc_event.sql
@@ -0,0 +1,2 @@
+UPDATE `spell_proc_event` SET `SpellFamilyMask0`=0x80000000, `SpellFamilyMask1`=0 WHERE `entry`=67363; -- Fixes Libram of Veracity proc
+
diff --git a/sql/old/3.3.5a/2012_04_06_00_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_06_00_world_spell_proc_event.sql
new file mode 100644
index 00000000000..0fba3bb46d6
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_06_00_world_spell_proc_event.sql
@@ -0,0 +1 @@
+UPDATE `spell_proc_event` SET `SpellFamilyMask0`=0x10 WHERE `entry`=60132; -- Oblit/Scourge Strike Runic Power Up (T7 4s)
diff --git a/sql/old/3.3.5a/2012_04_06_01_world_spell_dbc.sql b/sql/old/3.3.5a/2012_04_06_01_world_spell_dbc.sql
new file mode 100644
index 00000000000..c0dc38ebf83
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_06_01_world_spell_dbc.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_dbc` WHERE `Id`=64748; -- Item - Death Knight T8 Tank 4P Bonus
+INSERT INTO `spell_dbc` (`Id`,`Dispel`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`Stances`,`StancesNot`,`Targets`,`CastingTimeIndex`,`AuraInterruptFlags`,`ProcFlags`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`RangeIndex`,`StackAmount`,`EquippedItemClass`,`EquippedItemSubClassMask`,`EquippedItemInventoryTypeMask`,`Effect1`,`Effect2`,`Effect3`,`EffectDieSides1`,`EffectDieSides2`,`EffectDieSides3`,`EffectRealPointsPerLevel1`,`EffectRealPointsPerLevel2`,`EffectRealPointsPerLevel3`,`EffectBasePoints1`,`EffectBasePoints2`,`EffectBasePoints3`,`EffectMechanic1`,`EffectMechanic2`,`EffectMechanic3`,`EffectImplicitTargetA1`,`EffectImplicitTargetA2`,`EffectImplicitTargetA3`,`EffectImplicitTargetB1`,`EffectImplicitTargetB2`,`EffectImplicitTargetB3`,`EffectRadiusIndex1`,`EffectRadiusIndex2`,`EffectRadiusIndex3`,`EffectApplyAuraName1`,`EffectApplyAuraName2`,`EffectApplyAuraName3`,`EffectAmplitude1`,`EffectAmplitude2`,`EffectAmplitude3`,`EffectMultipleValue1`,`EffectMultipleValue2`,`EffectMultipleValue3`,`EffectMiscValue1`,`EffectMiscValue2`,`EffectMiscValue3`,`EffectMiscValueB1`,`EffectMiscValueB2`,`EffectMiscValueB3`,`EffectTriggerSpell1`,`EffectTriggerSpell2`,`EffectTriggerSpell3`,`EffectSpellClassMaskA1`,`EffectSpellClassMaskA2`,`EffectSpellClassMaskA3`,`EffectSpellClassMaskB1`,`EffectSpellClassMaskB2`,`EffectSpellClassMaskB3`,`EffectSpellClassMaskC1`,`EffectSpellClassMaskC2`,`EffectSpellClassMaskC3`,`MaxTargetLevel`,`SpellFamilyName`,`SpellFamilyFlags1`,`SpellFamilyFlags2`,`SpellFamilyFlags3`,`MaxAffectedTargets`,`DmgClass`,`PreventionType`,`DmgMultiplier1`,`DmgMultiplier2`,`DmgMultiplier3`,`AreaGroupId`,`SchoolMask`,`Comment`) VALUES
+(64748,1,0,384,0,0,0,0,131080,0,0,0,0,0,1,0,0,101,0,0,80,80,28,1,0,-1,0,0,6,0,0,1,0,1,'0','0','0',-11,0,-11,0,0,0,1,0,0,0,0,0,0,0,0,87,0,0,0,0,0,'0','0','0',1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16777829,0,0,0,15,0,0,0,0,0,0,'1','1','1',0,32,'Item - Death Knight T8 Tank 4P Bonus');
diff --git a/sql/old/3.3.5a/2012_04_06_02_world_gameobject_template.sql b/sql/old/3.3.5a/2012_04_06_02_world_gameobject_template.sql
new file mode 100644
index 00000000000..5089579998d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_06_02_world_gameobject_template.sql
@@ -0,0 +1,4 @@
+-- GO required by spell 70477 - Cleanse Quel'Delar
+DELETE FROM `gameobject_template` WHERE `entry`=300246;
+INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `faction`, `flags`, `size`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `data0`, `data1`, `data2`, `data3`, `data4`, `data5`, `data6`, `data7`, `data8`, `data9`, `data10`, `data11`, `data12`, `data13`, `data14`, `data15`, `data16`, `data17`, `data18`, `data19`, `data20`, `data21`, `data22`, `data23`, `AIName`, `ScriptName`, `WDBVerified`) VALUES
+(300246, 8, 0, 'TEMP Sunwell', '', '', '', 0, 0, 1, 0, 0, 0, 0, 0, 0, 1641, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', 1);
diff --git a/sql/old/3.3.5a/2012_04_06_03_world_spell_dbc.sql b/sql/old/3.3.5a/2012_04_06_03_world_spell_dbc.sql
new file mode 100644
index 00000000000..90ac4ac0f51
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_06_03_world_spell_dbc.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_dbc` WHERE `Id`=64934; -- Item - Warrior T8 Protection 4P Bonus
+INSERT INTO `spell_dbc`(`Id`,`Dispel`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`Stances`,`StancesNot`,`Targets`,`CastingTimeIndex`,`AuraInterruptFlags`,`ProcFlags`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`RangeIndex`,`StackAmount`,`EquippedItemClass`,`EquippedItemSubClassMask`,`EquippedItemInventoryTypeMask`,`Effect1`,`Effect2`,`Effect3`,`EffectDieSides1`,`EffectDieSides2`,`EffectDieSides3`,`EffectRealPointsPerLevel1`,`EffectRealPointsPerLevel2`,`EffectRealPointsPerLevel3`,`EffectBasePoints1`,`EffectBasePoints2`,`EffectBasePoints3`,`EffectMechanic1`,`EffectMechanic2`,`EffectMechanic3`,`EffectImplicitTargetA1`,`EffectImplicitTargetA2`,`EffectImplicitTargetA3`,`EffectImplicitTargetB1`,`EffectImplicitTargetB2`,`EffectImplicitTargetB3`,`EffectRadiusIndex1`,`EffectRadiusIndex2`,`EffectRadiusIndex3`,`EffectApplyAuraName1`,`EffectApplyAuraName2`,`EffectApplyAuraName3`,`EffectAmplitude1`,`EffectAmplitude2`,`EffectAmplitude3`,`EffectMultipleValue1`,`EffectMultipleValue2`,`EffectMultipleValue3`,`EffectMiscValue1`,`EffectMiscValue2`,`EffectMiscValue3`,`EffectMiscValueB1`,`EffectMiscValueB2`,`EffectMiscValueB3`,`EffectTriggerSpell1`,`EffectTriggerSpell2`,`EffectTriggerSpell3`,`EffectSpellClassMaskA1`,`EffectSpellClassMaskA2`,`EffectSpellClassMaskA3`,`EffectSpellClassMaskB1`,`EffectSpellClassMaskB2`,`EffectSpellClassMaskB3`,`EffectSpellClassMaskC1`,`EffectSpellClassMaskC2`,`EffectSpellClassMaskC3`,`MaxTargetLevel`,`SpellFamilyName`,`SpellFamilyFlags1`,`SpellFamilyFlags2`,`SpellFamilyFlags3`,`MaxAffectedTargets`,`DmgClass`,`PreventionType`,`DmgMultiplier1`,`DmgMultiplier2`,`DmgMultiplier3`,`AreaGroupId`,`SchoolMask`,`Comment`) VALUES
+(64934,1,0,384,0,0,0,0,131080,0,0,0,0,0,1,0,0,101,0,0,80,80,28,1,0,-1,0,0,6,0,0,1,0,1,'0','0','0',-21,0,-11,0,0,0,1,0,0,0,0,0,0,0,0,87,0,0,0,0,0,'0','0','0',126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16777829,0,0,0,4,0,0,0,0,0,0,'1','1','1',0,32, 'Item - Warrior T8 Protection 4P Bonus');
diff --git a/sql/old/3.3.5a/2012_04_06_04_world_page_text.sql b/sql/old/3.3.5a/2012_04_06_04_world_page_text.sql
new file mode 100644
index 00000000000..97c0d9afe2d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_06_04_world_page_text.sql
@@ -0,0 +1,25 @@
+DELETE FROM `page_text` WHERE entry IN (2177,2295,2296,2297,2301,2302,2303,2308,2309,3036,3045,3046,3047,3049,3050,3051,3052,3053,3378,3544,3563,3564,3565);
+INSERT INTO `page_text` (`entry`, `text`, `next_page`) VALUES
+(2177, 'Valea Twinblades \nWarrior of the Scarlet Crusade\nCitizen of Alterac \nLast seen deep in the Eastern Plaguelands', 0),
+(2295, 'Before the Age of Memory, the gentle Earthmother breathed upon the golden mists of dawn. Where the amber clouds came to rest, there were endless fields of flowing wheat and barley. This was the basin of her works - the great basket of life and hope.', 2296),
+(2296, 'The Earthmother\'s eyes shone down upon the lands she had breathed into creation. Her right eye, An\'she (the sun), gave warmth and light to the land. Her left eye, Mu\'sha (the moon), gave peace and sleep to the stirring creatures of the dawning. Such was the power of her gaze that the Earthmother closed one dreaming eye for every turning of the sky. Thus, her loving gaze turned day into night for the first dawning of the world. $B', 2297),
+(2297, 'While the right eye shone down upon the golden dawn, the Earthmother\'s gentle hands spread out across the golden plains. Wherever the shadow of her arms passed, a noble people arose from the rich soil. The Shu\'halo (the tauren) arose to give thanks and prayer to their loving mother. There, in the endless fields of dawn, the children of the earth swore themselves to her grace and vowed to bless her name until the final darkening of the world.', 0),
+(2301, 'Into the brave hearts of her pure children, the Earthmother placed the love of the hunt. For the creatures of the first dawn were savage and fierce. They hid from the Earthmother, finding solace in the shadows and the wild places of the land. The Shu\'halo hunted these beasts wherever they could be found and tamed them with the Earthmother\'s blessing. ', 2302),
+(2302, 'One great spirit eluded them, however. Apa\'ro (known as Malorne to the night elves), was a proud stag of snow white fur. His antlers scraped the roof of the heavens and his mighty hooves stamped out the deep places of the world. The Shu\'halo hunted Apa\'ro to the corners of the dawning world - and closed in to snare the proud stag.', 2303),
+(2303, 'Seeking to escape, the great stag leapt into the sky. Yet, as his escape seemed assured, his mighty antlers tangled in the stars which held him fast. Though he kicked and struggled, Apa\'ro could not loose himself from the heavens. It was then that Mu\'sha found him as she chased her brother, An\'she, towards the dawn. Mu\'sha saw the mighty stag as he struggled and fell in love with him immediately. ', 2304),
+(2308, 'As the mists of dawn faded and the Age of Memory advanced, the demigod, Cenarius, went his own way through the fields of the world. The Shu\'halo (tauren) were sorrowful at his passing and forgot much of the druidism he had taught them. As the generations passed, they forgot how to speak with the trees and the wild things of the land. The dark whispers from the deeps of the world drifted up to their ears once again.', 2309),
+(2309, 'Though the children of the earth closed out the evil whisperings, a terrible curse befell their roaming tribes. Out of the black lands of the west came a horde of murderous creatures - the centaur. Cannibals and ravagers, the centaur fell upon the Shu\'halo like a plague. Though the braves and hunters fought with the Earthmother\'s blessing in their hearts, the centaur could not be defeated.', 2310),
+(3544, 'You have found the wreckage of a mysterious object. Beyond the flames, you are able to make out an insignia marked "M:1815212085". You wonder what world this object must be from...', 0),
+(3378, 'INVINCIBLE$B$BBeloved steed of Prince Arthas Menethil$B$BLoyal and great of heart in life, may you find peace in death.$B$BPure streams and green pastures, devoted friend.', 0),
+(3565, 'Gritting his teeth, Marcus gestured as light flashed over him, restoring his strength.$B$BTavi stared anxiously as he rose to his full height, engulfing her in his shadow. He thrust his hand forward, sending a wave of righteous force through her. Eyes rolled back as she wavered for several seconds before regaining consciousness.$B$B"I\'ve recently taken the path of... retribution."$B$BThe mischievous smirk returned to her face, "Well then, this is going to be fun."$B$B', 0),
+(3564, 'Marcus took both her hands in one of his as he reassured her, "It\'s fine. What is your specialization?"$B$BHer head snapped up, eyes burning with renewed life as shadowy energy channeled through her hands into Marcus, dropping him to his knees in agony.$B$B"Affliction, actually."$B', 3565),
+(3563, '"Interested in some more company?" she purred as her hands weaved through a complex summoning ritual, stopping only when she felt the warmth of a new presence behind her.$B$BAll color drained from Marcus\'s face as he struggled to protest. "I... I don\'t think that\'s appropriate."$B$BConfused, Tavi turned to see what was wrong. A hideous fel hound stood ready, drooling onto the floor as it stared intently at the half-armored paladin.$B$B"No! No that\'s not what I meant." she stammered as she dispelled the hungry demon. "I\'m sorry, that\'s not really my specialization...."', 3564),
+(3045, 'First Watch, Eight Bells$BWatches changed. All is well.', 3046),
+(3046, 'Middle Watch, One Bell$BCedric found attempting to break into Captain\'s wine cabinet. Disciplined.', 3047),
+(3047, 'Middle Watch, Two Bells$BCedric climbed rigging, became tangled and fell. Attended by ship\'s surgeon. Sent below to sober up.', 3049),
+(3049, 'Middle Watch, Four Bells$BBottle of rum found in Cedric\'s pants. Disciplined.', 3050),
+(3050, 'Middle Watch, Five Bells$BCedric\'s clothes found. Cedric found separately. Cedric disciplined.', 3051),
+(3051, 'Middle Watch, Six Bells$BCedric singing loudly. Woke Captain. Cedric disciplined by Captain.', 3052),
+(3052, 'Middle Watch, Eight Bells$BWatches changed. All quiet. Two men sent to locate Cedric.$B', 3053),
+(3053, 'Morning Watch, One Bell$BFire in Captain\'s quarters. All hands roused. Throwing powder overboard. ', 0),
+(3036, 'The mighty creature\'s maw opened wide, tossing bolts of icy water toward our vessel. Those terrible jaws clamped down upon the bow of our ship, tearing it from the hull. Sailors and cargo were thrown violently into the sea as the remnants of the ship disappeared beneath the waves.$B$BThe last thing I remember was flying from the broken hull, hitting the inky waters, and plunging beneath the waves. The world went dark and I thought for certain I\'d drawn my last breath. When I awoke in Theramore\'s infirmary, I knew someone had to tell our story.', 0);
diff --git a/sql/old/3.3.5a/2012_04_07_00_characters_lag_reports.sql b/sql/old/3.3.5a/2012_04_07_00_characters_lag_reports.sql
new file mode 100644
index 00000000000..151ace1c976
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_07_00_characters_lag_reports.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `lag_reports` ADD `latency` int(10) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `lag_reports` ADD `createTime` int(10) unsigned NOT NULL DEFAULT '0';
diff --git a/sql/old/3.3.5a/2012_04_07_00_world_gameobject.sql b/sql/old/3.3.5a/2012_04_07_00_world_gameobject.sql
new file mode 100644
index 00000000000..c63fc753d32
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_07_00_world_gameobject.sql
@@ -0,0 +1,5 @@
+UPDATE `gameobject_template` SET `faction`=54 WHERE `entry`=178164;
+SET @GUID := 247;
+DELETE FROM `gameobject` WHERE `guid`=@GUID;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(@GUID,178164,409,1,1,736.6528,-1176.32,-118.0967,-0.6806787,0,0,0,1,120,255,1); -- Hot Coal, damage
diff --git a/sql/old/3.3.5a/2012_04_07_01_world_game_event.sql b/sql/old/3.3.5a/2012_04_07_01_world_game_event.sql
new file mode 100644
index 00000000000..7b74a90b49d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_07_01_world_game_event.sql
@@ -0,0 +1,2 @@
+UPDATE `game_event` SET `start_time` = '2012-04-08 00:01:00' WHERE `eventEntry` =9; -- Noblegarden
+UPDATE `game_event` SET `start_time` = '2012-04-29 00:01:00' WHERE `eventEntry` =10; -- Children's Week
diff --git a/sql/old/3.3.5a/2012_04_07_02_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_07_02_world_spell_proc_event.sql
new file mode 100644
index 00000000000..62ef49bc657
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_07_02_world_spell_proc_event.sql
@@ -0,0 +1 @@
+UPDATE `spell_proc_event` SET `procFlags`=0 WHERE `entry`=70805;
diff --git a/sql/old/3.3.5a/2012_04_08_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_08_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..ca97f419e11
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_08_00_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_sindragosa_ice_tomb_dummy';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(69712,'spell_sindragosa_ice_tomb_dummy');
diff --git a/sql/old/3.3.5a/2012_04_08_01_world_creature_template.sql b/sql/old/3.3.5a/2012_04_08_01_world_creature_template.sql
new file mode 100644
index 00000000000..c6665729b75
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_08_01_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Gymer
+UPDATE `creature_template` SET `unit_class`=4,`spell1`=55426,`spell2`=55429,`spell3`=55516,`spell4`=55421,`VehicleId`=205 WHERE `entry`=29884;
diff --git a/sql/old/3.3.5a/2012_04_08_02_world_spell_dbc.sql b/sql/old/3.3.5a/2012_04_08_02_world_spell_dbc.sql
new file mode 100644
index 00000000000..5775428668d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_08_02_world_spell_dbc.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_dbc` WHERE `Id`=31934; -- Blessed Life
+INSERT INTO `spell_dbc` (`Id`,`Dispel`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`Stances`,`StancesNot`,`Targets`,`CastingTimeIndex`,`AuraInterruptFlags`,`ProcFlags`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`RangeIndex`,`StackAmount`,`EquippedItemClass`,`EquippedItemSubClassMask`,`EquippedItemInventoryTypeMask`,`Effect1`,`Effect2`,`Effect3`,`EffectDieSides1`,`EffectDieSides2`,`EffectDieSides3`,`EffectRealPointsPerLevel1`,`EffectRealPointsPerLevel2`,`EffectRealPointsPerLevel3`,`EffectBasePoints1`,`EffectBasePoints2`,`EffectBasePoints3`,`EffectMechanic1`,`EffectMechanic2`,`EffectMechanic3`,`EffectImplicitTargetA1`,`EffectImplicitTargetA2`,`EffectImplicitTargetA3`,`EffectImplicitTargetB1`,`EffectImplicitTargetB2`,`EffectImplicitTargetB3`,`EffectRadiusIndex1`,`EffectRadiusIndex2`,`EffectRadiusIndex3`,`EffectApplyAuraName1`,`EffectApplyAuraName2`,`EffectApplyAuraName3`,`EffectAmplitude1`,`EffectAmplitude2`,`EffectAmplitude3`,`EffectMultipleValue1`,`EffectMultipleValue2`,`EffectMultipleValue3`,`EffectMiscValue1`,`EffectMiscValue2`,`EffectMiscValue3`,`EffectMiscValueB1`,`EffectMiscValueB2`,`EffectMiscValueB3`,`EffectTriggerSpell1`,`EffectTriggerSpell2`,`EffectTriggerSpell3`,`EffectSpellClassMaskA1`,`EffectSpellClassMaskA2`,`EffectSpellClassMaskA3`,`EffectSpellClassMaskB1`,`EffectSpellClassMaskB2`,`EffectSpellClassMaskB3`,`EffectSpellClassMaskC1`,`EffectSpellClassMaskC2`,`EffectSpellClassMaskC3`,`MaxTargetLevel`,`SpellFamilyName`,`SpellFamilyFlags1`,`SpellFamilyFlags2`,`SpellFamilyFlags3`,`MaxAffectedTargets`,`DmgClass`,`PreventionType`,`DmgMultiplier1`,`DmgMultiplier2`,`DmgMultiplier3`,`AreaGroupId`,`SchoolMask`,`Comment`) VALUES
+(31934,0,0,384,0,0,0,0,0,0,0,131072,0,0,1,0,1048576,100,1,0,0,0,21,1,0,-1,0,0,6,0,0,1,0,0,'0','0','0',-51,0,0,0,0,0,1,0,0,0,0,0,0,0,0,87,0,0,0,0,0,'0','0','0',127,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,'1','0','0',0,0,'Blessed Life');
diff --git a/sql/old/3.3.5a/2012_04_08_02_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_08_02_world_spell_script_names.sql
new file mode 100644
index 00000000000..dd23c9ef560
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_08_02_world_spell_script_names.sql
@@ -0,0 +1,6 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_sindragosa_mystic_buffet';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(70127,'spell_sindragosa_mystic_buffet'),
+(72528,'spell_sindragosa_mystic_buffet'),
+(72529,'spell_sindragosa_mystic_buffet'),
+(72530,'spell_sindragosa_mystic_buffet');
diff --git a/sql/old/3.3.5a/2012_04_08_03_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_08_03_world_spell_script_names.sql
new file mode 100644
index 00000000000..744a8bad10d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_08_03_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id`=-1064;
+INSERT INTO `spell_script_names` VALUES
+(-1064, 'spell_sha_chain_heal');
diff --git a/sql/old/3.3.5a/2012_04_12_00_world_creature_template.sql b/sql/old/3.3.5a/2012_04_12_00_world_creature_template.sql
new file mode 100644
index 00000000000..ef4596939f5
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_12_00_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Update proper modelid for Celestial Steed (31957 is wrong)
+UPDATE `creature_template` SET `modelid1`=31958,`modelid2`=0 WHERE `entry`=40625;
diff --git a/sql/old/3.3.5a/2012_04_12_01_world_creature_template.sql b/sql/old/3.3.5a/2012_04_12_01_world_creature_template.sql
new file mode 100644
index 00000000000..bfe7b698ae9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_12_01_world_creature_template.sql
@@ -0,0 +1,6 @@
+UPDATE `creature_template` SET `WDBVerified`=12340 WHERE `entry`=40624; -- Verified
+
+-- Remove temp entry 68686 and replace with wdb verified 38686
+UPDATE `creature_template` SET `difficulty_entry_3`=38686 WHERE `entry`=36950;
+UPDATE `creature_template` SET `minlevel`=82,`maxlevel`=82,`exp`=2,`faction_A`=84,`faction_H`=84,`mindmg`=488,`maxdmg`=642,`attackpower`=782,`unit_flags`=32832,`dynamicflags`=8,`minrangedmg`=363,`maxrangedmg`=521,`rangedattackpower`=121 WHERE `entry`=38686;
+DELETE FROM `creature_template` WHERE `entry`=68686;
diff --git a/sql/old/3.3.5a/2012_04_12_02_world_spell_bonus_data.sql b/sql/old/3.3.5a/2012_04_12_02_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..db35f5d97ee
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_12_02_world_spell_bonus_data.sql
@@ -0,0 +1,29 @@
+-- Druid
+UPDATE `spell_bonus_data` SET `direct_bonus`=0,`dot_bonus`=0 WHERE `entry` IN (779,1822,60089);
+DELETE FROM `spell_bonus_data` WHERE `entry` IN (1079,9007,22568);
+INSERT INTO `spell_bonus_data` (`entry`,`direct_bonus`,`dot_bonus`,`ap_bonus`,`ap_dot_bonus`,`comments`) VALUES
+(1079,0,0,-1,-1, 'Druid - Rip'),
+(9007,0,0,-1,-1, 'Druid - Pounce Bleed'),
+(22568,0,0,-1,-1, 'Druid - Ferocious Bite');
+
+-- Hunter
+UPDATE `spell_bonus_data` SET `direct_bonus`=0,`dot_bonus`=0 WHERE `entry` IN (3044,3674,53352,13812,13797,1978,42243);
+UPDATE `spell_bonus_data` SET `ap_dot_bonus`=0.1 WHERE `entry`=13812;
+DELETE FROM `spell_bonus_data` WHERE `entry` IN (24131,53353);
+INSERT INTO `spell_bonus_data` (`entry`,`direct_bonus`,`dot_bonus`,`ap_bonus`,`ap_dot_bonus`,`comments`) VALUES
+(24131,0,0,-1,-1, 'Hunter - Wyvern Sting (triggered)'),
+(53353,0,0,-1,-1, 'Hunter - Chimera Shot (Serpent)');
+DELETE FROM `spell_ranks` WHERE `first_spell_id`=24131;
+INSERT INTO `spell_ranks` VALUES
+(24131,24131,1),
+(24131,24134,2),
+(24131,24135,3),
+(24131,27069,4),
+(24131,49009,5),
+(24131,49010,6);
+
+-- Rogue
+UPDATE `spell_bonus_data` SET `direct_bonus`=0,`dot_bonus`=0 WHERE `entry` IN (2818,2819,11353,11354,25349,26968,27187,57969,57970);
+
+-- Howling blast
+UPDATE `spell_bonus_data` SET `ap_bonus`=0.2 WHERE `entry`=49184;
diff --git a/sql/old/3.3.5a/2012_04_12_03_world_spell_bonus_data.sql b/sql/old/3.3.5a/2012_04_12_03_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..d2262e52e98
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_12_03_world_spell_bonus_data.sql
@@ -0,0 +1,8 @@
+-- Fixes some spell power stacking exploits
+DELETE FROM `spell_bonus_data` WHERE `entry` IN (44525,18798,16614,7712,13897);
+INSERT INTO `spell_bonus_data` (`entry`,`direct_bonus`,`dot_bonus`,`ap_bonus`,`ap_dot_bonus`,`comments`) VALUES
+(44525,0,0,-1,-1, 'Enchant Weapon - Icebreaker'),
+(18798,0,0,-1,-1, 'Item - Freezing Band'),
+(16614,0,0,-1,-1, 'Item - Storm Gauntlets'),
+(7712,0,0,-1,-1, 'Item - Fiery Retributer | Blazefury Medallion'),
+(13897,0,0,-1,-1, 'Enchant Weapon - Fiery Weapon');
diff --git a/sql/old/3.3.5a/2012_04_12_04_world_creature_template.sql b/sql/old/3.3.5a/2012_04_12_04_world_creature_template.sql
new file mode 100644
index 00000000000..35664ec5198
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_12_04_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Update modelid for Invincible (with not bugged animation)
+UPDATE `creature_template` SET `modelid1`=31007,`modelid2`=0,`WDBVerified`=-12340 WHERE `entry`=38545;
diff --git a/sql/old/3.3.5a/2012_04_12_05_world_command.sql b/sql/old/3.3.5a/2012_04_12_05_world_command.sql
new file mode 100644
index 00000000000..8eb87155cb2
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_12_05_world_command.sql
@@ -0,0 +1,2 @@
+DELETE FROM `trinity_string` WHERE `entry` IN(555,556);
+DELETE FROM `command` WHERE `name`='hover';
diff --git a/sql/old/3.3.5a/2012_04_13_00_world_sai.sql b/sql/old/3.3.5a/2012_04_13_00_world_sai.sql
new file mode 100644
index 00000000000..0fd4bdddd9b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_13_00_world_sai.sql
@@ -0,0 +1,25 @@
+UPDATE `smart_scripts` SET `target_type`=`action_param6` WHERE
+(`entryorguid`=369200 AND `source_type`=9 AND `id`=3) OR
+(`entryorguid`=369201 AND `source_type`=9 AND `id`=3) OR
+(`entryorguid`=3692 AND `source_type`=0 AND `id`=2) OR
+(`entryorguid`=3692 AND `source_type`=0 AND `id`=3) OR
+(`entryorguid`=3584 AND `source_type`=0 AND `id`=3) OR
+(`entryorguid`=3584 AND `source_type`=0 AND `id`=4) OR
+(`entryorguid`=954600 AND `source_type`=9 AND `id`=2) OR
+(`entryorguid`=954600 AND `source_type`=9 AND `id`=3) OR
+(`entryorguid`=7207 AND `source_type`=0 AND `id`=1) OR
+(`entryorguid`=7207 AND `source_type`=0 AND `id`=2) OR
+(`entryorguid`=911700 AND `source_type`=9 AND `id`=3);
+
+UPDATE `smart_scripts` SET `action_param6`=0 WHERE
+(`entryorguid`=369200 AND `source_type`=9 AND `id`=3) OR
+(`entryorguid`=369201 AND `source_type`=9 AND `id`=3) OR
+(`entryorguid`=3692 AND `source_type`=0 AND `id`=2) OR
+(`entryorguid`=3692 AND `source_type`=0 AND `id`=3) OR
+(`entryorguid`=3584 AND `source_type`=0 AND `id`=3) OR
+(`entryorguid`=3584 AND `source_type`=0 AND `id`=4) OR
+(`entryorguid`=954600 AND `source_type`=9 AND `id`=2) OR
+(`entryorguid`=954600 AND `source_type`=9 AND `id`=3) OR
+(`entryorguid`=7207 AND `source_type`=0 AND `id`=1) OR
+(`entryorguid`=7207 AND `source_type`=0 AND `id`=2) OR
+(`entryorguid`=911700 AND `source_type`=9 AND `id`=3);
diff --git a/sql/old/3.3.5a/2012_04_13_01_world_misc.sql b/sql/old/3.3.5a/2012_04_13_01_world_misc.sql
new file mode 100644
index 00000000000..e4d04449a3f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_13_01_world_misc.sql
@@ -0,0 +1,219 @@
+-- Gnomish Playback Device (item 52709) Targeting condition -- by norfik closes #2169
+DELETE FROM `conditions` WHERE `SourceEntry`=74222 AND `ConditionValue2` IN (1268, 7955, 6119);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(17, 0, 74222, 1, 31, 3, 1268, 0, 63, '', 'Gnomish Playback Device on Ozzie Togglevolt'),
+(17, 0, 74222, 2, 31, 3, 7955, 0, 63, '', 'Gnomish Playback Device on Milli Featherwhistle'),
+(17, 0, 74222, 3, 31, 3, 6119, 0, 63, '', 'Gnomish Playback Device on Tog Rustsprocket');
+
+-- fix revenge ap coeff -- by ric101 closes #3344
+UPDATE `spell_bonus_data` SET `ap_bonus` = 0.310 WHERE `entry` = 6572;
+
+-- fix life seed sp coeff -- by warpten closes #4162
+DELETE FROM `spell_bonus_data` WHERE `entry`=48503;
+INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `ap_dot_bonus`, `comments`) VALUES
+(48503,0,0,0,0, 'Druid - Living Seed Heal');
+
+-- fix glyph of shadowflame proc only allow on damage. by kandera closes #3530
+UPDATE `spell_proc_event` SET `procEx` = procEx|262144 WHERE`entry` = 63310; -- Glyph of shadowflame fix
+
+-- Disable deprecated quests /in 2.4/ from Midsummer Festival - The Festival of Fire {A/H} by trista closes #5982
+DELETE FROM `disables` WHERE `sourceType` = 1 AND `entry` in (9367,9368);
+INSERT INTO `disables` (`sourceType`,`entry`,`flags`,`params_0`,`params_1`,`comment`) VALUES
+(1,9367,0,0,0,'Disable quest The Festival of Fire {A}/Deprecated after 2.4 Midsummer Festival revamp/'),
+(1,9368,0,0,0,'Disable quest The Festival of Fire {H}/Deprecated after 2.4 Midsummer Festival revamp/');
+
+-- fix gameobject spawn for just maces sign -- by mrsmite closes #5849
+DELETE FROM `gameobject` WHERE `guid` = 10714;
+UPDATE `gameobject` SET `guid` = 10714 WHERE `guid` = 61895 AND `id` = 2157;
+
+-- update npc texts. by helias closes #6098
+DELETE FROM `npc_text` WHERE `ID` IN (10719,10782,10783,10787,10788,2838,9072,9110,10310,13293,13641,14089,15077,15155,15240,15412,15866,15873,15877,8663,8244,8254,8255,8282,8291,8296,8298,11093,3464,4776,4713,12130,13002,9984,12977,12978,10918,10999,10986,10991);
+INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `lang0`, `prob0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`) VALUES
+(10719, '$B$BWorry not, child. Look in your pack and you will find it once more.', NULL, 0, 1, 0, 0, 0, 0, 0, 0),
+(10782, 'Sayoc, da ugly orc here, teach you daggers. You want teaching in other places, you talk to Ileda in da Farstrider Square of Silvermoon or Archibald in the War Quarter of Undercity, hokay?', 'Sayoc, da ugly orc here, teach you daggers. You want teaching in other places, you talk to Ileda in da Farstrider Square of Silvermoon or Archibald in the War Quarter of Undercity, hokay?', 1, 1, 0, 0, 0, 0, 0, 0),
+(10783, 'You want to punch things, yah? Talk to Sayoc right here. He teach you.', 'You want to punch things, yah? Talk to Sayoc right here. He teach you.', 1, 1, 0, 0, 0, 0, 0, 0),
+(10787, 'Ileda of da blood elves, in Farstrider Square of Silvermoon, train her students in both one and two-handed swords. Archibald, da Undercity"s weapon master, also train you, mon. He in da War Quarter.', 'Ileda of da blood elves, in Farstrider Square of Silvermoon, train her students in both one and two-handed swords. Archibald, da Undercity"s weapon master, also train you, mon. He in da War Quarter.', 1, 1, 0, 0, 0, 0, 0, 0),
+(10788, 'Hanashi here knows staves. If you want a sturdier instructor, go to Thunder Bluff. Ansekhwa will teach you on the lower central rise there.', '', 1, 1, 0, 0, 0, 0, 0, 0),
+(2838, '', 'Sure thing, $N. Here"s another for you.', 0, 1, 0, 0, 0, 0, 0, 0),
+(9072, 'A search of the corpse"s clothing and equipment reveals the insignia you need, undamaged by the battle and foul environment.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(9110, 'Say, you happen to see that arch in the lake to the west? I wonder where that goes? I should go divin" over there.', '', 0, 1, 0, 1, 0, 0, 0, 0),
+(10310, 'You must be exalted with the blood elves before I will teach you a riding skill, $c.', '', 1, 1, 0, 1, 0, 0, 0, 0),
+(13293, 'Please hurry, $N. I am in a great deal of pain and time is running out.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(13641, '', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(14089, 'I"ve got a lead on Norgannon"s keystone, which guards access to Ulduar"s archives, but the Titans divided it into two pieces and secreted them away.$B$BOne of the pieces, the keystone"s shell, is held within the Inventor"s Library on the northern coast, south of Ulduar itself. The first thing you"ll need to do is retrieve the fragments of an access disk from the library"s guardians.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(15077, 'There you are! I was beginning to think that the Sunreavers had intercepted you. Are you ready to deliver the tome to our representatives in Icecrown?', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(15155, 'These appear to be the remains of Thalorien Dawnseeker, the last wielder of Quel"Delar.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(15240, 'I will escort you into the Sunwell when you"re ready.', 'I will escort you into the Sunwell when you"re ready.', 0, 1, 0, 0, 0, 0, 0, 0),
+(15412, 'We got the final barrier blockin" entry to Frostwing Halls down, $g lad:lass;. Only Sindragosa stands between the Lich King and divine retribution! What are ye waitin" for?!', '', 0, 1, 0, 5, 0, 0, 0, 0),
+(15866, 'De Darkspears have a home again! An" we couldn"t have done it wit"out ya helpin", $N. Now, we celebrate!', '', 0, 1, 0, 1, 0, 1, 0, 0),
+(15873, 'Vol"jin told me ta keep hittin" da drum till he gets back. If ya be waitin" for him, he"d be back soon to take back da Isles.$B$BJust wait here and enjoy da music!', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(15877, 'We require da help of allies on da islands.$B$BZen"tabra has been watching over da animals of de Islands for some time now. We"d need her help and da help of da animal creatures.$B$BBwonsamdi is a powerful loa dat controls de spirits of de dead on da islands. His blessing is crucial for our attack.$B$BOnce our allies have joined us, Zalazane and his army of mind-controlled trolls will have no chance! Then, da Echo Isles will be de Darkspears!', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(8663, 'Thank you for delivering that list! My leg is almost recovered enough that I"ll be able to walk back to the crash site.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(8244, 'We"ve been so wrapped up in this war, some of us forgot to make time for love.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(8254, 'You work with machines for so long, sometimes you forget about real hearts.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(8255, '', 'When you have lived as long as I, it becomes easy to forget about love for years. It is always good to be reminded.', 0, 1, 0, 0, 0, 0, 0, 0),
+(8282, '', 'You look like you"ve had your heart broken. Come back when you"re not so sad.', 0, 1, 0, 25, 0, 153, 0, 0),
+(8291, 'What, you don"t have a token to give me? Don"t you love me?', '', 0, 1, 0, 18, 0, 0, 0, 0),
+(8296, 'It looks like you"ve already found love. You can give me a love token, but I"m not giving you anything nice. I"m waiting for someone special.', 'It looks like you"ve already found love. You can give me a love token, but I"m not giving you anything nice. I"m waiting for someone special.', 0, 1, 0, 1, 0, 0, 0, 0),
+(8298, 'I"d like you better if you would apply some perfume.', 'I"d like you better if you would apply some perfume.', 0, 1, 0, 24, 0, 0, 0, 0),
+(11093, 'Let"s get out of here!', '', 0, 1, 0, 5, 0, 0, 0, 0),
+(3464, '', 'You do fine work, but it"s a bit rough around the edges. Don"t worry about it, it will come with practice. Speaking of which, how about we see what you"ve been working on?', 7, 1, 0, 0, 0, 0, 0, 0),
+(4776, 'The battle is over, and the people of Darrowshire are saved.', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(4713, 'The Nightmare is finally over! Darrowshire, forgive me!', '', 0, 1, 0, 15, 0, 0, 0, 0),
+(12130, '', '', 0, 1, 0, 0, 0, 0, 0, 0),
+(13002, 'There ya go, mon. Try ta be more careful with this one, won"t ya?$b$bNow head down ta Drak"Zin Ruins and drink it near the pedestal!', NULL, 0, 1, 0, 0, 0, 0, 0, 0),
+(9984, 'What are ye doin" here?! Get yer chatty self ta Alterac Vallery, where ye"re needed!', '', 7, 1, 1, 5, 0, 0, 0, 0),
+(12977, 'Blight, Blight, Blight... that"s all I hear about around here. I miss the diversity!$b$bHere, here. You have pets, yes? Of course you do. Of course. Little pets. I have a mixture for them. It will make them ca-- ah, clever and strong creatures, yes. Yes. ', '', 1, 1, 396, 5, 0, 0, 0, 0),
+(12978, 'Careful with it. It"s unstable and loses its potency quickly. Use it soon! And... preferably within eyesight, yes...', '', 1, 1, 5, 0, 0, 0, 0, 0),
+(10918, 'The boy"s too stupid still to say it -- not enough crystal exposure yet -- but, he"s thankful for what you did in getting him those flasks.$B$BNow, only nine more sons to go. Gah!$B$B$B$BWant to take one of them off of our hands? We"ll sell him to you cheap.', '', 0, 1, 0, 1, 0, 5, 0, 6),
+(10999, 'Friend! It"s been too long. What can we get for you?', '', 0, 1, 1, 1, 0, 0, 0, 0),
+(10986, 'Our drinks should quench even the mightiest of thirsts.', '', 0, 1, 1, 396, 0, 0, 0, 0),
+(10991, 'What can I say, $N? Yer the finest o" the Sha"tari Skyguard!$B$BJust don"t be lettin" that go ta yer head. I can still teach ya a thing or two, $G lad : lass;!$B$B', '', 0, 0, 0, 0, 0, 0, 0, 0);
+
+-- Fix Kor'kron War Rider flying by trista closes #5569
+UPDATE `creature_template` SET `inhabittype`=5,`speed_walk`=1, `speed_run`=1 WHERE `entry`=26813;
+
+-- Gretta the Arbiter (Storm Peaks, Brunhilldar) by mweinelt closes #5493
+-- Daily Quest Pooling
+-- Source: http://www.wowwiki.com/Gretta_the_Arbiter
+SET @pool_id := 354;
+
+DELETE FROM `pool_template` WHERE `entry` = @pool_id;
+INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
+(@pool_id, 1, 'Gretta the Arbiter - Daily Quests');
+
+DELETE FROM `pool_quest` WHERE `entry` IN (13424, 13423, 13422, 13425);
+INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES
+(13424, @pool_id, 'Back to the Pit'),
+(13423, @pool_id, 'Defending Your Title'),
+(13422, @pool_id, 'Maintaining Discipline'),
+(13425, @pool_id, 'The Aberrations Must Die');
+
+-- Pathing for Arzeth the Merciless Entry: 19354 by kiperr closes #5510
+SET @NPC := 69051;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-617.6182,`position_y`=4800.323,`position_z`=38.53064 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,-546.5514,4799.893,33.83914,0,0,0,100,0),
+(@PATH,2,-512.5808,4799.929,32.09928,0,0,0,100,0),
+(@PATH,3,-480.9247,4799.97,28.25657,0,0,0,100,0),
+(@PATH,4,-512.6269,4799.873,32.09928,0,0,0,100,0),
+(@PATH,5,-542.1885,4799.724,33.71414,0,0,0,100,0),
+(@PATH,6,-570.3811,4800.449,34.60215,0,0,0,100,0),
+(@PATH,7,-592.3809,4800.299,35.85215,0,0,0,100,0),
+(@PATH,8,-617.6182,4800.323,38.53064,0,0,0,100,0),
+(@PATH,9,-659.4124,4799.819,49.09505,0,0,0,100,0),
+(@PATH,10,-582.4199,4800.242,34.97715,0,0,0,100,0),
+(@PATH,11,-546.5514,4799.893,33.83914,0,0,0,100,0),
+(@PATH,12,-542.1885,4799.724,33.71414,0,0,0,100,0),
+(@PATH,13,-570.3811,4800.449,34.60215,0,0,0,100,0),
+(@PATH,14,-592.3809,4800.299,35.85215,0,0,0,100,0),
+(@PATH,15,-617.6182,4800.323,38.53064,0,0,0,100,0),
+(@PATH,16,-659.4124,4799.819,49.09505,0,0,0,100,0),
+(@PATH,17,-512.5808,4799.929,32.09928,0,0,0,100,0),
+(@PATH,18,-480.9247,4799.97,28.25657,0,0,0,100,0),
+(@PATH,19,-512.6269,4799.873,32.09928,0,0,0,100,0),
+(@PATH,20,-542.1885,4799.724,33.71414,0,0,0,100,0),
+(@PATH,21,-570.3811,4800.449,34.60215,0,0,0,100,0),
+(@PATH,22,-592.3809,4800.299,35.85215,0,0,0,100,0),
+(@PATH,23,-617.6182,4800.323,38.53064,0,0,0,100,0),
+(@PATH,24,-659.4124,4799.819,49.09505,0,0,0,100,0),
+(@PATH,25,-582.4199,4800.242,34.97715,0,0,0,100,0),
+(@PATH,26,-512.6269,4799.873,32.09928,0,0,0,100,0),
+(@PATH,27,-542.1885,4799.724,33.71414,0,0,0,100,0),
+(@PATH,28,-570.3811,4800.449,34.60215,0,0,0,100,0),
+(@PATH,29,-592.3809,4800.299,35.85215,0,0,0,100,0),
+(@PATH,30,-617.6182,4800.323,38.53064,0,0,0,100,0);
+
+-- Dark Portal - corrects the entry position and orientation by cdawg closes #5470
+UPDATE `areatrigger_teleport` SET `target_position_x`=-248.149292, `target_position_y`=921.874953, `target_position_z`=84.388448, `target_orientation`=1.584155 WHERE `id`=4354;
+
+-- Add pamphlets to mail loot by gecko32 closes #5408
+DELETE FROM `mail_loot_template` WHERE `entry` BETWEEN 224 AND 233;
+INSERT INTO `mail_loot_template` (`entry`, `item`, `ChanceOrQuestChance`, `lootmode`, `groupid`, `mincountOrRef`, `maxcount`) VALUES
+(224, 46875, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Elwynn Forest
+(225, 46876, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Darnassus
+(226, 46877, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Dun Morogh drawf
+(227, 46879, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Azuremyst Isle
+(228, 46878, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Dun Morogh gnome
+(229, 46884, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Mulgore
+(230, 46883, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Durator
+(231, 46880, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Orgrimmar
+(232, 46882, 100, 1, 0, 1, 1), -- Riding Training Pamphlet Eversong Woods
+(233, 46881, 100, 1, 0, 1, 1); -- Riding Training Pamphlet Tirisfal Glades
+
+-- fix coordinates for cannoneer whessan by mosoo closes #5406
+UPDATE `creature` SET `position_x`=-2093.53, `position_y`=-3496.47, `position_z`=130.084, `orientation`=3.008 WHERE `id`=3455 LIMIT 1;
+
+-- fix quest requirement for the last of her kind by shlomi 1515 closes #4875
+UPDATE `quest_template` SET `PrevQuestID` = 12900 WHERE `id` = 12983;
+
+-- Add rep reward to ICC25 Trash by gecko32 closes #5457
+DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (37655,38031,38057,38058,38059,38061,38062,38063,38064,38072,38073,38074,38075,38076,38098,38099,38100,38101,38102,38103,38105,38108,38110,38126,38130,38131,38132,38133,38139,38151,38219,38220,38418,38445,38446,38479,38480,38481);
+INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, `RewOnKillRepFaction2`, `MaxStanding1`, `IsTeamAward1`, `RewOnKillRepValue1`, `MaxStanding2`, `IsTeamAward2`, `RewOnKillRepValue2`, `TeamDependent`) VALUES
+(37655, 1156, 0, 7, 0, 45, 0, 0, 0, 0), -- Decaying colossus
+(38031, 1156, 0, 7, 0, 45, 0, 0, 0, 0), -- Deathbound Ward
+(38057, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Servant of the throne
+(38058, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Nerub'ar Broodkeeper
+(38059, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Ancient Skeletal Soldier
+(38061, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- The Damned
+(38062, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Plague Scientist
+(38063, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Vengeful Fleshreaper
+(38064, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Stinky
+(38072, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Deathspeacker Attedent
+(38073, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Deathspeacker Disciple
+(38074, 1156, 0, 7, 0, 45, 0, 0, 0, 0), -- Deathspeacker High Preist
+(38075, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Deathspeacker Servant
+(38076, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Deathspeacker Zealot
+(38098, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Darkfallen Advisor
+(38099, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Darkfallen Archmage
+(38100, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Darkfallen Blood Knight
+(38101, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Darkfallen Lieutenant
+(38102, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Darkfallen Commander
+(38103, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Precious
+(38105, 1156, 0, 7, 0, 2, 0, 0, 0, 0), -- Plagued Zombie
+(38108, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Blighted Abomination
+(38110, 1156, 0, 7, 0, 30, 0, 0, 0, 0), -- Pustulating Horror
+(38126, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Ymirjar Frostbinder
+(38130, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Ymirjar Deathbringer
+(38131, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Ymirjar Huntress
+(38132, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Ymirjar Battle-Maiden
+(38133, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Ymirjar Warlord
+(38139, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Frostwarden Handler
+(38151, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Frostwing Whelp
+(38219, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Spinestalker
+(38220, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Rimefang
+(38418, 1156, 0, 7, 0, 45, 0, 0, 0, 0), -- Val'kyr Herald
+(38445, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Spire Minion
+(38446, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Frenzied Abomination
+(38479, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Darkfallen Tactician
+(38480, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Darkfallen Noble
+(38481, 1156, 0, 7, 0, 15, 0, 0, 0, 0); -- Spire Gargoyle
+
+-- fix procs by warpten closes #4467 for
+-- Needle-Encrusted Scorpion
+DELETE FROM `spell_proc_event` WHERE `entry`=71404;
+INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(71404,0,0,0,0,0,0,2,0,0,50);
+
+-- Black Magic
+DELETE FROM `spell_proc_event` WHERE `entry`=59630;
+INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(59630,0,0,0,0,0,0,0,0,0,35);
+
+-- Environment Creature Hight Update by shlomi1515 closes #4043
+UPDATE `creature` SET `position_z`=558.210022 WHERE `guid` IN (85141,85143,85154,85153,85142,85151,85152,85150);
+UPDATE `creature` SET `position_z`=586.302 WHERE `guid` IN (85145,85144,85146);
+UPDATE `creature` SET `position_z`=586.263 WHERE `guid` IN (85147,85148,85149);
+
+-- fix winterskorn raider not landing by nayd closes #3899
+UPDATE `creature_template` SET `InhabitType`=`InhabitType`|1 WHERE `entry`=23665;
+
+-- fix head of onyxia's loot closes by kandera #3851
+UPDATE `item_template` SET `flags` = flags|4096 WHERE `entry` IN (18422,18423,49644,49643);
+
+-- fix visual for plagued dragonsflayer tribesman by shlomi1515 closes #3518
+DELETE FROM `creature_addon` WHERE `guid` = 97540;
diff --git a/sql/old/3.3.5a/2012_04_13_02_world_misc.sql b/sql/old/3.3.5a/2012_04_13_02_world_misc.sql
new file mode 100644
index 00000000000..7c71af78cd7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_13_02_world_misc.sql
@@ -0,0 +1,18 @@
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry` IN (38308,38309,37824); -- Professor Putricide triggers
+UPDATE `creature_template` SET `ScriptName`='npc_gas_cloud' WHERE `entry`=37562; -- Gas Cloud
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_putricide_ooze_summon';
+DELETE FROM `spell_target_position` WHERE `id` IN (71413,71414);
+INSERT INTO `spell_target_position` (`id`,`target_map`,`target_position_x`,`target_position_y`,`target_position_z`,`target_orientation`) VALUES
+(71414,631,4335.00,3206.75,389.399,0),
+(71413,631,4380.43,3206.55,389.398,0);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (71615,71618,71412,71415);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`Comment`) VALUES
+(13,4,71615,31,3,37690,'Putricide - Tear Gas on Slime Puddle'),
+(13,1,71618,31,3,37562,'Putricide - Tear Gas on Gas Cloud'),
+(13,2,71618,31,3,37697,'Putricide - Tear Gas on Volatile Ooze'),
+(13,4,71618,31,3,38159,'Putricide - Tear Gas on Choking Gas Bomb');
+
+UPDATE `spell_script_names` SET `ScriptName`='spell_putricide_clear_aura_effect_value' WHERE `ScriptName`='spell_putricide_clear_mutated_plague';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(71620,'spell_putricide_clear_aura_effect_value');
diff --git a/sql/old/3.3.5a/2012_04_13_03_world_bg_template.sql b/sql/old/3.3.5a/2012_04_13_03_world_bg_template.sql
new file mode 100644
index 00000000000..a426d7c6831
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_13_03_world_bg_template.sql
@@ -0,0 +1,7 @@
+ALTER TABLE `battleground_template` ADD `StartMaxDist` float NOT NULL DEFAULT 0 AFTER `HordeStartO`;
+
+UPDATE `battleground_template` SET `StartMaxDist`=200 WHERE `id`=30; -- IC
+UPDATE `battleground_template` SET `StartMaxDist`=100 WHERE `id`=1; -- AV
+UPDATE `battleground_template` SET `StartMaxDist`=75 WHERE `id` IN (2,3,7); -- WSG, AB, EotS
+
+UPDATE `battleground_template` SET `MinLvl`=1 WHERE `id`=32;
diff --git a/sql/old/3.3.5a/2012_04_13_04_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_13_04_world_spell_proc_event.sql
new file mode 100644
index 00000000000..3ea68187687
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_13_04_world_spell_proc_event.sql
@@ -0,0 +1,4 @@
+-- Blackened Naaru Silver proc cooldown
+DELETE FROM `spell_proc_event` WHERE `entry`=45355;
+INSERT INTO `spell_proc_event`(`entry`,`schoolmask`,`spellfamilyname`,`spellfamilymask0`,`spellfamilymask1`,`spellfamilymask2`,`procflags`,`procex`,`ppmrate`,`customchance`,`cooldown`) VALUES
+(45355,0,0,0,0,0,0,0,0,0,45);
\ No newline at end of file
diff --git a/sql/old/3.3.5a/2012_04_14_00_world_gameobject_loot_template.sql b/sql/old/3.3.5a/2012_04_14_00_world_gameobject_loot_template.sql
new file mode 100644
index 00000000000..dea4b771068
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_14_00_world_gameobject_loot_template.sql
@@ -0,0 +1,3 @@
+-- Add Bogblossom to this Bogblossom object for the druid quest (other one already contains it)
+DELETE FROM `gameobject_loot_template` WHERE (`entry`=10961) AND (`item`=31950);
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES (10961,31950,-100,0,0,1,1);
diff --git a/sql/old/3.3.5a/2012_04_14_01_world_gameobject_loot_template.sql b/sql/old/3.3.5a/2012_04_14_01_world_gameobject_loot_template.sql
new file mode 100644
index 00000000000..a3dd0c39865
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_14_01_world_gameobject_loot_template.sql
@@ -0,0 +1,11 @@
+-- Add missing gameobject_loot_templates to prevent startup errors
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (3458,3459,3460,3461,15920,16841,26878,27725);
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(3458,4594,100,0,0,1,1), -- Rockscale Cod on Feast Fish
+(3459,3771,100,0,0,1,1), -- Wild Hog Shank On Feast Boar
+(3460,4538,100,0,0,1,1), -- Snapvine Watermelon on Feast Fruit
+(3461,1708,100,0,0,1,1), -- Sweet Nectar on Feast Goblet
+(15920,17822,-100,0,0,1,1), -- Weird Map on weird object
+(16841,18950,-100,0,0,1,1), -- Chambermaid Pillaclenchers Pillow on Pillaclencher's Ornate Pillow
+(26878,45062,100,0,0,1,1), -- Dusty Journal on Dusty Journal (different ID)
+(27725,49648,100,0,0,1,1); -- Borrowed Tabard on Clean Laundry (might need condition!)
diff --git a/sql/old/3.3.5a/2012_04_14_02_world_creature_template_addon.sql b/sql/old/3.3.5a/2012_04_14_02_world_creature_template_addon.sql
new file mode 100644
index 00000000000..6aaa7da383e
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_14_02_world_creature_template_addon.sql
@@ -0,0 +1,3 @@
+UPDATE `creature_template_addon` SET `auras`='50453' WHERE `entry`=28017;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=28017;
+UPDATE `creature_template` SET `ainame` = '' WHERE `entry`=28017;
\ No newline at end of file
diff --git a/sql/old/3.3.5a/2012_04_14_03_world_spell_bonus_data.sql b/sql/old/3.3.5a/2012_04_14_03_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..ee081c17078
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_14_03_world_spell_bonus_data.sql
@@ -0,0 +1 @@
+UPDATE `spell_bonus_data` SET `direct_bonus`=0.8930 WHERE `entry`=51505;
diff --git a/sql/old/3.3.5a/2012_04_14_04_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_14_04_world_spell_proc_event.sql
new file mode 100644
index 00000000000..78a869e655a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_14_04_world_spell_proc_event.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_proc_event` WHERE `entry`=53601;
+INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(53601, 0, 0, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0, 0, 6);
diff --git a/sql/old/3.3.5a/2012_04_14_05_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_14_05_world_spell_proc_event.sql
new file mode 100644
index 00000000000..8cb2b1d3d2b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_14_05_world_spell_proc_event.sql
@@ -0,0 +1 @@
+DELETE FROM `spell_proc_event` WHERE `entry` IN (51486,51485,51483);
diff --git a/sql/old/3.3.5a/2012_04_16_00_world_game_event.sql b/sql/old/3.3.5a/2012_04_16_00_world_game_event.sql
new file mode 100644
index 00000000000..1dc3fe3ad91
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_16_00_world_game_event.sql
@@ -0,0 +1,4 @@
+SET @Event = 26; -- Pilgrim's Bounty
+DELETE FROM `game_event` WHERE `eventEntry`=@Event;
+INSERT INTO `game_event` (`eventEntry`,`start_time`,`end_time`,`occurence`,`length`,`holiday`,`description`,`world_event`) VALUES
+(@Event,'2012-11-18 01:00:00','2020-12-31 05:00:00',525600,10020,404,'Pilgrim\'s Bounty',0);
diff --git a/sql/old/3.3.5a/2012_04_17_00_world_creature.sql b/sql/old/3.3.5a/2012_04_17_00_world_creature.sql
new file mode 100644
index 00000000000..ebf0fb42a59
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_17_00_world_creature.sql
@@ -0,0 +1,28 @@
+SET @GUID1 := 41781;
+SET @GUID2 := 41783;
+
+DELETE FROM creature WHERE guid IN (@GUID1,@GUID2);
+INSERT INTO `creature`
+(`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`)
+VALUES
+(@GUID1 ,38453,571,1,1,3561.821,-2736.367,136.0317,0), -- Arcturis in Grizzly Hills
+(@GUID2,35189,571,1,1,7101.845,-1443.734,924.2609,0.178631); -- Skoll in The Storm Peaks
+
+UPDATE `creature_template` SET `faction_A` = 190, `faction_H`=190 WHERE `entry` IN (38453,35189);
+
+SET @NPC= @GUID1*10;
+-- Add pathing for Arcturis
+DELETE FROM `creature_addon` WHERE `guid` = @GUID1;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(@GUID1,@NPC,0,0,0,0,''); -- Add path for Acturis
+-- Add waypoint data for the path:
+DELETE FROM `waypoint_data` WHERE `id`=@NPC;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`) VALUES
+(@NPC,1,3563.499,-2737.698,137.1898),
+(@NPC,2,3565.249,-2738.698,138.4398),
+(@NPC,3,3566.749,-2739.948,139.9398),
+(@NPC,4,3568.249,-2740.698,140.6898),
+(@NPC,5,3567.839,-2741.380,141.9256),
+(@NPC,6,3569.999,-2741.948,142.1898),
+(@NPC,7,3570.749,-2742.448,143.1898),
+(@NPC,8,3572.676,-2743.528,144.8479);
diff --git a/sql/old/3.3.5a/2012_04_18_00_world_npc_spellclick_spells.sql b/sql/old/3.3.5a/2012_04_18_00_world_npc_spellclick_spells.sql
new file mode 100644
index 00000000000..3bad860290b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_00_world_npc_spellclick_spells.sql
@@ -0,0 +1,2 @@
+UPDATE `npc_spellclick_spells` SET `spell_id`=57053 WHERE `npc_entry`=30066 AND `spell_id`=56678;
+UPDATE `creature_template` SET `spell1`=55812 WHERE `entry`=30066;
diff --git a/sql/old/3.3.5a/2012_04_18_01_world_creature.sql b/sql/old/3.3.5a/2012_04_18_01_world_creature.sql
new file mode 100644
index 00000000000..e2d6bdac95b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_01_world_creature.sql
@@ -0,0 +1 @@
+UPDATE `creature` SET `spawntimesecs`=39600 WHERE `guid` IN (41781,41783); -- Set the spawntime to 11 hours for Arcturis & Skoll
diff --git a/sql/old/3.3.5a/2012_04_18_02_world_reference_loot_template.sql b/sql/old/3.3.5a/2012_04_18_02_world_reference_loot_template.sql
new file mode 100644
index 00000000000..4ed922060d9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_02_world_reference_loot_template.sql
@@ -0,0 +1,377 @@
+-- ----------------------
+-- -- Various Cleanups --
+-- ----------------------
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=10 AND `SourceGroup`=34105;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=4 AND `SourceGroup` IN (27081,27085,27073,26963,26955);
+DELETE FROM `reference_loot_template` WHERE `entry` IN (12020,12021,12022,34105,34125,34126,34127,34128,34129,34130);
+DELETE FROM `gameobject_loot_template` WHERE `entry`=10961; -- Bad Bogblossom fix was bad
+UPDATE `gameobject_template` SET `data1`=26956 WHERE `entry`=194315;
+-- -------------------------------
+-- -- Variables and definitions --
+-- -------------------------------
+-- Freya 10 man
+SET @Freya10k0ID := 194324; -- Freyas Gift 10man ALL elders alive
+SET @Freya10k1ID := 194326; -- Freyas Gift 10man killed 1 elder
+SET @Freya10k2ID := 194328; -- Freyas Gift 10man killed 2 elder
+SET @Freya10k3ID := 194330; -- Freyas Gift 10man killed 3 elder
+-- Freya 25 man
+SET @Freya25k0ID := 194325; -- Freyas Gift 25man ALL elders alive
+SET @Freya25k1ID := 194327; -- Freyas Gift 25man killed 1 elder
+SET @Freya25k2ID := 194329; -- Freyas Gift 25man killed 2 elder
+SET @Freya25k3ID := 194331; -- Freyas Gift 25man killed 3 elder
+-- Hodir
+SET @Hodir10nID := 194307; -- Cache of Winter 10man
+SET @Hodir10hID := 194200; -- Rare Cache of Winter 10man
+SET @Hodir25nID := 194308; -- Cache of Winter 25man
+SET @Hodir25hID := 194201; -- Rare Cache of Winter 25man
+-- Mimiron
+SET @Mimiron10nID := 194789; -- Cache of Innovations 10man
+SET @Mimiron25nID := 194956; -- Cache of Innovations 25man
+SET @Mimiron10hID := 194957; -- Cache of Innovation 10 man Hardmode
+SET @Mimiron25hID := 194958; -- Cache of Innovation 25 man Hardmode
+-- Thorim
+SET @Thorim10nID := 194312; -- Cache of Storms 10man
+SET @Thorim10hID := 194313; -- Cache of Storms 10 man Hardmode
+SET @Thorim25nID := 194314; -- Cache of Storms 25man
+SET @Thorim25hID := 194315; -- Cache of Storms 25 man Hardmode
+
+-- Use procedure to get Lootid from data1 field and assign it to a variable
+-- Freya 10
+CALL `sp_get_go_lootid`(@Freya10k0ID,@Freya10k0);
+CALL `sp_get_go_lootid`(@Freya10k1ID,@Freya10k1);
+CALL `sp_get_go_lootid`(@Freya10k2ID,@Freya10k2);
+CALL `sp_get_go_lootid`(@Freya10k3ID,@Freya10k3);
+-- Freya 25
+CALL `sp_get_go_lootid`(@Freya25k0ID,@Freya25k0);
+CALL `sp_get_go_lootid`(@Freya25k1ID,@Freya25k1);
+CALL `sp_get_go_lootid`(@Freya25k2ID,@Freya25k2);
+CALL `sp_get_go_lootid`(@Freya25k3ID,@Freya25k3);
+-- Hodir 10
+CALL `sp_get_go_lootid`(@Hodir10nID,@Hodir10n);
+CALL `sp_get_go_lootid`(@Hodir10hID,@Hodir10h);
+-- Hodir 25
+CALL `sp_get_go_lootid`(@Hodir25nID,@Hodir25n);
+CALL `sp_get_go_lootid`(@Hodir25hID,@Hodir25h);
+-- Mimiron
+CALL `sp_get_go_lootid`(@Mimiron10nID,@Mimiron10n);
+CALL `sp_get_go_lootid`(@Mimiron10hID,@Mimiron10h);
+CALL `sp_get_go_lootid`(@Mimiron25nID,@Mimiron25n);
+CALL `sp_get_go_lootid`(@Mimiron25hID,@Mimiron25h);
+-- Thorim
+CALL `sp_get_go_lootid`(@Thorim10nID,@Thorim10n);
+CALL `sp_get_go_lootid`(@Thorim10hID,@Thorim10h);
+CALL `sp_get_go_lootid`(@Thorim25nID,@Thorim25n);
+CALL `sp_get_go_lootid`(@Thorim25hID,@Thorim25h);
+-- Set References
+SET @Freya10Ref := 34365;
+SET @Freya25Ref := @Freya10Ref+1;
+SET @Hodir10Ref := @Freya10Ref+2;
+SET @Hodir25Ref := @Freya10Ref+3;
+SET @Mimiron10Ref := @Freya10Ref+4;
+SET @Mimiron25Ref := @Freya10Ref+5;
+SET @Thorim10Ref := @Freya10Ref+6;
+SET @Thorim25Ref := @Freya10Ref+7;
+SET @HandToken := 12026;
+SET @LegToken := @HandToken+1;
+SET @LegsToken := @HandToken+2;
+SET @ChestToken := @HandToken+3;
+SET @HeadToken := @HandToken+4;
+SET @GloveToken := @HandToken+5;
+SET @ShoulderToken := @HandToken+6;
+SET @HelmToken := @HandToken+7;
+SET @Recipe := 34154;
+-- -------------------------
+-- -- Reference Templates --
+-- -------------------------
+-- Delete previous templates if existing
+DELETE FROM `reference_loot_template` WHERE `entry` BETWEEN @Freya10Ref AND @Freya10Ref+7;
+DELETE FROM `reference_loot_template` WHERE `entry` BETWEEN @HandToken AND @HandToken+7;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Freya 10 man
+(@Freya10Ref,45934,0,1,1,1,1), -- Unraveling Reach
+(@Freya10Ref,45935,0,1,1,1,1), -- Ironbark Faceguard
+(@Freya10Ref,45941,0,1,1,1,1), -- Chestguard of the Lasher
+(@Freya10Ref,45936,0,1,1,1,1), -- Legplates of Flourishing Resolve
+(@Freya10Ref,45940,0,1,1,1,1), -- Tunic of the Limber Stalker
+-- Freya 25 man
+(@Freya25Ref,45483,0,1,1,1,1), -- Boots of the Servant
+(@Freya25Ref,45482,0,1,1,1,1), -- Leggings of the Lifetender
+(@Freya25Ref,45481,0,1,1,1,1), -- Gauntlets of Ruthless Reprisal
+(@Freya25Ref,45480,0,1,1,1,1), -- Nymph Heart Charm
+(@Freya25Ref,45479,0,1,1,1,1), -- The Lifebinder
+-- Freya Tokens
+(@HandToken,45644,0,1,1,1,1), -- Gloves of the Wayward Conqueror
+(@HandToken,45645,0,1,1,1,1), -- Gloves of the Wayward Protector
+(@HandToken,45646,0,1,1,1,1), -- Gloves of the Wayward Vanquisher
+(@LegToken,45653,0,1,1,1,1), -- Legplates of the Wayward Conqueror
+(@LegToken,45654,0,1,1,1,1), -- Legplates of the Wayward Protector
+(@LegToken,45655,0,1,1,1,1), -- Legplates of the Wayward Vanquisher
+-- Hodir 10 man
+(@Hodir10Ref,45874,0,1,1,1,1), -- Signet of Winter
+(@Hodir10Ref,45458,0,1,1,1,1), -- Stormedge
+(@Hodir10Ref,45873,0,1,1,1,1), -- Winter's Frigid Embrace
+(@Hodir10Ref,45872,0,1,1,1,1), -- Avalanche
+(@Hodir10Ref,45454,0,1,1,1,1), -- Cowl of Icy Breaths
+-- Hodir 25 man
+(@Hodir25Ref,45452,0,1,1,1,1), -- Frostplate Greaves
+(@Hodir25Ref,45454,0,1,1,1,1), -- Frost-Bound Chain Bracers
+(@Hodir25Ref,45453,0,1,1,1,1), -- Winter's Icy Embrace
+(@Hodir25Ref,45450,0,1,1,1,1), -- Northern Barrier
+(@Hodir25Ref,45451,0,1,1,1,1), -- Frozen Loop
+-- Hodir Tokens
+(@LegsToken,45650,0,1,1,1,1), -- Leggings of the Wayward Conqueror
+(@LegsToken,45651,0,1,1,1,1), -- Leggings of the Wayward Protector
+(@LegsToken,45652,0,1,1,1,1), -- Leggings of the Wayward Vanquisher
+(@ChestToken,45632,0,1,1,1,1), -- Breastplate of the Wayward Conqueror
+(@ChestToken,45633,0,1,1,1,1), -- Breastplate of the Wayward Protector
+(@ChestToken,45634,0,1,1,1,1), -- Breastplate of the Wayward Vanquisher
+-- Mimiron 10 man
+(@Mimiron10Ref,45974,0,1,1,1,1), -- Shoulderguards of Assimilation
+(@Mimiron10Ref,45976,0,1,1,1,1), -- Static Charge Handwraps
+(@Mimiron10Ref,45972,0,1,1,1,1), -- Pulse Baton
+(@Mimiron10Ref,45973,0,1,1,1,1), -- Stylish Power Cape
+(@Mimiron10Ref,45975,0,1,1,1,1), -- Cable of the Metrognome
+-- Mimiron 25 man
+(@Mimiron25Ref,45492,0,1,1,1,1), -- Malleable Steelweave Mantle
+(@Mimiron25Ref,45493,0,1,1,1,1), -- Asimov's Drape
+(@Mimiron25Ref,45490,0,1,1,1,1), -- Pandora's Plea
+(@Mimiron25Ref,45491,0,1,1,1,1), -- Waistguard of the Creator
+(@Mimiron25Ref,45489,0,1,1,1,1), -- Insanity's Grip
+-- Mimiron Tokens
+(@HeadToken,45647,0,1,1,1,1), -- Helm of the Wayward Conqueror
+(@HeadToken,45648,0,1,1,1,1), -- Helm of the Wayward Protector
+(@HeadToken,45649,0,1,1,1,1), -- Helm of the Wayward Vanquisher
+(@GloveToken,45641,0,1,1,1,1), -- Gauntlets of the Wayward Conqueror
+(@GloveToken,45642,0,1,1,1,1), -- Gauntlets of the Wayward Protector
+(@GloveToken,45643,0,1,1,1,1), -- Gauntlets of the Wayward Vanquisher
+-- Thorim 10 man
+(@Thorim10Ref,45927,0,1,1,1,1), -- Handwraps of Resonance
+(@Thorim10Ref,45894,0,1,1,1,1), -- Leggings of Unstable Discharge
+(@Thorim10Ref,45895,0,1,1,1,1), -- Belt of the Blood Pit
+(@Thorim10Ref,45893,0,1,1,1,1), -- Guise of the Midgard Serpent
+(@Thorim10Ref,45892,0,1,1,1,1), -- Legacy of Thunder
+-- Throim 25 man
+(@Thorim25Ref,45468,0,1,1,1,1), -- Leggings of Lost Love
+(@Thorim25Ref,45466,0,1,1,1,1), -- Scale of Fates
+(@Thorim25Ref,45467,0,1,1,1,1), -- Belt of the Betrayed
+(@Thorim25Ref,45469,0,1,1,1,1), -- Sif's Promise
+(@Thorim25Ref,45463,0,1,1,1,1), -- Vulmir, the Northern Tempest
+-- Thorim Tokens
+(@ShoulderToken,45659,0,1,1,1,1), -- Spaulders of the Wayward Conqueror
+(@ShoulderToken,45660,0,1,1,1,1), -- Spaulders of the Wayward Protector
+(@ShoulderToken,45661,0,1,1,1,1), -- Spaulders of the Wayward Vanquisher
+(@HelmToken,45638,0,1,1,1,1), -- Crown of the Wayward Conqueror
+(@HelmToken,45639,0,1,1,1,1), -- Crown of the Wayward Protector
+(@HelmToken,45640,0,1,1,1,1); -- Crown of the Wayward Vanquisher
+-- -------------------------------
+-- -- Gameobject Loot Templates --
+-- -------------------------------
+-- Delete previous templates if existing
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (@Freya10k3,@Freya10k2,@Freya10k1,@Freya10k0,@Freya25k3,@Freya25k2,@Freya25k1,@Freya25k0,@Hodir10n,@Hodir10h,@Hodir25n,@Hodir25h,@Mimiron10n,@Mimiron10h,@Mimiron25n,@Mimiron25h,@Thorim10n,@Thorim10h,@Thorim25n,@Thorim25h);
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- ------------------
+-- -- Freya 10 man --
+-- ------------------
+-- Normal Mode:
+(@Freya10k3,1,100,1,0,-@Freya10Ref,1), -- 1 from normal loot
+(@Freya10k3,2,100,1,0,-@HandToken,1), -- 1 from tokens
+(@Freya10k3,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya10k3,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+-- Hard Mode: 1 elder alive
+(@Freya10k2,1,100,1,0,-@Freya10Ref,1), -- 1 from normal loot
+(@Freya10k2,2,100,1,0,-@HandToken,1), -- 1 from tokens
+(@Freya10k2,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya10k2,47241,100,1,0,2,2), -- 2x Emblem of Triumph
+(@Freya10k2,45087,100,1,0,1,1), -- Runed Orb
+(@Freya10k2,3,100,1,0,-34349,1), -- 1x Emblem of Triumph for Alive Elders
+-- Hard Mode: 2 elders alive
+(@Freya10k1,1,100,1,0,-@Freya10Ref,1), -- 1 from normal loot
+(@Freya10k1,2,100,1,0,-@HandToken,1), -- 1 from tokens
+(@Freya10k1,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya10k1,47241,100,1,0,3,3), -- 3x Emblem of Triumph
+(@Freya10k1,45087,100,1,0,1,1), -- Runed Orb
+(@Freya10k1,3,100,1,0,-@Recipe,1), -- 1 from Recipe
+(@Freya10k1,4,100,1,0,-34349,2), -- 2x Emblem of Triumph for Alive Elders
+-- Hard Mode: 3 elders alive
+(@Freya10k0,1,100,1,0,-@Freya10Ref,1), -- 1 from normal loot
+(@Freya10k0,2,100,1,0,-@HandToken,1), -- 1 from tokens
+(@Freya10k0,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya10k0,47241,100,1,0,3,3), -- 3x Emblem of Triumph (self)
+(@Freya10k0,45087,100,1,0,1,1), -- Runed Orb
+(@Freya10k0,3,100,1,0,-@Recipe,1), -- 1 from Recipe
+(@Freya10k0,45788,-100,1,0,1,1), -- Freya's Sigil 10 man QUEST ONLY
+(@Freya10k0,4,100,1,0,-34349,1), -- 3x Emblem of Triumph for Alive Elders
+-- 1 from Hardmode items:
+(@Freya10k0,45943,0,1,1,1,1), -- Gloves of Whispering Winds
+(@Freya10k0,45946,0,1,1,1,1), -- Fire Orchid Signet
+(@Freya10k0,45945,0,1,1,1,1), -- Seed of Budding Carnage
+(@Freya10k0,45947,0,1,1,1,1), -- Serilas, Blood Blade of Invar One-Arm
+(@Freya10k0,45294,0,1,1,1,1), -- Petrified Ivy Sprig
+-- ------------------
+-- -- Freya 25 man --
+-- ------------------
+-- Normal Mode:
+(@Freya25k3,1,100,1,0,-@Freya25Ref,1), -- 1 from normal loot
+(@Freya25k3,2,100,1,0,-@LegToken,2), -- 2 from tokens
+(@Freya25k3,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+(@Freya25k3,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya25k3,3,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Freya25k3,45087,10,1,0,1,1), -- Chance on Runed Orb
+(@Freya25k3,45083,5,1,0,1,1), -- Fragment of Val'anyr
+-- Hard Mode: 1 elder alive
+(@Freya25k2,1,100,1,0,-@Freya25Ref,1), -- 1 from normal loot
+(@Freya25k2,2,100,1,0,-@LegToken,2), -- 2 from tokens
+(@Freya25k2,47241,100,1,0,2,2), -- 2x Emblem of Triumph
+(@Freya25k2,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya25k2,3,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Freya25k2,4,10,1,0,-34350,1), -- Chance on Runed Orb
+(@Freya25k2,45087,100,1,0,2,2), -- 2x Runed Orb
+(@Freya25k2,45083,7,1,0,1,1), -- Fragment of Val'anyr
+(@Freya25k2,5,100,1,0,-34349,1), -- 1x Emblem of Triumph for Alive Elder
+-- Hard Mode: 2 elders alive
+(@Freya25k1,1,100,1,0,-@Freya25Ref,1), -- 1 from normal loot
+(@Freya25k1,2,100,1,0,-@LegToken,2), -- 2 from tokens
+(@Freya25k1,47241,100,1,0,3,3), -- 3x Emblem of Triumph
+(@Freya25k1,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya25k1,3,10,1,0,-34350,1), -- Chance on Runed Orb
+(@Freya25k1,45087,100,1,0,2,2), -- 2x Runed Orb
+(@Freya25k1,4,100,1,0,-@Recipe,1), -- Recipe
+(@Freya25k1,5,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Freya25k1,45083,9,1,0,1,1), -- Fragment of Val'anyr
+(@Freya25k1,6,100,1,0,-34349,2), -- 2x Emblem of Triumph for Alive Elder
+-- Hard Mode: 3 elders alive
+(@Freya25k0,1,100,1,0,-@Freya25Ref,1), -- 1 from normal loot
+(@Freya25k0,2,100,1,0,-@LegToken,2), -- 2 from tokens
+(@Freya25k0,47241,100,1,0,3,3), -- 3x Emblem of Triumph
+(@Freya25k0,46110,100,1,0,1,1), -- Alchemist's Cache
+(@Freya25k0,3,10,1,0,-34350,1), -- Chance on Runed Orb
+(@Freya25k0,45087,100,1,0,2,2), -- 2x Runed Orb
+(@Freya25k0,4,100,1,0,-@Recipe,1), -- Recipe
+(@Freya25k0,5,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Freya25k0,45814,-100,1,0,1,1), -- Freya's Sigil 25 man QUEST ONLY
+(@Freya25k0,45083,20,1,0,1,1), -- Fragment of Val'anyr
+(@Freya25k2,6,100,1,0,-34349,3), -- 3x Emblem of Triumph for Alive Elder
+-- 1 from Hardmode items
+(@Freya25k0,45484,0,1,1,1,1), -- Bladetwister
+(@Freya25k0,45486,0,1,1,1,1), -- Drape of the Sullen Goddess
+(@Freya25k0,45487,0,1,1,1,1), -- Handguards of Revitalization
+(@Freya25k0,45488,0,1,1,1,1), -- Leggings of the Enslaved Idol
+(@Freya25k0,45613,0,1,1,1,1), -- Dreambinder
+(@Freya25k0,45485,0,1,1,1,1), -- Bronze Pendant of the Vanir
+-- ------------------
+-- -- Hodir 10 man --
+-- ------------------
+(@Hodir10n,1,100,1,0,-@Hodir10Ref,1), -- 1x Normal Loot Item
+(@Hodir10n,2,100,1,0,-@LegsToken,1), -- 1x Token
+(@Hodir10n,47241,100,1,0,1,1), -- Emblem of Triumph
+-- Hard mode:
+(@Hodir10h,1,100,1,0,-@Hodir10Ref,1), -- 1x Normal Loot Item
+(@Hodir10h,2,100,1,0,-@LegsToken,1), -- 1x Token
+(@Hodir10h,47241,100,1,0,1,1), -- Emblem of Triumph
+(@Hodir10h,45786,-100,1,0,1,1), -- Hodir's Sigil
+-- 1 from Hardmode items
+(@Hodir10h,45887,0,1,1,1,1), -- Ice Layered Barrier
+(@Hodir10h,45888,0,1,1,1,1), -- Bitter Cold Armguards
+(@Hodir10h,45886,0,1,1,1,1), -- Icecore Staff
+(@Hodir10h,45876,0,1,1,1,1), -- Shiver
+(@Hodir10h,45877,0,1,1,1,1), -- The Boreal Guard
+-- ------------------
+-- -- Hodir 25 man --
+-- ------------------
+(@Hodir25n,1,100,1,0,-@Hodir25Ref,1), -- 1x Normal Loot Item
+(@Hodir25n,2,100,1,0,-@ChestToken,1), -- 1x Token
+(@Hodir25n,47241,100,1,0,1,1), -- Emblem of Triumph
+(@Hodir25n,3,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Hodir25n,45087,10,1,0,1,1), -- Chance on Runed Orb
+(@Hodir25n,45083,10,1,0,1,1), -- Fragment of Val'anyr
+-- Hard mode:
+(@Hodir25h,1,100,1,0,-@Hodir25Ref,1), -- 1x Normal Loot Item
+(@Hodir25h,2,100,1,0,-@ChestToken,2), -- 2x Token
+(@Hodir25h,47241,100,1,0,1,1), -- Emblem of Triumph
+(@Hodir25h,45815,-100,1,0,1,1), -- Hodir's Sigil
+(@Hodir25h,3,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Hodir25h,45087,10,1,0,1,1), -- Chance on Runed Orb
+(@Hodir25h,45083,20,1,0,1,1), -- Fragment of Val'anyr
+-- --------------------
+-- -- Mimiron 10 man --
+-- --------------------
+(@Mimiron10n,1,100,1,0,-@Mimiron10Ref,1), -- 1x Normal Loot Item
+(@Mimiron10n,2,100,1,0,-@HeadToken,1), -- 1x Token
+(@Mimiron10n,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+-- Hardmode 10 man
+(@Mimiron10h,1,100,1,0,-@Mimiron10Ref,1), -- 1x Normal Loot Item
+(@Mimiron10h,2,100,1,0,-@HeadToken,1), -- 1x Token
+(@Mimiron10h,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+(@Mimiron10h,45787,-100,1,0,1,1), -- Mimiron's Sigel (QUEST ONLY, HARDMODE ONLY)
+-- 1 from Hardmode items
+(@Mimiron10h,45989,0,1,1,1,1), -- Tempered Mercury Greaves
+(@Mimiron10h,45982,0,1,1,1,1), -- Fused Alloy Legplates
+(@Mimiron10h,45993,0,1,1,1,1), -- Mimiron's Flight Goggles
+(@Mimiron10h,45988,0,1,1,1,1), -- Greaves of the Iron Army
+(@Mimiron10h,45990,0,1,1,1,1), -- Fusion Blade
+-- --------------------
+-- -- Mimiron 25 man --
+-- --------------------
+(@Mimiron25n,1,100,1,0,-@Mimiron25Ref,1), -- 1x Normal Loot Item
+(@Mimiron25n,2,100,1,0,-@GloveToken,2), -- 2x Token
+(@Mimiron25n,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+(@Mimiron25n,3,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Mimiron25n,45087,10,1,0,1,1), -- Chance on Runed Orb
+(@Mimiron25n,45083,8,1,0,1,1), -- Fragment of Val'anyr Normal
+-- Hard Mode 25 man
+(@Mimiron25h,1,100,1,0,-@Mimiron25Ref,1), -- 1x Normal Loot Item
+(@Mimiron25h,2,100,1,0,-@GloveToken,2), -- 2x Token
+(@Mimiron25h,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+(@Mimiron25h,3,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Mimiron25h,45087,10,1,0,1,1), -- Chance on Runed Orb
+(@Mimiron25h,45816,-100,1,0,1,1), -- Mimiron's Sigel (QUEST ONLY, HARDMODE ONLY)
+(@Mimiron25h,45083,18,1,0,1,1), -- Fragment of Val'anyr Hardmode
+-- 1 from Hardmode items
+(@Mimiron25h,45496,0,1,1,1,1), -- Titanskin Cloak
+(@Mimiron25h,45494,0,1,1,1,1), -- Delirium's Touch
+(@Mimiron25h,45663,0,1,1,1,1), -- Armbands of Bedlam
+(@Mimiron25h,45620,0,1,1,1,1), -- Starshard Edge
+(@Mimiron25h,45495,0,1,1,1,1), -- Conductive Seal
+(@Mimiron25h,45497,0,1,1,1,1), -- Crown of Luminescence
+-- -------------------
+-- -- Thorim 10 man --
+-- -------------------
+(@Thorim10n,1,100,1,0,-@Thorim10Ref,1), -- 1x Normal Loot Item
+(@Thorim10n,2,100,1,0,-@ShoulderToken,1), -- 1x Token
+(@Thorim10n,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+-- Hardmode 10 man
+(@Thorim10h,1,100,1,0,-@Thorim10Ref,1), -- 1x Normal Loot Item
+(@Thorim10h,2,100,1,0,-@ShoulderToken,1), -- 1x Token
+(@Thorim10h,47241,100,1,0,1,1), -- 1x Emblem of Triumph
+(@Thorim10h,45784,-100,2,0,1,1), -- Thorim's Sigil (QUEST ONLY, HARDMODE ONLY)
+-- 1 from Hardmode items
+(@Thorim10h,45933,0,2,1,1,1), -- Pendant of the Shallow Grave
+(@Thorim10h,45929,0,2,1,1,1), -- Sif's Remembrance
+(@Thorim10h,45928,0,2,1,1,1), -- Gauntlets of the Thunder God
+(@Thorim10h,45931,0,2,1,1,1), -- Mjolnir Runestone
+(@Thorim10h,45930,0,2,1,1,1), -- Combatant's Bootblade
+-- -------------------
+-- -- Thorim 25 man --
+-- -------------------
+(@Thorim25n,1,100,3,0,-@Thorim25Ref,1), -- 1x Normal Loot Item
+(@Thorim25n,2,100,3,0,-@HelmToken,2), -- 2x Token
+(@Thorim25n,47241,100,3,0,1,1), -- 1x Emblem of Triumph
+(@Thorim25n,3,10,3,0,-@Recipe,1), -- Chance on Recipe
+(@Thorim25n,45087,10,3,0,1,1), -- Chance on Runed Orb
+(@Thorim25n,45083,8,1,0,1,1), -- Fragment of Val'anyr Normal
+-- Hardmode 25 man
+(@Thorim25h,1,100,3,0,-@Thorim25Ref,1), -- 1x Normal Loot Item
+(@Thorim25h,2,100,3,0,-@HelmToken,2), -- 2x Token
+(@Thorim25h,47241,100,3,0,1,1), -- 1x Emblem of Triumph
+(@Thorim25h,3,10,3,0,-@Recipe,1), -- Chance on Recipe
+(@Thorim25h,45087,10,3,0,1,1), -- Chance on Runed Orb
+(@Thorim25h,45817,-100,1,0,1,1), -- Thorim's Sigil (QUEST ONLY, HARDMODE ONLY)
+(@Thorim25h,45083,18,1,0,1,1), -- Fragment of Val'anyr Hardmode
+-- 1 from Hardmode items
+(@Thorim25h,45471,0,1,1,1,1), -- Fate's Clutch
+(@Thorim25h,45570,0,1,1,1,1), -- Skyforge Crossbow
+(@Thorim25h,45472,0,1,1,1,1), -- Warhelm of the Champion
+(@Thorim25h,45474,0,1,1,1,1), -- Pauldrons of the Combatant
+(@Thorim25h,45470,0,1,1,1,1), -- Wisdom's Hold
+(@Thorim25h,45473,0,1,1,1,1); -- Embrace of the Gladiator
+
diff --git a/sql/old/3.3.5a/2012_04_18_03_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_18_03_world_creature_loot_template.sql
new file mode 100644
index 00000000000..5ad26809cdf
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_03_world_creature_loot_template.sql
@@ -0,0 +1,2 @@
+-- Increase dropchance for Venture Co. Explosives
+UPDATE `creature_loot_template` SET `ChanceOrQuestChance`=-10 WHERE `entry` IN(28123,28124) AND `item`=39651;
diff --git a/sql/old/3.3.5a/2012_04_18_04_world_pickpocketing_loot_template.sql b/sql/old/3.3.5a/2012_04_18_04_world_pickpocketing_loot_template.sql
new file mode 100644
index 00000000000..ab1c562f7dd
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_04_world_pickpocketing_loot_template.sql
@@ -0,0 +1,501 @@
+-- implement missing Northrend pickpocket loot
+-- reference IDs
+SET @NEWREF0 := 10026;
+SET @NEWREF1 := @NEWREF0+1;
+SET @NEWREF2 := @NEWREF0+2;
+SET @NEWREF3 := @NEWREF0+3;
+SET @NEWREF4 := @NEWREF0+4;
+SET @NEWREF5 := @NEWREF0+5;
+SET @NEWREF6 := @NEWREF0+6;
+SET @NEWREF7 := @NEWREF0+7;
+SET @NEWREF8 := @NEWREF0+8;
+SET @NEWREF9 := @NEWREF0+9;
+-- new references
+DELETE FROM `reference_loot_template` WHERE entry IN (@NEWREF0, @NEWREF1, @NEWREF2, @NEWREF3, @NEWREF4, @NEWREF5, @NEWREF6, @NEWREF7, @NEWREF8, @NEWREF9);
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`mincountOrRef`,`maxcount`) VALUES
+(@NEWREF0,33447,25,1,1),-- Runic Healing Potion
+(@NEWREF0,35953,30,1,1),-- Mead Basted Caribou
+(@NEWREF0,38260,50,1,1),-- Empty Tobacco Pouch
+(@NEWREF0,43575,80,1,1),-- Reinforced Junkbox
+(@NEWREF1,36862,4,1,1),-- Wrogn Troll Dice
+(@NEWREF1,40202,20,1,1),-- Sizzling Grizzly Flank
+(@NEWREF2,33452,30,1,1),-- Honey-Spiced Lichen
+(@NEWREF2,38269,35,1,1),-- Soggy Handkerchief
+(@NEWREF3,33454,15,1,1),-- Salted Venison
+(@NEWREF3,38261,13,1,1),-- Ben House Key
+(@NEWREF4,38263,19,1,1),-- Too-Small Amband
+(@NEWREF4,38264,18,1,1),-- A Very Pretty Rock
+(@NEWREF5,29448,9,1,1),-- Mag'har Mild Cheese
+(@NEWREF5,29450,13,1,1),-- Telaari Grapes
+(@NEWREF5,37467,40,1,1),-- A Steamy Romance Novel: Forbidden Love
+(@NEWREF6,35947,25,1,1),-- Sparkling Frostcap
+(@NEWREF6,38269,40,1,1),-- Soggy Handkerchief
+(@NEWREF7,33447,25,1,1),-- Runic Healing Potion
+(@NEWREF7,35947,25,1,1),-- Sparkling Frostcap
+(@NEWREF7,38269,40,1,1),-- Soggy Handkerchief
+(@NEWREF7,43575,80,1,1),-- Reinforced Junkbox
+(@NEWREF8,35948,11,1,1),-- Savory Snowplum
+(@NEWREF8,35950,9,1,1),-- Sweet Potato Bread
+(@NEWREF8,35952,8,1,1),-- Briny Hardcheese
+(@NEWREF9,33447,25,1,1),-- Runic Healing Potion
+(@NEWREF9,38260,50,1,1),-- Empty Tobacco Pouch
+(@NEWREF9,43575,80,1,1); -- Reinforced Junkbox
+-- implement pickpokect loot
+UPDATE `creature_template` SET `pickpocketloot`=entry WHERE `entry` IN (25800,23667,23674,23760,23796,23865,23875,23963,24069,24262,24400,24460,25351,25427,25428,25429,25430,25601,25801,26073,26202,26334,26413,26447,26480,26481,26620,26621,26624,26626,26635,26636,26637,26639,26658,26681,26696,26727,26729,26800,26802,26836,26948,27105,27210,27211,/**/27234,27235,27247,27278,27289,27334,27342,27431,27533,27580,27639,27640,27699,27800,27859,27860,27961,27964,27965,28494,28496,28565,28803,28837,28838,28848,28961,28965,29369,29407,29553,29554,29656,29793,29820,29822,29836,29874,29875,29885,29920,30283,30319,30856,30868,31396,31554,32263);
+UPDATE `creature_template` SET `pickpocketloot`=25430 WHERE `entry` IN (23654,23656,23663,23665,25434,26728,26827,26926,27554,32572);
+UPDATE `creature_template` SET `pickpocketloot`=26481 WHERE `entry` IN (23662,23940,24016,24161,26493,26655,27007,27009);
+UPDATE `creature_template` SET `pickpocketloot`=25351 WHERE `entry` IN (23993,24540,25224,25383,26343,26492,26891,26946,27224,27226,27283,27360,27552,27799,27823,27826,28564,28750);
+UPDATE `creature_template` SET `pickpocketloot`=27533 WHERE `entry` IN (26555,26669,26670,26694,26830,27871,28022,28108,28242,28268,28419,29123,29133,29722,29738,30701,30894,30922,30949,31139,31150,31779,31847,32278,32505);
+UPDATE `creature_template` SET `pickpocketloot`=30319 WHERE `entry` IN (30111,30179);
+DELETE FROM `pickpocketing_loot_template` WHERE entry IN (25800,23656,23662,23663,23665,23667,23674,23760,23796,23865,23875,23940,23963,23993,24016,24069,24161,24262,24400,24460,24540,25224,25351,25383,25427,25428,25429,25430,25434,25601,25801,26073,26202,26334,26343,26413,26447,26480,26481,26492,26493,26555,26620,26621,26624,26626,26635,26636,26637,26639,26655,26658,26669,26670,26681,26694,26696,26727,26728,26729,26800,26802,26827,26830,26836,26891,26926,26946,26948,27007,27009,27105,27210,27211,27224,27226,27234,27235,27247,27278,27283,27289,27334,27342,27360,27431,27533,27552,27554,27580,27639,27640,27699,27799,27800,27823,27826,27859,27860,27871,27961,27964,27965,28022,28108,28242,28268,28419,28494,28496,28564,28565,28750,28803,28837,28838,28848,28961,28965,29123,29133,29369,29407,29553,29554,29656,29722,29738,29793,29820,29822,29836,29874,29875,29885,29920,30111,30179,30283,30319,30701,30856,30868,30894,30922,30949,31139,31150,31396,31554,31779,31847,32263,32278,32505,32572);
+INSERT INTO `pickpocketing_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Plague Walker
+(30283,43575,100,0,1,1),-- Reinforced Junkbox
+(30283,0,100,0,-@NEWREF6,1),
+-- Twilight Darkcaster
+(30319,0,100,0,-@NEWREF0,1),
+(30319,33449,11,0,1,1),-- Crusty Flatbread
+(30319,1,100,0,-@NEWREF1,1),
+(30319,2,100,0,-@NEWREF3,1),
+-- High Priest Talet-Kha
+(26073,43575,58,0,1,1),-- Reinforced Junkbox
+(26073,0,100,0,-@NEWREF5,1),
+(26073,33449,8,0,1,1),-- Crusty Flatbread
+(26073,33447,8,0,1,1),-- Runic Healing Potion
+-- Nedar, Lord of Rhinos
+(25801,0,100,0,-@NEWREF5,1),
+(25801,33447,6,0,1,1),-- Runic Healing Potion
+(25801,38261,6,0,1,1),-- Bent House Key
+-- Clam Master K
+(25800,43575,47,0,1,1),-- Reinforced Junkbox
+(25800,0,100,0,-@NEWREF5,1),
+(25800,38261,15,0,1,1),-- Bent House Key
+(25800,33449,5,0,1,1),-- Crusty Flatbread
+(25800,33447,5,0,1,1),-- Runic Healing Potion
+-- Magmothregar
+(25430,0,100,0,-@NEWREF3,1),
+(25430,1,100,0,-@NEWREF9,1),
+(25430,33449,7,0,1,1),-- Crusty Flatbread
+(25430,36862,4,0,1,1),-- Wrogn Troll Dice
+-- Kaganishu
+(25427,43575,43,0,1,1),-- Reinforced Junkbox
+(25427,33454,35,0,1,1),-- Salted Venison
+(25427,0,100,0,-@NEWREF4,1),
+(25427,33447,8,0,1,1),-- Runic Healing Potion
+-- Prince Valanar
+(25601,43575,43,0,1,1),-- Reinforced Junkbox
+(25601,37467,39,0,1,1),-- A Steamy Romance Novel: Forbidden Love
+(25601,33447,9,0,1,1),-- Runic Healing Potion
+(25601,38261,9,0,1,1),-- Bent House Key
+(25601,33449,4,0,1,1),-- Crusty Flatbread
+(25601,29450,4,0,1,1),-- Telaari Grapes
+-- Ghostly Sage
+(25351,43575,42,0,1,1),-- Reinforced Junkbox
+(25351,0,100,0,-@NEWREF2,1),
+(25351,33447,10,0,1,1),-- Runic Healing Potion
+-- Luthion the Vile
+(27860,43575,42,0,1,1),-- Reinforced Junkbox
+(27860,0,100,0,-@NEWREF5,1),
+(27860,38261,13,0,1,1),-- Bent House Key
+(27860,33449,6,0,1,1),-- Crusty Flatbread
+(27860,33447,6,0,1,1),-- Runic Healing Potion
+-- Reckless Scavenger
+(26658,0,100,0,-@NEWREF2,1),
+(26658,43575,40,0,1,1),-- Reinforced Junkbox
+-- Ziggurat Defender
+(26202,43575,40,0,1,1),-- Reinforced Junkbox
+(26202,0,100,0,-@NEWREF2,1),
+(26202,33447,7,0,1,1),-- Runic Healing Potion
+(26202,29569,3,0,1,1),-- Strong Junkbox
+-- Magmoth Forager
+(25429,43575,39,0,1,1),-- Reinforced Junkbox
+(25429,33454,27,0,1,1),-- Salted Venison
+(25429,0,100,0,-@NEWREF4,1),
+(25429,33447,10,0,1,1),-- Runic Healing Potion
+(25429,38266,0.5,0,1,1),-- Rotund Relic
+-- Magmoth Shaman
+(25428,43575,39,0,1,1),-- Reinforced Junkbox
+(25428,33454,28,0,1,1),-- Salted Venison
+(25428,0,100,0,-@NEWREF4,1),
+(25428,33447,9,0,1,1),-- Runic Healing Potion
+(25428,38266,0.5,0,1,1),-- Rotund Relic
+-- Vanthryn the Merciless
+(27859,43575,39,0,1,1),-- Reinforced Junkbox
+(27859,0,100,0,-@NEWREF5,1),
+(27859,33449,12,0,1,1),-- Crusty Flatbread
+(27859,38261,12,0,1,1),-- Bent House Key
+(27859,33447,3,0,1,1),-- Runic Healing Potion
+-- Unbound Corrupter
+(30868,43575,47,0,1,1),-- Reinforced Junkbox
+(30868,40202,18,0,1,1),-- Sizzling Grizzly Flank
+(30868,33447,16,0,1,1),-- Runic Healing Potion
+(30868,0,100,0,-@NEWREF4,1),
+-- Unbound Trickster
+(30856,43575,38,0,1,1),-- Reinforced Junkbox
+(30856,0,100,0,-@NEWREF4,1),
+(30856,33447,19,0,1,1),-- Runic Healing Potion
+(30856,40202,14,0,1,1),-- Sizzling Grizzly Flank
+-- Kreug Oathbreaker
+(27105,43575,63,0,1,1),-- Reinforced Junkbox
+(27105,33447,25,0,1,1),-- Runic Healing Potion
+(27105,38269,13,0,1,1),-- Soggy Handkerchief
+-- Lead Cannoneer Zierhut
+(27235,43575,53,0,1,1),-- Reinforced Junkbox
+(27235,0,100,0,-@NEWREF5,1),
+(27235,33447,8,0,1,1),-- Runic Healing Potion
+(27235,38261,8,0,1,1),-- Bent House Key
+-- Devout Bodyguard
+(27247,43575,50,0,1,1),-- Reinforced Junkbox
+(27247,37467,42,0,1,1),-- A Steamy Romance Novel: Forbidden Love
+(27247,33447,8,0,1,1),-- Runic Healing Potion
+(27247,29450,8,0,1,1),-- Telaari Grapes
+(27247,38261,8,0,1,1),-- Bent House Key
+-- Magnataur Alpha
+(26481,0,100,0,-@NEWREF9,1),
+(26481,1,100,0,-@NEWREF3,1),
+(26481,33449,5,0,1,1),-- Crusty Flatbread
+-- High General Abbendis
+(27210,43575,48,0,1,1),-- Reinforced Junkbox
+(27210,0,100,0,-@NEWREF5,1),
+(27210,33449,10,0,1,1),-- Crusty Flatbread
+(27210,33447,10,0,1,1),-- Runic Healing Potion
+(27210,38261,8,0,1,1),-- Bent House Key
+-- Anub'ar Dreadweaver
+(26413,43575,44,0,1,1),-- Reinforced Junkbox
+(26413,43576,22,0,1,1),-- Chitin Polish
+(26413,33452,11,0,1,1),-- Honey-Spiced Lichen
+(26413,33447,11,0,1,1),-- Runic Healing Potion
+(26413,43577,11,0,1,1),-- Carapace Cleanser
+-- Naxxramas Necrolord
+(27289,33452,44,0,1,1),-- Honey-Spiced Lichen
+(27289,43575,44,0,1,1),-- Reinforced Junkbox
+(27289,33447,11,0,1,1),-- Runic Healing Potion
+-- Onslaught Commander Iustus
+(27334,37467,50,0,1,1),-- A Steamy Romance Novel: Forbidden Love
+(27334,43575,44,0,1,1),-- Reinforced Junkbox
+(27334,29448,13,0,1,1),-- Mag'har Mild Cheese
+(27334,38261,6,0,1,1),-- Bent House Key
+-- Blacksmith Goodman
+(27234,43575,41,0,1,1),-- Reinforced Junkbox
+(27234,0,100,0,-@NEWREF5,1),
+(27234,38261,13,0,1,1),-- Bent House Key
+(27234,33447,9,0,1,1),-- Runic Healing Potion
+(27234,33449,7,0,1,1),-- Crusty Flatbread
+-- Magnataur Youngling
+(26480,33449,19,0,1,1),-- Crusty Flatbread
+(26480,0,100,0,-@NEWREF3,1),
+(26480,1,100,0,-@NEWREF9,1),
+-- Bloodpaw Warrior
+(27342,43575,40,0,1,1),-- Reinforced Junkbox
+(27342,33454,26,0,1,1),-- Salted Venison
+(27342,0,100,0,-@NEWREF4,1),
+(27342,33447,11,0,1,1),-- Runic Healing Potion
+(27342,38266,0.6,0,1,1),-- Rotund Relic
+-- Frigid Geist
+(27533,0,100,0,-@NEWREF7,1),
+-- Snowplain Zealot
+(27278,43575,40,0,1,1),-- Reinforced Junkbox
+(27278,33454,22,0,1,1),-- Salted Venison
+(27278,0,100,0,-@NEWREF4,1),
+(27278,33447,12,0,1,1),-- Runic Healing Potion
+(27278,38266,0.3,0,1,1),-- Rotund Relic
+-- Hulking Atrocity
+(26948,43575,39,0,1,1),-- Reinforced Junkbox
+(26948,0,100,0,-@NEWREF2,1),
+(26948,33447,9,0,1,1),-- Runic Healing Potion
+(26948,29569,0.3,0,1,1),-- Strong Junkbox
+(26948,38268,0.3,0,1,1),-- Spare Hand
+-- Onslaught Executioner
+(27211,43575,39,0,1,1),-- Reinforced Junkbox
+(27211,0,100,0,-@NEWREF5,1),
+(27211,33449,12,0,1,1),-- Crusty Flatbread
+(27211,38261,11,0,1,1),-- Bent House Key
+(27211,33447,5,0,1,1),-- Runic Healing Potion
+-- Gigantaur
+(26836,0,100,0,-@NEWREF9,1),
+(26836,1,100,0,-@NEWREF3,1),
+(26836,33449,12,0,1,1),-- Crusty Flatbread
+-- Leprous Servant
+(27800,43575,38,0,1,1),-- Reinforced Junkbox
+(27800,0,100,0,-@NEWREF2,1),
+(27800,33447,7,0,1,1),-- Runic Healing Potion
+(27800,38268,2,0,1,1),-- Spare Hand
+-- Wretched Belcher
+(26624,43575,100,0,1,1),-- Reinforced Junkbox
+(26624,0,100,0,-@NEWREF2,1),
+(26624,33447,25,0,1,1),-- Runic Healing Potion
+(26624,35947,25,0,1,1),-- Sparkling Frostcap
+-- Drakkari Commander
+(27431,43575,90,0,1,1),-- Reinforced Junkbox
+(27431,0,100,0,-@NEWREF2,1),
+(27431,33447,26,0,1,1),-- Runic Healing Potion
+(27431,35947,10,0,1,1),-- Sparkling Frostcap
+-- Drakkari Guardian
+(26620,0,100,0,-@NEWREF0,1),
+(26620,33454,17,0,1,1),-- Salted Venison
+(26620,33449,9,0,1,1),-- Crusty Flatbread
+(26620,38261,9,0,1,1),-- Bent House Key
+(26620,1,100,0,-@NEWREF1,1),
+-- Risen Drakkari Soulmage
+(26636,43575,85,0,1,1),-- Reinforced Junkbox
+(26636,0,100,0,-@NEWREF2,1),
+(26636,35947,21,0,1,1),-- Sparkling Frostcap
+(26636,33447,16,0,1,1),-- Runic Healing Potion
+-- Ghoul Tormentor
+(26621,43575,81,0,1,1),-- Reinforced Junkbox
+(26621,0,100,0,-@NEWREF2,1),
+(26621,35947,24,0,1,1),-- Sparkling Frostcap
+(26621,33447,14,0,1,1),-- Runic Healing Potion
+-- Risen Drakkari Warrior
+(26635,43575,71,0,1,1),-- Reinforced Junkbox
+(26635,0,100,0,-@NEWREF2,1),
+(26635,33447,29,0,1,1),-- Runic Healing Potion
+(26635,35947,18,0,1,1),-- Sparkling Frostcap
+(26635,38268,0.8,0,1,1),-- Spare Hand
+-- Risen Drakkari Handler
+(26637,0,100,0,-@NEWREF2,1),
+(26637,43575,67,0,1,1),-- Reinforced Junkbox
+(26637,33447,30,0,1,1),-- Runic Healing Potion
+(26637,35947,18,0,1,1),-- Sparkling Frostcap
+-- Scourge Reanimator
+(26626,0,100,0,-@NEWREF2,1),
+(26626,43575,67,0,1,1),-- Reinforced Junkbox
+(26626,33447,21,0,1,1),-- Runic Healing Potion
+(26626,35947,21,0,1,1),-- Sparkling Frostcap
+-- Drakkari Shaman
+(26639,0,100,0,-@NEWREF0,1),
+(26639,33449,18,0,1,1),-- Crusty Flatbread
+(26639,1,100,0,-@NEWREF3,1),
+(26639,40202,11,0,1,1),-- Sizzling Grizzly Flank
+-- Selas
+(27580,43575,50,0,1,1),-- Reinforced Junkbox
+(27580,0,100,0,-@NEWREF3,1),
+(27580,38260,20,0,1,1),-- Empty Tobacco Pouch
+-- Forgemaster Damrath
+(26334,43575,48,0,1,1),-- Reinforced Junkbox
+(26334,0,100,0,-@NEWREF5,1),
+(26334,33447,9,0,1,1),-- Runic Healing Potion
+(26334,38261,9,0,1,1),-- Bent House Key
+-- Grumbald One-Eye
+(26681,43575,39,0,1,1),-- Reinforced Junkbox
+(26681,33454,28,0,1,1),-- Salted Venison
+(26681,0,100,0,-@NEWREF4,1),
+(26681,33447,9,0,1,1),-- Runic Healing Potion
+-- Drakkari Shaman
+(26447,0,100,0,-@NEWREF9,1),
+(26447,1,100,0,-@NEWREF3,1),
+(26447,33449,10,0,1,1),-- Crusty Flatbread
+(26447,35799,0.2,0,1,1),-- Frozen Mojo
+(26447,36862,0.2,0,1,1),-- Wrogn Troll Dice
+-- Drakkari God Hunter
+(29820,0,100,0,-@NEWREF0,1),
+(29820,1,100,0,-@NEWREF1,1),
+-- Drakkari Battle Rider
+(29836,0,100,0,-@NEWREF0,1),
+(29836,40202,18,0,1,1),-- Sizzling Grizzly Flank
+-- Ruins Dweller
+(29920,43575,71,0,1,1),-- Reinforced Junkbox
+(29920,37452,69,0,1,1),-- Fatty Bluefin
+(29920,38274,58,0,1,1),-- Large Snail Shell
+(29920,38273,35,0,1,1),-- Brain Coral
+(29920,33447,16,0,1,1),-- Runic Healing Potion
+-- Drakkari Fire Weaver
+(29822,0,100,0,-@NEWREF0,1),
+(29822,40202,24,0,1,1),-- Sizzling Grizzly Flank
+-- Drakkari Inciter
+(29874,0,100,0,-@NEWREF0,1),
+(29874,36862,16,0,1,1),-- Wrogn Troll Dice
+(29874,40202,12,0,1,1),-- Sizzling Grizzly Flank
+-- Titanium Siegebreaker
+(28961,0,100,0,-@NEWREF0,1),
+(28961,40202,35,0,1,1),-- Sizzling Grizzly Flank
+-- Stormforged Sentinel
+(28837,0,100,0,-@NEWREF0,1),
+(28837,40202,16,0,1,1),-- Sizzling Grizzly Flank
+-- Titanium Thunderer
+(28965,0,100,0,-@NEWREF0,1),
+(28965,40202,44,0,1,1),-- Sizzling Grizzly Flank
+-- Titanium Vanguard
+(28838,0,100,0,-@NEWREF0,1),
+(28838,40202,27,0,1,1),-- Sizzling Grizzly Flank
+-- Dark Rune Scholar
+(27964,0,100,0,-@NEWREF9,1),
+(27964,1,100,0,-@NEWREF1,1),
+-- Dark Rune Worker
+(27961,0,100,0,-@NEWREF0,1),
+(27961,40202,29,0,1,1),-- Sizzling Grizzly Flank
+(27961,36862,4,0,1,1),-- Wrogn Troll Dice
+-- Dark Rune Shaper
+(27965,0,100,0,-@NEWREF0,1),
+(27965,40202,28,0,1,1),-- Sizzling Grizzly Flank
+-- Steel Gate Archaeologist
+(24400,0,100,0,-@NEWREF0,1),
+(24400,1,100,0,-@NEWREF5,1),
+(24400,33449,7,0,1,1),-- Crusty Flatbread
+(24400,38261,9,0,1,1),-- Bent House Key
+-- Blacksouled Keeper
+(23875,0,100,0,-@NEWREF0,1),
+(23875,1,100,0,-@NEWREF3,1),
+(23875,33449,14,0,1,1),-- Crusty Flatbread
+-- Winterskorn Rune-Seer
+(23667,0,100,0,-@NEWREF0,1),
+(23667,33449,7,0,1,1),-- Crusty Flatbread
+(23667,33454,7,0,1,1),-- Salted Venison
+-- Sergeant Lorric
+(23963,43575,45,0,1,1),-- Reinforced Junkbox
+(23963,0,100,0,-@NEWREF5,1),
+(23963,33447,13,0,1,1),-- Runic Healing Potion
+(23963,38261,11,0,1,1),-- Bent House Key
+(23963,33449,7,0,1,1),-- Crusty Flatbread
+-- Gjalerhorn Scavenger
+(27699,0,100,0,-@NEWREF4,1),
+(27699,43575,43,0,1,1),-- Reinforced Junkbox
+(27699,33454,22,0,1,1),-- Salted Venison
+(27699,33447,7,0,1,1),-- Runic Healing Potion
+(27699,29569,0.8,0,1,1),-- Strong Junkbox
+-- Iron Rune Binder
+(23796,0,100,0,-@NEWREF5,1),
+(23796,43575,42,0,1,1),-- Reinforced Junkbox
+(23796,38261,12,0,1,1),-- Bent House Key
+(23796,33449,11,0,1,1),-- Crusty Flatbread
+(23796,33447,9,0,1,1),-- Runic Healing Potion
+(23796,29569,0.5,0,1,1),-- Strong Junkbox
+-- Forsaken Plaguebringer
+(23760,0,100,0,-@NEWREF2,1),
+(23760,43575,41,0,1,1),-- Reinforced Junkbox
+(23760,33447,10,0,1,1),-- Runic Healing Potion
+(23760,38268,0.3,0,1,1),-- Spare Hand
+-- Chillmere Tidehunter
+(24460,43575,40,0,1,1),-- Reinforced Junkbox
+(24460,38274,33,0,1,1),-- Large Snail Shell
+(24460,37452,18,0,1,1),-- Fatty Bluefin
+(24460,38273,15,0,1,1),-- Brain Coral
+(24460,33447,7,0,1,1),-- Runic Healing Potion
+-- Vrykul Soul
+(24262,0,100,0,-@NEWREF2,1),
+(24262,43575,40,0,1,1),-- Reinforced Junkbox
+(24262,33447,3,0,1,1),-- Runic Healing Potion
+-- Iron Rune Sage
+(23674,0,100,0,-@NEWREF5,1),
+(23674,43575,39,0,1,1),-- Reinforced Junkbox
+(23674,38261,13,0,1,1),-- Bent House Key
+(23674,33449,9,0,1,1),-- Crusty Flatbread
+(23674,33447,6,0,1,1),-- Runic Healing Potion
+-- Vengeance Bringer
+(23865,43575,39,0,1,1),-- Reinforced Junkbox
+(23865,0,100,0,-@NEWREF2,1),
+-- Restless Lookout
+(31554,43575,80,0,1,1),-- Reinforced Junkbox
+(31554,35947,40,0,1,1),-- Sparkling Frostcap
+-- Val'kyr Taskmistress
+(31396,43575,56,0,1,1),-- Reinforced Junkbox
+(31396,35947,38,0,1,1),-- Sparkling Frostcap
+(31396,33447,15,0,1,1),-- Runic Healing Potion
+-- Overseer Veraj
+(32263,43575,42,0,1,1),-- Reinforced Junkbox
+(32263,37467,28,0,1,1),-- A Steamy Romance Novel: Forbidden Love
+(32263,38261,15,0,1,1),-- Bent House Key
+(32263,33447,13,0,1,1),-- Runic Healing Potion
+(32263,0,100,0,-@NEWREF8,1),
+-- Steward
+(26729,0,100,0,-@NEWREF0,1),
+(26729,1,100,0,-@NEWREF3,1),
+(26729,33449,31,0,1,1),-- Crusty Flatbread
+(26729,29569,0.5,0,1,1),-- Strong Junkbox
+-- Alliance Berserker
+(26800,43575,62,0,1,1),-- Reinforced Junkbox
+(26800,33449,19,0,1,1),-- Crusty Flatbread
+(26800,38261,16,0,1,1),-- Bent House Key
+(26800,33447,10,0,1,1),-- Runic Healing Potion
+(26800,0,100,0,-@NEWREF5,1),
+-- Alliance Ranger
+(26802,0,100,0,-@NEWREF5,1),
+(26802,43575,60,0,1,1),-- Reinforced Junkbox
+(26802,38261,34,0,1,1),-- Bent House Key
+(26802,33449,24,0,1,1),-- Crusty Flatbread
+(26802,33447,12,0,1,1),-- Runic Healing Potion
+-- Mage Hunter Ascendant
+(26727,0,100,0,-@NEWREF0,1),
+(26727,1,100,0,-@NEWREF3,1),
+(26727,33449,29,0,1,1),-- Crusty Flatbread
+-- Ring-Lord Sorceress
+(27639,43575,87,0,1,1),-- Reinforced Junkbox
+(27639,37467,46,0,1,1),-- A Steamy Romance Novel: Forbidden Love
+(27639,38261,28,0,1,1),-- Bent House Key
+(27639,33447,19,0,1,1),-- Runic Healing Potion
+(27639,0,100,0,-@NEWREF8,1),
+(27639,36863,1.6,0,1,1),-- Decahedral Dwarven Dice
+-- Ring-Lord Conjurer
+(27640,37467,67,0,1,1),-- A Steamy Romance Novel: Forbidden Love
+(27640,43575,64,0,1,1),-- Reinforced Junkbox
+(27640,33447,30,0,1,1),-- Runic Healing Potion
+(27640,38261,26,0,1,1),-- Bent House Key
+(27640,0,100,0,-@NEWREF8,1),
+-- Mildred the Cruel
+(29885,0,100,0,-@NEWREF0,1),
+(29885,40202,13,0,1,1),-- Sizzling Grizzly Flank
+-- Snowblind Devotee
+(29407,43575,42,0,1,1),-- Reinforced Junkbox
+(29407,40202,29,0,1,1),-- Sizzling Grizzly Flank
+(29407,0,100,0,-@NEWREF4,1),
+(29407,33447,12,0,1,1),-- Runic Healing Potion
+-- Snowblind Devotee
+(29554,43575,43,0,1,1),-- Reinforced Junkbox
+(29554,40202,27,0,1,1),-- Sizzling Grizzly Flank
+(29554,0,100,0,-@NEWREF4,1),
+(29554,33447,12,0,1,1),-- Runic Healing Potion
+(29554,38266,0.2,0,1,1),-- Rotund Relic
+-- Frostfeather Witch
+(29793,43575,40,0,1,1),-- Reinforced Junkbox
+(29793,40202,21,0,1,1),-- Sizzling Grizzly Flank
+(29793,0,100,0,-@NEWREF4,1),
+(29793,33447,16,0,1,1),-- Runic Healing Potion
+-- Icemane Yeti
+(29875,43575,39,0,1,1),-- Reinforced Junkbox
+(29875,40202,23,0,1,1),-- Sizzling Grizzly Flank
+(29875,0,100,0,-@NEWREF4,1),
+(29875,33447,15,0,1,1),-- Runic Healing Potion
+(29875,38266,0.3,0,1,1),-- Rotund Relic
+-- Garm Watcher
+(29553,0,100,0,-@NEWREF0,1),
+(29553,1,100,0,-@NEWREF1,1),
+(29553,24231,0.3,0,2,2),-- Coarse Snuff
+-- Stormforged Taskmaster
+(29369,43575,38,0,1,1),-- Reinforced Junkbox
+(29369,37467,34,0,1,1),-- A Steamy Romance Novel: Forbidden Love
+(29369,33447,13,0,1,1),-- Runic Healing Potion
+(29369,38261,6,0,1,1),-- Bent House Key
+(29369,0,100,0,-@NEWREF8,1),
+-- Dragonflayer Bonecrusher
+(24069,0,100,0,-@NEWREF0,1),
+(24069,1,100,0,-@NEWREF1,1),
+(24069,29569,47,0,1,1),-- Strong Junkbox
+(24069,29570,34,0,1,1),-- A Gnome Effigy
+(24069,27855,22,0,1,1),-- Mag'har Grainbread
+(24069,27854,19,0,1,1),-- Smoked Talbuk Venison
+(24069,22829,10,0,1,1),-- Super Healing Potion
+(24069,23438,1.2,0,1,1),-- Star of Elune
+-- Ymirjar Berserker
+(26696,0,100,0,-@NEWREF7,1),
+(26696,29569,1.1,0,1,1),-- Strong Junkbox
+-- Kutube'sa
+(28494,0,100,0,-@NEWREF0,1),
+(28494,1,100,0,-@NEWREF1,1),
+-- Chulo the Mad
+(28496,0,100,0,-@NEWREF0,1),
+(28496,40202,6,0,1,1),-- Sizzling Grizzly Flank
+-- Drakuru's Guard
+(28803,43575,50,0,1,1),-- Reinforced Junkbox
+(28803,33447,33,0,1,1),-- Runic Healing Potion
+(28803,38269,17,0,1,1),-- Soggy Handkerchief
+-- Prophet of Har'koa
+(28848,0,100,0,-@NEWREF0,1),
+(28848,40202,3,0,1,1),-- Sizzling Grizzly Flank
+-- Decaying Ghoul
+(28565,0,100,0,-@NEWREF7,1),
+(28565,22829,0.9,0,1,1),-- Super Healing Potion
+-- Drakuru Berserker
+(29656,0,100,0,-@NEWREF0,1),
+(29656,1,100,0,-@NEWREF3,1),
+(29656,33449,11,0,1,1),-- Crusty Flatbread
+(29656,29569,0.9,0,1,1); -- Strong Junkbox
diff --git a/sql/old/3.3.5a/2012_04_18_05_world_conditions.sql b/sql/old/3.3.5a/2012_04_18_05_world_conditions.sql
new file mode 100644
index 00000000000..ecf80f270a3
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_05_world_conditions.sql
@@ -0,0 +1,4 @@
+-- Add condition to the Lovely Charm aura
+DELETE FROM conditions WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`= 69511;
+INSERT INTO conditions (SourceTypeOrReferenceId, SourceGroup, SourceEntry, ElseGroup, ConditionTypeOrReference, ConditionValue1, ConditionValue2, ConditionValue3, ErrorTextId, ScriptName, COMMENT) VALUES
+(17,0,69511,0,12,8,0,0,0, '', 'Lovely Charm - Only during event');
diff --git a/sql/old/3.3.5a/2012_04_18_06_world_creature_template.sql b/sql/old/3.3.5a/2012_04_18_06_world_creature_template.sql
new file mode 100644
index 00000000000..8c167c2ffa1
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_06_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Remove Skinning loot from Blackwing Spellbinder
+UPDATE `creature_template` SET `skinloot`=0 WHERE `entry`=12457;
diff --git a/sql/old/3.3.5a/2012_04_18_07_world_fishing_loot_template.sql b/sql/old/3.3.5a/2012_04_18_07_world_fishing_loot_template.sql
new file mode 100644
index 00000000000..6c39cc95b48
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_07_world_fishing_loot_template.sql
@@ -0,0 +1,2 @@
+-- update wrong area.
+UPDATE `fishing_loot_template` SET `entry`=4560 WHERE `entry`=4395 AND `item`=11026;
diff --git a/sql/old/3.3.5a/2012_04_18_08_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_18_08_world_creature_loot_template.sql
new file mode 100644
index 00000000000..4b00685ed55
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_18_08_world_creature_loot_template.sql
@@ -0,0 +1,22 @@
+-- Add loot for Hrothgar's Landing
+DELETE FROM `creature_loot_template` WHERE `entry` IN (34980,34838,34839,34965);
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- AURIAYA 10-man
+-- Drottinn Hrothgar - http://old.wowhead.com/npc=34980
+(34980,46859,-100,1,0,1,1), -- Stolen Tallstrider Leg
+-- Kvaldir Reaver
+(34838,46859,-100,1,0,1,1), -- Stolen Tallstrider Leg
+(34838,49676,5,1,0,1,1), -- Kvaldir Attack Plans
+(34838,33470,35,1,0,1,4), -- 1-4x Frostweave Cloth
+(34838,1,10,1,0,-24727,1), -- 1 of Northrend scrolls
+(34838,2,10,1,0,-26002,1), -- Northrend Grey Item Reference1
+(34838,3,2,1,0,-35080,1), -- Northrend Green Item Reference
+-- Kvaldir Mist Binder
+(34839,46859,-100,1,0,1,1), -- Stolen Tallstrider Leg
+(34839,49676,5,1,0,1,1), -- Kvaldir Attack Plans
+(34839,33470,35,1,0,1,4), -- 1-4x Frostweave Cloth
+(34839,1,10,1,0,-24727,1), -- 1 of Northrend scrolls
+(34839,2,10,1,0,-26002,1), -- Northrend Grey Item Reference1
+(34839,3, 2,1,0,-35080,1), -- Northrend Green Item Reference
+-- Mistcaller Yngvar
+(34965,46859,-100,1,0,1,1); -- Stolen Tallstrider Leg
diff --git a/sql/old/3.3.5a/2012_04_19_00_world_creature_template.sql b/sql/old/3.3.5a/2012_04_19_00_world_creature_template.sql
new file mode 100644
index 00000000000..e9abd40095e
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_19_00_world_creature_template.sql
@@ -0,0 +1,7 @@
+-- update Plague Slime & Marauding Geist to naxx25 trash lootid
+UPDATE `creature_template` SET `lootid`=100005 WHERE `entry` IN(29575,30424);
+-- update Plague Slime & Marauding Geist to naxx10 trash lootid
+UPDATE `creature_template` SET `lootid`=100003 WHERE `entry` IN(16243,30083);
+DELETE FROM `creature_loot_template` WHERE `entry` IN(30424,29575,16243,30083);
+-- Remove scraps for naxx10 from creature creature_loot_template
+DELETE FROM `creature_loot_template` WHERE `item` IN (22373,22374,22375,22376);
diff --git a/sql/old/3.3.5a/2012_04_19_01_world_pickpocketing_loot_template.sql b/sql/old/3.3.5a/2012_04_19_01_world_pickpocketing_loot_template.sql
new file mode 100644
index 00000000000..997b16ff65d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_19_01_world_pickpocketing_loot_template.sql
@@ -0,0 +1,202 @@
+-- Fix to add pickpocketing loot for humoniods in borean tundra
+SET @GORLOCREF := 25100;
+SET @BERYLREF := @GORLOCREF+1;
+SET @BLOODREF := @GORLOCREF+2;
+SET @CHIEFREF := @GORLOCREF+3;
+SET @CULTREF := @GORLOCREF+4;
+SET @KVALDIRREF := @GORLOCREF+5;
+SET @CLAXREF := @GORLOCREF+6;
+SET @MAGMOTHREF := @GORLOCREF+7;
+-- Create reference templates
+DELETE FROM `reference_loot_template` WHERE `entry` BETWEEN @GORLOCREF AND @GORLOCREF+7;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(@GORLOCREF,29576,57,1,0,1,1), -- Shark Bait
+(@GORLOCREF,29569,30,1,0,1,1), -- Strong Junkbox
+(@GORLOCREF,27858,8,1,0,1,1), -- Sunspring Carp
+(@GORLOCREF,22829,3,1,0,1,1), -- Super Healing Potion
+(@GORLOCREF,23436,0.5,1,0,1,1), -- Living Ruby
+(@GORLOCREF,23437,0.5,1,0,1,1), -- Talasite
+(@GORLOCREF,23440,0.5,1,0,1,1), -- Dawnstone
+(@GORLOCREF,23438,0.5,1,0,1,1), -- Star of Elune
+(@GORLOCREF,23439,0.5,1,0,1,1), -- Noble Topaz
+-- --------------------------------------------------
+(@BERYLREF,37467,32.5,1,0,1,1), -- A Steamy Romance Novel: Forbidden Love
+(@BERYLREF,43575,31,1,0,1,1), -- Reinforced Junkbox
+(@BERYLREF,38261,10,1,0,1,1), -- Bent House Key
+(@BERYLREF,29448,7,1,0,1,1), -- Mag'har Mild Cheese
+(@BERYLREF,29450,7,1,0,1,1), -- Telaari Grapes
+(@BERYLREF,33447,6,1,0,1,1), -- Runic Healing Potion
+(@BERYLREF,33449,6,1,0,1,1), -- Crusty Flatbread
+(@BERYLREF,36863,0.5,1,0,1,1), -- Decahedral Dwarven Dice
+-- --------------------------------------------------
+(@BLOODREF,29572,37,1,0,1,1), -- Aboriginal Carvings
+(@BLOODREF,29569,33,1,0,1,1), -- Strong Junkbox
+(@BLOODREF,8952,20,1,0,1,1), -- Roasted Quail
+(@BLOODREF,22829,8,1,0,1,1), -- Super Healing Potion
+(@BLOODREF,23438,0.5,1,0,1,1), -- Star of Elune
+(@BLOODREF,23436,0.5,1,0,1,1), -- Living Ruby
+(@BLOODREF,23441,0.5,1,0,1,1), -- Nightseye
+(@BLOODREF,23437,0.5,1,0,1,1), -- Talasite
+(@BLOODREF,23440,0.5,1,0,1,1), -- Dawnstone
+-- --------------------------------------------------
+(@CHIEFREF,29569,50,1,0,1,1), -- Strong Junkbox
+(@CHIEFREF,27858,20,1,0,1,1), -- Sunspring Carp
+(@CHIEFREF,29576,20,1,0,1,1), -- Shark Bait
+(@CHIEFREF,22829,10,1,0,1,1), -- Super Healing Potion
+-- --------------------------------------------------
+(@CULTREF,29569,40,1,0,1,1), -- Strong Junkbox
+(@CULTREF,29571,37,1,0,1,1), -- A Steamy Romance Novel
+(@CULTREF,30458,8,1,0,1,1), -- Stromgarde Muenster
+(@CULTREF,27855,7,1,0,1,1), -- Mag'har Grainbread
+(@CULTREF,27856,6,1,0,1,1), -- Skethyl Berries
+(@CULTREF,22829,2,1,0,1,1), -- Super Healing Potion
+(@CULTREF,36863,0.5,1,0,1,1), -- Decahedral Dwarven Dice
+-- --------------------------------------------------
+(@KVALDIRREF,29569,39,1,0,1,1), -- Strong Junkbox
+(@KVALDIRREF,29570,28,1,0,1,1), -- A Gnome Effigy
+(@KVALDIRREF,27855,12,1,0,1,1), -- Mag'har Grainbread
+(@KVALDIRREF,27854,12,1,0,1,1), -- Smoked Talbuk Venison
+(@KVALDIRREF,22829,7,1,0,1,1), -- Super Healing Potion
+(@KVALDIRREF,23436,0.5,1,0,1,1), -- Living Ruby
+(@KVALDIRREF,23441,0.5,1,0,1,1), -- Nightseye
+(@KVALDIRREF,23440,0.5,1,0,1,1), -- Dawnstone
+(@KVALDIRREF,23439,0.5,1,0,1,1), -- Noble Topaz
+(@KVALDIRREF,23437,0.5,1,0,1,1), -- Talasite
+-- --------------------------------------------------
+(@CLAXREF,43575,28,1,0,1,1), -- Reinforced Junkbox
+(@CLAXREF,38273,26,1,0,1,1), -- Brain Coral
+(@CLAXREF,38274,23,1,0,1,1), -- Large Snail Shell
+(@CLAXREF,37452,17,1,0,1,1), -- Fatty Bluefin
+(@CLAXREF,33447,6,1,0,1,1), -- Runic Healing Potion
+-- --------------------------------------------------
+(@MAGMOTHREF,38260,33,1,0,1,1), -- Empty Tobacco Pouch
+(@MAGMOTHREF,38261,21,1,0,1,1), -- Bent House Key
+(@MAGMOTHREF,33449,16,1,0,1,1), -- Crusty Flatbread
+(@MAGMOTHREF,43575,16,1,0,1,1), -- Reinforced Junkbox
+(@MAGMOTHREF,33454,9,1,0,1,1), -- Salted Venison
+(@MAGMOTHREF,33447,5,1,0,1,1), -- Runic Healing Potion
+(@MAGMOTHREF,36862,1,1,0,1,1); -- Worn Troll Dice
+-- -------------------
+-- -- NPC Variables --
+-- -------------------
+SET @NPC := 25686;
+SET @NPC1 := 25700;
+SET @NPC2 := 25687;
+SET @NPC3 := 25685;
+SET @NPC4 := 25449;
+SET @NPC5 := 25316;
+SET @NPC6 := 25353;
+SET @NPC7 := 25719;
+SET @NPC8 := 25804;
+SET @NPC9 := 25392;
+SET @NPC10 := 25651;
+SET @NPC11 := 25836;
+SET @NPC12 := 25979;
+SET @NPC13 := 25806;
+SET @NPC14 := 25720;
+SET @NPC15 := 25803;
+SET @NPC16 := 25880;
+SET @NPC17 := 25618;
+SET @NPC18 := 25839;
+SET @NPC19 := 25470;
+SET @NPC20 := 24567;
+SET @NPC21 := 25467;
+SET @NPC22 := 25468;
+SET @NPC23 := 25501;
+SET @NPC24 := 25726;
+SET @NPC25 := 25701;
+SET @NPC26 := 25725;
+SET @NPC27 := 25699;
+SET @NPC28 := 24576;
+SET @NPC29 := 25605;
+SET @NPC30 := 25609;
+SET @NPC31 := 25378;
+SET @NPC32 := 25843;
+SET @NPC33 := 25496;
+SET @NPC34 := 25479;
+SET @NPC35 := 25760;
+SET @NPC36 := 26266;
+SET @NPC37 := 26451;
+SET @NPC38 := 25521;
+SET @NPC39 := 25613;
+SET @NPC40 := 25522;
+SET @NPC41 := 25520;
+SET @NPC42 := 25209;
+SET @NPC43 := 25210;
+SET @NPC44 := 25216;
+SET @NPC45 := 25215;
+SET @NPC46 := 25217;
+SET @NPC47 := 25789;
+SET @NPC48 := 24469;
+SET @NPC49 := 25432;
+SET @NPC50 := 25433;
+SET @NPC51 := 25615;
+SET @NPC52 := 25523;
+-- ----------------------
+-- -- Assign the loots --
+-- ----------------------
+UPDATE `creature_template` SET `pickpocketloot`=`entry` WHERE `entry` IN (@NPC,@NPC1,@NPC2,@NPC3,@NPC4,@NPC5,@NPC6,@NPC7,@NPC8,@NPC9,@NPC10,@NPC11,@NPC12,@NPC13,@NPC14,@NPC15,@NPC16,@NPC17,@NPC18,@NPC19,@NPC20,@NPC21,@NPC22,@NPC23,@NPC24,@NPC25,@NPC26,@NPC27,@NPC28,@NPC29,@NPC30,@NPC31,@NPC32,@NPC33,@NPC34,@NPC35,@NPC36,@NPC37,@NPC38,@NPC39,@NPC40,@NPC41,@NPC42,@NPC43,@NPC44,@NPC45,@NPC46,@NPC47,@NPC48,@NPC49,@NPC50,@NPC51,@NPC52);
+DELETE FROM `pickpocketing_loot_template` WHERE `entry` IN (@NPC,@NPC1,@NPC2,@NPC3,@NPC4,@NPC5,@NPC6,@NPC7,@NPC8,@NPC9,@NPC10,@NPC11,@NPC12,@NPC13,@NPC14,@NPC15,@NPC16,@NPC17,@NPC18,@NPC19,@NPC20,@NPC21,@NPC22,@NPC23,@NPC24,@NPC25,@NPC26,@NPC27,@NPC28,@NPC29,@NPC30,@NPC31,@NPC32,@NPC33,@NPC34,@NPC35,@NPC36,@NPC37,@NPC38,@NPC39,@NPC40,@NPC41,@NPC42,@NPC43,@NPC44,@NPC45,@NPC46,@NPC47,@NPC48,@NPC49,@NPC50,@NPC51,@NPC52);
+INSERT INTO `pickpocketing_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- -----------------------------------------------------------------------------------------------
+(@NPC,1,100,1,0,-@GORLOCREF,1), -- Gorloc ref loot template on Gorloc Gibberer
+(@NPC1,1,100,1,0,-@GORLOCREF,1), -- Gorloc ref loot template on Gorloc Hunter
+(@NPC2,1,100,1,0,-@GORLOCREF,1), -- Gorloc ref loot template on Gorloc Steam Belcher
+(@NPC3,1,100,1,0,-@GORLOCREF,1), -- Gorloc ref loot template on Gorloc Waddler
+-- -----------------------------------------------------------------------------------------------
+(@NPC4,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Beryl Reclaimer
+(@NPC5,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Beryl Sorcerer
+(@NPC6,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Beryl Treasure Hunter
+(@NPC7,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Coldarra Spellbinder
+(@NPC8,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Harold Lane
+(@NPC9,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on High Priest Andorath
+(@NPC10,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Cultist Necrolyte
+(@NPC11,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Loot Crazed Diver
+(@NPC12,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Loot Crazed Hunter
+(@NPC13,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Loot Crazed Poacher
+(@NPC14,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Inquisitor Caleras
+(@NPC15,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Karen "I Don't Caribou" the Culler
+(@NPC16,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Minion of Kaw
+(@NPC17,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Varidus the Flenser
+(@NPC18,1,100,1,0,-@BERYLREF,1), -- Beryl ref loot template on Northsea Mercenary
+-- -----------------------------------------------------------------------------------------------
+(@NPC19,1,100,1,0,-@BLOODREF,1), -- Bloodspore ref loot template on Bloodspore Firestarter
+(@NPC20,1,100,1,0,-@BLOODREF,1), -- Bloodspore ref loot template on Den Vermin
+(@NPC21,1,100,1,0,-@BLOODREF,1), -- Bloodspore ref loot template on Bloodspore Harvester
+(@NPC22,1,100,1,0,-@BLOODREF,1), -- Bloodspore ref loot template on Bloodspore Roaster
+(@NPC23,1,100,1,0,-@BLOODREF,1), -- Bloodspore ref loot template on Gammoth Tender
+-- -----------------------------------------------------------------------------------------------
+(@NPC24,1,100,1,0,-@CHIEFREF,1), -- Chieftian ref loot template on Chieftain Burblegobble
+(@NPC25,1,100,1,0,-@CHIEFREF,1), -- Chieftian ref loot template on Gorloc Dredger
+(@NPC26,1,100,1,0,-@CHIEFREF,1), -- Chieftian ref loot template on Chieftain GurgleBoggle
+(@NPC27,1,100,1,0,-@CHIEFREF,1), -- Chieftian ref loot template on Gorloc Mud Splasher
+(@NPC28,1,100,1,0,-@CHIEFREF,1), -- Chieftian ref loot template on Riplash Myrmidon
+-- -----------------------------------------------------------------------------------------------
+(@NPC29,1,100,1,0,-@CULTREF,1), -- Cultist ref loot template on Clandestine Cultist
+(@NPC30,1,100,1,0,-@CULTREF,1), -- Cultist ref loot template on En'kilah Necrolord
+(@NPC31,1,100,1,0,-@CULTREF,1), -- Cultist ref loot template on En'kilah Necromancer
+(@NPC32,1,100,1,0,-@CULTREF,1), -- Cultist ref loot template on Northsea Thug
+-- -----------------------------------------------------------------------------------------------
+(@NPC33,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Kvaldir Mist Lord
+(@NPC34,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Kvaldir Mistweaver
+(@NPC35,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Kvaldir Raider
+(@NPC36,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Heigarr the Horrible
+(@NPC37,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Ragnar Drakkarlund
+(@NPC37,35774,-100,1,0,1,1), -- Trident of Naz'jan on Ragnar Drakkarlund
+(@NPC38,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Skadir Longboatsman
+(@NPC39,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Skadir Mistweaver
+(@NPC40,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Skadir Raider
+(@NPC41,1,100,1,0,-@KVALDIRREF,1), -- Kvaldir ref loot template on Skadir Runecaster
+-- -----------------------------------------------------------------------------------------------
+(@NPC42,1,100,1,0,-@CLAXREF,1), -- Clax ref loot template on Claximus
+(@NPC43,1,100,1,0,-@CLAXREF,1), -- Clax ref loot template on Keymaster Urmgrgl
+(@NPC44,1,100,1,0,-@CLAXREF,1), -- Clax ref loot template on Winterfin Oracle
+(@NPC45,1,100,1,0,-@CLAXREF,1), -- Clax ref loot template on Winterfin Shorestriker
+(@NPC46,1,100,1,0,-@CLAXREF,1), -- Clax ref loot template on Winterfin Warrior
+-- -----------------------------------------------------------------------------------------------
+(@NPC47,1,100,1,0,-@MAGMOTHREF,1), -- Magmoth2 ref loot template on Gammothra the Tormentor
+(@NPC48,1,100,1,0,-@MAGMOTHREF,1), -- Magmoth ref loot template on Magnataur Huntress
+(@NPC49,1,100,1,0,-@MAGMOTHREF,1), -- Magmoth ref loot template on Mate of Magmothregar
+(@NPC50,1,100,1,0,-@MAGMOTHREF,1), -- Magmoth ref loot template on Offspring of Magmothregar
+(@NPC51,1,100,1,0,-@MAGMOTHREF,1), -- Magmoth ref loot template on Plagued Magnataur
+(@NPC52,1,100,1,0,-@MAGMOTHREF,1); -- Magmoth ref loot template on Skadir Mariner
diff --git a/sql/old/3.3.5a/2012_04_19_02_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_19_02_world_creature_loot_template.sql
new file mode 100644
index 00000000000..336cd61c0eb
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_19_02_world_creature_loot_template.sql
@@ -0,0 +1,2 @@
+-- fix DB-error on startup
+DELETE FROM `creature_loot_template` WHERE `entry` IN (34965,34980);
diff --git a/sql/old/3.3.5a/2012_04_19_03_world_instance_ulduar.sql b/sql/old/3.3.5a/2012_04_19_03_world_instance_ulduar.sql
new file mode 100644
index 00000000000..a39ed9c01d5
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_19_03_world_instance_ulduar.sql
@@ -0,0 +1,174 @@
+DELETE FROM `script_texts` WHERE `entry` BETWEEN -1603019 AND -1603000;
+UPDATE `creature_template` SET `ScriptName`='' WHERE `ScriptName` IN ('boss_algalon','mob_collapsing_star');
+
+-- Difficulty linking
+UPDATE `creature_template` SET `difficulty_entry_1`=34296 WHERE `entry`=32953; -- Black Hole
+
+UPDATE `creature_template` SET `minlevel`=80,`maxlevel`=80,`faction_A`=35,`faction_H`=35,`unit_flags`=0x8300,`equipment_id`=2478 WHERE `entry`=34064; -- Brann Bronzebeard
+UPDATE `creature_template` SET `speed_walk`=4,`speed_run`=2.14286,`exp`=2,`minlevel`=83,`maxlevel`=83,`faction_A`=190,`faction_H`=190,`unit_flags`=0x8100,`BaseAttackTime`=1000,`equipment_id`=2479 WHERE `entry` IN (32871,33070); -- Algalon the Observer
+UPDATE `creature_template` SET `faction_A`=190,`faction_H`=190,`exp`=2,`minlevel`=83,`maxlevel`=83,`unit_flags`=0x2000000,`speed_run`=1,`InhabitType`=4 WHERE `entry`=34246; -- Azeroth
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`exp`=2,`minlevel`=74,`maxlevel`=74,`unit_flags`=0x2000000,`flags_extra`=0x80,`InhabitType`=4 WHERE `entry`=33086; -- Algalon Stalker
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`unit_flags`=0x2008000,`speed_run`=1,`equipment_id`=2480,`InhabitType`=4 WHERE `entry` IN (33052,33116); -- Living Constellation
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`speed_run`=1,`RegenHealth`=0 WHERE `entry` IN (32955,34215); -- Collapsing Star
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`exp`=2,`minlevel`=80,`maxlevel`=80,`unit_flags`=0x2000000,`speed_run`=1,`InhabitType`=4 WHERE `entry` IN (32953,34296); -- Black Hole
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`minlevel`=81,`maxlevel`=81,`unit_flags`=0x8000,`speed_walk`=4,`speed_run`=1.42857,`InhabitType`=4 WHERE `entry` IN(33089,34097,34221,34222); -- Dark Matter
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`unit_flags`=0x2000000,`flags_extra`=0x80 WHERE `entry`=34100; -- Algalon Void Zone Visual Stalker
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`unit_flags`=0x2000000,`speed_run`=1,`InhabitType`=4 WHERE `entry`=34099; -- Worm Hole
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`exp`=2,`minlevel`=74,`maxlevel`=74,`unit_flags`=0x2000000,`flags_extra`=0x80,`InhabitType`=4 WHERE `entry`=33104; -- Algalon Stalker Asteroid Target 01
+UPDATE `creature_template` SET `faction_A`=14,`faction_H`=14,`exp`=2,`minlevel`=74,`maxlevel`=74,`unit_flags`=0x2000000,`flags_extra`=0x80,`InhabitType`=4 WHERE `entry`=33105; -- Algalon Stalker Asteroid Target 02
+
+UPDATE `creature_model_info` SET `bounding_radius`=0.93,`combat_reach`=9,`gender`=0 WHERE `modelid`=28641; -- Algalon the Observer
+UPDATE `creature_model_info` SET `bounding_radius`=0.02,`combat_reach`=0.2,`gender`=2 WHERE `modelid`=29133; -- Azeroth
+UPDATE `creature_model_info` SET `bounding_radius`=0.62,`combat_reach`=0,`gender`=2 WHERE `modelid`=28741; -- Living Constellation
+UPDATE `creature_model_info` SET `bounding_radius`=1,`combat_reach`=1,`gender`=2 WHERE `modelid`=28988; -- Collapsing Star
+UPDATE `creature_model_info` SET `bounding_radius`=1,`combat_reach`=1,`gender`=2 WHERE `modelid`=28460; -- Black Hole
+
+UPDATE `gameobject_template` SET `faction`=114,`flags`=32 WHERE `entry`=194910; -- Doodad_UL_SigilDoor_03
+UPDATE `gameobject_template` SET `data0`=579 WHERE `entry`=194628; -- Celestial Planetarium Access
+
+UPDATE `creature_template` SET `ScriptName`='boss_algalon_the_observer' WHERE `entry`=32871; -- Algalon the Observer
+UPDATE `creature_template` SET `ScriptName`='npc_living_constellation' WHERE `entry`=33052; -- Living Constellation
+UPDATE `creature_template` SET `ScriptName`='npc_collapsing_star' WHERE `entry`=32955; -- Collapsing Star
+UPDATE `creature_template` SET `ScriptName`='npc_brann_bronzebeard_algalon' WHERE `entry`=34064; -- Brann Bronzebeard
+UPDATE `gameobject_template` SET `ScriptName`='go_celestial_planetarium_access' WHERE `entry` IN (194628,194752); -- Celestial Planetarium Access
+UPDATE `creature_template` SET `AIName`='NullCreatureAI' WHERE `entry` IN (32953,34099); -- Black Hole
+
+DELETE FROM `creature` WHERE `guid` IN (41781,41783,41790,41811,41812,41814,41819,41820,41821,41822,41823,41875);
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`MovementType`) VALUES
+(41781,33086,603,3,1,1627.400,-339.4133,417.4044,1.378810,7200,0,0), -- Algalon Stalker
+(41783,33086,603,3,1,1622.681,-344.2576,417.3955,1.378810,7200,0,0), -- Algalon Stalker
+(41790,33086,603,3,1,1629.984,-271.4798,417.4045,4.782202,7200,0,0), -- Algalon Stalker
+(41811,33086,603,3,1,1630.005,-345.5189,417.3955,1.378810,7200,0,0), -- Algalon Stalker
+(41812,33089,603,3,16,1622.451,-321.1563,417.6188,4.677482,7200,20,1), -- Dark Matter
+(41814,33089,603,3,16,1649.438,-319.8127,418.3941,1.082104,7200,20,1), -- Dark Matter
+(41819,33089,603,3,16,1615.060,-291.6816,417.7796,3.490659,7200,20,1), -- Dark Matter
+(41820,33089,603,3,16,1647.005,-288.6790,417.3955,3.490659,7200,20,1), -- Dark Matter
+(41821,33089,603,3,16,1622.451,-321.1563,417.6188,4.677482,7200,20,1), -- Dark Matter
+(41822,33089,603,3,16,1649.438,-319.8127,418.3941,1.082104,7200,20,1), -- Dark Matter
+(41823,33089,603,3,16,1615.060,-291.6816,417.7796,3.490659,7200,20,1), -- Dark Matter
+(41875,33089,603,3,16,1647.005,-288.6790,417.3955,3.490659,7200,20,1); -- Dark Matter
+
+SET @OGUID := 252;
+DELETE FROM `gameobject` WHERE `id` IN (194767,194910,194911,194715,194716,194148,194253,194628,194752,194821,194822);
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(@OGUID+00,194767,603,3,17,1632.024,-182.9211,427.6681,0.000000,0,0,8.742278E-08,1, 604800,255,1), -- Doodad_UL_SigilDoor_01
+(@OGUID+04,194911,603,3,17,1632.024,-182.9211,408.4224,3.141593,0,0,8.742278E-08,1, 604800,255,1), -- Doodad_UL_SigilDoor_02
+(@OGUID+10,194910,603,3,17,1632.053,-266.1495,438.5608,0.000000,0,0,8.742278E-08,1, 604800,255,0), -- Doodad_UL_SigilDoor_03
+(@OGUID+12,194715,603,3,17,1632.053,-307.6541,417.3211,0.000000,0,0,8.742278E-08,1, 604800,255,0), -- Doodad_UL_UniverseFloor_01
+(@OGUID+19,194716,603,3,17,1632.251,-307.5483,416.2641,0.000000,0,0,8.742278E-08,1, 604800,255,1), -- Doodad_UL_UniverseFloor_02
+(@OGUID+22,194148,603,3,17,1632.053,-307.6541,417.3211,0.000000,0,0,8.742278E-08,1, 604800,255,1), -- Doodad_UL_UniverseGlobe01
+(@OGUID+24,194253,603,3,17,1631.908,-246.4970,417.3211,0.000000,0,0,8.742278E-08,1, 604800,255,1), -- Doodad_UL_Ulduar_Trapdoor_03
+(@OGUID+29,194628,603,1, 1,1646.182,-174.6881,427.2536,1.553341,0,0,0.000000E-00,1, 604800,255,1), -- Celestial Planetarium Access
+(@OGUID+33,194752,603,2, 1,1646.182,-174.6881,427.2536,1.553341,0,0,0.000000E-00,1, 604800,255,1), -- Celestial Planetarium Access
+(@OGUID+37,194821,603,1, 1,1632.099,-306.5609,417.3210,4.694937,0,0,0.000000E-00,1,-604800,255,1), -- Gift of the Observer (10 man)
+(@OGUID+46,194822,603,2, 1,1632.099,-306.5609,417.3210,4.694937,0,0,0.000000E-00,1,-604800,255,1); -- Gift of the Observer (25 man)
+
+DELETE FROM `creature_equip_template` WHERE `entry` IN (2478,2479,2480);
+INSERT INTO `creature_equip_template` (`entry`,`itemEntry1`,`itemEntry2`,`itemEntry3`) VALUES
+(2478,1903,25972,0),
+(2479,45985,45985,0),
+(2480,44952,0,0);
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (32871,33070,33052,33116,33089,34221,34097,34222,33105);
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`auras`) VALUES
+(32871,0,0x0000000,0x0,NULL), -- Algalon the Observer
+(33070,0,0x0000000,0x0,NULL), -- Algalon the Observer
+(33052,0,0x3000000,0x1,NULL), -- Living Constellation
+(33116,0,0x3000000,0x1,NULL), -- Living Constellation
+(33089,0,0x3000000,0x1,NULL), -- Dark Matter
+(34221,0,0x3000000,0x1,NULL), -- Dark Matter
+(34097,0,0x3000000,0x1,NULL), -- Unleashed Dark Matter
+(34222,0,0x3000000,0x1,NULL), -- Unleashed Dark Matter
+(33105,0,0x3000000,0x1,NULL); -- Algalon Stalker Asteroid Target 02
+
+DELETE FROM `creature_text` WHERE `entry` IN (32871,34064);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`sound`,`emote`,`comment`) VALUES
+(34064,0,0,'We did it, lads! We got here before Algalon''s arrival. Maybe we can rig the systems to interfere with his analysis--',14,15824,0,'Brann Bronzebeard - SAY_BRANN_ALGALON_INTRO_1'),
+(34064,1,0,'I''ll head back to the Archivum and see if I can jam his signal. I might be able to buy us some time while you take care of him.',12,15825,0,'Brann Bronzebeard - SAY_BRANN_ALGALON_INTRO_2'),
+(34064,2,0,'I know just the place. Will you be all right?',14,15823,6,'Brann Bronzebeard - SAY_BRANN_ALGALON_OUTRO'),
+(32871,0,0,'Translocation complete. Commencing planetary analysis of Azeroth.',12,15405,0,'Algalon the Observer - SAY_ALGALON_INTRO_1'),
+(32871,1,0,'Stand back, mortals. I''m not here to fight you.',12,15406,0,'Algalon the Observer - SAY_ALGALON_INTRO_2'),
+(32871,2,0,'It is in the universe''s best interest to re-originate this planet should my analysis find systemic corruption. Do not interfere.',12,15407,0,'Algalon the Observer - SAY_ALGALON_INTRO_3'),
+(32871,3,0,'Your actions are illogical. All possible results for this encounter have been calculated. The Pantheon will receive the Observer''s message regardless of outcome.',14,15386,0,'Algalon the Observer - SAY_ALGALON_START_TIMER'),
+(32871,4,0,'See your world through my eyes: A universe so vast as to be immeasurable - incomprehensible even to your greatest minds.',14,15390,1,'Algalon the Observer - SAY_ALGALON_AGGRO'),
+(32871,5,0,'The stars come to my aid!',14,15392,0,'Algalon the Observer - SAY_ALGALON_COLLAPSING_STAR'),
+(32871,6,0,'%s begins to Summon Collapsing Stars!',41,0,0,'Algalon the Observer - EMOTE_ALGALON_COLLAPSING_STAR'),
+(32871,7,0,'Witness the fury of the cosmos!',14,15396,0,'Algalon the Observer - SAY_ALGALONG_BIG_BANG'),
+(32871,8,0,'%s begins to cast Big Bang!',41,0,0,'Algalon the Observer - EMOTE_ALGALON_BIG_BANG'),
+(32871,9,0,'You are out of time.',14,15394,0,'Algalon the Observer - SAY_ALGALON_ASCEND'),
+(32871,10,0,'%s begins to cast Cosmic Smash!',41,0,0,'Algalon the Observer - EMOTE_ALGALON_COSMIC_SMASH'),
+(32871,11,0,'Behold the tools of creation!',14,15397,0,'Algalon the Observer - SAY_ALGALON_PHASE_TWO'),
+(32871,12,0,'I have seen worlds bathed in the Makers'' flames, their denizens fading without as much as a whimper. Entire planetary systems born and razed in the time that it takes your mortal hearts to beat once. Yet all throughout, my own heart devoid of emotion... of empathy. I. Have. Felt. Nothing. A million-million lives wasted. Had they all held within them your tenacity? Had they all loved life as you do?',14,15393,1,'Algalon the Observer - SAY_ALGALON_OUTRO_1'),
+(32871,13,0,'Perhaps it is your imperfections... that which grants you free will... that allows you to persevere against all cosmically calculated odds. You prevail where the Titan''s own perfect creations have failed.',14,15401,1,'Algalon the Observer - SAY_ALGALON_OUTRO_2'),
+(32871,14,0,'I''ve rearranged the reply code - your planet will be spared. I cannot be certain of my own calculations anymore.',14,15402,1,'Algalon the Observer - SAY_ALGALON_OUTRO_3'),
+(32871,15,0,'I lack the strength to transmit the signal. You must... hurry... find a place of power... close to the skies.',14,15403,1,'Algalon the Observer - SAY_ALGALON_OUTRO_4'),
+(32871,16,0,'Do not worry about my fate, Bronzen. If the signal is not transmitted in time, re-origination will proceed regardless. Save... your world...',14,15404,1,'Algalon the Observer - SAY_ALGALON_OUTRO_5'),
+(32871,17,0,'Analysis complete. There is partial corruption in the planet''s life-support systems as well as complete corruption in most of the planet''s defense mechanisms.',12,15398,0,'Algalon the Observer - SAY_ALGALON_DESPAWN_1'),
+(32871,18,0,'Begin uplink: Reply Code: ''Omega''. Planetary re-origination requested.',12,15399,0,'Algalon the Observer - SAY_ALGALON_DESPAWN_2'),
+(32871,19,0,'Farewell, mortals. Your bravery is admirable, for such flawed creatures.',12,15400,0,'Algalon the Observer - SAY_ALGALON_DESPAWN_3'),
+(32871,20,0,'Loss of life unavoidable.',14,15387,0,'Algalon the Observer - SAY_ALGALON_KILL'),
+(32871,20,1,'I do what I must.',14,15388,0,'Algalon the Observer - SAY_ALGALON_KILL');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (64996,62266,65509,62304,64597);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`Comment`) VALUES
+(13,1,64996,31,3,34246,'Algalon the Observer - Reorigination on Azeroth'),
+(13,1,62266,31,3,33052,'Algalon Stalker - target Living Constellation'),
+(13,1,65509,31,3,33052,'Black Hole - target Living Constellation'),
+(13,1,62304,31,3,33104,'Cosmic Smash - target trigger'),
+(13,1,64597,31,3,33104,'Cosmic Smash - target trigger');
+
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_phase_punch';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_arcane_barrage';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_trigger_3_adds';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_collapse';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_big_bang';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_remove_phase';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_cosmic_smash';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_cosmic_smash_damage';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_algalon_supermassive_fail';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(64412,'spell_algalon_phase_punch'),
+(64599,'spell_algalon_arcane_barrage'),
+(64607,'spell_algalon_arcane_barrage'),
+(62266,'spell_algalon_trigger_3_adds'),
+(62018,'spell_algalon_collapse'),
+(64443,'spell_algalon_big_bang'),
+(64584,'spell_algalon_big_bang'),
+(64445,'spell_algalon_remove_phase'),
+(62295,'spell_algalon_cosmic_smash'),
+(62311,'spell_algalon_cosmic_smash_damage'),
+(64596,'spell_algalon_cosmic_smash_damage'),
+(65311,'spell_algalon_supermassive_fail');
+
+SET @DIFF_ID := 3262;
+DELETE FROM `spelldifficulty_dbc` WHERE `id` BETWEEN @DIFF_ID AND @DIFF_ID+5;
+INSERT INTO `spelldifficulty_dbc` (`id`,`spellid0`,`spellid1`) VALUES
+(@DIFF_ID+0,64395,64592),
+(@DIFF_ID+1,64599,64607),
+(@DIFF_ID+2,64443,64584),
+(@DIFF_ID+3,64122,65108),
+(@DIFF_ID+4,62301,64598),
+(@DIFF_ID+5,62304,64597);
+
+UPDATE `instance_encounters` SET `creditType`=1,`creditEntry`=65184 WHERE `entry` IN (757,771); -- Algalon the Observer
+
+DELETE FROM `disables` WHERE `sourceType`=4 AND `entry` IN (10565,10566,10678,9990,9991,10567,10569,10698,10780,10781,10782,10783,10568,10570);
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10565,10566,10678,9990,9991,10567,10569,10698,10780,10781,10782,10783,10568,10570);
+INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) VALUES
+(10565,12,0,0,''), -- Algalon the Observer kills (Ulduar 10 player)
+(10566,12,1,0,''), -- Algalon the Observer kills (Ulduar 25 player)
+(10678,12,0,0,''), -- Herald of the Titans
+(10678,18,0,0,''), -- Herald of the Titans
+(9990,12,0,0,''), -- Lich King 10-player bosses killed
+(9991,12,1,0,''), -- Lich King 25-player bosses killed
+(10567,12,0,0,''), -- Observed (10 player)
+(10569,12,1,0,''), -- Observed (25 player)
+(10698,12,1,0,''), -- Realm First! Celestial Defender
+(10780,12,0,0,''), -- Supermassive (10 player)
+(10781,12,0,0,''), -- Supermassive (10 player)
+(10782,12,1,0,''), -- Supermassive (25 player)
+(10783,12,1,0,''), -- Supermassive (25 player)
+(10568,11,0,0,'achievement_he_feeds_on_your_tears'), -- He Feeds On Your Tears (10 player)
+(10568,12,0,0,''), -- He Feeds On Your Tears (10 player)
+(10570,11,0,0,'achievement_he_feeds_on_your_tears'), -- He Feeds On Your Tears (25 player)
+(10570,12,1,0,''); -- He Feeds On Your Tears (25 player)
diff --git a/sql/old/3.3.5a/2012_04_20_00_world_gameobject_loot_template.sql b/sql/old/3.3.5a/2012_04_20_00_world_gameobject_loot_template.sql
new file mode 100644
index 00000000000..47a22d519d0
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_20_00_world_gameobject_loot_template.sql
@@ -0,0 +1,15 @@
+SET @Ref := 12002;
+DELETE FROM `reference_loot_template` WHERE `entry`=@Ref;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(@Ref,47242,100,1,0,1,1);
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (195668,195667,195666,195665,195672,195671,195670,195669) AND `item`=47242;
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (195668,195667,195666,195665,195672,195671,195670,195669) AND `mincountOrRef` = -@Ref;
+INSERT INTO gameobject_loot_template (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(195665,5,100,1,0,-@Ref,4), -- 10 man,50 attempts
+(195666,3,100,1,0,-@Ref,4), -- 10 man,45+ attempts
+(195667,3,100,1,0,-@Ref,2), -- 10 man,25+ attempts
+(195668,1,100,1,0,-@Ref,2), -- 10 man,0+ attempts
+(195669,6,100,1,0,-@Ref,4), -- 25 man,50 attempts
+(195670,4,100,1,0,-@Ref,4), -- 25 man,45+ attempts
+(195671,4,100,1,0,-@Ref,2), -- 25 man,25+ attempts
+(195672,2,100,1,0,-@Ref,2); -- 25 man,0+ attempts
diff --git a/sql/old/3.3.5a/2012_04_20_01_world_item_loot_template.sql b/sql/old/3.3.5a/2012_04_20_01_world_item_loot_template.sql
new file mode 100644
index 00000000000..af52ade0b25
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_20_01_world_item_loot_template.sql
@@ -0,0 +1,10 @@
+SET @Bag := 52676;
+DELETE FROM `item_loot_template` WHERE `entry`=@Bag;
+INSERT INTO `item_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(@Bag,36933,0,1,1,1,3),-- Forest Emerald
+(@Bag,36918,0,1,1,1,3),-- Scarlet Ruby
+(@Bag,36921,0,1,1,1,3),-- Autumn's Glow
+(@Bag,36930,0,1,1,1,3),-- Monarch Topaz
+(@Bag,36924,0,1,1,1,3),-- Sky Sapphire
+(@Bag,36927,0,1,1,1,3),-- Twilight Opal
+(@Bag,43953,5,1,0,1,1); -- Reins of the Blue Drake
diff --git a/sql/old/3.3.5a/2012_04_20_02_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_20_02_world_creature_loot_template.sql
new file mode 100644
index 00000000000..09b5beee75c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_20_02_world_creature_loot_template.sql
@@ -0,0 +1,4 @@
+DELETE FROM `creature_loot_template` WHERE `entry` IN (31702,32297) AND `item`=44564;
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(31702,44564,0.5,1,0,1,1), -- Recipe: Mighty Arcane Protection Potion on Frostbrood Spawn
+(32297,44564,0.5,1,0,1,1); -- Recipe: Mighty Arcane Protection Potion on Cult Researcher
diff --git a/sql/old/3.3.5a/2012_04_20_03_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_20_03_world_creature_loot_template.sql
new file mode 100644
index 00000000000..a0b586ee0d9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_20_03_world_creature_loot_template.sql
@@ -0,0 +1,7 @@
+SET @ITEM := 50406; -- Formula: Enchant Gloves - Angler
+UPDATE `creature_template` SET `lootid` = `entry` WHERE `entry` IN(26343,26344,26336);
+DELETE FROM `creature_loot_template` WHERE `item`=@ITEM;
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(26343, @ITEM, 1.1, 1, 0, 1, 1), -- Indu'Le Fisherman
+(26336, @ITEM, 0.9, 1, 0, 1, 1), -- Indu'Le Mystic
+(26344, @ITEM, 1, 1, 0, 1, 1); -- Indu'Le Warrior
diff --git a/sql/old/3.3.5a/2012_04_20_04_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_20_04_world_creature_loot_template.sql
new file mode 100644
index 00000000000..73e01efa23e
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_20_04_world_creature_loot_template.sql
@@ -0,0 +1,3 @@
+-- Make Grimscale Murlocs drop their heads faster...
+UPDATE `creature_loot_template` SET `ChanceOrQuestChance`=-66 WHERE `item`=21757;
+
diff --git a/sql/old/3.3.5a/2012_04_20_05_gameobject_template.sql b/sql/old/3.3.5a/2012_04_20_05_gameobject_template.sql
new file mode 100644
index 00000000000..24400b16a5c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_20_05_gameobject_template.sql
@@ -0,0 +1,8 @@
+-- Restore horrible mistake in UP34 from myself
+UPDATE `gameobject_template` SET `data1`=27512 WHERE `entry`=195669;
+UPDATE `gameobject_template` SET `data1`=27517 WHERE `entry`=195670;
+UPDATE `gameobject_template` SET `data1`=27518 WHERE `entry`=195671;
+-- Fix loottemplates along with it
+UPDATE `gameobject_loot_template` SET `entry`=27512 WHERE `entry`=195669;
+UPDATE `gameobject_loot_template` SET `entry`=27517 WHERE `entry`=195670;
+UPDATE `gameobject_loot_template` SET `entry`=27518 WHERE `entry`=195671;
diff --git a/sql/old/3.3.5a/2012_04_21_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_21_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..e61ef4aec74
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_21_00_world_spell_script_names.sql
@@ -0,0 +1,14 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (20625,29142,35139,42393,49882,55269,56578,38441,66316,67100,67101,67102);
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(20625,'spell_gen_default_count_pct_from_max_hp'), -- Ritual of Doom Sacrifice
+(29142,'spell_gen_default_count_pct_from_max_hp'), -- Eyesore Blaster
+(35139,'spell_gen_default_count_pct_from_max_hp'), -- Throw Boom's Doom
+(42393,'spell_gen_default_count_pct_from_max_hp'), -- Brewfest - Attack Keg
+(49882,'spell_gen_default_count_pct_from_max_hp'), -- Leviroth Self-Impale
+(55269,'spell_gen_default_count_pct_from_max_hp'), -- Deathly Stare
+(56578,'spell_gen_default_count_pct_from_max_hp'), -- Rapid-Fire Harpoon
+(38441,'spell_gen_50pct_count_pct_from_max_hp'), -- Cataclysmic Bolt
+(66316,'spell_gen_50pct_count_pct_from_max_hp'), -- Spinning Pain Spike 10m
+(67100,'spell_gen_50pct_count_pct_from_max_hp'), -- Spinning Pain Spike 25m
+(67101,'spell_gen_50pct_count_pct_from_max_hp'), -- Spinning Pain Spike 10m heroic
+(67102,'spell_gen_50pct_count_pct_from_max_hp'); -- Spinning Pain Spike 25m heroic
diff --git a/sql/old/3.3.5a/2012_04_22_00_world_sai.sql b/sql/old/3.3.5a/2012_04_22_00_world_sai.sql
new file mode 100644
index 00000000000..f223883c8a7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_22_00_world_sai.sql
@@ -0,0 +1,63 @@
+-- SAI for Tabard Vendor Elizabeth Ross
+SET @ROSS := 28776;
+SET @GOSSIP := 9832;
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ROSS;
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=@GOSSIP AND `id`>0 AND `id`<11;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`) VALUES
+(@GOSSIP, 1, 0, 'I''ve lost my Blood Knight Tabard.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 2, 0, 'I''ve lost my Tabard of the Hand.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 3, 0, 'I''ve lost my Tabard of the Protector.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 4, 0, 'I''ve lost my Green Trophy Tabard of the Illidari.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 5, 0, 'I''ve lost my Purple Trophy Tabard of the Illidari.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 6, 0, 'I''ve lost my Tabard of Summer Skies.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 7, 0, 'I''ve lost my Tabard of Summer Flames.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 8, 0, 'I''ve lost my Loremaster''s Colors.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 9, 0, 'I''ve lost my Tabard of the Explorer.', 1, 1, 0, 0, 0, 0, ''),
+(@GOSSIP, 10, 0, 'I''ve lost my Tabard of the Achiever.', 1, 1, 0, 0, 0, 0, '');
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ROSS AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ROSS, 0, 0, 10, 62, 0, 100, 0, @GOSSIP, 1, 0, 0, 11, 54974, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Blood Knight Tabard'),
+(@ROSS, 0, 1, 10, 62, 0, 100, 0, @GOSSIP, 2, 0, 0, 11, 54976, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Tabard of the Hand'),
+(@ROSS, 0, 2, 10, 62, 0, 100, 0, @GOSSIP, 3, 0, 0, 11, 55008, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Tabard of the Protector'),
+(@ROSS, 0, 3, 10, 62, 0, 100, 0, @GOSSIP, 4, 0, 0, 11, 54977, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Green Trophy Tabard of the Illidari'),
+(@ROSS, 0, 4, 10, 62, 0, 100, 0, @GOSSIP, 5, 0, 0, 11, 54982, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Purple Trophy Tabard of the Illidari'),
+(@ROSS, 0, 5, 10, 62, 0, 100, 0, @GOSSIP, 6, 0, 0, 11, 62768, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Tabard of Summer Skies'),
+(@ROSS, 0, 6, 10, 62, 0, 100, 0, @GOSSIP, 7, 0, 0, 11, 62769, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Tabard of Summer Flames'),
+(@ROSS, 0, 7, 10, 62, 0, 100, 0, @GOSSIP, 8, 0, 0, 11, 58194, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Loremaster''s Colors'),
+(@ROSS, 0, 8, 10, 62, 0, 100, 0, @GOSSIP, 9, 0, 0, 11, 58224, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Tabard of the Explorer'),
+(@ROSS, 0, 9, 10, 62, 0, 100, 0, @GOSSIP, 10, 0, 0, 11, 55006, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Cast Spell Create Tabard of the Achiever'),
+(@ROSS, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Elizabeth Ross - On Gossip Select - Close Gossip');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,@GOSSIP,1,0,2,25549,1,1,1,0,'','Only show gossip if player doesn''t have Blood Knight Tabard'),
+(15,@GOSSIP,1,0,8,9737,0,0,0,0,'','Only show gossip if player already finished quest True Masters of Light'),
+(15,@GOSSIP,2,0,2,24344,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of the Hand'),
+(15,@GOSSIP,2,0,8,9762,0,0,0,0,'','Only show gossip if player already finished quest The Unwritten Prophecy'),
+(15,@GOSSIP,3,0,2,28788,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of the protector'),
+(15,@GOSSIP,3,0,8,10259,0,0,0,0,'','Only show gossip if player already finished quest Into the Breach'),
+(15,@GOSSIP,4,0,2,31404,1,1,1,0,'','Only show gossip if player doesn''t have Green Trophy Tabard of Illidari'),
+(15,@GOSSIP,4,0,2,31405,1,1,1,0,'','Only show gossip if player doesn''t have Purple Trophy Tabard of Illidari'),
+(15,@GOSSIP,4,0,2,31408,1,1,1,0,'','Only show gossip if player doesn''t have Offering of the Sha''tar'),
+(15,@GOSSIP,4,0,8,10781,0,0,0,0,'','Only show gossip if player already finished quest Battle of the Crimson Watch'),
+(15,@GOSSIP,5,0,2,31404,1,1,1,0,'','Only show gossip if player doesn''t have Green Trophy Tabard of Illidari'),
+(15,@GOSSIP,5,0,2,31405,1,1,1,0,'','Only show gossip if player doesn''t have Purple Trophy Tabard of Illidari'),
+(15,@GOSSIP,5,0,2,31408,1,1,1,0,'','Only show gossip if player doesn''t have Offering of the Sha''tar'),
+(15,@GOSSIP,5,0,8,10781,0,0,0,0,'','Only show gossip if player already finished quest Battle of the Crimson Watch'),
+(15,@GOSSIP,6,0,2,35279,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of Summer Skies'),
+(15,@GOSSIP,6,0,2,35280,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of Summer Flames'),
+(15,@GOSSIP,6,0,8,11972,0,0,0,0,'','Only show gossip if player already finished quest Shards of Ahune'),
+(15,@GOSSIP,7,0,2,35279,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of Summer Skies'),
+(15,@GOSSIP,7,0,2,35280,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of Summer Flames'),
+(15,@GOSSIP,7,0,8,11972,0,0,0,0,'','Only show gossip if player already finished quest Shards of Ahune'),
+(15,@GOSSIP,8,0,2,43300,1,1,1,0,'','Only show gossip if player doesn''t have Loremaster''s Colors'),
+(15,@GOSSIP,8,0,17,1681,0,0,0,0,'','Only show gossip if player have achievement Loremaster (A)'),
+(15,@GOSSIP,8,1,2,43300,1,1,1,0,'','Only show gossip if player doesn''t have Loremaster''s Colors'),
+(15,@GOSSIP,8,1,17,1682,0,0,0,0,'','Only show gossip if player have achievement Loremaster (H)'),
+(15,@GOSSIP,9,0,2,43348,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of the Explorer'),
+(15,@GOSSIP,9,0,17,45,0,0,0,0,'','Only show gossip if player have achievement Explore Northrend'),
+(15,@GOSSIP,10,0,2,40643,1,1,1,0,'','Only show gossip if player doesn''t have Tabard of the Explorer'),
+(15,@GOSSIP,10,0,17,1021,0,0,0,0,'','Only show gossip if player have achievement Twenty-Five Tabards');
diff --git a/sql/old/3.3.5a/2012_04_23_00_world_creatures.sql b/sql/old/3.3.5a/2012_04_23_00_world_creatures.sql
new file mode 100644
index 00000000000..3730fabf552
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_23_00_world_creatures.sql
@@ -0,0 +1,12 @@
+UPDATE `creature_template` SET `flags_extra`=0x82,`ModelId1`=1126,`ModelId2`=16925 WHERE `entry` IN (38008,38641,38773,38774); -- Blood Orb Controller
+UPDATE `creature_template` SET `flags_extra`=0x80,`ModelId1`=19725,`ModelId2`=31095,`baseattacktime`=2000,`speed_walk`=0.8,`speed_run`=0.28571 WHERE `entry` IN (38454,38775,38776,38777); -- Kinetic Bomb
+UPDATE `creature_template` SET `exp`=2,`baseattacktime`=2000,`ModelId1`=19725,`ModelId2`=21342 WHERE `entry`=38458; -- Kinetic Bomb Target
+UPDATE `creature_template` SET `baseattacktime`=2000,`speed_walk`=4.4,`ModelId1`=19725,`ModelId2`=26767 WHERE `entry` IN (38332,38451); -- Ball of Flame
+UPDATE `creature_template` SET `flags_extra`=0x80 WHERE `entry`=37950; -- Valithria Dreamwalker
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `InhabitType`&4 AND `flags_extra`&0x80; -- make flying triggers fly
+UPDATE `creature_template` SET `InhabitType`=4,`HoverHeight`=12 WHERE `entry`=37126; -- Sister Svalna
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=37950; -- Valithria Dreamwalker
+UPDATE `creature_model_info` SET `bounding_radius`=1,`combat_reach`=0,`gender`=0 WHERE `modelid`=31095; -- Kinetic Bomb
+UPDATE `creature_model_info` SET `bounding_radius`=0.5,`combat_reach`=1,`gender`=0 WHERE `modelid`=21342; -- Kinetic Bomb Target
+UPDATE `creature_model_info` SET `bounding_radius`=0.5,`combat_reach`=1,`gender`=0 WHERE `modelid`=26767; -- Ball of Flame
+UPDATE `creature_template_addon` SET `bytes1`=50331648,`bytes2`=1,`mount`=0,`emote`=0,`auras`=NULL WHERE `entry`=38454; -- Kinetic Bomb
diff --git a/sql/old/3.3.5a/2012_04_23_01_world_conditions.sql b/sql/old/3.3.5a/2012_04_23_01_world_conditions.sql
new file mode 100644
index 00000000000..c731426aa3f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_23_01_world_conditions.sql
@@ -0,0 +1,5 @@
+-- setup alternate conditions for spell 46488
+DELETE FROM `conditions` WHERE `SourceEntry` = 46488 AND `ElseGroup` = 1;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,46488,0,1,31,1,3,26817,0,0,0,'',''),
+(13,1,46488,0,1,36,1,0,0,0,1,0,'','');
diff --git a/sql/old/3.3.5a/2012_04_23_02_world_prospecting_loot_template.sql b/sql/old/3.3.5a/2012_04_23_02_world_prospecting_loot_template.sql
new file mode 100644
index 00000000000..6ea44d92722
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_23_02_world_prospecting_loot_template.sql
@@ -0,0 +1,112 @@
+SET @TinRef := 13000;
+SET @TBC1 := @TinRef+1;
+SET @TBC2 := @TinRef+2;
+SET @WOTLK1 := @TinRef+3;
+SET @WOTLK2 := @TinRef+4;
+SET @WOTLK3 := @TinRef+5;
+
+SET @Copper := 2770;
+SET @Tin := 2771;
+SET @Iron := 2772;
+SET @Mithril := 3858;
+SET @Thorium := 10620;
+SET @FelIron := 23424;
+SET @Adamantite := 23425;
+SET @Cobalt := 36909;
+SET @Saronite := 36912;
+SET @Titanium := 36910;
+
+-- Reference Loot Templates
+DELETE FROM `reference_loot_template` WHERE `entry` BETWEEN @TinRef AND @TinRef+5;
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Stupid Tin
+(@TinRef,1529,0,1,1,1,1), -- Jade
+(@TinRef,3864,0,1,1,1,1), -- Citrine
+(@TinRef,7909,0,1,1,1,1), -- Aquamarine
+-- TBC Greens
+(@TBC1,21929,0,1,1,1,2), -- Flame Spessarite
+(@TBC1,23077,0,1,1,1,2), -- Blood Garnet
+(@TBC1,23079,0,1,1,1,2), -- Deep Peridot
+(@TBC1,23107,0,1,1,1,2), -- Shadow Draenite
+(@TBC1,23112,0,1,1,1,2), -- Golden Draenite
+(@TBC1,23117,0,1,1,1,2), -- Azure Moonstone
+-- TBC Blues
+(@TBC2,23436,0,1,1,1,1), -- Living Ruby
+(@TBC2,23437,0,1,1,1,1), -- Talasite
+(@TBC2,23438,0,1,1,1,1), -- Star of Elune
+(@TBC2,23439,0,1,1,1,1), -- Noble Topaz
+(@TBC2,23440,0,1,1,1,1), -- Dawnstone
+(@TBC2,23441,0,1,1,1,1), -- Nightseye
+-- WOTLK Greens
+(@WOTLK1,36917,0,1,1,1,2), -- Bloodstone
+(@WOTLK1,36920,0,1,1,1,2), -- Sun Crystal
+(@WOTLK1,36923,0,1,1,1,2), -- Chalcedony
+(@WOTLK1,36926,0,1,1,1,2), -- Shadow Crystal
+(@WOTLK1,36929,0,1,1,1,2), -- Huge Citrine
+(@WOTLK1,36932,0,1,1,1,2), -- Dark Jade
+-- WOTLK Blues
+(@WOTLK2,36918,0,1,1,1,2), -- Scarlet Ruby
+(@WOTLK2,36921,0,1,1,1,2), -- Autumn's Glow
+(@WOTLK2,36924,0,1,1,1,2), -- Sky Sapphire
+(@WOTLK2,36927,0,1,1,1,2), -- Twilight Opal
+(@WOTLK2,36930,0,1,1,1,2), -- Monarch Topaz
+(@WOTLK2,36933,0,1,1,1,2), -- Forest Emerald
+-- WOTLK Epics
+(@WOTLK3,36919,0,1,1,1,1), -- Cardinal Ruby
+(@WOTLK3,36922,0,1,1,1,1), -- King's Amber
+(@WOTLK3,36925,0,1,1,1,1), -- Majestic Zircon
+(@WOTLK3,36928,0,1,1,1,1), -- Dreadstone
+(@WOTLK3,36931,0,1,1,1,1), -- Ametrine
+(@WOTLK3,36934,0,1,1,1,1); -- Eye of Zul
+-- --------------------------------------------------------
+-- Prospecting Loot Templates
+DELETE FROM `prospecting_loot_template` WHERE `entry` IN (@Copper,@Tin,@Iron,@Mithril,@Thorium,@FelIron,@Adamantite,@Cobalt,@Saronite,@Titanium);
+INSERT INTO `prospecting_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Copper Ore
+(@Copper,774,0,1,1,1,1), -- Malachite
+(@Copper,818,0,1,1,1,1), -- Tigerseye
+(@Copper,1210,10,1,0,1,1), -- Shadowgem
+-- Tin Ore
+(@Tin,1210,0,1,1,1,2), -- Shadowgem
+(@Tin,1705,0,1,1,1,2), -- Lesser Moonstone
+(@Tin,1206,0,1,1,1,2), -- Moss Agate
+(@Tin,1,10,1,0,-@TinRef,1), -- One Rare gem chance
+-- Iron Ore
+(@Iron,1529,30,1,1,1,2), -- Jade
+(@Iron,1705,30,1,1,1,2), -- Lesser Moonstone
+(@Iron,3864,30,1,1,1,2), -- Citrine
+(@Iron,7909,5,1,1,1,1), -- Aquamarine
+(@Iron,7910,5,1,1,1,1), -- Star Ruby
+-- Mithril Ore
+(@Mithril,3864,30,1,1,1,2), -- Citrine
+(@Mithril,7909,30,1,1,1,2), -- Aquamarine
+(@Mithril,7910,30,1,1,1,2), -- Star Ruby
+(@Mithril,12361,2.5,1,1,1,1), -- Blue Sapphire
+(@Mithril,12364,2.5,1,1,1,1), -- Huge Emerald
+(@Mithril,12799,2.5,1,1,1,1), -- Large Opal
+(@Mithril,12800,2.5,1,1,1,1), -- Azerothian Diamond
+-- Thorium Ore
+(@Thorium,7910,30,1,1,1,2), -- Star Ruby
+(@Thorium,12361,15,1,1,1,2), -- Blue Sapphire
+(@Thorium,12364,15,1,1,1,2), -- Huge Emerald
+(@Thorium,12799,15,1,1,1,2), -- Large Opal
+(@Thorium,12800,15,1,1,1,2), -- Azerothian Diamond
+(@Thorium,1,10,1,1,-@TBC1,1), -- one from TBC Greens
+-- Fel Iron Ore
+(@FelIron,1,95,1,1,-@TBC1,1), -- One from TBC Greens
+(@FelIron,2,05,1,1,-@TBC2,1), -- One from TBC Blues
+-- Adamantite Ore
+(@Adamantite,24243,100,1,0,1,1), -- Adamantite Powder
+(@Adamantite,1,100,1,1,-@TBC1,1), -- One from TBC Greens
+(@Adamantite,2, 10,1,1,-@TBC2,1), -- One from TBC Blues
+-- Cobalt Ore
+(@Cobalt,1,95,1,1,-@WOTLK1,1), -- One from WOTLK Greens
+(@Cobalt,2,05,1,1,-@WOTLK2,1), -- One from WOTLK Blues
+-- Saronite Ore
+(@Saronite,1,85,1,1,-@WOTLK1,2), -- One from WOTLK Greens
+(@Saronite,2,15,1,1,-@WOTLK2,1), -- One from WOTLK Blues
+-- Titanium Ore
+(@Titanium,46849,75,1,0,1,1), -- Titanium Powder
+(@Titanium,1,75,1,1,-@WOTLK1,2), -- Two from WOTLK Greens
+(@Titanium,2,25,1,1,-@WOTLK2,1), -- One from WOTLK Blues
+(@Titanium,3,20,1,0,-@WOTLK3,1); -- One from WOTLK Epics
diff --git a/sql/old/3.3.5a/2012_04_23_03_world_skinning_loot_template.sql b/sql/old/3.3.5a/2012_04_23_03_world_skinning_loot_template.sql
new file mode 100644
index 00000000000..a1aa9e070f2
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_23_03_world_skinning_loot_template.sql
@@ -0,0 +1,44 @@
+UPDATE `creature_template` SET `skinloot`=entry WHERE `entry` IN (30260, 32517, 27641, 28860);
+UPDATE `creature_template` SET `skinloot`=70202 WHERE `entry` IN (25774,29693);
+UPDATE `creature_template` SET `skinloot`=70203 WHERE `entry`=28257;
+UPDATE `creature_template` SET `skinloot`=70207 WHERE `entry`=34137;
+UPDATE `creature_template` SET `skinloot`=70208 WHERE `entry` IN (32572,25448,25716,25713);
+UPDATE `creature_template` SET `skinloot`=70210 WHERE `entry` IN (33528,40419,26723,31134,36891);
+UPDATE `creature_template` SET `skinloot`=70211 WHERE `entry` IN (28847,30206,29875,29931,28203,30432);
+UPDATE `creature_template` SET `skinloot`=70212 WHERE `entry` IN (27645,32377,29838,26628,26622,32490,38453,32485,26633,32400,32361,29768,29735,26641,27644,27642,26735,26730,26722,33776,35189,26716,26672,29664,29774);
+UPDATE `creature_template` SET `skinloot`=70213 WHERE `entry` IN (27483,29312);
+UPDATE `creature_template` SET `skinloot`=70214 WHERE `entry` IN (37217,34564);
+UPDATE `creature_template` SET `skinloot`=27641 WHERE `entry` IN (31385,34269,34270,27641,30905,30353);
+
+DELETE FROM `skinning_loot_template` WHERE entry IN (30260,32517,70212,70213,70214,28860,27641);
+INSERT INTO `skinning_loot_template` (`entry`, `item`, `ChanceOrQuestChance`, `groupid`, `mincountOrRef`, `maxcount`) VALUES
+-- Stoic Mammoth
+(30260,33568,100,0,1,3), -- Borean Leather
+(30260,42542,-50,0,1,1), -- Stoic Mammoth Hide
+-- Loque'nahak
+(32517,33568,0,1,1,3), -- Borean Leather
+(32517,44128,2,1,1,1), -- Arctic Fur
+(32517,44687,100,0,1,1), -- Loque'Nahak's Pelt
+-- skinloot 70212
+(70212,33568,0,1,1,3), -- Borean Leather
+(70212,44128,1,1,1,1), -- Arctic Fur
+-- skinloot 70213
+(70213,33568,0,1,5,12), -- Borean Leather
+(70213,44128,1,1,1,1), -- Arctic Fur
+-- skinloot 70214
+(70214,33568,0,1,12,16), -- Borean Leather
+(70214,44128,25,1,1,1), -- Arctic Fur
+-- Sartharion
+(28860,33568,0,1,8,12), -- Borean Leather
+(28860,38557,0,1,8,12),-- Icy Dragonscale
+(28860,44128,1,1,1,1), -- Arctic Fur
+-- Centrifuge Construct
+(27641,41337,85,0,1,3), -- Whizzed-Out Gizmo
+(27641,41338,80,0,1,3), -- Sprung Whirlygig
+(27641,39690,15,0,1,3), -- Volatile Blasting Trigger
+(27641,39684,8,0,1,1), -- Hair Trigger
+(27641,36813,8,0,1,3), -- Sprung Sprocket
+(27641,39681,8,0,2,4), -- Handful of Cobalt Bolts
+(27641,49050,2,0,1,1), -- Schematic: Jeeves
+(27641,39682,1,0,1,1), -- Overcharged Capacitor
+(27641,39685,1,0,1,1); -- Indestructible Frame
diff --git a/sql/old/3.3.5a/2012_04_23_04_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_23_04_world_creature_loot_template.sql
new file mode 100644
index 00000000000..94d2b092d12
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_23_04_world_creature_loot_template.sql
@@ -0,0 +1,2 @@
+-- Correct dropchance for Mote of Life, wowhead was wrong (as usual)
+UPDATE `creature_loot_template` SET `ChanceOrQuestChance`=18.5307 WHERE `entry`=22307 AND `item`=22575;
diff --git a/sql/old/3.3.5a/2012_04_23_05_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_23_05_world_creature_loot_template.sql
new file mode 100644
index 00000000000..ddf0780d362
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_23_05_world_creature_loot_template.sql
@@ -0,0 +1,3 @@
+-- Update the dropchance to 100% if on quest
+UPDATE `creature_loot_template` SET `ChanceOrQuestChance`=-100 WHERE `entry`=21477 AND `item`=31372; -- Rocknail Flayer Carcass
+UPDATE `creature_loot_template` SET `ChanceOrQuestChance`=-100 WHERE `entry`=21478 AND `item`=31373; -- Rocknail Flayer Giblets
diff --git a/sql/old/3.3.5a/2012_04_24_00_world_command.sql b/sql/old/3.3.5a/2012_04_24_00_world_command.sql
new file mode 100644
index 00000000000..25912392347
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_24_00_world_command.sql
@@ -0,0 +1,10 @@
+DELETE FROM `command` WHERE `name` IN ('modify tp','modify bwalk','modify swim','modify fly','modify arena','modify aspeed','modify morph');
+INSERT INTO `command` (`name`, `security`, `help`) VALUES ('modify speed all', 1, 'Syntax: .modify aspeed #rate\r\n\r\nModify all speeds -run,swim,run back,swim back- of the selected player to "normalbase speed for this move type"*rate. If no player is selected, modify your speed.\r\n\r\n #rate may range from 0.1 to 50.'),
+('modify speed backwalk', 1, 'Syntax: .modify speed backwalk #rate\r\n\r\nModify the speed of the selected player while running backwards to "normal walk back speed"*rate. If no player is selected, modify your speed.\r\n\r\n #rate may range from 0.1 to 50.'),
+('modify speed fly', 1, '.modify speed fly #rate\nModify the flying speed of the selected player to "normal flying speed"*rate. If no player is selected, modify your speed.\n #rate may range from 0.1 to 50.'),
+('modify speed swim', 1, 'Syntax: .modify speed swim #rate\r\n\r\nModify the swim speed of the selected player to "normal swim speed"*rate. If no player is selected, modify your speed.\r\n\r\n #rate may range from 0.1 to 50.'),
+('modify speed walk', 1, 'Syntax: .modify speed bwalk #rate\r\n\r\nModify the speed of the selected player while running to "normal walk speed"*rate. If no player is selected, modify your speed.\r\n\r\n #rate may range from 0.1 to 50.'),
+('modify talentpoints', 1, 'Syntax: .modify talentpoints #amount\r\n\r\nSet free talent points for selected character or character\'s pet. It will be reset to default expected at next levelup/login/quest reward.'),
+('morph', 2, 'Syntax: .morph #displayid\r\n\r\nChange your current model id to #displayid.'),
+('modify arenapoints', 1, 'Syntax: .modify arenapoints #value\r\nAdd $amount arena points to the selected player.');
+UPDATE `command` SET `help`='Syntax: .modify speed $speedtype #rate\r\n\r\nModify the running speed of the selected player to "normal base run speed"= 1. If no player is selected, modify your speed.\r\n\r\n$speedtypes may be fly, all, walk, backwalk, or swim.\r\n\r\n #rate may range from 0.1 to 50.' WHERE `name`='modify speed' LIMIT 1;
diff --git a/sql/old/3.3.5a/2012_04_24_01_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_24_01_world_spell_proc_event.sql
new file mode 100644
index 00000000000..6e997931bb5
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_24_01_world_spell_proc_event.sql
@@ -0,0 +1,4 @@
+-- Honor Among Thieves proc chance
+UPDATE `spell_proc_event` SET `CustomChance`=33 WHERE `entry`=51698; -- Rank 1
+UPDATE `spell_proc_event` SET `CustomChance`=66 WHERE `entry`=51700; -- Rank 2
+UPDATE `spell_proc_event` SET `CustomChance`=100 WHERE `entry`=51701; -- Rank 3
diff --git a/sql/old/3.3.5a/2012_04_24_02_world_warden_checks.sql b/sql/old/3.3.5a/2012_04_24_02_world_warden_checks.sql
new file mode 100644
index 00000000000..74539f99fb3
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_24_02_world_warden_checks.sql
@@ -0,0 +1,8 @@
+UPDATE `warden_checks` SET `comment`='Swimming_FallCalc - movement state' WHERE `id`=15;
+UPDATE `warden_checks` SET `comment`='CreateMovementStatus' WHERE `id`=72;
+UPDATE `warden_checks` SET `comment`='OnStartSwim OnSplineStartSwim - movement state' WHERE `id`=170;
+UPDATE `warden_checks` SET `comment`='DefaultServerLogin - account name' WHERE `id`=198;
+UPDATE `warden_checks` SET `comment`='Login Checksum - authentication process' WHERE `id`=320;
+UPDATE `warden_checks` SET `comment`='CalcFallStartElevation - (some kind of wall climb)' WHERE `id`=329;
+UPDATE `warden_checks` SET `comment`='Code injection at 0x40100A' WHERE `id`=381;
+UPDATE `warden_checks` SET `comment`='Login State - (May be false positive)' WHERE `id`=437;
diff --git a/sql/old/3.3.5a/2012_04_24_03_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_24_03_world_spell_script_names.sql
new file mode 100644
index 00000000000..a53d8bd585c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_24_03_world_spell_script_names.sql
@@ -0,0 +1,4 @@
+-- Earthen Power
+DELETE FROM `spell_script_names` WHERE `spell_id`=59566;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(59566,'spell_sha_earthen_power');
diff --git a/sql/old/3.3.5a/2012_04_24_04_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_04_24_04_world_spell_proc_event.sql
new file mode 100644
index 00000000000..5ba6f24ccf8
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_24_04_world_spell_proc_event.sql
@@ -0,0 +1,4 @@
+ -- Rogue T9 2P - Should proc only from Rupture ticks.
+DELETE FROM `spell_proc_event` WHERE `entry` IN(67209);
+INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `procFlags`) VALUES
+(67209, 0x01, 8, 0x100000, 0x50000);
diff --git a/sql/old/3.3.5a/2012_04_24_05_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_04_24_05_world_creature_loot_template.sql
new file mode 100644
index 00000000000..c524999b492
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_24_05_world_creature_loot_template.sql
@@ -0,0 +1,9 @@
+-- Apply same loot template to below mentioned Bloodsail NPCs as that of Bloodsail Raider 1561
+-- (Mage 1562, Swashbuckler 1563, Warlock 1564, Sea Dog 1565)
+UPDATE `creature_template` SET `lootid`=1561 WHERE `entry` IN (1562,1563,1564,1565);
+-- Remove Loot from `creature_loot_template` for above mentioned NPCs because it contains only 2 items.
+-- Those 2 items, along with complete loot template for these mobs is applied in query above.
+DELETE FROM `creature_loot_template` WHERE `entry` IN (1562,1563,1564,1565);
+-- Remove loot and gold drop from Bloodsail Warlock's Minions
+UPDATE `creature_template` SET `lootid`=0, `mingold`=0 AND `maxgold`=0 WHERE `entry` IN (10928,12922);
+DELETE FROM `creature_loot_template` WHERE `entry` IN (10928,12922);
diff --git a/sql/old/3.3.5a/2012_04_24_06_world_misc.sql b/sql/old/3.3.5a/2012_04_24_06_world_misc.sql
new file mode 100644
index 00000000000..2e095a76cd9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_24_06_world_misc.sql
@@ -0,0 +1,31 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` = 46485;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(46485,'spell_item_greatmothers_soulcatcher');
+
+DELETE FROM `conditions` WHERE `SourceEntry` IN (46485,46488);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,46485,0,1,31,1,3,26817,0,0,0,'',''),
+(13,1,46485,0,1,36,1,0,0,0,1,0,'',''),
+(13,1,46488,0,1,31,1,3,26817,0,0,0,'',''),
+(13,1,46488,0,1,36,1,0,0,0,1,0,'','');
+
+-- Gnome Soul SAI
+SET @ENTRY := 26096;
+SET @SPELL_ARCANE_EXPLOSION := 35426;
+UPDATE creature_template SET AIName="SmartAI" WHERE entry=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,54,0,100,0,0,0,0,0,33,@ENTRY,0,0,0,0,0,7,0,0,0,0,0,0,0,"Gnome Soul - On Just Summoned - Quest Credit"),
+(@ENTRY,0,1,2,61,0,100,0,0,0,0,0,45,1,1,0,0,0,0,19,25814,10,1,0,0,0,0,"Gnome Soul - On Just Summoned - Set Data Fizzcrank Mechagnome"),
+(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,69,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"Gnome Soul - On Just Summoned - Move to Summoner"),
+
+(@ENTRY,0,3,4,34,0,100,0,1,0,0,0,11,@SPELL_ARCANE_EXPLOSION,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gnome Soul - Reached Summoner - Cast Arcane Explosion Visual"),
+(@ENTRY,0,4,0,61,0,100,0,0,0,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gnome Soul - Reached Summoner - Forced Despawn");
+
+-- Fizzcrank Mechagnome SAI
+SET @ENTRY := 25814;
+UPDATE creature_template SET AIName="SmartAI" WHERE entry=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,1,10000,0,0,0,0,0,0,0,0,0,0,0,0,"Fizzcrank Mechagnome - Chance Say on Aggro"),
+(@ENTRY,1,0,0,38,0,100,0,1,1,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fizzcrank Mechagnome - On Data Set - Forced Despawn");
diff --git a/sql/old/3.3.5a/2012_04_25_00_world_misc.sql b/sql/old/3.3.5a/2012_04_25_00_world_misc.sql
new file mode 100644
index 00000000000..3d2f20fdc8c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_25_00_world_misc.sql
@@ -0,0 +1,3 @@
+UPDATE `smart_scripts` SET `source_type`=0,`id`=1 WHERE `entryorguid`=24814 AND `source_type`=1 AND `event_type`=38;
+UPDATE `conditions` SET `SourceTypeOrReferenceId`=17 WHERE `SourceEntry` IN (46485,46488);
+UPDATE `conditions` SET `ElseGroup`=0 WHERE `SourceEntry` IN (46485,46488) AND `ConditionValue1`=26817;
diff --git a/sql/old/3.3.5a/2012_04_25_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_25_01_world_spell_script_names.sql
new file mode 100644
index 00000000000..7b7135860ab
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_25_01_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` = 33110;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(33110,'spell_pri_prayer_of_mending_heal');
diff --git a/sql/old/3.3.5a/2012_04_25_02_world_spell_script_names.sql b/sql/old/3.3.5a/2012_04_25_02_world_spell_script_names.sql
new file mode 100644
index 00000000000..ad63bc87837
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_25_02_world_spell_script_names.sql
@@ -0,0 +1,11 @@
+DELETE FROM `spell_scripts` WHERE `id` IN (15998,25952,29435,45980,51592,51910,52267,54420);
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (15998,25952,29435,45980,51592,51910,52267,54420);
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(15998, 'spell_gen_despawn_self'),
+(25952, 'spell_gen_despawn_self'),
+(29435, 'spell_gen_despawn_self'),
+(45980, 'spell_gen_despawn_self'),
+(51592, 'spell_gen_despawn_self'),
+(51910, 'spell_gen_despawn_self'),
+(52267, 'spell_gen_despawn_self'),
+(54420, 'spell_gen_despawn_self');
diff --git a/sql/old/3.3.5a/2012_04_25_03_world_spell_group.sql b/sql/old/3.3.5a/2012_04_25_03_world_spell_group.sql
new file mode 100644
index 00000000000..a6fa90ad41d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_25_03_world_spell_group.sql
@@ -0,0 +1,11 @@
+DELETE FROM `spell_group` WHERE `id` IN (1117,1118);
+INSERT INTO `spell_group` (`id`,`spell_id`) VALUES
+(1117,25898),
+(1117,25899),
+(1118,20911),
+(1118,20217);
+
+DELETE FROM `spell_group_stack_rules` WHERE `group_id` in (1117,1118);
+INSERT INTO `spell_group_stack_rules` (`group_id`,`stack_rule`) VALUES
+(1117,3),
+(1118,3);
diff --git a/sql/old/3.3.5a/2012_04_26_00_world_conditions.sql b/sql/old/3.3.5a/2012_04_26_00_world_conditions.sql
new file mode 100644
index 00000000000..8d525cad057
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_26_00_world_conditions.sql
@@ -0,0 +1 @@
+UPDATE `conditions` SET `ElseGroup` = 0, `SourceGroup` = 0 WHERE `SourceEntry` IN (46485,46488);
diff --git a/sql/old/3.3.5a/2012_04_26_01_world_smart_scripts.sql b/sql/old/3.3.5a/2012_04_26_01_world_smart_scripts.sql
new file mode 100644
index 00000000000..e90e7b58433
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_26_01_world_smart_scripts.sql
@@ -0,0 +1 @@
+UPDATE `smart_scripts` SET `source_type` = 0, `id` = 1 WHERE `entryorguid` = 25814 AND `source_type` = 1 AND `id` = 0;
diff --git a/sql/old/3.3.5a/2012_04_27_00_world_instance_icc.sql b/sql/old/3.3.5a/2012_04_27_00_world_instance_icc.sql
new file mode 100644
index 00000000000..6738e4904ab
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_27_00_world_instance_icc.sql
@@ -0,0 +1,5 @@
+DELETE FROM `creature_text` WHERE `entry`=37813 AND `groupid`=14;
+INSERT INTO `creature_text` (`entry`,`groupid`,`text`,`type`,`comment`) VALUES (37813,14,'%s''s Blood Beasts gain the scent of blood!',41,'Deathbringer Saurfang - EMOTE_SCENT_OF_BLOOD');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=72771;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`Comment`) VALUES
+(13,3,72771,31,3,38508,'Deathbringer Saurfang - Scent of Blood on Blood Beast');
diff --git a/sql/old/3.3.5a/2012_04_28_00_world_reference_loot_template.sql b/sql/old/3.3.5a/2012_04_28_00_world_reference_loot_template.sql
new file mode 100644
index 00000000000..07c53a8f7c9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_28_00_world_reference_loot_template.sql
@@ -0,0 +1,158 @@
+-- The Descent into Madness
+-- References
+-- -------------------------------
+-- -- Variables and definitions --
+-- -------------------------------
+-- Set References
+SET @Vezax10Ref := 34373;
+SET @Vezax25Ref := @Vezax10Ref+1;
+SET @Yogg10Ref := @Vezax10Ref+2;
+SET @Yogg25Ref := @Vezax10Ref+3;
+SET @Chest := 12034;
+SET @Shoulder := 12035;
+SET @EmblemRef := 34349;
+SET @Recipe := 34154;
+SET @Vezax10 := 33271;
+SET @Vezax25 := 33449;
+SET @Yogg10 := 33288;
+SET @Yogg25 := 33955;
+
+-- -------------------------
+-- -- Reference Templates --
+-- -------------------------
+-- Delete previous templates if existing
+DELETE FROM `reference_loot_template` WHERE `entry` IN (34131,34132,34133,34164,34165);
+DELETE FROM `reference_loot_template` WHERE `entry` IN (@Vezax10Ref,@Vezax25Ref,@Yogg10Ref,@Yogg25Ref,@Chest,@Shoulder);
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Vezax 10 man
+(@Vezax10Ref,46014,0,1,1,1,1), -- Saronite Animus Cloak
+(@Vezax10Ref,46008,0,1,1,1,1), -- Choker of the Abyss
+(@Vezax10Ref,46010,0,1,1,1,1), -- Darkstone Ring
+(@Vezax10Ref,45996,0,1,1,1,1), -- Hoperender
+(@Vezax10Ref,46015,0,1,1,1,1), -- Pendant of Endless Despair
+(@Vezax10Ref,46013,0,1,1,1,1), -- Underworld Mantle
+(@Vezax10Ref,46012,0,1,1,1,1), -- Vestments of the Piercing Light
+(@Vezax10Ref,46009,0,1,1,1,1), -- Bindings of the Depths
+(@Vezax10Ref,45997,0,1,1,1,1), -- Gauntlets of the Wretched
+(@Vezax10Ref,46011,0,1,1,1,1), -- Shadowbite
+-- Vezax 25 man
+(@Vezax25Ref,45513,0,1,1,1,1), -- Boots of the Forgotten Dephts
+(@Vezax25Ref,45509,0,1,1,1,1), -- Idol of the Corruptor
+(@Vezax25Ref,45501,0,1,1,1,1), -- Boots of the Underdweller
+(@Vezax25Ref,45512,0,1,1,1,1), -- Grips of the Unbroken
+(@Vezax25Ref,45503,0,1,1,1,1), -- Metallic Loop of the Sufferer
+(@Vezax25Ref,45505,0,1,1,1,1), -- Belt of Clinging Hope
+(@Vezax25Ref,45502,0,1,1,1,1), -- Helm of the Faceless
+(@Vezax25Ref,45145,0,1,1,1,1), -- Libram of the Sacred Shield
+(@Vezax25Ref,45508,0,1,1,1,1), -- Belt of the Darkspeaker
+(@Vezax25Ref,45504,0,1,1,1,1), -- Darkcore Leggings
+(@Vezax25Ref,45514,0,1,1,1,1), -- Mantle of the Unknowing
+(@Vezax25Ref,45515,0,1,1,1,1), -- Ring of the Vacant Eye
+(@Vezax25Ref,45507,0,1,1,1,1), -- The General's Heart
+-- Yogg 10 man
+(@Yogg10Ref,46016,0,1,1,1,1), -- Abaddon
+(@Yogg10Ref,46018,0,1,1,1,1), -- Deliverance
+(@Yogg10Ref,46019,0,1,1,1,1), -- Leggings of the Insatiable
+(@Yogg10Ref,46021,0,1,1,1,1), -- Royal Seal of King Llane
+(@Yogg10Ref,46022,0,1,1,1,1), -- Pendant of a Thousand Maws
+(@Yogg10Ref,46024,0,1,1,1,1), -- Kingsbane
+(@Yogg10Ref,46025,0,1,1,1,1), -- Devotion
+(@Yogg10Ref,46028,0,1,1,1,1), -- Faceguard of the Eyeless Horror
+(@Yogg10Ref,46030,0,1,1,1,1), -- Threads of the Dragon Council
+(@Yogg10Ref,46031,0,1,1,1,1), -- Touch of Madness
+-- Yogg 25 man
+(@Yogg25Ref,45521,0,1,1,1,1), -- Earthshaper
+(@Yogg25Ref,45522,0,1,1,1,1), -- Blood of the Old God
+(@Yogg25Ref,45523,0,1,1,1,1), -- Garona's Guise
+(@Yogg25Ref,45524,0,1,1,1,1), -- Chestguard of Insidious Intent
+(@Yogg25Ref,45525,0,1,1,1,1), -- Godbane Signet
+(@Yogg25Ref,45527,0,1,1,1,1), -- Soulscribe
+(@Yogg25Ref,45529,0,1,1,1,1), -- Shawl of Haunted Memories
+(@Yogg25Ref,45530,0,1,1,1,1), -- Sanity's Bond
+(@Yogg25Ref,45531,0,1,1,1,1), -- Chestguard of the Fallen God
+(@Yogg25Ref,45532,0,1,1,1,1), -- Cowl of Dark Whispers
+-- Chest for Yogg
+(@Chest,45635,0,1,1,1,1), -- Chestguard of the Wayward Conqueror
+(@Chest,45636,0,1,1,1,1), -- Chestguard of the Wayward Protector
+(@Chest,45637,0,1,1,1,1), -- Chestguard of the Wayward Vanquisher
+(@Shoulder,45656,0,1,1,1,1), -- Mantle of the Wayward Conqueror
+(@Shoulder,45657,0,1,1,1,1), -- Mantle of the Wayward Protector
+(@Shoulder,45658,0,1,1,1,1); -- Mantle of the Wayward Vanquisher
+
+DELETE FROM `creature_loot_template` WHERE `entry` IN(@Vezax10,@Vezax25,@Yogg10,@Yogg25);
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- ----------------------------------------------------------
+-- General Vezax
+-- ----------------------------------------------------------
+-- 10 man mode
+(@Vezax10,1,100,3,0,-@Vezax10Ref,2), -- 2x Normal Loot Item
+(@Vezax10,47241,100,3,0,1,1), -- 1x Emblem of Triumph
+-- hardmode loot 10
+(@Vezax10,46032,0,2,1,1,1), -- Drape of the Faceless General
+(@Vezax10,46034,0,2,1,1,1), -- Leggings of Profound Darkness
+(@Vezax10,46033,0,2,1,1,1), -- Tortured Earth
+(@Vezax10,46035,0,2,1,1,1), -- Aesuga, Hand of the Ardent Champion
+(@Vezax10,46036,0,2,1,1,1), -- Void Sabre
+-- 25 man mode
+(@Vezax25,1,100,3,0,-@Vezax25Ref,3), -- 3x Normal Loot Item
+(@Vezax25,47241,100,3,0,1,1), -- 1x Emblem of Triumph
+(@Vezax25,2,10,1,0,-@Recipe,1), -- Chance on Recipe
+(@Vezax25,3,10,1,0,-34350,1), -- Chance on Runed Orb
+-- hardmode loot 25
+(@Vezax25,45498,0,2,1,1,1), -- Lotrafen, Spear of the Damned
+(@Vezax25,45511,0,2,1,1,1), -- Scepter of Lost Souls
+(@Vezax25,45516,0,2,1,1,1), -- Voldrethar, Dark Blade of Oblivion
+(@Vezax25,45517,0,2,1,1,1), -- Pendulum of Infinity
+(@Vezax25,45519,0,2,1,1,1), -- Vestments of the Blind Denizen
+(@Vezax25,45518,0,2,1,1,1), -- Flare of the Heavens
+(@Vezax25,45520,0,2,1,1,1), -- Handwraps of the Vigilant
+-- ----------------------------------------------------------
+-- Yogg Saron
+-- ----------------------------------------------------------
+-- 10 man
+-- All modes
+(@Yogg10,1,100,31,0,-@Yogg10Ref,1), -- 1x Normal Loot item for modes 0&1&2&3&4
+(@Yogg10,2,100,31,0,-@Chest,1), -- 1x Tier token for modes 0&1&2&3&4
+(@Yogg10,47241,100,31,0,1,1), -- 1x Emblem of Triumph for modes 0&1&2&3&4
+-- Extra for <3 watchers
+(@Yogg10,3,100,30,0,-@EmblemRef,1), -- additional Emblem for modes2&3
+-- Extra for <2 watchers
+(@Yogg10,4,100,28,0,-34350,1), -- Runed Orb for 0&1&2
+(@Yogg10,5,10,28,0,-@Recipe,1), -- Chance on Recipe for 0&1&2
+-- Extra for <1 watchers
+(@Yogg10,6,100,24,0,-@EmblemRef,1), -- additional Emblem for 0&1
+(@Yogg10,7,100,24,0,-@Recipe,1), -- Garanteed Recipe for 0&1
+-- Hardmode 10 loot
+(@Yogg10,46067,0,24,1,1,1), -- Hammer of Crushing Whispers
+(@Yogg10,46068,0,24,1,1,1), -- Amice of Inconceivable Horror
+(@Yogg10,46095,0,24,1,1,1), -- Soul-Devouring Cinch
+(@Yogg10,46096,0,24,1,1,1), -- Signet of Soft Lament
+(@Yogg10,46097,0,24,1,1,1), -- Caress of Insanity
+-- Extra for 0 watchers
+(@Yogg10,46312,100,16,0,1,1), -- Vanquished Clutches of Yogg-Saron
+-- 25 man mode
+-- All modes
+(@Yogg25,1,100,31,0,-@Yogg25Ref,2), -- 2x Normal Loot item for modes 0&1&2&3&4
+(@Yogg25,2,100,31,0,-@Shoulder,2), -- 2x Tier token for modes 0&1&2&3&4
+(@Yogg25,47241,100,31,0,1,1), -- 1x Emblem of Triumph for modes 0&1&2&3&4
+(@Yogg25,3,10,31,0,-34350,1), -- Chance on Runed Orb for modes 0&1&2&3&4
+(@Yogg25,4,10,31,0,-@Recipe,1), -- Chance on Recipe for 0&1&2&3&4
+(@Yogg25,45897,100,31,0,1,1), -- Fragment of Val'anyr
+-- Extra for <3 watchers
+(@Yogg25,5,100,30,0,-@EmblemRef,1), -- additional Emblem for modes2&3
+-- Extra for <2 watchers
+(@Yogg25,6,100,28,0,-34350,1), -- Runed Orb for 0&1&2
+-- Extra for <1 watchers
+(@Yogg25,7,100,24,0,-@EmblemRef,1), -- additional Emblem for 0&1
+(@Yogg25,8,100,24,0,-@Recipe,1), -- Garanteed Recipe for 0&1
+-- Hardmode 25 loot
+(@Yogg25,45533,0,24,1,1,1), -- Dark Edge of Depravity
+(@Yogg25,45534,0,24,1,1,1), -- Seal of the Betrayed King
+(@Yogg25,45535,0,24,1,1,1), -- Show of Faith
+(@Yogg25,45536,0,24,1,1,1), -- Legguards of Cunning Deception
+(@Yogg25,45537,0,24,1,1,1), -- Threads of the False Oracle
+-- Extra for 0 watchers
+(@Yogg25,45693,100,16,0,1,1); -- Mimiron's Head
+
+-- Cleanups
+DELETE FROM `conditions` WHERE `SourceEntry`=45897 AND `SourceGroup`=33955;
diff --git a/sql/old/3.3.5a/2012_04_28_01_world_reference_loot_template.sql b/sql/old/3.3.5a/2012_04_28_01_world_reference_loot_template.sql
new file mode 100644
index 00000000000..e46c45e497a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_04_28_01_world_reference_loot_template.sql
@@ -0,0 +1,22 @@
+SET @Triumph :=47241;
+-- Cleanup some unneeded references
+DELETE FROM `reference_loot_template` WHERE `entry` IN (34167,34168,34169);
+UPDATE `creature_loot_template` SET `mincountOrRef`=-34349 WHERE `mincountOrRef` IN (-34167,-34168,-34169);
+-- Fix this weird defined reference for ulduar
+UPDATE `reference_loot_template` SET `ChanceOrQuestChance`=100,`groupid`=0 WHERE `entry`=34349;
+-- Remove Emblem of Triumph from reference_loot
+DELETE FROM `reference_loot_template` WHERE `item`=@Triumph AND `entry`IN (12025,35034,35040,35049);
+-- Actual Emblem on creature as it should be
+DELETE FROM `creature_loot_template` WHERE `entry` IN (30397,30398,31365,31367,31656,31679) AND `item`=@Triumph;
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(30397,@Triumph,100,1,0,1,1), -- Commander Kolurg (1)
+(30398,@Triumph,100,1,0,1,1), -- Commander Stoutbeard (1)
+(31365,@Triumph,100,1,0,1,1), -- Drakkari Colossus (1)
+(31367,@Triumph,100,1,0,1,1), -- Drakkari Elemental (1)
+(31656,@Triumph,100,1,0,1,1), -- Dalronn the Controller (1)
+(31679,@Triumph,100,1,0,1,1); -- Skarvald the Constructor (1)
+-- Similar action for gameobjects
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (27416,27417) AND `item`=@Triumph;
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(27417,@Triumph,100,1,0,1,1), -- Confessor's Cache
+(27416,@Triumph,100,1,0,1,1); -- Eadric's Cache
diff --git a/sql/old/3.3.5a/2012_05_01_00_world_creature.sql b/sql/old/3.3.5a/2012_05_01_00_world_creature.sql
new file mode 100644
index 00000000000..c0509d0d132
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_01_00_world_creature.sql
@@ -0,0 +1,9 @@
+-- Add missing Challe & Orphan Matron Aria Spawns
+SET @GUID := 41876;
+DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+1;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES
+(@GUID,23101,530,1,1,0,0,-480.4989,7499.029,181.2889,3.560472,120,0,0,1,0,0),
+(@GUID+1,34365,571,1,1,0,0,5716.604,642.8611,646.2927,5.88176,120,0,0,1,0,0);
+-- Add to game event creature
+DELETE FROM `game_event_creature` WHERE `guid`=@GUID+1;
+INSERT INTO `game_event_creature` (`eventEntry`,`guid`) VALUES (10,@GUID+1);
diff --git a/sql/old/3.3.5a/2012_05_02_00_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_05_02_00_world_creature_loot_template.sql
new file mode 100644
index 00000000000..f0721e63635
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_02_00_world_creature_loot_template.sql
@@ -0,0 +1,8 @@
+DELETE FROM `creature_loot_template` WHERE `entry` IN(38064,38103);
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Precious 25 man
+(38103,1,100,1,0,-35069,2), -- Two From ICC Trashgenerated on Precious
+(38103,52019,30,1,0,1,1), -- Precious Ribbon on Precious
+(38064,1,100,1,0,-35069,2); -- Two From ICC Trashgenerated on Stinky
+-- add skinning loot for Stinky & Precious
+UPDATE `creature_template` SET `skinloot`=70214 WHERE `entry` IN (37025,38064,37217,38103);
diff --git a/sql/old/3.3.5a/2012_05_03_00_world_creature.sql b/sql/old/3.3.5a/2012_05_03_00_world_creature.sql
new file mode 100644
index 00000000000..d906dba78bc
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_03_00_world_creature.sql
@@ -0,0 +1,29 @@
+SET @GUID1 := 42158;
+SET @GUID2 := 42159;
+-- add creature
+DELETE FROM creature WHERE guid IN (@GUID1,@GUID2);
+INSERT INTO `creature`
+(`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`)
+VALUES
+(@GUID1 ,38453,571,1,1,3561.821,-2736.367,136.0317,0), -- Arcturis in Grizzly Hills
+(@GUID2,35189,571,1,1,7101.845,-1443.734,924.2609,0.178631); -- Skoll in The Storm Peaks
+-- Update template
+UPDATE `creature_template` SET `faction_A` = 190, `faction_H`=190 WHERE `entry` IN (38453,35189);
+SET @NPC= @GUID1*10;
+-- Add pathing for Arcturis
+DELETE FROM `creature_addon` WHERE `guid` = @GUID1;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(@GUID1,@NPC,0,0,0,0,''); -- Add path for Acturis
+-- Add waypoint data for the path:
+DELETE FROM `waypoint_data` WHERE `id`=@NPC;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`) VALUES
+(@NPC,1,3563.499,-2737.698,137.1898),
+(@NPC,2,3565.249,-2738.698,138.4398),
+(@NPC,3,3566.749,-2739.948,139.9398),
+(@NPC,4,3568.249,-2740.698,140.6898),
+(@NPC,5,3567.839,-2741.380,141.9256),
+(@NPC,6,3569.999,-2741.948,142.1898),
+(@NPC,7,3570.749,-2742.448,143.1898),
+(@NPC,8,3572.676,-2743.528,144.8479);
+-- Spawntimefix
+UPDATE `creature` SET `spawntimesecs`=39600 WHERE `guid` IN (@GUID1,@GUID2); -- Set the spawntime to 11 hours for Arcturis & Skoll
diff --git a/sql/old/3.3.5a/2012_05_03_01_world_cos_misc.sql b/sql/old/3.3.5a/2012_05_03_01_world_cos_misc.sql
new file mode 100644
index 00000000000..6c2ea6d3a95
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_03_01_world_cos_misc.sql
@@ -0,0 +1,153 @@
+UPDATE `script_texts` SET `emote` = 432 WHERE `entry` IN (-1595111);
+UPDATE `script_texts` SET `emote` = 396 WHERE `entry` IN (-1595070,-1595075,-1595078,-1595079,-1595088,-1595103,-1595106,-1595107,-1595108,-1595109,-1595113,-1595114,-1595115,-1595116);
+UPDATE `script_texts` SET `emote` = 397 WHERE `entry` IN (-1595071,-1595084,-1595093);
+UPDATE `script_texts` SET `emote` = 274 WHERE `entry` IN (-1595091);
+UPDATE `script_texts` SET `emote` = 5 WHERE `entry` IN (-1595073,-1595118);
+UPDATE `script_texts` SET `emote` = 6 WHERE `entry` IN (-1595076);
+UPDATE `script_texts` SET `emote` = 1 WHERE `entry` IN (-1595083,-1595100,-1595104,-1595120);
+UPDATE `script_texts` SET `emote` = 0 WHERE `entry` IN (-1595009,-1595010,-1595081,-1595082,-1595085,-1595119);
+
+UPDATE `script_texts` SET `type` = 1 WHERE `entry` IN (-1595009,-1595010,-1595087,-1595094,-1595095,-1595093);
+UPDATE `script_texts` SET `type` = 0 WHERE `entry` IN (-1595077,-1595078,-1595119);
+
+UPDATE `script_texts` SET `content_default` = "Champions, meet me at the Town Hall at once. We must take the fight to Mal'Ganis." WHERE `entry` = -1595095;
+UPDATE `script_texts` SET `content_default` = "Follow me, I know the way through." WHERE `entry` = -1595096;
+UPDATE `script_texts` SET `content_default` = "Take position here, and I will lead a small force inside Stratholme to begin the culling. We must contain and purge the infected for the sake of all of Lordaeron!" WHERE entry = -1595087;
+UPDATE `script_texts` SET `content_default` = "Ah, you've finally arrived Prince Arthas. You're here just in the nick of time." WHERE `entry` = -1595097;
+UPDATE `script_texts` SET `content_default` = "Yes, I'm glad I could get to you before the plague." WHERE `entry` = -1595098;
+UPDATE `script_texts` SET `content_default` = "As if I could forget. Listen, Uther, there's something about the plague you should know..." WHERE `entry` = -1595072;
+UPDATE `script_texts` SET `content_default` = "There's no need for you to understand, Arthas. All you need to do is die." WHERE `entry` = -1595100;
+UPDATE `script_texts` SET `content_default` = "More vile sorcery! Be ready for anything!" WHERE `entry` = -1595102;
+UPDATE `script_texts` SET `content_default` = "Watch your backs: they have us surrounded in this hall." WHERE `entry` = -1595104;
+UPDATE `script_texts` SET `content_default` = "Mal'Ganis is not making this easy." WHERE `entry` = -1595106;
+UPDATE `script_texts` SET `content_default` = "What else can he put in my way?" WHERE `entry` = -1595108;
+UPDATE `script_texts` SET `content_default` = "I do what I must for Lordaeron, and neither your words nor your actions will stop me." WHERE `entry` = -1595109;
+UPDATE `script_texts` SET `content_default` = "The quickest path to Mal'Ganis lies behind that bookshelf ahead." WHERE `entry` = -1595110;
+UPDATE `script_texts` SET `content_default` = "I'm relieved this secret passage still works." WHERE `entry` = -1595112;
+UPDATE `script_texts` SET `content_default` = "Let's move through here as quickly as possible. If the undead don't kill us, the fires might." WHERE `entry` = -1595113;
+UPDATE `script_texts` SET `content_default` = "Rest a moment and clear your lungs, but we must move again soon." WHERE `entry` = -1595114;
+UPDATE `script_texts` SET `content_default` = "That's enough; we must move again. Mal'Ganis awaits." WHERE `entry` = -1595115;
+UPDATE `script_texts` SET `content_default` = "At last some good luck. Market Row has not caught fire yet. Mal'Ganis is supposed to be in Crusaders' Square, which is just ahead. Tell me when you're ready to move forward." WHERE `entry` = -1595116;
+UPDATE `script_texts` SET `content_default` = "Justice will be done." WHERE `entry` = -1595117;
+UPDATE `script_texts` SET `content_default` = "We're going to finish this right now, Mal'Ganis. Just you... and me." WHERE `entry` = -1595118;
+
+UPDATE `script_texts` SET `comment` = concat(`comment`,". NEEDS VERIFICATION") WHERE `entry` IN (-1595101,-1595105);
+
+SET @GUID := 88474;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`,
+`MovementType`, `npcflag`, `unit_flags`, `dynamicflags`)
+VALUES
+(@GUID+00,27737,595,3,1,25543,0,2319.89,1285.78,131.407,1.72169,60,10,0,630,0,1,0,0,0),
+(@GUID+01,27737,595,3,1,10979,0,2308.12,1304.21,127.601,4.39662,60,10,0,630,0,1,0,0,0),
+(@GUID+02,27737,595,3,1,25542,0,2335.47,1262.04,132.921,1.42079,60,10,0,630,0,1,0,0,0),
+(@GUID+03,27737,595,3,1,25543,0,2297.73,1338.75,124.622,2.5574,60,10,0,630,0,1,0,0,0),
+(@GUID+04,27737,595,3,1,10979,0,2322.65,1265.39,133.033,5.6524,60,10,0,630,0,1,0,0,0),
+(@GUID+05,27737,595,3,1,10973,0,2277.83,1331.92,124.19,3.48045,60,10,0,630,0,1,0,0,0),
+(@GUID+06,27737,595,3,1,25543,0,2294.18,1316.93,125.672,6.05649,60,10,0,630,0,1,0,0,0),
+(@GUID+07,27737,595,3,1,10973,0,2310.56,1369,128.372,5.03364,60,10,0,630,0,1,0,0,0),
+(@GUID+08,27737,595,3,1,10979,0,2306.15,1322.85,125.708,4.99133,60,10,0,630,0,1,0,0,0),
+(@GUID+09,27737,595,3,1,10973,0,2320.14,1297.48,129.694,1.35248,60,10,0,630,0,1,0,0,0),
+(@GUID+10,27737,595,3,1,25542,0,2291.57,1327.27,124.545,5.32358,60,10,0,630,0,1,0,0,0),
+(@GUID+11,27737,595,3,1,25542,0,2308.04,1352.65,126.907,5.83741,60,10,0,630,0,1,0,0,0),
+(@GUID+12,27737,595,3,1,10979,0,2329.44,1281.11,132.636,2.25207,60,10,0,630,0,1,0,0,0),
+(@GUID+13,27737,595,3,1,0,0,2407.32,1423.8,131.522,6.24743,60,10,0,706,0,1,0,0,0),
+(@GUID+14,27737,595,3,1,0,0,2417.26,1428.41,131.652,6.20423,60,10,0,730,0,1,0,0,0),
+(@GUID+15,27737,595,3,1,0,0,2420.48,1419.99,130.716,0.0977616,60,10,0,706,0,1,0,0,0),
+(@GUID+16,27737,595,3,1,0,0,2426.63,1413.41,130.464,0.404064,60,10,0,730,0,1,0,0,0),
+(@GUID+17,27737,595,3,1,0,0,2430.46,1417.6,130.557,0.125247,60,10,0,730,0,1,0,0,0),
+(@GUID+18,27737,595,3,1,0,0,2433.94,1427.03,131.18,0.0584885,60,10,0,706,0,1,0,0,0),
+(@GUID+19,27737,595,3,1,0,0,2446.5,1428.37,131.013,6.10606,60,10,0,756,0,1,0,0,0),
+(@GUID+20,27737,595,3,1,0,0,2449.49,1423.35,130.588,5.77619,60,10,0,706,0,1,0,0,0),
+(@GUID+21,27737,595,3,1,0,0,2441.92,1424.41,130.606,6.07857,60,10,0,706,0,1,0,0,0),
+(@GUID+22,27737,595,3,1,0,0,2450.6,1438.61,132.213,4.74889,60,10,0,730,0,1,0,0,0),
+(@GUID+23,27737,595,3,1,0,0,2460.17,1436.46,131.501,4.73711,60,10,0,756,0,1,0,0,0),
+(@GUID+24,27737,595,3,1,0,0,2444.68,1421.68,130.324,6.01338,60,10,0,756,0,1,0,0,0),
+(@GUID+25,27737,595,3,1,0,0,2456.87,1419.07,130.488,5.39763,60,10,0,706,0,1,0,0,0),
+(@GUID+26,27737,595,3,1,0,0,2464.27,1422.15,130.976,5.22092,60,10,0,756,0,1,0,0,0),
+(@GUID+27,27737,595,3,1,0,0,2468.21,1403.06,130.39,5.6364,60,10,0,756,0,1,0,0,0),
+(@GUID+28,27737,595,3,1,0,0,2460.88,1406.8,130.508,5.96234,60,10,0,756,0,1,0,0,0),
+(@GUID+29,27737,595,3,1,0,0,2485.77,1398.35,130.795,4.71591,60,10,0,756,0,1,0,0,0),
+(@GUID+30,27737,595,3,1,0,0,2485.79,1380.46,130.15,5.02928,60,10,0,730,0,1,0,0,0),
+(@GUID+31,27737,595,3,1,0,0,2475.77,1396.31,130.124,4.84079,60,10,0,730,0,1,0,0,0),
+(@GUID+32,27737,595,3,1,0,0,2476.92,1387.21,129.401,5.05128,60,10,0,730,0,1,0,0,0),
+(@GUID+33,27737,595,3,1,0,0,2483.24,1389.37,130.123,4.74104,60,10,0,730,0,1,0,0,0),
+(@GUID+34,27737,595,3,1,0,0,2480.2,1370.15,129.533,5.79583,60,10,0,706,0,1,0,0,0),
+(@GUID+35,27737,595,3,1,0,0,2481.54,1375.11,129.642,5.4644,60,10,0,730,0,1,0,0,0),
+(@GUID+36,27737,595,3,1,0,0,2489.44,1359.42,131.233,5.378,60,10,0,730,0,1,0,0,0),
+(@GUID+37,27737,595,3,1,0,0,2486.59,1356.19,131.876,5.7275,60,10,0,756,0,1,0,0,0),
+(@GUID+38,27737,595,3,1,0,0,2495.53,1348.61,133.072,5.52722,60,10,0,730,0,1,0,0,0),
+(@GUID+39,27737,595,3,1,0,0,2504.48,1349.65,132.856,5.11881,60,10,0,730,0,1,0,0,0),
+(@GUID+40,27737,595,3,1,0,0,2493.11,1380.29,130.24,4.93189,60,10,0,706,0,1,0,0,0),
+(@GUID+41,27737,595,3,1,0,0,2487.18,1392.64,130.512,4.93818,60,10,0,706,0,1,0,0,0),
+(@GUID+42,27737,595,3,1,0,0,2506.49,1336.89,132.794,5.19343,60,10,0,756,0,1,0,0,0),
+(@GUID+43,27737,595,3,1,0,0,2518.2,1306.39,130.623,4.81723,60,10,0,756,0,1,0,0,0),
+(@GUID+44,27737,595,3,1,0,0,2513.4,1299.67,130.868,4.4206,60,10,0,756,0,1,0,0,0),
+(@GUID+45,27737,595,3,1,0,0,2511.45,1291.47,130.808,5.00729,60,10,0,756,0,1,0,0,0),
+(@GUID+46,27737,595,3,1,0,0,2518.56,1292.32,130.528,5.16438,60,10,0,756,0,1,0,0,0),
+(@GUID+47,27737,595,3,1,0,0,2515.49,1279.85,129.214,5.28847,60,10,0,730,0,1,0,0,0),
+(@GUID+48,27737,595,3,1,0,0,2514.37,1285.92,129.934,5.70473,60,10,0,706,0,1,0,0,0),
+(@GUID+49,27737,595,3,1,0,0,2522.65,1274.29,128.576,5.44634,60,10,0,706,0,1,0,0,0),
+(@GUID+50,27737,595,3,1,0,0,2535.38,1275.77,127.42,5.49817,60,10,0,756,0,1,0,0,0),
+(@GUID+51,27737,595,3,1,0,0,2537.59,1273.1,127.05,5.02693,60,10,0,730,0,1,0,0,0),
+(@GUID+52,27737,595,3,1,0,0,2547.49,1261.7,126.44,4.78425,60,10,0,730,0,1,0,0,0),
+(@GUID+53,27737,595,3,1,0,0,2534.36,1261.06,127.125,4.3994,60,10,0,756,0,1,0,0,0),
+(@GUID+54,27737,595,3,1,0,0,2532.69,1251.44,127.452,5.4479,60,10,0,730,0,1,0,0,0),
+(@GUID+55,27737,595,3,1,0,0,2551.84,1252.35,125.455,5.04342,60,10,0,706,0,1,0,0,0),
+(@GUID+56,27737,595,3,1,0,0,2536.1,1244,126.928,5.16515,60,10,0,756,0,1,0,0,0),
+(@GUID+57,27737,595,3,1,0,0,2543.63,1247.23,126.131,5.19735,60,10,0,706,0,1,0,0,0),
+(@GUID+58,27737,595,3,1,0,0,2554.21,1238.95,125.475,4.64836,60,10,0,730,0,1,0,0,0),
+(@GUID+59,27737,595,3,1,0,0,2548.89,1227.37,126.375,5.31517,60,10,0,756,0,1,0,0,0),
+(@GUID+60,27737,595,3,1,0,0,2560.46,1225.4,125.496,4.85335,60,10,0,706,0,1,0,0,0),
+(@GUID+61,27737,595,3,1,0,0,2555.11,1218.55,125.944,5.11646,60,10,0,730,0,1,0,0,0),
+(@GUID+62,27737,595,3,1,0,0,2561.91,1211.56,125.38,5.5877,60,10,0,730,0,1,0,0,0),
+(@GUID+63,27737,595,3,1,0,0,2568.67,1202.96,125.509,4.96095,60,10,0,756,0,1,0,0,0),
+(@GUID+64,27737,595,3,1,0,0,2571.93,1193.48,125.619,5.07641,60,10,0,756,0,1,0,0,0),
+(@GUID+65,27737,595,3,1,0,0,2577.77,1180.88,125.562,4.64522,60,10,0,756,0,1,0,0,0),
+(@GUID+66,27737,595,3,1,0,0,2574.2,1166.63,126.089,4.44966,60,10,0,706,0,1,0,0,0),
+(@GUID+67,27737,595,3,1,0,0,2564.78,1166.82,127.092,4.2266,60,10,0,756,0,1,0,0,0),
+(@GUID+68,27737,595,3,1,0,0,2577.56,1158.41,126.385,4.07738,60,10,0,756,0,1,0,0,0),
+(@GUID+69,27737,595,3,1,0,0,2567.93,1176.56,126.2,4.7489,60,10,0,706,0,1,0,0,0),
+(@GUID+70,27737,595,3,1,0,0,2559.28,1189.46,126.642,4.73319,60,10,0,756,0,1,0,0,0),
+(@GUID+71,27737,595,3,1,0,0,2554.14,1213.37,126.599,5.13845,60,10,0,706,0,1,0,0,0),
+(@GUID+72,27737,595,3,1,0,0,2560.58,1218.48,125.281,4.97351,60,10,0,730,0,1,0,0,0),
+(@GUID+73,27737,595,3,1,0,0,2570.2,1170.58,126.311,4.64365,60,10,0,756,0,1,0,0,0),
+(@GUID+74,27729,595,3,1,0,0,2496.57,1354.66,132.217,5.13691,120,5,0,63000,0,1,0,0,0),
+(@GUID+75,27729,595,3,1,0,0,2494.22,1365.17,130.812,5.15654,120,5,0,63000,0,1,0,0,0),
+(@GUID+76,27729,595,3,1,0,0,2440.41,1434.46,131.456,5.69372,120,5,0,63000,0,1,0,0,0),
+(@GUID+77,27729,595,3,1,0,0,2433.18,1421.13,130.644,0.046706,120,5,0,63000,0,1,0,0,0),
+(@GUID+78,27734,595,3,1,0,0,2546.07,1239.17,125.945,5.07801,120,5,0,63000,0,1,0,0,0),
+(@GUID+79,27734,595,3,1,0,0,2458.58,1426.22,131.056,5.42984,120,5,0,63000,0,1,0,0,0),
+(@GUID+80,27736,595,3,1,0,0,2488.11,1364.91,130.402,5.35524,120,5,0,130330,0,1,0,0,0),
+(@GUID+81,28199,595,3,1,0,0,2527.63,1267.59,128.168,5.12906,120,5,0,63000,0,1,0,0,0),
+(@GUID+82,28199,595,3,1,0,0,2528.06,1284.34,128.877,5.14869,120,5,0,63000,0,1,0,0,0),
+(@GUID+83,28199,595,3,1,0,0,2466.27,1414.57,130.977,5.18637,120,5,0,63000,0,1,0,0,0),
+(@GUID+84,28200,595,3,1,0,0,2570.51,1181.4,125.809,4.61855,120,5,0,50400,44070,1,0,0,0),
+(@GUID+85,28200,595,3,1,0,0,2560.45,1202.05,126.031,4.85417,120,5,0,50400,44070,1,0,0,0),
+(@GUID+86,28200,595,3,1,0,0,2487.85,1373.29,130.236,5.078,120,5,0,50400,44070,1,0,0,0),
+(@GUID+87,28200,595,3,1,0,0,2416.7,1416.52,130.379,0.191224,120,5,0,50400,44070,1,0,0,0),
+(@GUID+88,28200,595,3,1,0,0,2424.42,1422.68,130.868,0.25327,120,5,0,50400,44070,1,0,0,0),
+(@GUID+89,28201,595,3,1,0,0,2540.67,1254.82,126.274,4.97198,120,5,0,130330,0,1,0,0,0),
+(@GUID+90,28201,595,3,1,0,0,2410.03,1417.19,130.577,0.191229,120,5,0,130330,0,1,0,0,0),
+(@GUID+91,28249,595,3,1,0,0,2562.66,1177.9,126.716,4.77171,120,5,0,63000,0,1,0,0,0),
+(@GUID+92,28249,595,3,1,0,0,2566.72,1190.41,125.837,4.7992,120,5,0,63000,0,1,0,0,0),
+(@GUID+93,28249,595,3,1,0,0,2472.34,1404.76,130.752,5.20601,120,5,0,63000,0,1,0,0,0),
+(@GUID+94,28249,595,3,1,0,0,2460.59,1413.26,130.46,5.4377,120,5,0,63000,0,1,0,0,0),
+(@GUID+95,28249,595,3,1,0,0,2415.04,1423.52,131.111,0.214785,120,5,0,63000,0,1,0,0,0);
+
+DELETE FROM `script_texts` WHERE entry BETWEEN -1595052 AND -1595048;
+INSERT INTO `script_texts` (npc_entry,entry, content_default, comment) VALUES
+(27913,-1595048, "Scourge forces have been spotted near the Elder's Square Gate!","Spawns near elder's square gate."),
+(27913,-1595059, "Scourge forces have been spotted near the Town Hall!","Spawns near town hall."),
+(27913,-1595050, "Scourge forces have been spotted near the King's Square fountain!","Spawns near king's square."),
+(27913,-1595051, "Scourge forces have been spotted near the Market Row Gate!", "Spawns near market row gate."),
+(27913,-1595052, "Scourge forces have been spotted near the Festival Lane Gate!", "Spawns near festval lane gate.");
+
+UPDATE `creature_template` SET `dynamicflags` = 0 WHERE `entry` IN (32273,32313);
+UPDATE `areatrigger_teleport` SET id = 5181 WHERE id = 5148;
+UPDATE `creature_template` SET `flags_extra` = 128 WHERE `entry` = 20562;
+UPDATE `script_waypoint` SET location_x = 2449.32, location_y = 1191.09 WHERE entry = 26499 AND pointid = 26;
+
+UPDATE `creature_template` SET `lootid` = 32273 WHERE `entry` IN (32273, 32313);
+
+-- thx warpten (fix for credit spell)
+UPDATE `spell_dbc` SET `Attributes` = '8388992', `AttributesEx2` = '5', `AttributesEx3` = '269484288' WHERE `Id` = 58630;
diff --git a/sql/old/3.3.5a/2012_05_03_02_world_quest_template.sql b/sql/old/3.3.5a/2012_05_03_02_world_quest_template.sql
new file mode 100644
index 00000000000..49953bd2166
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_03_02_world_quest_template.sql
@@ -0,0 +1,28 @@
+-- Wolvar Orphan quest order
+UPDATE `quest_template` SET `prevquestid`=13927,`exclusivegroup`=-13930 WHERE `id` IN (13930,13934,13951);
+UPDATE `quest_template` SET `prevquestid`=13930,`exclusivegroup`=-13955 WHERE `id` IN (13955,13957);
+UPDATE `quest_template` SET `prevquestid`=13955,`exclusivegroup`=0 WHERE `id`=13938;
+UPDATE `quest_template` SET `prevquestid`=13938,`exclusivegroup`=0 WHERE `id`=13960;
+-- Oracle Orphan quest order
+UPDATE `quest_template` SET `prevquestid`=13926,`exclusivegroup`=-13929 WHERE `id` IN (13929,13933,13950);
+UPDATE `quest_template` SET `prevquestid`=13929,`exclusivegroup`=-13954 WHERE `id` IN (13954,13956);
+UPDATE `quest_template` SET `prevquestid`=13954,`exclusivegroup`=0 WHERE `id`=13937;
+UPDATE `quest_template` SET `prevquestid`=13937,`exclusivegroup`=0 WHERE `id`=13959;
+-- Human Orphan quest order
+UPDATE `quest_template` SET `prevquestid`=1468,`exclusivegroup`=-1479 WHERE `id` IN (1479,1558,1687);
+UPDATE `quest_template` SET `prevquestid`=1479,`exclusivegroup`=-558 WHERE `id` IN (558,4822);
+UPDATE `quest_template` SET `prevquestid`=558,`exclusivegroup`=0 WHERE `id`=171;
+-- Orcish Orphan quest order
+UPDATE `quest_template` SET `prevquestid`=172,`exclusivegroup`=-910 WHERE `id` IN (910,911,1800);
+UPDATE `quest_template` SET `prevquestid`=910,`exclusivegroup`=-915 WHERE `id` IN (915,925);
+UPDATE `quest_template` SET `prevquestid`=915,`exclusivegroup`=0 WHERE `id`=5502;
+-- Draenei Orphan quest order
+UPDATE `quest_template` SET `prevquestid`=10943,`exclusivegroup`=-10950 WHERE `id` IN (10950,10952,10954);
+UPDATE `quest_template` SET `prevquestid`=10950,`exclusivegroup`=-10956 WHERE `id` IN (10956,10962);
+UPDATE `quest_template` SET `NextQuestIdChain`=10968 WHERE `id`=10956;
+UPDATE `quest_template` SET `prevquestid`=10968,`exclusivegroup`=0 WHERE `id`=10966;
+-- Blood Elf Orphan quest order
+UPDATE `quest_template` SET `prevquestid`=10942,`exclusivegroup`=-10945 WHERE `id` IN (10945,10951,10953);
+UPDATE `quest_template` SET `prevquestid`=10945,`exclusivegroup`=-10960 WHERE `id` IN (10960,10963);
+UPDATE `quest_template` SET `prevquestid`=10960,`exclusivegroup`=0 WHERE `id`=11975;
+UPDATE `quest_template` SET `prevquestid`=11975,`exclusivegroup`=0 WHERE `id`=10967;
diff --git a/sql/old/3.3.5a/2012_05_03_03_world_creature_questrelation.sql b/sql/old/3.3.5a/2012_05_03_03_world_creature_questrelation.sql
new file mode 100644
index 00000000000..1da4f6d29ad
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_03_03_world_creature_questrelation.sql
@@ -0,0 +1,2 @@
+-- Set correct NPC for A Warden of the Alliance
+UPDATE `creature_questrelation` SET `id`=14305 WHERE `quest`=171;
diff --git a/sql/old/3.3.5a/2012_05_03_04_world_game_event_creature_quest.sql b/sql/old/3.3.5a/2012_05_03_04_world_game_event_creature_quest.sql
new file mode 100644
index 00000000000..62fd4415549
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_03_04_world_game_event_creature_quest.sql
@@ -0,0 +1,57 @@
+DELETE FROM `creature_questrelation` WHERE `id` IN (14305,14444,22817,22818,33532,33533,34365);
+DELETE FROM `game_event_creature_quest` WHERE `eventEntry`=10;
+INSERT INTO `game_event_creature_quest` (`eventEntry`,`id`,`quest`) VALUES
+-- Alliance
+(10,14450,1468), -- Orphan Matron Nightingale - Children's Week
+(10,14305,1479), -- Human Orphan - The Bough of the Eternals
+(10,14305,1558), -- Human Orphan - The Stonewrought Dam
+(10,14305,1687), -- Human Orphan - Spooky Lighthouse
+(10,14305,558), -- Human Orphan - Jaina's Autograph
+(10,14305,4822), -- Human Orphan - You Scream, I Scream...
+-- Horde
+(10,14451,172), -- Orphan Matron Battlewail - Children's Week
+(10,14444,910), -- Orcish Orphan - Down at the Docks
+(10,14444,911), -- Orcish Orphan - Gateway to the Frontier
+(10,14444,1800), -- Orcish Orphan - Lordaeron Throne Room
+(10,14444,915), -- Orcish Orphan - You Scream, I Scream...
+(10,14444,925), -- Orcish Orphan - Cairne's Hoofprint
+(10,14444,5502), -- Orcish Orphan - A Warden of the Horde
+-- Outlands: Blood Elfs
+(10,22819,10942), -- Orphan Matron Mercy - Children's Week
+(10,22817,10945), -- Blood Elf Orphan - Hch'uu and the Mushroom People
+(10,22817,10951), -- Blood Elf Orphan - A Trip to the Dark Portal
+(10,22817,10953), -- Blood Elf Orphan - Visit the Throne of the Elements
+(10,22817,11975), -- Blood Elf Orphan - Now, When I Grow Up...
+(10,22817,10963), -- Blood Elf Orphan - Time to Visit the Caverns
+(10,22817,10967), -- Blood Elf Orphan - Back to the Orphanage
+-- Outlands: Draenei
+(10,22819,10943), -- Orphan Matron Mercy - Children's Week
+(10,22818,10950), -- Draenei Orphan - Auchindoun and the Ring of Observance
+(10,22818,10952), -- Draenei Orphan - A Trip to the Dark Portal
+(10,22818,10954), -- Draenei Orphan - Jheel is at Aeris Landing!
+(10,22818,10956), -- Draenei Orphan - The Seat of the Naaru
+(10,22818,10962), -- Draenei Orphan - Time to Visit the Caverns
+(10,22818,10966), -- Draenei Orphan - Back to the Orphanage
+-- Northrend: Wolvar
+(10,34365,13927), -- Orphan Matron Aria - Little Orphan Kekek Of The Wolvar
+(10,33532,13930), -- Wolvar Orphan - Home Of The Bear-Men
+(10,33532,13934), -- Wolvar Orphan - The Bronze Dragonshrine
+(10,33532,13951), -- Wolvar Orphan - Playmates!
+(10,33532,13955), -- Wolvar Orphan - The Dragon Queen
+(10,33532,13957), -- Wolvar Orphan - The Mighty Hemet Nesingwary
+(10,33532,13960), -- Wolvar Orphan - Back To The Orphanage
+-- Northrend: Oracles
+(10,34365,13926), -- Orphan Matron Aria - Little Orphan Roo Of The Oracles
+(10,33533,13929), -- Oracle Orphan - The Biggest Tree Ever!
+(10,33533,13933), -- Oracle Orphan - The Bronze Dragonshrine
+(10,33533,13937), -- Oracle Orphan - A Trip To The Wonderworks
+(10,33533,13950), -- Oracle Orphan - Playmates!
+(10,33533,13954), -- Oracle Orphan - The Dragon Queen
+(10,33533,13956), -- Oracle Orphan - Meeting a Great One
+(10,33533,13959); -- Oracle Orphan - Back To The Orphanage
+
+-- Removed "When I Grow Up..." and replace it with "Now, When I Grow Up..."
+UPDATE `quest_template` SET `prevquestid`=10945,`exclusivegroup`=-11975 WHERE `id` IN (11975,10963);
+DELETE FROM `disables` WHERE `sourceType`=1 AND `entry`=10960;
+INSERT INTO `disables` (`sourceType`,`entry`,`flags`,`params_0`,`params_1`,`comment`) VALUES
+(1,10960,0,'','','Deprecated quest: When I grow up...');
diff --git a/sql/old/3.3.5a/2012_05_04_00_world_waypoints.sql b/sql/old/3.3.5a/2012_05_04_00_world_waypoints.sql
new file mode 100644
index 00000000000..a07bde59d49
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_04_00_world_waypoints.sql
@@ -0,0 +1,137 @@
+-- Thrallmar Grunt pathing
+SET @NPC := 57505;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=168.3949,`position_y`=2641.357,`position_z`=86.32077 WHERE `guid`=@NPC;
+UPDATE `creature_addon` SET `path_id`=@PATH WHERE `guid`=@NPC;
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,168.3949,2641.357,86.32077,0,0,0,100,0),
+(@PATH,2,186.5067,2615.882,87.28357,0,0,0,100,0),
+(@PATH,3,188.9113,2601.655,87.28357,0,0,0,100,0),
+(@PATH,4,198.3909,2602.661,87.28357,0,0,0,100,0),
+(@PATH,5,201.5686,2609.845,87.28357,0,0,0,100,0),
+(@PATH,6,187.2484,2616.44,87.28357,0,0,0,100,0),
+(@PATH,7,168.7871,2641.268,86.32077,0,0,0,100,0),
+(@PATH,8,155.2003,2681.998,84.82113,0,0,0,100,0),
+(@PATH,9,194.6133,2692.07,90.61374,0,0,0,100,0),
+(@PATH,10,215.4427,2693.589,90.69872,0,0,0,100,0),
+(@PATH,11,219.0203,2692.25,90.69665,0,0,0,100,0),
+(@PATH,12,225.5117,2680.063,90.68996,0,0,0,100,0),
+(@PATH,13,235.309,2679.308,90.69373,0,0,0,100,0),
+(@PATH,14,246.9184,2682.646,90.70419,0,0,0,100,0),
+(@PATH,15,252.4411,2688.479,90.70386,0,0,0,100,0),
+(@PATH,16,255.0155,2699.197,90.70283,0,0,0,100,0),
+(@PATH,17,251.5234,2707.998,90.70486,0,0,0,100,0),
+(@PATH,18,243.2346,2712.791,90.70392,0,0,0,100,0),
+(@PATH,19,231.9871,2713.626,90.70399,0,0,0,100,0),
+(@PATH,20,221.1457,2709.591,90.69753,0,0,0,100,0),
+(@PATH,21,218.8803,2695.845,90.69318,0,0,0,100,0),
+(@PATH,22,215.4517,2693.612,90.69869,0,0,0,100,0),
+(@PATH,23,194.7944,2692.039,90.65273,0,0,0,100,0),
+(@PATH,24,175.8115,2687.591,86.68189,0,0,0,100,0),
+(@PATH,25,155.2143,2682.375,84.82113,0,0,0,100,0),
+(@PATH,26,131.8727,2679.832,84.56969,0,0,0,100,0),
+(@PATH,27,130.0859,2666.262,84.1262,0,0,0,100,0),
+(@PATH,28,153.1291,2650.22,86.15128,0,0,0,100,0);
+
+-- Remove dup Thrallmar Grunt spawn
+DELETE FROM `creature` WHERE `guid`=57532;
+DELETE FROM `creature_addon` WHERE `guid`=57532;
+
+-- Bat Rider Guard pathing
+SET @NPC := 54840;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=156.9029,`position_y`=2554.784,`position_z`=170.8949 WHERE `guid`=@NPC;
+UPDATE `creature_addon` SET `path_id`=@PATH WHERE `guid`=@NPC;
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,156.9029,2554.784,170.8949,0,0,0,100,0),
+(@PATH,2,52.51677,2602.816,139.7838,0,0,0,100,0),
+(@PATH,3,42.10146,2627.056,139.7838,0,0,0,100,0),
+(@PATH,4,37.17329,2663.729,139.7838,0,0,0,100,0),
+(@PATH,5,62.91933,2687.96,139.7838,0,0,0,100,0),
+(@PATH,6,96.1871,2688.141,148.4226,0,0,0,100,0),
+(@PATH,7,129.818,2690.786,151.256,0,0,0,100,0),
+(@PATH,8,165.6888,2715.398,170.8949,0,0,0,100,0),
+(@PATH,9,199.7751,2744.93,170.8949,0,0,0,100,0),
+(@PATH,10,246.0857,2761.154,170.8949,0,0,0,100,0),
+(@PATH,11,295.0904,2757.991,170.8949,0,0,0,100,0),
+(@PATH,12,309.3468,2726.089,170.8949,0,0,0,100,0),
+(@PATH,13,303.8448,2682.588,170.8949,0,0,0,100,0),
+(@PATH,14,289.3104,2650.866,170.8949,0,0,0,100,0),
+(@PATH,15,261.2743,2618.831,170.8949,0,0,0,100,0),
+(@PATH,16,233.6436,2578.997,170.8949,0,0,0,100,0),
+(@PATH,17,199.3375,2546.226,170.8949,0,0,0,100,0);
+
+-- Bat Rider Guard pathing
+SET @NPC := 54841;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=65.97776,`position_y`=2661.205,`position_z`=163.6752 WHERE `guid`=@NPC;
+UPDATE `creature_addon` SET `path_id`=@PATH WHERE `guid`=@NPC;
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,65.97776,2661.205,163.6752,0,0,0,100,0),
+(@PATH,2,85.52612,2668.312,163.6752,0,0,0,100,0),
+(@PATH,3,119.9537,2689.26,163.6752,0,0,0,100,0),
+(@PATH,4,121.8238,2721.88,163.6752,0,0,0,100,0),
+(@PATH,5,142.6907,2750.891,163.6752,0,0,0,100,0),
+(@PATH,6,149.9812,2788.504,163.6752,0,0,0,100,0),
+(@PATH,7,142.9353,2830.464,163.6752,0,0,0,100,0),
+(@PATH,8,115.1711,2822.444,163.6752,0,0,0,100,0),
+(@PATH,9,57.16672,2791.644,163.6752,0,0,0,100,0),
+(@PATH,10,38.80463,2758.823,163.6752,0,0,0,100,0),
+(@PATH,11,19.69282,2714.784,163.6752,0,0,0,100,0),
+(@PATH,12,23.22027,2677.714,163.6752,0,0,0,100,0);
+
+-- Bat Rider Guard pathing
+SET @NPC := 54842;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=263.5968,`position_y`=2694.818,`position_z`=169.7312 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,4097);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,263.5968,2694.818,169.7312,0,0,0,100,0),
+(@PATH,2,184.0861,2784.899,154.4534,0,0,0,100,0),
+(@PATH,3,154.2815,2754.787,154.3701,0,0,0,100,0),
+(@PATH,4,127.0308,2740.488,154.3701,0,0,0,100,0),
+(@PATH,5,118.0444,2706.509,154.3701,0,0,0,100,0),
+(@PATH,6,115.7577,2669.386,158.6756,0,0,0,100,0),
+(@PATH,7,131.4314,2622.531,162.1478,0,0,0,100,0),
+(@PATH,8,154.8241,2607.207,164.4812,0,0,0,100,0),
+(@PATH,9,176.3283,2571.343,168.5645,0,0,0,100,0),
+(@PATH,10,221.6267,2559.683,172.1201,0,0,0,100,0),
+(@PATH,11,245.392,2593.423,169.8978,0,0,0,100,0),
+(@PATH,12,251.0069,2617.749,169.7312,0,0,0,100,0),
+(@PATH,13,263.0581,2644.614,169.7312,0,0,0,100,0);
+
+-- Bat Rider Guard pathing
+SET @NPC := 54843;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=62.42025,`position_y`=2785.719,`position_z`=192.1124 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,4097);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,62.42025,2785.719,192.1124,0,0,0,100,0),
+(@PATH,2,159.9371,2842.977,208.279,0,0,0,100,0),
+(@PATH,3,183.0578,2845.035,208.279,0,0,0,100,0),
+(@PATH,4,211.2432,2864.757,214.2235,0,0,0,100,0),
+(@PATH,5,238.1182,2871.979,220.9457,0,0,0,100,0),
+(@PATH,6,252.9173,2853.913,220.9457,0,0,0,100,0),
+(@PATH,7,255.0203,2812.634,220.9457,0,0,0,100,0),
+(@PATH,8,240.4993,2780.929,220.9457,0,0,0,100,0),
+(@PATH,9,195.4901,2773.965,209.3901,0,0,0,100,0),
+(@PATH,10,162.1341,2742.294,212.9179,0,0,0,100,0),
+(@PATH,11,125.4935,2720.611,197.9457,0,0,0,100,0),
+(@PATH,12,93.49241,2699.757,192.1124,0,0,0,100,0),
+(@PATH,13,58.35324,2681.49,192.1124,0,0,0,100,0),
+(@PATH,14,22.8833,2715.123,192.1124,0,0,0,100,0),
+(@PATH,15,30.10514,2764.5,192.1124,0,0,0,100,0);
+
+-- Fix Bat Rider Guard InhabitType
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=15242;
+
+-- Remove dup Bat Rider Guard spawns
+DELETE FROM `creature` WHERE `guid` IN (54839,54844,54845);
+DELETE FROM `creature_addon` WHERE `guid` IN (54839,54844,54845);
diff --git a/sql/old/3.3.5a/2012_05_04_01_world_sai.sql b/sql/old/3.3.5a/2012_05_04_01_world_sai.sql
new file mode 100644
index 00000000000..7021fc92548
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_04_01_world_sai.sql
@@ -0,0 +1,32 @@
+-- Speech by Martik Tor'seldoi, Thrallmar
+SET @ENTRY := 16577;
+UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid`=@ENTRY*100;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,30000,50000,360000,360000,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Martik Tor''seldoi - OOC - Load script every 6 min ooc'),
+(@ENTRY,0,1,0,25,0,100,0,0,0,0,0,11,18100,32,0,0,0,0,1,0,0,0,0,0,0,0, 'Martik Tor''seldoi - Reset - Cast Frost Armor'),
+(@ENTRY*100,9,0,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi Say text 0'),
+(@ENTRY*100,9,1,0,0,0,100,0,3000,3000,0,0,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi emote'),
+(@ENTRY*100,9,2,0,0,0,100,0,3000,3000,0,0,5,6,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi emote'),
+(@ENTRY*100,9,3,0,0,0,100,0,3000,3000,0,0,1,0,0,0,0,0,0,10,57487,16578,0,0,0,0,0,'Blood Elf Pilgrim Say text 0'),
+(@ENTRY*100,9,4,0,0,0,100,0,3000,3000,0,0,5,6,0,0,0,0,0,10,57487,16578,0,0,0,0,0,'Blood Elf Pilgrim emote'),
+(@ENTRY*100,9,5,0,0,0,100,0,3000,3000,0,0,66,0,0,0,0,0,0,10,57487,16578,0,0,0,0,0,'Martik Tor''seldoi turn to'),
+(@ENTRY*100,9,6,0,0,0,100,0,1000,1000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi Say text 1'),
+(@ENTRY*100,9,7,0,0,0,100,0,4000,4000,0,0,1,1,0,0,0,0,0,10,57487,16578,0,0,0,0,0,'Blood Elf Pilgrim Say text 1'),
+(@ENTRY*100,9,8,0,0,0,100,0,3000,3000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi Say text 2'),
+(@ENTRY*100,9,9,0,0,0,100,0,3000,3000,0,0,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi emote'),
+(@ENTRY*100,9,10,0,0,0,100,0,3000,3000,0,0,5,273,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi emote'),
+(@ENTRY*100,9,11,0,0,0,100,0,3000,3000,0,0,1,2,0,0,0,0,0,10,57487,16578,0,0,0,0,0,'Blood Elf Pilgrim Say text 2'),
+(@ENTRY*100,9,12,0,0,0,100,0,1000,1000,0,0,5,15,0,0,0,0,0,9,16578,0,20,0,0,0,0,'Blood Elf Pilgrim emote'),
+(@ENTRY*100,9,13,0,0,0,100,0,3000,3000,0,0,66,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Martik Tor''seldoi turn to');
+-- NPC talk text insert from sniff
+DELETE FROM `creature_text` WHERE `entry` IN (16577,16578);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(16577,0,0, 'Brothers and sisters, I have been to the promised land. I have tasted in the sublim energy. I have felt bliss - bliss so engrossing and all encompassing that I was left wondering if I had stumbled upon the dreams of gods.!',12,0,100,5,0,0, 'Martik Tor''seldoi'),
+(16577,1,0, 'In paradise, you merely reach out and take from the Nether.',12,0,100,1,0,0, 'Martik Tor''seldoi'),
+(16577,2,0, 'From the very air! Tendrils of arcane energy light up the obsidian sky as plumes of raw magic rise up from fissures in the land. Kneel and drink from the fissure as you do from a stream or well. Pluck a tendril from the heavens as if it were an apple hanging from a branch.',12,0,100,5,0,0, 'Martik Tor''seldoi'),
+(16578,0,0, 'Tell us more, Martik. What is it? What does it feel like?',12,0,100,1,0,0, 'Blood Elf Pilgrim'),
+(16578,1,0, 'But how?',12,0,100,6,0,0, 'Blood Elf Pilgrim'),
+(16578,2,0, '%s smiles/gasps.',16,0,100,0,0,0, 'Blood Elf Pilgrim');
diff --git a/sql/old/3.3.5a/2012_05_05_00_world_sai.sql b/sql/old/3.3.5a/2012_05_05_00_world_sai.sql
new file mode 100644
index 00000000000..e03c36337af
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_05_00_world_sai.sql
@@ -0,0 +1,205 @@
+-- Forge of Souls Trash update
+
+-- Npc Updates
+
+-- Spiteful Apparition
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=36551;
+UPDATE `creature` SET `spawndist`=20,`MovementType`=1,`curhealth`=1,`curmana`=0 WHERE `id`=36551;
+DELETE FROM `creature_template_addon` WHERE `entry`=36551;
+INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (36551,1, '69105 69136');
+-- Spiteful Apparition (Ambient)
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=36967;
+UPDATE `creature` SET `spawndist`=20,`MovementType`=1,`curhealth`=1,`curmana`=0 WHERE `id`=36967;
+DELETE FROM `creature_template_addon` WHERE `entry`=36967;
+INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (36967,1, '69663 69658');
+-- Spectral Warden
+UPDATE `creature_addon` SET `auras`='69144' WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id`=36666);
+
+-- SAI Updates
+
+-- Spiteful Apparition SAI
+SET @ENTRY := 36551; -- NPC entry
+SET @SPELL1 := 41253; -- Greater Invisibility
+SET @SPELL2 := 68895; -- Spite (Normal)
+SET @SPELL3 := 70212; -- Spite (Heroic)
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,25,0,100,6,0,0,0,0,11,@SPELL1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Spiteful Apparition - On Reset - Cast Greater Invisibility'),
+(@ENTRY,0,1,0,10,0,100,6,0,10,3000,4000,28,@SPELL1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Spiteful Apparition - OOC range - Remove Greater Invisibility'),
+(@ENTRY,0,2,0,0,0,100,2,7000,9000,7000,9000,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Spiteful Apparition - Combat - Cast Spite "Normal"'),
+(@ENTRY,0,3,0,0,0,100,4,7000,9000,7000,9000,11,@SPELL3,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Spiteful Apparition - Combat - Cast Spite "Heroic"');
+
+-- Soulguard Reaper SAI
+SET @ENTRY := 36499; -- NPC entry
+SET @SPELL1 := 68797; -- Soulguard Channel
+SET @SPELL2 := 69058; -- Shadow Lance
+SET @SPELL3 := 69060; -- Frost Nova (Normal)
+SET @SPELL4 := 70209; -- Frost Nova (Heroic)
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,7,0,0,0,0,11,@SPELL1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Reaper - OOC - Cast Soulguard Channel'),
+(@ENTRY,0,1,0,0,0,100,6,5000,6000,7000,9000,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Reaper - Combat - Cast Shadow Lance'),
+(@ENTRY,0,2,0,0,0,100,2,7000,9000,8000,10000,11,@SPELL3,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Soulguard Reaper - Combat - Cast Frost Nova "Normal"'),
+(@ENTRY,0,3,0,0,0,100,4,7000,9000,8000,10000,11,@SPELL4,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Soulguard Reaper - Combat - Cast Frost Nova "Heroic"'),
+(@ENTRY,0,4,0,4,0,100,6,0,0,0,0,39,30,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Reaper - Aggro - Call for help');
+
+-- Soulguard Beam Focus Target
+SET @ENTRY := 36508; -- NPC entry
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid` IN (-201770,-201785,-201741);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(-201770,0,0,0,1,0,100,6,1000,1000,5000,5000,45,0,1,0,0,0,0,19,36620,60,0,0,0,0,0, 'Soulguard Beam Focus Target - OOC - Set data on Soulguard Adept'),
+(-201785,0,0,0,1,0,100,6,1000,1000,5000,5000,45,0,1,0,0,0,0,19,36620,60,0,0,0,0,0, 'Soulguard Beam Focus Target - OOC - Set data on Soulguard Adept'),
+(-201741,0,0,0,1,0,100,6,1000,1000,5000,5000,45,0,1,0,0,0,0,19,36620,60,0,0,0,0,0, 'Soulguard Beam Focus Target - OOC - Set data on Soulguard Adept'),
+(-201741,0,1,0,1,0,100,6,1000,1000,5000,5000,45,0,1,0,0,0,0,19,36564,60,0,0,0,0,0, 'Soulguard Beam Focus Target - OOC - Set data on Soulguard Bonecaster');
+
+-- Spectral Warden SAI
+SET @ENTRY := 36666; -- NPC entry
+SET @SPELL1 := 69633; -- Veil of Shadow
+SET @SPELL2 := 69148; -- Wail of Souls (Normal)
+SET @SPELL3 := 70210; -- Wail of Souls (Heroic)
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,6,5000,6000,9000,10000,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Spectral Warden - Combat - Cast Veil of Shadow'),
+(@ENTRY,0,1,0,0,0,100,2,9000,11000,5000,6000,11,@SPELL1,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Spectral Warden - Combat - Cast Wail of Souls'),
+(@ENTRY,0,2,0,0,0,100,4,9000,11000,5000,6000,11,@SPELL2,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Spectral Warden - Combat - Cast Wail of Souls');
+
+-- Soulguard Watchman SAI
+SET @ENTRY := 36478; -- NPC entry
+SET @SPELL1 := 69056; -- Shroud of Runes
+SET @SPELL2 := 69053; -- Unholy Rage
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,50,6,0,10000,16000,20000,11,@SPELL1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Watchman - Combat - Cast Shroud of Runes'),
+(@ENTRY,0,1,2,0,0,100,6,8000,16000,32000,40000,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Watchman - Combat - Cast Unholy Rage'),
+(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Watchman - Combat - Say 0'),
+(@ENTRY,0,3,0,4,0,100,6,0,0,0,0,39,20,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Watchman - Aggro - Call for help');
+-- NPC talk text insert
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, '%s goes into a frenzy!',16,0,100,0,0,0, 'Soulguard Watchman');
+
+-- Soul Horror SAI
+SET @ENTRY := 36522; -- NPC entry
+SET @SPELL1 := 69088; -- Soul Strike (Normal)
+SET @SPELL2 := 70211; -- Soul Strike (Heroic)
+SET @SPELL3 := 69107; -- Killing Spree Invis Aura
+SET @SPELL4 := 69106; -- Killing Spree Aura
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,5000,6000,5000,6000,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soul Horror - Combat - Cast Soul Strike'),
+(@ENTRY,0,1,0,0,0,100,4,5000,6000,5000,6000,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soul Horror - Combat - Cast Soul Strike'),
+(@ENTRY,0,4,0,4,0,100,6,0,0,0,0,39,35,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soul Horror - Aggro - Call for help');
+
+-- Soulguard Animator SAI
+SET @ENTRY := 36516; -- NPC entry
+SET @SPELL1 := 68834; -- Soulguard Channel Beam02
+SET @SPELL2 := 69562; -- Raise Dead
+SET @SPELL3 := 69131; -- Soul Sickness
+SET @SPELL4 := 69128; -- Soul Siphon
+SET @SPELL5 := 69068; -- Shadow Bolt (Normal)
+SET @SPELL6 := 70208; -- Shadow Bolt (Heroic)
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,7,1000,1000,1000,1000,11,@SPELL1,0,0,0,0,0,9,36522,1,15,0,0,0,0, 'Soulguard Animator - OOC - Cast Soulguard Channel Beam02'),
+(@ENTRY,0,1,0,0,1,100,6,20000,25000,20000,25000,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Animator - Combat - Cast Raise Dead'),
+(@ENTRY,0,2,0,0,0,100,6,7000,9000,9000,11000,11,@SPELL3,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Soulguard Animator - Combat - Cast Soul Sickness'),
+(@ENTRY,0,3,0,0,0,100,6,9000,11000,7000,9000,11,@SPELL4,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Soulguard Animator - Combat - Cast Soul Siphon'),
+(@ENTRY,0,4,0,0,0,100,2,4000,5000,3500,4500,11,@SPELL5,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Animator - Combat - Cast Shadow Bolt "Normal"'),
+(@ENTRY,0,5,0,0,0,100,4,4000,5000,3500,4500,11,@SPELL6,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Animator - Combat - Cast Shadow Bolt "Heroic"'),
+(@ENTRY,0,6,7,4,0,100,6,0,0,0,0,39,35,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Animator - Aggro - Call for help'),
+(@ENTRY,0,7,0,61,0,100,6,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Animator - Aggro - Set phase 1'),
+(@ENTRY,0,8,9,38,0,100,7,0,2,0,0,45,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Animator - Data set 2 - Set data'),
+(@ENTRY,0,9,0,61,0,100,6,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Animator - Data set 2 - Set phase 2'),
+(@ENTRY,0,10,11,38,0,100,7,0,3,0,0,45,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Animator - Data set 3 - Set data'),
+(@ENTRY,0,11,0,61,0,100,6,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Animator - Data set 3 - Set phase 1');
+
+-- Soulguard Adept SAI
+SET @ENTRY := 36620; -- NPC entry
+SET @SPELL1 := 68834; -- Soulguard Channel Beam02
+SET @SPELL2 := 69562; -- Raise Dead
+SET @SPELL3 := 69068; -- Shadow Bolt (Normal)
+SET @SPELL4 := 70208; -- Shadow Bolt (Heroic)
+SET @SPELL5 := 69066; -- Drain Life (Normal)
+SET @SPELL6 := 70213; -- Drain Life (Heroic)
+SET @SPELL7 := 69564; -- Shadow Mend (Normal)
+SET @SPELL8 := 70205; -- Shadow Mend (Heroic)
+SET @SPELL9 := 68797; -- Soulguard Channel
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,7,1000,1000,1000,1000,11,@SPELL1,0,0,0,0,0,9,36522,1,15,0,0,0,0, 'Soulguard Adept - OOC - Cast Soulguard Channel Beam02'),
+(@ENTRY,0,1,0,0,4,100,6,20000,25000,20000,25000,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - Combat - Cast Raise Dead'),
+(@ENTRY,0,2,0,0,0,100,2,7000,8000,3500,4500,11,@SPELL3,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Adept - Combat - Cast Shadow Bolt "Normal"'),
+(@ENTRY,0,3,0,0,0,100,4,7000,8000,3500,4500,11,@SPELL4,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Adept - Combat - Cast Shadow Bolt "Heroic"'),
+(@ENTRY,0,4,0,0,0,100,2,6000,7000,8000,10000,11,@SPELL5,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Soulguard Adept - Combat - Cast Drain Life "Normal"'),
+(@ENTRY,0,5,0,0,0,100,4,6000,7000,8000,10000,11,@SPELL6,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Soulguard Adept - Combat - Cast Drain Life "Heroic"'),
+(@ENTRY,0,6,0,0,0,100,2,30000,35000,18000,22000,11,@SPELL7,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Adept - Combat - Cast Shadow Mend "Normal"'),
+(@ENTRY,0,7,0,0,0,100,4,30000,35000,18000,22000,11,@SPELL8,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Adept - Combat - Cast Shadow Mend "Heroic"'),
+(@ENTRY,0,8,0,25,0,100,6,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - On Reset - Set phase 1'),
+(@ENTRY,0,9,0,38,1,100,6,0,1,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - On dataset 0 1 - Set phase 2'),
+(@ENTRY,0,10,0,1,2,100,7,0,0,0,0,11,@SPELL9,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - OOC - Cast Soulguard Channel'),
+(@ENTRY,0,11,12,4,0,100,6,0,0,0,0,39,35,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - Aggro - Call for help'),
+(@ENTRY,0,12,0,61,0,100,6,0,0,0,0,22,3,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - Aggro - Set phase 3'),
+(@ENTRY,0,13,14,38,0,100,7,0,2,0,0,45,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - Data set 2 - Set data'),
+(@ENTRY,0,14,0,61,0,100,6,0,0,0,0,22,4,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - Data set 2 - Set phase 4'),
+(@ENTRY,0,15,16,38,0,100,7,0,3,0,0,45,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - Data set 3 - Set data'),
+(@ENTRY,0,16,0,61,0,100,6,0,0,0,0,22,3,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Adept - Data set 3 - Set phase 3');
+
+-- Soulguard Bonecaster SAI
+SET @ENTRY := 36564; -- NPC entry
+SET @SPELL1 := 68834; -- Soulguard Channel Beam02
+SET @SPELL2 := 69562; -- Raise Dead
+SET @SPELL3 := 69080; -- Bone Volley (Normal)
+SET @SPELL4 := 70206; -- Bone Volley (Heroic)
+SET @SPELL5 := 69069; -- Shield of Bones (Normal)
+SET @SPELL6 := 70207; -- Shield of Bones (Heroic)
+SET @SPELL7 := 68797; -- Soulguard Channel
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,7,1000,1000,1000,1000,11,@SPELL1,0,0,0,0,0,9,36522,1,15,0,0,0,0, 'Soulguard Bonecaster - OOC - Cast Soulguard Channel Beam02'),
+(@ENTRY,0,1,0,0,4,100,6,20000,25000,20000,25000,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Combat - Cast Raise Dead'),
+(@ENTRY,0,2,0,0,0,100,2,5000,7000,6000,8000,11,@SPELL3,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Combat - Cast Bone Volley "Normal"'),
+(@ENTRY,0,3,0,0,0,100,4,5000,7000,6000,8000,11,@SPELL4,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Combat - Cast Bone Volley "Heroic"'),
+(@ENTRY,0,4,0,0,0,100,2,5000,7000,7000,9000,11,@SPELL5,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Combat - Cast Shield of Bones "Normal"'),
+(@ENTRY,0,5,0,0,0,100,4,5000,7000,7000,9000,11,@SPELL6,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Combat - Cast Shield of Bones "Heroic"'),
+(@ENTRY,0,6,0,25,0,100,6,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - On Reset - Set phase 1'),
+(@ENTRY,0,7,0,38,1,100,6,0,1,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - On dataset 0 1 - Set phase 2'),
+(@ENTRY,0,8,0,1,2,100,7,0,0,0,0,11,@SPELL7,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - OOC - Cast Soulguard Channel'),
+(@ENTRY,0,9,10,4,0,100,6,0,0,0,0,39,35,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Aggro - Call for help'),
+(@ENTRY,0,10,0,61,0,100,6,0,0,0,0,22,3,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Aggro - Set phase 3'),
+(@ENTRY,0,11,12,38,0,100,7,0,2,0,0,45,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Data set 2 - Set data'),
+(@ENTRY,0,12,0,61,0,100,6,0,0,0,0,22,4,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Data set 2 - Set phase 4'),
+(@ENTRY,0,13,14,38,0,100,7,0,3,0,0,45,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Data set 3 - Set data'),
+(@ENTRY,0,14,0,61,0,100,6,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Soulguard Bonecaster - Data set 3 - Set phase 3');
+
+-- Ghoul Minion SAI
+SET @ENTRY := 36916; -- NPC entry
+SET @SPELL1 := 69088; -- Soul Strike (Normal)
+SET @SPELL2 := 70211; -- Soul Strike (Heroic)
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,54,0,100,6,0,0,0,0,45,0,2,0,0,0,0,23,0,0,0,0,0,0,0, 'Ghoul Minion - Just Summoned - Set Data Summoner'),
+(@ENTRY,0,1,0,61,0,100,6,0,0,0,0,89,5,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Ghoul Minion - Just Summoned - Set Random Movement'),
+(@ENTRY,0,2,0,0,0,100,6,115000,115000,115000,115000,37,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Ghoul Minion - combat - die after 2 min'),
+(@ENTRY,0,3,0,1,0,100,6,15000,15000,15000,15000,37,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Ghoul Minion - OOC - die after 15 sec'),
+(@ENTRY,0,4,5,6,0,100,6,15000,15000,15000,15000,45,0,3,0,0,0,0,23,0,0,0,0,0,0,0, 'Ghoul Minion - on Death - Set data summoner'),
+(@ENTRY,0,5,0,61,0,100,6,15000,15000,15000,15000,41,3000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Ghoul Minion - on Death - despawn after 3 sec');
diff --git a/sql/old/3.3.5a/2012_05_05_01_world_creature_template.sql b/sql/old/3.3.5a/2012_05_05_01_world_creature_template.sql
new file mode 100644
index 00000000000..2eeaf2f40d2
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_05_01_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Set proper faction for Ymirjar Skycaller (Heroic)
+UPDATE `creature_template` SET `faction_A`=1885,`faction_H`=1885 WHERE `entry`=37643;
diff --git a/sql/old/3.3.5a/2012_05_05_02_world_gameobject.sql b/sql/old/3.3.5a/2012_05_05_02_world_gameobject.sql
new file mode 100644
index 00000000000..c0b2c6b147b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_05_02_world_gameobject.sql
@@ -0,0 +1,10 @@
+-- Add some missing Blood of Heroes spawns
+SET @GUID := 5276;
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @GUID AND @GUID+5;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(@GUID,176213,0,1,1,1529.10242,-1427.06946,65.49049,-3.001947,0,0,-0.9975634,0.06976615,7200,100,1),
+(@GUID+1,176213,0,1,1,1705.87439,-4690.138,48.9742165,-3.08918333,0,0,-0.9996567,0.02620165,7200,100,1),
+(@GUID+2,176213,0,1,1,1846.79382,-3825.265,135.5159,1.83259487,0,0,0.7933531,0.6087617,7200,100,1),
+(@GUID+3,176213,0,1,1,1748.16333,-4453.13525,74.26272,-2.0594883,0,0,0,0,7200,100,1),
+(@GUID+4,176213,0,1,1,2159.835,-2442.754,62.0804,-0.4886912,0,0,-0.2419214,0.9702958,7200,100,1),
+(@GUID+5,176213,0,1,1,1342.557,-1382.568,46.89193,2.775069,0,0,0.9832544,0.182238,7200,100,1);
diff --git a/sql/old/3.3.5a/2012_05_05_03_world_sai.sql b/sql/old/3.3.5a/2012_05_05_03_world_sai.sql
new file mode 100644
index 00000000000..fce3b5bc957
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_05_03_world_sai.sql
@@ -0,0 +1,17 @@
+-- Wrathbone Laborer SAI
+SET @ENTRY := 36830; -- NPC entry
+SET @SPELL1 := 70302; -- Blinding Dirt
+SET @SPELL2 := 70278; -- Puncture Wound (Normal)
+SET @SPELL3 := 70279; -- Puncture Wound (Heroic)
+SET @SPELL4 := 69572; -- Shovelled! (Normal)
+SET @SPELL5 := 70280; -- Shovelled! (Heroic)
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~256,`AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,6,7000,8000,10000,11000,11,@SPELL1,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Blinding Dirt'),
+(@ENTRY,0,1,0,0,0,100,2,8000,9000,9000,10000,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Puncture Wound (Normal)'),
+(@ENTRY,0,2,0,0,0,100,4,8000,9000,9000,10000,11,@SPELL3,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Puncture Wound (Heroic)'),
+(@ENTRY,0,3,0,0,0,100,2,5000,6000,7000,8000,11,@SPELL4,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Shovelled! (Normal)'),
+(@ENTRY,0,4,0,0,0,100,4,5000,6000,7000,8000,11,@SPELL5,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Shovelled! (Heroic)'),
+(@ENTRY,0,5,0,1,0,100,6,1000,3000,3000,3000,5,38,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Wrathbone Laborer - OOC - emote');
diff --git a/sql/old/3.3.5a/2012_05_05_04_world_creature_template.sql b/sql/old/3.3.5a/2012_05_05_04_world_creature_template.sql
new file mode 100644
index 00000000000..7c4f13dd667
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_05_04_world_creature_template.sql
@@ -0,0 +1,27 @@
+-- Fix InhabitType for Eye of the Lich King
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=36913;
+-- Updates From CDawg
+-- Wrathbone Laborer (heroic) - fix hostility and adds equipment
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~256,`equipment_id`=104 WHERE `entry`=37638;
+-- Wrathbone Siegesmith (Heroic) add equipment
+UPDATE `creature_template` SET `equipment_id`=122 WHERE `entry`=37639;
+-- Fallen Warrior add equipment
+UPDATE `creature_template` SET `equipment_id`=2328 WHERE `entry`=37612;
+-- Forgemaster Garfrost add equipment
+UPDATE `creature_template` SET `equipment_id`=2325 WHERE `entry`=37613;
+-- Deathwhisper Necrolyte add equipment
+UPDATE `creature_template` SET `equipment_id`=2365 WHERE `entry`=37609;
+-- Deathwhisper Shadowcaster - add equipment
+UPDATE `creature_template` SET `equipment_id`=2365 WHERE `entry`=38025;
+-- Alliance slaves add equipments
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37645;
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37646;
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37647;
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37648;
+-- horde slaves add equipments
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37649;
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37650;
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37651;
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=37652;
+-- Ymirjar Skycaller (heroic) - Fix unit flags and add equipment
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`|32832,`equipment_id`=2438 WHERE `entry`=37643;
diff --git a/sql/old/3.3.5a/2012_05_05_05_world_creature_template.sql b/sql/old/3.3.5a/2012_05_05_05_world_creature_template.sql
new file mode 100644
index 00000000000..a2f2a217252
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_05_05_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Fix skillup on some target dummys
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|262144 WHERE `entry` IN (31144,2674,2673);
diff --git a/sql/old/3.3.5a/2012_05_05_06_world_sai.sql b/sql/old/3.3.5a/2012_05_05_06_world_sai.sql
new file mode 100644
index 00000000000..7b064af4a4e
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_05_06_world_sai.sql
@@ -0,0 +1,13 @@
+-- Wrathbone Laborer SAI
+SET @ENTRY := 36830; -- NPC entry
+SET @SPELL1 := 70302; -- Blinding Dirt
+SET @SPELL2 := 70278; -- Puncture Wound
+SET @SPELL3 := 69572; -- Shovelled!
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~256,`AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,6,7000,8000,10000,11000,11,@SPELL1,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Blinding Dirt'),
+(@ENTRY,0,1,0,0,0,100,6,8000,9000,9000,10000,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Puncture Wound (Normal)'),
+(@ENTRY,0,2,0,0,0,100,6,5000,6000,7000,8000,11,@SPELL3,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Shovelled! (Normal)'),
+(@ENTRY,0,3,0,1,0,100,6,1000,3000,3000,3000,5,38,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Wrathbone Laborer - OOC - emote');
diff --git a/sql/old/3.3.5a/2012_05_06_00_world_creature_template.sql b/sql/old/3.3.5a/2012_05_06_00_world_creature_template.sql
new file mode 100644
index 00000000000..30dbf85c28d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_06_00_world_creature_template.sql
@@ -0,0 +1,5 @@
+-- Gold for Toc based on old.wowhead
+UPDATE `creature_template` SET `mingold`=850000,`maxgold`=950000 WHERE `entry` IN(34797,35447,35448,35449); -- Icehowl
+UPDATE `creature_template` SET `mingold`=550000,`maxgold`=650000 WHERE `entry` IN(34780,35216,35268,35269); -- Lord Jaraxxus
+UPDATE `creature_template` SET `mingold`=650000,`maxgold`=700000 WHERE `entry` IN(34497,35350,35351,35352,34496,35347,35348,35359); -- Fjola Lightbane & Eydis Darkbane
+UPDATE `creature_template` SET `mingold`=500000,`maxgold`=600000 WHERE `entry` IN(34564,34566,35615,35616); -- Anub'arak
diff --git a/sql/old/3.3.5a/2012_05_06_01_world_creature_template.sql b/sql/old/3.3.5a/2012_05_06_01_world_creature_template.sql
new file mode 100644
index 00000000000..fa0c9af5805
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_06_01_world_creature_template.sql
@@ -0,0 +1,11 @@
+-- Based on old.wowhead.com
+UPDATE `creature_template` SET `mingold`=1600000,`maxgold`=1800000 WHERE `entry` IN (33113,34003); -- Flame Levithian
+UPDATE `creature_template` SET `mingold`=1100000,`maxgold`=1300000 WHERE `entry` IN (33118,33190); -- Ignis the Furnace Master
+UPDATE `creature_template` SET `mingold`=280000,`maxgold`=360000 WHERE `entry` IN (33186,33724); -- Razorscale
+UPDATE `creature_template` SET `mingold`=670000,`maxgold`=750000 WHERE `entry` IN (33293,33885); -- XT-002 Deconstructor
+UPDATE `creature_template` SET `mingold`=1680000,`maxgold`=1900000 WHERE `entry` IN (32857,33694); -- Stormcaller Brundir
+UPDATE `creature_template` SET `mingold`=1680000,`maxgold`=1900000 WHERE `entry` IN (32927,33692); -- Runemaster Molgeim
+UPDATE `creature_template` SET `mingold`=1680000,`maxgold`=1900000 WHERE `entry` IN (32867,33693); -- Steelbreaker
+UPDATE `creature_template` SET `mingold`=1220000,`maxgold`=1500000 WHERE `entry` IN (33515,34175); -- Auriaya
+UPDATE `creature_template` SET `mingold`=1650000,`maxgold`=1950000 WHERE `entry` IN (33271,33449); -- General Vezax
+UPDATE `creature_template` SET `mingold`=2020000,`maxgold`=2220000 WHERE `entry` IN (33288,33955); -- Yogg-Saron
diff --git a/sql/old/3.3.5a/2012_05_07_00_world_waypoints.sql b/sql/old/3.3.5a/2012_05_07_00_world_waypoints.sql
new file mode 100644
index 00000000000..f24b7c9c254
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_07_00_world_waypoints.sql
@@ -0,0 +1,73 @@
+-- Wrathbone Siegesmith pathing
+SET @NPC := 202159;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=646.5851,`position_y`=-191.1892,`position_z`=526.8476 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,646.5851,-191.1892,526.8476,0,0,0,100,0),
+(@PATH,2,648.8837,-181.967,526.7226,0,0,0,100,0),
+(@PATH,3,649.4167,-179.4531,526.7226,14000,0,0,100,0),
+(@PATH,4,652.1736,-183.3594,526.7226,0,0,0,100,0),
+(@PATH,5,648.5643,-188.309,526.8476,0,0,0,100,0),
+(@PATH,6,642.5313,-193.4826,527.3874,0,0,0,100,0),
+(@PATH,7,633.688,-200.741,528.941,12000,0,0,100,0),
+(@PATH,8,641.9254,-196.5747,528.9726,0,0,0,100,0);
+
+-- Wrathbone Siegesmith pathing
+SET @NPC := 201855;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=723.5469,`position_y`=-170.9497,`position_z`=527.5121 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,723.5469,-170.9497,527.5121,13000,0,0,100,0),
+(@PATH,2,726.6484,-173.3438,527.1627,0,0,0,100,0),
+(@PATH,3,726.6484,-174.3438,527.1627,0,0,0,100,0),
+(@PATH,4,725.25,-175.2379,526.8134,0,0,0,100,0),
+(@PATH,5,722.0521,-181.5122,526.8134,0,0,0,100,0),
+(@PATH,6,721.2031,-187.8142,526.8134,0,0,0,100,0),
+(@PATH,7,717.7917,-194.4358,526.8134,0,0,0,100,0),
+(@PATH,8,719.3073,-202.2691,527.1509,0,0,0,100,0),
+(@PATH,9,720.3403,-206.1198,527.7932,12000,0,0,100,0),
+(@PATH,10,717.6111,-199.5035,526.9384,0,0,0,100,0),
+(@PATH,11,717.566,-189.0642,526.8134,0,0,0,100,0),
+(@PATH,12,718.5764,-182.3958,526.8134,0,0,0,100,0),
+(@PATH,13,719.9531,-176.0729,526.8134,0,0,0,100,0);
+
+-- Forgemaster Garfrost pathing
+SET @NPC := 201992;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=712.1371,`position_y`=-215.7014,`position_z`=527.066 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`auras`) VALUES (@NPC,@PATH,1,'68792');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,712.1371,-215.7014,527.066,0,0,0,100,0),
+(@PATH,2,719.507,-227.8559,527.066,3000,0,0,100,0),
+(@PATH,3,712.1371,-215.7014,527.066,0,0,0,100,0),
+(@PATH,4,685.1805,-207.349,526.8424,0,0,0,100,0),
+(@PATH,5,664.5191,-203.3472,526.816,0,0,0,100,0),
+(@PATH,6,645.033,-208.5295,528.941,0,0,0,100,0),
+(@PATH,7,653.0729,-194.3681,526.7226,0,0,0,100,0),
+(@PATH,8,664.8646,-195.2135,526.7226,0,0,0,100,0),
+(@PATH,9,686.0816,-213.8264,526.8424,0,0,0,100,0),
+(@PATH,10,697.9757,-221.6215,526.8424,0,0,0,100,0),
+(@PATH,11,708.0903,-211.908,527.066,0,0,0,100,0),
+(@PATH,12,717.8924,-204.6979,527.191,0,0,0,100,0),
+(@PATH,13,699.0504,-201.3438,526.8424,0,0,0,100,0),
+(@PATH,14,672.066,-201.1493,526.8424,0,0,0,100,0),
+(@PATH,15,655.9496,-203.4931,526.816,0,0,0,100,0),
+(@PATH,16,672.066,-201.1493,526.8424,0,0,0,100,0),
+(@PATH,17,699.0504,-201.3438,526.8424,0,0,0,100,0),
+(@PATH,18,717.8924,-204.6979,527.191,0,0,0,100,0),
+(@PATH,19,708.0903,-211.908,527.066,0,0,0,100,0),
+(@PATH,20,697.9757,-221.6215,526.8424,0,0,0,100,0),
+(@PATH,21,686.0816,-213.8264,526.8424,0,0,0,100,0),
+(@PATH,22,664.8646,-195.2135,526.7226,0,0,0,100,0),
+(@PATH,23,653.0729,-194.3681,526.7226,0,0,0,100,0),
+(@PATH,24,645.033,-208.5295,528.941,0,0,0,100,0),
+(@PATH,25,664.5191,-203.3472,526.816,0,0,0,100,0),
+(@PATH,26,685.1805,-207.349,526.8424,0,0,0,100,0);
diff --git a/sql/old/3.3.5a/2012_05_07_01_world_sai.sql b/sql/old/3.3.5a/2012_05_07_01_world_sai.sql
new file mode 100644
index 00000000000..83676d31df9
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_07_01_world_sai.sql
@@ -0,0 +1,51 @@
+-- Ymirjar Skycaller SAI addition
+SET @ENTRY := 31260; -- NPC entry
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY AND `id`=2;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,2,0,25,0,100,6,0,0,0,0,11,46598,0,0,0,0,0,19,36891,20,0,0,0,0,0, 'Ymirjar Skycaller - Reset - Cast Ride Vehicle Hardcoded');
+
+-- Wrathbone Laborer SAI
+SET @ENTRY := -201800; -- NPC entry
+SET @SPELL1 := 70302; -- Blinding Dirt
+SET @SPELL2 := 70278; -- Puncture Wound
+SET @SPELL3 := 69572; -- Shovelled!
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,6,7000,8000,10000,11000,11,@SPELL1,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Blinding Dirt'),
+(@ENTRY,0,1,0,0,0,100,6,8000,9000,9000,10000,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Puncture Wound (Normal)'),
+(@ENTRY,0,2,0,0,0,100,6,5000,6000,7000,8000,11,@SPELL3,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Wrathbone Laborer - Combat - Cast Shovelled! (Normal)');
+
+-- Wrathbone Laborer pathing
+SET @NPC := 201800;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=584.4202,`position_y`=188.9149,`position_z`=509.6726 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,584.4202,188.9149,509.6726,0,0,0,100,0),
+(@PATH,2,583.6736,193.9653,509.7404,3000,0,48,100,0),
+(@PATH,3,583.6736,193.9653,509.7404,3000,0,48,100,0),
+(@PATH,4,583.6736,193.9653,509.7404,3000,0,48,100,0),
+(@PATH,5,583.6736,193.9653,509.7404,3000,0,48,100,0),
+(@PATH,6,594.0781,190.2622,508.8613,0,0,0,100,0),
+(@PATH,7,604.9809,191.5451,507.6583,0,0,0,100,0),
+(@PATH,8,617.8438,191.3455,507.5206,0,0,0,100,0),
+(@PATH,9,633.1597,186.8281,508.6275,3000,0,48,100,0),
+(@PATH,10,633.1597,186.8281,508.6275,3000,0,48,100,0),
+(@PATH,11,624.3472,190.9705,507.7706,0,0,0,100,0),
+(@PATH,12,613.3229,189.9236,507.3956,0,0,0,100,0),
+(@PATH,13,604.5156,189.651,507.3956,0,0,0,100,0),
+(@PATH,14,593.9844,187.4479,508.9778,0,0,0,100,0),
+(@PATH,15,584.4202,188.9149,509.6726,0,0,0,100,0);
+DELETE FROM `waypoint_scripts` WHERE `id`=48;
+INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`guid`) VALUES
+(48,0,1,38,67);
+
+-- Add Overlord Drakuru riders to Stonespine Gargoyle
+UPDATE creature_template SET InhabitType=4,`flags_extra`=`flags_extra`|128 WHERE entry=28717;
+DELETE FROM `creature` WHERE `id`=28717 AND `map`=658;
+DELETE FROM `vehicle_template_accessory` WHERE `entry`=36896;
+INSERT INTO `vehicle_template_accessory` (`entry`,`accessory_entry`,`seat_id`,`minion`,`description`,`summontype`,`summontimer`) VALUES
+(36896,28717,1,0, 'Overlord Drakuru on Stonespine Gargoyle',6,30000);
diff --git a/sql/old/3.3.5a/2012_05_08_00_world_sai.sql b/sql/old/3.3.5a/2012_05_08_00_world_sai.sql
new file mode 100644
index 00000000000..8a776b5f2d2
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_08_00_world_sai.sql
@@ -0,0 +1,89 @@
+-- [Q] Arelion's Mistress
+-- Viera Sunwhisper SAI
+-- Twinkle SAI
+SET @ENTRY_VIERA := 17226;
+SET @ENTRY_TWINKLE := 17230;
+SET @QUEST_PLEASURES := 9483;
+SET @SPELL_RETRIBUTION := 30077;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@ENTRY_VIERA,@ENTRY_TWINKLE);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY_VIERA,@ENTRY_TWINKLE,@ENTRY_VIERA*100,@ENTRY_VIERA*100+1);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY_VIERA,0,0,0,20,0,100,0,@QUEST_PLEASURES,0,0,0,80,@ENTRY_VIERA*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Quest Finish - Run Script'),
+(@ENTRY_VIERA*100,9,0,0,0,0,100,0,0,0,0,0,81,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Viera Sunwhisper - On Script - Remove Quest Flag"),
+(@ENTRY_VIERA*100,9,1,0,0,0,100,0,2000,2000,0,0,53,0,@ENTRY_VIERA,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Start WP 1'),
+(@ENTRY_VIERA*100,9,2,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Say Line 0'),
+(@ENTRY_VIERA*100,9,3,0,0,0,100,0,0,0,0,0,91,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Stand Up'),
+(@ENTRY_VIERA*100,9,4,0,0,0,100,0,6500,6500,0,0,45,0,1,0,0,0,0,10,61963,@ENTRY_TWINKLE,0,0,0,0,0,'Viera Sunwhisper - On Script - Set Data 0 1 Twinkle'),
+(@ENTRY_VIERA,0,1,2,40,0,100,0,10,@ENTRY_VIERA,0,0,66,0,0,0,0,0,0,11,@ENTRY_TWINKLE,15,0,0,0,0,0,'Viera Sunwhisper - On WP 10 - Face Twinkle'),
+(@ENTRY_VIERA,0,2,0,61,0,100,0,0,0,0,0,54,1000000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On WP 10 - Pause WP'),
+
+(@ENTRY_TWINKLE,0,0,0,38,0,100,0,0,1,0,0,53,1,@ENTRY_TWINKLE,0,0,0,0,1,0,0,0,0,0,0,0,'Twinkle - On Data 0 1 Set - Start WP 1 (run)'),
+(@ENTRY_TWINKLE,0,1,0,40,0,100,0,13,@ENTRY_TWINKLE,0,0,54,1000000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Twinkle - On WP 13 - Pause WP'),
+(@ENTRY_TWINKLE,0,2,0,38,0,100,0,1,2,0,0,53,1,@ENTRY_TWINKLE*10,0,0,0,0,1,0,0,0,0,0,0,0,'Twinkle - On Data Set 1 2 - Start WP 2 (run)'),
+(@ENTRY_TWINKLE,0,3,0,40,0,100,0,4,@ENTRY_TWINKLE*10,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On WP 4 (2) - Force Despawn'),
+
+(@ENTRY_VIERA,0,3,0,8,0,100,0,@SPELL_RETRIBUTION,0,0,0,80,@ENTRY_VIERA*100+1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Spellhit - Run Second Script'),
+(@ENTRY_VIERA*100+1,9,0,0,0,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Say Line 1'),
+(@ENTRY_VIERA*100+1,9,1,0,0,0,100,0,0,0,0,0,33,@ENTRY_VIERA,0,0,0,0,0,7,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Quest Credit'),
+(@ENTRY_VIERA*100+1,9,2,0,0,0,100,0,3000,3000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Say Line 2'),
+(@ENTRY_VIERA*100+1,9,3,0,0,0,100,0,5000,5000,0,0,1,0,0,0,0,0,0,9,@ENTRY_TWINKLE,0,25,0,0,0,0,'Twinkle - On Script - Say Line 0'),
+(@ENTRY_VIERA*100+1,9,4,0,0,0,100,0,2000,2000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Say Line 3'),
+(@ENTRY_VIERA*100+1,9,5,0,0,0,100,0,0,0,0,0,45,1,2,0,0,0,0,10,61963,@ENTRY_TWINKLE,0,0,0,0,0,'Viera Sunwhisper - On Script - Set Data 1 2 Twinkle'),
+(@ENTRY_VIERA*100+1,9,6,0,0,0,100,0,0,0,0,0,53,1,@ENTRY_VIERA*10,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On Script - Start WP 2 (run)'),
+(@ENTRY_VIERA,0,4,0,40,0,100,0,4,@ENTRY_VIERA*10,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Viera Sunwhisper - On WP 4 (2) - Force Despawn');
+
+-- Waypoints for Viera Sunwhisper
+DELETE FROM `waypoints` WHERE `entry` IN (@ENTRY_VIERA,@ENTRY_VIERA*10);
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@ENTRY_VIERA,1,-653.739197,4145.138184,64.200729,'Viera Sunwhisper'),
+(@ENTRY_VIERA,2,-658.875732,4147.715332,64.168304,'Viera Sunwhisper'),
+(@ENTRY_VIERA,3,-681.465088,4147.636230,64.118073,'Viera Sunwhisper'),
+(@ENTRY_VIERA,4,-686.400696,4161.865234,59.707859,'Viera Sunwhisper'),
+(@ENTRY_VIERA,5,-695.956909,4179.237305,57.618931,'Viera Sunwhisper'),
+(@ENTRY_VIERA,6,-699.832153,4189.959473,57.503750,'Viera Sunwhisper'),
+(@ENTRY_VIERA,7,-708.518616,4184.436035,55.275894,'Viera Sunwhisper'),
+(@ENTRY_VIERA,8,-716.137268,4178.130371,52.637508,'Viera Sunwhisper'),
+(@ENTRY_VIERA,9,-719.865295,4174.992676,51.554867,'Viera Sunwhisper'),
+(@ENTRY_VIERA,10,-720.839417,4162.232422,50.805923,'Viera Sunwhisper'),
+
+(@ENTRY_VIERA*10,1,-722.323486,4147.936523,50.337898,'Viera Sunwhisper'),
+(@ENTRY_VIERA*10,2,-726.639343,4125.156250,48.479683,'Viera Sunwhisper'),
+(@ENTRY_VIERA*10,3,-727.648315,4109.684082,47.528461,'Viera Sunwhisper'),
+(@ENTRY_VIERA*10,4,-727.874329,4093.438721,46.446579,'Viera Sunwhisper');
+
+-- Waypoints for Twinkle
+DELETE FROM `waypoints` WHERE `entry` IN (@ENTRY_TWINKLE,@ENTRY_TWINKLE*10);
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@ENTRY_TWINKLE,1,-605.445190,4165.205078,64.081802,'Twinkle'),
+(@ENTRY_TWINKLE,2,-619.293335,4161.776855,63.217815,'Twinkle'),
+(@ENTRY_TWINKLE,3,-629.536560,4153.708984,64.067123,'Twinkle'),
+(@ENTRY_TWINKLE,4,-644.773438,4151.062988,64.174675,'Twinkle'),
+(@ENTRY_TWINKLE,5,-658.875732,4147.715332,64.168304,'Twinkle'),
+(@ENTRY_TWINKLE,6,-681.465088,4147.636230,64.118073,'Twinkle'),
+(@ENTRY_TWINKLE,7,-686.400696,4161.865234,59.707859,'Twinkle'),
+(@ENTRY_TWINKLE,8,-695.956909,4179.237305,57.618931,'Twinkle'),
+(@ENTRY_TWINKLE,9,-699.832153,4189.959473,57.503750,'Twinkle'),
+(@ENTRY_TWINKLE,10,-708.518616,4184.436035,55.275894,'Twinkle'),
+(@ENTRY_TWINKLE,11,-716.137268,4178.130371,52.637508,'Twinkle'),
+(@ENTRY_TWINKLE,12,-719.865295,4174.992676,51.554867,'Twinkle'),
+(@ENTRY_TWINKLE,13,-720.636292,4166.637695,50.815567,'Twinkle'),
+
+(@ENTRY_TWINKLE*10,1,-722.323486,4147.936523,50.337898,'Twinkle'),
+(@ENTRY_TWINKLE*10,2,-726.639343,4125.156250,48.479683,'Twinkle'),
+(@ENTRY_TWINKLE*10,3,-727.648315,4109.684082,47.528461,'Twinkle'),
+(@ENTRY_TWINKLE*10,4,-727.874329,4093.438721,46.446579,'Twinkle');
+
+-- Spawn spell focus object on correct position
+DELETE FROM `gameobject` WHERE `id`=300071 AND `guid`=303;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(303,300071,530,1,1,-720.803,4162.77,50.7916,4.61029,0,0,0.742267,-0.670104,300,0,1);
+
+-- Texts
+DELETE FROM `creature_text` WHERE `entry` IN (@ENTRY_VIERA,@ENTRY_TWINKLE);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY_VIERA,0,0,"Ok, let's go. I know just the perfect spot!",12,0,100,0,0,0,'Viera Sunwhisper'),
+(@ENTRY_VIERA,1,0,"I can't wait to try this wine!",12,0,100,0,0,0,'Viera Sunwhisper'),
+(@ENTRY_VIERA,2,0,"What... is happening... to me? Get this cat away from me!",12,0,100,0,0,0,'Viera Sunwhisper'),
+(@ENTRY_VIERA,3,0,"%s scurries away, attempting to flee from Twinkle",16,0,100,0,0,0,'Viera Sunwhisper'),
+
+(@ENTRY_TWINKLE,0,0,"%s looks at Viera Sunwhisper with very hungry eyes",16,0,100,0,0,0,'Twinkle');
diff --git a/sql/old/3.3.5a/2012_05_08_01_world_gameobject.sql b/sql/old/3.3.5a/2012_05_08_01_world_gameobject.sql
new file mode 100644
index 00000000000..b83d02b4762
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_08_01_world_gameobject.sql
@@ -0,0 +1,5 @@
+-- Add Missing Ice Wall, Pit of Saron
+SET @GUID := 305;
+DELETE FROM `gameobject` WHERE `guid`=@GUID;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(@GUID,201885,658,3,1,932.2674,-80.6684,591.6761,2.286379,0,0,0,0,300,100,1);
diff --git a/sql/old/3.3.5a/2012_05_08_01_world_misc.sql b/sql/old/3.3.5a/2012_05_08_01_world_misc.sql
new file mode 100644
index 00000000000..8f19132fa27
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_08_01_world_misc.sql
@@ -0,0 +1,9 @@
+-- Spell area spells for entering POS
+DELETE FROM `spell_area` WHERE `spell` IN (70056,70057);
+INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_start_active`,`quest_end`,`aura_spell`,`racemask`,`gender`,`autocast`) VALUES
+(70056,4904,0,0,0,0,690,2,1), -- Send Script Event (22717)
+(70057,4904,0,0,0,0,1101,2,1); -- Send Script Event (22718)
+
+-- Fix flags and equipment for Ymirjar Deathbringer
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~256 WHERE `entry` IN (36892,37641);
+UPDATE `creature_template` SET `equipment_id`=2444 WHERE `entry`=37641;
diff --git a/sql/old/3.3.5a/2012_05_09_00_world_spell_target_position.sql b/sql/old/3.3.5a/2012_05_09_00_world_spell_target_position.sql
new file mode 100644
index 00000000000..a6e9d7289b7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_09_00_world_spell_target_position.sql
@@ -0,0 +1,7 @@
+DELETE FROM `spell_target_position` WHERE `id` IN (67834, 68081);
+INSERT INTO `spell_target_position` (`id`,`target_map`,`target_position_x`,`target_position_y`,`target_position_z`,`target_orientation`) VALUES
+(67834, 571, 3167.01, 5586.04, 880.067, 0),
+(68081, 571, 5857.252, 516.8015, 599.82, 2.987);
+
+UPDATE `spell_target_position` SET `target_position_x`=6136.89,`target_position_y`=4785.55,`target_position_z`=100.673 WHERE `id`=67835;
+UPDATE `spell_target_position` SET `target_position_x`=8301.39,`target_position_y`=1501.34,`target_position_z`=870.555 WHERE `id`=67836;
diff --git a/sql/old/3.3.5a/2012_05_09_01_world_commands.sql b/sql/old/3.3.5a/2012_05_09_01_world_commands.sql
new file mode 100644
index 00000000000..dcd4c9130eb
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_09_01_world_commands.sql
@@ -0,0 +1,8 @@
+DELETE FROM `trinity_string` WHERE `entry` = 555;
+INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES
+(555,"SetData performed on [GUID: %u, entry: %u, name: %s] Field: %u, Data: %u, with %s");
+
+DELETE FROM `command` WHERE `name` = "npc set data";
+INSERT INTO `command` (`name`,`security`,`help`) VALUES
+("npc set data", 3, "Syntax: .npc set data $field $data
+Sets data for the selected creature. Used for testing Scripting");
diff --git a/sql/old/3.3.5a/2012_05_09_02_world_sai.sql b/sql/old/3.3.5a/2012_05_09_02_world_sai.sql
new file mode 100644
index 00000000000..01004b23505
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_09_02_world_sai.sql
@@ -0,0 +1,116 @@
+-- Fixup for Quest Quest:The Path to the Citadel "Alliance and Horde"
+
+-- Alliance slave add missing equipments
+UPDATE `creature_template` SET `equipment_id`=254 WHERE `entry`=36767;
+
+-- Horde Slave SAI
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry` IN (36770,36771,36772,36773);
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid` IN (36770,36771,36772,36773);
+DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid` IN (3677000);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(36770,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Reset - Emotestate'),
+(36771,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Reset - Emotestate'),
+(36772,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Reset - Emotestate'),
+(36773,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Reset - Emotestate'),
+(36770,0,1,0,8,0,100,7,71281,0,0,0,80,3677000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Spellhit - Run Script'),
+(36771,0,1,0,8,0,100,7,71281,0,0,0,80,3677000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Spellhit - Run Script'),
+(36772,0,1,0,8,0,100,7,71281,0,0,0,80,3677000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Spellhit - Run Script'),
+(36773,0,1,0,8,0,100,7,71281,0,0,0,80,3677000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - On Spellhit - Run Script'),
+-- Script
+(3677000,9,0,0,0,0,100,0,500,500,500,500,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Horde Slave - Script - Turnto envoker'),
+(3677000,9,1,0,0,0,100,0,500,500,500,500,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - Script - say text'),
+(3677000,9,2,0,0,0,100,0,100,100,100,100,18,512,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - Script - set unitflag'),
+(3677000,9,3,0,0,0,100,0,100,100,100,100,2,250,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - Script - set faction'),
+(3677000,9,4,0,0,0,100,0,100,100,100,100,17,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - Script - set Emotestate'),
+(3677000,9,5,0,0,0,100,0,100,100,100,100,33,36770,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Horde Slave - Script - give quest credit'),
+(3677000,9,6,0,0,0,100,0,100,100,100,100,59,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - Script - set run on'),
+(3677000,9,7,0,0,0,100,0,500,500,500,500,69,1,0,0,0,0,0,19,23837,70,0,0,0,0,0, 'Horde Slave - Script - move to closest trigger'),
+(3677000,9,8,0,0,0,100,0,8000,8000,8000,8000,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Horde Slave - Script - despawn');
+
+-- Alliance Slave SAI
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry` IN (36764,36765,36766,36767);
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid` IN (36764,36765,36766,36767);
+DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid` IN (3676400);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(36764,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Reset - Emotestate'),
+(36765,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Reset - Emotestate'),
+(36766,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Reset - Emotestate'),
+(36767,0,0,0,11,0,100,6,0,0,0,0,17,233,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Reset - Emotestate'),
+(36764,0,1,0,8,0,100,7,71281,0,0,0,80,3676400,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Spellhit - Run Script'),
+(36765,0,1,0,8,0,100,7,71281,0,0,0,80,3676400,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Spellhit - Run Script'),
+(36766,0,1,0,8,0,100,7,71281,0,0,0,80,3676400,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Spellhit - Run Script'),
+(36767,0,1,0,8,0,100,7,71281,0,0,0,80,3676400,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - On Spellhit - Run Script'),
+-- Script
+(3676400,9,0,0,0,0,100,0,500,500,500,500,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Alliance Slave - Script - Turnto envoker'),
+(3676400,9,1,0,0,0,100,0,500,500,500,500,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - Script - say text'),
+(3676400,9,2,0,0,0,100,0,100,100,100,100,18,512,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - Script - set unitflag'),
+(3676400,9,3,0,0,0,100,0,100,100,100,100,2,250,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - Script - set faction'),
+(3676400,9,4,0,0,0,100,0,100,100,100,100,17,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - Script - set Emotestate'),
+(3676400,9,5,0,0,0,100,0,100,100,100,100,33,36764,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Alliance Slave - Script - give quest credit'),
+(3676400,9,6,0,0,0,100,0,100,100,100,100,59,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - Script - set run on'),
+(3676400,9,7,0,0,0,100,0,500,500,500,500,69,1,0,0,0,0,0,19,23837,70,0,0,0,0,0, 'Alliance Slave - Script - move to closest trigger'),
+(3676400,9,8,0,0,0,100,0,8000,8000,8000,8000,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Alliance Slave - Script - despawn');
+
+-- Ball and chain SAI
+UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry` IN (201969);
+DELETE FROM `smart_scripts` WHERE `source_type`=1 AND `entryorguid` IN (201969);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(201969,1,0,0,64,0,100,6,0,0,0,0,85,71281,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Ball and chain - On Gossip Hello - Envoker cast on self');
+
+-- Spell Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=71281;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,71281,0,31,3,36770,0,0,'','Spell 71281 targets entry 36770'),
+(13,1,71281,1,31,3,36771,0,0,'','Spell 71281 targets entry 36771'),
+(13,1,71281,2,31,3,36772,0,0,'','Spell 71281 targets entry 36772'),
+(13,1,71281,3,31,3,36773,0,0,'','Spell 71281 targets entry 36773'),
+(13,1,71281,4,31,3,36764,0,0,'','Spell 71281 targets entry 36764'),
+(13,1,71281,5,31,3,36765,0,0,'','Spell 71281 targets entry 36765'),
+(13,1,71281,6,31,3,36766,0,0,'','Spell 71281 targets entry 36766'),
+(13,1,71281,7,31,3,36767,0,0,'','Spell 71281 targets entry 36767');
+
+-- Creature text from sniff
+DELETE FROM `creature_text` WHERE `entry` IN (36770,36771,36772,36773,36764,36765,36766,36767);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+-- Alliance Slaves
+(36764,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Alliance Slave'),
+(36764,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Alliance Slave'),
+(36764,0,2, 'Have my babies.',12,0,100,0,0,0, 'Alliance Slave'),
+(36764,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Alliance Slave'),
+(36764,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Alliance Slave'),
+(36765,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Alliance Slave'),
+(36765,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Alliance Slave'),
+(36765,0,2, 'Have my babies.',12,0,100,0,0,0, 'Alliance Slave'),
+(36765,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Alliance Slave'),
+(36765,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Alliance Slave'),
+(36766,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Alliance Slave'),
+(36766,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Alliance Slave'),
+(36766,0,2, 'Have my babies.',12,0,100,0,0,0, 'Alliance Slave'),
+(36766,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Alliance Slave'),
+(36766,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Alliance Slave'),
+(36767,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Alliance Slave'),
+(36767,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Alliance Slave'),
+(36767,0,2, 'Have my babies.',12,0,100,0,0,0, 'Alliance Slave'),
+(36767,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Alliance Slave'),
+(36767,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Alliance Slave'),
+-- Horde Slaves
+(36770,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Horde Slave'),
+(36770,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Horde Slave'),
+(36770,0,2, 'Have my babies.',12,0,100,0,0,0, 'Horde Slave'),
+(36770,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Horde Slave'),
+(36770,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Horde Slave'),
+(36771,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Horde Slave'),
+(36771,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Horde Slave'),
+(36771,0,2, 'Have my babies.',12,0,100,0,0,0, 'Horde Slave'),
+(36771,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Horde Slave'),
+(36771,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Horde Slave'),
+(36772,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Horde Slave'),
+(36772,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Horde Slave'),
+(36772,0,2, 'Have my babies.',12,0,100,0,0,0, 'Horde Slave'),
+(36772,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Horde Slave'),
+(36772,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Horde Slave'),
+(36773,0,0, 'You''re a beautiful sight... you have no idea.',12,0,100,0,0,0, 'Horde Slave'),
+(36773,0,1, '%s lets his mining pick drag on the ground as she approaches, clearly exhausted.',16,0,100,0,0,0, 'Horde Slave'),
+(36773,0,2, 'Have my babies.',12,0,100,0,0,0, 'Horde Slave'),
+(36773,0,3, 'If by life or death I can repay you, I will.',12,0,100,0,0,0, 'Horde Slave'),
+(36773,0,4, 'I''m going to return to the front of the quarry. Kill a few extra for me.',12,0,100,0,0,0, 'Horde Slave');
diff --git a/sql/old/3.3.5a/2012_05_09_03_world_misc.sql b/sql/old/3.3.5a/2012_05_09_03_world_misc.sql
new file mode 100644
index 00000000000..63e162fcfce
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_09_03_world_misc.sql
@@ -0,0 +1,56 @@
+-- Update Scourgelord Tyrannus "Make him fly"
+UPDATE `creature_template_addon` SET `bytes1`=50331648 WHERE `entry`=36794;
+
+-- Put Rimefang in the air and make him fly
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=36661;
+UPDATE `creature_template_addon` SET `bytes1`=50331648 WHERE `entry`=36661;
+
+-- Deathwhisper Necrolyte SAI
+SET @ENTRY := 36788; -- NPC entry
+SET @SPELL1 := 69577; -- Shadow Bolt
+SET @SPELL2 := 69578; -- Conversion Beam
+SET @SPELL3 := 45104; -- Shadow Channelling
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,6,100,100,3000,3000,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Deathwhisper Necrolyte - Combat - Cast Shadow Bolt'),
+(@ENTRY,0,1,0,0,0,100,6,9000,9000,24000,24000,11,@SPELL2,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Deathwhisper Necrolyte - Combat - Cast Conversion Beam');
+
+-- Deathwhisper Necrolyte pathing
+SET @NPC := 202231;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=592.975,`position_y`=176.104,`position_z`=508.746 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,596.0208,175.5243,508.3654,0,0,0,100,0),
+(@PATH,2,605.2656,157.7101,507.2126,0,0,0,100,0),
+(@PATH,3,604.4063,146.283,507.3376,0,0,0,100,0),
+(@PATH,4,592.2899,131.4271,507.8163,0,0,0,100,0),
+(@PATH,5,577.4531,118.224,508.3163,0,0,0,100,0),
+(@PATH,6,563.0695,103.7309,514.1504,0,0,0,100,0),
+(@PATH,7,557.7743,89.41319,523.1727,0,0,0,100,0),
+(@PATH,8,560.9583,77.65278,525.4227,0,0,0,100,0),
+(@PATH,9,560.9583,77.65278,525.4227,0,0,0,100,0),
+(@PATH,10,571.0139,69.43403,525.2753,0,0,0,100,0),
+(@PATH,11,560.9583,77.65278,525.4227,0,0,0,100,0),
+(@PATH,12,557.7743,89.41319,523.1727,0,0,0,100,0),
+(@PATH,13,563.0695,103.7309,514.1504,0,0,0,100,0),
+(@PATH,14,577.4531,118.224,508.3163,0,0,0,100,0),
+(@PATH,15,592.2899,131.4271,507.8163,0,0,0,100,0),
+(@PATH,16,604.4063,146.283,507.3376,0,0,0,100,0),
+(@PATH,17,605.2656,157.7101,507.2126,0,0,0,100,0),
+(@PATH,18,596.0208,175.5243,508.3654,0,0,0,100,0);
+
+DELETE FROM `creature_formations` WHERE `leaderGUID`=202231;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(202231,202231,0,0,2),
+(202231,202099,7,288,2),
+(202231,202282,7,324,2),
+(202231,202125,7,360,2),
+(202231,202203,7,36,2),
+(202231,201960,7,72,2);
+
+-- Remove a dupe spawn
+DELETE FROM `creature` WHERE `guid`=201998;
+DELETE FROM `creature_addon` WHERE `guid`=201998;
diff --git a/sql/old/3.3.5a/2012_05_10_00_world_sai.sql b/sql/old/3.3.5a/2012_05_10_00_world_sai.sql
new file mode 100644
index 00000000000..c6d6e914345
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_10_00_world_sai.sql
@@ -0,0 +1,42 @@
+-- [Q] See You on the Other Side
+
+-- Gan'jo SAI
+SET @ENTRY := 26924;
+SET @QUEST := 12121;
+SET @GOSSIP := 10220;
+SET @SPELL_RESURRECT := 61613;
+UPDATE `creature_template` SET `npcflag`=3,`AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,62,0,100,0,@GOSSIP,0,0,0,11,@SPELL_RESURRECT,1,0,0,0,0,7,0,0,0,0,0,0,0,"Gan'jo - On Gossip Select - Cast Ganjo Resurrection"),
+(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Gan'jo - On Gossip Select - Close Gossip");
+
+-- Essence of Warlord Jin'arrak SAI
+SET @ENTRY := 26902;
+SET @SPELL_DIE_EFFECT := 61611;
+SET @SPELL_CAMERA_SHAKE := 47533;
+UPDATE `creature_template` SET `AIName`='SmartAI',`flags_extra`=128 WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY,@ENTRY*100) AND `source_type` IN (0,9);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,54,0,100,0,0,0,0,0,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0,"Essence of Warlord Jin'arrak - On Just Summoned - Run Script"),
+(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,85,@SPELL_CAMERA_SHAKE,0,0,0,0,0,7,0,0,0,0,0,0,0,"Essence of Warlord Jin'arrak - On Script - Invoker Cast Camera Shake - Small"),
+(@ENTRY*100,9,1,0,0,0,100,0,4000,4000,0,0,33,@ENTRY,0,0,0,0,0,7,0,0,0,0,0,0,0,"Essence of Warlord Jin'arrak - On Script - Killed Monster Credit"),
+(@ENTRY*100,9,2,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Essence of Warlord Jin'arrak - On Script - Monster Whisper Line 0"),
+(@ENTRY*100,9,3,0,0,0,100,0,0,0,0,0,85,@SPELL_CAMERA_SHAKE,0,0,0,0,0,7,0,0,0,0,0,0,0,"Essence of Warlord Jin'arrak - On Script - Invoker Cast Camera Shake - Small"),
+(@ENTRY*100,9,4,0,0,0,100,0,3000,3000,0,0,85,@SPELL_DIE_EFFECT,0,0,0,0,0,7,0,0,0,0,0,0,0,"Essence of Warlord Jin'arrak - On Script - Invoker Cast On The Other Side");
+
+-- Essence of Warlord Jin'arrak text
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0,"How dare you summon me without an offering!",42,0,0,0,0,0,"Essence of Warlord Jin'arrak");
+
+-- Ganjo's Resurrection removes On The Other Side
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=@SPELL_RESURRECT;
+INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES
+(@SPELL_RESURRECT,-@SPELL_DIE_EFFECT,1,"Ganjo's Resurrection removes On The Other Side");
+
+-- Conditions for Gan'jo's gossip option
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTarget`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`comment`) VALUES
+(15,@GOSSIP,0,0,0,1,@SPELL_DIE_EFFECT,0,"Ganjo's Gossip - requires aura See You On The Other Side"),
+(15,@GOSSIP,0,0,1,9,@QUEST,0,"Ganjo's Gossip - requires quest See You On The Other Side to be rewarded");
diff --git a/sql/old/3.3.5a/2012_05_10_01_world_misc.sql b/sql/old/3.3.5a/2012_05_10_01_world_misc.sql
new file mode 100644
index 00000000000..a7a30d518a2
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_10_01_world_misc.sql
@@ -0,0 +1,37 @@
+-- [Q] Leave Nothing to Chance
+
+-- Lower Wintergarde Mine Shaft and Upper Wintergarde Mine Shaft
+UPDATE `creature_template` SET `MovementType`=0,`flags_extra`=`flags_extra`|128 WHERE `entry`IN (27437,27436);
+UPDATE `creature` SET `MovementType`=0,`spawndist`=0 WHERE `id` IN (27437,27436);
+
+-- Wintergarde Mine Bomb SAI
+SET @ENTRY := 27435;
+SET @SPELL_EXPLOSION := 48742;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,1,0,100,1,14000,14000,0,0,11,@SPELL_EXPLOSION,2,0,0,0,0,1,0,0,0,0,0,0,0,"Wintergarde Mine Bomb - Out of Combat - Cast Wintergarde Mine Explosion"),
+(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,41,3000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Wintergarde Mine Bomb - On Wintergarde Mine Explosion Cast - Forced Despawn");
+
+-- Spawn missing spell focus object for upper mine
+DELETE FROM `gameobject` WHERE `id`=188711 AND `guid`=370;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(370,188711,571,1,1,3898.18,-881.748,119.533,0.421023,0,0,0.20896,0.977924,300,0,1);
+
+-- Spawn missing Upper Wintergarde Mine Shaft
+DELETE FROM `creature` WHERE `id`=27436 AND `guid`=42576;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(42576,27436,571,1,1,0,0,3899.86,-883.613,119.536,0.0636665,300,0,0,42,0,0,0,0,0);
+
+-- Spellscriptname
+DELETE FROM `spell_script_names` WHERE `spell_id`=@SPELL_EXPLOSION;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(@SPELL_EXPLOSION,'spell_q12277_wintergarde_mine_explosion');
+
+-- The conditions will make it works exactly like it should. Thanks a lot Josh.
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=@SPELL_EXPLOSION;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,@SPELL_EXPLOSION,0,31,3,27437,0,0,'',"Wintergarde Mine Explosion - Lower Wintergarde Mine Shaft"), -- Effect 0 - SPELL_EFFECT_DUMMY
+(13,1,@SPELL_EXPLOSION,1,31,3,27436,0,0,'',"Wintergarde Mine Explosion - Upper Wintergarde Mine Shaft"), -- Effect 0 - SPELL_EFFECT_DUMMY
+(13,2,@SPELL_EXPLOSION,0,31,4,0,0,0,'',"Wintergarde Mine Explosion - Targets Players"), -- Effect 1 - SPELL_EFFECT_KNOCK_BACK
+(13,4,@SPELL_EXPLOSION,0,31,5,188712,0,0,'',"Wintergarde Mine Explosion - Wintergarde Mine Cave In (2)"); -- Effect 2 - SPELL_EFFECT_ACTIVATE_OBJECT
diff --git a/sql/old/3.3.5a/2012_05_10_02_world_creature_template.sql b/sql/old/3.3.5a/2012_05_10_02_world_creature_template.sql
new file mode 100644
index 00000000000..28893f24fdf
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_10_02_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- fix creauture_template loot id for infinite corruptor. could have sworn this was already in the db.
+UPDATE `creature_template` SET `lootid` = 0 WHERE `entry` IN (32313,32273);
diff --git a/sql/old/3.3.5a/2012_05_10_03_world_misc.sql b/sql/old/3.3.5a/2012_05_10_03_world_misc.sql
new file mode 100644
index 00000000000..339f52ac0bb
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_10_03_world_misc.sql
@@ -0,0 +1,129 @@
+ -- Remove obsolete requirement 'cooking profession' from quest 'Beer Basted Boar Ribs' (thx tifkat) closes #5198
+UPDATE `quest_template` SET `RequiredSkillId`=0, `RequiredSkillPoints`=0 WHERE `Id`=384;
+
+-- Fix proc for Death's Verdict/Choice (author: kandera) closes #6041
+UPDATE `spell_proc_event` SET `procFlags` = 0, `procEx` = `procEx`|262144 WHERE `entry` in (67702, 67771);
+
+-- Disables quest "Desperate Research" for all factions author trista closes #5285
+DELETE FROM `disables` WHERE `sourceType` = 1 AND `entry` in (12782,12783,12811,12784,12752,12775,12777,12753,12808,12772);
+INSERT INTO `disables` (`sourceType`,`entry`,`flags`,`params_0`,`params_1`,`comment`) VALUES
+(1,12782,0,0,0,'Disable quest from Scourge Invasion for Blood Elves'),
+(1,12783,0,0,0,'Disable quest from Scourge Invasion for Orcs'),
+(1,12811,0,0,0,'Disable quest from Scourge Invasion for Trolls'),
+(1,12784,0,0,0,'Disable quest from Scourge Invasion for Tauren'),
+(1,12752,0,0,0,'Disable quest from Scourge Invasion for undead'),
+(1,12775,0,0,0,'Disable quest from Scourge Invasion for Human'),
+(1,12777,0,0,0,'Disable quest from Scourge Invasion for Draenei'),
+(1,12753,0,0,0,'Disable quest from Scourge Invasion for Dwarves'),
+(1,12808,0,0,0,'Disable quest from Scourge Invasion for Gnomes'),
+(1,12772,0,0,0,'Disable quest from Scourge Invasion for Night Elves');
+-- Disables scourge invasion connected quests listed below
+DELETE FROM `disables` WHERE `sourceType` = 1 AND `entry` in (12788,12812,12785,12786,12787,12774,12776,12771,12809,12773);
+INSERT INTO `disables` (`sourceType`,`entry`,`flags`,`params_0`,`params_1`,`comment`) VALUES
+(1,12788,0,0,0,'Disable quest from Scourge Invasion for Blood Elves'),
+(1,12812,0,0,0,'Disable quest from Scourge Invasion for Orcs'),
+(1,12785,0,0,0,'Disable quest from Scourge Invasion for Trolls'),
+(1,12786,0,0,0,'Disable quest from Scourge Invasion for Tauren'),
+(1,12787,0,0,0,'Disable quest from Scourge Invasion for undead'),
+(1,12774,0,0,0,'Disable quest from Scourge Invasion for Human'),
+(1,12776,0,0,0,'Disable quest from Scourge Invasion for Draenei'),
+(1,12771,0,0,0,'Disable quest from Scourge Invasion for Dwarves'),
+(1,12809,0,0,0,'Disable quest from Scourge Invasion for Gnomes'),
+(1,12773,0,0,0,'Disable quest from Scourge Invasion for Night Elves');
+
+-- Limit Bloodgem Shard use to Netherstorm Cristal Target author: nelegalno closes #4165
+DELETE FROM `conditions` WHERE (`SourceEntry`=34367 AND `SourceTypeOrReferenceId`=17 AND `ConditionTypeOrReference`=29);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(17,0,34367,0,29,19421,15,0,64,'','Limit Bloodgem Shard use to Netherstorm Cristal Target');
+
+-- Path of xx and A Change of Heart (Ashen Band rings) author: studioworks closes #2544
+UPDATE `quest_template` SET `PrevQuestId`=0 WHERE `id` IN
+(24827,24834,24835,24823,24828,24829,25239,25240,25242,24826,24832,24833,24825,24830,24831,24819,24820,24821,24822,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,25246,25247,25248,25249);
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry` IN
+-- Paths
+(24827,24834,24835,24823,24828,24829,25239,25240,25242,24826,24832,24833,24825,24830,24831,
+-- A Change of Heart
+24819,24820,24821,24822,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,25246,25247,25248,25249);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`Comment`) VALUES
+-- Path of Courage
+(19,0,24827,0,2,50375,1,0,'Path of Courage 1'),
+(19,0,24834,0,2,50388,1,0,'Path of Courage 2'),
+(19,0,24835,0,2,50403,1,0,'Path of Courage 3'),
+-- Path of Destruction
+(19,0,24823,0,2,50384,1,0,'Path of Destruction 1'),
+(19,0,24828,0,2,50377,1,0,'Path of Destruction 2'),
+(19,0,24829,0,2,50397,1,0,'Path of Destruction 3'),
+-- Path of Might
+(19,0,25239,0,2,52569,1,0,'Path of Might 1'),
+(19,0,25240,0,2,52570,1,0,'Path of Might 2'),
+(19,0,25242,0,2,52571,1,0,'Path of Might 3'),
+-- Path of Vengeance
+(19,0,24826,0,2,50376,1,0,'Path of Vengeance 1'),
+(19,0,24832,0,2,50387,1,0,'Path of Vengeance 2'),
+(19,0,24833,0,2,50401,1,0,'Path of Vengeance 3'),
+-- Path of Wisdom
+(19,0,24825,0,2,50378,1,0,'Path of Wisdom 1'),
+(19,0,24830,0,2,50386,1,0,'Path of Wisdom 2'),
+(19,0,24831,0,2,50399,1,0,'Path of Wisdom 3'),
+-- A Change of Heart
+(19,0,24819,0,2,50377,1,0,'A Change of Heart'),
+(19,0,24820,0,2,50376,1,0,'A Change of Heart'),
+(19,0,24821,0,2,50375,1,0,'A Change of Heart'),
+(19,0,24822,0,2,50378,1,0,'A Change of Heart'),
+(19,0,24836,0,2,50384,1,0,'A Change of Heart'),
+(19,0,24837,0,2,50386,1,0,'A Change of Heart'),
+(19,0,24838,0,2,50387,1,0,'A Change of Heart'),
+(19,0,24839,0,2,50388,1,0,'A Change of Heart'),
+(19,0,24840,0,2,50397,1,0,'A Change of Heart'),
+(19,0,24841,0,2,50399,1,0,'A Change of Heart'),
+(19,0,24842,0,2,50401,1,0,'A Change of Heart'),
+(19,0,24843,0,2,50403,1,0,'A Change of Heart'),
+(19,0,24844,0,2,50398,1,0,'A Change of Heart'),
+(19,0,24845,0,2,50400,1,0,'A Change of Heart'),
+(19,0,24846,0,2,50402,1,0,'A Change of Heart'),
+(19,0,24847,0,2,50404,1,0,'A Change of Heart'),
+(19,0,25246,0,2,52572,1,0,'A Change of Heart'),
+(19,0,25247,0,2,52569,1,0,'A Change of Heart'),
+(19,0,25248,0,2,52570,1,0,'A Change of Heart'),
+(19,0,25249,0,2,52571,1,0,'A Change of Heart');
+
+-- spawn farmer torp author: zxbiohazardzx closes #6256
+SET @guid := 42652;
+DELETE FROM `creature` WHERE `guid`=@guid;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`)
+VALUES
+(@guid,25607,571,1,1,2886.325,6385.55,92.96985,1.4512,120); -- Farmer Torp
+
+-- Disgusting Oozeling aura author: gecko32 closes #6197
+UPDATE `creature_template_addon` SET `auras`='25163' WHERE `entry`=15429;
+-- Mr. Chilly
+-- Add aura chilly for Periodic slide
+DELETE FROM `creature_template_addon` WHERE `entry`=29726;
+INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(29726, 0, 0, 0, 0, 0, '61811');
+
+-- Update to Change to $n in page text author: gecko32 closes #5930
+UPDATE `page_text` SET `text`='This proof of deed is to verify that $n slew Margol the Rager, scourge of the searing gorge.$B$BThe Ironforge museum recognizes this achievement and thanks the bearer for their generous contribution.$B$B-Head Curator Thorius Stonetender' WHERE `entry`=1231;
+
+-- Update frost shock and you to only be for shamans. author: whit33r closes #4727
+UPDATE `quest_template` SET `RequiredClasses`=64 WHERE `id` = 7505;
+
+-- fixes ashen band of destruction proc author: kandera
+DELETE FROM `spell_proc_event` WHERE `entry` = 72417;
+INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(72417,0,0,0,0,0,327680,0,0,0,60);
+
+-- fixes quest credit from Fel reaver no thanks! author: tREAk & shlomi1515 closes #3715
+UPDATE `spell_dbc` SET `Effect1`=16,`EffectMiscValue1`=10855 WHERE `id`=38758;
+DELETE FROM `creature_ai_scripts` WHERE creature_id=22293;
+
+-- fix areatrigger for wickerman camp author: boomper closes #3549
+DELETE FROM `areatrigger_involvedrelation` WHERE `id` =3991;
+INSERT INTO `areatrigger_involvedrelation` (`id`, `quest`)
+VALUES (3991,1658);
+
+-- yous have da darkrune should be daily author: kaelima closes #3457
+UPDATE `quest_template` SET `SpecialFlags` = `SpecialFlags` | 1 WHERE `id` = 11027;
+
+-- fix infinite corruptor loot id author: vincent-michael
+UPDATE `creature_template` SET `lootid` = 32313 WHERE `entry` =32313;
diff --git a/sql/old/3.3.5a/2012_05_10_04_world_ceature_sai.sql b/sql/old/3.3.5a/2012_05_10_04_world_ceature_sai.sql
new file mode 100644
index 00000000000..5f01e951c4b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_10_04_world_ceature_sai.sql
@@ -0,0 +1,14 @@
+-- Spawn Disturbed Glacial Revenant
+DELETE FROM `creature` WHERE `guid`=201998;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`, `position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(201998,36874,658,2,1,0,0,1053.894,-93.05556,632.8575,4.223697,86400,0,0,1,0,0,0,0,0);
+DELETE FROM `creature_addon` WHERE `guid`=201998;
+INSERT INTO `creature_addon` (`guid`,`bytes2`) VALUES
+(201998,1);
+
+-- Disturbed Glacial Revenant SAI
+SET @ENTRY := 36874; -- NPC entry
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,4,0,0,12000,15000,11,55216,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Disturbed Glacial Revenant - Combat - Cast Avalanche');
diff --git a/sql/old/3.3.5a/2012_05_10_05_world_waypoints.sql b/sql/old/3.3.5a/2012_05_10_05_world_waypoints.sql
new file mode 100644
index 00000000000..1677d74c4a7
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_10_05_world_waypoints.sql
@@ -0,0 +1,88 @@
+-- Deathwhisper Necrolyte pathing
+SET @NPC := 202103;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,555.3976,303.5347,507.6232,0,0,0,100,0),
+(@PATH,2,568.4896,297.9913,506.9572,0,0,0,100,0),
+(@PATH,3,586.1476,292.5486,506.3322,0,0,0,100,0),
+(@PATH,4,598.5833,292.6007,506.3322,0,0,0,100,0),
+(@PATH,5,602.3438,300.2135,506.9457,0,0,0,100,0),
+(@PATH,6,603.0573,307.5399,507.6957,0,0,0,100,0),
+(@PATH,7,611.7239,316.1129,508.4457,0,0,0,100,0),
+(@PATH,8,620.0677,312.684,508.1957,0,0,0,100,0),
+(@PATH,9,622.184,305.0868,508.3207,0,0,0,100,0),
+(@PATH,10,616.684,295.2083,507.8819,0,0,0,100,0),
+(@PATH,11,613.9236,287.4288,507.0737,0,0,0,100,0),
+(@PATH,12,618.5174,272.882,507.6097,0,0,0,100,0),
+(@PATH,13,621.4445,263.4861,507.9438,0,0,0,100,0),
+(@PATH,14,618.5174,272.882,507.6097,0,0,0,100,0),
+(@PATH,15,613.9236,287.4288,507.0737,0,0,0,100,0),
+(@PATH,16,616.684,295.2083,507.8819,0,0,0,100,0),
+(@PATH,17,622.184,305.0868,508.3207,0,0,0,100,0),
+(@PATH,18,620.0677,312.684,508.1,0,0,0,100,0),
+(@PATH,19,611.7239,316.1129,508.4457,0,0,0,100,0),
+(@PATH,20,603.0573,307.5399,507.6629,0,0,0,100,0),
+(@PATH,21,602.3438,300.2135,506.8405,0,0,0,100,0),
+(@PATH,22,598.5833,292.6007,506.3498,0,0,0,100,0),
+(@PATH,23,586.1476,292.5486,506.3322,0,0,0,100,0),
+(@PATH,24,568.4896,297.9913,506.9572,0,0,0,100,0);
+DELETE FROM `creature_formations` WHERE `leaderGUID`=@NPC;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(@NPC,@NPC,0,0,2),
+(@NPC,201819,7,270,2),
+(@NPC,201934,7,306,2),
+(@NPC,202121,7,342,2),
+(@NPC,202196,7,18,2),
+(@NPC,202098,7,54,2),
+(@NPC,201954,7,90,2);
+
+-- Deathwhisper Necrolyte pathing
+SET @NPC := 202273;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+UPDATE `creature` SET `position_x`=611.9375,`position_y`=117.441,`position_z`=508.0308 WHERE `guid` IN (202273,202054,201845,201914,202145,202227,201988);
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,611.9375,117.441,508.0308,0,0,0,100,0),
+(@PATH,2,620.9531,139.3004,506.531,0,0,0,100,0),
+(@PATH,3,624.3854,153.9531,507.3376,0,0,0,100,0),
+(@PATH,4,625.8316,167.6233,507.4478,0,0,0,100,0),
+(@PATH,5,622.8368,183.6788,507.7706,0,0,0,100,0),
+(@PATH,6,625.8316,167.6233,507.4478,0,0,0,100,0),
+(@PATH,7,624.3854,153.9531,507.3376,0,0,0,100,0),
+(@PATH,8,620.9531,139.3004,506.531,0,0,0,100,0),
+(@PATH,9,611.9375,117.441,508.0308,0,0,0,100,0),
+(@PATH,10,610.8828,99.47656,510.0737,0,0,0,100,0);
+DELETE FROM `creature_formations` WHERE `leaderGUID`=@NPC;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(@NPC,@NPC,0,0,2),
+(@NPC,202054,7,270,2),
+(@NPC,201845,7,306,2),
+(@NPC,201914,7,342,2),
+(@NPC,202145,7,18,2),
+(@NPC,202227,7,54,2),
+(@NPC,201988,7,90,2);
+
+-- Fix previous creature removal
+DELETE FROM `creature` WHERE `id`=42160;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`, `position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES
+(42160,36881,658,3,1,0,0,592.975,176.104,510.1582,508.746,86400,0,0,1,0,0);
+UPDATE `creature` SET `position_x`=611.9375,`position_y`=117.441,`position_z`=508.0308 WHERE `guid` IN (202273,202054,201845,201914,202145,202227,201988);
+DELETE FROM `creature_formations` WHERE `leaderGUID`=202231;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(202231,202231,0,0,2),
+(202231,202099,7,270,2),
+(202231,202282,7,306,2),
+(202231,202125,7,342,2),
+(202231,202203,7,18,2),
+(202231,201960,7,54,2),
+(202231,42160,7,90,2);
+
+-- Update Scourgelord Tyrannus "Make him fly"
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=36794;
diff --git a/sql/old/3.3.5a/2012_05_10_06_world_waypoints.sql b/sql/old/3.3.5a/2012_05_10_06_world_waypoints.sql
new file mode 100644
index 00000000000..6fd04d0e4da
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_10_06_world_waypoints.sql
@@ -0,0 +1,40 @@
+-- Deathwhisper Necrolyte pathing
+SET @NPC := 202063;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+UPDATE `creature` SET `position_x`=631.8229,`position_y`=229.7292,`position_z`=508.0604 WHERE `guid` IN (202028,202000,201957,201820,202122,202199);
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,631.8229,229.7292,508.0604,0,0,0,100,0),
+(@PATH,2,643.8733,215.2674,508.2268,0,0,0,100,0),
+(@PATH,3,659.0139,215.9635,507.8518,0,0,0,100,0),
+(@PATH,4,674.184,213.5833,508.8467,0,0,0,100,0),
+(@PATH,5,678.8004,201.066,508.4717,0,0,0,100,0),
+(@PATH,6,662.4636,183.0694,507.9585,0,0,0,100,0),
+(@PATH,7,650.8941,171.5642,507.7085,0,0,0,100,0),
+(@PATH,8,637.7292,155.2569,507.9196,0,0,0,100,0),
+(@PATH,9,644.6389,130.2639,510.4212,0,0,0,100,0),
+(@PATH,10,654.9896,121.3038,511.9212,0,0,0,100,0),
+(@PATH,11,677.7448,136.6528,512.7715,0,0,0,100,0),
+(@PATH,12,678.2847,149.1233,507.8965,0,0,0,100,0),
+(@PATH,13,677.7448,136.6528,512.7715,0,0,0,100,0),
+(@PATH,14,654.9896,121.3038,511.9212,0,0,0,100,0),
+(@PATH,15,644.6389,130.2639,510.4212,0,0,0,100,0),
+(@PATH,16,637.7292,155.2569,507.9196,0,0,0,100,0),
+(@PATH,17,650.8941,171.5642,507.7085,0,0,0,100,0),
+(@PATH,18,662.4636,183.0694,507.9585,0,0,0,100,0),
+(@PATH,19,678.8004,201.066,508.4717,0,0,0,100,0),
+(@PATH,20,674.184,213.5833,508.8467,0,0,0,100,0),
+(@PATH,21,659.0139,215.9635,507.8518,0,0,0,100,0),
+(@PATH,22,643.8733,215.2674,508.2268,0,0,0,100,0);
+DELETE FROM `creature_formations` WHERE `leaderGUID`=@NPC;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(@NPC,@NPC,0,0,2),
+(@NPC,202028,7,270,2),
+(@NPC,202000,7,306,2),
+(@NPC,201957,7,342,2),
+(@NPC,201820,7,18,2),
+(@NPC,202122,7,54,2),
+(@NPC,202199,7,90,2);
diff --git a/sql/old/3.3.5a/2012_05_11_00_world_waypoints.sql b/sql/old/3.3.5a/2012_05_11_00_world_waypoints.sql
new file mode 100644
index 00000000000..fa4e18f6468
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_11_00_world_waypoints.sql
@@ -0,0 +1,31 @@
+-- Scourgelord Tyrannus pathing
+SET @NPC := 201951;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `position_x`=873.783,`position_y`=136.9774,`position_z`=623.6115,`spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes1`,`bytes2`) VALUES (@NPC,@PATH,50331648,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUE
+(@PATH,1,873.783,136.9774,623.6115,0,0,0,100,0),
+(@PATH,2,872.9045,139.2743,622.4446,0,0,0,100,0),
+(@PATH,3,888.7917,171.3403,591.3615,0,0,0,100,0),
+(@PATH,4,861.3073,209.8455,591.3615,0,0,0,100,0),
+(@PATH,5,830.4913,254.5556,591.3615,0,0,0,100,0),
+(@PATH,6,780.4844,277.6406,591.3615,0,0,0,100,0),
+(@PATH,7,732.6771,272.4635,591.3615,0,0,0,100,0),
+(@PATH,8,683.9028,265.276,591.3615,0,0,0,100,0),
+(@PATH,9,612.3368,284.7934,553.4998,0,0,0,100,0),
+(@PATH,10,554.816,303.1858,553.4998,0,0,0,100,0),
+(@PATH,11,498.1024,309.0625,553.4998,0,0,0,100,0),
+(@PATH,12,470.4167,230.0174,553.4998,0,0,0,100,0),
+(@PATH,13,454.0087,175.2135,553.4998,0,0,0,100,0),
+(@PATH,14,492.4288,127.1806,583.1108,0,0,0,100,0),
+(@PATH,15,551.2604,121.6354,583.1108,0,0,0,100,0),
+(@PATH,16,647.5573,126.3542,583.1108,0,0,0,100,0),
+(@PATH,17,766.2222,130.9254,583.1108,0,0,0,100,0),
+(@PATH,18,829.408,42.33854,583.1108,0,0,0,100,0),
+(@PATH,19,746.7101,-53.03299,583.1108,0,0,0,100,0),
+(@PATH,20,663.2379,-77.32291,583.1108,0,0,0,100,0),
+(@PATH,21,618.6389,3.369792,583.1108,0,0,0,100,0),
+(@PATH,22,641.8559,89.27604,583.1108,0,0,0,100,0),
+(@PATH,23,794.1667,115.6858,583.1108,0,0,0,100,0);
diff --git a/sql/old/3.3.5a/2012_05_11_01_world_gameobject_template.sql b/sql/old/3.3.5a/2012_05_11_01_world_gameobject_template.sql
new file mode 100644
index 00000000000..630a166276b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_11_01_world_gameobject_template.sql
@@ -0,0 +1,4 @@
+-- Lock Ice Wall and make untargetable
+UPDATE `gameobject_template` SET `flags`=18 WHERE `entry`=201885;
+-- Saronite Rock Should be untargetable
+UPDATE `gameobject_template` SET `flags`=18 WHERE `entry`=196485;
diff --git a/sql/old/3.3.5a/2012_05_11_02_world_conditions.sql b/sql/old/3.3.5a/2012_05_11_02_world_conditions.sql
new file mode 100644
index 00000000000..a10c27a0ef5
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_11_02_world_conditions.sql
@@ -0,0 +1,23 @@
+-- Spell Conditions for spell Necromantic Power 69347
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=69347;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,69347,0,31,3,37496,0,0,'','Spell 69347 targets entry 37496'),
+(13,1,69347,1,31,3,37497,0,0,'','Spell 69347 targets entry 37497'),
+(13,1,69347,2,31,3,37498,0,0,'','Spell 69347 targets entry 37498'),
+(13,1,69347,3,31,3,37584,0,0,'','Spell 69347 targets entry 37584'),
+(13,1,69347,4,31,3,37587,0,0,'','Spell 69347 targets entry 37587'),
+(13,1,69347,5,31,3,37588,0,0,'','Spell 69347 targets entry 37588');
+
+-- Spell Conditions for spell Shriek of the Highborne 70512
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=70512;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,70512,3,31,3,37584,0,0,'','Spell 70512 targets entry 37584'),
+(13,1,70512,4,31,3,37587,0,0,'','Spell 70512 targets entry 37587'),
+(13,1,70512,5,31,3,37588,0,0,'','Spell 70512 targets entry 37588');
+
+-- Spell Conditions for spell Empowered Blizzard 70130
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=70130;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,70130,0,31,3,37496,0,0,'','Spell 70130 targets entry 37496'),
+(13,1,70130,1,31,3,37497,0,0,'','Spell 70130 targets entry 37497'),
+(13,1,70130,2,31,3,37498,0,0,'','Spell 70130 targets entry 37498');
diff --git a/sql/old/3.3.5a/2012_05_12_00_world_gameobject_template.sql b/sql/old/3.3.5a/2012_05_12_00_world_gameobject_template.sql
new file mode 100644
index 00000000000..ffa932c8640
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_12_00_world_gameobject_template.sql
@@ -0,0 +1,2 @@
+-- Lock Halls of Reflection Portcullis
+UPDATE `gameobject_template` SET `flags`=18 WHERE `entry`=201848;
diff --git a/sql/old/3.3.5a/2012_05_12_01_world_item_loot_template.sql b/sql/old/3.3.5a/2012_05_12_01_world_item_loot_template.sql
new file mode 100644
index 00000000000..052b749c48c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_12_01_world_item_loot_template.sql
@@ -0,0 +1,92 @@
+DELETE FROM `item_loot_template` WHERE `entry` BETWEEN 51999 AND 52005;
+INSERT INTO `item_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Satchel of Helpfull Goods (level 0-25)
+(51999,51964,0,1,1,1,1), -- Vigorous Belt
+(51999,51968,0,1,1,1,1), -- Enumerated Wrap
+(51999,51978,0,1,1,1,1), -- Earthbound Girdle
+(51999,51994,25,1,1,1,1), -- Tumultuous Cloak
+-- Satchel of Helpfull Goods (level 26-35)
+(52000,51965,0,1,1,1,1), -- Vigorous Handguards
+(52000,51973,0,1,1,1,1), -- Enumerated Handwraps
+(52000,51980,0,1,1,1,1), -- Earthbound Handgrips
+(52000,51996,25,1,1,1,1), -- Tumultuous Necklace
+-- Satchel of Helpfull Goods (level 36-45)
+(52001,51966,0,1,1,1,1), -- Vigorous Spaulders
+(52001,51974,0,1,1,1,1), -- Enumerated Shoulderpads
+(52001,51976,0,1,1,1,1), -- Earthbound Shoulderguards
+(52001,51984,0,1,1,1,1), -- Stalwart Shoulderpads
+(52001,51992,25,1,1,1,1), -- Tumultuous Ring
+-- Satchel of Helpfull Goods (level 46-55)
+(52002,51962,0,1,1,1,1), -- Vigorous Bracers
+(52002,51963,0,1,1,1,1), -- Vigorous Stompers
+(52002,51967,0,1,1,1,1), -- Enumerated Sandals
+(52002,51972,0,1,1,1,1), -- Enumerated Bracers
+(52002,51981,0,1,1,1,1), -- Earthbound Wristguards
+(52002,51982,0,1,1,1,1), -- Earthbound Boots
+(52002,51989,0,1,1,1,1), -- Stalwart Bands
+(52002,51990,0,1,1,1,1), -- Stalwart Treads
+-- Satchel of Helpfull Goods (level 56-60)
+(52003,51959,0,1,1,1,1), -- Vigorous Belt
+(52003,51971,0,1,1,1,1), -- Enumerated Belt
+(52003,51977,0,1,1,1,1), -- Earthbound Girdle
+(52003,51985,0,1,1,1,1), -- Stalwart Belt
+(52003,51993,25,1,1,1,1), -- Turbulent Cloak
+-- Satchel of Helpfull Goods (level 61-64)
+(52004,51960,0,1,1,1,1), -- Vigorous Gloves
+(52004,51970,0,1,1,1,1), -- Enumerated Gloves
+(52004,51979,0,1,1,1,1), -- Earthbound Grips
+(52004,51987,0,1,1,1,1), -- Stalwart Grips
+(52004,51995,25,1,1,1,1), -- Turbulent Necklace
+-- Satchel of Helpfull Goods (level 65-70)
+(52005,51961,0,1,1,1,1), -- Vigorous Shoulderguards
+(52005,51969,0,1,1,1,1), -- Enumerated Shoulders
+(52005,51975,0,1,1,1,1), -- Earthbound Shoulders
+(52005,51983,0,1,1,1,1), -- Stalwart Shoulderguards
+(52005,51991,25,1,0,1,1); -- Turbulent Signet
+-- -------------------------------------------------------------------
+-- Set some Parameters
+-- -------------------------------------------------------------------
+SET @Cloth := 400; -- Class Bitmask: 16 (Priest) +128 (Mage) +256 (Warlock)
+SET @Leather1 := 1100; -- Class Bitmask: 4 (Hunter) +8 (Rogue) +64 (Shaman) +1024 (Druid)
+SET @Leather2 := 1032; -- Class Bitmask: 8 (Rogue) +1024 (Druid)
+SET @Mail1 := 3; -- Class Bitmask: 1 (Warrior) +2 (Paladin)
+SET @Mail2 := 68; -- Class Bitmask: 4 (Hunter) +8 (Shaman)
+SET @Plate := 35; -- Class Bitmask: 1 (Warrior) +2 (Paladin) +32 (DeathKnight)
+-- Add conditions to make sure everyone gets beneficial loot for their class
+-- -------------------------------------------------------------------
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=5 AND `SourceGroup` BETWEEN 51999 AND 52005 ;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+-- Cloth Items
+(5,51999,51968,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Wrap only for clothusers'),
+(5,52000,51973,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Handwraps only for clothusers'),
+(5,52001,51974,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Shoulderpads only for clothusers'),
+(5,52002,51967,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Sandals only for clothusers'),
+(5,52002,51972,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Bracers only for clothusers'),
+(5,52003,51971,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Belt only for clothusers'),
+(5,52004,51970,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Gloves only for clothusers'),
+(5,52005,51969,0,0,15,0,@Cloth,0,0,0,0,'','SOHG: Enumerated Shoulders only for clothusers'),
+-- Leather Items
+(5,51999,51964,0,0,15,0,@Leather1,0,0,0,0,'','SOHG: Vigorous Belt only for leatherusers'),
+(5,52000,51965,0,0,15,0,@Leather1,0,0,0,0,'','SOHG: Vigorous Handguards only for leatherusers'),
+(5,52001,51966,0,0,15,0,@Leather2,0,0,0,0,'','SOHG: Vigorous Spaulders only for leatherusers'),
+(5,52002,51962,0,0,15,0,@Leather2,0,0,0,0,'','SOHG: Vigorous Bracers only for leatherusers'),
+(5,52002,51963,0,0,15,0,@Leather2,0,0,0,0,'','SOHG: Vigorous Stompers only for leatherusers'),
+(5,52003,51959,0,0,15,0,@Leather2,0,0,0,0,'','SOHG: Vigorous Belt only for leatherusers'),
+(5,52004,51960,0,0,15,0,@Leather2,0,0,0,0,'','SOHG: Vigorous Gloves only for leatherusers'),
+(5,52005,51961,0,0,15,0,@Leather2,0,0,0,0,'','SOHG: Vigorous Shoulderguards only for leatherusers'),
+-- Mail Items
+(5,51999,51978,0,0,15,0,@Mail1,0,0,0,0,'','SOHG: Earthbound Girdle only for mail users'),
+(5,52000,51980,0,0,15,0,@Mail1,0,0,0,0,'','SOHG: Earthbound Handgrips only for mail users'),
+(5,52001,51976,0,0,15,0,@Mail2,0,0,0,0,'','SOHG: Earthbound Shoulderguards only for mail users'),
+(5,52002,51982,0,0,15,0,@Mail2,0,0,0,0,'','SOHG: Earthbound Boots only for mail users'),
+(5,52002,51981,0,0,15,0,@Mail2,0,0,0,0,'','SOHG: Earthbound Wristguards only for mail users'),
+(5,52003,51977,0,0,15,0,@Mail2,0,0,0,0,'','SOHG: Earthbound Girdle only for mail users'),
+(5,52004,51979,0,0,15,0,@Mail2,0,0,0,0,'','SOHG: Earthbound Grips only for mail users'),
+(5,52005,51975,0,0,15,0,@Mail2,0,0,0,0,'','SOHG: Earthbound Shoulders only for mail users'),
+-- Plate Items
+(5,52001,51984,0,0,15,0,@Plate,0,0,0,0,'','SOHG: Stalwart Shoulderpads only for plate users'),
+(5,52002,51989,0,0,15,0,@Plate,0,0,0,0,'','SOHG: Stalwart Bands only for plate users'),
+(5,52002,51990,0,0,15,0,@Plate,0,0,0,0,'','SOHG: Stalwart Treads only for plate users'),
+(5,52003,51985,0,0,15,0,@Plate,0,0,0,0,'','SOHG: Stalwart Belt only for plate users'),
+(5,52004,51987,0,0,15,0,@Plate,0,0,0,0,'','SOHG: Stalwart Grips only for plate users'),
+(5,52005,51983,0,0,15,0,@Plate,0,0,0,0,'','SOHG: Stalwart Shoulderguards only for plate users');
diff --git a/sql/old/3.3.5a/2012_05_12_02_world_gameobject_loot_template.sql b/sql/old/3.3.5a/2012_05_12_02_world_gameobject_loot_template.sql
new file mode 100644
index 00000000000..b1f445faa59
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_12_02_world_gameobject_loot_template.sql
@@ -0,0 +1,37 @@
+-- Add Reference Loots
+SET @RefNormal := 35091;
+SET @RefHeroic := 35092;
+DELETE FROM `reference_loot_template` WHERE `entry` IN (@RefNormal,@RefHeroic);
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Normal Loot
+(@RefNormal,49839,0,1,1,1,1), -- Mourning Malice
+(@RefNormal,49840,0,1,1,1,1), -- Hate-Forged Cleaver
+(@RefNormal,49841,0,1,1,1,1), -- Blackened Geist Ribs
+(@RefNormal,49842,0,1,1,1,1), -- Tapestry of the Frozen Throne
+(@RefNormal,49843,0,1,1,1,1), -- Crystalline Citadel Gauntlets
+(@RefNormal,49844,0,1,1,1,1), -- Crypt Fiend Slayer
+(@RefNormal,49845,0,1,1,1,1), -- Bone Golem Scapula
+(@RefNormal,49846,0,1,1,1,1), -- Chilled Heart of the Glacier
+(@RefNormal,49847,0,1,1,1,1), -- Legguards of Untimely Demise
+(@RefNormal,49848,0,1,1,1,1), -- Grim Lasher Shoulderguards
+(@RefNormal,49849,0,1,1,1,1), -- Tattered Glacial-Woven Hood
+(@RefNormal,49851,0,1,1,1,1), -- Greathelm of the Silver Hand
+-- Heroic Loot
+(@RefHeroic,50303,0,1,1,1,1), -- Black Icicle
+(@RefHeroic,50302,0,1,1,1,1), -- Liar's Tongue
+(@RefHeroic,50311,0,1,1,1,1), -- Second Helm of the Executioner
+(@RefHeroic,50312,0,1,1,1,1), -- Chestguard of Broken Branches
+(@RefHeroic,50310,0,1,1,1,1), -- Fossilized Ammonite Choker
+(@RefHeroic,50313,0,1,1,1,1), -- Oath of Empress Zoe
+(@RefHeroic,50309,0,1,1,1,1), -- Shriveled Heart
+(@RefHeroic,50314,0,1,1,1,1), -- Strip of Remorse
+(@RefHeroic,50308,0,1,1,1,1), -- Blighted Leather Footpads
+(@RefHeroic,50305,0,1,1,1,1), -- Grinning Skull Boots
+(@RefHeroic,50306,0,1,1,1,1), -- The Lady's Promise
+(@RefHeroic,50304,0,1,1,1,1); -- Hoarfrost Gauntlets
+-- Assign to the chest
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (27985,27993);
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(27985,1,100,1,0,-@RefNormal,2), -- Two from Normal Reference Loot
+(27993,1,100,1,0,-@RefHeroic,2), -- Two from Heroic Reference Loot
+(27993,43102,85,1,0,1,1); -- Frozen Orb
diff --git a/sql/old/3.3.5a/2012_05_13_00_world_creature_text.sql b/sql/old/3.3.5a/2012_05_13_00_world_creature_text.sql
new file mode 100644
index 00000000000..8d083156fb0
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_13_00_world_creature_text.sql
@@ -0,0 +1,13 @@
+-- NPC talk text insert from sniff
+DELETE FROM `creature_text` WHERE `entry`=36494;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(36494,0,0, 'Tiny creatures under feet, you bring Garfrost something good to eat!',14,0,100,0,0,0, 'Forgemaster Garfrost'),
+(36494,1,0, 'Axe too weak. Garfrost make better and CRUSH YOU.',14,0,100,0,0,0, 'Forgemaster Garfrost'),
+(36494,2,0, 'Garfrost tired of puny mortals. Now your bones will freeze!',14,0,100,0,0,0, 'Forgemaster Garfrost'),
+(36494,3,0, 'Garfrost hope giant underpants clean. Save boss great shame. For later.',14,0,100,0,0,0, 'Forgemaster Garfrost'),
+(36494,4,0, 'Will save for snack. For later.',12,0,100,0,0,0, 'Forgemaster Garfrost'),
+(36494,4,1, 'That one maybe not so good to eat now. Stupid Garfrost! BAD! BAD!',12,0,100,0,0,0, 'Forgemaster Garfrost'),
+(36494,5,0, '%s hurls a massive saronite boulder at you!',16,0,100,0,0,0, 'Forgemaster Garfrost'),
+(36494,6,0, '%s casts |cFF00AACCDeep Freeze|r at $n.',41,0,100,0,0,0, 'Forgemaster Garfrost');
+-- Remove old script text
+DELETE FROM `script_texts` WHERE `entry` BETWEEN -1658006 AND -1658001;
diff --git a/sql/old/3.3.5a/2012_05_13_01_world_creature_text.sql b/sql/old/3.3.5a/2012_05_13_01_world_creature_text.sql
new file mode 100644
index 00000000000..8e983fd9a73
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_13_01_world_creature_text.sql
@@ -0,0 +1,14 @@
+-- NPC talk text insert for Sara
+DELETE FROM `creature_text` WHERE `entry`=33134;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(33134,0,0, 'Help me! Please get them off me!',14,0,100,0,0,15771, 'Sara YELL_PREFIGHT'),
+(33134,0,1, 'What do you want from me? Leave me alone!',14,0,100,0,0,15772, 'Sara YELL_PREFIGHT'),
+(33134,1,0, 'Yes! YES! Show them no mercy! Give no pause to your attacks!',14,0,100,0,0,15773, 'Sara YELL_COMBAT_PHASE_1'),
+(33134,1,1, 'Let hatred and rage guide your blows!',14,0,100,0,0,15774, 'Sara YELL_COMBAT_PHASE_1'),
+(33134,1,2, 'The time to strike at the head of the beast will soon be upon us! Focus your anger and hatred on his minions!',14,0,100,457,0,15775, 'Sara YELL_COMBAT_PHASE_1'),
+(33134,2,0, 'Suffocate upon your own hate!',14,0,100,0,0,15776, 'Sara YELL_COMBAT_PHASE_2'),
+(33134,2,1, 'Tremble, mortals, before the coming of the end!',14,0,100,0,0,15777, 'Sara YELL_COMBAT_PHASE_2'),
+(33134,3,0, 'Powerless to act...',14,0,100,0,0,15778, 'Sara YELL_SLAY'),
+(33134,3,1, 'Could they have been saved?',14,0,100,0,0,15779, 'YELL SAY_SLAY');
+-- remove script text
+DELETE FROM script_texts WHERE entry BETWEEN -1603319 AND -1603310;
diff --git a/sql/old/3.3.5a/2012_05_16_00_world_scripts.sql b/sql/old/3.3.5a/2012_05_16_00_world_scripts.sql
new file mode 100644
index 00000000000..9997c09bd8d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_16_00_world_scripts.sql
@@ -0,0 +1,2 @@
+-- Add script to Dragonspire Hall Runes "UBRS"
+UPDATE `gameobject_template` SET `ScriptName`= 'go_dragonspire_hall_rune' WHERE `entry` BETWEEN 175194 AND 175200;
diff --git a/sql/old/3.3.5a/2012_05_17_00_world_creature_text.sql b/sql/old/3.3.5a/2012_05_17_00_world_creature_text.sql
new file mode 100644
index 00000000000..d7df0f94c0b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_17_00_world_creature_text.sql
@@ -0,0 +1,7 @@
+-- NPC talk text insert from sniff
+DELETE FROM `creature_text` WHERE `entry`=9816;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(9816,0,0, '%s begins to regain its strength!',16,0,100,0,0,0, 'Pyroguard Emberseer'),
+(9816,1,0, '%s is nearly at full strength!',16,0,100,0,0,0, 'Pyroguard Emberseer'),
+(9816,2,0, '%s regains its power and breaks free of its bonds!',16,0,100,0,0,0, 'Pyroguard Emberseer'),
+(9816,3,0, 'Ha! Ha! Ha! Thank you for freeing me, fools. Now let me repay you by charring the flesh from your bones.',14,0,100,0,0,0, 'Pyroguard Emberseer');
diff --git a/sql/old/3.3.5a/2012_05_18_00_world_conditions.sql b/sql/old/3.3.5a/2012_05_18_00_world_conditions.sql
new file mode 100644
index 00000000000..ad18a6c65ef
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_18_00_world_conditions.sql
@@ -0,0 +1,3 @@
+DELETE FROM `conditions` WHERE `SourceEntry` = 52264;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,0,52264,0,0,29,0,28653,5,0,0,97,"","Creature conditions for spell 52264 (Deliver stolen horse)");
diff --git a/sql/old/3.3.5a/2012_05_18_01_world_misc.sql b/sql/old/3.3.5a/2012_05_18_01_world_misc.sql
new file mode 100644
index 00000000000..bded6fae447
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_18_01_world_misc.sql
@@ -0,0 +1,7 @@
+DELETE FROM `spell_proc_event` WHERE `entry` = 70656;
+
+UPDATE `quest_template` SET `NextQuestId` = 3761 WHERE `id` IN (936,3784,3762);
+
+DELETE FROM `spell_proc_event` WHERE `entry` = 63611;
+INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(63611,0,0,0,0,0,51154,0,0,0,0);
diff --git a/sql/old/3.3.5a/2012_05_18_01_world_spell_target_position.sql b/sql/old/3.3.5a/2012_05_18_01_world_spell_target_position.sql
new file mode 100644
index 00000000000..72ebc409d9d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_18_01_world_spell_target_position.sql
@@ -0,0 +1,9 @@
+DELETE FROM `spell_target_position` WHERE `id` IN (30719,53140,53141,53360,54406,68328,71512);
+INSERT INTO `spell_target_position` (`id`,`target_map`,`target_position_x`,`target_position_y`,`target_position_z`,`target_orientation`) VALUES
+(30719,571,5807.75,588.347,661.505,1.663),
+(53140,571,5807.75,588.347,661.505,1.663),
+(53141,571,5807.75,588.347,661.505,1.663),
+(53360,571,5807.75,588.347,661.505,1.663),
+(54406,571,5807.75,588.347,661.505,1.663),
+(68328,571,5807.75,588.347,661.505,1.663),
+(71512,571,5807.75,588.347,661.505,1.663);
diff --git a/sql/old/3.3.5a/2012_05_19_00_world_quest_template.sql b/sql/old/3.3.5a/2012_05_19_00_world_quest_template.sql
new file mode 100644
index 00000000000..f18172ed836
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_19_00_world_quest_template.sql
@@ -0,0 +1,2 @@
+-- Change Flags for the Body and Heart Quest
+UPDATE `quest_template` SET `Flags`=`Flags`&~2, `SpecialFlags`=`SpecialFlags`|2 WHERE `id` IN (6001,6002);
diff --git a/sql/old/3.3.5a/2012_05_19_01_world_smart_scripts.sql b/sql/old/3.3.5a/2012_05_19_01_world_smart_scripts.sql
new file mode 100644
index 00000000000..06169d8610a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_19_01_world_smart_scripts.sql
@@ -0,0 +1,7 @@
+-- Fix Quest 9962,9967,9970,9972,9973
+UPDATE `smart_scripts` SET `target_type`=16 WHERE `entryorguid`=18398 AND `id`=1; -- Brokentoe
+UPDATE `smart_scripts` SET `target_type`=16 WHERE `entryorguid`=18399 AND `id`=4; -- Murkblood Twin
+UPDATE `smart_scripts` SET `target_type`=16 WHERE `entryorguid`=18400 AND `id`=5; -- Rokdar the Sundered Lord
+UPDATE `smart_scripts` SET `target_type`=16 WHERE `entryorguid`=18401 AND `id`=3; -- Skra'gath
+UPDATE `smart_scripts` SET `id`=5,`link`=6,`target_type`=16 WHERE `entryorguid`=18402 AND `action_type`=15; -- Warmaul Champion
+UPDATE `smart_scripts` SET `id`=6 WHERE `entryorguid`=18402 AND `action_type`=45; -- Warmaul Champion
diff --git a/sql/old/3.3.5a/2012_05_19_02_world_misc.sql b/sql/old/3.3.5a/2012_05_19_02_world_misc.sql
new file mode 100644
index 00000000000..97a77ac0ab3
--- /dev/null
+++ b/sql/old/3.3.5a/2012_05_19_02_world_misc.sql
@@ -0,0 +1,6 @@
+-- 2012-05-19 12:48:24 SourceEntry 52264 in `condition` table, has incorrect SourceGroup 0 (spell effectMask) set , ignoring.
+UPDATE `conditions` SET `SourceGroup`=1 WHERE `SourceTypeOrReferenceId`=13 AND `SourceGroup`=0 AND `SourceEntry`=52264 AND `SourceId`=0 AND `ElseGroup`=0 AND `ConditionTypeOrReference`=29 AND `ConditionTarget`=0 AND `ConditionValue1`=28653 AND `ConditionValue2`=5 AND `ConditionValue3`=0;
+
+-- 2012-05-19 12:48:18 Quest 384 has `ZoneOrSort` = -304 but `RequiredSkillId` does not have a corresponding value (185).
+-- It is not clear if cooking was required on 3.3.5, so reverting it to its original state (however we are sure it is not required in Cata)
+UPDATE `quest_template` SET `RequiredSkillId`=185, `RequiredSkillPoints`=1 WHERE `Id`=384;
diff --git a/sql/updates/world/2012_05_19_03_world_version.sql b/sql/updates/world/2012_05_19_03_world_version.sql
new file mode 100644
index 00000000000..53c6821be69
--- /dev/null
+++ b/sql/updates/world/2012_05_19_03_world_version.sql
@@ -0,0 +1 @@
+UPDATE `version` SET `db_version`='TDB 335.11.47' LIMIT 1;
diff --git a/sql/updates/world/2012_05_19_04_creature_loot_template.sql b/sql/updates/world/2012_05_19_04_creature_loot_template.sql
new file mode 100644
index 00000000000..ae996e01956
--- /dev/null
+++ b/sql/updates/world/2012_05_19_04_creature_loot_template.sql
@@ -0,0 +1 @@
+DELETE FROM `creature_loot_template` WHERE `entry`=31813 AND `item`=36912; -- Saronite Ore
diff --git a/sql/updates/world/2012_05_19_05_gameobject_loot_template.sql b/sql/updates/world/2012_05_19_05_gameobject_loot_template.sql
new file mode 100644
index 00000000000..f95cb45efe4
--- /dev/null
+++ b/sql/updates/world/2012_05_19_05_gameobject_loot_template.sql
@@ -0,0 +1,93 @@
+-- Set Variables
+SET @Gunship10N := 28057; -- Data1 for 201872 & 202177
+SET @Gunship10H := 28045; -- Data1 for 201873 & 202178
+SET @Gunship25N := 28072; -- Data1 for 201874 & 202179
+SET @Gunship25H := 28090; -- Data1 for 201875 & 202180
+SET @emblem := 49426; -- Emblem of Frost
+SET @SfShard := 50274; -- Shadowfrost Shard
+SET @PriSar := 49908; -- Primordial Saronite
+-- Dug up the old references i created for UP34:
+SET @Ref10J := 34329;
+SET @Ref25J := 34251;
+SET @RefJ10H := 34263;
+SET @RefJ25H := 34275;
+-- Gunship_Armory10N_reference
+DELETE FROM `reference_loot_template` WHERE `entry` IN (@Ref10J,@Ref25J,@RefJ10H,@RefJ25H);
+INSERT INTO `reference_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(@Ref10J,50791,0,1,1,1,1), -- Saronite Gargoyle Cloak
+(@Ref10J,50795,0,1,1,1,1), -- Cord of Dark Suffering
+(@Ref10J,50794,0,1,1,1,1), -- Neverending Winter
+(@Ref10J,50787,0,1,1,1,1), -- Frost Giant's Cleaver
+(@Ref10J,50793,0,1,1,1,1), -- Midnight Sun
+(@Ref10J,50788,0,1,1,1,1), -- Bone Drake's Enameled Boots
+(@Ref10J,50792,0,1,1,1,1), -- Pauldrons of Lost Hope
+(@Ref10J,50340,0,1,1,1,1), -- Muradin's Spyglass
+(@Ref10J,50797,0,1,1,1,1), -- Ice-Reinforced Vrykul Helm
+(@Ref10J,50790,0,1,1,1,1), -- Abomination's Bloody Ring
+(@Ref10J,50789,0,1,1,1,1), -- Icecrown Rampart Bracers
+(@Ref10J,50796,0,1,1,1,1), -- Bracers of Pale Illumination
+-- Gunship_Armory25N_reference
+(@Ref25J,50011,0,1,1,1,1), -- Gunship Captain's Mittens
+(@Ref25J,50002,0,1,1,1,1), -- Polar Bear Claw Bracers
+(@Ref25J,50006,0,1,1,1,1), -- Corp'rethar Ceremonial Crown
+(@Ref25J,50010,0,1,1,1,1), -- Waistband of Righteous Fury
+(@Ref25J,50003,0,1,1,1,1), -- Boneguard Commander's Pauldrons
+(@Ref25J,50000,0,1,1,1,1), -- Scourge Hunter's Vambraces
+(@Ref25J,50359,0,1,1,1,1), -- Althor's Abacus
+(@Ref25J,50352,0,1,1,1,1), -- Corpse Tongue Coin
+(@Ref25J,49999,0,1,1,1,1), -- Skeleton Lord's Circle
+(@Ref25J,50009,0,1,1,1,1), -- Boots of Unnatural Growth
+(@Ref25J,50008,0,1,1,1,1), -- Ring of Rapid Ascent
+(@Ref25J,49998,0,1,1,1,1), -- Shadowvault Slayer's Cloak
+(@Ref25J,50005,0,1,1,1,1), -- Amulet of the Silent Eulogy
+(@Ref25J,50411,0,1,1,1,1), -- Scourgeborne Waraxe
+(@Ref25J,50001,0,1,1,1,1), -- Ikfirus's Sack of Wonder
+-- Gunship_Armory10H_reference
+(@RefJ10H,51912,0,1,1,1,1), -- Saronite Gargoyle Cloak (heroic)
+(@RefJ10H,51908,0,1,1,1,1), -- Cord of Dark Suffering (heroic)
+(@RefJ10H,51909,0,1,1,1,1), -- Neverending Winter (heroic)
+(@RefJ10H,51916,0,1,1,1,1), -- Frost Giant's Cleaver (heroic)
+(@RefJ10H,51910,0,1,1,1,1), -- Midnight Sun (heroic)
+(@RefJ10H,51915,0,1,1,1,1), -- Bone Drake's Enameled Boots (heroic)
+(@RefJ10H,51911,0,1,1,1,1), -- Pauldrons of Lost Hope (heroic)
+(@RefJ10H,50345,0,1,1,1,1), -- Muradin's Spyglass (heroic)
+(@RefJ10H,51906,0,1,1,1,1), -- Ice-Reinforced Vrykul Helm (heroic)
+(@RefJ10H,51913,0,1,1,1,1), -- Abomination's Bloody Ring (heroic)
+(@RefJ10H,51914,0,1,1,1,1), -- Icecrown Rampart Bracers (heroic)
+(@RefJ10H,51907,0,1,1,1,1), -- Bracers of Pale Illumination (heroic)
+-- Gunship_Armory25H_reference
+(@RefJ25H,50663,0,1,1,1,1), -- Gunship Captain's Mittens (heroic)
+(@RefJ25H,50659,0,1,1,1,1), -- Polar Bear Claw Bracers (heroic)
+(@RefJ25H,50661,0,1,1,1,1), -- Corp'rethar Ceremonial Crown (heroic)
+(@RefJ25H,50667,0,1,1,1,1), -- Waistband of Righteous Fury (heroic)
+(@RefJ25H,50660,0,1,1,1,1), -- Boneguard Commander's Pauldrons (heroic)
+(@RefJ25H,50655,0,1,1,1,1), -- Scourge Hunter's Vambraces (heroic)
+(@RefJ25H,50366,0,1,1,1,1), -- Althor's Abacus (heroic)
+(@RefJ25H,50349,0,1,1,1,1), -- Corpse Tongue Coin (heroic)
+(@RefJ25H,50657,0,1,1,1,1), -- Skeleton Lord's Circle (heroic)
+(@RefJ25H,50665,0,1,1,1,1), -- Boots of Unnatural Growth (heroic)
+(@RefJ25H,50664,0,1,1,1,1), -- Ring of Rapid Ascent (heroic)
+(@RefJ25H,50653,0,1,1,1,1), -- Shadowvault Slayer's Cloak (heroic)
+(@RefJ25H,50658,0,1,1,1,1), -- Amulet of the Silent Eulogy (heroic)
+(@RefJ25H,50654,0,1,1,1,1), -- Scourgeborne Waraxe (heroic)
+(@RefJ25H,50656,0,1,1,1,1); -- Ikfirus's Sack of Wonder (heroic)
+-- Bind the refs to the objects
+DELETE FROM `gameobject_loot_template` WHERE `entry` IN (@Gunship10N,@Gunship10H,@Gunship25N,@Gunship25H);
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+-- Gunship10N
+(@Gunship10N,@emblem,100,1,0,2,2), -- Gunship Armory 2xemblems 10N
+(@Gunship10N,1,100,1,0,-@Ref10J,2), -- 2 from reference 10Normal
+-- Gunship25N
+(@Gunship25N,@emblem,100,1,0,2,2), -- Gunship Armory 2xemblems 25N
+(@Gunship25N,1,100,1,0,-@Ref25J,2), -- 3 from reference 25Normal
+(@Gunship25N,@SfShard,-35,1,0,1,1), -- Shadowfrost Shard @ 38% chance
+(@Gunship25N,@PriSar,38,1,0,1,1), -- Primordial Saronite @ 10% chance
+-- Gunship10H
+(@Gunship10H,@emblem,100,1,0,2,2), -- Gunship Armory 2xemblems 10H
+(@Gunship10H,1,100,1,0,-@RefJ10H,2), -- 2 from reference 10Heroic
+(@Gunship10H,@PriSar,38,1,0,1,1), -- Primordial Saronite @ 38% chance
+-- Gunship25H
+(@Gunship25H,@emblem,100,1,0,2,2), -- Gunship Armory 2xemblems 25H
+(@Gunship25H,1,100,1,0,-@RefJ25H,2), -- 3 from reference 25Heroic
+(@Gunship25H,@SfShard,-75,1,0,1,1), -- Shadowfrost Shard @ 75% chance
+(@Gunship25H,@PriSar,50,1,0,1,1); -- Primordial Saronite @ 50% chance
diff --git a/sql/updates/world/2012_05_19_06_gameobject_loot_template.sql b/sql/updates/world/2012_05_19_06_gameobject_loot_template.sql
new file mode 100644
index 00000000000..9b2dcbb9363
--- /dev/null
+++ b/sql/updates/world/2012_05_19_06_gameobject_loot_template.sql
@@ -0,0 +1,13 @@
+DELETE FROM `reference_loot_template` WHERE `entry`=34172;
+DELETE FROM `creature_loot_template` WHERE `entry`=38013;
+DELETE FROM `gameobject_loot_template` WHERE `entry`=28683;
+INSERT INTO `gameobject_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(28683,35498,3,1,0,1,1), -- Formula: Enchant Weapon - Deathfrost
+(28683,35557,28,1,0,1,2), -- Huge Snowball
+(28683,35720,3,1,0,5,6), -- Lord of Frost's Private Label
+(28683,35723,12,1,0,1,1), -- Shards of Ahune
+(28683,54801,0,1,1,1,1), -- Icebound Cloak
+(28683,54802,0,1,1,1,1), -- The Frost Lord's War Cloak
+(28683,54803,0,1,1,1,1), -- The Frost Lord's Battle Shroud
+(28683,54804,0,1,1,1,1), -- Shroud of Winter's Chill
+(28683,54805,0,1,1,1,1); -- Cloak of the Frigid Winds
diff --git a/sql/updates/world/2012_05_20_00_world_misc.sql b/sql/updates/world/2012_05_20_00_world_misc.sql
new file mode 100644
index 00000000000..5b96f9881d6
--- /dev/null
+++ b/sql/updates/world/2012_05_20_00_world_misc.sql
@@ -0,0 +1,16 @@
+-- Update mod rep command name
+UPDATE `command` SET
+ `name` = 'modify reputation',
+ `help` = 'Syntax: .modify reputation #repId (#repvalue | $rankname [#delta])\nSets the selected players reputation with faction #repId to #repvalue or to $reprank.\nIf the reputation rank name is provided, the resulting reputation will be the lowest reputation for that rank plus the delta amount, if specified.\nYou can use \'.pinfo rep\' to list all known reputation ids, or use \'.lookup faction $name\' to locate a specific faction id.'
+WHERE `name` = 'modify rep';
+
+-- Fix "2012-05-20 06:46:00 ERROR: SourceEntry 52264 in `condition` table, has incorrect SourceGroup 0 (spell effectMask) set , ignoring."
+UPDATE `conditions` SET
+ `SourceGroup` = 1,
+ `SourceId` = 0
+WHERE
+ `SourceTypeOrReferenceId` = 13 AND
+ `SourceEntry` = 52264 AND
+ `ConditionTypeOrReference` = 29 AND
+ `ConditionValue1` = 28653 AND
+ `ConditionValue2` = 5;
diff --git a/sql/updates/world/2012_05_20_01_world_spell_bonus_data.sql b/sql/updates/world/2012_05_20_01_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..7603f7dd938
--- /dev/null
+++ b/sql/updates/world/2012_05_20_01_world_spell_bonus_data.sql
@@ -0,0 +1,2 @@
+DELETE FROM `spell_bonus_data` WHERE `entry`=633;
+INSERT INTO `spell_bonus_data` (`entry`,`comments`) VALUES (633,'Paladin - Lay on Hands');
diff --git a/sql/updates/world/2012_05_22_00_world_spell_proc_event.sql b/sql/updates/world/2012_05_22_00_world_spell_proc_event.sql
new file mode 100644
index 00000000000..ba2ea83f643
--- /dev/null
+++ b/sql/updates/world/2012_05_22_00_world_spell_proc_event.sql
@@ -0,0 +1 @@
+UPDATE `spell_proc_event` SET `procFlags` = 332116 WHERE `entry` = 63611;
diff --git a/sql/updates/world/2012_05_22_01_world_creature_loot_template.sql b/sql/updates/world/2012_05_22_01_world_creature_loot_template.sql
new file mode 100644
index 00000000000..bcae5be9ae1
--- /dev/null
+++ b/sql/updates/world/2012_05_22_01_world_creature_loot_template.sql
@@ -0,0 +1,2 @@
+-- As of patch 3.1.0, the drop rate of Formula: Enchant Boots - Surefooted has been increased to Guaranteed (100%).
+UPDATE `creature_loot_template` SET `ChanceOrQuestChance`=100 WHERE `entry`=16472 and `item`=22545;
diff --git a/sql/updates/world/2012_05_23_00_world_creature.sql b/sql/updates/world/2012_05_23_00_world_creature.sql
new file mode 100644
index 00000000000..8a965b7fdfe
--- /dev/null
+++ b/sql/updates/world/2012_05_23_00_world_creature.sql
@@ -0,0 +1,55 @@
+-- Chicken Spawns from sniff:
+SET @Chicken := 28161;
+SET @CGUID := 88570;
+DELETE FROM `creature` WHERE `id`=@Chicken;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`MovementType`) VALUES
+(@CGUID,@Chicken,571,1,1,5199.809,4704.83,-128.2989,1.70125,120,0,0), -- Chicken Escapee
+(@CGUID+1,@Chicken,571,1,1,5201.715,4702.484,-127.8371,1.53589,120,0,0), -- Chicken Escapee
+(@CGUID+2,@Chicken,571,1,1,5198.132,4702.78,-127.5534,1.797689,120,0,0), -- Chicken Escapee
+(@CGUID+3,@Chicken,571,1,1,5198.32,4704.375,-127.9992,1.064651,120,0,0), -- Chicken Escapee
+(@CGUID+4,@Chicken,571,1,1,5201.744,4704.674,-128.4752,4.555309,120,0,0), -- Chicken Escapee
+(@CGUID+5,@Chicken,571,1,1,5251.442,4508.976,-85.30431,4.304774,120,0,0), -- Chicken Escapee
+(@CGUID+6,@Chicken,571,1,1,5251.708,4511.778,-85.32935,1.64061,120,0,0), -- Chicken Escapee
+(@CGUID+7,@Chicken,571,1,1,5251.118,4509.744,-85.32935,4.886922,120,0,0), -- Chicken Escapee
+(@CGUID+8,@Chicken,571,1,1,5252.795,4509.772,-85.32524,0.7853982,120,0,0), -- Chicken Escapee
+(@CGUID+9,@Chicken,571,1,1,5253.682,4511.424,-85.32755,2.356194,120,0,0), -- Chicken Escapee
+(@CGUID+10,@Chicken,571,1,1,5254.174,4514.632,-84.96572,0.4096795,120,0,0), -- Chicken Escapee
+(@CGUID+11,@Chicken,571,1,1,5252.096,4514.868,-85.32635,4.363323,120,0,0), -- Chicken Escapee
+(@CGUID+12,@Chicken,571,1,1,5251.637,4513.41,-85.32935,3.490659,120,0,0), -- Chicken Escapee
+(@CGUID+13,@Chicken,571,1,1,5253.287,4513.109,-85.32935,3.036873,120,0,0), -- Chicken Escapee
+(@CGUID+14,@Chicken,571,1,1,5253.494,4514.764,-85.31329,3.717551,120,0,0), -- Chicken Escapee
+(@CGUID+15,@Chicken,571,1,1,5251.158,4518.321,-85.3019,1.592369,120,0,0), -- Chicken Escapee
+(@CGUID+16,@Chicken,571,1,1,5250.385,4516.643,-85.3257,5.044002,120,0,0), -- Chicken Escapee
+(@CGUID+17,@Chicken,571,1,1,5251.159,4515.294,-85.32935,4.694936,120,0,0), -- Chicken Escapee
+(@CGUID+18,@Chicken,571,1,1,5252.267,4516.414,-85.30904,0.5235988,120,0,0), -- Chicken Escapee
+(@CGUID+19,@Chicken,571,1,1,5251.693,4517.859,-85.3243,4.590216,120,0,0), -- Chicken Escapee
+(@CGUID+20,@Chicken,571,1,1,5262.68,4528.738,-84.4747,4.718389,120,0,0), -- Chicken Escapee
+(@CGUID+21,@Chicken,571,1,1,5256.907,4480.617,-84.26879,4.927223,120,0,0), -- Chicken Escapee
+(@CGUID+22,@Chicken,571,1,1,5298.603,4489.708,-93.65161,6.16371,120,0,0), -- Chicken Escapee
+(@CGUID+23,@Chicken,571,1,1,5192.673,4513.661,-89.12463,1.299241,120,0,0), -- Chicken Escapee
+(@CGUID+24,@Chicken,571,1,1,5228.781,4579.799,-96.98647,0.05766594,120,0,0), -- Chicken Escapee
+(@CGUID+25,@Chicken,571,1,1,5230.247,4433.143,-96.82567,5.135688,120,0,0), -- Chicken Escapee
+(@CGUID+26,@Chicken,571,1,1,5180.035,4541.38,-97.84879,0.2208638,120,0,0), -- Chicken Escapee
+(@CGUID+27,@Chicken,571,1,1,5178.563,4538.964,-97.54511,0.9771074,120,0,0), -- Chicken Escapee
+(@CGUID+28,@Chicken,571,1,1,5272.981,4417.033,-96.50356,0.9044432,120,0,0), -- Chicken Escapee
+(@CGUID+29,@Chicken,571,1,1,5214.513,4416.202,-96.53072,2.862281,120,0,0), -- Chicken Escapee
+(@CGUID+30,@Chicken,571,1,1,5160.117,4474.996,-96.96887,4.499754,120,0,0), -- Chicken Escapee
+(@CGUID+31,@Chicken,571,1,1,5263.541,4409.121,-95.87889,1.570796,120,0,0), -- Chicken Escapee
+(@CGUID+32,@Chicken,571,1,1,5234.166,4404.604,-95.12725,1.031549,120,0,0), -- Chicken Escapee
+(@CGUID+33,@Chicken,571,1,1,5297.803,4493.681,-93.65161,5.525303,120,0,0), -- Chicken Escapee
+(@CGUID+34,@Chicken,571,1,1,5260.112,4340.577,-97.61092,1.942801,120,0,0), -- Chicken Escapee
+(@CGUID+35,@Chicken,571,1,1,5208.492,4379.111,-95.49483,0.6675518,120,0,0), -- Chicken Escapee
+(@CGUID+36,@Chicken,571,1,1,5172.742,4368.674,-96.27965,0.8766832,120,0,0), -- Chicken Escapee
+(@CGUID+37,@Chicken,571,1,1,5223.491,4467.19,-96.75621,4.723376,120,0,0), -- Chicken Escapee
+(@CGUID+38,@Chicken,571,1,1,5220.966,4469.76,-96.75582,5.183968,120,0,0), -- Chicken Escapee
+(@CGUID+39,@Chicken,571,1,1,5221.419,4473.14,-96.75536,4.98181,120,0,0), -- Chicken Escapee
+(@CGUID+40,@Chicken,571,1,1,5221.419,4473.14,-96.75536,5.49084,120,0,0), -- Chicken Escapee
+(@CGUID+41,@Chicken,571,1,1,5221.828,4470.711,-96.57594,5.315169,120,0,0), -- Chicken Escapee
+(@CGUID+42,@Chicken,571,1,1,5151.083,4416.434,-96.38642,2.066685,120,0,0), -- Chicken Escapee
+(@CGUID+43,@Chicken,571,1,1,5281.582,4425.185,-96.79945,4.45059,120,0,0), -- Chicken Escapee
+(@CGUID+44,@Chicken,571,1,1,5257.173,4424.231,-95.62836,3.996804,120,0,0); -- Chicken Escapee
+
+-- Aura for Chicken Escapee (thx Discovered)
+DELETE FROM `creature_template_addon` WHERE `entry`=28161;
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(28161,0,0,0,0,'50734'); -- Chicken Escapee - Frenzyheart Chicken: Invisibility
diff --git a/sql/updates/world/2012_05_23_01_world_sai.sql b/sql/updates/world/2012_05_23_01_world_sai.sql
new file mode 100644
index 00000000000..af2fd5409d1
--- /dev/null
+++ b/sql/updates/world/2012_05_23_01_world_sai.sql
@@ -0,0 +1,14 @@
+-- Delete all spawnings of Chicken Escapee via quest_start_scripts
+DELETE FROM `quest_start_scripts` WHERE `command`=10 AND `datalong`=28161;
+
+-- Elder Harkek SAI
+SET @ENTRY := 28138;
+SET @SPELL_SEE_INVIS_CHICKEN := 50735;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,19,0,100,0,12532,0,0,0,85,@SPELL_SEE_INVIS_CHICKEN,2,0,0,0,0,7,0,0,0,0,0,0,0,"Elder Harkek - On Quest Accept - Invoker Cast Frenzyheart Chicken: See Invisibility"),
+(@ENTRY,0,1,0,19,0,100,0,12702,0,0,0,85,@SPELL_SEE_INVIS_CHICKEN,2,0,0,0,0,7,0,0,0,0,0,0,0,"Elder Harkek - On Quest Accept - Invoker Cast Frenzyheart Chicken: See Invisibility"),
+(@ENTRY,0,2,0,20,0,100,0,12532,0,0,0,28,@SPELL_SEE_INVIS_CHICKEN,0,0,0,0,0,7,0,0,0,0,0,0,0,"Elder Harkek - On Quest Complete - Remove Aura Frenzyheart Chicken: See Invisibility"),
+(@ENTRY,0,3,0,20,0,100,0,12702,0,0,0,28,@SPELL_SEE_INVIS_CHICKEN,0,0,0,0,0,7,0,0,0,0,0,0,0,"Elder Harkek - On Quest Complete - Remove Aura Frenzyheart Chicken: See Invisibility");
diff --git a/sql/updates/world/2012_05_23_02_world_sai.sql b/sql/updates/world/2012_05_23_02_world_sai.sql
new file mode 100644
index 00000000000..588f25f1568
--- /dev/null
+++ b/sql/updates/world/2012_05_23_02_world_sai.sql
@@ -0,0 +1,21 @@
+-- Chicken Escapee SAI
+SET @ENTRY := 28161;
+SET @SPELL_NET_CHICKEN := 51959;
+SET @SPELL_INVIS_CHICKEN := 50734;
+SET @SPELL_SCARED_CHICKEN := 51846;
+SET @SPELL_CREATE_QUESTITEM := 51037;
+UPDATE `creature` SET `MovementType`=0,`spawndist`=0,`spawntimesecs`=5 WHERE `id`=@ENTRY;
+UPDATE `creature_template` SET `AIName`='SmartAI',`npcflag`=1 WHERE `entry`=@ENTRY;
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,8,0,100,0,@SPELL_NET_CHICKEN,0,0,0,28,@SPELL_SCARED_CHICKEN,0,0,0,0,0,1,0,0,0,0,0,0,0,"Chicken Escapee - On Spellhit - Remove Aura Scared Chicken"),
+(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,41,4000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Chicken Escapee - On Spellhit - Forced Despawn"),
+(@ENTRY,0,2,3,64,0,100,0,0,0,0,0,85,@SPELL_CREATE_QUESTITEM,2,0,0,0,0,7,0,0,0,0,0,0,0,"Chicken Escapee - On Gossip Hello - Invoker Cast Capture Chicken Escapee"), -- Triggered because of cast-time
+(@ENTRY,0,3,4,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Chicken Escapee - On Gossip Hello - Close Gossip"),
+(@ENTRY,0,4,5,61,0,100,0,0,0,0,0,81,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Chicken Escapee - On Gossip Hello - Set Npcflag None"),
+(@ENTRY,0,5,6,61,0,100,0,0,0,0,0,28,@SPELL_SCARED_CHICKEN,0,0,0,0,0,1,0,0,0,0,0,0,0,"Chicken Escapee - On Gossip Hello - Remove Aura Scared Chicken"),
+(@ENTRY,0,6,0,61,0,100,0,0,0,0,0,41,500,0,0,0,0,0,1,0,0,0,0,0,0,0,"Chicken Escapee - On Gossip Hello - Forced Despawn"),
+(@ENTRY,0,7,8,25,0,100,0,0,0,0,0,11,@SPELL_INVIS_CHICKEN,1,0,0,0,0,1,0,0,0,0,0,0,0,"Chicken Escapee - On Reset - Cast Frenzyheart Chicken: Invisibility"), -- Just in case
+(@ENTRY,0,8,0,61,0,100,0,0,0,0,0,11,@SPELL_SCARED_CHICKEN,0,0,0,0,0,1,0,0,0,0,0,0,0,"Chicken Escapee - On Reset - Cast Scared Chicken");
diff --git a/sql/updates/world/2012_05_23_03_world_gameobject_loot_template.sql b/sql/updates/world/2012_05_23_03_world_gameobject_loot_template.sql
new file mode 100644
index 00000000000..22ecebcae31
--- /dev/null
+++ b/sql/updates/world/2012_05_23_03_world_gameobject_loot_template.sql
@@ -0,0 +1,32 @@
+SET @entry := 35093;
+SET @epic := 25009;
+SET @gem := @entry+1;
+-- Create references
+DELETE FROM `reference_loot_template` WHERE `entry` IN(@entry,@epic,@gem);
+INSERT INTO `reference_loot_template` (`entry`, `item`, `ChanceOrQuestChance`, `lootmode`, `groupid`, `mincountOrRef`, `maxcount`) VALUES
+(@entry,27452,0,1,1,1,1), -- Light Scribe Bands
+(@entry,27453,0,1,1,1,1), -- Averinn's RIng of Slaying
+(@entry,27454,0,1,1,1,1), -- Volcanic Pauldrons
+(@entry,27455,0,1,1,1,1), -- Irondrake faceguard
+(@entry,27456,0,1,1,1,1), -- Raiments of Nature's Breath
+(@entry,27457,0,1,1,1,1), -- Life Bearer's Gauntlets
+(@entry,27458,0,1,1,1,1), -- Oceansong Kilt
+(@entry,27459,0,1,1,1,1), -- Vambraces of Daring
+(@entry,27460,0,1,1,1,1), -- Reavers' Ring
+(@entry,27461,0,1,1,1,1), -- Chestguard of the Prowler
+-- Epics
+(@epic,29238,0,1,1,1,1), -- Lion's Heart Girdle
+(@epic,29264,0,1,1,1,1), -- Tree-Mender's Belt
+(@epic,29346,0,1,1,1,1), -- Feltooth Eviscerator
+(@epic,32077,0,1,1,1,1), -- Wrath Infused Gauntlets
+-- Gems
+(@gem,30592,0,1,1,1,1), -- Steady Chrysoprase
+(@gem,30593,0,1,1,1,1), -- Potent Fire Opal
+(@gem,30594,0,1,1,1,1); -- Regal Chrysoprase
+-- Assign loot to the chest
+SET @GOloot := 21764; -- lootid of Reinforced Fel Iron Chest Heroic
+DELETE FROM `gameobject_loot_template` WHERE `entry`=@GOloot;
+INSERT INTO `gameobject_loot_template` (`entry`, `item`, `ChanceOrQuestChance`, `lootmode`, `groupid`, `mincountOrRef`, `maxcount`) VALUES
+(@GOloot,1,100,1,0,-@entry, 2), -- one from gear
+(@GOloot,2,30,1,0,-@gem,1), -- one gem (30%)
+(@GOloot,3,100,1,0,-@epic,1); -- one from epics
diff --git a/sql/updates/world/2012_05_23_04_world_gameobject.sql b/sql/updates/world/2012_05_23_04_world_gameobject.sql
new file mode 100644
index 00000000000..afcb1e89317
--- /dev/null
+++ b/sql/updates/world/2012_05_23_04_world_gameobject.sql
@@ -0,0 +1,3 @@
+DELETE FROM `gameobject` WHERE `id`=188677;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(318,188677,571,1,1,2567.449,-388.7118,3.573463,-2.879789,0,0,0.639778,0.76856,1200,100,1);
diff --git a/sql/updates/world/2012_05_23_05_world_creature.sql b/sql/updates/world/2012_05_23_05_world_creature.sql
new file mode 100644
index 00000000000..bb162f927bd
--- /dev/null
+++ b/sql/updates/world/2012_05_23_05_world_creature.sql
@@ -0,0 +1,12 @@
+-- Spawn from Sniff
+DELETE FROM `creature` WHERE `id`=34526;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(42161,34526,1,1,1,0,0,-1050.052,-286.7274,159.1137,5.951573,120,0,0,1,0,0,0,0,0);
+-- Template updates
+UPDATE `creature_template` SET `faction_A`=104,`faction_H`=104,`baseattacktime`=2000,`npcflag`=`npcflag`|3,`unit_flags`=`unit_flags`|512 WHERE `entry`=34526; -- Aponi Brightmane
+-- Model data
+UPDATE `creature_model_info` SET `bounding_radius`=1.003375,`combat_reach`=4.3125,`gender`=1 WHERE `modelid`=29249; -- Aponi Brightmane
+-- Addon data
+DELETE FROM `creature_template_addon` WHERE `entry`=34526;
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(34526,0,1,256,0,NULL); -- Aponi Brightmane
diff --git a/sql/updates/world/2012_05_24_00_world_creature_misc.sql b/sql/updates/world/2012_05_24_00_world_creature_misc.sql
new file mode 100644
index 00000000000..ae35b3fba5d
--- /dev/null
+++ b/sql/updates/world/2012_05_24_00_world_creature_misc.sql
@@ -0,0 +1,5 @@
+UPDATE `creature_template` SET `faction_A`=1914,`faction_H`=1914,`unit_flags`=33024 WHERE `entry`=26452;
+
+DELETE FROM `creature_template_addon` WHERE `entry`=26452;
+INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(26452,0,0,0,1,383,'');
diff --git a/sql/updates/world/2012_05_24_01_world_gameobject.sql b/sql/updates/world/2012_05_24_01_world_gameobject.sql
new file mode 100644
index 00000000000..32bbc15494f
--- /dev/null
+++ b/sql/updates/world/2012_05_24_01_world_gameobject.sql
@@ -0,0 +1,3 @@
+DELETE FROM `gameobject` WHERE `id`=175759 AND `guid`=219;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(219,175759,530,1,1,9636.439,-7231.265,16.73347,-2.82743,0,0,-0.9876881,0.1564362,900,100,1);
diff --git a/sql/updates/world/2012_05_25_00_world_sai.sql b/sql/updates/world/2012_05_25_00_world_sai.sql
new file mode 100644
index 00000000000..fa5682db02f
--- /dev/null
+++ b/sql/updates/world/2012_05_25_00_world_sai.sql
@@ -0,0 +1,6 @@
+-- Eye of the Lich King SAI
+SET @ENTRY := 36913; -- NPC entry
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,6,0,0,1000,1000,66,0,0,0,0,0,0,21,150,0,0,0,0,0,0, 'Eye of the Lich King - OOC - face closest player');
diff --git a/sql/updates/world/2012_05_25_01_world_waypoints.sql b/sql/updates/world/2012_05_25_01_world_waypoints.sql
new file mode 100644
index 00000000000..0d2c04bc6bc
--- /dev/null
+++ b/sql/updates/world/2012_05_25_01_world_waypoints.sql
@@ -0,0 +1,149 @@
+-- Bladewing Bloodletter InhabitType fix
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=21033;
+
+-- Bladewing Bloodletter
+SET @NPC := 73849;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `position_x`=1987.838,`position_y`=6153.995,`position_z`=146.4068,`spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUE
+(@PATH,1,1987.838,6153.995,146.4068,0,0,0,100,0),
+(@PATH,2,1981.592,6150.557,146.4068,0,0,0,100,0),
+(@PATH,3,1966.573,6153.941,146.4068,0,0,0,100,0),
+(@PATH,4,1953.747,6155.154,146.4068,0,0,0,100,0),
+(@PATH,5,1941.287,6159.015,146.4068,0,0,0,100,0),
+(@PATH,6,1937.986,6166.096,146.4068,0,0,0,100,0),
+(@PATH,7,1948.558,6175.274,145.1566,0,0,0,100,0),
+(@PATH,8,1959.44,6173.246,145.6567,0,0,0,100,0),
+(@PATH,9,1971.408,6169.729,145.7679,0,0,0,100,0),
+(@PATH,10,1986.747,6168.348,144.8511,0,0,0,100,0),
+(@PATH,11,1998.881,6168.547,144.4066,0,0,0,100,0),
+(@PATH,12,2008.877,6170.33,143.7955,0,0,0,100,0),
+(@PATH,13,2021.965,6166.769,143.657,0,0,0,100,0),
+(@PATH,14,2027.152,6158.083,145.4344,0,0,0,100,0),
+(@PATH,15,2025.352,6149.427,146.4068,0,0,0,100,0),
+(@PATH,16,2011.869,6150.37,146.4068,0,0,0,100,0),
+(@PATH,17,1999.44,6155.886,146.4068,0,0,0,100,0);
+
+-- Bladewing Bloodletter
+SET @NPC := 73850;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `position_x`=2099.588,`position_y`=6126.344,`position_z`=148.8029,`spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUE
+(@PATH,1,2099.588,6126.344,148.8029,0,0,0,100,0),
+(@PATH,2,2094.131,6133.031,148.303,0,0,0,100,0),
+(@PATH,3,2085.703,6143.32,148.303,0,0,0,100,0),
+(@PATH,4,2077.25,6154.094,148.5252,0,0,0,100,0),
+(@PATH,5,2062.893,6175.25,146.414,0,0,0,100,0),
+(@PATH,6,2056.135,6184.647,144.8307,0,0,0,100,0),
+(@PATH,7,2050.784,6189.019,141.9417,0,0,0,100,0),
+(@PATH,8,2044,6181.015,142.6362,0,0,0,100,0),
+(@PATH,9,2044.303,6175.524,143.3028,0,0,0,100,0),
+(@PATH,10,2053.432,6161.702,145.8306,0,0,0,100,0),
+(@PATH,11,2064.378,6145.299,146.7471,0,0,0,100,0),
+(@PATH,12,2064.748,6135.614,147.7195,0,0,0,100,0),
+(@PATH,13,2067.337,6117.838,149.0529,0,0,0,100,0),
+(@PATH,14,2073.338,6100.975,149.664,0,0,0,100,0),
+(@PATH,15,2089.383,6099.217,149.3585,0,0,0,100,0),
+(@PATH,16,2099.147,6111.964,149.1641,0,0,0,100,0);
+
+-- Bladewing Bloodletter
+SET @NPC := 73852;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `position_x`=2180.795,`position_y`=6149.398,`position_z`=145.9554,`spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUE
+(@PATH,1,2180.795,6149.398,145.9554,0,0,0,100,0),
+(@PATH,2,2185.298,6157.3,146.8721,0,0,0,100,0),
+(@PATH,3,2191.635,6164.935,146.6221,0,0,0,100,0),
+(@PATH,4,2203.45,6168.873,146.2055,0,0,0,100,0),
+(@PATH,5,2217.238,6165.062,145.6221,0,0,0,100,0),
+(@PATH,6,2225.425,6159.092,145.1501,0,0,0,100,0),
+(@PATH,7,2228.766,6146.569,145.3166,0,0,0,100,0),
+(@PATH,8,2225.81,6129.76,143.9,0,0,0,100,0),
+(@PATH,9,2203.906,6114.964,145.0111,0,0,0,100,0),
+(@PATH,10,2184.713,6115.808,145.7333,0,0,0,100,0),
+(@PATH,11,2173.165,6123,146.8721,0,0,0,100,0),
+(@PATH,12,2175.542,6139.301,146.8721,0,0,0,100,0);
+
+-- Bladewing Bloodletter
+SET @NPC := 73853;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `position_x`=2153.506,`position_y`=6119.981,`position_z`=148.0267,`spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUE
+(@PATH,1,2153.506,6119.981,148.0267,0,0,0,100,0),
+(@PATH,2,2144.238,6124.169,148.0267,0,0,0,100,0),
+(@PATH,3,2133.341,6127.807,148.0267,0,0,0,100,0),
+(@PATH,4,2120.865,6126.57,148.0267,0,0,0,100,0),
+(@PATH,5,2110.276,6122.198,148.0267,0,0,0,100,0),
+(@PATH,6,2108.702,6111.856,148.0267,0,0,0,100,0),
+(@PATH,7,2113.887,6104.159,148.0267,0,0,0,100,0),
+(@PATH,8,2123.298,6095.088,148.0267,0,0,0,100,0),
+(@PATH,9,2136.37,6099.125,148.0267,0,0,0,100,0),
+(@PATH,10,2146.343,6107.208,148.0267,0,0,0,100,0),
+(@PATH,11,2150.752,6118.491,148.0267,0,0,0,100,0),
+(@PATH,12,2158.115,6126.979,148.0267,0,0,0,100,0),
+(@PATH,13,2168.949,6133.578,148.0267,0,0,0,100,0),
+(@PATH,14,2180.009,6134.229,148.0267,0,0,0,100,0),
+(@PATH,15,2189.201,6129.583,148.0267,0,0,0,100,0),
+(@PATH,16,2192.429,6119.862,148.0267,0,0,0,100,0),
+(@PATH,17,2187.044,6112.755,148.0267,0,0,0,100,0),
+(@PATH,18,2176.445,6111.443,148.0267,0,0,0,100,0),
+(@PATH,19,2166.243,6114.129,148.0267,0,0,0,100,0);
+
+-- Bladewing Bloodletter
+SET @NPC := 73858;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `position_x`=2128.704,`position_y`=6018.743,`position_z`=141.9579,`spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUE
+(@PATH,1,2128.704,6018.743,141.9579,0,0,0,100,0),
+(@PATH,2,2118.804,6016.506,141.9433,0,0,0,100,0),
+(@PATH,3,2100.692,6019.814,141.9433,0,0,0,100,0),
+(@PATH,4,2080.599,6017.728,144.3877,0,0,0,100,0),
+(@PATH,5,2070.564,6003.17,144.1802,0,0,0,100,0),
+(@PATH,6,2079.148,5988.599,143.5968,0,0,0,100,0),
+(@PATH,7,2088.214,5974.081,142.9579,0,0,0,100,0),
+(@PATH,8,2102.427,5966.812,142.208,0,0,0,100,0),
+(@PATH,9,2117.762,5969.647,141.9579,0,0,0,100,0),
+(@PATH,10,2130.632,5977.25,141.9579,0,0,0,100,0),
+(@PATH,11,2135.56,5993.264,141.9579,0,0,0,100,0),
+(@PATH,12,2148.631,6003.11,141.1247,0,0,0,100,0),
+(@PATH,13,2144.206,6017.48,141.9579,0,0,0,100,0);
+
+-- Bladewing Bloodletter
+SET @NPC := 73860;
+SET @PATH := @NPC*10;
+UPDATE `creature` SET `position_x`=1951.455,`position_y`=5919.516,`position_z`=140.4673,`spawndist`=0,`MovementType`=2 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (@NPC,@PATH,1);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUE
+(@PATH,1,1951.455,5919.516,140.4673,0,0,0,100,0),
+(@PATH,2,1953.539,5912.287,140.4179,0,0,0,100,0),
+(@PATH,3,1955.967,5902.248,140.4179,0,0,0,100,0),
+(@PATH,4,1947.568,5889.415,140.4179,0,0,0,100,0),
+(@PATH,5,1938.332,5877.63,140.4179,0,0,0,100,0),
+(@PATH,6,1946.422,5859.488,140.4179,0,0,0,100,0),
+(@PATH,7,1958.004,5850.275,140.4179,0,0,0,100,0),
+(@PATH,8,1967.889,5861.601,140.4673,0,0,0,100,0),
+(@PATH,9,1967.766,5874.843,140.4673,0,0,0,100,0),
+(@PATH,10,1962.739,5881.181,140.4673,0,0,0,100,0),
+(@PATH,11,1965.367,5889.64,140.4673,0,0,0,100,0),
+(@PATH,12,1977.617,5904.389,140.4673,0,0,0,100,0),
+(@PATH,13,1979.003,5918.971,140.4673,0,0,0,100,0),
+(@PATH,14,1969.612,5933.128,140.4673,0,0,0,100,0),
+(@PATH,15,1958.879,5940.208,140.4673,0,0,0,100,0),
+(@PATH,16,1952.594,5927.489,140.4673,0,0,0,100,0);
diff --git a/sql/updates/world/2012_05_25_02_world_creature_template.sql b/sql/updates/world/2012_05_25_02_world_creature_template.sql
new file mode 100644
index 00000000000..fd4c1743f07
--- /dev/null
+++ b/sql/updates/world/2012_05_25_02_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Floating Flavor Eye InhabitType fix
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=21659;
diff --git a/sql/updates/world/2012_05_25_03_world_template.sql b/sql/updates/world/2012_05_25_03_world_template.sql
new file mode 100644
index 00000000000..6ef112f342f
--- /dev/null
+++ b/sql/updates/world/2012_05_25_03_world_template.sql
@@ -0,0 +1,8 @@
+-- Fix unit flags for Blackhand Incarcerator
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`|768 WHERE `entry`=10316;
+-- Fix unit flags for Pyroguard Emberseer
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`|33554688 WHERE `entry`=9816;
+-- Remove hack event script
+DELETE FROM `event_scripts` WHERE `id`=4884;
+-- Remove script to Dragonspire Hall Runes "UBRS"
+UPDATE `gameobject_template` SET `ScriptName`= '' WHERE `entry` BETWEEN 175194 AND 175200;
diff --git a/sql/updates/world/2012_05_26_00_world_scripts.sql b/sql/updates/world/2012_05_26_00_world_scripts.sql
new file mode 100644
index 00000000000..18b0fa2f6b2
--- /dev/null
+++ b/sql/updates/world/2012_05_26_00_world_scripts.sql
@@ -0,0 +1,20 @@
+-- Correction for Obsidian Nullifier EAI
+UPDATE `creature_ai_scripts` SET
+ `action1_param1` = 23
+WHERE `id` = 1531201;
+
+-- Correction for Wildspawn Felsworn and Wildspawn Hellcaller SAI
+UPDATE `smart_scripts` SET
+ `event_phase_mask` = 2,
+ `action_type` = 22,
+ `action_param1` = 1,
+ `target_type` = 1
+WHERE
+ (`entryorguid` = 11457 AND
+ `source_type` = 0 AND
+ `id` = 10 AND
+ `link` = 0) OR
+ (`entryorguid` = 11455 AND
+ `source_type` = 0 AND
+ `id` = 11 AND
+ `link` = 0);
diff --git a/sql/updates/world/2012_05_26_01_world_spell_dbc.sql b/sql/updates/world/2012_05_26_01_world_spell_dbc.sql
new file mode 100644
index 00000000000..7efebc37489
--- /dev/null
+++ b/sql/updates/world/2012_05_26_01_world_spell_dbc.sql
@@ -0,0 +1,4 @@
+-- Fire Shield from 2.0.12 dbc
+DELETE FROM `spell_dbc` WHERE `Id`=13377;
+INSERT INTO `spell_dbc` (`Id`, `Dispel`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `Stances`, `StancesNot`, `Targets`, `CastingTimeIndex`, `AuraInterruptFlags`, `ProcFlags`, `ProcChance`, `ProcCharges`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `RangeIndex`, `StackAmount`, `EquippedItemClass`, `EquippedItemSubClassMask`, `EquippedItemInventoryTypeMask`, `Effect1`, `Effect2`, `Effect3`, `EffectDieSides1`, `EffectDieSides2`, `EffectDieSides3`, `EffectRealPointsPerLevel1`, `EffectRealPointsPerLevel2`, `EffectRealPointsPerLevel3`, `EffectBasePoints1`, `EffectBasePoints2`, `EffectBasePoints3`, `EffectMechanic1`, `EffectMechanic2`, `EffectMechanic3`, `EffectImplicitTargetA1`, `EffectImplicitTargetA2`, `EffectImplicitTargetA3`, `EffectImplicitTargetB1`, `EffectImplicitTargetB2`, `EffectImplicitTargetB3`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectRadiusIndex3`, `EffectApplyAuraName1`, `EffectApplyAuraName2`, `EffectApplyAuraName3`, `EffectAmplitude1`, `EffectAmplitude2`, `EffectAmplitude3`, `EffectMultipleValue1`, `EffectMultipleValue2`, `EffectMultipleValue3`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectMiscValue3`, `EffectMiscValueB1`, `EffectMiscValueB2`, `EffectMiscValueB3`, `EffectTriggerSpell1`, `EffectTriggerSpell2`, `EffectTriggerSpell3`, `EffectSpellClassMaskA1`, `EffectSpellClassMaskA2`, `EffectSpellClassMaskA3`, `EffectSpellClassMaskB1`, `EffectSpellClassMaskB2`, `EffectSpellClassMaskB3`, `EffectSpellClassMaskC1`, `EffectSpellClassMaskC2`, `EffectSpellClassMaskC3`, `MaxTargetLevel`, `SpellFamilyName`, `SpellFamilyFlags1`, `SpellFamilyFlags2`, `SpellFamilyFlags3`, `MaxAffectedTargets`, `DmgClass`, `PreventionType`, `DmgMultiplier1`, `DmgMultiplier2`, `DmgMultiplier3`, `AreaGroupId`, `SchoolMask`, `Comment`) VALUES
+(13377, 1, 0, 2512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 101, 0, 0, 40, 40, 21, 1, 0, -1, -1, 0, 6, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 3000, 0, 0, '0', '0', '0', 0, 0, 0, 0, 0, 0, 13376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 'Fire Shield');
diff --git a/sql/updates/world/2012_05_26_02_world_creature_template.sql b/sql/updates/world/2012_05_26_02_world_creature_template.sql
new file mode 100644
index 00000000000..e51567390b7
--- /dev/null
+++ b/sql/updates/world/2012_05_26_02_world_creature_template.sql
@@ -0,0 +1,5 @@
+-- Training dummies
+UPDATE `creature_template` SET
+ `flags_extra`=0x40000, /* NO_SKILLGAIN */
+ `mechanic_immune_mask`=0x20|0x4000 /* GRIP|BLEED */ /* two of the templates already had bleed immunity, is that correct? */
+WHERE `ScriptName`='npc_training_dummy';
diff --git a/sql/updates/world/2012_05_26_03_world_page_text.sql b/sql/updates/world/2012_05_26_03_world_page_text.sql
new file mode 100644
index 00000000000..9dc285cd99d
--- /dev/null
+++ b/sql/updates/world/2012_05_26_03_world_page_text.sql
@@ -0,0 +1,4 @@
+-- First page of A Steamy Romance Novel: Northern Exposure
+DELETE FROM `page_text` WHERE `entry`=3562;
+INSERT INTO `page_text` (`entry`, `text`, `next_page`) VALUES
+(3562, 'The tiny gnome peered over the railing into the secluded Dalaran courtyard.$B$B"The view from the balcony is amazing. You have to come see!"$B$BArmor legplates creaked as Marcus walked over, taking in a deep breath as he absently scratched his scruffy chin.$B$B"The Hero''s Welcome is no slouch. And there''s something in the room that might interest you."$B$BTavi bounded into the room, pausing only a moment before jumping onto the massive bed. She turned to gaze at Marcus with her huge saucer-like eyes, narrowing them playfully and replacing her glowing smile with a diabolical grin.', 3563);
diff --git a/sql/updates/world/2012_05_26_04_world_creature_template.sql b/sql/updates/world/2012_05_26_04_world_creature_template.sql
new file mode 100644
index 00000000000..911cd45ef8c
--- /dev/null
+++ b/sql/updates/world/2012_05_26_04_world_creature_template.sql
@@ -0,0 +1,4 @@
+-- Training dummies
+UPDATE `creature_template` SET
+ `mechanic_immune_mask` = `mechanic_immune_mask` &~ 0x4000 /* BLEED */
+WHERE `ScriptName`='npc_training_dummy';
diff --git a/sql/updates/world/2012_05_26_05_world_creature_template.sql b/sql/updates/world/2012_05_26_05_world_creature_template.sql
new file mode 100644
index 00000000000..59d69b3fbe1
--- /dev/null
+++ b/sql/updates/world/2012_05_26_05_world_creature_template.sql
@@ -0,0 +1,8 @@
+-- Blade's Edge - Legion - Invis Bunny
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=20736;
+-- Death's Door Warp-Gate Explosion Bunny
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=22502;
+-- Death's Door North Warp-Gate
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=22471;
+-- Death's Door South Warp-Gate
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=22472;
diff --git a/sql/updates/world/2012_05_26_06_world_smart_scripts.sql b/sql/updates/world/2012_05_26_06_world_smart_scripts.sql
new file mode 100644
index 00000000000..397a5ad517a
--- /dev/null
+++ b/sql/updates/world/2012_05_26_06_world_smart_scripts.sql
@@ -0,0 +1,143 @@
+-- Blackhand Dreadweaver SAI
+SET @ENTRY := 9817; -- NPC entry
+SET @SPELL1 := 12739; -- Shadow Bolt
+SET @SPELL2 := 7068; -- Veil of Shadow
+SET @SPELL3 := 12380; -- Shadow Channeling
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,11,0,100,2,0,0,0,0,58,1,@SPELL1,3600,6300,25,30,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - On Reset - Load caster template Cast Shadow Bolt'),
+(@ENTRY,0,1,0,25,0,100,0,0,0,0,0,11,@SPELL3,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - On Reset - Aura Shadow Channeling'),
+(@ENTRY,0,2,3,4,0,100,2,0,0,0,0,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - On Aggro - Cast Shadow Bolt'),
+(@ENTRY,0,3,0,61,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - On Aggro - Call for help'),
+(@ENTRY,0,4,0,0,0,100,2,9400,21400,22000,28800,11,@SPELL2,3,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - Combat - Cast Veil of Shadow'),
+(@ENTRY,0,5,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - HP@15% - Flee for help'),
+(@ENTRY,0,6,7,1,0,100,2,0,8000,12000,14000,92,0,0,1,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - OOC - interupt channeling'),
+(@ENTRY,0,7,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - OOC - set phase 1'),
+(@ENTRY,0,8,0,1,1,100,2,0,0,0,0,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - OOC - emote (phase 1)'),
+(@ENTRY,0,9,10,1,1,100,2,4000,4000,4000,4000,11,@SPELL3,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - OOC - Aura Shadow Channeling (phase 1)'),
+(@ENTRY,0,10,0,61,1,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Dreadweaver - OOC - set phase 0 (phase 1)');
+
+-- Blackhand Summoner SAI
+SET @ENTRY := 9818; -- NPC entry
+SET @SPELL1 := 12466; -- Fireball
+SET @SPELL2 := 15532; -- Frost Nova
+SET @SPELL3 := 15792; -- Summon Blackhand Veteran
+SET @SPELL4 := 15794; -- Summon Blackhand Dreadweaver
+SET @SPELL5 := 12380; -- Shadow Channeling
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,11,0,100,2,0,0,0,0,58,1,@SPELL1,3600,6300,25,30,1,0,0,0,0,0,0,0, 'Blackhand Summoner - On Reset - Load caster template Cast Fireball'),
+(@ENTRY,0,1,0,25,0,100,0,0,0,0,0,11,@SPELL5,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - On Reset - Aura Shadow Channeling'),
+(@ENTRY,0,2,3,4,0,100,2,0,0,0,0,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Blackhand Summoner - On Aggro - Cast Shadow Bolt'),
+(@ENTRY,0,3,0,61,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - On Aggro - Call for help'),
+(@ENTRY,0,4,0,0,0,100,2,11400,11400,12700,16700,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - Combat - Cast Frost Nova'),
+(@ENTRY,0,5,6,0,0,100,3,30000,35000,0,0,11,@SPELL3,1,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - Combat - Cast Summon Blackhand Veteran'),
+(@ENTRY,0,6,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - Combat - say 0'),
+(@ENTRY,0,7,8,0,0,100,3,40000,45000,0,0,11,@SPELL4,1,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - Combat - Cast Summon Blackhand Dreadweaver'),
+(@ENTRY,0,8,0,61,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - Combat - say 1'),
+(@ENTRY,0,9,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - HP@15% - Flee for help'),
+(@ENTRY,0,10,0,1,0,100,2,0,8000,12000,14000,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - OOC - emote');
+-- NPC talk text insert
+DELETE FROM `creature_text` WHERE `entry`=9818;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(9818,0,0,'%s begins to summon in a Blackhand Veteran!',16,0,100,0,0,0,'Blackhand Summoner'),
+(9818,1,0,'%s begins to summon in a Blackhand Dreadweaver!',16,0,100,0,0,0,'Blackhand Summoner');
+
+-- Blackhand Veteran SAI
+SET @ENTRY := 9819; -- NPC entry
+SET @SPELL1 := 15749; -- Shield Charge
+SET @SPELL2 := 14516; -- Strike
+SET @SPELL3 := 11972; -- Shield Bash
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,4,0,100,2,0,0,0,0,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Blackhand Veteran - On Aggro - Cast Shield Charge'),
+(@ENTRY,0,1,0,61,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Veteran - On Aggro - Call for help'),
+(@ENTRY,0,2,0,0,0,100,2,7800,15800,13800,22900,11,@SPELL2,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Blackhand Veteran - Combat - Cast Veil of Shadow'),
+(@ENTRY,0,3,0,0,0,100,2,10000,20000,6000,12000,11,@SPELL3,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Blackhand Veteran - Combat - Cast Veil of Shadow'),
+(@ENTRY,0,4,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Veteran - HP@15% - Flee for help'),
+(@ENTRY,0,5,0,1,0,100,2,0,8000,12000,14000,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Veteran - OOC - emote');
+
+-- Rage Talon Dragonspawn SAI
+SET @ENTRY := 9096; -- NPC entry
+SET @SPELL1 := 15580; -- Strike
+SET @SPELL2 := 12021; -- Fixate
+SET @SPELL3 := 15572; -- Sunder Armor
+SET @SPELL4 := 3391; -- Thrash
+SET @SPELL5 := 8269; -- Frenzy
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,4000,13200,6600,14400,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Rage Talon Dragonspawn - Combat - Cast Strike'),
+(@ENTRY,0,1,0,0,0,100,2,7700,17100,20300,34200,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Rage Talon Dragonspawn - Combat - Cast Fixate'),
+(@ENTRY,0,2,0,0,0,100,2,1400,12300,7100,11700,11,@SPELL3,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Rage Talon Dragonspawn - Combat - Cast Sunder Armor'),
+(@ENTRY,0,3,0,0,0,100,2,8200,17100,5600,18100,11,@SPELL4,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Rage Talon Dragonspawn - Combat - Cast Thrash'),
+(@ENTRY,0,4,5,2,0,100,2,0,30,120000,120000,11,@SPELL5,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Rage Talon Dragonspawn - HP@30% - Cast Frenzy'),
+(@ENTRY,0,5,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Summoner - HP@30% - say 0');
+-- NPC talk text insert
+DELETE FROM `creature_text` WHERE `entry`=9096;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(9096,0,0,'%s goes into a frenzy!',16,0,100,0,0,0,'Rage Talon Dragonspawn');
+
+ -- Scarshield Legionnaire SAI
+SET @ENTRY := 9097; -- NPC entry
+SET @SPELL1 := 15496; -- Cleave
+SET @SPELL2 := 11972; -- Shield Bash
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Scarshield Legionnaire - On Aggro - Call for help'),
+(@ENTRY,0,1,0,0,0,100,2,7800,11500,8000,22100,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Scarshield Legionnaire - Combat - Cast Cleave'),
+(@ENTRY,0,2,0,0,0,100,2,4000,10000,14000,20000,11,@SPELL2,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Scarshield Legionnaire - Combat - Cast Shield Bash');
+
+-- Scarshield Acolyte SAI
+SET @ENTRY := 9045; -- NPC entry
+SET @SPELL1 := 14032; -- Shadow Word: Pain
+SET @SPELL2 := 12039; -- Heal
+SET @SPELL3 := 8362; -- Renew
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Scarshield Acolyte - On Aggro - Call for help'),
+(@ENTRY,0,1,0,0,0,100,2,7700,15700,21900,33500,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Scarshield Acolyte - Combat - Cast Shadow Word: Pain'),
+(@ENTRY,0,2,0,2,0,100,3,0,75,0,0,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Scarshield Acolyte - HP@75% - Cast Heal'),
+(@ENTRY,0,3,0,14,0,100,2,35,8,5000,6000,11,@SPELL3,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Scarshield Acolyte - Friendly hp@35 - Cast Renew on friendly unit');
+
+-- Scarshield Spellbinder SAI
+SET @ENTRY := 9098; -- NPC entry
+SET @SPELL1 := 13748; -- Arcane Bolt
+SET @SPELL2 := 15123; -- Resist Fire
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,11,0,100,2,0,0,0,0,58,1,@SPELL1,1100,3000,30,30,1,0,0,0,0,0,0,0, 'Scarshield Spellbinder - On Reset - Load caster template Cast Arcane Bolt'),
+(@ENTRY,0,1,0,4,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Scarshield Spellbinder - On Aggro - Call for help'),
+(@ENTRY,0,2,0,16,0,100,2,@SPELL2,30,3000,6000,11,@SPELL2,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Blackhand Summoner - Combat - Cast Resist Fire');
+
+-- Blackhand Incarcerator SAI
+SET @ENTRY := 10316; -- NPC entry
+SET @SPELL1 := 15281; -- Encage Emberseer
+SET @SPELL2 := 12039; -- Heal
+SET @SPELL3 := 8362; -- Renew
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM creature_ai_scripts WHERE creature_id=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,3,1000,1000,1000,1000,11,@SPELL1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Incarcerator - OOC - Cast Encage Emberseer'),
+(@ENTRY,0,1,2,38,0,100,2,0,1,0,0,92,0,@SPELL1,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Incarcerator - On data set - Stop Casting Encage Emberseer'),
+(@ENTRY,0,2,4,61,0,100,0,0,0,0,0,19,768,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Incarcerator - On data set - Remove unit flags'),
+(@ENTRY,0,3,4,4,0,100,2,0,0,0,0,9,0,0,0,0,0,0,15,175244,100,0,0,0,0,0, 'Blackhand Incarcerator - On aggro - close emberseer in door'),
+(@ENTRY,0,4,0,61,0,100,0,0,0,0,0,9,0,0,0,0,0,0,15,175705,100,0,0,0,0,0, 'Blackhand Incarcerator - On aggro - close doors'),
+(@ENTRY,0,5,0,0,0,100,2,7800,15800,13800,22900,11,@SPELL2,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Blackhand Incarcerator - Combat - Cast Strike'),
+(@ENTRY,0,6,0,0,0,100,2,10000,20000,6000,12000,11,@SPELL3,0,0,0,0,0,5,0,0,0,0,0,0,0, 'Blackhand Incarcerator - Combat - Cast Encage'),
+(@ENTRY,0,7,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Incarcerator - HP@15% - Flee for help'),
+(@ENTRY,0,8,0,6,0,100,0,0,0,0,0,41,10000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Blackhand Incarcerator - On death - Despawn after 10 sec');
diff --git a/sql/updates/world/2012_05_27_00_world_gameobject_template.sql b/sql/updates/world/2012_05_27_00_world_gameobject_template.sql
new file mode 100644
index 00000000000..5fa3c15a505
--- /dev/null
+++ b/sql/updates/world/2012_05_27_00_world_gameobject_template.sql
@@ -0,0 +1,7 @@
+-- Gameobject updates based on sniffs
+UPDATE `gameobject_template` SET `size` =2.5,`questItem1`=30876,`data0`=57,`data1`=21583 WHERE `entry`=185032;
+UPDATE `gameobject` SET `position_x`=-3420.991,`position_y`=1373.175,`position_z`=257.5233,`orientation`=3.141593 WHERE `id`=185032;
+-- Gameobject loot template
+DELETE FROM `gameobject_loot_template` WHERE `entry`=21583;
+INSERT INTO `gameobject_loot_template` VALUES
+(21583,30876,100,1,0,1,1); -- Quenched Illidari-Bane Blade
diff --git a/sql/updates/world/2012_05_27_01_world_waypoints.sql b/sql/updates/world/2012_05_27_01_world_waypoints.sql
new file mode 100644
index 00000000000..3685b58a629
--- /dev/null
+++ b/sql/updates/world/2012_05_27_01_world_waypoints.sql
@@ -0,0 +1,7 @@
+-- RE FIX Reanimated Frost Wyrm
+DELETE FROM `creature` WHERE `guid` IN (116670,116671,116672,116681,116683,116684,116685,116686,116687,116696,116697,116699,116700,116701);
+UPDATE `creature` SET `MovementType`=2 WHERE `guid` BETWEEN 40497 AND 40505;
+UPDATE `creature_addon` SET `bytes1`=50331648,`bytes2`=1 WHERE `guid` BETWEEN 40497 AND 40505;
+-- Fix Wildhammer Scout
+UPDATE `creature` SET `MovementType`=0 WHERE guid IN (69122,69123,69124,69125,69126,69127);
+UPDATE `creature_addon` SET `path_id`=0 WHERE guid IN (69122,69123,69124,69125,69126,69127);
diff --git a/sql/updates/world/2012_05_27_02_world_creature.sql b/sql/updates/world/2012_05_27_02_world_creature.sql
new file mode 100644
index 00000000000..8ca3ee75c94
--- /dev/null
+++ b/sql/updates/world/2012_05_27_02_world_creature.sql
@@ -0,0 +1,4 @@
+-- Add Missing spawn for Queen Angerboda
+DELETE FROM `creature` WHERE `id`=24023;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(42162,24023,571,1,1,0,0,2855.372,-3869.662,248.6132,2.181662,150,0,0,9291,3231,0,0,0,0);
diff --git a/sql/updates/world/2012_05_27_03_world_creature.sql b/sql/updates/world/2012_05_27_03_world_creature.sql
new file mode 100644
index 00000000000..097f40581a7
--- /dev/null
+++ b/sql/updates/world/2012_05_27_03_world_creature.sql
@@ -0,0 +1,2 @@
+-- Remove Spawns for Compact Harvest Reaper, it should be spawned via script
+DELETE FROM `creature` WHERE `id`=2676;
diff --git a/sql/updates/world/2012_05_27_04_world_smart_scripts.sql b/sql/updates/world/2012_05_27_04_world_smart_scripts.sql
new file mode 100644
index 00000000000..1f7cfa3d19c
--- /dev/null
+++ b/sql/updates/world/2012_05_27_04_world_smart_scripts.sql
@@ -0,0 +1,24 @@
+-- Reconstructed Wyrm SAI
+SET @ENTRY := 27693;
+SET @SPELL1 := 49386; -- Not in dbc
+SET @SPELL2 := 49343; -- Frost Breath Strafe
+UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,11,0,100,0,0,0,0,0,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Reconstructed Wyrm - On spawn - cast aura'),
+(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,53,0,@ENTRY,0,0,0,0,1,0,0,0,0,0,0,0,'Reconstructed Wyrm - On spawn - Load Path');
+-- waypoints for Reconstructed Wyrm
+DELETE FROM `waypoints` WHERE `entry` IN (@ENTRY);
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@ENTRY,1,4685.845,1130.759,150.1177, 'Reconstructed Wyrm'),
+(@ENTRY,2,4686.284,1131.658,150.1177, 'Reconstructed Wyrm'),
+(@ENTRY,3,4688.699,1166.089,161.2737, 'Reconstructed Wyrm'),
+(@ENTRY,4,4702.308,1212.668,161.2737, 'Reconstructed Wyrm'),
+(@ENTRY,5,4733.535,1260.209,169.6348, 'Reconstructed Wyrm'),
+(@ENTRY,6,4751.818,1293.699,175.9404, 'Reconstructed Wyrm'),
+(@ENTRY,7,4794.479,1345.154,199.5372, 'Reconstructed Wyrm'),
+(@ENTRY,8,4812.264,1373.523,219.8613, 'Reconstructed Wyrm');
+-- Fix spawns
+UPDATE `creature` SET `position_x`=4685.845,`position_y`=1130.759,`position_z`=150.1177,`spawntimesecs`=120,`spawndist`=0,`MovementType`=0 WHERE `guid`=100211;
+DELETE FROM `creature` WHERE `guid` IN (100256,133240,133241);
+DELETE FROM `creature_addon` WHERE `guid` IN (100256,133240,133241);
diff --git a/sql/updates/world/2012_05_27_05_world_gameobject.sql b/sql/updates/world/2012_05_27_05_world_gameobject.sql
new file mode 100644
index 00000000000..66fbfd0afca
--- /dev/null
+++ b/sql/updates/world/2012_05_27_05_world_gameobject.sql
@@ -0,0 +1,13 @@
+-- [QUEST] Attunement to Dalaran
+SET @GUID := 320;
+-- Adds the gameobject to recognize the zone
+DELETE FROM `gameobject` WHERE `id`=300193;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`)
+VALUES
+(@GUID,300193,571,1,1,3343.8,2502.85,-15.1381,5.74342,0,0,0.266617,-0.963802,300,0,1);
+-- [SAI] NPC Attunement To Dalaran Kill Credit Bunny 27135
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=27135;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=27135 AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`)
+VALUES
+(27135,0,0,0,8,0,100,1,48021,1,0,0,33,27135,0,0,0,0,0,7,0,0,0,0,0,0,0, 'On spellhit - give kill credit - Attunement to Dalaran Kill Credit Bunny');
diff --git a/sql/updates/world/2012_05_27_06_world_creature.sql b/sql/updates/world/2012_05_27_06_world_creature.sql
new file mode 100644
index 00000000000..1074465a0be
--- /dev/null
+++ b/sql/updates/world/2012_05_27_06_world_creature.sql
@@ -0,0 +1,113 @@
+-- Tukemuth
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32400;
+INSERT INTO `smart_scripts` VALUES
+(32400,0,0,0,9,0,100,0,0,5,9000,13000,11,50410,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Tukemuth - Cast Tusk Strike'),
+(32400,0,1,0,0,0,100,0,9000,17000,15000,22000,11,57066,0,0,0,0,0,0,0,0,0,0,0,0,0, 'Tukemuth - Cast Trample');
+UPDATE `creature_template` SET faction_A=7,faction_H=7,mindmg=2926.0,maxdmg=3542.0,skinloot=70209,spell1=50410,spell2=57066,attackpower=3384,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=2147483647 where entry=32400;
+
+-- Fumblub Gearwind
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32358;
+INSERT INTO `smart_scripts` VALUES
+(32358,0,0,0,0,0,100,0,4000,6000,12000,15000,11,60906,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Fumblub Gearwind - Cast Machine Gun');
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=2792,maxdmg=3376,spell1=60906,attackpower=3384,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=2147483647,type_flags=2048,InhabitType=4 where entry=32358;
+UPDATE `creature_addon` SET mount=22719,bytes1=33554432 where guid=151938;
+
+-- Old Crystalbark
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32357;
+INSERT INTO `smart_scripts` VALUES
+(32357,0,0,0,0,0,100,0,3700,16200,19200,28000,11,50506,0,0,0,0,0,0,0,0,0,0,0,0,0, 'Old Crystalbark - Cast Mark of Detonation'),
+(32357,0,1,0,0,0,100,0,1625,8100,9600,14000,11,60903,0,0,0,0,0,0,0,0,0,0,0,0,0, 'Old Crystalbark - Cast Arcane Breath');
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=3231.0,maxdmg=3309.0,spell1=60903,spell2=50506,attackpower=3214,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=2147483647 where entry=32357;
+
+-- Terror Spinner - Tameable
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32475;
+INSERT INTO `smart_scripts` VALUES
+(32475,0,0,0,0,0,100,0,4000,6000,12000,15000,11,36839,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Terror Spinner - Cast Impairing Poison'),
+(32475,0,1,0,0,0,100,0,1625,8100,9600,14000,11,28428,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Terror Spinner - Cast Instant Poison');
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=3625.0,maxdmg=4301.0,spell1=32475,spell2=28428,attackpower=3963,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=66624,name= 'Terror Spinner' where entry=32475;
+
+-- Hildana Deathstealer
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32495;
+INSERT INTO `smart_scripts` VALUES
+(32495,0,0,0,0,0,100,1,0,0,0,0,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0, 'Hildana Deathstealer - Enter phase 1'),
+(32495,0,1,2,0,1,100,0,3000,6000,4000,6000,11,60991,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Hildana Deathstealer - Cast Lash'),
+(32495,0,2,0,61,1,100,0,0,0,0,0,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0, 'Hildana Deathstealer - Enter phase 2'),
+(32495,0,3,0,0,2,100,0,3000,5000,9000,11000,11,57547,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Hildana Deathstealer - Cast Touch of the Valkyr'),
+(32495,0,4,0,0,2,100,0,12000,13000,13000,15000,22,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Hildana Deathstealer - timer back to phase 1');
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=4715,maxdmg=5474,attackpower=5094,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=2147483647 where entry=32495;
+
+-- Syreian the Bonecarver
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=2926,maxdmg=3542,spell1=38952,spell2=47168,spell3=50092,attackpower=3234,dmg_multiplier=1.0,mechanic_immune_mask=2147483647 where entry=32438;
+
+-- Icehorn - Tameable
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32361;
+INSERT INTO `smart_scripts` VALUES
+(32361,0,0,0,0,0,100,0,4500,6750,6750,9750,11,57468,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Icehorn - Cast Romp');
+UPDATE `creature_template` SET type_flags= '1',faction_A=14,faction_H=14,mindmg=2792,maxdmg=3376,spell1=57468,attackpower=3084,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=66624,skinloot=70211 where entry=32361;
+
+-- King Ping
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32398;
+INSERT INTO `smart_scripts` VALUES
+(32398,0,0,0,0,0,100,0,1600,8000,12400,13000,11,61115,0,0,0,0,0,2,0,0,0,0,0,0,0, 'King Ping - Cast Belly Flop'),
+(32398,0,1,0,0,0,100,0,800,2600,4200,6800,11,50169,0,0,0,0,0,2,0,0,0,0,0,0,0, 'King Ping - Cast Flipper Thwack');
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=2792,maxdmg=3376,spell1=61115,spell2=50169,attackpower=3234,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=2147483647 WHERE entry=32398;
+
+-- High Thane Jorfus
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32501;
+INSERT INTO `smart_scripts` VALUES
+(32501,0,0,0,0,0,100,0,1600,3200,6400,12800,11,60950,0,0,0,0,0,2,0,0,0,0,0,0,0, 'High Thane Jorfus - Cast Blood Plague'),
+(32501,0,1,0,0,0,100,2,10000,20000,10000,20000,11,60945,0,0,0,0,0,2,0,0,0,0,0,0,0, 'High Thane Jorfus - Cast Blood Strike'),
+(32501,0,2,0,0,0,100,0,8000,13000,16000,21000,11,60953,1,0,0,0,0,5,0,0,0,0,0,0,0, 'High Thane Jorfus - Cast Death and Decaye'),
+(32501,0,3,0,0,0,100,4,1000,1400,8500,20500,11,60949,0,0,0,0,0,5,0,0,0,0,0,0,0, 'High Thane Jorfus - Cast Death Coil'),
+(32501,0,4,0,0,0,100,2,5000,9000,15000,22000,11,60951,0,0,0,0,0,2,0,0,0,0,0,0,0, 'High Thane Jorfus - Cast Frost Strike');
+UPDATE `creature_template` set faction_A=14,faction_H=14,mindmg=4894,maxdmg=5649,spell1=60950,spell2=60945,spell3=60953,spell4=60949,spell5=60951,attackpower=5271,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=2147483647 WHERE entry=32501;
+
+-- Perobas the Bloodthirster
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32377;
+INSERT INTO `smart_scripts` VALUES
+(32377,0,0,0,0,0,100,0,5000,8000,12000,15000,11,50046,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Perobas the Bloodthirster - Cast Gnaw Bone'),
+(32377,0,1,0,2,0,100,0,0,50,10000,13000,11,50271,1,0,0,0,0,1,0,0,0,0,0,0,0, 'Perobas the Bloodthirster - Cast Killing Rage');
+UPDATE `creature_template` set faction_A=14,faction_H=14,mindmg=2792,maxdmg=3376,spell1=50046,spell2=52071,attackpower=3084,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=66624,skinloot=70209 where entry=32377;
+
+-- Aotona - Tameable
+UPDATE `creature` SET curhealth=15952 where id=32481;
+UPDATE `creature_template` SET exp=2,armor_mod=1.0,minlevel=75,maxlevel=75,faction_A=14,faction_H=14,mindmg=3376,maxdmg=4034,spell1=49865,spell2=51144,attackpower=3705,dmg_multiplier=1.0,mechanic_immune_mask=66624 where entry=32481;
+
+-- Griegen
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32471;
+INSERT INTO `smart_scripts` VALUES
+(32471,0,0,0,0,0,100,0,5000,8000,9000,12000,11,51334,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Griegen - Cast Smash');
+UPDATE `creature` set curhealth=15952 where id=32471;
+UPDATE `creature_template` set exp=2,armor_mod=1.0,minlevel=75,maxlevel=75,faction_A=14,faction_H=14,mindmg=3376,maxdmg=4034,spell1=51334,attackpower=3705,dmg_multiplier=1.0,AIName= 'SmartAI',mechanic_immune_mask=2147483647 where entry=32471;
+
+-- Seething Hate
+UPDATE `creature_template` SET mindmg=2926,maxdmg=3542,attackpower=3234,dmg_multiplier=1.0,mechanic_immune_mask=66624 WHERE entry=32429;
+
+-- Vigdis the War Maiden
+DELETE FROM `creature_template_addon` WHERE entry=32386;
+INSERT INTO `creature_template_addon` VALUES
+(32386,0,28040,0,0,0,NULL);
+UPDATE `creature` SET spawndist=20.0,MovementType=1 WHERE id=32386;
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=2792,maxdmg=3376,attackpower=3084,dmg_multiplier=1.0,mechanic_immune_mask=2147483647,InhabitType=1 where entry=32386;
+
+-- King Krush - Tameable
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mechanic_immune_mask=66624 WHERE entry=32485;
+
+-- Scarlet Highlord Daion
+UPDATE `creature_template` SET faction_A=14,faction_H=14,mindmg=2926,maxdmg=3542,attackpower=3234,dmg_multiplier=1.0,mechanic_immune_mask=66624 WHERE entry=32417;
+
+-- Crazed Indu'le Survivor
+UPDATE `creature_template` SET mindmg=2926,maxdmg=3542,attackpower=3234,dmg_multiplier=1.0,mechanic_immune_mask=66624 WHERE entry=32409;
+
+-- Grocklar
+UPDATE `creature_template` SET mindmg=3137,maxdmg=3777,attackpower=3457,dmg_multiplier=1.0,mechanic_immune_mask=66624 WHERE entry=32422;
+
+-- Loque'nahak - Tameable
+UPDATE `creature_template` SET type_flags= '1',mechanic_immune_mask=66624 WHERE entry=32422;
+
+-- Zuldrak Sentinel
+DELETE FROM `smart_scripts` WHERE `entryorguid`=32447;
+INSERT INTO `smart_scripts` VALUES
+(32447,0,0,0,0,0,100,0,0,5,9000,13000,11,55196,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Zuldrak Sentinel - Cast Stomp'),
+(32447,0,1,0,0,0,100,0,15000,20000,21000,35000,11,54565,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Zuldrak Sentinel - Cast Whammy');
+UPDATE `creature_template` SET mindmg= '3905',maxdmg= '4600',attackpower= '4252',dmg_multiplier= '1.0',mechanic_immune_mask= '66624',spell1= '54565',spell2= '55196',AIName= 'SmartAI' WHERE entry= '32447';
diff --git a/sql/updates/world/2012_05_27_07_world_game_event.sql b/sql/updates/world/2012_05_27_07_world_game_event.sql
new file mode 100644
index 00000000000..eff4a9e7652
--- /dev/null
+++ b/sql/updates/world/2012_05_27_07_world_game_event.sql
@@ -0,0 +1,8 @@
+UPDATE `game_event` SET `start_time` ='2012-06-21 00:01:00' WHERE `eventEntry`=1; -- Midsummer Fire Festival
+UPDATE `game_event` SET `start_time` ='2012-09-19 00:01:00' WHERE `eventEntry`=50; -- Pirates' Day
+UPDATE `game_event` SET `start_time` ='2012-09-20 00:01:00' WHERE `eventEntry`=24; -- Brewfest
+UPDATE `game_event` SET `start_time` ='2012-09-24 00:01:00' WHERE `eventEntry`=11; -- Harvest Festival
+UPDATE `game_event` SET `start_time` ='2012-09-18 01:00:00' WHERE `eventEntry`=11; -- Hallow's End
+UPDATE `game_event` SET `start_time` ='2012-11-01 01:00:00' WHERE `eventEntry`=51; -- Day of the Dead
+UPDATE `game_event` SET `start_time` ='2012-11-18 01:00:00' WHERE `eventEntry`=26; -- Pilgrim's Bounty
+UPDATE `game_event` SET `start_time` ='2012-12-15 06:00:00' WHERE `eventEntry`=2; -- Winter Veil
diff --git a/sql/updates/world/2012_05_27_07_world_waypoints.sql b/sql/updates/world/2012_05_27_07_world_waypoints.sql
new file mode 100644
index 00000000000..bd6aa2d0fc1
--- /dev/null
+++ b/sql/updates/world/2012_05_27_07_world_waypoints.sql
@@ -0,0 +1,8 @@
+-- Fix pathing for Thiassi the Lightning Bringer
+DELETE FROM `creature_addon` WHERE `guid`=106554;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`) VALUES (106554,1065540,1);
+
+-- bio's screwed up movement for rares. Fix for some
+UPDATE `creature` SET `spawndist`=10,`MovementType`=1 WHERE `id` IN (32400,32417,32422,32429);
+UPDATE `creature_addon` SET `path_id`=2026020 WHERE `guid`=202602;
+UPDATE `waypoint_data` SET `id`=2026020 WHERE `id`=2500060;
diff --git a/sql/updates/world/2012_05_28_00_world_creature_ai_scripts.sql b/sql/updates/world/2012_05_28_00_world_creature_ai_scripts.sql
new file mode 100644
index 00000000000..aef4e4c6f67
--- /dev/null
+++ b/sql/updates/world/2012_05_28_00_world_creature_ai_scripts.sql
@@ -0,0 +1,9 @@
+-- Fix recent DB errors
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=27135; -- Attunement To Dalaran Kill Credit
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=32400; -- Tukemuth
+
+-- Fix recent DB errors (credits to Vincent-Michael)
+DELETE FROM `creature_addon` WHERE `guid` = 2593;
+DELETE FROM `creature_template_addon` WHERE `entry` = 2676;
+INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(2676,0,0,0,4097,0,NULL);
diff --git a/sql/updates/world/2012_05_28_01_world_creature.sql b/sql/updates/world/2012_05_28_01_world_creature.sql
new file mode 100644
index 00000000000..d39aa7230b5
--- /dev/null
+++ b/sql/updates/world/2012_05_28_01_world_creature.sql
@@ -0,0 +1,18 @@
+-- Spawn Deadmire
+SET @GUID := 33909;
+SET @NPC := @GUID*10;
+DELETE FROM `creature` WHERE `id`=4841;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(@GUID,4841,1,1,1,0,0,-3949.688,-3471.041,29.15445,4.288023,360,0,0,1902,0,0,0,0,0); -- respawn Deadmire on old guid
+-- Set movement info
+UPDATE `creature_addon` SET `path_id`=@NPC WHERE `guid`=@GUID;
+UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=4841;
+-- Add Waypoint Data
+DELETE FROM `waypoint_data` WHERE `id`=@NPC;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@NPC,1,-3942.966,-3455.51,28.89743,0,0,0,0,0,0),
+(@NPC,2,-3943.117,-3456.498,28.89743,0,0,0,0,0,0),
+(@NPC,3,-3948.063,-3467.443,29.64743,0,0,0,0,0,0),
+(@NPC,4,-3950.123,-3472.004,29.02243,0,0,0,0,0,0),
+(@NPC,5,-3953.303,-3479.054,28.64743,0,0,0,0,0,0),
+(@NPC,6,-3953.303,-3479.054,28.64743,0,0,0,0,0,0);
diff --git a/sql/updates/world/2012_05_28_02_world_creature.sql b/sql/updates/world/2012_05_28_02_world_creature.sql
new file mode 100644
index 00000000000..77da626d89e
--- /dev/null
+++ b/sql/updates/world/2012_05_28_02_world_creature.sql
@@ -0,0 +1,26 @@
+-- Spawn Deadmire
+SET @GUID := 202606;
+SET @NPC := @GUID*10;
+-- Set movement info
+UPDATE `creature_addon` SET `path_id`=@NPC WHERE `guid`=@GUID;
+UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=32630;
+-- Add Waypoint Data
+DELETE FROM `waypoint_data` WHERE `id`=@NPC;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@NPC,1,7024.75,-1625.538,957.3694,0,0,0,0,0,0),
+(@NPC,2,7025.494,-1624.87,957.3694,0,0,0,0,0,0),
+(@NPC,3,7167.578,-1501.694,962.5693,0,0,0,0,0,0),
+(@NPC,4,7440.402,-1295.861,997.2911,0,0,0,0,0,0),
+(@NPC,5,7210.958,-1046.892,1006.18,0,0,0,0,0,0),
+(@NPC,6,6998.465,-1076.847,1024.819,0,0,0,0,0,0),
+(@NPC,7,6874.249,-1097.382,927.736,0,0,0,0,0,0),
+(@NPC,8,6614.792,-875.7547,812.7645,0,0,0,0,0,0),
+(@NPC,9,6563.275,-811.7673,749.8757,0,0,0,0,0,0),
+(@NPC,10,6299.502,-797.577,529.1257,0,0,0,0,0,0),
+(@NPC,11,6194.549,-1013.144,501.5424,0,0,0,0,0,0),
+(@NPC,12,6319.254,-1251.661,468.6258,0,0,0,0,0,0),
+(@NPC,13,6309.161,-1537.857,615.0423,0,0,0,0,0,0),
+(@NPC,14,6748.211,-1664.307,919.3118,0,0,0,0,0,0),
+(@NPC,15,6913.308,-1725.261,954.7917,0,0,0,0,0,0),
+(@NPC,16,7167.578,-1501.694,962.5693,0,0,0,0,0,0),
+(@NPC,17,7440.402,-1295.861,997.2911,0,0,0,0,0,0);
diff --git a/sql/updates/world/2012_05_28_03_waypoint_data.sql b/sql/updates/world/2012_05_28_03_waypoint_data.sql
new file mode 100644
index 00000000000..aa0e0ddd5ef
--- /dev/null
+++ b/sql/updates/world/2012_05_28_03_waypoint_data.sql
@@ -0,0 +1,3 @@
+-- correct waypointid to guid*10
+UPDATE `waypoint_data` SET `id`=2026020 WHERE `id`=2026060;
+UPDATE `creature_addon` SET `path_id`=2026020 WHERE `guid`=202602;
diff --git a/sql/updates/world/2012_05_28_04_world_creature_template.sql b/sql/updates/world/2012_05_28_04_world_creature_template.sql
new file mode 100644
index 00000000000..d8c9a15e412
--- /dev/null
+++ b/sql/updates/world/2012_05_28_04_world_creature_template.sql
@@ -0,0 +1,3 @@
+-- malcroms request
+UPDATE `creature_template` SET `MovementType`=0 WHERE `entry`=32630;
+UPDATE `creature` SET `MovementType`=2 WHERE `id`=32630;
diff --git a/sql/updates/world/2012_05_28_05_world_creature.sql b/sql/updates/world/2012_05_28_05_world_creature.sql
new file mode 100644
index 00000000000..c7d4af5b494
--- /dev/null
+++ b/sql/updates/world/2012_05_28_05_world_creature.sql
@@ -0,0 +1,216 @@
+-- Guid for inserts
+SET @NEXT := 134704; -- need 129
+-- Correct Phasing/Quest relation for the Argent Vanguard,Crusader's Pinnacle,Scourgeholme,The Breach,Valley of Echoes and Pit of Fiends (I didn't use Phase IV spell id: 57675 since it sets phase to one,I don't see the point since that's the default phase)
+-- The spells are Argent Vanguard Chapter I (id: 57673),Argent Vanguard Chapter II (id: 57569) and Argent Vanguard Chapter III (id: 57674)
+DELETE FROM `spell_area` WHERE `spell` IN (57673,57569,57674);
+INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_start_active`,`quest_end`,`aura_spell`,`racemask`,`gender`,`autocast`) VALUES
+(57673,4501,0,0,13070,0,0,2,1),
+(57673,4504,0,0,13070,0,0,2,1),
+(57673,4505,0,0,13086,0,0,2,1),
+(57673,4506,0,0,13086,0,0,2,1),
+(57673,4580,0,0,13086,0,0,2,1),
+(57673,4593,0,0,13086,0,0,2,1),
+(57569,4501,13070,0,13086,0,0,2,1),
+(57569,4504,13070,0,13086,0,0,2,1),
+(57674,4501,13086,0,13141,0,0,2,1),
+(57674,4504,13086,0,13141,0,0,2,1),
+(57674,4505,13086,0,13141,0,0,2,1),
+(57674,4506,13086,0,13141,0,0,2,1),
+(57674,4593,13086,0,13141,0,0,2,1),
+(57674,4580,13086,0,13141,0,0,2,1);
+-- Phase for objects in Crusader's Pinnacle (Scourge controlled)
+UPDATE `gameobject` SET `phaseMask`=194 WHERE `id` IN (192936,192938,192953,192954,192955,192956,192957,192982,192995,193003,192958,192959,192960,192961,192962,192963,192964,192965,192966,192967,192968,192969,192970,192971,192972,192973,192974,192975,192976,192977,192978,192979,192980,192981,192983,192985,192986,192987,192988,192989,192990,192991,192994,192934,192935,192992,192993,193002,192997,192996,192999,193000,193001,192936,192937);
+-- Phase for a few objects in Scourgeholme
+UPDATE `gameobject` SET `phaseMask`=195 WHERE `id` IN (192576,192577,192575,192579,192578);
+-- Misc Objects in Argent Vanguard to be visible in all phases
+UPDATE `gameobject` SET `phaseMask`=195 WHERE `guid` IN (62021,62027,62356,62359,62353,62071,62061);
+-- Duplicates of the objects in Argent Vanguard,no need to have 2 of each if they have no special interaction with a particular phase
+DELETE FROM `gameobject` WHERE `guid` IN (100101,100484,100097,100433,100098,100432,100104,100485);
+-- Phase for the walls and towers for all phases except during "The last line of defense"
+UPDATE `gameobject` SET `phaseMask`=131 WHERE `guid` IN (61089,61066,61027,61056,61004,60999,60996,60976);
+-- Phase for walls during "The last line of defense",they need a separate object here because they interact directly with the phase
+UPDATE `gameobject` SET `phaseMask`=64 WHERE `guid` IN (100441,100440,100438,100439,100437,100436,100435,100434);
+-- Phase for objects in The Breach after "The last line of defense"
+UPDATE `gameobject` SET `phaseMask`=129 WHERE `id` IN (192797,192798,192799,192800,192801,192802,192803,192804,192805);
+-- Phase for objects in The Breach before "The last line of defense"
+UPDATE `gameobject` SET `phaseMask`=66 WHERE `id` IN (192161,192162,192166,192806,192807,192808,192809,192810,192811,192812,192813,192814,192815,192816,192817);
+-- Phase for NPCs in Argent Vanguard that should be in all phases (except during "The last line of defense)
+UPDATE `creature` SET `phaseMask`=131 WHERE `guid` IN (121664,124618,124483,121684,121671,121696,121668,121693,121669,121677,121697,121666,121662,121678,121670,121680,121685,121683,121665,121682,121686,121663,121695,124527,124491,124661,123618,124497,124323,124340,124332,207301,207298,207296,207297,207299,207300,124442);
+-- Same as with the objects,delete duplicate creatures that have no direct interaction with a particular phase,a single creature can fulfill that role.
+DELETE FROM `creature` WHERE `guid` IN (207239,207264,207260,207251,207245,207256,207242,207254,207243,207246,207257,207241,207237,207247,207244,207248,207252,207250,207240,207249,207253,207238,207255,207263,207261,207265,207258,207262,207259);
+-- Phase for NPCs only present until "The last line of defense"
+UPDATE `creature` SET `phaseMask`=2 WHERE `guid` IN (207229,207228,207234,207233,207232,207235,207236,207227,207222,207230,207231,207223,202409,207225,207226);
+-- Phase for Siegemaster Fezzik (He is the only one present up until and during "the last line of defense")
+UPDATE `creature` SET `phaseMask`=66 WHERE `guid`=207224;
+-- Phase for NPCs in the Valley of Echoes before "The last line of defense"
+UPDATE `creature` SET `phaseMask`=2 WHERE `guid` IN (207290,207289,207288,207294,207293,207295,207284,207282,207286,207285,207287,207291,207283,207281,207292,207280);
+-- Phase for Creatures on the Valley of Echoes before "The last line of defense"
+UPDATE `creature` SET `phaseMask`=2 WHERE `id` IN (30206,30273);
+-- Phase for mobs and NPCs in the Valley of Echoes and The breach after "The last line of defense"
+UPDATE `creature` SET `phaseMask`=129 WHERE `guid` IN (124320,124302,124297,124317,124338,124333,124329,124341,124301,124307,124319,124339,124337,124324,124298,124308,124303,124302,124320,124330,124326,124309,124335,124318,124299,124311,124310,124325,124327,124300,124315,124314,124313,124312,124321,124336,124334,124331,124328,121679,121667,121681,121694,121700,121692,203393,121698,121672);
+-- Set correct faction for Crusade Architect Silas
+UPDATE `creature_template` SET `faction_H`=2070,`faction_A`=2070 WHERE `entry`=30686;
+-- Mount for Highlord Tirion Fordring in Argent Vanguard after "the last line of defense"
+DELETE FROM `creature_template_addon` WHERE `entry`=30677;
+INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(30677,0,2325,0,0,0,NULL);
+-- Phase for Father Gustav in Valley of Echoes after "the last line of defense"
+UPDATE `creature` SET `phaseMask`=128 WHERE `id`=30683;
+-- Lich King flag,non attackable unless he engages first
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry`=30443;
+-- Set right exp value and level for Underking Talonox
+UPDATE `creature_template` SET `exp`=2,`minlevel`=79,`maxlevel`=79 WHERE `entry`=30830;
+-- Set the right phase for the already existing creatures (Including Captured crusaders)
+UPDATE `creature` SET `phaseMask`=1 WHERE `id` IN (31037,31039,31043,31040);
+UPDATE `creature` SET `phaseMask`=2 WHERE `id` IN (30544,30407);
+-- Set flag extra to 64 for creatures in Scourgeholme during the first phase,they should not give XP.
+UPDATE `creature_template` SET `flags_extra`=64 WHERE `entry` IN (30544,30407);
+-- Set right inhabit type for the second phase version of Wrathstrike Gargoyle (They should be able to fly)
+UPDATE `creature_template` SET `InhabitType`=7 WHERE `entry`=30482;
+-- Set right faction for previously not spawned creatures
+UPDATE `creature_template` SET `faction_H`=2068,`faction_A`=2068 WHERE `entry` IN (30541,30203,30543,30202,30482,30830,30831,30829,30443);
+-- ----------------
+-- -- Spawnfixes --
+-- ----------------
+-- Add the right mobs for each phase,they have a different id for each phase. Some mobs are only on 2 phases,not all 3 (Reanimated crusader and Gargoyles). They have the exact same points as their already spawned counterparts which belong to the final phase.
+-- NOTE: The ones with a currentwaypoint set have it simply because that's the waypoint the of their already spawned counterpart. I use it simply as a guideline for me to create the paths for all these new ones and its changed back to 0 after I set the new paths with creature_addon later in this SQL.
+DELETE FROM `creature` WHERE `id` IN (30596,30686,30714,30677,30443,30829,30830,30831,30203,30543,30202,30541,30482,30333,30205);
+DELETE FROM `creature` WHERE `guid` BETWEEN @NEXT+83 and @NEXT+89 AND `id`=30544;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`MovementType`) VALUES
+-- Add missing creatures (Highlord Tirion Fordring in Argent Vanguard after "the last line of defense",The Ebon Watcher,Crusade Architect Silas and Crusade Engineer Spitzpatrick in Valley of Echoes after "the last line of defense")
+(@NEXT,30596,571,1,128,6376.657227,239.053055,396.047028,4.8044,300,0,0,0),
+(@NEXT+1,30686,571,1,128,6370.632324,232.238022,396.046051,1.352186,300,0,0,0),
+(@NEXT+2,30714,571,1,128,6371.689941,239.699265,396.899902,4.792617,300,0,0,0),
+(@NEXT+3,30677,571,1,128,6259.583496,50.420799,388.508667,0.846391,300,0,0,0),
+-- Add missing unique creatures in Scorugeholme (The Lich king,Salranax the Flesh Render,High Priest Yath'amon and Underking Talonox -- One for each phase they are in,since they are hostile mobs)
+(@NEXT+4,30443,571,1,2,6697.528809,583.609131,428.332916,4.108414,300,0,0,0),
+(@NEXT+5,30829,571,1,2,6838.717285,594.347046,426.230652,4.020655,300,0,0,0),
+(@NEXT+6,30831,571,1,2,6869.587891,422.763397,470.783386,1.087875,300,0,0,0),
+(@NEXT+7,30830,571,1,2,7211.243652,667.650146,488.187103,2.689305,300,0,0,0),
+(@NEXT+8,30829,571,1,128,6838.717285,594.347046,426.230652,4.020655,300,0,0,0),
+(@NEXT+9,30831,571,1,128,6869.587891,422.763397,470.783386,1.087875,300,0,0,0),
+(@NEXT+10,30830,571,1,128,7211.243652,667.650146,488.187103,2.689305,300,0,0,0),
+-- Forgotten Depths High Priest
+(@NEXT+11,30203,571,1,2,6879.92,493.899,467.957,1.67552,300,0,0,0),
+(@NEXT+12,30203,571,1,2,6916.07,467.629,468.799,0.977384,300,0,0,0),
+(@NEXT+13,30203,571,1,2,6858.02,453.902,471.767,4.7822,300,0,0,0),
+(@NEXT+14,30203,571,1,2,6835.59,414.643,471.77,0.802851,300,0,0,0),
+(@NEXT+15,30203,571,1,2,6903.22,430.778,471.764,3.56047,300,0,0,0),
+(@NEXT+16,30203,571,1,2,6881.51,391.672,471.771,1.93731,300,0,0,0),
+(@NEXT+17,30203,571,1,2,6877.89,665.768,425.523,1.29154,300,0,0,0),
+(@NEXT+18,30203,571,1,2,6553.27,579.069,419.185,3.90954,300,0,0,0),
+(@NEXT+19,30203,571,1,2,6560.22,584.094,419.185,0.645772,300,0,0,0),
+(@NEXT+20,30203,571,1,2,6747.13,456.848,419.284,1.39626,300,0,0,0),
+(@NEXT+21,30203,571,1,2,7062.78,521.156,526.362,5.75959,300,0,0,0),
+(@NEXT+22,30203,571,1,2,7068.11,477.927,530.313,0.558505,300,0,0,0),
+(@NEXT+23,30203,571,1,2,6689.02,570.998,424.525,3.9968,300,0,0,0),
+(@NEXT+24,30203,571,1,2,6745.99,449.016,419.284,4.4855,300,0,0,0),
+(@NEXT+25,30203,571,1,2,6809.11,843.341,381.335,3.23154,300,0,1217160,2),
+(@NEXT+26,30203,571,1,2,6901.58,727.055,420.546,3.24233,300,0,1217170,2),
+(@NEXT+27,30203,571,1,2,7002.27,602.799,476.138,5.93303,300,0,1217200,2),
+(@NEXT+28,30543,571,1,128,6879.92,493.899,467.957,1.67552,300,0,0,0),
+(@NEXT+29,30543,571,1,128,6916.07,467.629,468.799,0.977384,300,0,0,0),
+(@NEXT+30,30543,571,1,128,6858.02,453.902,471.767,4.7822,300,0,0,0),
+(@NEXT+31,30543,571,1,128,6835.59,414.643,471.77,0.802851,300,0,0,0),
+(@NEXT+32,30543,571,1,128,6903.22,430.778,471.764,3.56047,300,0,0,0),
+(@NEXT+33,30543,571,1,128,6881.51,391.672,471.771,1.93731,300,0,0,0),
+(@NEXT+34,30543,571,1,128,6877.89,665.768,425.523,1.29154,300,0,0,0),
+(@NEXT+35,30543,571,1,128,6553.27,579.069,419.185,3.90954,300,0,0,0),
+(@NEXT+36,30543,571,1,128,6560.22,584.094,419.185,0.645772,300,0,0,0),
+(@NEXT+37,30543,571,1,128,6747.13,456.848,419.284,1.39626,300,0,0,0),
+(@NEXT+38,30543,571,1,128,7062.78,521.156,526.362,5.75959,300,0,0,0),
+(@NEXT+39,30543,571,1,128,7068.11,477.927,530.313,0.558505,300,0,0,0),
+(@NEXT+40,30543,571,1,128,6689.02,570.998,424.525,3.9968,300,0,0,0),
+(@NEXT+41,30543,571,1,128,6745.99,449.016,419.284,4.4855,300,0,0,0),
+(@NEXT+42,30543,571,1,128,6809.11,843.341,381.335,3.23154,300,0,1217160,2),
+(@NEXT+43,30543,571,1,128,6901.58,727.055,420.546,3.24233,300,0,1217170,2),
+(@NEXT+44,30543,571,1,128,7002.27,602.799,476.138,5.93303,300,0,1217200,2),
+-- Reanimated Crusader
+(@NEXT+45,30202,571,1,128,6770.55,386.311,421.153,2.7317,300,5,0,1),
+(@NEXT+46,30202,571,1,128,6655.04,328.894,442.276,0.929563,300,5,0,1),
+(@NEXT+47,30202,571,1,128,6448.62,618.154,432.265,2.1122,300,5,0,1),
+(@NEXT+48,30202,571,1,128,6471.01,562.99,438.4,3.5549,300,5,0,1),
+(@NEXT+49,30202,571,1,128,6448.03,608.829,433.982,1.32629,300,5,0,1),
+(@NEXT+50,30202,571,1,128,6526.88,512.588,412.274,2.77181,300,5,0,1),
+(@NEXT+51,30202,571,1,128,6513.35,523.34,415.136,0.501217,300,5,0,1),
+(@NEXT+52,30202,571,1,128,6556.12,636.946,408.191,1.22528,300,5,0,1),
+(@NEXT+53,30202,571,1,128,6697.52,476.907,401.588,2.99677,300,5,0,1),
+(@NEXT+54,30202,571,1,128,6704.82,441.489,406.499,3.35221,300,5,0,1),
+(@NEXT+55,30202,571,1,128,6723.74,417.997,412.953,4.18409,300,5,0,1),
+(@NEXT+56,30202,571,1,128,6644.93,422.78,401.853,3.19711,300,5,0,1),
+(@NEXT+57,30202,571,1,128,6654.72,492.468,398.206,2.81552,300,5,0,1),
+(@NEXT+58,30202,571,1,128,6630.65,458.047,398.995,5.84132,300,5,0,1),
+(@NEXT+59,30202,571,1,128,6661.41,584.323,408.676,0.785398,300,5,0,1),
+(@NEXT+60,30202,571,1,128,6518.07,616.422,410.051,2.1325,300,5,0,1),
+(@NEXT+61,30202,571,1,128,6514.78,664.2,399.383,0.291176,300,5,0,1),
+(@NEXT+62,30202,571,1,128,6563.32,539.29,404.559,0.919091,300,5,0,1),
+(@NEXT+63,30202,571,1,128,6617.92,519.797,396.795,1.55615,300,5,0,1),
+(@NEXT+64,30202,571,1,128,6643.92,633.926,404.904,1.84373,300,5,0,1),
+(@NEXT+65,30202,571,1,128,6592.97,620.213,408.135,1.80125,300,5,0,1),
+(@NEXT+66,30202,571,1,128,6707.83,535.834,405.493,5.84095,300,5,0,1),
+(@NEXT+67,30202,571,1,128,6758.07,512.831,410.903,2.78648,300,5,0,1),
+(@NEXT+68,30202,571,1,128,6764.6,535.115,415.201,3.48219,300,5,0,1),
+(@NEXT+69,30202,571,1,128,6669.68,527.603,401.525,5.13205,300,5,0,1),
+(@NEXT+70,30202,571,1,128,6613,590.876,403.789,2.88047,300,5,0,1),
+(@NEXT+71,30202,571,1,128,6545.45,535.57,407.359,1.50529,300,5,0,1),
+(@NEXT+72,30202,571,1,128,6623.12,684.658,405.968,4.4761,300,5,0,1),
+(@NEXT+73,30202,571,1,128,6584.43,679.969,406.644,2.11574,300,5,0,1),
+(@NEXT+74,30202,571,1,128,6576.55,460.06,408.104,0.763302,300,5,0,1),
+(@NEXT+75,30202,571,1,128,6606.58,489.339,398.158,5.60417,300,5,0,1),
+(@NEXT+76,30202,571,1,128,6563.66,505.381,403.489,0.430917,300,5,0,1),
+(@NEXT+77,30202,571,1,128,6579.71,401.572,416.112,6.10437,300,5,0,1),
+(@NEXT+78,30202,571,1,128,6632.51,382.456,412.855,5.91518,300,5,0,1),
+(@NEXT+79,30202,571,1,128,6721.48,346.299,424.582,5.91108,300,5,0,1),
+(@NEXT+80,30202,571,1,128,6657.63,385.761,411.832,2.05191,300,5,0,1),
+(@NEXT+81,30202,571,1,128,6709.57,384.33,414.698,3.57468,300,5,0,1),
+(@NEXT+82,30202,571,1,128,6722.58,492.852,405.603,5.6035,300,5,0,1),
+-- Forgotten Depths Underking
+(@NEXT+83,30544,571,1,2,6962.62,734.955,445.296,4.4855,300,0,0,0),
+(@NEXT+84,30544,571,1,2,7056.29,572.491,497.073,2.23402,300,0,0,0),
+(@NEXT+85,30544,571,1,2,7005.75,714.752,468.614,3.07178,300,0,0,0),
+(@NEXT+86,30544,571,1,2,6809.11,843.341,381.335,5.7554,300,0,1217280,0),
+(@NEXT+87,30544,571,1,2,6437.59,604.262,439.155,0.369627,300,0,1217310,2),
+(@NEXT+89,30544,571,1,2,7002.27,602.799,476.138,5.7192,300,0,1217350,0),
+(@NEXT+90,30541,571,1,128,6962.62,734.955,445.296,4.4855,300,0,0,0),
+(@NEXT+91,30541,571,1,128,7056.29,572.491,497.073,2.23402,300,0,0,0),
+(@NEXT+92,30541,571,1,128,7005.75,714.752,468.614,3.07178,300,0,0,0),
+(@NEXT+93,30541,571,1,128,6760.42,515.039,411.837,3.66099,300,0,1217270,2),
+(@NEXT+94,30541,571,1,128,6809.11,843.341,381.335,5.7554,300,0,1217280,0),
+(@NEXT+95,30541,571,1,128,7002.27,602.799,476.138,5.7192,300,0,1217350,0),
+(@NEXT+96,30541,571,1,128,6769.89,628.623,425.97,-1.65443,300,0,1217290,2),
+(@NEXT+97,30541,571,1,128,6697.87,429.598,406.569,1.77104,300,0,1217300,2),
+(@NEXT+98,30541,571,1,128,6437.59,604.262,439.155,0.369627,300,0,1217310,2),
+(@NEXT+99,30541,571,1,128,6622.62,585.661,402.875,5.61246,300,0,1217320,2),
+(@NEXT+100,30541,571,1,128,6710.23,685.938,408.296,3.24837,300,0,1217330,2),
+(@NEXT+101,30541,571,1,128,6575.6,465.094,407.446,2.69257,300,0,1217360,2),
+(@NEXT+102,30541,571,1,128,6641.92,396.595,408.673,2.55359,300,0,1217370,2),
+-- Wrathstrike Gargoyle
+(@NEXT+103,30482,571,1,128,7059.52,455.611,581.574,3.35148,300,0,1217550,2),
+(@NEXT+104,30482,571,1,128,7009.05,544.408,610.468,3.23607,300,0,1217540,2),
+(@NEXT+105,30482,571,1,128,6804.5,702.568,436.191,0.0303077,300,0,1217530,2),
+(@NEXT+106,30482,571,1,128,6799.31,642.302,459.819,3.88908,300,0,1217520,2),
+(@NEXT+107,30482,571,1,128,6753.66,410.408,446.625,3.19529,300,0,1217510,2),
+(@NEXT+108,30482,571,1,128,6597.14,566.743,445.037,1.40898,300,0,1217500,2),
+(@NEXT+109,30482,571,1,128,6596.2,564.031,445.111,4.27718,300,0,1217490,2),
+(@NEXT+110,30482,571,1,128,6559.29,413.281,462.263,6.13325,300,0,1217480,2),
+-- Add missing mobs in the Valley of Echoes during the first phase. The DB has no spawn info on these ones so I added them in a logical number and places,feel free to skip this part if its not "correct" enough. (If anyone has actual sniffs for the location of these mobs feel free to share)
+-- Forgotten Depths Slayer for first phase (id:30333,not the same one that should appear during "The last line of defense)
+(@NEXT+111,30333,571,1,2,6150.518066,147.111313,372.771057,0.197990,300,7,0,1),
+(@NEXT+112,30333,571,1,2,6212.446777,130.204849,377.827118,0.657450,300,7,0,1),
+(@NEXT+113,30333,571,1,2,6110.951660,83.364746,371.154419,1.230786,300,7,0,1),
+(@NEXT+114,30333,571,1,2,6047.241699,178.537430,353.744293,5.322711,300,7,0,1),
+(@NEXT+115,30333,571,1,2,6182.750000,199.942261,380.134705,4.996765,300,7,0,1),
+(@NEXT+116,30333,571,1,2,6219.042480,236.113785,388.062317,5.134206,300,7,0,1),
+(@NEXT+117,30333,571,1,2,6421.106445,188.232880,395.621826,2.247868,300,7,0,1),
+(@NEXT+118,30333,571,1,2,6351.036621,91.049683,392.077698,1.969049,300,7,0,1),
+(@NEXT+119,30333,571,1,2,6264.502930,147.837006,383.335876,2.346035,300,7,0,1),
+-- Forgotten Depths Acolyte
+(@NEXT+120,30205,571,1,2,6278.386230,199.642899,385.989258,5.377527,300,0,0,0),
+(@NEXT+121,30205,571,1,2,6229.345703,133.398743,379.961639,3.759608,300,0,0,0),
+(@NEXT+122,30205,571,1,2,6087.062012,136.313293,367.117310,4.827752,300,0,0,0),
+(@NEXT+123,30205,571,1,2,6127.606445,172.50610,370.652832,6.190416,300,0,0,0),
+(@NEXT+124,30205,571,1,2,6149.881836,220.209808,379.919403,5.361032,300,0,0,0),
+(@NEXT+125,30205,571,1,2,6422.211426,148.303436,395.890137,1.964183,300,0,0,0),
+(@NEXT+126,30205,571,1,2,6375.815918,81.636124,394.968140,2.337249,300,0,0,0),
+(@NEXT+127,30205,571,1,2,6333.330566,29.062647,389.581329,1.508653,300,0,0,0),
+(@NEXT+128,30205,571,1,2,6130.472656,172.082047,370.962646,5.695776,300,0,0,0);
diff --git a/sql/updates/world/2012_05_28_06_world_creature_addon.sql b/sql/updates/world/2012_05_28_06_world_creature_addon.sql
new file mode 100644
index 00000000000..a2b573da10a
--- /dev/null
+++ b/sql/updates/world/2012_05_28_06_world_creature_addon.sql
@@ -0,0 +1,2 @@
+-- Delete forgotten data from creature_addon
+DELETE FROM `creature_addon` WHERE `guid` IN (207262,207257,207254,207251,207246,207243,207241,207237);
diff --git a/sql/updates/world/2012_05_28_06_world_waypoint_data.sql b/sql/updates/world/2012_05_28_06_world_waypoint_data.sql
new file mode 100644
index 00000000000..1c738cacdc9
--- /dev/null
+++ b/sql/updates/world/2012_05_28_06_world_waypoint_data.sql
@@ -0,0 +1,524 @@
+-- The following are the paths for the newly added mobs that have the same spawn spot as a mob (different phase and id) that already had a path. The paths are exactly the same as their already spawned counterparts.
+-- Pathing for newly added Wrathstrike Gargoyles
+-- -----------------------------------------------------------------------------------------------------------
+SET @NEXT := 134704;
+-- Wrathstrike Gargoyle 1
+SET @NPC = @NEXT+103;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,7060.05,455.727,581.492,0,0,0,100,0),
+(@PATH,2,6982.99,465.858,581.492,0,0,0,100,0),
+(@PATH,3,6963.94,516.342,581.492,0,0,0,100,0),
+(@PATH,4,7012.51,555.944,581.492,0,0,0,100,0),
+(@PATH,5,7062.92,517.784,566.464,0,0,0,100,0),
+(@PATH,6,7074.5,487.171,566.464,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217550;
+-- -----------------------------------------------------------------------------------------------------------
+-- Wrathstrike Gargoyle 2
+SET @NPC = @NEXT+104;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6975.12,457.238,608.122,0,0,0,100,0),
+(@PATH,2,6994.13,442.679,608.122,0,0,0,100,0),
+(@PATH,3,7024.58,437.239,608.122,0,0,0,100,0),
+(@PATH,4,7055.78,456.622,580.705,0,0,0,100,0),
+(@PATH,5,7069.78,488.277,580.705,0,0,0,100,0),
+(@PATH,6,7057.18,540.235,608.205,0,0,0,100,0),
+(@PATH,7,6978.62,537.405,608.205,0,0,0,100,0),
+(@PATH,8,6960.95,489.864,595.233,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217540;
+-- -----------------------------------------------------------------------------------------------------------
+-- Wrathstrike Gargoyle 3
+SET @NPC = @NEXT+105;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6817.71,701.731,436.81,0,0,0,100,0),
+(@PATH,2,6839.81,671.33,438.476,0,0,0,100,0),
+(@PATH,3,6771.48,625.298,444.032,0,0,0,100,0),
+(@PATH,4,6729.31,607.063,451.504,0,0,0,100,0),
+(@PATH,5,6689.26,569.483,444.032,0,0,0,100,0),
+(@PATH,6,6664.17,580.683,449.976,0,0,0,100,0),
+(@PATH,7,6657.52,638.465,440.893,0,0,0,100,0),
+(@PATH,8,6664.19,665.048,444.032,0,0,0,100,0),
+(@PATH,9,6735.33,692.836,433.938,0,0,0,100,0),
+(@PATH,10,6741.25,694.33,433.56,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217530;
+-- -----------------------------------------------------------------------------------------------------------
+-- Wrathstrike Gargoyle 4
+SET @NPC = @NEXT+106;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6808.92,649.929,459.327,0,0,0,100,0),
+(@PATH,2,6779.63,606.717,465.077,0,0,0,100,0),
+(@PATH,3,6799.14,541.206,474.66,0,0,0,100,0),
+(@PATH,4,6863.37,520.467,465.077,0,0,0,100,0),
+(@PATH,5,6900.8,554.799,459.216,0,0,0,100,0),
+(@PATH,6,6904.96,624.433,471.549,0,0,0,100,0),
+(@PATH,7,6860.9,661.477,465.077,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217520;
+-- -----------------------------------------------------------------------------------------------------------
+-- Wrathstrike Gargoyle 5
+SET @NPC = @NEXT+107;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6764.29,413.94,446.625,0,0,0,100,0),
+(@PATH,2,6727.13,417.659,446.625,0,0,0,100,0),
+(@PATH,3,6709.2,445.43,446.625,0,0,0,100,0),
+(@PATH,4,6714.21,476.942,446.625,0,0,0,100,0),
+(@PATH,5,6760.44,491.312,446.625,0,0,0,100,0),
+(@PATH,6,6786.47,463.163,446.625,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217510;
+-- -----------------------------------------------------------------------------------------------------------
+-- Wrathstrike Gargoyle 6
+SET @NPC = @NEXT+108;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6589.56,608.719,445.037,0,0,0,100,0),
+(@PATH,2,6536.49,613.397,445.037,0,0,0,100,0),
+(@PATH,3,6515.31,571.263,445.037,0,0,0,100,0),
+(@PATH,4,6540.83,538.391,445.037,0,0,0,100,0),
+(@PATH,5,6561.1,543.055,445.037,0,0,0,100,0),
+(@PATH,6,6595.09,559.099,445.037,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217500;
+-- -----------------------------------------------------------------------------------------------------------
+-- Wrathstrike Gargoyle 7
+SET @NPC = @NEXT+109;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6661.58,545.496,432.795,0,0,0,100,0),
+(@PATH,2,6659.48,589.326,447.184,0,0,0,100,0),
+(@PATH,3,6628.78,594.459,446.434,0,0,0,100,0),
+(@PATH,4,6613.69,584.967,446.434,0,0,0,100,0),
+(@PATH,5,6595.45,562.222,444.795,0,0,0,100,0),
+(@PATH,6,6595.77,535.16,436.934,0,0,0,100,0),
+(@PATH,7,6631,528.616,450.823,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217490;
+-- -----------------------------------------------------------------------------------------------------------
+-- Wrathstrike Gargoyle 8
+SET @NPC = @NEXT+110;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6585.6,408.848,446.514,0,0,0,100,0),
+(@PATH,2,6607.57,400.701,444.745,0,0,0,100,0),
+(@PATH,3,6647.89,401.573,444.745,0,0,0,100,0),
+(@PATH,4,6667.63,414.847,433.912,0,0,0,100,0),
+(@PATH,5,6648.87,462.506,444.745,0,0,0,100,0),
+(@PATH,6,6592.11,478.371,444.745,0,0,0,100,0),
+(@PATH,7,6501.26,474.703,444.745,0,0,0,100,0),
+(@PATH,8,6484.09,430.145,485.097,0,0,0,100,0),
+(@PATH,9,6519.88,419.711,485.097,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30482 AND `currentwaypoint`=1217480;
+-- -----------------------------------------------------------------------------------------------------------
+-- Pathing for newly added Forgotten Depths Underkings
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 1
+SET @NPC = @NEXT+96;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6788.09,633.101,426.095,0,0,0,100,0),
+(@PATH,2,6789.98,619.743,423.47,0,0,0,100,0),
+(@PATH,3,6766.65,606.497,423.42,0,0,0,100,0),
+(@PATH,4,6740.19,597.458,425.39,0,0,0,100,0),
+(@PATH,5,6725.25,595.632,423.432,0,0,0,100,0),
+(@PATH,6,6713.96,602.526,423.595,0,0,0,100,0),
+(@PATH,7,6720.27,613.862,423.47,0,0,0,100,0),
+(@PATH,8,6736.25,614.921,423.545,0,0,0,100,0),
+(@PATH,9,6769.89,628.623,425.97,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217290;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 2
+SET @NPC = @NEXT+97;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6698.5,458.598,404.586,0,0,0,100,0),
+(@PATH,2,6695.69,473.044,401.838,0,0,0,100,0),
+(@PATH,3,6665,494.007,397.863,0,0,0,100,0),
+(@PATH,4,6621.27,520.385,397.423,0,0,0,100,0),
+(@PATH,5,6601.79,552.183,399.092,0,0,0,100,0),
+(@PATH,6,6579.75,536.627,401.438,0,0,0,100,0),
+(@PATH,7,6599.6,508.629,398.578,0,0,0,100,0),
+(@PATH,8,6627.41,480.195,397.408,0,0,0,100,0),
+(@PATH,9,6643.31,442.918,399.225,0,0,0,100,0),
+(@PATH,10,6674.23,416.566,405.944,0,0,0,100,0),
+(@PATH,11,6697.87,429.598,406.569,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217300;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 3-A
+SET @NPC = @NEXT+98;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6395.82,618.184,452.633,0,0,0,100,0),
+(@PATH,2,6358.26,637.18,462.167,0,0,0,100,0),
+(@PATH,3,6370.71,666.535,453.289,0,0,0,100,0),
+(@PATH,4,6375.45,676.189,445.42,0,0,0,100,0),
+(@PATH,5,6407.42,688.589,434.416,0,0,0,100,0),
+(@PATH,6,6429.66,650.562,435.434,0,0,0,100,0),
+(@PATH,7,6461.86,627.093,426.405,0,0,0,100,0),
+(@PATH,8,6482.61,623.854,419.051,0,0,0,100,0),
+(@PATH,9,6486.97,594.615,420.488,0,0,0,100,0),
+(@PATH,10,6457.97,595.352,432.948,0,0,0,100,0),
+(@PATH,11,6437.59,604.262,439.155,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217310;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 3-B
+SET @NPC = @Next+87;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6395.82,618.184,452.633,0,0,0,100,0),
+(@PATH,2,6358.26,637.18,462.167,0,0,0,100,0),
+(@PATH,3,6370.71,666.535,453.289,0,0,0,100,0),
+(@PATH,4,6375.45,676.189,445.42,0,0,0,100,0),
+(@PATH,5,6407.42,688.589,434.416,0,0,0,100,0),
+(@PATH,6,6429.66,650.562,435.434,0,0,0,100,0),
+(@PATH,7,6461.86,627.093,426.405,0,0,0,100,0),
+(@PATH,8,6482.61,623.854,419.051,0,0,0,100,0),
+(@PATH,9,6486.97,594.615,420.488,0,0,0,100,0),
+(@PATH,10,6457.97,595.352,432.948,0,0,0,100,0),
+(@PATH,11,6437.59,604.262,439.155,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30544 AND `currentwaypoint`=1217310;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 4
+SET @NPC = @NEXT+99;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6618.91,606.085,403.839,0,0,0,100,0),
+(@PATH,2,6608.22,599.539,403.875,0,0,0,100,0),
+(@PATH,3,6613.37,574.047,401.125,0,0,0,100,0),
+(@PATH,4,6638.76,543.87,399.563,0,0,0,100,0),
+(@PATH,5,6667.59,521.002,401.025,0,0,0,100,0),
+(@PATH,6,6697.97,501.482,400.775,0,0,0,100,0),
+(@PATH,7,6711.98,522.746,404.353,0,0,0,100,0),
+(@PATH,8,6702.31,534.57,405.75,0,0,0,100,0),
+(@PATH,9,6679.62,541.533,402.209,0,0,0,100,0),
+(@PATH,10,6660.61,557.771,404.938,0,0,0,100,0),
+(@PATH,11,6639.28,577.426,402.927,0,0,0,100,0),
+(@PATH,12,6622.62,585.661,402.875,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217320;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 5
+SET @NPC = @NEXT+100;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6746.43,700.445,407.534,0,0,0,100,0),
+(@PATH,2,6767.77,702.447,407.514,0,0,0,100,0),
+(@PATH,3,6780.88,716.948,410.264,0,0,0,100,0),
+(@PATH,4,6761.32,729.055,407.659,0,0,0,100,0),
+(@PATH,5,6723.36,725.67,406.194,0,0,0,100,0),
+(@PATH,6,6706.1,712.006,411.069,0,0,0,100,0),
+(@PATH,7,6687.8,701.721,412.302,0,0,0,100,0),
+(@PATH,8,6668.08,685.327,409.231,0,0,0,100,0),
+(@PATH,9,6660.25,674.05,407.891,0,0,0,100,0),
+(@PATH,10,6667.72,662.234,407.017,0,0,0,100,0),
+(@PATH,11,6710.23,685.938,408.296,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217330;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 6
+SET @NPC = @NEXT+101;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6552.96,457.401,412.93,0,0,0,100,0),
+(@PATH,2,6551.69,432.508,416.436,0,0,0,100,0),
+(@PATH,3,6568.85,415.311,415.444,0,0,0,100,0),
+(@PATH,4,6572.9,410.44,415.694,0,0,0,100,0),
+(@PATH,5,6577.95,406.559,415.694,0,0,0,100,0),
+(@PATH,6,6591.15,393.959,416.312,0,0,0,100,0),
+(@PATH,7,6624.85,389.377,412.855,0,0,0,100,0),
+(@PATH,8,6642.71,398.137,408.048,0,0,0,100,0),
+(@PATH,9,6642.51,414.137,403.978,0,0,0,100,0),
+(@PATH,10,6613.73,435.694,403.495,0,0,0,100,0),
+(@PATH,11,6598.72,453.969,403.196,0,0,0,100,0),
+(@PATH,12,6575.6,465.094,407.446,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217360;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 7
+SET @NPC = @NEXT+102;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6665.69,385.118,411.923,0,0,0,100,0),
+(@PATH,2,6688.12,372.121,414.309,0,0,0,100,0),
+(@PATH,3,6681.71,337.864,421.782,0,0,0,100,0),
+(@PATH,4,6711.15,330.663,422.912,0,0,0,100,0),
+(@PATH,5,6729,353.407,426.957,0,0,0,100,0),
+(@PATH,6,6759.39,371.963,426.169,0,0,0,100,0),
+(@PATH,7,6742.83,378.436,419.544,0,0,0,100,0),
+(@PATH,8,6710.78,380.507,415.679,0,0,0,100,0),
+(@PATH,9,6685.82,397.148,408.809,0,0,0,100,0),
+(@PATH,10,6655.42,406.866,405.478,0,0,0,100,0),
+(@PATH,11,6641.92,396.595,408.673,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217370;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths Underking 8
+SET @NPC = @NEXT+93;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6751.58,521.709,409.087,0,0,0,100,0),
+(@PATH,2,6775.59,535.639,418.22,0,0,0,100,0),
+(@PATH,3,6790.69,546.924,424.095,0,0,0,100,0),
+(@PATH,4,6797.82,545.099,424.47,0,0,0,100,0),
+(@PATH,5,6787.22,530.424,421.059,0,0,0,100,0),
+(@PATH,6,6760.42,515.039,411.837,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217270;
+-- -----------------------------------------------------------------------------------------------------------
+-- Pathing for newly added Forgotten Depths High Priests. There are A and B versions because only the ones from the last phase were already spawned in DB and had their pathing. This didn't occur with the Forgotten Depths Underkings because their first phase counterpats were already spawned (at least the ones with paths,the rest weren't). 2 of them don't get the current waypoint removed yet because its used for a guideline for creature_formations later.
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths High Priest 1-A
+SET @NPC = @NEXT+25;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6845.23,827.966,390.654,0,0,0,100,0),
+(@PATH,2,6869.87,814.437,394.231,0,0,0,100,0),
+(@PATH,3,6885.91,795.247,398.76,0,0,0,100,0),
+(@PATH,4,6889.42,776.747,410.135,0,0,0,100,0),
+(@PATH,5,6887.17,765.483,417.106,0,0,0,100,0),
+(@PATH,6,6916.54,751.385,415.552,0,0,0,100,0),
+(@PATH,7,6922.71,770.234,412.379,0,0,0,100,0),
+(@PATH,8,6936.68,795.657,409.292,0,0,0,100,0),
+(@PATH,9,6946.95,821.291,405.551,0,0,0,100,0),
+(@PATH,10,6940.67,819.911,406.551,0,0,0,100,0),
+(@PATH,11,6918.09,776.126,411.879,0,0,0,100,0),
+(@PATH,12,6903.68,745.868,416.802,0,0,0,100,0),
+(@PATH,13,6892.57,727.713,418.396,0,0,0,100,0),
+(@PATH,14,6855.19,723.309,414.328,0,0,0,100,0),
+(@PATH,15,6810.95,714.736,409.567,0,0,0,100,0),
+(@PATH,16,6778.23,711.31,408.139,0,0,0,100,0),
+(@PATH,17,6749.77,708.742,407.159,0,0,0,100,0),
+(@PATH,18,6724.11,709.65,409.563,0,0,0,100,0),
+(@PATH,19,6720.02,695.631,407.296,0,0,0,100,0),
+(@PATH,20,6730.44,731.649,404.319,0,0,0,100,0),
+(@PATH,21,6727.1,774.371,385.328,0,0,0,100,0),
+(@PATH,22,6722.82,816.964,376.654,0,0,0,100,0),
+(@PATH,23,6733.84,849.984,376.012,0,0,0,100,0),
+(@PATH,24,6753.25,867.14,376.46,0,0,0,100,0),
+(@PATH,25,6786.71,850.127,379.337,0,0,0,100,0),
+(@PATH,26,6817.16,840.912,382.21,0,0,0,100,0);
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths High Priest 1-B
+SET @NPC = @NEXT+42;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6845.23,827.966,390.654,0,0,0,100,0),
+(@PATH,2,6869.87,814.437,394.231,0,0,0,100,0),
+(@PATH,3,6885.91,795.247,398.76,0,0,0,100,0),
+(@PATH,4,6889.42,776.747,410.135,0,0,0,100,0),
+(@PATH,5,6887.17,765.483,417.106,0,0,0,100,0),
+(@PATH,6,6916.54,751.385,415.552,0,0,0,100,0),
+(@PATH,7,6922.71,770.234,412.379,0,0,0,100,0),
+(@PATH,8,6936.68,795.657,409.292,0,0,0,100,0),
+(@PATH,9,6946.95,821.291,405.551,0,0,0,100,0),
+(@PATH,10,6940.67,819.911,406.551,0,0,0,100,0),
+(@PATH,11,6918.09,776.126,411.879,0,0,0,100,0),
+(@PATH,12,6903.68,745.868,416.802,0,0,0,100,0),
+(@PATH,13,6892.57,727.713,418.396,0,0,0,100,0),
+(@PATH,14,6855.19,723.309,414.328,0,0,0,100,0),
+(@PATH,15,6810.95,714.736,409.567,0,0,0,100,0),
+(@PATH,16,6778.23,711.31,408.139,0,0,0,100,0),
+(@PATH,17,6749.77,708.742,407.159,0,0,0,100,0),
+(@PATH,18,6724.11,709.65,409.563,0,0,0,100,0),
+(@PATH,19,6720.02,695.631,407.296,0,0,0,100,0),
+(@PATH,20,6730.44,731.649,404.319,0,0,0,100,0),
+(@PATH,21,6727.1,774.371,385.328,0,0,0,100,0),
+(@PATH,22,6722.82,816.964,376.654,0,0,0,100,0),
+(@PATH,23,6733.84,849.984,376.012,0,0,0,100,0),
+(@PATH,24,6753.25,867.14,376.46,0,0,0,100,0),
+(@PATH,25,6786.71,850.127,379.337,0,0,0,100,0),
+(@PATH,26,6817.16,840.912,382.21,0,0,0,100,0);
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths High Priest 2-A
+SET @NPC = @NEXT+26;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6877.06,727.294,415.646,0,0,0,100,0),
+(@PATH,2,6840.86,720.367,413.578,0,0,0,100,0),
+(@PATH,3,6804.06,715.519,409.067,0,0,0,100,0),
+(@PATH,4,6775.7,711.378,408.139,0,0,0,100,0),
+(@PATH,5,6775.7,706.114,408.014,0,0,0,100,0),
+(@PATH,6,6806.69,710.446,409.317,0,0,0,100,0),
+(@PATH,7,6840.86,715.128,414.078,0,0,0,100,0),
+(@PATH,8,6885.64,719.654,417.771,0,0,0,100,0),
+(@PATH,9,6901.58,727.055,420.546,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30203 AND `currentwaypoint`=1217170;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths High Priest 2-B
+SET @NPC = @NEXT+43;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,6877.06,727.294,415.646,0,0,0,100,0),
+(@PATH,2,6840.86,720.367,413.578,0,0,0,100,0),
+(@PATH,3,6804.06,715.519,409.067,0,0,0,100,0),
+(@PATH,4,6775.7,711.378,408.139,0,0,0,100,0),
+(@PATH,5,6775.7,706.114,408.014,0,0,0,100,0),
+(@PATH,6,6806.69,710.446,409.317,0,0,0,100,0),
+(@PATH,7,6840.86,715.128,414.078,0,0,0,100,0),
+(@PATH,8,6885.64,719.654,417.771,0,0,0,100,0),
+(@PATH,9,6901.58,727.055,420.546,0,0,0,100,0);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30543 AND `currentwaypoint`=1217170;
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths High Priest 3-A
+SET @NPC = @NEXT+27;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,7028.06,593.528,484.848,0,0,0,100,0),
+(@PATH,2,7050.86,587.232,490.487,0,0,0,100,0),
+(@PATH,3,7088.02,583.536,496.767,0,0,0,100,0),
+(@PATH,4,7135.53,587.626,498.11,0,0,0,100,0),
+(@PATH,5,7174.15,581.088,498.373,0,0,0,100,0),
+(@PATH,6,7200,579.166,498.248,0,0,0,100,0),
+(@PATH,7,7217.31,586.021,496.983,0,0,0,100,0),
+(@PATH,8,7203.83,615.728,490.388,0,0,0,100,0),
+(@PATH,9,7164.62,625.286,496.707,0,0,0,100,0),
+(@PATH,10,7126.29,619.13,497.944,0,0,0,100,0),
+(@PATH,11,7094.89,587.951,498.017,0,0,0,100,0),
+(@PATH,12,7050.28,590.763,490.362,0,0,0,100,0),
+(@PATH,13,7013.81,602.295,479.513,0,0,0,100,0),
+(@PATH,14,6987.71,624.076,465.805,0,0,0,100,0),
+(@PATH,15,6964.91,625.148,460.924,0,0,0,100,0),
+(@PATH,16,6944.73,587.153,467.576,0,0,0,100,0),
+(@PATH,17,6927.86,556.953,466.828,0,0,0,100,0),
+(@PATH,18,6919.79,527.804,467.056,0,0,0,100,0),
+(@PATH,19,6907.68,497.326,466.719,0,0,0,100,0),
+(@PATH,20,6914.34,512.11,466.681,0,0,0,100,0),
+(@PATH,21,6926.01,537.956,466.578,0,0,0,100,0),
+(@PATH,22,6938.29,577.003,466.951,0,0,0,100,0),
+(@PATH,23,6952.16,594.699,466.951,0,0,0,100,0),
+(@PATH,24,6969.78,616.559,463.68,0,0,0,100,0),
+(@PATH,25,6985.14,615.594,467.305,0,0,0,100,0),
+(@PATH,26,7002.27,602.799,476.138,0,0,0,100,0);
+-- -----------------------------------------------------------------------------------------------------------
+-- Forgotten Depths High Priest 3-B
+SET @NPC = @NEXT+44;
+SET @PATH := @NPC * 10;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`) VALUES (@NPC,@PATH);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,7028.06,593.528,484.848,0,0,0,100,0),
+(@PATH,2,7050.86,587.232,490.487,0,0,0,100,0),
+(@PATH,3,7088.02,583.536,496.767,0,0,0,100,0),
+(@PATH,4,7135.53,587.626,498.11,0,0,0,100,0),
+(@PATH,5,7174.15,581.088,498.373,0,0,0,100,0),
+(@PATH,6,7200,579.166,498.248,0,0,0,100,0),
+(@PATH,7,7217.31,586.021,496.983,0,0,0,100,0),
+(@PATH,8,7203.83,615.728,490.388,0,0,0,100,0),
+(@PATH,9,7164.62,625.286,496.707,0,0,0,100,0),
+(@PATH,10,7126.29,619.13,497.944,0,0,0,100,0),
+(@PATH,11,7094.89,587.951,498.017,0,0,0,100,0),
+(@PATH,12,7050.28,590.763,490.362,0,0,0,100,0),
+(@PATH,13,7013.81,602.295,479.513,0,0,0,100,0),
+(@PATH,14,6987.71,624.076,465.805,0,0,0,100,0),
+(@PATH,15,6964.91,625.148,460.924,0,0,0,100,0),
+(@PATH,16,6944.73,587.153,467.576,0,0,0,100,0),
+(@PATH,17,6927.86,556.953,466.828,0,0,0,100,0),
+(@PATH,18,6919.79,527.804,467.056,0,0,0,100,0),
+(@PATH,19,6907.68,497.326,466.719,0,0,0,100,0),
+(@PATH,20,6914.34,512.11,466.681,0,0,0,100,0),
+(@PATH,21,6926.01,537.956,466.578,0,0,0,100,0),
+(@PATH,22,6938.29,577.003,466.951,0,0,0,100,0),
+(@PATH,23,6952.16,594.699,466.951,0,0,0,100,0),
+(@PATH,24,6969.78,616.559,463.68,0,0,0,100,0),
+(@PATH,25,6985.14,615.594,467.305,0,0,0,100,0),
+(@PATH,26,7002.27,602.799,476.138,0,0,0,100,0);
+-- --------------------------------------------------------------------------------------------------
+-- Create creature formations based on already existing ones. Also remove the final current waypoints.
+-- Creature Formation 1-A
+-- --------------------------------------------------------------------------------------------------
+SET @LEADER = @NEXT+27;
+SET @NPC = @NEXT+89;
+DELETE FROM `creature_formations` WHERE `leaderGUID`=@LEADER;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(@LEADER,@LEADER,0,0,2),
+(@LEADER,@NPC,3,0,2);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30203 AND `currentwaypoint`=1217200;
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30544 AND `currentwaypoint`=1217350;
+-- Creature Formation 1-B
+SET @LEADER = @NEXT+44;
+SET @NPC = @NEXT+95;
+DELETE FROM `creature_formations` WHERE `leaderGUID`=@LEADER;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(@LEADER,@LEADER,0,0,2),
+(@LEADER,@NPC,3,0,2);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30543 AND `currentwaypoint`=1217200;
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217350;
+-- Creature Formation 2-A
+SET @LEADER = @NEXT+25;
+SET @NPC = @NEXT+86;
+DELETE FROM `creature_formations` WHERE `leaderGUID`=@LEADER;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(@LEADER,@LEADER,0,0,2),
+(@LEADER,@NPC,3,0,2);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30203 AND `currentwaypoint`=1217160;
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30544 AND `currentwaypoint`=1217280;
+-- Creature Formation 2-B
+SET @LEADER = @NEXT+42;
+SET @NPC = @NEXT+94;
+DELETE FROM `creature_formations` WHERE `leaderGUID`=@LEADER;
+INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`) VALUES
+(@LEADER,@LEADER,0,0,2),
+(@LEADER,@NPC,3,0,2);
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30543 AND `currentwaypoint`=1217160;
+UPDATE `creature` SET `currentwaypoint`=0 WHERE `id`=30541 AND `currentwaypoint`=1217280;
diff --git a/sql/updates/world/2012_05_28_07_world_quest_template.sql b/sql/updates/world/2012_05_28_07_world_quest_template.sql
new file mode 100644
index 00000000000..3cdf1895a9d
--- /dev/null
+++ b/sql/updates/world/2012_05_28_07_world_quest_template.sql
@@ -0,0 +1,20 @@
+-- Correct Quest chaining and requirements up until the quest "Crusader's Pinnacle", when the Argent Base in the pinnacle phases in
+UPDATE `quest_template` SET `PrevQuestId`=13036, `NextQuestId`=13044, `ExclusiveGroup`=-13008 WHERE `id`=13008; -- Scourge Tactics
+UPDATE `quest_template` SET `PrevQuestId`=13036, `NextQuestId`=13044, `ExclusiveGroup`=-13008 WHERE `id`=13039; -- Defending The Vanguard
+UPDATE `quest_template` SET `PrevQuestId`=13036, `NextQuestId`=13044, `ExclusiveGroup`=-13008 WHERE `id`=13040; -- Curing The Incurable
+UPDATE `quest_template` SET `PrevQuestId`=0, `NextQuestId`=13045, `ExclusiveGroup`=0, `NextQuestIdChain`=13045 WHERE `id`=13044; -- If There Are Survivors
+UPDATE `quest_template` SET `PrevQuestId`=13044, `NextQuestId`=13070, `ExclusiveGroup`=0, `NextQuestIdChain`=13070 WHERE `id`=13045; -- Into The Wild Green Yonder
+UPDATE `quest_template` SET `Method`=0, `PrevQuestId`=13045, `NextQuestId`=13086, `ExclusiveGroup`=0, `NextQuestIdChain`=13086 WHERE `id`=13070; -- A Cold Front Approaches
+UPDATE `quest_template` SET `PrevQuestId`=13070, `NextQuestId`=0, `ExclusiveGroup`=0, `NextQuestidChain`=0 WHERE `id`=13086; -- The Last Line Of Defense
+-- Fix restrictions for DK and all rest classes without DK
+UPDATE `quest_template` SET `PrevQuestId`=13086, `RequiredClasses`=32,`NextQuestId`=0, `ExclusiveGroup`=0, `NextQuestIdChain`=0 WHERE `id`=13104; -- Once More Unto The Breach, Hero /Death Knight's Special/
+UPDATE `quest_template` SET `PrevQuestId`=13086, `RequiredClasses`=1502,`NextQuestId`=0, `ExclusiveGroup`=0, `NextQuestIdChain`=0 WHERE `id`=13105; -- Once More Unto The Breach, Hero
+UPDATE `quest_template` SET `PrevQuestId`=13104, `NextQuestId`=13139, `ExclusiveGroup`=-13122, `NextQuestIdChain`=0 WHERE `id`=13122; -- The Scourgestone
+UPDATE `quest_template` SET `PrevQuestId`=13104, `NextQuestId`=13139, `ExclusiveGroup`=-13122, `NextQuestIdChain`=0 WHERE `id`=13118; -- The Purging of Scourgeholme
+UPDATE `quest_template` SET `PrevQuestId`=13104, `NextQuestId`=13139, `ExclusiveGroup`=-13122, `NextQuestIdChain`=0 WHERE `id`=13110; -- The Restless Dead
+UPDATE `quest_template` SET `PrevQuestId`=13104, `NextQuestId`=13139, `ExclusiveGroup`=-13122, `NextQuestIdChain`=0 WHERE `id`=13125; -- The Air Stands Still
+UPDATE `quest_template` SET `PrevQuestId`=13104, `NextQuestId`=13139, `ExclusiveGroup`=-13122, `NextQuestIdChain`=0 WHERE `id`=13130; -- The Stone That Started a Revolution
+UPDATE `quest_template` SET `PrevQuestId`=13104, `NextQuestId`=13139, `ExclusiveGroup`=-13122, `NextQuestIdChain`=0 WHERE `id`=13135; -- It Could Kill Us All
+UPDATE `quest_template` SET `PrevQuestId`=0, `NextQuestId`=13141, `ExclusiveGroup`=0, `NextQuestIdChain`=13141 WHERE `id`=13139; -- Into The Cold Heart Of Northrend
+UPDATE `quest_template` SET `PrevQuestId`=13139, `NextQuestId`=13157, `ExclusiveGroup`=0, `NextQuestIdChain`=13157 WHERE `id`=13141; -- The Battle For Crusader`s Pinnacle
+UPDATE `quest_template` SET `PrevQuestId`=13141, `NextQuestId`=0, `ExclusiveGroup`=0, `NextQuestIdChain`=0 WHERE `id`=13135; -- The Crusader's Pinnacle
diff --git a/src/server/authserver/Realms/RealmList.cpp b/src/server/authserver/Realms/RealmList.cpp
index 245b9c7cc8c..d988b940809 100755
--- a/src/server/authserver/Realms/RealmList.cpp
+++ b/src/server/authserver/Realms/RealmList.cpp
@@ -31,7 +31,7 @@ void RealmList::Initialize(uint32 updateInterval)
UpdateRealms(true);
}
-void RealmList::UpdateRealm(uint32 ID, const std::string& name, const std::string& address, uint32 port, uint8 icon, uint8 color, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build)
+void RealmList::UpdateRealm(uint32 ID, const std::string& name, const std::string& address, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build)
{
// Create new if not exist or update existed
Realm& realm = m_realms[name];
@@ -39,7 +39,7 @@ void RealmList::UpdateRealm(uint32 ID, const std::string& name, const std::strin
realm.m_ID = ID;
realm.name = name;
realm.icon = icon;
- realm.color = color;
+ realm.flag = flag;
realm.timezone = timezone;
realm.allowedSecurityLevel = allowedSecurityLevel;
realm.populationLevel = popu;
@@ -70,7 +70,7 @@ void RealmList::UpdateRealms(bool init)
{
sLog->outDetail("Updating Realm List...");
- PreparedStatement *stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_REALMLIST);
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_REALMLIST);
PreparedQueryResult result = LoginDatabase.Query(stmt);
// Circle through results and add them to the realm map
@@ -79,18 +79,18 @@ void RealmList::UpdateRealms(bool init)
do
{
Field* fields = result->Fetch();
- uint32 realmId = fields[0].GetUInt32();
- const std::string& name = fields[1].GetString();
+ uint32 realmId = fields[0].GetUInt32();
+ const std::string& name = fields[1].GetString();
const std::string& address = fields[2].GetString();
- uint32 port = fields[3].GetUInt32();
- uint8 icon = fields[4].GetUInt8();
- uint8 color = fields[5].GetUInt8();
- uint8 timezone = fields[6].GetUInt8();
+ uint16 port = fields[3].GetUInt16();
+ uint8 icon = fields[4].GetUInt8();
+ RealmFlags flag = RealmFlags(fields[5].GetUInt8());
+ uint8 timezone = fields[6].GetUInt8();
uint8 allowedSecurityLevel = fields[7].GetUInt8();
- float pop = fields[8].GetFloat();
- uint32 build = fields[9].GetUInt32();
+ float pop = fields[8].GetFloat();
+ uint32 build = fields[9].GetUInt32();
- UpdateRealm(realmId, name, address, port, icon, color, timezone, (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), pop, build);
+ UpdateRealm(realmId, name, address, port, icon, flag, timezone, (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), pop, build);
if (init)
sLog->outString("Added realm \"%s\".", fields[1].GetCString());
diff --git a/src/server/authserver/Realms/RealmList.h b/src/server/authserver/Realms/RealmList.h
index 698026876fb..c8407b0fea1 100755
--- a/src/server/authserver/Realms/RealmList.h
+++ b/src/server/authserver/Realms/RealmList.h
@@ -23,13 +23,26 @@
#include
#include "Common.h"
+enum RealmFlags
+{
+ REALM_FLAG_NONE = 0x00,
+ REALM_FLAG_INVALID = 0x01,
+ REALM_FLAG_OFFLINE = 0x02,
+ REALM_FLAG_SPECIFYBUILD = 0x04,
+ REALM_FLAG_UNK1 = 0x08,
+ REALM_FLAG_UNK2 = 0x10,
+ REALM_FLAG_RECOMMENDED = 0x20,
+ REALM_FLAG_NEW = 0x40,
+ REALM_FLAG_FULL = 0x80
+};
+
// Storage object for a realm
struct Realm
{
std::string address;
std::string name;
uint8 icon;
- uint8 color;
+ RealmFlags flag;
uint8 timezone;
uint32 m_ID;
AccountTypes allowedSecurityLevel;
@@ -58,7 +71,7 @@ public:
private:
void UpdateRealms(bool init=false);
- void UpdateRealm(uint32 ID, const std::string& name, const std::string& address, uint32 port, uint8 icon, uint8 color, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build);
+ void UpdateRealm(uint32 ID, const std::string& name, const std::string& address, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float popu, uint32 build);
RealmMap m_realms;
uint32 m_UpdateInterval;
diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp
index 2698c3e30e1..2537a93fe43 100755
--- a/src/server/authserver/Server/AuthSocket.cpp
+++ b/src/server/authserver/Server/AuthSocket.cpp
@@ -849,7 +849,7 @@ bool AuthSocket::_HandleRealmList()
pkt << i->second.icon; // realm type
pkt << lock; // if 1, then realm locked
- pkt << i->second.color; // if 2, then realm is offline
+ pkt << uint8(i->second.flag); // RealmFlags
pkt << i->first;
pkt << i->second.address;
pkt << i->second.populationLevel;
@@ -857,6 +857,15 @@ bool AuthSocket::_HandleRealmList()
pkt << i->second.timezone; // realm category
pkt << uint8(0x2C); // unk, may be realm number/id?
+ if (i->second.flag & REALM_FLAG_SPECIFYBUILD)
+ {
+ // TODO: Make this customizable
+ pkt << uint8(3);
+ pkt << uint8(3);
+ pkt << uint8(5);
+ pkt << uint16(12340);
+ }
+
++RealmListSize;
}
diff --git a/src/server/authserver/Server/AuthSocket.h b/src/server/authserver/Server/AuthSocket.h
index 0b04c8d015d..edd2b345183 100755
--- a/src/server/authserver/Server/AuthSocket.h
+++ b/src/server/authserver/Server/AuthSocket.h
@@ -23,19 +23,6 @@
#include "BigNumber.h"
#include "RealmSocket.h"
-enum RealmFlags
-{
- REALM_FLAG_NONE = 0x00,
- REALM_FLAG_INVALID = 0x01,
- REALM_FLAG_OFFLINE = 0x02,
- REALM_FLAG_SPECIFYBUILD = 0x04,
- REALM_FLAG_UNK1 = 0x08,
- REALM_FLAG_UNK2 = 0x10,
- REALM_FLAG_RECOMMENDED = 0x20,
- REALM_FLAG_NEW = 0x40,
- REALM_FLAG_FULL = 0x80
-};
-
// Handle login commands
class AuthSocket: public RealmSocket::Session
{
diff --git a/src/server/authserver/authserver.conf.dist b/src/server/authserver/authserver.conf.dist
index 86423d53e18..e9ed4bd752d 100644
--- a/src/server/authserver/authserver.conf.dist
+++ b/src/server/authserver/authserver.conf.dist
@@ -110,6 +110,14 @@ DebugLogMask = 64
SQLDriverLogFile = ""
+#
+# SQLDriverQueryLogging
+# Description: Log SQL queries to the SQLDriverLogFile and console.
+# Default: 0 - (Disabled, Query errors only)
+# 1 - (Enabled, Full query logging - may have performance impact)
+
+SQLDriverQueryLogging = 0
+
#
# LogTimestamp
# Description: Append timestamp to the server log file name.
diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp
index 81b97f5f352..b9f0f25c2f9 100644
--- a/src/server/collision/Management/VMapManager2.cpp
+++ b/src/server/collision/Management/VMapManager2.cpp
@@ -30,6 +30,7 @@
#include
#include
#include "DisableMgr.h"
+#include "DBCStores.h"
using G3D::Vector3;
@@ -233,8 +234,8 @@ namespace VMAP
{
floor = info.ground_Z;
ASSERT(floor < std::numeric_limits::max());
- type = info.hitModel->GetLiquidType();
- if (reqLiquidType && !(type & reqLiquidType))
+ type = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc
+ if (reqLiquidType && !(GetLiquidFlags(type) & reqLiquidType))
return false;
if (info.hitInstance->GetLiquidLevel(pos, info, level))
return true;
@@ -245,7 +246,7 @@ namespace VMAP
return false;
}
- WorldModel* VMapManager2::acquireModelInstance(const std::string& basepath, const std::string& filename, uint32 flags/* Only used when creating the model */)
+ WorldModel* VMapManager2::acquireModelInstance(const std::string& basepath, const std::string& filename)
{
//! Critical section, thread safe access to iLoadedModelFiles
TRINITY_GUARD(ACE_Thread_Mutex, LoadedModelFilesLock);
@@ -261,7 +262,6 @@ namespace VMAP
return NULL;
}
sLog->outDebug(LOG_FILTER_MAPS, "VMapManager2: loading file '%s%s'", basepath.c_str(), filename.c_str());
- worldmodel->Flags = flags;
model = iLoadedModelFiles.insert(std::pair(filename, ManagedModel())).first;
model->second.setModel(worldmodel);
}
diff --git a/src/server/collision/Management/VMapManager2.h b/src/server/collision/Management/VMapManager2.h
index 4b66a2e9fc7..1fba108388a 100755
--- a/src/server/collision/Management/VMapManager2.h
+++ b/src/server/collision/Management/VMapManager2.h
@@ -103,7 +103,7 @@ namespace VMAP
bool getAreaInfo(unsigned int pMapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const;
bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type) const;
- WorldModel* acquireModelInstance(const std::string& basepath, const std::string& filename, uint32 flags = 0);
+ WorldModel* acquireModelInstance(const std::string& basepath, const std::string& filename);
void releaseModelInstance(const std::string& filename);
// what's the use of this? o.O
diff --git a/src/server/collision/Maps/MapTree.cpp b/src/server/collision/Maps/MapTree.cpp
index f94f9bbf52b..f4a3f1c7b30 100644
--- a/src/server/collision/Maps/MapTree.cpp
+++ b/src/server/collision/Maps/MapTree.cpp
@@ -309,7 +309,7 @@ namespace VMAP
#endif
if (!iIsTiled && ModelSpawn::readFromFile(rf, spawn))
{
- WorldModel* model = vm->acquireModelInstance(iBasePath, spawn.name, spawn.flags);
+ WorldModel* model = vm->acquireModelInstance(iBasePath, spawn.name);
sLog->outDebug(LOG_FILTER_MAPS, "StaticMapTree::InitMap() : loading %s", spawn.name.c_str());
if (model)
{
@@ -380,7 +380,7 @@ namespace VMAP
if (result)
{
// acquire model instance
- WorldModel* model = vm->acquireModelInstance(iBasePath, spawn.name, spawn.flags);
+ WorldModel* model = vm->acquireModelInstance(iBasePath, spawn.name);
if (!model)
sLog->outError("StaticMapTree::LoadMapTile() : could not acquire WorldModel pointer [%u, %u]", tileX, tileY);
diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp
index 68ea3ec80cd..e7693a70de4 100644
--- a/src/server/collision/Maps/TileAssembler.cpp
+++ b/src/server/collision/Maps/TileAssembler.cpp
@@ -335,7 +335,7 @@ namespace VMAP
void TileAssembler::exportGameobjectModels()
{
- FILE* model_list = fopen((iSrcDir + "/" + GAMEOBJECT_MODELS).c_str(), "rb");
+ FILE* model_list = fopen((iSrcDir + "/" + "temp_gameobject_models").c_str(), "rb");
FILE* model_list_copy = fopen((iDestDir + "/" + GAMEOBJECT_MODELS).c_str(), "wb");
if (!model_list || !model_list_copy)
return;
diff --git a/src/server/collision/Models/GameObjectModel.cpp b/src/server/collision/Models/GameObjectModel.cpp
index 1abbc59a5b0..84c736c22e8 100644
--- a/src/server/collision/Models/GameObjectModel.cpp
+++ b/src/server/collision/Models/GameObjectModel.cpp
@@ -33,6 +33,8 @@ using G3D::Vector3;
using G3D::Ray;
using G3D::AABox;
+#ifndef NO_CORE_FUNCS
+
struct GameobjectModelData
{
GameobjectModelData(const std::string& name_, const AABox& box) :
@@ -47,23 +49,30 @@ ModelList model_list;
void LoadGameObjectModelList()
{
+ uint32 oldMSTime = getMSTime();
FILE* model_list_file = fopen((sWorld->GetDataPath() + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb");
if (!model_list_file)
+ {
+ sLog->outError("Unable to open '%s' file.", VMAP::GAMEOBJECT_MODELS);
return;
+ }
uint32 name_length, displayId;
char buff[500];
- while (!feof(model_list_file))
+ while (true)
{
Vector3 v1, v2;
- if (fread(&displayId, sizeof(uint32), 1, model_list_file) != 1
- || fread(&name_length, sizeof(uint32), 1, model_list_file) != 1
+ if (fread(&displayId, sizeof(uint32), 1, model_list_file) != 1)
+ if (feof(model_list_file)) // EOF flag is only set after failed reading attempt
+ break;
+
+ if (fread(&name_length, sizeof(uint32), 1, model_list_file) != 1
|| name_length >= sizeof(buff)
|| fread(&buff, sizeof(char), name_length, model_list_file) != name_length
|| fread(&v1, sizeof(Vector3), 1, model_list_file) != 1
|| fread(&v2, sizeof(Vector3), 1, model_list_file) != 1)
{
- printf("\nFile '%s' seems to be corrupted", VMAP::GAMEOBJECT_MODELS);
+ sLog->outError("File '%s' seems to be corrupted!", VMAP::GAMEOBJECT_MODELS);
break;
}
@@ -72,7 +81,10 @@ void LoadGameObjectModelList()
ModelList::value_type( displayId, GameobjectModelData(std::string(buff,name_length),AABox(v1,v2)) )
);
}
+
fclose(model_list_file);
+ sLog->outString(">> Loaded %u GameObject models in %u ms", uint32(model_list.size()), GetMSTimeDiffToNow(oldMSTime));
+ sLog->outString();
}
GameObjectModel::~GameObjectModel()
@@ -91,7 +103,7 @@ bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayIn
// ignore models with no bounds
if (mdl_box == G3D::AABox::zero())
{
- std::cout << "Model " << it->second.name << " has zero bounds, loading skipped" << std::endl;
+ sLog->outError("GameObject model %s has zero bounds, loading skipped", it->second.name.c_str());
return false;
}
@@ -171,3 +183,5 @@ bool GameObjectModel::intersectRay(const G3D::Ray& ray, float& MaxDist, bool Sto
}
return hit;
}
+
+#endif
diff --git a/src/server/collision/Models/WorldModel.cpp b/src/server/collision/Models/WorldModel.cpp
index cda34510058..b818232fb32 100644
--- a/src/server/collision/Models/WorldModel.cpp
+++ b/src/server/collision/Models/WorldModel.cpp
@@ -392,9 +392,8 @@ namespace VMAP
uint32 GroupModel::GetLiquidType() const
{
- // convert to type mask, matching MAP_LIQUID_TYPE_* defines in Map.h
if (iLiquid)
- return (1 << iLiquid->GetType());
+ return iLiquid->GetType();
return 0;
}
@@ -421,9 +420,6 @@ namespace VMAP
bool WorldModel::IntersectRay(const G3D::Ray &ray, float &distance, bool stopAtFirstHit) const
{
- // M2 models are not taken into account for LoS calculation
- if (Flags & MOD_M2)
- return false;
// small M2 workaround, maybe better make separate class with virtual intersection funcs
// in any case, there's no need to use a bound tree if we only have one submodel
if (groupModels.size() == 1)
diff --git a/src/server/collision/Models/WorldModel.h b/src/server/collision/Models/WorldModel.h
index dbaccb58573..ebf828e4935 100755
--- a/src/server/collision/Models/WorldModel.h
+++ b/src/server/collision/Models/WorldModel.h
@@ -113,7 +113,6 @@ namespace VMAP
bool GetLocationInfo(const G3D::Vector3 &p, const G3D::Vector3 &down, float &dist, LocationInfo &info) const;
bool writeFile(const std::string &filename);
bool readFile(const std::string &filename);
- uint32 Flags;
protected:
uint32 RootWMOID;
std::vector groupModels;
diff --git a/src/server/collision/VMapDefinitions.h b/src/server/collision/VMapDefinitions.h
index 72a62807b4c..cc796d96dd5 100644
--- a/src/server/collision/VMapDefinitions.h
+++ b/src/server/collision/VMapDefinitions.h
@@ -24,9 +24,9 @@
namespace VMAP
{
- const char VMAP_MAGIC[] = "VMAP_4.0";
- const char RAW_VMAP_MAGIC[] = "VMAP004"; // used in extracted vmap files with raw data
- const char GAMEOBJECT_MODELS[] = "temp_gameobject_models";
+ const char VMAP_MAGIC[] = "VMAP_4.1";
+ const char RAW_VMAP_MAGIC[] = "VMAP041"; // used in extracted vmap files with raw data
+ const char GAMEOBJECT_MODELS[] = "GameObjectModels.dtree";
// defined in TileAssembler.cpp currently...
bool readChunk(FILE* rf, char *dest, const char *compare, uint32 len);
diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h
index b9d385ba675..f4555649210 100644
--- a/src/server/game/AI/CoreAI/GameObjectAI.h
+++ b/src/server/game/AI/CoreAI/GameObjectAI.h
@@ -33,21 +33,24 @@ class GameObjectAI
explicit GameObjectAI(GameObject* g) : go(g) {}
virtual ~GameObjectAI() {}
- virtual void UpdateAI(const uint32 /*diff*/) {}
+ virtual void UpdateAI(uint32 /*diff*/) {}
virtual void InitializeAI() { Reset(); }
virtual void Reset() {};
- static int Permissible(const GameObject* go);
+ static int Permissible(GameObject const* go);
- virtual bool GossipHello(Player* /*player*/) {return false;}
- virtual bool GossipSelect(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/) {return false;}
- virtual bool GossipSelectCode(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/, const char* /*code*/) {return false;}
- virtual bool QuestAccept(Player* /*player*/, Quest const* /*quest*/) {return false;}
- virtual bool QuestReward(Player* /*player*/, Quest const* /*quest*/, uint32 /*opt*/) {return false;}
- virtual uint32 GetDialogStatus(Player* /*player*/) {return 100;}
+ virtual bool GossipHello(Player* /*player*/) { return false; }
+ virtual bool GossipSelect(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/) { return false; }
+ virtual bool GossipSelectCode(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/, char const* /*code*/) { return false; }
+ virtual bool QuestAccept(Player* /*player*/, Quest const* /*quest*/) { return false; }
+ virtual bool QuestReward(Player* /*player*/, Quest const* /*quest*/, uint32 /*opt*/) { return false; }
+ virtual uint32 GetDialogStatus(Player* /*player*/) { return 100; }
virtual void Destroyed(Player* /*player*/, uint32 /*eventId*/) {}
+ virtual uint32 GetData(uint32 /*id*/) { return 0; }
+ virtual void SetData64(uint32 /*id*/, uint64 /*value*/) {}
+ virtual uint64 GetData64(uint32 /*id*/) { return 0; }
virtual void SetData(uint32 /*id*/, uint32 /*value*/) {}
virtual void OnGameEvent(bool /*start*/, uint16 /*eventId*/) {}
virtual void OnStateChanged(uint32 /*state*/, Unit* /*unit*/) { }
@@ -58,8 +61,8 @@ class NullGameObjectAI : public GameObjectAI
public:
explicit NullGameObjectAI(GameObject* g);
- void UpdateAI(const uint32 /*diff*/) {}
+ void UpdateAI(uint32 /*diff*/) {}
- static int Permissible(const GameObject* /*go*/) { return PERMIT_BASE_IDLE; }
+ static int Permissible(GameObject const* /*go*/) { return PERMIT_BASE_IDLE; }
};
#endif
diff --git a/src/server/game/AI/CoreAI/GuardAI.cpp b/src/server/game/AI/CoreAI/GuardAI.cpp
index b78fec7c142..6e2326ca9d5 100755
--- a/src/server/game/AI/CoreAI/GuardAI.cpp
+++ b/src/server/game/AI/CoreAI/GuardAI.cpp
@@ -23,7 +23,7 @@
#include "World.h"
#include "CreatureAIImpl.h"
-int GuardAI::Permissible(const Creature* creature)
+int GuardAI::Permissible(Creature const* creature)
{
if (creature->isGuard())
return PERMIT_BASE_SPECIAL;
@@ -31,7 +31,7 @@ int GuardAI::Permissible(const Creature* creature)
return PERMIT_BASE_NO;
}
-GuardAI::GuardAI(Creature* creature) : ScriptedAI(creature), i_victimGuid(0), i_state(STATE_NORMAL), i_tracker(TIME_INTERVAL_LOOK)
+GuardAI::GuardAI(Creature* creature) : ScriptedAI(creature)
{
}
@@ -40,108 +40,35 @@ bool GuardAI::CanSeeAlways(WorldObject const* obj)
if (!obj->isType(TYPEMASK_UNIT))
return false;
- std::list t_list = me->getThreatManager().getThreatList();
- for (std::list::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
- {
- if (Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()))
- if (unit == obj)
- return true;
- }
+ std::list threatList = me->getThreatManager().getThreatList();
+ for (std::list::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr)
+ if ((*itr)->getUnitGuid() == obj->GetGUID())
+ return true;
return false;
}
-void GuardAI::MoveInLineOfSight(Unit* unit)
-{
- // Ignore Z for flying creatures
- if (!me->canFly() && me->GetDistanceZ(unit) > CREATURE_Z_ATTACK_RANGE)
- return;
-
- if (!me->getVictim() && me->IsValidAttackTarget(unit) &&
- (unit->IsHostileToPlayers() || me->IsHostileTo(unit)) &&
- unit->isInAccessiblePlaceFor(me))
- {
- float attackRadius = me->GetAttackDistance(unit);
- if (me->IsWithinDistInMap(unit, attackRadius))
- {
- //Need add code to let guard support player
- AttackStart(unit);
- //u->RemoveAurasByType(SPELL_AURA_MOD_STEALTH);
- }
- }
-}
-
void GuardAI::EnterEvadeMode()
{
if (!me->isAlive())
{
- sLog->outStaticDebug("Creature stopped attacking because he is dead [guid=%u]", me->GetGUIDLow());
me->GetMotionMaster()->MoveIdle();
-
- i_state = STATE_NORMAL;
-
- i_victimGuid = 0;
me->CombatStop(true);
me->DeleteThreatList();
return;
}
- Unit* victim = ObjectAccessor::GetUnit(*me, i_victimGuid);
-
- if (!victim)
- {
- sLog->outStaticDebug("Creature stopped attacking because victim does not exist [guid=%u]", me->GetGUIDLow());
- }
- else if (!victim ->isAlive())
- {
- sLog->outStaticDebug("Creature stopped attacking because victim is dead [guid=%u]", me->GetGUIDLow());
- }
- else if (victim ->HasStealthAura())
- {
- sLog->outStaticDebug("Creature stopped attacking because victim is using stealth [guid=%u]", me->GetGUIDLow());
- }
- else if (victim ->isInFlight())
- {
- sLog->outStaticDebug("Creature stopped attacking because victim is flying away [guid=%u]", me->GetGUIDLow());
- }
- else
- {
- sLog->outStaticDebug("Creature stopped attacking because victim outran him [guid=%u]", me->GetGUIDLow());
- }
+ sLog->outDebug(LOG_FILTER_UNITS, "Guard entry: %u enters evade mode.", me->GetEntry());
me->RemoveAllAuras();
me->DeleteThreatList();
- i_victimGuid = 0;
me->CombatStop(true);
- i_state = STATE_NORMAL;
// Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
me->GetMotionMaster()->MoveTargetedHome();
}
-void GuardAI::UpdateAI(const uint32 /*diff*/)
-{
- // update i_victimGuid if me->getVictim() !=0 and changed
- if (!UpdateVictim())
- return;
-
- Unit* const victim = me->getVictim();
- if (!victim)
- return;
-
- i_victimGuid = victim->GetGUID();
-
- if (me->isAttackReady())
- {
- if (me->IsWithinMeleeRange(victim))
- {
- me->AttackerStateUpdate(victim);
- me->resetAttackTimer();
- }
- }
-}
-
void GuardAI::JustDied(Unit* killer)
{
if (Player* player = killer->GetCharmerOrOwnerPlayerOrPlayerItself())
diff --git a/src/server/game/AI/CoreAI/GuardAI.h b/src/server/game/AI/CoreAI/GuardAI.h
index c80c5a6c343..c8dd9d54921 100755
--- a/src/server/game/AI/CoreAI/GuardAI.h
+++ b/src/server/game/AI/CoreAI/GuardAI.h
@@ -20,34 +20,19 @@
#define TRINITY_GUARDAI_H
#include "ScriptedCreature.h"
-#include "Timer.h"
class Creature;
class GuardAI : public ScriptedAI
{
- enum GuardState
- {
- STATE_NORMAL = 1,
- STATE_LOOK_AT_VICTIM = 2
- };
-
public:
+ explicit GuardAI(Creature* creature);
- explicit GuardAI(Creature* c);
-
- void MoveInLineOfSight(Unit*);
- void EnterEvadeMode();
- void JustDied(Unit*);
+ static int Permissible(Creature const* creature);
bool CanSeeAlways(WorldObject const* obj);
- void UpdateAI(const uint32);
- static int Permissible(const Creature*);
-
- private:
- uint64 i_victimGuid;
- GuardState i_state;
- TimeTracker i_tracker;
+ void EnterEvadeMode();
+ void JustDied(Unit* killer);
};
#endif
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp
index 30ebd06745f..160b406a6ea 100755
--- a/src/server/game/AI/CoreAI/PetAI.cpp
+++ b/src/server/game/AI/CoreAI/PetAI.cpp
@@ -109,17 +109,25 @@ void PetAI::UpdateAI(const uint32 diff)
}
else if (owner && me->GetCharmInfo()) //no victim
{
- Unit* nextTarget = SelectNextTarget();
+ // Only aggressive pets do target search every update.
+ // Defensive pets do target search only in these cases:
+ // * Owner attacks something - handled by OwnerAttacked()
+ // * Owner receives damage - handled by OwnerDamagedBy()
+ // * Pet is in combat and current target dies - handled by KilledUnit()
+ if (me->HasReactState(REACT_AGGRESSIVE))
+ {
+ Unit* nextTarget = SelectNextTarget();
- if (me->HasReactState(REACT_PASSIVE))
- _stopAttack();
- else if (nextTarget)
- AttackStart(nextTarget);
+ if (nextTarget)
+ AttackStart(nextTarget);
+ else
+ HandleReturnMovement();
+ }
else
HandleReturnMovement();
}
else if (owner && !me->HasUnitState(UNIT_STATE_FOLLOW)) // no charm info and no victim
- me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, me->GetFollowAngle());
+ HandleReturnMovement();
if (!me->GetCharmInfo())
return;
@@ -145,40 +153,56 @@ void PetAI::UpdateAI(const uint32 diff)
if (spellInfo->IsPositive())
{
- // non combat spells allowed
- // only pet spells have IsNonCombatSpell and not fit this reqs:
- // Consume Shadows, Lesser Invisibility, so ignore checks for its
if (spellInfo->CanBeUsedInCombat())
{
- // allow only spell without spell cost or with spell cost but not duration limit
- int32 duration = spellInfo->GetDuration();
- if ((spellInfo->ManaCost || spellInfo->ManaCostPercentage || spellInfo->ManaPerSecond) && duration > 0)
+ // check spell cooldown
+ if (me->HasSpellCooldown(spellInfo->Id))
continue;
- // allow only spell without cooldown > duration
- int32 cooldown = spellInfo->GetRecoveryTime();
- if (cooldown >= 0 && duration >= 0 && cooldown > duration)
+ // Check if we're in combat or commanded to attack
+ if (!me->isInCombat() && !me->GetCharmInfo()->IsCommandAttack())
continue;
}
Spell* spell = new Spell(me, spellInfo, TRIGGERED_NONE, 0);
-
bool spellUsed = false;
- for (std::set::const_iterator tar = m_AllySet.begin(); tar != m_AllySet.end(); ++tar)
+
+ // Some spells can target enemy or friendly (DK Ghoul's Leap)
+ // Check for enemy first (pet then owner)
+ Unit* target = me->getAttackerForHelper();
+ if (!target && owner)
+ target = owner->getAttackerForHelper();
+
+ if (target)
{
- Unit* target = ObjectAccessor::GetUnit(*me, *tar);
-
- //only buff targets that are in combat, unless the spell can only be cast while out of combat
- if (!target)
- continue;
-
- if (spell->CanAutoCast(target))
+ if (CanAttack(target) && spell->CanAutoCast(target))
{
- targetSpellStore.push_back(std::make_pair(target, spell));
+ targetSpellStore.push_back(std::make_pair(target, spell));
spellUsed = true;
- break;
}
}
+
+ // No enemy, check friendly
+ if (!spellUsed)
+ {
+ for (std::set::const_iterator tar = m_AllySet.begin(); tar != m_AllySet.end(); ++tar)
+ {
+ Unit* ally = ObjectAccessor::GetUnit(*me, *tar);
+
+ //only buff targets that are in combat, unless the spell can only be cast while out of combat
+ if (!ally)
+ continue;
+
+ if (spell->CanAutoCast(ally))
+ {
+ targetSpellStore.push_back(std::make_pair(ally, spell));
+ spellUsed = true;
+ break;
+ }
+ }
+ }
+
+ // No valid targets at all
if (!spellUsed)
delete spell;
}
@@ -186,7 +210,7 @@ void PetAI::UpdateAI(const uint32 diff)
{
Spell* spell = new Spell(me, spellInfo, TRIGGERED_NONE, 0);
if (spell->CanAutoCast(me->getVictim()))
- targetSpellStore.push_back(std::make_pair(me->getVictim(), spell));
+ targetSpellStore.push_back(std::make_pair(me->getVictim(), spell));
else
delete spell;
}
@@ -278,6 +302,7 @@ void PetAI::KilledUnit(Unit* victim)
// next target selection
me->AttackStop();
me->GetCharmInfo()->SetIsCommandAttack(false);
+ me->SendMeleeAttackStop(); // Stops the pet's 'Attack' button from flashing
Unit* nextTarget = SelectNextTarget();
@@ -301,6 +326,47 @@ void PetAI::AttackStart(Unit* target)
DoAttack(target, true);
}
+void PetAI::OwnerDamagedBy(Unit* attacker)
+{
+ // Called when owner takes damage. Allows defensive pets to know
+ // that their owner might need help
+
+ if (!attacker)
+ return;
+
+ // Passive pets don't do anything
+ if (me->HasReactState(REACT_PASSIVE))
+ return;
+
+ // Prevent pet from disengaging from current target
+ if (me->getVictim() && me->getVictim()->isAlive())
+ return;
+
+ // Continue to evaluate and attack if necessary
+ AttackStart(attacker);
+}
+
+void PetAI::OwnerAttacked(Unit* target)
+{
+ // Called when owner attacks something. Allows defensive pets to know
+ // that they need to assist
+
+ // Target might be NULL if called from spell with invalid cast targets
+ if (!target)
+ return;
+
+ // Passive pets don't do anything
+ if (me->HasReactState(REACT_PASSIVE))
+ return;
+
+ // Prevent pet from disengaging from current target
+ if (me->getVictim() && me->getVictim()->isAlive())
+ return;
+
+ // Continue to evaluate and attack if necessary
+ AttackStart(target);
+}
+
Unit* PetAI::SelectNextTarget()
{
// Provides next target selection after current target death
@@ -457,7 +523,7 @@ bool PetAI::CanAttack(Unit* target)
// Stay - can attack if target is within range or commanded to
if (me->GetCharmInfo()->HasCommandState(COMMAND_STAY))
- return (me->IsWithinMeleeRange(target, MIN_MELEE_REACH) || me->GetCharmInfo()->IsCommandAttack());
+ return (me->IsWithinMeleeRange(target, MELEE_RANGE) || me->GetCharmInfo()->IsCommandAttack());
// Follow
if (me->GetCharmInfo()->HasCommandState(COMMAND_FOLLOW))
diff --git a/src/server/game/AI/CoreAI/PetAI.h b/src/server/game/AI/CoreAI/PetAI.h
index 730ab12a3ca..ed3e2305556 100755
--- a/src/server/game/AI/CoreAI/PetAI.h
+++ b/src/server/game/AI/CoreAI/PetAI.h
@@ -40,6 +40,8 @@ class PetAI : public CreatureAI
void KilledUnit(Unit* /*victim*/);
void AttackStart(Unit* target);
void MovementInform(uint32 moveType, uint32 data);
+ void OwnerDamagedBy(Unit* attacker);
+ void OwnerAttacked(Unit* target);
private:
bool _isVisible(Unit*) const;
diff --git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp
index 0739b62b605..d12d3c098e8 100755
--- a/src/server/game/AI/CoreAI/TotemAI.cpp
+++ b/src/server/game/AI/CoreAI/TotemAI.cpp
@@ -27,8 +27,7 @@
#include "GridNotifiersImpl.h"
#include "CellImpl.h"
-int
-TotemAI::Permissible(const Creature* creature)
+int TotemAI::Permissible(Creature const* creature)
{
if (creature->isTotem())
return PERMIT_BASE_PROACTIVE;
@@ -41,8 +40,7 @@ TotemAI::TotemAI(Creature* c) : CreatureAI(c), i_victimGuid(0)
ASSERT(c->isTotem());
}
-void
-TotemAI::MoveInLineOfSight(Unit*)
+void TotemAI::MoveInLineOfSight(Unit* /*who*/)
{
}
@@ -51,10 +49,9 @@ void TotemAI::EnterEvadeMode()
me->CombatStop(true);
}
-void
-TotemAI::UpdateAI(const uint32 /*diff*/)
+void TotemAI::UpdateAI(uint32 const /*diff*/)
{
- if (me->ToTotem()->GetTotemType() != TOTEM_ACTIVE)
+ if (me->ToTotem()->GetTotemType() != TOTEM_ACTIVE)
return;
if (!me->isAlive() || me->IsNonMeleeSpellCasted(false))
@@ -98,8 +95,7 @@ TotemAI::UpdateAI(const uint32 /*diff*/)
i_victimGuid = 0;
}
-void
-TotemAI::AttackStart(Unit*)
+void TotemAI::AttackStart(Unit* /*victim*/)
{
// Sentry totem sends ping on attack
if (me->GetEntry() == SENTRY_TOTEM_ENTRY && me->GetOwner()->GetTypeId() == TYPEID_PLAYER)
diff --git a/src/server/game/AI/CoreAI/TotemAI.h b/src/server/game/AI/CoreAI/TotemAI.h
index 0fa2920888f..f0d705345ef 100755
--- a/src/server/game/AI/CoreAI/TotemAI.h
+++ b/src/server/game/AI/CoreAI/TotemAI.h
@@ -31,12 +31,12 @@ class TotemAI : public CreatureAI
explicit TotemAI(Creature* c);
- void MoveInLineOfSight(Unit*);
- void AttackStart(Unit*);
+ void MoveInLineOfSight(Unit* who);
+ void AttackStart(Unit* victim);
void EnterEvadeMode();
- void UpdateAI(const uint32);
- static int Permissible(const Creature*);
+ void UpdateAI(uint32 const diff);
+ static int Permissible(Creature const* creature);
private:
uint64 i_victimGuid;
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h
index b871a25835b..593f0d15e18 100755
--- a/src/server/game/AI/CoreAI/UnitAI.h
+++ b/src/server/game/AI/CoreAI/UnitAI.h
@@ -223,7 +223,7 @@ class UnitAI
targetList.reverse();
if (targetType == SELECT_TARGET_RANDOM)
- Trinity::RandomResizeList(targetList, maxTargets);
+ Trinity::Containers::RandomResizeList(targetList, maxTargets);
else
targetList.resize(maxTargets);
}
diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp
index c8818f84e5b..9c236cbd039 100755
--- a/src/server/game/AI/CreatureAI.cpp
+++ b/src/server/game/AI/CreatureAI.cpp
@@ -25,6 +25,7 @@
#include "Log.h"
#include "MapReference.h"
#include "Player.h"
+#include "CreatureTextMgr.h"
//Disable CreatureAI when charmed
void CreatureAI::OnCharmed(bool /*apply*/)
diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h
index dafd3e4e137..94ac452b9f3 100755
--- a/src/server/game/AI/CreatureAI.h
+++ b/src/server/game/AI/CreatureAI.h
@@ -19,9 +19,9 @@
#ifndef TRINITY_CREATUREAI_H
#define TRINITY_CREATUREAI_H
+#include "Creature.h"
#include "UnitAI.h"
#include "Common.h"
-#include "CreatureTextMgr.h"
class WorldObject;
class Unit;
@@ -138,6 +138,12 @@ class CreatureAI : public UnitAI
// Called at text emote receive from player
virtual void ReceiveEmote(Player* /*player*/, uint32 /*emoteId*/) {}
+ // Called when owner takes damage
+ virtual void OwnerDamagedBy(Unit* /*attacker*/) {}
+
+ // Called when owner attacks something
+ virtual void OwnerAttacked(Unit* /*target*/) {}
+
/// == Triggered Actions Requested ==================
// Called when creature attack expected (if creature can and no have current victim)
diff --git a/src/server/game/AI/CreatureAIImpl.h b/src/server/game/AI/CreatureAIImpl.h
index f568da80b49..d097adf38ec 100755
--- a/src/server/game/AI/CreatureAIImpl.h
+++ b/src/server/game/AI/CreatureAIImpl.h
@@ -326,11 +326,15 @@ class EventMap : private std::map
uint32 GetPhaseMask() const { return (_phase >> 24) & 0xFF; }
+ bool Empty() const { return empty(); }
+
// Sets event phase, must be in range 1 - 8
void SetPhase(uint32 phase)
{
if (phase && phase < 8)
_phase = (1 << (phase + 24));
+ else if (!phase)
+ _phase = 0;
}
// Creates new event entry in map with given id, time, group if given (1 - 8) and phase if given (1 - 8)
@@ -604,6 +608,7 @@ inline void UnitAI::DoCast(Unit* victim, uint32 spellId, bool triggered)
inline void UnitAI::DoCastVictim(uint32 spellId, bool triggered)
{
+ // Why don't we check for casting unit_state and existing target as we do in DoCast(.. ?
me->CastSpell(me->getVictim(), spellId, triggered);
}
diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp
index ab616d78a8c..1a0c6652e74 100755
--- a/src/server/game/AI/CreatureAISelector.cpp
+++ b/src/server/game/AI/CreatureAISelector.cpp
@@ -82,7 +82,7 @@ namespace FactorySelector
{
const CreatureAICreator* factory = iter->second;
const SelectableAI* p = dynamic_cast(factory);
- ASSERT(p != NULL);
+ ASSERT(p);
int val = p->Permit(creature);
if (val > best_val)
{
@@ -102,7 +102,7 @@ namespace FactorySelector
MovementGenerator* selectMovementGenerator(Creature* creature)
{
MovementGeneratorRegistry& mv_registry(*MovementGeneratorRepository::instance());
- ASSERT(creature->GetCreatureInfo() != NULL);
+ ASSERT(creature->GetCreatureTemplate());
const MovementGeneratorCreator* mv_factory = mv_registry.GetRegistryItem(creature->GetDefaultMovementType());
/* if (mv_factory == NULL)
@@ -133,6 +133,9 @@ namespace FactorySelector
const GameObjectAICreator* ai_factory = NULL;
GameObjectAIRegistry& ai_registry(*GameObjectAIRepository::instance());
+ if (GameObjectAI* scriptedAI = sScriptMgr->GetGameObjectAI(go))
+ return scriptedAI;
+
ai_factory = ai_registry.GetRegistryItem(go->GetAIName());
//future goAI types go here
diff --git a/src/server/game/AI/EventAI/CreatureEventAI.cpp b/src/server/game/AI/EventAI/CreatureEventAI.cpp
index bc1903257b7..9745b7185d9 100755
--- a/src/server/game/AI/EventAI/CreatureEventAI.cpp
+++ b/src/server/game/AI/EventAI/CreatureEventAI.cpp
@@ -95,7 +95,7 @@ CreatureEventAI::CreatureEventAI(Creature* c) : CreatureAI(c)
m_AttackDistance = 0.0f;
m_AttackAngle = 0.0f;
- m_InvinceabilityHpLevel = 0;
+ m_InvincibilityHpLevel = 0;
//Handle Spawned Events
if (!m_bEmptyList)
@@ -816,9 +816,9 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32
case ACTION_T_SET_INVINCIBILITY_HP_LEVEL:
{
if (action.invincibility_hp_level.is_percent)
- m_InvinceabilityHpLevel = me->CountPctFromMaxHealth(action.invincibility_hp_level.hp_level);
+ m_InvincibilityHpLevel = me->CountPctFromMaxHealth(action.invincibility_hp_level.hp_level);
else
- m_InvinceabilityHpLevel = action.invincibility_hp_level.hp_level;
+ m_InvincibilityHpLevel = action.invincibility_hp_level.hp_level;
break;
}
case ACTION_T_MOUNT_TO_ENTRY_OR_MODEL:
@@ -1107,7 +1107,7 @@ void CreatureEventAI::UpdateAI(const uint32 diff)
break;
case EVENT_T_RANGE:
if (me->getVictim())
- if (me->IsInMap(me->getVictim()))
+ if (me->IsInMap(me->getVictim()) && me->InSamePhase(me->getVictim()))
if (me->IsInRange(me->getVictim(), (float)(*i).Event.range.minDist, (float)(*i).Event.range.maxDist))
ProcessEvent(*i);
break;
@@ -1252,7 +1252,7 @@ void CreatureEventAI::DoScriptText(int32 textEntry, WorldObject* source, Unit* t
if ((*i).second.SoundId)
{
- if (GetSoundEntriesStore()->LookupEntry((*i).second.SoundId))
+ if (sSoundEntriesStore.LookupEntry((*i).second.SoundId))
source->PlayDirectSound((*i).second.SoundId);
else
sLog->outErrorDb("CreatureEventAI: DoScriptText entry %i tried to process invalid sound id %u.", textEntry, (*i).second.SoundId);
@@ -1350,12 +1350,12 @@ void CreatureEventAI::ReceiveEmote(Player* player, uint32 textEmote)
void CreatureEventAI::DamageTaken(Unit* /*done_by*/, uint32& damage)
{
- if (m_InvinceabilityHpLevel > 0 && me->GetHealth() < m_InvinceabilityHpLevel+damage)
+ if (m_InvincibilityHpLevel > 0 && me->GetHealth() < m_InvincibilityHpLevel+damage)
{
- if (me->GetHealth() <= m_InvinceabilityHpLevel)
+ if (me->GetHealth() <= m_InvincibilityHpLevel)
damage = 0;
else
- damage = me->GetHealth() - m_InvinceabilityHpLevel;
+ damage = me->GetHealth() - m_InvincibilityHpLevel;
}
}
diff --git a/src/server/game/AI/EventAI/CreatureEventAI.h b/src/server/game/AI/EventAI/CreatureEventAI.h
index c4daf2563e0..3d2bcf888c8 100755
--- a/src/server/game/AI/EventAI/CreatureEventAI.h
+++ b/src/server/game/AI/EventAI/CreatureEventAI.h
@@ -641,6 +641,6 @@ class CreatureEventAI : public CreatureAI
bool m_MeleeEnabled; // If we allow melee auto attack
float m_AttackDistance; // Distance to attack from
float m_AttackAngle; // Angle of attack
- uint32 m_InvinceabilityHpLevel; // Minimal health level allowed at damage apply
+ uint32 m_InvincibilityHpLevel; // Minimal health level allowed at damage apply
};
#endif
diff --git a/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp b/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp
index add7b4db174..517e55af457 100755
--- a/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp
+++ b/src/server/game/AI/EventAI/CreatureEventAIMgr.cpp
@@ -38,7 +38,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Texts()
// Load EventAI Text
sObjectMgr->LoadTrinityStrings("creature_ai_texts", MIN_CREATURE_AI_TEXT_STRING_ID, MAX_CREATURE_AI_TEXT_STRING_ID);
- // Gather Additional data from EventAI Texts
+ // Gather Additional data from EventAI Texts 0 1 2 3 4
QueryResult result = WorldDatabase.Query("SELECT entry, sound, type, language, emote FROM creature_ai_texts");
if (!result)
@@ -56,10 +56,10 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Texts()
StringTextData temp;
int32 i = fields[0].GetInt32();
- temp.SoundId = fields[1].GetInt32();
- temp.Type = fields[2].GetInt32();
- temp.Language = fields[3].GetInt32();
- temp.Emote = fields[4].GetInt32();
+ temp.SoundId = fields[1].GetUInt32();
+ temp.Type = fields[2].GetUInt8();
+ temp.Language = fields[3].GetUInt8();
+ temp.Emote = fields[4].GetUInt16();
// range negative
if (i > MIN_CREATURE_AI_TEXT_STRING_ID || i <= MAX_CREATURE_AI_TEXT_STRING_ID)
@@ -187,7 +187,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
temp.creature_id = fields[1].GetUInt32();
uint32 creature_id = temp.creature_id;
- uint32 e_type = fields[2].GetUInt32();
+ uint32 e_type = fields[2].GetUInt8();
//Report any errors in event
if (e_type >= EVENT_T_END)
{
@@ -196,13 +196,13 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
}
temp.event_type = EventAI_Type(e_type);
- temp.event_inverse_phase_mask = fields[3].GetUInt32();
- temp.event_chance = fields[4].GetUInt8();
- temp.event_flags = fields[5].GetUInt8();
- temp.raw.param1 = fields[6].GetUInt32();
- temp.raw.param2 = fields[7].GetUInt32();
- temp.raw.param3 = fields[8].GetUInt32();
- temp.raw.param4 = fields[9].GetUInt32();
+ temp.event_inverse_phase_mask = fields[3].GetInt32();
+ temp.event_chance = fields[4].GetUInt32();
+ temp.event_flags = fields[5].GetUInt32();
+ temp.raw.param1 = fields[6].GetInt32();
+ temp.raw.param2 = fields[7].GetInt32();
+ temp.raw.param3 = fields[8].GetInt32();
+ temp.raw.param4 = fields[9].GetInt32();
//Creature does not exist in database
if (!sObjectMgr->GetCreatureTemplate(temp.creature_id))
@@ -399,7 +399,7 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
for (uint32 j = 0; j < MAX_ACTIONS; j++)
{
- uint16 action_type = fields[10+(j*4)].GetUInt16();
+ uint16 action_type = fields[10+(j*4)].GetUInt8();
if (action_type >= ACTION_T_END)
{
sLog->outErrorDb("CreatureEventAI: Event %u Action %u has incorrect action type (%u), replace by ACTION_T_NONE.", i, j+1, action_type);
@@ -410,9 +410,9 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
CreatureEventAI_Action& action = temp.action[j];
action.type = EventAI_ActionType(action_type);
- action.raw.param1 = fields[11+(j*4)].GetUInt32();
- action.raw.param2 = fields[12+(j*4)].GetUInt32();
- action.raw.param3 = fields[13+(j*4)].GetUInt32();
+ action.raw.param1 = fields[11+(j*4)].GetInt32();
+ action.raw.param2 = fields[12+(j*4)].GetInt32();
+ action.raw.param3 = fields[13+(j*4)].GetInt32();
//Report any errors in actions
switch (action.type)
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
index 78adc38a67d..55ce2451709 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
@@ -30,18 +30,6 @@ void SummonList::DoZoneInCombat(uint32 entry)
}
}
-void SummonList::DoAction(uint32 entry, int32 info)
-{
- for (iterator i = begin(); i != end();)
- {
- Creature* summon = Unit::GetCreature(*me, *i);
- ++i;
- if (summon && summon->IsAIEnabled
- && (!entry || summon->GetEntry() == entry))
- summon->AI()->DoAction(info);
- }
-}
-
void SummonList::DespawnEntry(uint32 entry)
{
for (iterator i = begin(); i != end();)
@@ -126,15 +114,7 @@ void ScriptedAI::UpdateAI(uint32 const /*diff*/)
if (!UpdateVictim())
return;
- if (me->isAttackReady())
- {
- //If we are within range melee the target
- if (me->IsWithinMeleeRange(me->getVictim()))
- {
- me->AttackerStateUpdate(me->getVictim());
- me->resetAttackTimer();
- }
- }
+ DoMeleeAttackIfReady();
}
void ScriptedAI::DoStartMovement(Unit* victim, float distance, float angle)
@@ -171,7 +151,7 @@ void ScriptedAI::DoPlaySoundToSet(WorldObject* source, uint32 soundId)
if (!source)
return;
- if (!GetSoundEntriesStore()->LookupEntry(soundId))
+ if (!sSoundEntriesStore.LookupEntry(soundId))
{
sLog->outError("TSCR: Invalid soundId %u used in DoPlaySoundToSet (Source: TypeId %u, GUID %u)", soundId, source->GetTypeId(), source->GetGUIDLow());
return;
@@ -189,11 +169,11 @@ SpellInfo const* ScriptedAI::SelectSpell(Unit* target, uint32 school, uint32 mec
{
//No target so we can't cast
if (!target)
- return false;
+ return NULL;
//Silenced so we can't cast
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED))
- return false;
+ return NULL;
//Using the extended script system we first create a list of viable spells
SpellInfo const* apSpell[CREATURE_MAX_SPELLS];
@@ -274,7 +254,7 @@ void ScriptedAI::DoResetThreat()
for (std::list::iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
{
- Unit* unit = Unit::GetUnit((*me), (*itr)->getUnitGuid());
+ Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid());
if (unit && DoGetThreat(unit))
DoModifyThreatPercent(unit, -100);
@@ -309,14 +289,13 @@ void ScriptedAI::DoTeleportTo(const float position[4])
void ScriptedAI::DoTeleportPlayer(Unit* unit, float x, float y, float z, float o)
{
- if (!unit || unit->GetTypeId() != TYPEID_PLAYER)
- {
- if (unit)
- sLog->outError("TSCR: Creature " UI64FMTD " (Entry: %u) Tried to teleport non-player unit (Type: %u GUID: " UI64FMTD ") to x: %f y:%f z: %f o: %f. Aborted.", me->GetGUID(), me->GetEntry(), unit->GetTypeId(), unit->GetGUID(), x, y, z, o);
+ if (!unit)
return;
- }
- CAST_PLR(unit)->TeleportTo(unit->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
+ if (Player* player = unit->ToPlayer())
+ player->TeleportTo(unit->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
+ else
+ sLog->outError("TSCR: Creature " UI64FMTD " (Entry: %u) Tried to teleport non-player unit (Type: %u GUID: " UI64FMTD ") to x: %f y:%f z: %f o: %f. Aborted.", me->GetGUID(), me->GetEntry(), unit->GetTypeId(), unit->GetGUID(), x, y, z, o);
}
void ScriptedAI::DoTeleportAll(float x, float y, float z, float o)
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
index a01c993cab6..4fac8b3cba5 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
@@ -38,7 +38,18 @@ class SummonList : public std::list
void Despawn(Creature* summon) { remove(summon->GetGUID()); }
void DespawnEntry(uint32 entry);
void DespawnAll();
- void DoAction(uint32 entry, int32 info);
+
+ template void DoAction(int32 info, Predicate& predicate, uint16 max = 0)
+ {
+ Trinity::Containers::RandomResizeList(*this, predicate, max);
+ for (iterator i = begin(); i != end(); )
+ {
+ Creature* summon = Unit::GetCreature(*me, *i++);
+ if (summon && summon->IsAIEnabled)
+ summon->AI()->DoAction(info);
+ }
+ }
+
void DoZoneInCombat(uint32 entry = 0);
void RemoveNotExisting();
bool HasEntry(uint32 entry);
@@ -46,6 +57,22 @@ class SummonList : public std::list
Creature* me;
};
+class EntryCheckPredicate
+{
+ public:
+ EntryCheckPredicate(uint32 entry) : _entry(entry) {}
+ bool operator()(uint64 guid) { return GUID_ENPART(guid) == _entry; }
+
+ private:
+ uint32 _entry;
+};
+
+class DummyEntryCheckPredicate
+{
+ public:
+ bool operator()(uint64) { return true; }
+};
+
struct ScriptedAI : public CreatureAI
{
explicit ScriptedAI(Creature* creature);
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
index 048cc8b3d68..2243734f642 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
@@ -57,7 +57,7 @@ bool npc_escortAI::AssistPlayerInCombat(Unit* who)
return false;
//experimental (unknown) flag not present
- if (!(me->GetCreatureInfo()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
+ if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
return false;
//not a player
@@ -95,7 +95,7 @@ void npc_escortAI::MoveInLineOfSight(Unit* who)
if (HasEscortState(STATE_ESCORT_ESCORTING) && AssistPlayerInCombat(who))
return;
- if (!me->canFly() && me->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
+ if (!me->CanFly() && me->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
return;
if (me->IsHostileTo(who))
@@ -150,7 +150,7 @@ void npc_escortAI::JustRespawned()
//add a small delay before going to first waypoint, normal in near all cases
m_uiWPWaitTimer = 2500;
- if (me->getFaction() != me->GetCreatureInfo()->faction_A)
+ if (me->getFaction() != me->GetCreatureTemplate()->faction_A)
me->RestoreFaction();
Reset();
@@ -307,11 +307,7 @@ void npc_escortAI::MovementInform(uint32 moveType, uint32 pointId)
{
sLog->outDebug(LOG_FILTER_TSCR, "TSCR: EscortAI has returned to original position before combat");
- if (m_bIsRunning && me->HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
- me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
- else if (!m_bIsRunning && !me->HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
- me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
-
+ me->SetWalk(!m_bIsRunning);
RemoveEscortState(STATE_ESCORT_RETURNING);
if (!m_uiWPWaitTimer)
@@ -387,7 +383,7 @@ void npc_escortAI::FillPointMovementListForCreature()
if (movePoints.empty())
return;
- ScriptPointVector::const_iterator itrEnd = movePoints.end();;
+ ScriptPointVector::const_iterator itrEnd = movePoints.end();
for (ScriptPointVector::const_iterator itr = movePoints.begin(); itr != itrEnd; ++itr)
{
Escort_Waypoint point(itr->uiPointId, itr->fX, itr->fY, itr->fZ, itr->uiWaitTime);
@@ -400,14 +396,14 @@ void npc_escortAI::SetRun(bool on)
if (on)
{
if (!m_bIsRunning)
- me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->SetWalk(false);
else
sLog->outDebug(LOG_FILTER_TSCR, "TSCR: EscortAI attempt to set run mode, but is already running.");
}
else
{
if (m_bIsRunning)
- me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->SetWalk(true);
else
sLog->outDebug(LOG_FILTER_TSCR, "TSCR: EscortAI attempt to set walk mode, but is already walking.");
}
@@ -473,9 +469,9 @@ void npc_escortAI::Start(bool isActiveAttacker /* = true*/, bool run /* = false
//Set initial speed
if (m_bIsRunning)
- me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->SetWalk(false);
else
- me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->SetWalk(true);
AddEscortState(STATE_ESCORT_ESCORTING);
}
diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
index d83ad9b756c..13bbbe2c338 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
@@ -55,7 +55,7 @@ bool FollowerAI::AssistPlayerInCombat(Unit* who)
return false;
//experimental (unknown) flag not present
- if (!(me->GetCreatureInfo()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
+ if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
return false;
//not a player
@@ -93,7 +93,7 @@ void FollowerAI::MoveInLineOfSight(Unit* who)
if (HasFollowState(STATE_FOLLOW_INPROGRESS) && AssistPlayerInCombat(who))
return;
- if (!me->canFly() && me->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
+ if (!me->CanFly() && me->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
return;
if (me->IsHostileTo(who))
@@ -150,8 +150,8 @@ void FollowerAI::JustRespawned()
if (!IsCombatMovementAllowed())
SetCombatMovement(true);
- if (me->getFaction() != me->GetCreatureInfo()->faction_A)
- me->setFaction(me->GetCreatureInfo()->faction_A);
+ if (me->getFaction() != me->GetCreatureTemplate()->faction_A)
+ me->setFaction(me->GetCreatureTemplate()->faction_A);
Reset();
}
diff --git a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.cpp
deleted file mode 100755
index 25c7f6f44b7..00000000000
--- a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.cpp
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright (C) 2008-2012 TrinityCore
- * Copyright (C) 2006-2009 ScriptDev2
- *
- * 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, see .
- */
-
-/* ScriptData
-SDName: SimpleAI
-SD%Complete: 100
-SDComment: Base Class for SimpleAI creatures
-SDCategory: Creatures
-EndScriptData */
-
-#include "ScriptPCH.h"
-#include "ScriptedSimpleAI.h"
-
-SimpleAI::SimpleAI(Creature* c) : ScriptedAI(c)
-{
- //Clear all data
- Aggro_TextId[0] = 0;
- Aggro_TextId[1] = 0;
- Aggro_TextId[2] = 0;
- Aggro_Sound[0] = 0;
- Aggro_Sound[1] = 0;
- Aggro_Sound[2] = 0;
-
- Death_TextId[0] = 0;
- Death_TextId[1] = 0;
- Death_TextId[2] = 0;
- Death_Sound[0] = 0;
- Death_Sound[1] = 0;
- Death_Sound[2] = 0;
- Death_Spell = 0;
- Death_Target_Type = 0;
-
- Kill_TextId[0] = 0;
- Kill_TextId[1] = 0;
- Kill_TextId[2] = 0;
- Kill_Sound[0] = 0;
- Kill_Sound[1] = 0;
- Kill_Sound[2] = 0;
- Kill_Spell = 0;
- Kill_Target_Type = 0;
-
- memset(Spell, 0, sizeof(Spell));
-
- EnterEvadeMode();
-}
-
-void SimpleAI::Reset()
-{
-}
-
-void SimpleAI::EnterCombat(Unit* who)
-{
- //Reset cast timers
- if (Spell[0].First_Cast >= 0)
- Spell_Timer[0] = Spell[0].First_Cast;
- else Spell_Timer[0] = 1000;
- if (Spell[1].First_Cast >= 0)
- Spell_Timer[1] = Spell[1].First_Cast;
- else Spell_Timer[1] = 1000;
- if (Spell[2].First_Cast >= 0)
- Spell_Timer[2] = Spell[2].First_Cast;
- else Spell_Timer[2] = 1000;
- if (Spell[3].First_Cast >= 0)
- Spell_Timer[3] = Spell[3].First_Cast;
- else Spell_Timer[3] = 1000;
- if (Spell[4].First_Cast >= 0)
- Spell_Timer[4] = Spell[4].First_Cast;
- else Spell_Timer[4] = 1000;
- if (Spell[5].First_Cast >= 0)
- Spell_Timer[5] = Spell[5].First_Cast;
- else Spell_Timer[5] = 1000;
- if (Spell[6].First_Cast >= 0)
- Spell_Timer[6] = Spell[6].First_Cast;
- else Spell_Timer[6] = 1000;
- if (Spell[7].First_Cast >= 0)
- Spell_Timer[7] = Spell[7].First_Cast;
- else Spell_Timer[7] = 1000;
- if (Spell[8].First_Cast >= 0)
- Spell_Timer[8] = Spell[8].First_Cast;
- else Spell_Timer[8] = 1000;
- if (Spell[9].First_Cast >= 0)
- Spell_Timer[9] = Spell[9].First_Cast;
- else Spell_Timer[9] = 1000;
-
- uint8 random_text = urand(0, 2);
-
- //Random text
- if (Aggro_TextId[random_text])
- DoScriptText(Aggro_TextId[random_text], me, who);
-
- //Random sound
- if (Aggro_Sound[random_text])
- DoPlaySoundToSet(me, Aggro_Sound[random_text]);
-}
-
-void SimpleAI::KilledUnit(Unit* victim)
-{
- uint8 random_text = urand(0, 2);
-
- //Random yell
- if (Kill_TextId[random_text])
- DoScriptText(Kill_TextId[random_text], me, victim);
-
- //Random sound
- if (Kill_Sound[random_text])
- DoPlaySoundToSet(me, Kill_Sound[random_text]);
-
- if (!Kill_Spell)
- return;
-
- Unit* target = NULL;
-
- switch (Kill_Target_Type)
- {
- case CAST_SELF:
- target = me;
- break;
- case CAST_HOSTILE_TARGET:
- target = me->getVictim();
- break;
- case CAST_HOSTILE_SECOND_AGGRO:
- target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1);
- break;
- case CAST_HOSTILE_LAST_AGGRO:
- target = SelectTarget(SELECT_TARGET_BOTTOMAGGRO, 0);
- break;
- case CAST_HOSTILE_RANDOM:
- target = SelectTarget(SELECT_TARGET_RANDOM, 0);
- break;
- case CAST_KILLEDUNIT_VICTIM:
- target = victim;
- break;
- }
-
- //Target is ok, cast a spell on it
- if (target)
- DoCast(target, Kill_Spell);
-}
-
-void SimpleAI::DamageTaken(Unit* killer, uint32& damage)
-{
- //Return if damage taken won't kill us
- if (me->GetHealth() > damage)
- return;
-
- uint8 random_text = urand(0, 2);
-
- //Random yell
- if (Death_TextId[random_text])
- DoScriptText(Death_TextId[random_text], me, killer);
-
- //Random sound
- if (Death_Sound[random_text])
- DoPlaySoundToSet(me, Death_Sound[random_text]);
-
- if (!Death_Spell)
- return;
-
- Unit* target = NULL;
-
- switch (Death_Target_Type)
- {
- case CAST_SELF:
- target = me;
- break;
- case CAST_HOSTILE_TARGET:
- target = me->getVictim();
- break;
- case CAST_HOSTILE_SECOND_AGGRO:
- target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1);
- break;
- case CAST_HOSTILE_LAST_AGGRO:
- target = SelectTarget(SELECT_TARGET_BOTTOMAGGRO, 0);
- break;
- case CAST_HOSTILE_RANDOM:
- target = SelectTarget(SELECT_TARGET_RANDOM, 0);
- break;
- case CAST_JUSTDIED_KILLER:
- target = killer;
- break;
- }
-
- //Target is ok, cast a spell on it
- if (target)
- DoCast(target, Death_Spell);
-}
-
-void SimpleAI::UpdateAI(const uint32 diff)
-{
- //Return since we have no target
- if (!UpdateVictim())
- return;
-
- //Spells
- for (uint32 i = 0; i < MAX_SIMPLEAI_SPELLS; ++i)
- {
- //Spell not valid
- if (!Spell[i].Enabled || !Spell[i].Spell_Id)
- continue;
-
- if (Spell_Timer[i] <= diff)
- {
- //Check if this is a percentage based
- if (Spell[i].First_Cast < 0 && Spell[i].First_Cast > -100 && HealthAbovePct(uint32(-Spell[i].First_Cast)))
- continue;
-
- //Check Current spell
- if (!(Spell[i].InterruptPreviousCast && me->IsNonMeleeSpellCasted(false)))
- {
- Unit* target = NULL;
-
- switch (Spell[i].Cast_Target_Type)
- {
- case CAST_SELF:
- target = me;
- break;
- case CAST_HOSTILE_TARGET:
- target = me->getVictim();
- break;
- case CAST_HOSTILE_SECOND_AGGRO:
- target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1);
- break;
- case CAST_HOSTILE_LAST_AGGRO:
- target = SelectTarget(SELECT_TARGET_BOTTOMAGGRO, 0);
- break;
- case CAST_HOSTILE_RANDOM:
- target = SelectTarget(SELECT_TARGET_RANDOM, 0);
- break;
- }
-
- //Target is ok, cast a spell on it and then do our random yell
- if (target)
- {
- if (me->IsNonMeleeSpellCasted(false))
- me->InterruptNonMeleeSpells(false);
-
- DoCast(target, Spell[i].Spell_Id);
-
- //Yell and sound use the same number so that you can make
- //the Creature yell with the correct sound effect attached
- uint8 random_text = urand(0, 2);
-
- //Random yell
- if (Spell[i].TextId[random_text])
- DoScriptText(Spell[i].TextId[random_text], me, target);
-
- //Random sound
- if (Spell[i].Text_Sound[random_text])
- DoPlaySoundToSet(me, Spell[i].Text_Sound[random_text]);
- }
-
- }
-
- //Spell will cast agian when the cooldown is up
- if (Spell[i].CooldownRandomAddition)
- Spell_Timer[i] = Spell[i].Cooldown + (rand() % Spell[i].CooldownRandomAddition);
- else Spell_Timer[i] = Spell[i].Cooldown;
-
- } else Spell_Timer[i] -= diff;
-
- }
-
- DoMeleeAttackIfReady();
-}
-
diff --git a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.h b/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.h
deleted file mode 100644
index a38bdf85e14..00000000000
--- a/src/server/game/AI/ScriptedAI/ScriptedSimpleAI.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2
-* This program is free software licensed under GPL version 2
-* Please see the included DOCS/LICENSE.TXT for more information */
-
-#ifndef SC_SIMPLEAI_H
-#define SC_SIMPLEAI_H
-
-enum CastTarget
-{
- CAST_SELF = 0, //Self cast
- CAST_HOSTILE_TARGET, //Our current target (ie: highest aggro)
- CAST_HOSTILE_SECOND_AGGRO, //Second highest aggro (generaly used for cleaves and some special attacks)
- CAST_HOSTILE_LAST_AGGRO, //Dead last on aggro (no idea what this could be used for)
- CAST_HOSTILE_RANDOM, //Just any random target on our threat list
- CAST_FRIENDLY_RANDOM, //NOT YET IMPLEMENTED
-
- //Special cases
- CAST_KILLEDUNIT_VICTIM, //Only works within KilledUnit function
- CAST_JUSTDIED_KILLER, //Only works within JustDied function
-};
-
-#define MAX_SIMPLEAI_SPELLS 10
-
-struct SimpleAI : public ScriptedAI
-{
- SimpleAI(Creature* c);// : ScriptedAI(c);
-
- void Reset();
-
- void EnterCombat(Unit* /*who*/);
-
- void KilledUnit(Unit* /*victim*/);
-
- void DamageTaken(Unit* killer, uint32& damage);
-
- void UpdateAI(const uint32 diff);
-
-public:
-
- int32 Aggro_TextId[3];
- uint32 Aggro_Sound[3];
-
- int32 Death_TextId[3];
- uint32 Death_Sound[3];
- uint32 Death_Spell;
- uint32 Death_Target_Type;
-
- int32 Kill_TextId[3];
- uint32 Kill_Sound[3];
- uint32 Kill_Spell;
- uint32 Kill_Target_Type;
-
- struct SimpleAI_Spell
- {
- uint32 Spell_Id; //Spell ID to cast
- int32 First_Cast; //Delay for first cast
- uint32 Cooldown; //Cooldown between casts
- uint32 CooldownRandomAddition; //Random addition to cooldown (in range from 0 - CooldownRandomAddition)
- uint32 Cast_Target_Type; //Target type (note that certain spells may ignore this)
- bool InterruptPreviousCast; //Interrupt a previous cast if this spell needs to be cast
- bool Enabled; //Spell enabled or disabled (default: false)
-
- //3 texts to many?
- int32 TextId[3];
- uint32 Text_Sound[3];
- }Spell[MAX_SIMPLEAI_SPELLS];
-
-protected:
- uint32 Spell_Timer[MAX_SIMPLEAI_SPELLS];
-};
-
-#endif
-
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 7838e6891fe..08f1b18ffad 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -45,7 +45,7 @@ SmartAI::SmartAI(Creature* c) : CreatureAI(c)
mCanRepeatPath = false;
// spawn in run mode
- me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->SetWalk(false);
mRun = false;
me->GetPosition(&mLastOOCPos);
@@ -68,12 +68,14 @@ SmartAI::SmartAI(Creature* c) : CreatureAI(c)
mFollowCredit = 0;
mFollowArrivedEntry = 0;
mFollowCreditType = 0;
- mInvinceabilityHpLevel = 0;
+ mInvincibilityHpLevel = 0;
}
void SmartAI::UpdateDespawn(const uint32 diff)
{
- if (mDespawnState <= 1 || mDespawnState > 3) return;
+ if (mDespawnState <= 1 || mDespawnState > 3)
+ return;
+
if (mDespawnTime < diff)
{
if (mDespawnState == 2)
@@ -524,7 +526,7 @@ bool SmartAI::AssistPlayerInCombat(Unit* who)
return false;
//experimental (unknown) flag not present
- if (!(me->GetCreatureInfo()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
+ if (!(me->GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_AID_PLAYERS))
return false;
//not a player
@@ -561,7 +563,7 @@ void SmartAI::JustRespawned()
mDespawnState = 0;
mEscortState = SMART_ESCORT_NONE;
me->SetVisible(true);
- if (me->getFaction() != me->GetCreatureInfo()->faction_A)
+ if (me->getFaction() != me->GetCreatureTemplate()->faction_A)
me->RestoreFaction();
GetScript()->ProcessEventsFor(SMART_EVENT_RESPAWN);
Reset();
@@ -638,8 +640,8 @@ void SmartAI::SpellHitTarget(Unit* target, const SpellInfo* spellInfo)
void SmartAI::DamageTaken(Unit* doneBy, uint32& damage)
{
GetScript()->ProcessEventsFor(SMART_EVENT_DAMAGED, doneBy, damage);
- if ((me->GetHealth() - damage) <= mInvinceabilityHpLevel)
- damage -= mInvinceabilityHpLevel;
+ if ((me->GetHealth() - damage) <= mInvincibilityHpLevel)
+ damage = me->GetHealth() - mInvincibilityHpLevel;
}
void SmartAI::HealReceived(Unit* doneBy, uint32& addhealth)
@@ -720,26 +722,16 @@ uint64 SmartAI::GetGUID(int32 /*id*/)
void SmartAI::SetRun(bool run)
{
if (run)
- me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->SetWalk(false);
else
- me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
+ me->SetWalk(true);
mRun = run;
}
void SmartAI::SetFly(bool fly)
{
- if (fly)
- {
- me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
- me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, 0x01);
- }
- else
- {
- me->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
- me->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, 0x01);
- }
- me->SetFlying(fly);
+ me->SetDisableGravity(fly);
me->SendMovementFlagUpdate();
}
@@ -812,12 +804,12 @@ void SmartAI::SetFollow(Unit* target, float dist, float angle, uint32 credit, ui
return;
SetRun(mRun);
mFollowGuid = target->GetGUID();
- mFollowDist = dist ? dist : PET_FOLLOW_DIST;
- mFollowAngle = angle ? angle : me->GetFollowAngle();
+ mFollowDist = dist >= 0.0f ? dist : PET_FOLLOW_DIST;
+ mFollowAngle = angle >= 0.0f ? angle : me->GetFollowAngle();
mFollowArrivedTimer = 1000;
mFollowCredit = credit;
mFollowArrivedEntry = end;
- me->GetMotionMaster()->MoveFollow(target, dist, angle);
+ me->GetMotionMaster()->MoveFollow(target, mFollowDist, mFollowAngle);
mFollowCreditType = creditType;
}
@@ -862,7 +854,7 @@ int SmartGameObjectAI::Permissible(const GameObject* g)
return PERMIT_BASE_NO;
}
-void SmartGameObjectAI::UpdateAI(const uint32 diff)
+void SmartGameObjectAI::UpdateAI(uint32 diff)
{
GetScript()->OnUpdate(diff);
}
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index e82b35ec87a..435aa176d4d 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -23,7 +23,6 @@
#include "CreatureAI.h"
#include "Unit.h"
#include "ConditionMgr.h"
-#include "CreatureTextMgr.h"
#include "Spell.h"
#include "SmartScript.h"
@@ -63,6 +62,7 @@ class SmartAI : public CreatureAI
void RemoveEscortState(uint32 uiEscortState) { mEscortState &= ~uiEscortState; }
void SetAutoAttack(bool on) { mCanAutoAttack = on; }
void SetCombatMove(bool on);
+ bool CanCombatMove() { return mCanCombatMove; }
void SetFollow(Unit* target, float dist = 0.0f, float angle = 0.0f, uint32 credit = 0, uint32 end = 0, uint32 creditType = 0);
void SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker);
@@ -175,7 +175,7 @@ class SmartAI : public CreatureAI
void SetSwim(bool swim = true);
- void SetInvinceabilityHpLevel(uint32 level) { mInvinceabilityHpLevel = level; }
+ void SetInvincibilityHpLevel(uint32 level) { mInvincibilityHpLevel = level; }
void sGossipHello(Player* player);
void sGossipSelect(Player* player, uint32 sender, uint32 action);
@@ -224,8 +224,7 @@ class SmartAI : public CreatureAI
bool mCanAutoAttack;
bool mCanCombatMove;
bool mForcedPaused;
- uint32 mInvinceabilityHpLevel;
-
+ uint32 mInvincibilityHpLevel;
bool AssistPlayerInCombat(Unit* who);
uint32 mDespawnTime;
@@ -240,13 +239,13 @@ public:
SmartGameObjectAI(GameObject* g) : GameObjectAI(g), go(g) {}
~SmartGameObjectAI() {}
- void UpdateAI(const uint32 diff);
+ void UpdateAI(uint32 diff);
void InitializeAI();
void Reset();
SmartScript* GetScript() { return &mScript; }
static int Permissible(const GameObject* g);
- bool GossipHello(Player* player) ;
+ bool GossipHello(Player* player);
bool GossipSelect(Player* player, uint32 sender, uint32 action);
bool GossipSelectCode(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/, const char* /*code*/);
bool QuestAccept(Player* player, Quest const* quest);
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 67d26ea06dd..01a9b777358 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -33,6 +33,47 @@
#include "Group.h"
#include "Vehicle.h"
#include "ScriptedGossip.h"
+#include "CreatureTextMgr.h"
+
+class TrinityStringTextBuilder
+{
+ public:
+ TrinityStringTextBuilder(WorldObject* obj, ChatMsg msgtype, int32 id, uint32 language, uint64 targetGUID)
+ : _source(obj), _msgType(msgtype), _textId(id), _language(language), _targetGUID(targetGUID)
+ {
+ }
+
+ size_t operator()(WorldPacket* data, LocaleConstant locale) const
+ {
+ std::string text = sObjectMgr->GetTrinityString(_textId, locale);
+ char const* localizedName = _source->GetNameForLocaleIdx(locale);
+
+ *data << uint8(_msgType);
+ *data << uint32(_language);
+ *data << uint64(_source->GetGUID());
+ *data << uint32(1); // 2.1.0
+ *data << uint32(strlen(localizedName)+1);
+ *data << localizedName;
+ size_t whisperGUIDpos = data->wpos();
+ *data << uint64(_targetGUID); // Unit Target
+ if (_targetGUID && !IS_PLAYER_GUID(_targetGUID))
+ {
+ *data << uint32(1); // target name length
+ *data << uint8(0); // target name
+ }
+ *data << uint32(text.length() + 1);
+ *data << text;
+ *data << uint8(0); // ChatTag
+
+ return whisperGUIDpos;
+ }
+
+ WorldObject* _source;
+ ChatMsg _msgType;
+ int32 _textId;
+ uint32 _language;
+ uint64 _targetGUID;
+};
SmartScript::SmartScript()
{
@@ -67,8 +108,11 @@ void SmartScript::OnReset()
ResetBaseObject();
for (SmartAIEventList::iterator i = mEvents.begin(); i != mEvents.end(); ++i)
{
- InitTimer((*i));
- (*i).runOnce = false;
+ if (!((*i).event.event_flags & SMART_EVENT_FLAG_DONT_RESET))
+ {
+ InitTimer((*i));
+ (*i).runOnce = false;
+ }
}
ProcessEventsFor(SMART_EVENT_RESET);
mLastInvoker = 0;
@@ -695,7 +739,10 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
me->DoFleeToGetAssistance();
if (e.action.flee.withEmote)
- sCreatureTextMgr->SendChatString(me, sObjectMgr->GetTrinityStringForDBCLocale(LANG_FLEE), CHAT_MSG_MONSTER_EMOTE);
+ {
+ TrinityStringTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, LANG_FLEE, LANG_UNIVERSAL, 0);
+ sCreatureTextMgr->SendChatPacket(me, builder, CHAT_MSG_MONSTER_EMOTE);
+ }
sLog->outDebug(LOG_FILTER_DATABASE_AI, "SmartScript::ProcessAction:: SMART_ACTION_FLEE_FOR_ASSIST: Creature %u DoFleeToGetAssistance", me->GetGUIDLow());
break;
}
@@ -999,9 +1046,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
break;
if (e.action.invincHP.percent)
- ai->SetInvinceabilityHpLevel(me->CountPctFromMaxHealth(e.action.invincHP.percent));
+ ai->SetInvincibilityHpLevel(me->CountPctFromMaxHealth(e.action.invincHP.percent));
else
- ai->SetInvinceabilityHpLevel(e.action.invincHP.minHP);
+ ai->SetInvincibilityHpLevel(e.action.invincHP.minHP);
break;
}
case SMART_ACTION_SET_DATA:
@@ -1072,12 +1119,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
{
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
{
- if (!IsUnit(*itr))
- continue;
-
(*itr)->GetPosition(x, y, z, o);
+ x += e.target.x;
+ y += e.target.y;
+ z += e.target.z;
+ o += e.target.o;
if (Creature* summon = GetBaseObject()->SummonCreature(e.action.summonCreature.creature, x, y, z, o, (TempSummonType)e.action.summonCreature.type, e.action.summonCreature.duration))
- if (unit && e.action.summonCreature.attackInvoker)
+ if (e.action.summonCreature.attackInvoker)
summon->AI()->AttackStart((*itr)->ToUnit());
}
@@ -1107,6 +1155,10 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
continue;
(*itr)->GetPosition(x, y, z, o);
+ x += e.target.x;
+ y += e.target.y;
+ z += e.target.z;
+ o += e.target.o;
GetBaseObject()->SummonGameObject(e.action.summonGO.entry, x, y, z, o, 0, 0, 0, 0, e.action.summonGO.despawnTime);
}
@@ -1320,19 +1372,20 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
e.GetTargetType() == SMART_TARGET_CREATURE_DISTANCE || e.GetTargetType() == SMART_TARGET_GAMEOBJECT_RANGE ||
e.GetTargetType() == SMART_TARGET_GAMEOBJECT_GUID || e.GetTargetType() == SMART_TARGET_GAMEOBJECT_DISTANCE ||
e.GetTargetType() == SMART_TARGET_CLOSEST_CREATURE || e.GetTargetType() == SMART_TARGET_CLOSEST_GAMEOBJECT ||
- e.GetTargetType() == SMART_TARGET_OWNER_OR_SUMMONER)
+ e.GetTargetType() == SMART_TARGET_OWNER_OR_SUMMONER || e.GetTargetType() == SMART_TARGET_ACTION_INVOKER)
{
ObjectList* targets = GetTargets(e, unit);
if (!targets)
break;
target = targets->front();
+ delete targets;
}
- if(!target)
- me->GetMotionMaster()->MovePoint(0, e.target.x, e.target.y, e.target.z);
+ if (!target)
+ me->GetMotionMaster()->MovePoint(e.action.MoveToPos.pointId, e.target.x, e.target.y, e.target.z);
else
- me->GetMotionMaster()->MovePoint(0, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
+ me->GetMotionMaster()->MovePoint(e.action.MoveToPos.pointId, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
break;
}
case SMART_ACTION_RESPAWN_TARGET:
@@ -1481,6 +1534,27 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
case SMART_ACTION_CALL_SCRIPT_RESET:
OnReset();
break;
+ case SMART_ACTION_SET_RANGED_MOVEMENT:
+ {
+ if (!IsSmart())
+ break;
+
+ float attackDistance = (float)e.action.setRangedMovement.distance;
+ float attackAngle = e.action.setRangedMovement.angle / 180.0f * M_PI;
+
+ ObjectList* targets = GetTargets(e, unit);
+ if (targets)
+ {
+ for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); ++itr)
+ if (Creature* target = (*itr)->ToCreature())
+ if (IsSmart(target) && target->getVictim())
+ if (CAST_AI(SmartAI, target->AI())->CanCombatMove())
+ target->GetMotionMaster()->MoveChase(target->getVictim(), attackDistance, attackAngle);
+
+ delete targets;
+ }
+ break;
+ }
case SMART_ACTION_CALL_TIMED_ACTIONLIST:
{
if (e.GetTargetType() == SMART_TARGET_NONE)
@@ -1817,19 +1891,26 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (!targets)
break;
+ ObjectList* storedTargets = GetTargetList(e.action.sendTargetToTarget.id);
+ if (!storedTargets)
+ {
+ delete targets;
+ return;
+ }
+
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
{
if (IsCreature(*itr))
{
if (SmartAI* ai = CAST_AI(SmartAI, (*itr)->ToCreature()->AI()))
- ai->GetScript()->StoreTargetList(GetTargetList(e.action.sendTargetToTarget.id), e.action.sendTargetToTarget.id);
+ ai->GetScript()->StoreTargetList(new ObjectList(*storedTargets), e.action.sendTargetToTarget.id); // store a copy of target list
else
sLog->outErrorDb("SmartScript: Action target for SMART_ACTION_SEND_TARGET_TO_TARGET is not using SmartAI, skipping");
}
else if (IsGameObject(*itr))
{
if (SmartGameObjectAI* ai = CAST_AI(SmartGameObjectAI, (*itr)->ToGameObject()->AI()))
- ai->GetScript()->StoreTargetList(GetTargetList(e.action.sendTargetToTarget.id), e.action.sendTargetToTarget.id);
+ ai->GetScript()->StoreTargetList(new ObjectList(*storedTargets), e.action.sendTargetToTarget.id); // store a copy of target list
else
sLog->outErrorDb("SmartScript: Action target for SMART_ACTION_SEND_TARGET_TO_TARGET is not using SmartGameObjectAI, skipping");
}
@@ -1865,7 +1946,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
break;
}
default:
- sLog->outErrorDb("SmartScript::ProcessAction: Unhandled Action type %u", e.GetActionType());
+ sLog->outErrorDb("SmartScript::ProcessAction: Entry %d SourceType %u, Event %u, Unhandled Action type %u", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
break;
}
@@ -1909,7 +1990,8 @@ void SmartScript::InstallTemplate(SmartScriptHolder const& e)
}
case SMARTAI_TEMPLATE_CAGED_NPC_PART:
{
- if (!me) return;
+ if (!me)
+ return;
//store cage as id1
AddEvent(SMART_EVENT_DATA_SET, 0, 0, 0, 0, 0, SMART_ACTION_STORE_TARGET_LIST, 1, 0, 0, 0, 0, 0, SMART_TARGET_CLOSEST_GAMEOBJECT, e.action.installTtemplate.param1, 10, 0, 0);
@@ -1931,7 +2013,8 @@ void SmartScript::InstallTemplate(SmartScriptHolder const& e)
}
case SMARTAI_TEMPLATE_CAGED_GO_PART:
{
- if (!go) return;
+ if (!go)
+ return;
//store hostage as id1
AddEvent(SMART_EVENT_GOSSIP_HELLO, 0, 0, 0, 0, 0, SMART_ACTION_STORE_TARGET_LIST, 1, 0, 0, 0, 0, 0, SMART_TARGET_CLOSEST_CREATURE, e.action.installTtemplate.param1, 10, 0, 0);
//store invoker as id2
@@ -2794,8 +2877,12 @@ void SmartScript::InstallEvents()
bool SmartScript::ConditionValid(Unit* u, int32 c, int32 v1, int32 v2, int32 v3)
{
- if (c == 0) return true;
- if (!u || !u->ToPlayer()) return false;
+ if (c == 0)
+ return true;
+
+ if (!u || !u->ToPlayer())
+ return false;
+
Condition cond;
cond.ConditionType = ConditionTypes(uint32(c));
cond.ConditionValue1 = uint32(v1);
@@ -2962,7 +3049,9 @@ void SmartScript::OnMoveInLineOfSight(Unit* who)
{
ProcessEventsFor(SMART_EVENT_OOC_LOS, who);
- if (!me) return;
+ if (!me)
+ return;
+
if (me->getVictim())
return;
diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h
index f7524582ab7..5fb691c87f2 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.h
+++ b/src/server/game/AI/SmartScripts/SmartScript.h
@@ -23,7 +23,6 @@
#include "CreatureAI.h"
#include "Unit.h"
#include "ConditionMgr.h"
-#include "CreatureTextMgr.h"
#include "Spell.h"
#include "GridNotifiers.h"
@@ -99,7 +98,13 @@ class SmartScript
return;
if (mTargetStorage->find(id) != mTargetStorage->end())
+ {
+ // check if already stored
+ if ((*mTargetStorage)[id] == targets)
+ return;
+
delete (*mTargetStorage)[id];
+ }
(*mTargetStorage)[id] = targets;
}
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
index f99e317454c..a7149f37480 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
@@ -27,6 +27,7 @@
#include "InstanceScript.h"
#include "ScriptedCreature.h"
#include "GameEventMgr.h"
+#include "CreatureTextMgr.h"
#include "SmartScriptMgr.h"
@@ -34,6 +35,14 @@ void SmartWaypointMgr::LoadFromDB()
{
uint32 oldMSTime = getMSTime();
+ for (UNORDERED_MAP::iterator itr = waypoint_map.begin(); itr != waypoint_map.end(); ++itr)
+ {
+ for (WPPath::iterator pathItr = itr->second->begin(); pathItr != itr->second->end(); ++pathItr)
+ delete pathItr->second;
+
+ delete itr->second;
+ }
+
waypoint_map.clear();
PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_SMARTAI_WP);
@@ -48,7 +57,6 @@ void SmartWaypointMgr::LoadFromDB()
uint32 count = 0;
uint32 total = 0;
- WPPath* path = NULL;
uint32 last_entry = 0;
uint32 last_id = 1;
@@ -62,27 +70,19 @@ void SmartWaypointMgr::LoadFromDB()
y = fields[3].GetFloat();
z = fields[4].GetFloat();
- WayPoint* wp = new WayPoint(id, x, y, z);
-
if (last_entry != entry)
{
- path = new WPPath;
+ waypoint_map[entry] = new WPPath();
last_id = 1;
+ count++;
}
if (last_id != id)
- {
sLog->outErrorDb("SmartWaypointMgr::LoadFromDB: Path entry %u, unexpected point id %u, expected %u.", entry, id, last_id);
- }
last_id++;
- (*path)[id] = wp;
+ (*waypoint_map[entry])[id] = new WayPoint(id, x, y, z);
- if (last_entry != entry)
- {
- count++;
- waypoint_map[entry] = path;
- }
last_entry = entry;
total++;
}
@@ -92,6 +92,19 @@ void SmartWaypointMgr::LoadFromDB()
sLog->outString();
}
+SmartWaypointMgr::~SmartWaypointMgr()
+{
+ for (UNORDERED_MAP::iterator itr = waypoint_map.begin(); itr != waypoint_map.end(); ++itr)
+ {
+ for (WPPath::iterator pathItr = itr->second->begin(); pathItr != itr->second->end(); ++pathItr)
+ delete pathItr->second;
+
+ delete itr->second;
+ }
+
+ waypoint_map.clear();
+}
+
void SmartAIMgr::LoadSmartAIFromDB()
{
uint32 oldMSTime = getMSTime();
@@ -185,7 +198,6 @@ void SmartAIMgr::LoadSmartAIFromDB()
temp.event.raw.param4 = fields[11].GetUInt32();
temp.action.type = (SMART_ACTION)fields[12].GetUInt8();
-
temp.action.raw.param1 = fields[13].GetUInt32();
temp.action.raw.param2 = fields[14].GetUInt32();
temp.action.raw.param3 = fields[15].GetUInt32();
@@ -312,7 +324,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
sLog->outErrorDb("SmartAIMgr: EntryOrGuid %d, event type %u can not be used for Script type %u", e.entryOrGuid, e.GetEventType(), e.GetScriptType());
return false;
}
- if (e.action.type >= SMART_ACTION_END)
+ if (e.action.type <= 0 || e.action.type >= SMART_ACTION_END)
{
sLog->outErrorDb("SmartAIMgr: EntryOrGuid %d using event(%u) has invalid action type (%u), skipped.", e.entryOrGuid, e.event_id, e.GetActionType());
return false;
@@ -322,11 +334,19 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
sLog->outErrorDb("SmartAIMgr: EntryOrGuid %d using event(%u) has invalid phase mask (%u), skipped.", e.entryOrGuid, e.event_id, e.event.event_phase_mask);
return false;
}
+ if (e.event.event_flags > SMART_EVENT_FLAGS_ALL)
+ {
+ sLog->outErrorDb("SmartAIMgr: EntryOrGuid %d using event(%u) has invalid event flags (%u), skipped.", e.entryOrGuid, e.event_id, e.event.event_flags);
+ return false;
+ }
if (e.GetScriptType() == SMART_SCRIPT_TYPE_TIMED_ACTIONLIST)
{
e.event.type = SMART_EVENT_UPDATE_OOC;//force default OOC, can change when calling the script!
- if (!IsMinMaxValid(e, e.event.minMaxRepeat.min, e.event.minMaxRepeat.max)) return false;
- if (!IsMinMaxValid(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax)) return false;
+ if (!IsMinMaxValid(e, e.event.minMaxRepeat.min, e.event.minMaxRepeat.max))
+ return false;
+
+ if (!IsMinMaxValid(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax))
+ return false;
}
else
{
@@ -344,8 +364,11 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
case SMART_EVENT_DAMAGED:
case SMART_EVENT_DAMAGED_TARGET:
case SMART_EVENT_RECEIVE_HEAL:
- if (!IsMinMaxValid(e, e.event.minMaxRepeat.min, e.event.minMaxRepeat.max)) return false;
- if (!IsMinMaxValid(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax)) return false;
+ if (!IsMinMaxValid(e, e.event.minMaxRepeat.min, e.event.minMaxRepeat.max))
+ return false;
+
+ if (!IsMinMaxValid(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax))
+ return false;
break;
case SMART_EVENT_SPELLHIT:
case SMART_EVENT_SPELLHIT_TARGET:
@@ -363,11 +386,13 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
return false;
}
}
- if (!IsMinMaxValid(e, e.event.spellHit.cooldownMin, e.event.spellHit.cooldownMax)) return false;
+ if (!IsMinMaxValid(e, e.event.spellHit.cooldownMin, e.event.spellHit.cooldownMax))
+ return false;
break;
case SMART_EVENT_OOC_LOS:
case SMART_EVENT_IC_LOS:
- if (!IsMinMaxValid(e, e.event.los.cooldownMin, e.event.los.cooldownMax)) return false;
+ if (!IsMinMaxValid(e, e.event.los.cooldownMin, e.event.los.cooldownMax))
+ return false;
break;
case SMART_EVENT_RESPAWN:
if (e.event.respawn.type == SMART_SCRIPT_RESPAWN_CONDITION_MAP && !sMapStore.LookupEntry(e.event.respawn.map))
@@ -382,32 +407,48 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
break;
case SMART_EVENT_FRIENDLY_HEALTH:
- if (!NotNULL(e, e.event.friendlyHealt.radius)) return false;
- if (!IsMinMaxValid(e, e.event.friendlyHealt.repeatMin, e.event.friendlyHealt.repeatMax)) return false;
+ if (!NotNULL(e, e.event.friendlyHealt.radius))
+ return false;
+
+ if (!IsMinMaxValid(e, e.event.friendlyHealt.repeatMin, e.event.friendlyHealt.repeatMax))
+ return false;
break;
case SMART_EVENT_FRIENDLY_IS_CC:
- if (!IsMinMaxValid(e, e.event.friendlyCC.repeatMin, e.event.friendlyCC.repeatMax)) return false;
+ if (!IsMinMaxValid(e, e.event.friendlyCC.repeatMin, e.event.friendlyCC.repeatMax))
+ return false;
break;
case SMART_EVENT_FRIENDLY_MISSING_BUFF:
{
- if (!IsSpellValid(e, e.event.missingBuff.spell)) return false;
- if (!NotNULL(e, e.event.missingBuff.radius)) return false;
- if (!IsMinMaxValid(e, e.event.missingBuff.repeatMin, e.event.missingBuff.repeatMax)) return false;
+ if (!IsSpellValid(e, e.event.missingBuff.spell))
+ return false;
+
+ if (!NotNULL(e, e.event.missingBuff.radius))
+ return false;
+
+ if (!IsMinMaxValid(e, e.event.missingBuff.repeatMin, e.event.missingBuff.repeatMax))
+ return false;
break;
}
case SMART_EVENT_KILL:
- if (!IsMinMaxValid(e, e.event.kill.cooldownMin, e.event.kill.cooldownMax)) return false;
- if (e.event.kill.creature && !IsCreatureValid(e, e.event.kill.creature)) return false;
+ if (!IsMinMaxValid(e, e.event.kill.cooldownMin, e.event.kill.cooldownMax))
+ return false;
+
+ if (e.event.kill.creature && !IsCreatureValid(e, e.event.kill.creature))
+ return false;
break;
case SMART_EVENT_TARGET_CASTING:
case SMART_EVENT_PASSENGER_BOARDED:
case SMART_EVENT_PASSENGER_REMOVED:
- if (!IsMinMaxValid(e, e.event.minMax.repeatMin, e.event.minMax.repeatMax)) return false;
+ if (!IsMinMaxValid(e, e.event.minMax.repeatMin, e.event.minMax.repeatMax))
+ return false;
break;
case SMART_EVENT_SUMMON_DESPAWNED:
case SMART_EVENT_SUMMONED_UNIT:
- if (e.event.summoned.creature && !IsCreatureValid(e, e.event.summoned.creature)) return false;
- if (!IsMinMaxValid(e, e.event.summoned.cooldownMin, e.event.summoned.cooldownMax)) return false;
+ if (e.event.summoned.creature && !IsCreatureValid(e, e.event.summoned.creature))
+ return false;
+
+ if (!IsMinMaxValid(e, e.event.summoned.cooldownMin, e.event.summoned.cooldownMax))
+ return false;
break;
case SMART_EVENT_ACCEPTED_QUEST:
case SMART_EVENT_REWARD_QUEST:
@@ -416,20 +457,27 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
break;
case SMART_EVENT_RECEIVE_EMOTE:
{
- if (e.event.emote.emote && !IsTextEmoteValid(e, e.event.emote.emote)) return false;
- if (!IsMinMaxValid(e, e.event.emote.cooldownMin, e.event.emote.cooldownMax)) return false;
+ if (e.event.emote.emote && !IsTextEmoteValid(e, e.event.emote.emote))
+ return false;
+
+ if (!IsMinMaxValid(e, e.event.emote.cooldownMin, e.event.emote.cooldownMax))
+ return false;
break;
}
case SMART_EVENT_HAS_AURA:
case SMART_EVENT_TARGET_BUFFED:
{
- if (!IsSpellValid(e, e.event.aura.spell)) return false;
- if (!IsMinMaxValid(e, e.event.aura.repeatMin, e.event.aura.repeatMax)) return false;
+ if (!IsSpellValid(e, e.event.aura.spell))
+ return false;
+
+ if (!IsMinMaxValid(e, e.event.aura.repeatMin, e.event.aura.repeatMax))
+ return false;
break;
}
case SMART_EVENT_TRANSPORT_ADDCREATURE:
{
- if (e.event.transportAddCreature.creature && !IsCreatureValid(e, e.event.transportAddCreature.creature)) return false;
+ if (e.event.transportAddCreature.creature && !IsCreatureValid(e, e.event.transportAddCreature.creature))
+ return false;
break;
}
case SMART_EVENT_MOVEMENTINFORM:
@@ -443,12 +491,14 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
case SMART_EVENT_DATA_SET:
{
- if (!IsMinMaxValid(e, e.event.dataSet.cooldownMin, e.event.dataSet.cooldownMax)) return false;
+ if (!IsMinMaxValid(e, e.event.dataSet.cooldownMin, e.event.dataSet.cooldownMax))
+ return false;
break;
}
case SMART_EVENT_AREATRIGGER_ONTRIGGER:
{
- if (e.event.areatrigger.id && !IsAreaTriggerValid(e, e.event.areatrigger.id)) return false;
+ if (e.event.areatrigger.id && !IsAreaTriggerValid(e, e.event.areatrigger.id))
+ return false;
break;
}
case SMART_EVENT_TEXT_OVER:
@@ -464,8 +514,11 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
break;
}
case SMART_EVENT_DUMMY_EFFECT:
- if (!IsSpellValid(e, e.event.dummy.spell)) return false;
- if (e.event.dummy.effIndex > EFFECT_2) return false;
+ if (!IsSpellValid(e, e.event.dummy.spell))
+ return false;
+
+ if (e.event.dummy.effIndex > EFFECT_2)
+ return false;
break;
case SMART_EVENT_IS_BEHIND_TARGET:
if (!IsMinMaxValid(e, e.event.behindTarget.cooldownMin, e.event.behindTarget.cooldownMax))
@@ -562,11 +615,13 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
break;
case SMART_ACTION_SET_EMOTE_STATE:
case SMART_ACTION_PLAY_EMOTE:
- if (!IsEmoteValid(e, e.action.emote.emote)) return false;
+ if (!IsEmoteValid(e, e.action.emote.emote))
+ return false;
break;
case SMART_ACTION_FAIL_QUEST:
case SMART_ACTION_ADD_QUEST:
- if (!e.action.quest.quest || !IsQuestValid(e, e.action.quest.quest)) return false;
+ if (!e.action.quest.quest || !IsQuestValid(e, e.action.quest.quest))
+ return false;
break;
case SMART_ACTION_ACTIVATE_TAXI:
{
@@ -578,17 +633,29 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
break;
}
case SMART_ACTION_RANDOM_EMOTE:
- if (e.action.randomEmote.emote1 && !IsEmoteValid(e, e.action.randomEmote.emote1)) return false;
- if (e.action.randomEmote.emote2 && !IsEmoteValid(e, e.action.randomEmote.emote2)) return false;
- if (e.action.randomEmote.emote3 && !IsEmoteValid(e, e.action.randomEmote.emote3)) return false;
- if (e.action.randomEmote.emote4 && !IsEmoteValid(e, e.action.randomEmote.emote4)) return false;
- if (e.action.randomEmote.emote5 && !IsEmoteValid(e, e.action.randomEmote.emote5)) return false;
- if (e.action.randomEmote.emote6 && !IsEmoteValid(e, e.action.randomEmote.emote6)) return false;
+ if (e.action.randomEmote.emote1 && !IsEmoteValid(e, e.action.randomEmote.emote1))
+ return false;
+
+ if (e.action.randomEmote.emote2 && !IsEmoteValid(e, e.action.randomEmote.emote2))
+ return false;
+
+ if (e.action.randomEmote.emote3 && !IsEmoteValid(e, e.action.randomEmote.emote3))
+ return false;
+
+ if (e.action.randomEmote.emote4 && !IsEmoteValid(e, e.action.randomEmote.emote4))
+ return false;
+
+ if (e.action.randomEmote.emote5 && !IsEmoteValid(e, e.action.randomEmote.emote5))
+ return false;
+
+ if (e.action.randomEmote.emote6 && !IsEmoteValid(e, e.action.randomEmote.emote6))
+ return false;
break;
case SMART_ACTION_ADD_AURA:
case SMART_ACTION_CAST:
case SMART_ACTION_INVOKER_CAST:
- if (!IsSpellValid(e, e.action.cast.spell)) return false;
+ if (!IsSpellValid(e, e.action.cast.spell))
+ return false;
break;
case SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS:
case SMART_ACTION_CALL_GROUPEVENTHAPPENS:
@@ -607,8 +674,11 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
break;
case SMART_ACTION_SEND_CASTCREATUREORGO:
- if (!IsQuestValid(e, e.action.castCreatureOrGO.quest)) return false;
- if (!IsSpellValid(e, e.action.castCreatureOrGO.spell)) return false;
+ if (!IsQuestValid(e, e.action.castCreatureOrGO.quest))
+ return false;
+
+ if (!IsSpellValid(e, e.action.castCreatureOrGO.spell))
+ return false;
break;
@@ -632,11 +702,15 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
break;
case SMART_ACTION_CALL_CASTEDCREATUREORGO:
- if (!IsCreatureValid(e, e.action.castedCreatureOrGO.creature)) return false;
- if (!IsSpellValid(e, e.action.castedCreatureOrGO.spell)) return false;
+ if (!IsCreatureValid(e, e.action.castedCreatureOrGO.creature))
+ return false;
+
+ if (!IsSpellValid(e, e.action.castedCreatureOrGO.spell))
+ return false;
break;
case SMART_ACTION_REMOVEAURASFROMSPELL:
- if (!IsSpellValid(e, e.action.removeAura.spell)) return false;
+ if (!IsSpellValid(e, e.action.removeAura.spell))
+ return false;
break;
case SMART_ACTION_RANDOM_PHASE:
{
@@ -660,11 +734,13 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
sLog->outErrorDb("SmartAIMgr: Entry %d SourceType %u Event %u Action %u attempts to set invalid phase, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
return false;
}
- if (!IsMinMaxValid(e, e.action.randomPhaseRange.phaseMin, e.action.randomPhaseRange.phaseMax)) return false;
+ if (!IsMinMaxValid(e, e.action.randomPhaseRange.phaseMin, e.action.randomPhaseRange.phaseMax))
+ return false;
break;
}
case SMART_ACTION_SUMMON_CREATURE:
- if (!IsCreatureValid(e, e.action.summonCreature.creature)) return false;
+ if (!IsCreatureValid(e, e.action.summonCreature.creature))
+ return false;
if (e.action.summonCreature.type < TEMPSUMMON_TIMED_OR_DEAD_DESPAWN || e.action.summonCreature.type > TEMPSUMMON_MANUAL_DESPAWN)
{
sLog->outErrorDb("SmartAIMgr: Entry %d SourceType %u Event %u Action %u uses incorrect TempSummonType %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.summonCreature.type);
@@ -672,10 +748,12 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
break;
case SMART_ACTION_CALL_KILLEDMONSTER:
- if (!IsCreatureValid(e, e.action.killedMonster.creature)) return false;
+ if (!IsCreatureValid(e, e.action.killedMonster.creature))
+ return false;
break;
case SMART_ACTION_UPDATE_TEMPLATE:
- if (e.action.updateTemplate.creature && !IsCreatureValid(e, e.action.updateTemplate.creature)) return false;
+ if (e.action.updateTemplate.creature && !IsCreatureValid(e, e.action.updateTemplate.creature))
+ return false;
break;
case SMART_ACTION_SET_SHEATH:
if (e.action.setSheath.sheath && e.action.setSheath.sheath >= MAX_SHEATH_STATE)
@@ -694,12 +772,16 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
break;
}
case SMART_ACTION_SUMMON_GO:
- if (!IsGameObjectValid(e, e.action.summonGO.entry)) return false;
+ if (!IsGameObjectValid(e, e.action.summonGO.entry))
+ return false;
break;
case SMART_ACTION_ADD_ITEM:
case SMART_ACTION_REMOVE_ITEM:
- if (!IsItemValid(e, e.action.item.entry)) return false;
- if (!NotNULL(e, e.action.item.count)) return false;
+ if (!IsItemValid(e, e.action.item.entry))
+ return false;
+
+ if (!NotNULL(e, e.action.item.count))
+ return false;
break;
case SMART_ACTION_TELEPORT:
if (!sMapStore.LookupEntry(e.action.teleport.mapID))
@@ -716,7 +798,8 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
break;
case SMART_ACTION_WP_STOP:
- if (e.action.wpStop.quest && !IsQuestValid(e, e.action.wpStop.quest)) return false;
+ if (e.action.wpStop.quest && !IsQuestValid(e, e.action.wpStop.quest))
+ return false;
break;
case SMART_ACTION_WP_START:
{
@@ -725,7 +808,8 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
sLog->outErrorDb("SmartAIMgr: Creature %d Event %u Action %u uses non-existent WaypointPath id %u, skipped.", e.entryOrGuid, e.event_id, e.GetActionType(), e.action.wpStart.pathID);
return false;
}
- if (e.action.wpStart.quest && !IsQuestValid(e, e.action.wpStart.quest)) return false;
+ if (e.action.wpStart.quest && !IsQuestValid(e, e.action.wpStart.quest))
+ return false;
if (e.action.wpStart.reactState > REACT_AGGRESSIVE)
{
sLog->outErrorDb("SmartAIMgr: Creature %d Event %u Action %u uses invalid React State %u, skipped.", e.entryOrGuid, e.event_id, e.GetActionType(), e.action.wpStart.reactState);
@@ -735,8 +819,11 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
case SMART_ACTION_CREATE_TIMED_EVENT:
{
- if (!IsMinMaxValid(e, e.action.timeEvent.min, e.action.timeEvent.max)) return false;
- if (!IsMinMaxValid(e, e.action.timeEvent.repeatMin, e.action.timeEvent.repeatMax)) return false;
+ if (!IsMinMaxValid(e, e.action.timeEvent.min, e.action.timeEvent.max))
+ return false;
+
+ if (!IsMinMaxValid(e, e.action.timeEvent.repeatMin, e.action.timeEvent.repeatMax))
+ return false;
break;
}
case SMART_ACTION_FOLLOW:
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index 7869a2e665f..e6c5eb727d7 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -23,7 +23,6 @@
#include "CreatureAI.h"
#include "Unit.h"
#include "ConditionMgr.h"
-#include "CreatureTextMgr.h"
#include "Spell.h"
#include "DB2Stores.h"
@@ -443,7 +442,7 @@ enum SMART_ACTION
SMART_ACTION_CREATE_TIMED_EVENT = 67, // id, InitialMin, InitialMax, RepeatMin(only if it repeats), RepeatMax(only if it repeats), chance
SMART_ACTION_PLAYMOVIE = 68, // entry
- SMART_ACTION_MOVE_TO_POS = 69, // xyz
+ SMART_ACTION_MOVE_TO_POS = 69, // PointId, xyz
SMART_ACTION_RESPAWN_TARGET = 70, //
SMART_ACTION_EQUIP = 71, // entry, slotmask slot1, slot2, slot3 , only slots with mask set will be sent to client, bits are 1, 2, 4, leaving mask 0 is defaulted to mask 7 (send all), slots1-3 are only used if no entry is set
SMART_ACTION_CLOSE_GOSSIP = 72, // none
@@ -453,7 +452,7 @@ enum SMART_ACTION
SMART_ACTION_OVERRIDE_SCRIPT_BASE_OBJECT = 76, // WARNING: CAN CRASH CORE, do not use if you dont know what you are doing
SMART_ACTION_RESET_SCRIPT_BASE_OBJECT = 77, // none
SMART_ACTION_CALL_SCRIPT_RESET = 78, // none
- // Unused = 79,
+ SMART_ACTION_SET_RANGED_MOVEMENT = 79, // Distance, angle
SMART_ACTION_CALL_TIMED_ACTIONLIST = 80, // ID (overwrites already running actionlist), stop after combat?(0/1), timer update type(0-OOC, 1-IC, 2-ALWAYS)
SMART_ACTION_SET_NPC_FLAG = 81, // Flags
SMART_ACTION_ADD_NPC_FLAG = 82, // Flags
@@ -874,6 +873,11 @@ struct SmartAction
uint32 goRespawnTime;
} RespawnTarget;
+ struct
+ {
+ uint8 pointId;
+ } MoveToPos;
+
struct
{
uint32 gossipMenuId;
@@ -890,6 +894,12 @@ struct SmartAction
uint32 id;
} sendTargetToTarget;
+ struct
+ {
+ float distance;
+ float angle;
+ } setRangedMovement;
+
struct
{
uint32 param1;
@@ -1162,16 +1172,18 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
enum SmartEventFlags
{
- SMART_EVENT_FLAG_NOT_REPEATABLE = 0x01, //Event can not repeat
- SMART_EVENT_FLAG_DIFFICULTY_0 = 0x02, //Event only occurs in instance difficulty 0
- SMART_EVENT_FLAG_DIFFICULTY_1 = 0x04, //Event only occurs in instance difficulty 1
- SMART_EVENT_FLAG_DIFFICULTY_2 = 0x08, //Event only occurs in instance difficulty 2
- SMART_EVENT_FLAG_DIFFICULTY_3 = 0x10, //Event only occurs in instance difficulty 3
- SMART_EVENT_FLAG_RESERVED_5 = 0x20,
- SMART_EVENT_FLAG_RESERVED_6 = 0x40,
- SMART_EVENT_FLAG_DEBUG_ONLY = 0x80, //Event only occurs in debug build
+ SMART_EVENT_FLAG_NOT_REPEATABLE = 0x001, //Event can not repeat
+ SMART_EVENT_FLAG_DIFFICULTY_0 = 0x002, //Event only occurs in instance difficulty 0
+ SMART_EVENT_FLAG_DIFFICULTY_1 = 0x004, //Event only occurs in instance difficulty 1
+ SMART_EVENT_FLAG_DIFFICULTY_2 = 0x008, //Event only occurs in instance difficulty 2
+ SMART_EVENT_FLAG_DIFFICULTY_3 = 0x010, //Event only occurs in instance difficulty 3
+ SMART_EVENT_FLAG_RESERVED_5 = 0x020,
+ SMART_EVENT_FLAG_RESERVED_6 = 0x040,
+ SMART_EVENT_FLAG_DEBUG_ONLY = 0x080, //Event only occurs in debug build
+ SMART_EVENT_FLAG_DONT_RESET = 0x100, //Event will not reset in SmartScript::OnReset()
- SMART_EVENT_FLAG_DIFFICULTY_ALL = (SMART_EVENT_FLAG_DIFFICULTY_0|SMART_EVENT_FLAG_DIFFICULTY_1|SMART_EVENT_FLAG_DIFFICULTY_2|SMART_EVENT_FLAG_DIFFICULTY_3)
+ SMART_EVENT_FLAG_DIFFICULTY_ALL = (SMART_EVENT_FLAG_DIFFICULTY_0|SMART_EVENT_FLAG_DIFFICULTY_1|SMART_EVENT_FLAG_DIFFICULTY_2|SMART_EVENT_FLAG_DIFFICULTY_3),
+ SMART_EVENT_FLAGS_ALL = (SMART_EVENT_FLAG_NOT_REPEATABLE|SMART_EVENT_FLAG_DIFFICULTY_ALL|SMART_EVENT_FLAG_RESERVED_5|SMART_EVENT_FLAG_RESERVED_6|SMART_EVENT_FLAG_DEBUG_ONLY|SMART_EVENT_FLAG_DONT_RESET)
};
enum SmartCastFlags
@@ -1227,9 +1239,9 @@ typedef UNORDERED_MAP ObjectListMap;
class SmartWaypointMgr
{
friend class ACE_Singleton;
- SmartWaypointMgr(){};
+ SmartWaypointMgr() {}
public:
- ~SmartWaypointMgr(){};
+ ~SmartWaypointMgr();
void LoadFromDB();
diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp
index a6ae300e25d..8076f800356 100755
--- a/src/server/game/Accounts/AccountMgr.cpp
+++ b/src/server/game/Accounts/AccountMgr.cpp
@@ -53,12 +53,21 @@ AccountOpResult CreateAccount(std::string username, std::string password)
AccountOpResult DeleteAccount(uint32 accountId)
{
- QueryResult result = LoginDatabase.PQuery("SELECT 1 FROM account WHERE id='%d'", accountId);
- if (!result)
- return AOR_NAME_NOT_EXIST; // account doesn't exist
+ // Check if accounts exists
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BY_ID);
+ stmt->setUInt32(0, accountId);
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
+ if (!result)
+ return AOR_NAME_NOT_EXIST;
+
+ // Obtain accounts characters
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARS_BY_ACCOUNT_ID);
+
+ stmt->setUInt32(0, accountId);
+
+ result = CharacterDatabase.Query(stmt);
- // existed characters list
- result = CharacterDatabase.PQuery("SELECT guid FROM characters WHERE account='%d'", accountId);
if (result)
{
do
@@ -66,7 +75,7 @@ AccountOpResult DeleteAccount(uint32 accountId)
uint32 guidLow = (*result)[0].GetUInt32();
uint64 guid = MAKE_NEW_GUID(guidLow, 0, HIGHGUID_PLAYER);
- // kick if player is online
+ // Kick if player is online
if (Player* p = ObjectAccessor::FindPlayer(guid))
{
WorldSession* s = p->GetSession();
@@ -79,18 +88,35 @@ AccountOpResult DeleteAccount(uint32 accountId)
}
// table realm specific but common for all characters of account for realm
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_TUTORIALS);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_TUTORIALS);
stmt->setUInt32(0, accountId);
CharacterDatabase.Execute(stmt);
+
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ACCOUNT_DATA);
stmt->setUInt32(0, accountId);
CharacterDatabase.Execute(stmt);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_BAN);
+ stmt->setUInt32(0, accountId);
+ CharacterDatabase.Execute(stmt);
+
SQLTransaction trans = LoginDatabase.BeginTransaction();
- trans->PAppend("DELETE FROM account WHERE id='%d'", accountId);
- trans->PAppend("DELETE FROM account_access WHERE id ='%d'", accountId);
- trans->PAppend("DELETE FROM realmcharacters WHERE acctid='%d'", accountId);
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT);
+ stmt->setUInt32(0, accountId);
+ trans->Append(stmt);
+
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_ACCESS);
+ stmt->setUInt32(0, accountId);
+ trans->Append(stmt);
+
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS);
+ stmt->setUInt32(0, accountId);
+ trans->Append(stmt);
+
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_BANNED);
+ stmt->setUInt32(0, accountId);
+ trans->Append(stmt);
LoginDatabase.CommitTransaction(trans);
@@ -99,9 +125,13 @@ AccountOpResult DeleteAccount(uint32 accountId)
AccountOpResult ChangeUsername(uint32 accountId, std::string newUsername, std::string newPassword)
{
- QueryResult result = LoginDatabase.PQuery("SELECT 1 FROM account WHERE id='%d'", accountId);
+ // Check if accounts exists
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BY_ID);
+ stmt->setUInt32(0, accountId);
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
if (!result)
- return AOR_NAME_NOT_EXIST; // account doesn't exist
+ return AOR_NAME_NOT_EXIST;
if (utf8length(newUsername) > MAX_ACCOUNT_STR)
return AOR_NAME_TOO_LONG;
@@ -112,7 +142,7 @@ AccountOpResult ChangeUsername(uint32 accountId, std::string newUsername, std::s
normalizeString(newUsername);
normalizeString(newPassword);
- PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_USERNAME);
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_USERNAME);
stmt->setString(0, newUsername);
stmt->setString(1, CalculateShaPassHash(newUsername, newPassword));
@@ -148,28 +178,38 @@ AccountOpResult ChangePassword(uint32 accountId, std::string newPassword)
uint32 GetId(std::string username)
{
- LoginDatabase.EscapeString(username);
- QueryResult result = LoginDatabase.PQuery("SELECT id FROM account WHERE username = '%s'", username.c_str());
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_ACCOUNT_ID_BY_USERNAME);
+ stmt->setString(0, username);
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
return (result) ? (*result)[0].GetUInt32() : 0;
}
uint32 GetSecurity(uint32 accountId)
{
- QueryResult result = LoginDatabase.PQuery("SELECT gmlevel FROM account_access WHERE id = '%u'", accountId);
- return (result) ? (*result)[0].GetUInt32() : 0;
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_ACCOUNT_ACCESS_GMLEVEL);
+ stmt->setUInt32(0, accountId);
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
+ return (result) ? (*result)[0].GetUInt8() : uint32(SEC_PLAYER);
}
-uint32 GetSecurity(uint64 accountId, int32 realmId)
+uint32 GetSecurity(uint32 accountId, int32 realmId)
{
- QueryResult result = (realmId == -1)
- ? LoginDatabase.PQuery("SELECT gmlevel FROM account_access WHERE id = '%u' AND RealmID = '%d'", accountId, realmId)
- : LoginDatabase.PQuery("SELECT gmlevel FROM account_access WHERE id = '%u' AND (RealmID = '%d' OR RealmID = '-1')", accountId, realmId);
- return (result) ? (*result)[0].GetUInt32() : 0;
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_GMLEVEL_BY_REALMID);
+ stmt->setUInt32(0, accountId);
+ stmt->setInt32(1, realmId);
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
+ return (result) ? (*result)[0].GetUInt8() : uint32(SEC_PLAYER);
}
bool GetName(uint32 accountId, std::string& name)
{
- QueryResult result = LoginDatabase.PQuery("SELECT username FROM account WHERE id = '%u'", accountId);
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_USERNAME_BY_ID);
+ stmt->setUInt32(0, accountId);
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
if (result)
{
name = (*result)[0].GetString();
@@ -189,15 +229,22 @@ bool CheckPassword(uint32 accountId, std::string password)
normalizeString(username);
normalizeString(password);
- QueryResult result = LoginDatabase.PQuery("SELECT 1 FROM account WHERE id='%d' AND sha_pass_hash='%s'", accountId, CalculateShaPassHash(username, password).c_str());
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_CHECK_PASSWORD);
+ stmt->setUInt32(0, accountId);
+ stmt->setString(1, CalculateShaPassHash(username, password));
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
return (result) ? true : false;
}
uint32 GetCharactersCount(uint32 accountId)
{
// check character count
- QueryResult result = CharacterDatabase.PQuery("SELECT COUNT(guid) FROM characters WHERE account = '%d'", accountId);
- return (result) ? (*result)[0].GetUInt32() : 0;
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_SUM_CHARS);
+ stmt->setUInt32(0, accountId);
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
+
+ return (result) ? (*result)[0].GetUInt64() : 0;
}
bool normalizeString(std::string& utf8String)
diff --git a/src/server/game/Accounts/AccountMgr.h b/src/server/game/Accounts/AccountMgr.h
index 1b1ecfa994a..c69f3c0a6f3 100755
--- a/src/server/game/Accounts/AccountMgr.h
+++ b/src/server/game/Accounts/AccountMgr.h
@@ -36,25 +36,25 @@ enum AccountOpResult
namespace AccountMgr
{
- AccountOpResult CreateAccount(std::string username, std::string password);
- AccountOpResult DeleteAccount(uint32 accountId);
- AccountOpResult ChangeUsername(uint32 accountId, std::string newUsername, std::string newPassword);
- AccountOpResult ChangePassword(uint32 accountId, std::string newPassword);
- bool CheckPassword(uint32 accountId, std::string password);
+ AccountOpResult CreateAccount(std::string username, std::string password);
+ AccountOpResult DeleteAccount(uint32 accountId);
+ AccountOpResult ChangeUsername(uint32 accountId, std::string newUsername, std::string newPassword);
+ AccountOpResult ChangePassword(uint32 accountId, std::string newPassword);
+ bool CheckPassword(uint32 accountId, std::string password);
- uint32 GetId(std::string username);
- uint32 GetSecurity(uint32 accountId);
- uint32 GetSecurity(uint64 accountId, int32 realmId);
- bool GetName(uint32 accountId, std::string& name);
- uint32 GetCharactersCount(uint32 accountId);
- std::string CalculateShaPassHash(std::string& name, std::string& password);
+ uint32 GetId(std::string username);
+ uint32 GetSecurity(uint32 accountId);
+ uint32 GetSecurity(uint32 accountId, int32 realmId);
+ bool GetName(uint32 accountId, std::string& name);
+ uint32 GetCharactersCount(uint32 accountId);
+ std::string CalculateShaPassHash(std::string& name, std::string& password);
- bool normalizeString(std::string& utf8String);
- bool IsPlayerAccount(uint32 gmlevel);
- bool IsModeratorAccount(uint32 gmlevel);
- bool IsGMAccount(uint32 gmlevel);
- bool IsAdminAccount(uint32 gmlevel);
- bool IsConsoleAccount(uint32 gmlevel);
+ bool normalizeString(std::string& utf8String);
+ bool IsPlayerAccount(uint32 gmlevel);
+ bool IsModeratorAccount(uint32 gmlevel);
+ bool IsGMAccount(uint32 gmlevel);
+ bool IsAdminAccount(uint32 gmlevel);
+ bool IsConsoleAccount(uint32 gmlevel);
};
#endif
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index aa6c39f351d..21a2a75b470 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -445,8 +445,15 @@ void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaTypes type, uin
void AchievementMgr::DeleteFromDB(uint32 lowguid)
{
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- trans->PAppend("DELETE FROM character_achievement WHERE guid = %u", lowguid);
- trans->PAppend("DELETE FROM character_achievement_progress WHERE guid = %u", lowguid);
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT);
+ stmt->setUInt32(0, lowguid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_PROGRESS);
+ stmt->setUInt32(0, lowguid);
+ trans->Append(stmt);
+
CharacterDatabase.CommitTransaction(trans);
}
@@ -574,7 +581,7 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ
// title achievement rewards are retroactive
if (AchievementReward const* reward = sAchievementMgr->GetAchievementReward(achievement))
- if (uint32 titleId = reward->titleId[GetPlayer()->GetTeam() == ALLIANCE ? 0 : 1])
+ if (uint32 titleId = reward->titleId[Player::TeamForRace(GetPlayer()->getRace()) == ALLIANCE ? 0 : 1])
if (CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(titleId))
if (!GetPlayer()->HasTitle(titleEntry))
GetPlayer()->SetTitle(titleEntry);
@@ -1340,7 +1347,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if (!miscValue1)
{
uint32 points = 0;
- for (CompletedAchievementMap::iterator itr = m_completedAchievements.begin(); itr != m_completedAchievements.end(); ++itr)
+ for (CompletedAchievementMap::iterator itr = m_completedAchievements.begin(); itr != m_completedAchievements.end(); ++itr)
if (AchievementEntry const* pAchievement = sAchievementStore.LookupEntry(itr->first))
points += pAchievement->points;
SetCriteriaProgress(achievementCriteria, points, PROGRESS_SET);
@@ -1889,7 +1896,7 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
return;
SendAchievementEarned(achievement);
- CompletedAchievementData& ca = m_completedAchievements[achievement->ID];
+ CompletedAchievementData& ca = m_completedAchievements[achievement->ID];
ca.date = time(NULL);
ca.changed = true;
@@ -1920,7 +1927,7 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
// mail
if (reward->sender)
{
- Item* item = reward->itemId ? Item::CreateItem(reward->itemId, 1, GetPlayer ()) : NULL;
+ Item* item = reward->itemId ? Item::CreateItem(reward->itemId, 1, GetPlayer()) : NULL;
int loc_idx = GetPlayer()->GetSession()->GetSessionDbLocaleIndex();
@@ -2274,7 +2281,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
continue;
}
- uint32 dataType = fields[1].GetUInt32();
+ uint32 dataType = fields[1].GetUInt8();
const char* scriptName = fields[4].GetCString();
uint32 scriptId = 0;
if (strcmp(scriptName, "")) // not empty
@@ -2407,7 +2414,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements()
{
Field* fields = result->Fetch();
- uint32 achievementId = fields[0].GetUInt32();
+ uint16 achievementId = fields[0].GetUInt16();
const AchievementEntry* achievement = sAchievementStore.LookupEntry(achievementId);
if (!achievement)
{
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 5b42ebe45b7..a156583a006 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -482,7 +482,9 @@ void AuctionHouseObject::Update()
if (AuctionsMap.empty())
return;
- QueryResult result = CharacterDatabase.PQuery("SELECT id FROM auctionhouse WHERE time <= %u ORDER BY TIME ASC", (uint32)curTime+60);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_AUCTION_BY_TIME);
+ stmt->setUInt32(0, (uint32)curTime+60);
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (!result)
return;
@@ -793,7 +795,7 @@ void AuctionHouseMgr::DeleteExpiredAuctionsAtStartup()
AuctionEntry* auction = new AuctionEntry();
- // Can't use LoadFromDB() because it assumes the auction map is loaded
+ // Can't use LoadFromDB() because it assumes the auction map is loaded
if (!auction->LoadFromFieldList(fields))
{
// For some reason the record in the DB is broken (possibly corrupt
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp
index 02707261d13..89151b6395c 100755
--- a/src/server/game/Battlegrounds/ArenaTeam.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeam.cpp
@@ -145,7 +145,7 @@ bool ArenaTeam::AddMember(uint64 playerGuid)
uint32 matchMakerRating;
if (result)
- matchMakerRating = (*result)[0].GetUInt32();
+ matchMakerRating = (*result)[0].GetUInt16();
else
matchMakerRating = sWorld->getIntConfig(CONFIG_ARENA_START_MATCHMAKER_RATING);
@@ -154,18 +154,18 @@ bool ArenaTeam::AddMember(uint64 playerGuid)
Player::RemovePetitionsAndSigns(playerGuid, GetType());
// Feed data to the struct
- ArenaTeamMember newmember;
- newmember.Name = playerName;
- newmember.Guid = playerGuid;
- newmember.Class = playerClass;
- newmember.SeasonGames = 0;
- newmember.WeekGames = 0;
- newmember.SeasonWins = 0;
- newmember.WeekWins = 0;
- newmember.PersonalRating = personalRating;
- newmember.MatchMakerRating = matchMakerRating;
+ ArenaTeamMember newMember;
+ newMember.Name = playerName;
+ newMember.Guid = playerGuid;
+ newMember.Class = playerClass;
+ newMember.SeasonGames = 0;
+ newMember.WeekGames = 0;
+ newMember.SeasonWins = 0;
+ newMember.WeekWins = 0;
+ newMember.PersonalRating = personalRating;
+ newMember.MatchMakerRating = matchMakerRating;
- Members.push_back(newmember);
+ Members.push_back(newMember);
// Save player's arena team membership to db
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_TEAM_MEMBER);
@@ -267,7 +267,7 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result)
if (Empty() || !captainPresentInTeam)
{
// Arena team is empty or captain is not in team, delete from db
- sLog->outErrorDb("ArenaTeam %u does not have any members or its captain is not in team, disbanding it...", TeamId);
+ sLog->outDebug(LOG_FILTER_BATTLEGROUND, "ArenaTeam %u does not have any members or its captain is not in team, disbanding it...", TeamId);
return false;
}
@@ -295,8 +295,10 @@ void ArenaTeam::SetCaptain(uint64 guid)
if (newCaptain)
{
newCaptain->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_MEMBER, 0);
+ char const* oldCaptainName = oldCaptain ? oldCaptain->GetName() : "";
+ uint32 oldCaptainLowGuid = oldCaptain ? oldCaptain->GetGUIDLow() : 0;
sLog->outArena("Player: %s [GUID: %u] promoted player: %s [GUID: %u] to leader of arena team [Id: %u] [Type: %u].",
- oldCaptain->GetName(), oldCaptain->GetGUIDLow(), newCaptain->GetName(), newCaptain->GetGUIDLow(), GetId(), GetType());
+ oldCaptainName, oldCaptainLowGuid, newCaptain->GetName(), newCaptain->GetGUIDLow(), GetId(), GetType());
}
}
@@ -304,11 +306,13 @@ void ArenaTeam::DelMember(uint64 guid, bool cleanDb)
{
// Remove member from team
for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
+ {
if (itr->Guid == guid)
{
Members.erase(itr);
break;
}
+ }
// Inform player and remove arena team info from player data
if (Player* player = ObjectAccessor::FindPlayer(guid))
@@ -719,7 +723,7 @@ int32 ArenaTeam::LostAgainst(uint32 Own_MMRating, uint32 Opponent_MMRating, int3
void ArenaTeam::MemberLost(Player* player, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange)
{
// Called for each participant of a match after losing
- for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
+ for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
if (itr->Guid == player->GetGUID())
{
@@ -745,7 +749,7 @@ void ArenaTeam::MemberLost(Player* player, uint32 againstMatchmakerRating, int32
void ArenaTeam::OfflineMemberLost(uint64 guid, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange)
{
// Called for offline player after ending rated arena match!
- for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
+ for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
if (itr->Guid == guid)
{
@@ -767,7 +771,7 @@ void ArenaTeam::OfflineMemberLost(uint64 guid, uint32 againstMatchmakerRating, i
void ArenaTeam::MemberWon(Player* player, uint32 againstMatchmakerRating, int32 MatchmakerRatingChange)
{
// called for each participant after winning a match
- for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
+ for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
if (itr->Guid == player->GetGUID())
{
@@ -802,7 +806,7 @@ void ArenaTeam::UpdateArenaPointsHelper(std::map& playerPoints)
// To get points, a player has to participate in at least 30% of the matches
uint32 requiredGames = (uint32)ceil(Stats.WeekGames * 0.3f);
- for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
+ for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
// The player participated in enough games, update his points
uint32 pointsToAdd = 0;
@@ -838,7 +842,7 @@ void ArenaTeam::SaveToDB()
stmt->setUInt32(6, GetId());
trans->Append(stmt);
- for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
+ for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_MEMBER);
stmt->setUInt16(0, itr->PersonalRating);
@@ -867,7 +871,7 @@ void ArenaTeam::FinishWeek()
Stats.WeekWins = 0;
// Reset member stats
- for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
+ for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
itr->WeekGames = 0;
itr->WeekWins = 0;
diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
index 7afa488a879..47282be3a8e 100644
--- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
@@ -92,12 +92,12 @@ void ArenaTeamMgr::LoadArenaTeams()
uint32 oldMSTime = getMSTime();
// Clean out the trash before loading anything
- CharacterDatabase.Execute("DELETE FROM arena_team_member WHERE arenaTeamId NOT IN (SELECT arenaTeamId FROM arena_team)");
+ CharacterDatabase.Execute("DELETE FROM arena_team_member WHERE arenaTeamId NOT IN (SELECT arenaTeamId FROM arena_team)"); // One-time query
- // 0 1 2 3 4 5 6 7 8
- QueryResult result = CharacterDatabase.Query("SELECT arena_team.arenaTeamId, name, captainGuid, type, backgroundColor, emblemStyle, emblemColor, borderStyle, borderColor, "
- // 9 10 11 12 13 14
- "rating, weekGames, weekWins, seasonGames, seasonWins, rank FROM arena_team ORDER BY arena_team.arenaTeamId ASC");
+ // 0 1 2 3 4 5 6 7 8
+ QueryResult result = CharacterDatabase.Query("SELECT arenaTeamId, name, captainGuid, type, backgroundColor, emblemStyle, emblemColor, borderStyle, borderColor, "
+ // 9 10 11 12 13 14
+ "rating, weekGames, weekWins, seasonGames, seasonWins, rank FROM arena_team ORDER BY arenaTeamId ASC");
if (!result)
{
@@ -153,6 +153,8 @@ void ArenaTeamMgr::DistributeArenaPoints()
SQLTransaction trans = CharacterDatabase.BeginTransaction();
+ PreparedStatement* stmt;
+
// Cycle that gives points to all players
/*
for (std::map::iterator playerItr = PlayerPoints.begin(); playerItr != PlayerPoints.end(); ++playerItr)
@@ -161,7 +163,12 @@ void ArenaTeamMgr::DistributeArenaPoints()
if (Player* player = HashMapHolder::Find(playerItr->first))
player->ModifyConquestPoints(playerItr->second, &trans);
else // Update database
- trans->PAppend("UPDATE characters SET arenaPoints=arenaPoints+%u WHERE guid=%u", playerItr->second, playerItr->first);
+ {
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ARENA_POINTS);
+ stmt->setUInt32(0, playerItr->second);
+ stmt->setUInt32(1, playerItr->first);
+ trans->Append(stmt);
+ }
}
*/
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index 191d2eaaeb6..54c84f2e6d4 100755
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -21,7 +21,6 @@
#include "ArenaTeamMgr.h"
#include "World.h"
#include "WorldPacket.h"
-
#include "ArenaTeam.h"
#include "Battleground.h"
#include "BattlegroundMgr.h"
@@ -66,7 +65,7 @@ namespace Trinity
private:
void do_helper(WorldPacket& data, char const* text)
{
- uint64 target_guid = _source ? _source ->GetGUID() : 0;
+ uint64 target_guid = _source ? _source->GetGUID() : 0;
data << uint8 (_msgtype);
data << uint32(LANG_UNIVERSAL);
@@ -145,6 +144,7 @@ Battleground::Battleground()
m_Winner = 2;
m_StartTime = 0;
m_ResetStatTimer = 0;
+ m_ValidStartPositionTimer = 0;
m_Events = 0;
m_IsRated = false;
m_BuffChange = false;
@@ -178,6 +178,8 @@ Battleground::Battleground()
m_ArenaTeamIds[BG_TEAM_ALLIANCE] = 0;
m_ArenaTeamIds[BG_TEAM_HORDE] = 0;
+ m_StartMaxDist = 0.0f;
+
m_ArenaTeamRatingChanges[BG_TEAM_ALLIANCE] = 0;
m_ArenaTeamRatingChanges[BG_TEAM_HORDE] = 0;
@@ -259,9 +261,7 @@ void Battleground::Update(uint32 diff)
{
case STATUS_WAIT_JOIN:
if (GetPlayersSize())
- {
_ProcessJoin(diff);
- }
break;
case STATUS_IN_PROGRESS:
_ProcessOfflineQueue();
@@ -294,6 +294,7 @@ void Battleground::Update(uint32 diff)
// Update start time and reset stats timer
m_StartTime += diff;
m_ResetStatTimer += diff;
+ m_ValidStartPositionTimer += diff;
PostUpdateImpl(diff);
}
@@ -425,7 +426,7 @@ inline void Battleground::_ProcessJoin(uint32 diff)
// *********************************************************
ModifyStartDelayTime(diff);
- if (m_ResetStatTimer <= 5000)
+ if (m_ResetStatTimer > 5000)
{
m_ResetStatTimer = 0;
for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
@@ -456,19 +457,19 @@ inline void Battleground::_ProcessJoin(uint32 diff)
// First start warning - 2 or 1 minute
SendMessageToAll(StartMessageIds[BG_STARTING_EVENT_FIRST], CHAT_MSG_BG_SYSTEM_NEUTRAL);
}
- // After 1 minute or 30 seconds, warning is signalled
+ // After 1 minute or 30 seconds, warning is signaled
else if (GetStartDelayTime() <= StartDelayTimes[BG_STARTING_EVENT_SECOND] && !(m_Events & BG_STARTING_EVENT_2))
{
m_Events |= BG_STARTING_EVENT_2;
SendMessageToAll(StartMessageIds[BG_STARTING_EVENT_SECOND], CHAT_MSG_BG_SYSTEM_NEUTRAL);
}
- // After 30 or 15 seconds, warning is signalled
+ // After 30 or 15 seconds, warning is signaled
else if (GetStartDelayTime() <= StartDelayTimes[BG_STARTING_EVENT_THIRD] && !(m_Events & BG_STARTING_EVENT_3))
{
m_Events |= BG_STARTING_EVENT_3;
SendMessageToAll(StartMessageIds[BG_STARTING_EVENT_THIRD], CHAT_MSG_BG_SYSTEM_NEUTRAL);
}
- // Delay expired (atfer 2 or 1 minute)
+ // Delay expired (after 2 or 1 minute)
else if (GetStartDelayTime() <= 0 && !(m_Events & BG_STARTING_EVENT_4))
{
m_Events |= BG_STARTING_EVENT_4;
@@ -529,6 +530,33 @@ inline void Battleground::_ProcessJoin(uint32 diff)
sWorld->SendWorldText(LANG_BG_STARTED_ANNOUNCE_WORLD, GetName(), GetMinLevel(), GetMaxLevel());
}
}
+
+ // Find if the player left our start zone; if so, teleport it back
+ if (m_ValidStartPositionTimer > 1000)
+ {
+ m_ValidStartPositionTimer = 0;
+ float maxDist = GetStartMaxDist();
+ if (maxDist > 0.0f)
+ {
+ for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
+ {
+ if (Player *plr = ObjectAccessor::FindPlayer(itr->first))
+ {
+ float x, y, z, o;
+ uint32 team = plr->GetBGTeam();
+ GetTeamStartLoc(team, x, y, z, o);
+
+ float dist = plr->GetDistance(x, y, z);
+
+ if (dist >= maxDist)
+ {
+ sLog->outError("BATTLEGROUND: Sending %s back to start location (map: %u) (possible exploit)", plr->GetName(), GetMapId());
+ plr->TeleportTo(GetMapId(), x, y, z, o);
+ }
+ }
+ }
+ }
+ }
}
inline void Battleground::_ProcessLeave(uint32 diff)
@@ -743,7 +771,7 @@ void Battleground::EndBattleground(uint32 winner)
winner_matchmaker_rating = GetArenaMatchmakerRating(winner);
winner_matchmaker_change = winner_arena_team->WonAgainst(winner_matchmaker_rating, loser_matchmaker_rating, winner_change);
loser_matchmaker_change = loser_arena_team->LostAgainst(loser_matchmaker_rating, winner_matchmaker_rating, loser_change);
- sLog->outArena("--- Winner: old rating: %u, rating gain: %d, old MMR: %u, MMR gain: %d --- Loser: old rating: %u, rating loss: %d, old MMR: %u, MMR loss: %d ---", winner_team_rating, winner_change, winner_matchmaker_rating,
+ sLog->outArena("match Type: %u --- Winner: old rating: %u, rating gain: %d, old MMR: %u, MMR gain: %d --- Loser: old rating: %u, rating loss: %d, old MMR: %u, MMR loss: %d ---", m_ArenaType, winner_team_rating, winner_change, winner_matchmaker_rating,
winner_matchmaker_change, loser_team_rating, loser_change, loser_matchmaker_rating, loser_matchmaker_change);
SetArenaMatchmakerRating(winner, winner_matchmaker_rating + winner_matchmaker_change);
SetArenaMatchmakerRating(GetOtherTeam(winner), loser_matchmaker_rating + loser_matchmaker_change);
@@ -753,7 +781,7 @@ void Battleground::EndBattleground(uint32 winner)
if (sWorld->getBoolConfig(CONFIG_ARENA_LOG_EXTENDED_INFO))
for (Battleground::BattlegroundScoreMap::const_iterator itr = GetPlayerScoresBegin(); itr != GetPlayerScoresEnd(); ++itr)
if (Player* player = ObjectAccessor::FindPlayer(itr->first))
- sLog->outArena("Statistics for %s (GUID: " UI64FMTD ", Team: %d, IP: %s): %u damage, %u healing, %u killing blows", player->GetName(), itr->first, player->GetArenaTeamId(m_ArenaType == 5 ? 2 : m_ArenaType == 3), player->GetSession()->GetRemoteAddress().c_str(), itr->second->DamageDone, itr->second->HealingDone, itr->second->KillingBlows);
+ sLog->outArena("Statistics match Type: %u for %s (GUID: " UI64FMTD ", Team: %d, IP: %s): %u damage, %u healing, %u killing blows", m_ArenaType, player->GetName(), itr->first, player->GetArenaTeamId(m_ArenaType == 5 ? 2 : m_ArenaType == 3), player->GetSession()->GetRemoteAddress().c_str(), itr->second->DamageDone, itr->second->HealingDone, itr->second->KillingBlows);
}
// Deduct 16 points from each teams arena-rating if there are no winners after 45+2 minutes
else
@@ -822,9 +850,12 @@ void Battleground::EndBattleground(uint32 winner)
if (team == winner)
{
// update achievement BEFORE personal rating update
- ArenaTeamMember* member = winner_arena_team->GetMember(player->GetGUID());
- if (member)
- player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, 1);
+ if (ArenaTeamMember* member = winner_arena_team->GetMember(player->GetGUID()))
+ {
+ uint32 rating = player->GetArenaPersonalRating(winner_arena_team->GetSlot());
+ player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA,
+ rating ? rating : 1);
+ }
winner_arena_team->MemberWon(player, loser_matchmaker_rating, winner_matchmaker_change);
}
@@ -1465,9 +1496,8 @@ void Battleground::DoorClose(uint32 type)
// If doors are open, close it
if (obj->getLootState() == GO_ACTIVATED && obj->GetGoState() != GO_STATE_READY)
{
- // Change state to allow door to be closed
obj->SetLootState(GO_READY);
- obj->UseDoorOrButton(RESPAWN_ONE_DAY);
+ obj->SetGoState(GO_STATE_READY);
}
}
else
@@ -1479,9 +1509,8 @@ void Battleground::DoorOpen(uint32 type)
{
if (GameObject* obj = GetBgMap()->GetGameObject(BgObjects[type]))
{
- // Change state to be sure they will be opened
- obj->SetLootState(GO_READY);
- obj->UseDoorOrButton(RESPAWN_ONE_DAY);
+ obj->SetLootState(GO_ACTIVATED);
+ obj->SetGoState(GO_STATE_ACTIVE);
}
else
sLog->outError("Battleground::DoorOpen: door gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h
index 32f6ebc92de..01dfbb23033 100755
--- a/src/server/game/Battlegrounds/Battleground.h
+++ b/src/server/game/Battlegrounds/Battleground.h
@@ -443,6 +443,8 @@ class Battleground
Z = m_TeamStartLocZ[idx];
O = m_TeamStartLocO[idx];
}
+ void SetStartMaxDist(float startMaxDist) { m_StartMaxDist = startMaxDist; }
+ float GetStartMaxDist() const { return m_StartMaxDist; }
// Packet Transfer
// method that should fill worldpacket with actual world states (not yet implemented for all battlegrounds!)
@@ -617,6 +619,7 @@ class Battleground
uint32 m_ClientInstanceID; // the instance-id which is sent to the client and without any other internal use
uint32 m_StartTime;
uint32 m_ResetStatTimer;
+ uint32 m_ValidStartPositionTimer;
int32 m_EndTime; // it is set to 120000 when bg is ending and it decreases itself
uint32 m_LastResurrectTime;
BattlegroundBracketId m_BracketId;
@@ -698,6 +701,7 @@ class Battleground
float m_TeamStartLocY[BG_TEAMS_COUNT];
float m_TeamStartLocZ[BG_TEAMS_COUNT];
float m_TeamStartLocO[BG_TEAMS_COUNT];
+ float m_StartMaxDist;
uint32 ScriptId;
};
#endif
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
index eac876a71d5..167933b9c0c 100755
--- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
@@ -660,6 +660,7 @@ uint32 BattlegroundMgr::CreateBattleground(CreateBattlegroundData& data)
bg->SetName(data.BattlegroundName);
bg->SetTeamStartLoc(ALLIANCE, data.Team1StartLocX, data.Team1StartLocY, data.Team1StartLocZ, data.Team1StartLocO);
bg->SetTeamStartLoc(HORDE, data.Team2StartLocX, data.Team2StartLocY, data.Team2StartLocZ, data.Team2StartLocO);
+ bg->SetStartMaxDist(data.StartMaxDist);
bg->SetLevelRange(data.LevelMin, data.LevelMax);
bg->SetScriptId(data.scriptId);
@@ -677,8 +678,8 @@ void BattlegroundMgr::CreateInitialBattlegrounds()
uint8 selectionWeight;
BattlemasterListEntry const* bl;
- // 0 1 2 3 4 5 6 7 8 9 10
- QueryResult result = WorldDatabase.Query("SELECT id, MinPlayersPerTeam, MaxPlayersPerTeam, MinLvl, MaxLvl, AllianceStartLoc, AllianceStartO, HordeStartLoc, HordeStartO, Weight, ScriptName FROM battleground_template");
+ // 0 1 2 3 4 5 6 7 8 9 10 11
+ QueryResult result = WorldDatabase.Query("SELECT id, MinPlayersPerTeam, MaxPlayersPerTeam, MinLvl, MaxLvl, AllianceStartLoc, AllianceStartO, HordeStartLoc, HordeStartO, StartMaxDist, Weight, ScriptName FROM battleground_template");
if (!result)
{
@@ -708,21 +709,24 @@ void BattlegroundMgr::CreateInitialBattlegrounds()
CreateBattlegroundData data;
data.bgTypeId = BattlegroundTypeId(bgTypeID_);
data.IsArena = (bl->type == TYPE_ARENA);
- data.MinPlayersPerTeam = fields[1].GetUInt32();
- data.MaxPlayersPerTeam = fields[2].GetUInt32();
- data.LevelMin = fields[3].GetUInt32();
- data.LevelMax = fields[4].GetUInt32();
- //check values from DB
- if (data.MaxPlayersPerTeam == 0 || data.MinPlayersPerTeam == 0 || data.MinPlayersPerTeam > data.MaxPlayersPerTeam)
+ data.MinPlayersPerTeam = fields[1].GetUInt16();
+ data.MaxPlayersPerTeam = fields[2].GetUInt16();
+ data.LevelMin = fields[3].GetUInt8();
+ data.LevelMax = fields[4].GetUInt8();
+
+ // check values from DB
+ if (data.MaxPlayersPerTeam == 0 || data.MinPlayersPerTeam > data.MaxPlayersPerTeam)
{
- data.MinPlayersPerTeam = 0; // by default now expected strong full bg requirement
- data.MaxPlayersPerTeam = 40;
+ sLog->outErrorDb("Table `battleground_template` for id %u has bad values for MinPlayersPerTeam (%u) and MaxPlayersPerTeam(%u)",
+ data.bgTypeId, data.MinPlayersPerTeam, data.MaxPlayersPerTeam);
+ continue;
}
+
if (data.LevelMin == 0 || data.LevelMax == 0 || data.LevelMin > data.LevelMax)
{
- //TO-DO: FIX ME
- data.LevelMin = 0;//bl->minlvl;
- data.LevelMax = 80;//bl->maxlvl;
+ sLog->outErrorDb("Table `battleground_template` for id %u has bad values for LevelMin (%u) and LevelMax(%u)",
+ data.bgTypeId, data.LevelMin, data.LevelMax);
+ continue;
}
startId = fields[5].GetUInt32();
@@ -767,9 +771,10 @@ void BattlegroundMgr::CreateInitialBattlegrounds()
continue;
}
- selectionWeight = fields[9].GetUInt8();
- data.scriptId = sObjectMgr->GetScriptId(fields[10].GetCString());
+ data.StartMaxDist = fields[9].GetFloat();
+
//data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()];
+ data.scriptId = sObjectMgr->GetScriptId(fields[10].GetCString());
data.MapID = bl->mapid[0];
if (!CreateBattleground(data))
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h
index b40f7bcbe91..dd502409178 100755
--- a/src/server/game/Battlegrounds/BattlegroundMgr.h
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.h
@@ -50,6 +50,7 @@ struct CreateBattlegroundData
float Team2StartLocY;
float Team2StartLocZ;
float Team2StartLocO;
+ float StartMaxDist;
uint32 scriptId;
};
diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp
index a5b00ed9db1..6f4264c0faf 100755
--- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp
@@ -129,7 +129,7 @@ bool BattlegroundQueue::SelectionPool::AddGroup(GroupQueueInfo* ginfo, uint32 de
// add group or player (grp == NULL) to bg queue with the given leader and bg specifications
GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, BattlegroundTypeId BgTypeId, PvPDifficultyEntry const* bracketEntry, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 arenateamid)
{
- BattlegroundBracketId bracketId = bracketEntry->GetBracketId();
+ BattlegroundBracketId bracketId = bracketEntry->GetBracketId();
// create new ginfo
GroupQueueInfo* ginfo = new GroupQueueInfo;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
index 71f0ce29aec..d28f5ddfe6a 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
@@ -290,7 +290,7 @@ int32 BattlegroundAB::_GetNodeNameId(uint8 node)
case BG_AB_NODE_LUMBER_MILL:return LANG_BG_AB_NODE_LUMBER_MILL;
case BG_AB_NODE_GOLD_MINE: return LANG_BG_AB_NODE_GOLD_MINE;
default:
- ASSERT(0);
+ ASSERT(false);
}
return 0;
}
@@ -549,7 +549,7 @@ void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*targ
bool BattlegroundAB::SetupBattleground()
{
- for (int i = 0 ; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)
+ for (int i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)
{
if (!AddObject(BG_AB_OBJECT_BANNER_NEUTRAL + 8*i, BG_AB_OBJECTID_NODE_BANNER_0 + i, BG_AB_NodePositions[i][0], BG_AB_NodePositions[i][1], BG_AB_NodePositions[i][2], BG_AB_NodePositions[i][3], 0, 0, sin(BG_AB_NodePositions[i][3]/2), cos(BG_AB_NodePositions[i][3]/2), RESPAWN_ONE_DAY)
|| !AddObject(BG_AB_OBJECT_BANNER_CONT_A + 8*i, BG_AB_OBJECTID_BANNER_CONT_A, BG_AB_NodePositions[i][0], BG_AB_NodePositions[i][1], BG_AB_NodePositions[i][2], BG_AB_NodePositions[i][3], 0, 0, sin(BG_AB_NodePositions[i][3]/2), cos(BG_AB_NodePositions[i][3]/2), RESPAWN_ONE_DAY)
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
index 50020a580b1..2cac5df73a9 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
@@ -184,7 +184,8 @@ enum BG_AB_Objectives
#define AB_EVENT_START_BATTLE 9158 // Achievement: Let's Get This Done
// x, y, z, o
-const float BG_AB_NodePositions[BG_AB_DYNAMIC_NODES_COUNT][4] = {
+const float BG_AB_NodePositions[BG_AB_DYNAMIC_NODES_COUNT][4] =
+{
{1166.785f, 1200.132f, -56.70859f, 0.9075713f}, // stables
{977.0156f, 1046.616f, -44.80923f, -2.600541f}, // blacksmith
{806.1821f, 874.2723f, -55.99371f, -2.303835f}, // farm
@@ -193,7 +194,8 @@ const float BG_AB_NodePositions[BG_AB_DYNAMIC_NODES_COUNT][4] = {
};
// x, y, z, o, rot0, rot1, rot2, rot3
-const float BG_AB_DoorPositions[2][8] = {
+const float BG_AB_DoorPositions[2][8] =
+{
{1284.597f, 1281.167f, -15.97792f, 0.7068594f, 0.012957f, -0.060288f, 0.344959f, 0.93659f},
{708.0903f, 708.4479f, -17.8342f, -2.391099f, 0.050291f, 0.015127f, 0.929217f, -0.365784f}
};
@@ -206,7 +208,8 @@ const uint32 BG_AB_TickPoints[6] = {0, 10, 10, 10, 10, 30};
const uint32 BG_AB_GraveyardIds[BG_AB_ALL_NODES_COUNT] = {895, 894, 893, 897, 896, 898, 899};
// x, y, z, o
-const float BG_AB_BuffPositions[BG_AB_DYNAMIC_NODES_COUNT][4] = {
+const float BG_AB_BuffPositions[BG_AB_DYNAMIC_NODES_COUNT][4] =
+{
{1185.71f, 1185.24f, -56.36f, 2.56f}, // stables
{990.75f, 1008.18f, -42.60f, 2.43f}, // blacksmith
{817.66f, 843.34f, -56.54f, 3.01f}, // farm
@@ -215,7 +218,8 @@ const float BG_AB_BuffPositions[BG_AB_DYNAMIC_NODES_COUNT][4] = {
};
// x, y, z, o
-const float BG_AB_SpiritGuidePos[BG_AB_ALL_NODES_COUNT][4] = {
+const float BG_AB_SpiritGuidePos[BG_AB_ALL_NODES_COUNT][4] =
+{
{1200.03f, 1171.09f, -56.47f, 5.15f}, // stables
{1017.43f, 960.61f, -42.95f, 4.88f}, // blacksmith
{833.00f, 793.00f, -57.25f, 5.27f}, // farm
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
index 801b522feab..d2cbab2be54 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
@@ -1032,17 +1032,18 @@ void BattlegroundAV::EventPlayerAssaultsPoint(Player* player, uint32 object)
std::vector ghost_list = m_ReviveQueue[BgCreatures[node]];
if (!ghost_list.empty())
{
- Player* player;
- WorldSafeLocsEntry const* ClosestGrave = NULL;
+ Player* waitingPlayer; // player waiting at graveyard for resurrection
+ WorldSafeLocsEntry const* closestGrave = NULL;
for (std::vector::iterator itr = ghost_list.begin(); itr != ghost_list.end(); ++itr)
{
- player = ObjectAccessor::FindPlayer(*ghost_list.begin());
- if (!player)
+ waitingPlayer = ObjectAccessor::FindPlayer(*ghost_list.begin());
+ if (!waitingPlayer)
continue;
- if (!ClosestGrave)
- ClosestGrave = GetClosestGraveYard(player);
+
+ if (!closestGrave)
+ closestGrave = GetClosestGraveYard(waitingPlayer);
else
- player->TeleportTo(GetMapId(), ClosestGrave->x, ClosestGrave->y, ClosestGrave->z, player->GetOrientation());
+ waitingPlayer->TeleportTo(GetMapId(), closestGrave->x, closestGrave->y, closestGrave->z, player->GetOrientation());
}
m_ReviveQueue[BgCreatures[node]].clear();
}
@@ -1207,7 +1208,7 @@ bool BattlegroundAV::SetupBattleground()
}
//spawn node-objects
- for (uint8 i = BG_AV_NODES_FIRSTAID_STATION ; i < BG_AV_NODES_MAX; ++i)
+ for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i)
{
if (i <= BG_AV_NODES_FROSTWOLF_HUT)
{
@@ -1292,7 +1293,7 @@ bool BattlegroundAV::SetupBattleground()
return false;
}
}
- for (uint16 i= 0 ; i <= (BG_AV_OBJECT_MINE_SUPPLY_S_MAX-BG_AV_OBJECT_MINE_SUPPLY_S_MIN); i++)
+ for (uint16 i= 0; i <= (BG_AV_OBJECT_MINE_SUPPLY_S_MAX-BG_AV_OBJECT_MINE_SUPPLY_S_MIN); i++)
{
if (!AddObject(BG_AV_OBJECT_MINE_SUPPLY_S_MIN+i, BG_AV_OBJECTID_MINE_S, BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][0], BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][1], BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][2], BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][3], 0, 0, sin(BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][3]/2), RESPAWN_ONE_DAY))
{
@@ -1323,30 +1324,39 @@ bool BattlegroundAV::SetupBattleground()
// Initial Nodes
for (i = 0; i < BG_AV_OBJECT_MAX; i++)
SpawnBGObject(i, RESPAWN_ONE_DAY);
- for (i = BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE ; i++){
+
+ for (i = BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE; i++)
+ {
SpawnBGObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+3*i, RESPAWN_IMMEDIATELY);
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
}
- for (i = BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER ; i++)
+
+ for (i = BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER; i++)
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
- for (i = BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE; i <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER ; i++){
+
+ for (i = BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE; i <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER; i++)
+ {
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
if (i <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT)
SpawnBGObject(BG_AV_OBJECT_AURA_H_FIRSTAID_STATION+3*GetNodeThroughObject(i), RESPAWN_IMMEDIATELY);
}
+
for (i = BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER; i+=2)
{
SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
}
+
for (i = BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER; i <= BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER; i+=2)
{
SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
}
+
//snowfall and the doors
for (i = BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE; i <= BG_AV_OBJECT_DOOR_A; i++)
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
+
SpawnBGObject(BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE, RESPAWN_IMMEDIATELY);
//creatures
@@ -1471,7 +1481,7 @@ void BattlegroundAV::ResetBGSubclass()
{
for (uint8 j=0; j<9; j++)
m_Team_QuestStatus[i][j]=0;
- m_Team_Scores[i]=BG_AV_SCORE_INITIAL_POINTS;
+ m_Team_Scores[i]=BG_AV_SCORE_INITIAL_POINTS;
m_IsInformedNearVictory[i]=false;
m_CaptainAlive[i] = true;
m_CaptainBuffTimer[i] = 120000 + urand(0, 4)* 60; //as far as i could see, the buff is randomly so i make 2minutes (thats the duration of the buff itself) + 0-4minutes TODO get the right times
@@ -1492,7 +1502,6 @@ void BattlegroundAV::ResetBGSubclass()
for (uint16 i = 0; i < AV_CPLACE_MAX+AV_STATICCPLACE_MAX; i++)
if (BgCreatures[i])
DelCreature(i);
-
}
bool BattlegroundAV::IsBothMinesControlledByTeam(uint32 team) const
@@ -1552,4 +1561,4 @@ bool BattlegroundAV::IsAllTowersControlledAndCaptainAlive(uint32 team) const
}
return false;
-}
\ No newline at end of file
+}
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
index 82e231c63fa..f073b69a779 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
@@ -356,7 +356,9 @@ enum BG_AV_OBJECTS
AV_OPLACE_MAX = 149
};
-const float BG_AV_ObjectPos[AV_OPLACE_MAX][4] = {
+
+const float BG_AV_ObjectPos[AV_OPLACE_MAX][4] =
+{
{638.592f, -32.422f, 46.0608f, -1.62316f }, //firstaid station
{669.007f, -294.078f, 30.2909f, 2.77507f }, //stormpike
{77.8013f, -404.7f, 46.7549f, -0.872665f }, //stone grave
@@ -527,7 +529,8 @@ const float BG_AV_ObjectPos[AV_OPLACE_MAX][4] = {
{-951.394f, -193.695f, 67.634f, 0.802851f}
};
-const float BG_AV_DoorPositons[2][4] = {
+const float BG_AV_DoorPositons[2][4] =
+{
{780.487f, -493.024f, 99.9553f, 3.0976f}, //alliance
{-1375.193f, -538.981f, 55.2824f, 0.72178f} //horde
};
@@ -623,7 +626,8 @@ enum BG_AV_CreaturePlace
};
//x, y, z, o
-const float BG_AV_CreaturePos[AV_CPLACE_MAX][4] = {
+const float BG_AV_CreaturePos[AV_CPLACE_MAX][4] =
+{
//spiritguides
{643.000000f, 44.000000f, 69.740196f, -0.001854f},
{676.000000f, -374.000000f, 30.000000f, -0.001854f},
@@ -1039,7 +1043,8 @@ enum BG_AV_CreatureIds
//entry, team, minlevel, maxlevel
//TODO this array should be removed, the only needed things are the entrys (for spawning(?) and handlekillunit)
-const uint32 BG_AV_CreatureInfo[AV_NPC_INFO_MAX][4] = {
+const uint32 BG_AV_CreatureInfo[AV_NPC_INFO_MAX][4] =
+{
{ 12050, 1216, 58, 58 }, //Stormpike Defender
{ 13326, 1216, 59, 59 }, //Seasoned Defender
{ 13331, 1216, 60, 60 }, //Veteran Defender
@@ -1099,7 +1104,9 @@ const uint32 BG_AV_CreatureInfo[AV_NPC_INFO_MAX][4] = {
};
//x, y, z, o, static_creature_info-id
-const float BG_AV_StaticCreaturePos[AV_STATICCPLACE_MAX][5] = { //static creatures
+const float BG_AV_StaticCreaturePos[AV_STATICCPLACE_MAX][5] =
+{
+ //static creatures
{-1235.31f, -340.777f, 60.5088f, 3.31613f, 0 }, //2225 - Zora Guthrek
{-1244.02f, -323.795f, 61.0485f, 5.21853f, 1 }, //3343 - Grelkor
{-1235.16f, -332.302f, 60.2985f, 2.96706f, 2 }, //3625 - Rarck
@@ -1226,7 +1233,8 @@ const float BG_AV_StaticCreaturePos[AV_STATICCPLACE_MAX][5] = { //static creatur
};
-const uint32 BG_AV_StaticCreatureInfo[51][4] = {
+const uint32 BG_AV_StaticCreatureInfo[51][4] =
+{
{ 2225, 1215, 55, 55 }, //Zora Guthrek
{ 3343, 1215, 55, 55 }, //Grelkor
{ 3625, 1215, 55, 55 }, //Rarck
@@ -1293,16 +1301,17 @@ enum BG_AV_Graveyards
AV_GRAVE_MAIN_HORDE = 610
};
-const uint32 BG_AV_GraveyardIds[9]= {
- AV_GRAVE_STORM_AID,
- AV_GRAVE_STORM_GRAVE,
- AV_GRAVE_STONE_GRAVE,
- AV_GRAVE_SNOWFALL,
- AV_GRAVE_ICE_GRAVE,
- AV_GRAVE_FROSTWOLF,
- AV_GRAVE_FROST_HUT,
- AV_GRAVE_MAIN_ALLIANCE,
- AV_GRAVE_MAIN_HORDE
+const uint32 BG_AV_GraveyardIds[9]=
+{
+ AV_GRAVE_STORM_AID,
+ AV_GRAVE_STORM_GRAVE,
+ AV_GRAVE_STONE_GRAVE,
+ AV_GRAVE_SNOWFALL,
+ AV_GRAVE_ICE_GRAVE,
+ AV_GRAVE_FROSTWOLF,
+ AV_GRAVE_FROST_HUT,
+ AV_GRAVE_MAIN_ALLIANCE,
+ AV_GRAVE_MAIN_HORDE
};
enum BG_AV_BUFF
@@ -1434,13 +1443,15 @@ enum BG_AV_WorldStates
};
//alliance_control neutral_control horde_control
-const uint32 BG_AV_MineWorldStates[2][3] = {
+const uint32 BG_AV_MineWorldStates[2][3] =
+{
{1358, 1360, 1359},
{1355, 1357, 1356}
};
//alliance_control alliance_assault h_control h_assault
-const uint32 BG_AV_NodeWorldStates[16][4] = {
+const uint32 BG_AV_NodeWorldStates[16][4] =
+{
//Stormpike first aid station
{1325, 1326, 1327, 1328},
//Stormpike Graveyard
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
index d24058cdd8a..ccc6a2305b4 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
@@ -27,6 +27,7 @@
BattlegroundDS::BattlegroundDS()
{
BgObjects.resize(BG_DS_OBJECT_MAX);
+ BgCreatures.resize(BG_DS_NPC_MAX);
StartDelayTimes[BG_STARTING_EVENT_FIRST] = BG_START_DELAY_1M;
StartDelayTimes[BG_STARTING_EVENT_SECOND] = BG_START_DELAY_30S;
@@ -49,6 +50,34 @@ void BattlegroundDS::PostUpdateImpl(uint32 diff)
if (GetStatus() != STATUS_IN_PROGRESS)
return;
+ if (getPipeKnockBackCount() < BG_DS_PIPE_KNOCKBACK_TOTAL_COUNT)
+ {
+ if (getPipeKnockBackTimer() < diff)
+ {
+ for (uint32 i = BG_DS_NPC_PIPE_KNOCKBACK_1; i <= BG_DS_NPC_PIPE_KNOCKBACK_2; ++i)
+ if (Creature* waterSpout = GetBgMap()->GetCreature(BgCreatures[i]))
+ waterSpout->CastSpell(waterSpout, BG_DS_SPELL_FLUSH, true);
+
+ setPipeKnockBackCount(getPipeKnockBackCount() + 1);
+ setPipeKnockBackTimer(BG_DS_PIPE_KNOCKBACK_DELAY);
+ }
+ else
+ setPipeKnockBackTimer(getPipeKnockBackTimer() - diff);
+ }
+
+ if (getWaterFallStatus() == BG_DS_WATERFALL_STATUS_ON) // Repeat knockback while the waterfall still active
+ {
+ if (getWaterFallKnockbackTimer() < diff)
+ {
+ if (Creature* waterSpout = GetBgMap()->GetCreature(BgCreatures[BG_DS_NPC_WATERFALL_KNOCKBACK]))
+ waterSpout->CastSpell(waterSpout, BG_DS_SPELL_WATER_SPOUT, true);
+
+ setWaterFallKnockbackTimer(BG_DS_WATERFALL_KNOCKBACK_TIMER);
+ }
+ else
+ setWaterFallKnockbackTimer(getWaterFallKnockbackTimer() - diff);
+ }
+
if (getWaterFallTimer() < diff)
{
if (getWaterFallStatus() == BG_DS_WATERFALL_STATUS_OFF) // Add the water
@@ -57,13 +86,14 @@ void BattlegroundDS::PostUpdateImpl(uint32 diff)
setWaterFallTimer(BG_DS_WATERFALL_WARNING_DURATION);
setWaterFallStatus(BG_DS_WATERFALL_STATUS_WARNING);
}
- else if (getWaterFallStatus() == BG_DS_WATERFALL_STATUS_WARNING) // Active collision
+ else if (getWaterFallStatus() == BG_DS_WATERFALL_STATUS_WARNING) // Active collision and start knockback timer
{
if (GameObject* gob = GetBgMap()->GetGameObject(BgObjects[BG_DS_OBJECT_WATER_1]))
gob->SetGoState(GO_STATE_READY);
setWaterFallTimer(BG_DS_WATERFALL_DURATION);
setWaterFallStatus(BG_DS_WATERFALL_STATUS_ON);
+ setWaterFallKnockbackTimer(BG_DS_WATERFALL_KNOCKBACK_TIMER);
}
else //if (getWaterFallStatus() == BG_DS_WATERFALL_STATUS_ON) // Remove collision and water
{
@@ -97,12 +127,21 @@ void BattlegroundDS::StartingEventOpenDoors()
setWaterFallTimer(urand(BG_DS_WATERFALL_TIMER_MIN, BG_DS_WATERFALL_TIMER_MAX));
setWaterFallStatus(BG_DS_WATERFALL_STATUS_OFF);
+ setPipeKnockBackTimer(BG_DS_PIPE_KNOCKBACK_FIRST_DELAY);
+ setPipeKnockBackCount(0);
+
SpawnBGObject(BG_DS_OBJECT_WATER_2, RESPAWN_IMMEDIATELY);
DoorOpen(BG_DS_OBJECT_WATER_2);
// Turn off collision
if (GameObject* gob = GetBgMap()->GetGameObject(BgObjects[BG_DS_OBJECT_WATER_1]))
gob->SetGoState(GO_STATE_ACTIVE);
+
+ // Remove effects of Demonic Circle Summon
+ for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
+ if (Player* player = ObjectAccessor::FindPlayer(itr->first))
+ if (player->HasAura(48018))
+ player->RemoveAurasDueToSpell(48018);
}
void BattlegroundDS::AddPlayer(Player* player)
@@ -151,6 +190,14 @@ void BattlegroundDS::HandleAreaTrigger(Player* Source, uint32 Trigger)
{
case 5347:
case 5348:
+ // Remove effects of Demonic Circle Summon
+ if (Source->HasAura(48018))
+ Source->RemoveAurasDueToSpell(48018);
+
+ // Someone has get back into the pipes and the knockback has already been performed,
+ // so we reset the knockback count for kicking the player again into the arena.
+ if (getPipeKnockBackCount() >= BG_DS_PIPE_KNOCKBACK_TOTAL_COUNT)
+ setPipeKnockBackCount(0);
break;
default:
sLog->outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger);
@@ -187,7 +234,11 @@ bool BattlegroundDS::SetupBattleground()
|| !AddObject(BG_DS_OBJECT_WATER_2, BG_DS_OBJECT_TYPE_WATER_2, 1291.56f, 790.837f, 7.1f, 3.14238f, 0, 0, 0.694215f, -0.719768f, 120)
// buffs
|| !AddObject(BG_DS_OBJECT_BUFF_1, BG_DS_OBJECT_TYPE_BUFF_1, 1291.7f, 813.424f, 7.11472f, 4.64562f, 0, 0, 0.730314f, -0.683111f, 120)
- || !AddObject(BG_DS_OBJECT_BUFF_2, BG_DS_OBJECT_TYPE_BUFF_2, 1291.7f, 768.911f, 7.11472f, 1.55194f, 0, 0, 0.700409f, 0.713742f, 120))
+ || !AddObject(BG_DS_OBJECT_BUFF_2, BG_DS_OBJECT_TYPE_BUFF_2, 1291.7f, 768.911f, 7.11472f, 1.55194f, 0, 0, 0.700409f, 0.713742f, 120)
+ // knockback creatures
+ || !AddCreature(BG_DS_NPC_TYPE_WATER_SPOUT, BG_DS_NPC_WATERFALL_KNOCKBACK, 0, 1292.587f, 790.2205f, 7.19796f, 3.054326f, RESPAWN_IMMEDIATELY)
+ || !AddCreature(BG_DS_NPC_TYPE_WATER_SPOUT, BG_DS_NPC_PIPE_KNOCKBACK_1, 0, 1369.977f, 817.2882f, 16.08718f, 3.106686f, RESPAWN_IMMEDIATELY)
+ || !AddCreature(BG_DS_NPC_TYPE_WATER_SPOUT, BG_DS_NPC_PIPE_KNOCKBACK_2, 0, 1212.833f, 765.3871f, 16.09484f, 0.0f, RESPAWN_IMMEDIATELY))
{
sLog->outErrorDb("BatteGroundDS: Failed to spawn some object!");
return false;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h
index 7efc6e1caa7..aaf08ba1313 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h
@@ -42,12 +42,37 @@ enum BattlegroundDSObjects
BG_DS_OBJECT_TYPE_BUFF_2 = 184664
};
+enum BattlegroundDSCreatureTypes
+{
+ BG_DS_NPC_WATERFALL_KNOCKBACK = 0,
+ BG_DS_NPC_PIPE_KNOCKBACK_1 = 1,
+ BG_DS_NPC_PIPE_KNOCKBACK_2 = 2,
+ BG_DS_NPC_MAX = 3
+};
+
+enum BattlegroundDSCreatures
+{
+ BG_DS_NPC_TYPE_WATER_SPOUT = 28567,
+};
+
+enum BattlegroundDSSpells
+{
+ BG_DS_SPELL_FLUSH = 57405, // Visual and target selector for the starting knockback from the pipe
+ BG_DS_SPELL_FLUSH_KNOCKBACK = 61698, // Knockback effect for previous spell (triggered, not need to be casted)
+ BG_DS_SPELL_WATER_SPOUT = 58873, // Knockback effect of the central waterfall
+};
+
enum BattlegroundDSData
{ // These values are NOT blizzlike... need the correct data!
BG_DS_WATERFALL_TIMER_MIN = 30000,
BG_DS_WATERFALL_TIMER_MAX = 60000,
- BG_DS_WATERFALL_WARNING_DURATION = 7000,
- BG_DS_WATERFALL_DURATION = 10000,
+ BG_DS_WATERFALL_WARNING_DURATION = 5000,
+ BG_DS_WATERFALL_DURATION = 30000,
+ BG_DS_WATERFALL_KNOCKBACK_TIMER = 1500,
+
+ BG_DS_PIPE_KNOCKBACK_FIRST_DELAY = 5000,
+ BG_DS_PIPE_KNOCKBACK_DELAY = 3000,
+ BG_DS_PIPE_KNOCKBACK_TOTAL_COUNT = 2,
BG_DS_WATERFALL_STATUS_WARNING = 1, // Water starting to fall, but no LoS Blocking nor movement blocking
BG_DS_WATERFALL_STATUS_ON = 2, // LoS and Movement blocking active
@@ -83,12 +108,21 @@ class BattlegroundDS : public Battleground
private:
uint32 _waterfallTimer;
uint8 _waterfallStatus;
+ uint32 _waterfallKnockbackTimer;
+ uint32 _pipeKnockBackTimer;
+ uint8 _pipeKnockBackCount;
virtual void PostUpdateImpl(uint32 diff);
protected:
uint32 getWaterFallStatus() { return _waterfallStatus; };
- void setWaterFallStatus(uint32 status) { _waterfallStatus = status; };
- void setWaterFallTimer(uint32 timer) { _waterfallTimer = timer; };
+ void setWaterFallStatus(uint8 status) { _waterfallStatus = status; };
uint32 getWaterFallTimer() { return _waterfallTimer; };
+ void setWaterFallTimer(uint32 timer) { _waterfallTimer = timer; };
+ uint32 getWaterFallKnockbackTimer() { return _waterfallKnockbackTimer; };
+ void setWaterFallKnockbackTimer(uint32 timer) { _waterfallKnockbackTimer = timer; };
+ uint8 getPipeKnockBackCount() { return _pipeKnockBackCount; };
+ void setPipeKnockBackCount(uint8 count) { _pipeKnockBackCount = count; };
+ uint32 getPipeKnockBackTimer() { return _pipeKnockBackTimer; };
+ void setPipeKnockBackTimer(uint32 timer) { _pipeKnockBackTimer = timer; };
};
#endif
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
index 344dc79fe79..8269a04a383 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
@@ -29,7 +29,8 @@
#include "Util.h"
// these variables aren't used outside of this file, so declare them only here
-uint32 BG_EY_HonorScoreTicks[BG_HONOR_MODE_NUM] = {
+uint32 BG_EY_HonorScoreTicks[BG_HONOR_MODE_NUM] =
+{
260, // normal honor
160 // holiday
};
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
index 026fbccc320..534a40484ce 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
@@ -258,7 +258,8 @@ struct BattlegroundEYPointIconsStruct
};
// x, y, z, o
-const float BG_EY_TriggerPositions[EY_POINTS_MAX][4] = {
+const float BG_EY_TriggerPositions[EY_POINTS_MAX][4] =
+{
{2044.28f, 1729.68f, 1189.96f, 0.017453f}, // FEL_REAVER center
{2048.83f, 1393.65f, 1194.49f, 0.20944f}, // BLOOD_ELF center
{2286.56f, 1402.36f, 1197.11f, 3.72381f}, // DRAENEI_RUINS center
@@ -326,7 +327,7 @@ const BattlegroundEYCapturingPointStruct m_CapturingPointTypes[EY_POINTS_MAX] =
class BattlegroundEYScore : public BattlegroundScore
{
public:
- BattlegroundEYScore () : FlagCaptures(0) {};
+ BattlegroundEYScore() : FlagCaptures(0) {};
virtual ~BattlegroundEYScore() {};
uint32 FlagCaptures;
};
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
index c72fcfdb3a7..47ea9915ac7 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
@@ -47,7 +47,7 @@ BattlegroundIC::BattlegroundIC()
resourceTimer = IC_RESOURCE_TIME;
for (uint8 i = NODE_TYPE_REFINERY; i < MAX_NODE_TYPES; i++)
- nodePoint[i] = nodePointInitial[i];
+ nodePoint[i] = nodePointInitial[i];
siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME;
@@ -359,7 +359,7 @@ void BattlegroundIC::FillInitialWorldStates(WorldPacket& data)
data << uint32(uws) << uint32(1);
}
- for (uint8 i = 0 ; i < MAX_NODE_TYPES ; i++)
+ for (uint8 i = 0; i < MAX_NODE_TYPES; i++)
data << uint32(nodePoint[i].worldStates[nodePoint[i].nodeState]) << uint32(1);
}
@@ -837,6 +837,7 @@ void BattlegroundIC::DestroyGate(Player* player, GameObject* go)
{
case GO_HORDE_GATE_1:
lang_entry = LANG_BG_IC_NORTH_GATE_DESTROYED;
+ break;
case GO_HORDE_GATE_2:
case GO_ALLIANCE_GATE_1:
lang_entry = LANG_BG_IC_WEST_GATE_DESTROYED;
@@ -926,11 +927,11 @@ Transport* BattlegroundIC::CreateTransport(uint32 goEntry, uint32 period)
float x = t->m_WayPoints[0].x;
float y = t->m_WayPoints[0].y;
- float z = t->m_WayPoints[0].z;
+ float z = t->m_WayPoints[0].z;
float o = 1;
// creates the Gameobject
- if (!t->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_MO_TRANSPORT), goEntry, mapid, x, y, z, o, 100, 0))
+ if (!t->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_MO_TRANSPORT), goEntry, mapid, x, y, z, o, 255, 0))
{
delete t;
return NULL;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp
index 98bb704661e..6869a899305 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp
@@ -32,7 +32,7 @@ BattlegroundRV::BattlegroundRV()
StartDelayTimes[BG_STARTING_EVENT_SECOND] = BG_START_DELAY_30S;
StartDelayTimes[BG_STARTING_EVENT_THIRD] = BG_START_DELAY_15S;
StartDelayTimes[BG_STARTING_EVENT_FOURTH] = BG_START_DELAY_NONE;
- //we must set messageIds
+ // we must set messageIds
StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_ARENA_ONE_MINUTE;
StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_ARENA_THIRTY_SECONDS;
StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_ARENA_FIFTEEN_SECONDS;
@@ -46,40 +46,32 @@ BattlegroundRV::~BattlegroundRV()
void BattlegroundRV::PostUpdateImpl(uint32 diff)
{
+ if (GetStatus() != STATUS_IN_PROGRESS)
+ return;
+
if (getTimer() < diff)
{
switch (getState())
{
case BG_RV_STATE_OPEN_FENCES:
- setTimer(BG_RV_PILAR_TO_FIRE_TIMER);
+ // Open fire (only at game start)
+ for (uint8 i = BG_RV_OBJECT_FIRE_1; i <= BG_RV_OBJECT_FIREDOOR_2; ++i)
+ DoorOpen(i);
+ setTimer(BG_RV_CLOSE_FIRE_TIMER);
setState(BG_RV_STATE_CLOSE_FIRE);
break;
case BG_RV_STATE_CLOSE_FIRE:
for (uint8 i = BG_RV_OBJECT_FIRE_1; i <= BG_RV_OBJECT_FIREDOOR_2; ++i)
DoorClose(i);
- setTimer(BG_RV_FIRE_TO_PILAR_TIMER);
- setState(BG_RV_STATE_OPEN_PILARS);
+ // Fire got closed after five seconds, leaves twenty seconds before toggling pillars
+ setTimer(BG_RV_FIRE_TO_PILLAR_TIMER);
+ setState(BG_RV_STATE_SWITCH_PILLARS);
break;
- case BG_RV_STATE_OPEN_PILARS:
+ case BG_RV_STATE_SWITCH_PILLARS:
for (uint8 i = BG_RV_OBJECT_PILAR_1; i <= BG_RV_OBJECT_PULLEY_2; ++i)
DoorOpen(i);
- TogglePillarCollision(false);
- setTimer(BG_RV_PILAR_TO_FIRE_TIMER);
- setState(BG_RV_STATE_OPEN_FIRE);
- break;
- case BG_RV_STATE_OPEN_FIRE:
- // FIXME: after 3.2.0 it's only decorative and should be opened only one time at battle start
- for (uint8 i = BG_RV_OBJECT_FIRE_1; i <= BG_RV_OBJECT_FIREDOOR_2; ++i)
- DoorOpen(i);
- setTimer(BG_RV_FIRE_TO_PILAR_TIMER);
- setState(BG_RV_STATE_CLOSE_PILARS);
- break;
- case BG_RV_STATE_CLOSE_PILARS:
- for (uint8 i = BG_RV_OBJECT_PILAR_1; i <= BG_RV_OBJECT_PULLEY_2; ++i)
- DoorOpen(i);
- TogglePillarCollision(true);
- setTimer(BG_RV_PILAR_TO_FIRE_TIMER);
- setState(BG_RV_STATE_CLOSE_FIRE);
+ TogglePillarCollision();
+ setTimer(BG_RV_PILLAR_SWITCH_TIMER);
break;
}
}
@@ -103,7 +95,9 @@ void BattlegroundRV::StartingEventOpenDoors()
setState(BG_RV_STATE_OPEN_FENCES);
setTimer(BG_RV_FIRST_TIMER);
- TogglePillarCollision(true);
+ // Should be false at first, TogglePillarCollision will do it.
+ SetPillarCollision(true);
+ TogglePillarCollision();
}
void BattlegroundRV::AddPlayer(Player* player)
@@ -227,8 +221,10 @@ bool BattlegroundRV::SetupBattleground()
}
-void BattlegroundRV::TogglePillarCollision(bool apply)
+void BattlegroundRV::TogglePillarCollision()
{
+ bool apply = GetPillarCollision();
+
for (uint8 i = BG_RV_OBJECT_PILAR_1; i <= BG_RV_OBJECT_PILAR_COLLISION_4; ++i)
{
if (GameObject* gob = GetBgMap()->GetGameObject(BgObjects[i]))
@@ -249,4 +245,6 @@ void BattlegroundRV::TogglePillarCollision(bool apply)
gob->SendUpdateToPlayer(player);
}
}
+
+ SetPillarCollision(!apply);
}
\ No newline at end of file
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h
index 1dfd4825c8f..8c5746931e3 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h
@@ -79,12 +79,12 @@ enum BattlegroundRVObjects
enum BattlegroundRVData
{
BG_RV_STATE_OPEN_FENCES,
- BG_RV_STATE_OPEN_PILARS,
- BG_RV_STATE_CLOSE_PILARS,
- BG_RV_STATE_OPEN_FIRE,
+ BG_RV_STATE_SWITCH_PILLARS,
BG_RV_STATE_CLOSE_FIRE,
- BG_RV_FIRE_TO_PILAR_TIMER = 20000,
- BG_RV_PILAR_TO_FIRE_TIMER = 5000,
+
+ BG_RV_PILLAR_SWITCH_TIMER = 25000,
+ BG_RV_FIRE_TO_PILLAR_TIMER = 20000,
+ BG_RV_CLOSE_FIRE_TIMER = 5000,
BG_RV_FIRST_TIMER = 20133,
BG_RV_WORLD_STATE_A = 0xe10,
BG_RV_WORLD_STATE_H = 0xe11,
@@ -120,6 +120,7 @@ class BattlegroundRV : public Battleground
private:
uint32 Timer;
uint32 State;
+ bool PillarCollision;
virtual void PostUpdateImpl(uint32 diff);
@@ -129,6 +130,8 @@ class BattlegroundRV : public Battleground
uint32 getState() { return State; };
void setState(uint32 state) { State = state; };
- void TogglePillarCollision(bool apply);
+ void TogglePillarCollision();
+ bool GetPillarCollision() { return PillarCollision; }
+ void SetPillarCollision(bool apply) { PillarCollision = apply; }
};
#endif
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
index b7792e10ae3..39c6e00946a 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
@@ -37,6 +37,11 @@ BattlegroundSA::BattlegroundSA()
SignaledRoundTwo = false;
SignaledRoundTwoHalfMin = false;
InitSecondRound = false;
+
+ //! This is here to prevent an uninitialised variable warning
+ //! The warning only occurs when SetUpBattleGround fails though.
+ //! In the future this function should be called BEFORE sending initial worldstates.
+ memset(&GraveyardStatus, 0, sizeof(GraveyardStatus));
}
BattlegroundSA::~BattlegroundSA()
@@ -529,16 +534,16 @@ void BattlegroundSA::EventPlayerDamagedGO(Player* /*player*/, GameObject* go, ui
if (eventType == go->GetGOInfo()->building.damagedEvent)
{
- uint32 i = GetGateIDFromDestroyEventID(eventType);
+ uint32 i = getGateIdFromDamagedOrDestroyEventId(eventType);
GateStatus[i] = BG_SA_GATE_DAMAGED;
- uint32 uws = GetWorldStateFromGateID(i);
+ uint32 uws = getWorldStateFromGateId(i);
if (uws)
UpdateWorldState(uws, GateStatus[i]);
}
if (eventType == go->GetGOInfo()->building.destroyedEvent)
{
- if (go->GetGOInfo()->building.destroyedEvent == 19837)
+ if (go->GetGOInfo()->building.destroyedEvent == BG_SA_EVENT_ANCIENT_GATE_DESTROYED)
SendWarningToAll(LANG_BG_SA_CHAMBER_BREACHED);
else
SendWarningToAll(LANG_BG_SA_WAS_DESTROYED, go->GetGOInfo()->name.c_str());
@@ -598,7 +603,7 @@ void BattlegroundSA::DemolisherStartState(bool start)
void BattlegroundSA::DestroyGate(Player* player, GameObject* go)
{
- uint32 i = GetGateIDFromDestroyEventID(go->GetGOInfo()->building.destroyedEvent);
+ uint32 i = getGateIdFromDamagedOrDestroyEventId(go->GetGOInfo()->building.destroyedEvent);
if (!GateStatus[i])
return;
@@ -607,7 +612,7 @@ void BattlegroundSA::DestroyGate(Player* player, GameObject* go)
if (g->GetGOValue()->Building.Health == 0)
{
GateStatus[i] = BG_SA_GATE_DESTROYED;
- uint32 uws = GetWorldStateFromGateID(i);
+ uint32 uws = getWorldStateFromGateId(i);
if (uws)
UpdateWorldState(uws, GateStatus[i]);
bool rewardHonor = true;
@@ -715,8 +720,13 @@ void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source)
DelCreature(BG_SA_MAXNPC + i);
GraveyardStatus[i] = Source->GetTeamId();
- WorldSafeLocsEntry const* sg = NULL;
- sg = sWorldSafeLocsStore.LookupEntry(BG_SA_GYEntries[i]);
+ WorldSafeLocsEntry const* sg = sWorldSafeLocsStore.LookupEntry(BG_SA_GYEntries[i]);
+ if (!sg)
+ {
+ sLog->outError("BattlegroundSA::CaptureGraveyard: non-existant GY entry: %u", BG_SA_GYEntries[i]);
+ return;
+ }
+
AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], (GraveyardStatus[i] == TEAM_ALLIANCE? ALLIANCE : HORDE));
uint32 npc = 0;
uint32 flag = 0;
@@ -776,7 +786,7 @@ void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source)
SendWarningToAll(LANG_BG_SA_H_GY_SOUTH);
break;
default:
- ASSERT(0);
+ ASSERT(false);
break;
};
}
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h
index 76a772ff978..c18806490f2 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h
@@ -30,8 +30,8 @@ class BattlegroundSAScore : public BattlegroundScore
uint8 gates_destroyed;
};
-#define BG_SA_FLAG_AMOUNT 3
-#define BG_SA_DEMOLISHER_AMOUNT 4
+#define BG_SA_FLAG_AMOUNT 3
+#define BG_SA_DEMOLISHER_AMOUNT 4
enum BG_SA_Status
{
@@ -45,45 +45,66 @@ enum BG_SA_Status
enum BG_SA_GateState
{
- BG_SA_GATE_OK = 1,
- BG_SA_GATE_DAMAGED = 2,
- BG_SA_GATE_DESTROYED = 3
+ BG_SA_GATE_OK = 1,
+ BG_SA_GATE_DAMAGED = 2,
+ BG_SA_GATE_DESTROYED = 3
+};
+
+enum BG_SA_EventIdGate
+{
+ BG_SA_EVENT_BLUE_GATE_DAMAGED = 19040,
+ BG_SA_EVENT_BLUE_GATE_DESTROYED = 19045,
+
+ BG_SA_EVENT_GREEN_GATE_DAMAGED = 19041,
+ BG_SA_EVENT_GREEN_GATE_DESTROYED = 19046,
+
+ BG_SA_EVENT_RED_GATE_DAMAGED = 19042,
+ BG_SA_EVENT_RED_GATE_DESTROYED = 19047,
+
+ BG_SA_EVENT_PURPLE_GATE_DAMAGED = 19043,
+ BG_SA_EVENT_PURPLE_GATE_DESTROYED = 19048,
+
+ BG_SA_EVENT_YELLOW_GATE_DAMAGED = 19044,
+ BG_SA_EVENT_YELLOW_GATE_DESTROYED = 19049,
+
+ BG_SA_EVENT_ANCIENT_GATE_DAMAGED = 19836,
+ BG_SA_EVENT_ANCIENT_GATE_DESTROYED = 19837
};
enum BG_SA_Timers
{
- BG_SA_BOAT_START = 60*IN_MILLISECONDS,
- BG_SA_WARMUPLENGTH = 120*IN_MILLISECONDS,
- BG_SA_ROUNDLENGTH = 600*IN_MILLISECONDS
+ BG_SA_BOAT_START = 60 * IN_MILLISECONDS,
+ BG_SA_WARMUPLENGTH = 120 * IN_MILLISECONDS,
+ BG_SA_ROUNDLENGTH = 600 * IN_MILLISECONDS
};
enum BG_SA_WorldStates
{
- BG_SA_TIMER_MINS = 3559,
- BG_SA_TIMER_SEC_TENS = 3560,
- BG_SA_TIMER_SEC_DECS = 3561,
- BG_SA_ALLY_ATTACKS = 4352,
- BG_SA_HORDE_ATTACKS = 4353,
- BG_SA_PURPLE_GATEWS = 3614,
- BG_SA_RED_GATEWS = 3617,
- BG_SA_BLUE_GATEWS = 3620,
- BG_SA_GREEN_GATEWS = 3623,
- BG_SA_YELLOW_GATEWS = 3638,
- BG_SA_ANCIENT_GATEWS = 3849,
- BG_SA_LEFT_GY_ALLIANCE = 3635,
- BG_SA_RIGHT_GY_ALLIANCE = 3636,
- BG_SA_CENTER_GY_ALLIANCE = 3637,
- BG_SA_RIGHT_ATT_TOKEN_ALL = 3627,
- BG_SA_LEFT_ATT_TOKEN_ALL = 3626,
- BG_SA_LEFT_ATT_TOKEN_HRD = 3629,
- BG_SA_RIGHT_ATT_TOKEN_HRD = 3628,
- BG_SA_HORDE_DEFENCE_TOKEN = 3631,
- BG_SA_ALLIANCE_DEFENCE_TOKEN = 3630,
- BG_SA_RIGHT_GY_HORDE = 3632,
- BG_SA_LEFT_GY_HORDE = 3633,
- BG_SA_CENTER_GY_HORDE = 3634,
- BG_SA_BONUS_TIMER = 0xdf3,
- BG_SA_ENABLE_TIMER = 3564,
+ BG_SA_TIMER_MINS = 3559,
+ BG_SA_TIMER_SEC_TENS = 3560,
+ BG_SA_TIMER_SEC_DECS = 3561,
+ BG_SA_ALLY_ATTACKS = 4352,
+ BG_SA_HORDE_ATTACKS = 4353,
+ BG_SA_PURPLE_GATEWS = 3614,
+ BG_SA_RED_GATEWS = 3617,
+ BG_SA_BLUE_GATEWS = 3620,
+ BG_SA_GREEN_GATEWS = 3623,
+ BG_SA_YELLOW_GATEWS = 3638,
+ BG_SA_ANCIENT_GATEWS = 3849,
+ BG_SA_LEFT_GY_ALLIANCE = 3635,
+ BG_SA_RIGHT_GY_ALLIANCE = 3636,
+ BG_SA_CENTER_GY_ALLIANCE = 3637,
+ BG_SA_RIGHT_ATT_TOKEN_ALL = 3627,
+ BG_SA_LEFT_ATT_TOKEN_ALL = 3626,
+ BG_SA_LEFT_ATT_TOKEN_HRD = 3629,
+ BG_SA_RIGHT_ATT_TOKEN_HRD = 3628,
+ BG_SA_HORDE_DEFENCE_TOKEN = 3631,
+ BG_SA_ALLIANCE_DEFENCE_TOKEN = 3630,
+ BG_SA_RIGHT_GY_HORDE = 3632,
+ BG_SA_LEFT_GY_HORDE = 3633,
+ BG_SA_CENTER_GY_HORDE = 3634,
+ BG_SA_BONUS_TIMER = 0xdf3,
+ BG_SA_ENABLE_TIMER = 3564,
};
enum npc
@@ -122,14 +143,14 @@ enum BG_SA_NPCs
enum BG_SA_Boat
{
- BG_SA_BOAT_ONE_A =193182,
- BG_SA_BOAT_TWO_H =193183,
- BG_SA_BOAT_ONE_H =193184,
- BG_SA_BOAT_TWO_A =193185,
+ BG_SA_BOAT_ONE_A = 193182,
+ BG_SA_BOAT_TWO_H = 193183,
+ BG_SA_BOAT_ONE_H = 193184,
+ BG_SA_BOAT_TWO_A = 193185,
};
-const uint32 BG_SA_NpcEntries[BG_SA_MAXNPC] =
- {
+uint32 const BG_SA_NpcEntries[BG_SA_MAXNPC] =
+{
NPC_ANTI_PERSONNAL_CANNON,
NPC_ANTI_PERSONNAL_CANNON,
NPC_ANTI_PERSONNAL_CANNON,
@@ -140,25 +161,25 @@ const uint32 BG_SA_NpcEntries[BG_SA_MAXNPC] =
NPC_ANTI_PERSONNAL_CANNON,
NPC_ANTI_PERSONNAL_CANNON,
NPC_ANTI_PERSONNAL_CANNON,
- //4 beach demolishers
+ // 4 beach demolishers
NPC_DEMOLISHER_SA,
NPC_DEMOLISHER_SA,
NPC_DEMOLISHER_SA,
NPC_DEMOLISHER_SA,
- //Triggers
+ // Triggers
23472,
23472,
23472,
23472,
23472,
- //Used Demolisher Salesman
+ // Used Demolisher Salesman
NPC_RIGGER_SPARKLIGHT,
NPC_GORGRIL_RIGSPARK
- };
+};
-const float BG_SA_NpcSpawnlocs[BG_SA_MAXNPC + BG_SA_DEMOLISHER_AMOUNT][4] =
+float const BG_SA_NpcSpawnlocs[BG_SA_MAXNPC + BG_SA_DEMOLISHER_AMOUNT][4] =
{
- //Cannons
+ // Cannons
{ 1436.429f, 110.05f, 41.407f, 5.4f },
{ 1404.9023f, 84.758f, 41.183f, 5.46f },
{ 1068.693f, -86.951f, 93.81f, 0.02f },
@@ -169,21 +190,21 @@ const float BG_SA_NpcSpawnlocs[BG_SA_MAXNPC + BG_SA_DEMOLISHER_AMOUNT][4] =
{ 1249.634f, -224.189f, 66.72f, 0.635f },
{ 1236.213f, 92.287f, 64.965f, 5.751f },
{ 1215.11f, 57.772f, 64.739f, 5.78f },
- //Demolishers
+ // Demolishers
{ 1611.597656f, -117.270073f, 8.719355f, 2.513274f},
{ 1575.562500f, -158.421875f, 5.024450f, 2.129302f},
{ 1618.047729f, 61.424641f, 7.248210f, 3.979351f},
{ 1575.103149f, 98.873344f, 2.830360f, 3.752458f},
- //trigger
+ // Triggers
{ 1453.49f, -250.453f, 30.896f, 4.2883f},
{ 1377.05f, 97.036f, 30.8605f, 2.46539f},
{ 1186.05f, 58.8048f, 56.5491f, 2.75992f},
{ 1042.83f, -72.839f, 84.8145f, 3.58615f},
{ 1233.62f, -250.49f, 55.4036f, 3.7016f},
- //Npcs
+ // Npcs
{ 1348.644165f, -298.786469f, 31.080130f, 1.710423f},
{ 1358.191040f, 195.527786f, 31.018187f, 4.171337f},
- //Demolishers2
+ // Demolishers 2
{ 1371.055786f, -317.071136f, 35.007359f, 1.947460f},
{ 1424.034912f, -260.195190f, 31.084425f, 2.820013f},
{ 1353.139893f, 223.745438f, 35.265411f, 4.343684f},
@@ -221,7 +242,7 @@ enum BG_SA_Objects
BG_SA_MAXOBJ = BG_SA_BOMB+68
};
-const float BG_SA_ObjSpawnlocs[BG_SA_MAXOBJ][4] =
+float const BG_SA_ObjSpawnlocs[BG_SA_MAXOBJ][4] =
{
{ 1411.57f, 108.163f, 28.692f, 5.441f },
{ 1055.452f, -108.1f, 82.134f, 0.034f },
@@ -230,30 +251,30 @@ const float BG_SA_ObjSpawnlocs[BG_SA_MAXOBJ][4] =
{ 1214.681f, 81.21f, 53.413f, 5.745f },
{ 878.555f, -108.2f, 117.845f, 0.0f },
{ 836.5f, -108.8f, 120.219f, 0.0f },
- //Ships
+ // Ships
{ 2679.696777f, -826.891235f, 3.712860f, 5.78367f}, //rot2 1 rot3 0.0002f
{ 2574.003662f, 981.261475f, 2.603424f, 0.807696f},
- //Sigils
+ // Sigils
{ 1414.054f, 106.72f, 41.442f, 5.441f },
{ 1060.63f, -107.8f, 94.7f, 0.034f },
{ 1433.383f, -216.4f, 43.642f, 0.9736f },
{ 1230.75f, -210.724f, 67.611f, 0.5023f },
{ 1217.8f, 79.532f, 66.58f, 5.745f },
- //Flagpoles
+ // Flagpoles
{ 1215.114258f, -65.711861f, 70.084267f, -3.124123f},
{1338.863892f, -153.336533f, 30.895121f, -2.530723f},
{1309.124268f, 9.410645f, 30.893402f, -1.623156f},
- //Flags
+ // Flags
{ 1215.108032f, -65.715767f, 70.084267f, -3.124123f},
{ 1338.859253f, -153.327316f, 30.895077f, -2.530723f},
{ 1309.192017f, 9.416233f, 30.893402f, 1.518436f},
- //Portal
+ // Portal
{1468.380005f, -225.798996f, 30.896200f, 0.0f}, //blue
{1394.270020f, 72.551399f, 31.054300f, 0.0f}, //green
{1065.260010f, -89.79501f, 81.073402f, 0.0f}, //yellow
{1216.069946f, 47.904301f, 54.278198f, 0.0f}, //purple
{1255.569946f, -233.548996f, 56.43699f, 0.0f}, //red
- //Bombs
+ // Bombs
{1333.45f, 211.354f, 31.0538f, 5.03666f},
{1334.29f, 209.582f, 31.0532f, 1.28088f},
{1332.72f, 210.049f, 31.0532f, 1.28088f},
@@ -337,7 +358,7 @@ const float BG_SA_ObjSpawnlocs[BG_SA_MAXOBJ][4] =
* to get horde ones.
*/
-const uint32 BG_SA_ObjEntries[BG_SA_MAXOBJ + BG_SA_FLAG_AMOUNT] =
+uint32 const BG_SA_ObjEntries[BG_SA_MAXOBJ + BG_SA_FLAG_AMOUNT] =
{
190722,
190727,
@@ -367,7 +388,7 @@ const uint32 BG_SA_ObjEntries[BG_SA_MAXOBJ + BG_SA_FLAG_AMOUNT] =
190753
};
-const uint32 BG_SA_Factions[2] =
+uint32 const BG_SA_Factions[2] =
{
1732,
1735,
@@ -392,13 +413,13 @@ const uint32 BG_SA_GYEntries[BG_SA_MAX_GY] =
1348,
};
-const float BG_SA_GYOrientation[BG_SA_MAX_GY] =
+float const BG_SA_GYOrientation[BG_SA_MAX_GY] =
{
6.202f,
- 1.926f, //right capturable GY
- 3.917f, //left capturable GY
- 3.104f, //center, capturable
- 6.148f, //defender last GY
+ 1.926f, // right capturable GY
+ 3.917f, // left capturable GY
+ 3.104f, // center, capturable
+ 6.148f, // defender last GY
};
struct BG_SA_RoundScore
@@ -443,34 +464,60 @@ class BattlegroundSA : public Battleground
/// Called when a player use a gamobject (relic)
virtual void EventPlayerUsedGO(Player* Source, GameObject* object);
/// Return gate id, relative to bg data, according to gameobject id
- uint32 GetGateIDFromDestroyEventID(uint32 id)
+ uint32 getGateIdFromDamagedOrDestroyEventId(uint32 id)
{
- uint32 i = 0;
switch (id)
{
- case 19046: i = BG_SA_GREEN_GATE; break; //Green gate destroyed
- case 19045: i = BG_SA_BLUE_GATE; break; //blue gate
- case 19047: i = BG_SA_RED_GATE; break; //red gate
- case 19048: i = BG_SA_PURPLE_GATE; break; //purple gate
- case 19049: i = BG_SA_YELLOW_GATE; break; //yellow gate
- case 19837: i = BG_SA_ANCIENT_GATE; break; //ancient gate
+ // Green gate
+ case BG_SA_EVENT_GREEN_GATE_DAMAGED:
+ case BG_SA_EVENT_GREEN_GATE_DESTROYED:
+ return BG_SA_GREEN_GATE;
+ // Blue gate
+ case BG_SA_EVENT_BLUE_GATE_DAMAGED:
+ case BG_SA_EVENT_BLUE_GATE_DESTROYED:
+ return BG_SA_BLUE_GATE;
+ // Red gate
+ case BG_SA_EVENT_RED_GATE_DAMAGED:
+ case BG_SA_EVENT_RED_GATE_DESTROYED:
+ return BG_SA_RED_GATE;
+ // Purple gate
+ case BG_SA_EVENT_PURPLE_GATE_DAMAGED:
+ case BG_SA_EVENT_PURPLE_GATE_DESTROYED:
+ return BG_SA_PURPLE_GATE;
+ // Yellow gate
+ case BG_SA_EVENT_YELLOW_GATE_DAMAGED:
+ case BG_SA_EVENT_YELLOW_GATE_DESTROYED:
+ return BG_SA_YELLOW_GATE;
+ // Ancient gate
+ case BG_SA_EVENT_ANCIENT_GATE_DAMAGED:
+ case BG_SA_EVENT_ANCIENT_GATE_DESTROYED:
+ return BG_SA_ANCIENT_GATE;
+ default:
+ break;
}
- return i;
+ return 0;
}
/// Return worldstate id, according to door id
- uint32 GetWorldStateFromGateID(uint32 id)
+ uint32 getWorldStateFromGateId(uint32 id)
{
- uint32 uws = 0;
switch (id)
{
- case BG_SA_GREEN_GATE: uws = BG_SA_GREEN_GATEWS; break;
- case BG_SA_YELLOW_GATE: uws = BG_SA_YELLOW_GATEWS; break;
- case BG_SA_BLUE_GATE: uws = BG_SA_BLUE_GATEWS; break;
- case BG_SA_RED_GATE: uws = BG_SA_RED_GATEWS; break;
- case BG_SA_PURPLE_GATE: uws = BG_SA_PURPLE_GATEWS; break;
- case BG_SA_ANCIENT_GATE: uws = BG_SA_ANCIENT_GATEWS; break;
+ case BG_SA_GREEN_GATE:
+ return BG_SA_GREEN_GATEWS;
+ case BG_SA_YELLOW_GATE:
+ return BG_SA_YELLOW_GATEWS;
+ case BG_SA_BLUE_GATE:
+ return BG_SA_BLUE_GATEWS;
+ case BG_SA_RED_GATE:
+ return BG_SA_RED_GATEWS;
+ case BG_SA_PURPLE_GATE:
+ return BG_SA_PURPLE_GATEWS;
+ case BG_SA_ANCIENT_GATE:
+ return BG_SA_ANCIENT_GATEWS;
+ default:
+ break;
}
- return uws;
+ return 0;
}
/// Called on battleground ending
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
index 9650cf11a8c..d100dc645a2 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
@@ -37,7 +37,8 @@ enum BG_WSG_Rewards
BG_WSG_REWARD_NUM
};
-uint32 BG_WSG_Honor[BG_HONOR_MODE_NUM][BG_WSG_REWARD_NUM] = {
+uint32 BG_WSG_Honor[BG_HONOR_MODE_NUM][BG_WSG_REWARD_NUM] =
+{
{20, 40, 40}, // normal honor
{60, 40, 80} // holiday
};
@@ -51,6 +52,7 @@ BattlegroundWS::BattlegroundWS()
StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_WS_START_ONE_MINUTE;
StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_WS_START_HALF_MINUTE;
StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_WS_HAS_BEGUN;
+ _flagDebuffState = 0;
}
BattlegroundWS::~BattlegroundWS()
@@ -177,20 +179,20 @@ void BattlegroundWS::StartingEventCloseDoors()
void BattlegroundWS::StartingEventOpenDoors()
{
- for (uint32 i = BG_WS_OBJECT_DOOR_A_1; i <= BG_WS_OBJECT_DOOR_A_4; ++i)
+ for (uint32 i = BG_WS_OBJECT_DOOR_A_1; i <= BG_WS_OBJECT_DOOR_A_6; ++i)
DoorOpen(i);
- for (uint32 i = BG_WS_OBJECT_DOOR_H_1; i <= BG_WS_OBJECT_DOOR_H_2; ++i)
+ for (uint32 i = BG_WS_OBJECT_DOOR_H_1; i <= BG_WS_OBJECT_DOOR_H_4; ++i)
DoorOpen(i);
+ for (uint32 i = BG_WS_OBJECT_A_FLAG; i <= BG_WS_OBJECT_BERSERKBUFF_2; ++i)
+ SpawnBGObject(i, RESPAWN_IMMEDIATELY);
+
SpawnBGObject(BG_WS_OBJECT_DOOR_A_5, RESPAWN_ONE_DAY);
SpawnBGObject(BG_WS_OBJECT_DOOR_A_6, RESPAWN_ONE_DAY);
SpawnBGObject(BG_WS_OBJECT_DOOR_H_3, RESPAWN_ONE_DAY);
SpawnBGObject(BG_WS_OBJECT_DOOR_H_4, RESPAWN_ONE_DAY);
- for (uint32 i = BG_WS_OBJECT_A_FLAG; i <= BG_WS_OBJECT_BERSERKBUFF_2; ++i)
- SpawnBGObject(i, RESPAWN_IMMEDIATELY);
-
- // players joining later are not egible
+ // players joining later are not eligibles
StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, WS_EVENT_START_BATTLE);
}
@@ -436,8 +438,8 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* Source, GameObject* target
ChatMsg type = CHAT_MSG_BG_SYSTEM_NEUTRAL;
//alliance flag picked up from base
- if (Source->GetTeam() == HORDE && this->GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_BASE
- && this->BgObjects[BG_WS_OBJECT_A_FLAG] == target_obj->GetGUID())
+ if (Source->GetTeam() == HORDE && GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_BASE
+ && BgObjects[BG_WS_OBJECT_A_FLAG] == target_obj->GetGUID())
{
message_id = LANG_BG_WS_PICKEDUP_AF;
type = CHAT_MSG_BG_SYSTEM_HORDE;
@@ -455,8 +457,8 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* Source, GameObject* target
}
//horde flag picked up from base
- if (Source->GetTeam() == ALLIANCE && this->GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_BASE
- && this->BgObjects[BG_WS_OBJECT_H_FLAG] == target_obj->GetGUID())
+ if (Source->GetTeam() == ALLIANCE && GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_BASE
+ && BgObjects[BG_WS_OBJECT_H_FLAG] == target_obj->GetGUID())
{
message_id = LANG_BG_WS_PICKEDUP_HF;
type = CHAT_MSG_BG_SYSTEM_ALLIANCE;
@@ -474,7 +476,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* Source, GameObject* target
}
//Alliance flag on ground(not in base) (returned or picked up again from ground!)
- if (GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_GROUND && Source->IsWithinDistInMap(target_obj, 10))
+ if (GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_GROUND && Source->IsWithinDistInMap(target_obj, 10) && target_obj->GetGOInfo()->entry == BG_OBJECT_A_FLAG_GROUND_WS_ENTRY)
{
if (Source->GetTeam() == ALLIANCE)
{
@@ -508,7 +510,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* Source, GameObject* target
}
//Horde flag on ground(not in base) (returned or picked up again)
- if (GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_GROUND && Source->IsWithinDistInMap(target_obj, 10))
+ if (GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_GROUND && Source->IsWithinDistInMap(target_obj, 10) && target_obj->GetGOInfo()->entry == BG_OBJECT_H_FLAG_GROUND_WS_ENTRY)
{
if (Source->GetTeam() == HORDE)
{
diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt
index 1f680f6e9b0..8b81a48c33b 100644
--- a/src/server/game/CMakeLists.txt
+++ b/src/server/game/CMakeLists.txt
@@ -107,7 +107,6 @@ set(game_STAT_SRCS
include_directories(
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/dep/g3dlite/include
- ${CMAKE_SOURCE_DIR}/dep/mersennetwister
${CMAKE_SOURCE_DIR}/dep/SFMT
${CMAKE_SOURCE_DIR}/dep/zlib
${CMAKE_SOURCE_DIR}/src/server/collision
diff --git a/src/server/game/Calendar/Calendar.cpp b/src/server/game/Calendar/Calendar.cpp
index 2c4ad943dd6..139e63614cc 100755
--- a/src/server/game/Calendar/Calendar.cpp
+++ b/src/server/game/Calendar/Calendar.cpp
@@ -15,3 +15,85 @@
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*/
+
+#include "Player.h"
+#include "Calendar.h"
+
+std::string CalendarInvite::GetDebugString() const
+{
+ std::ostringstream data;
+
+ data << "CalendarInvite::"
+ << " inviteId: " << _inviteId
+ << " EventId: " << _eventId
+ << " Status: " << uint32(_status)
+ << " Invitee: " << _invitee
+ << " Sender: " << _senderGUID
+ << " Rank: " << uint32(_rank)
+ << " Text: " << _text;
+
+ return data.str();
+}
+
+void CalendarInvite::Init()
+{
+ _eventId = 0;
+ _invitee = 0;
+ _senderGUID = 0;
+ _statusTime = 0;
+ _status = CALENDAR_STATUS_INVITED; // default (0)?
+ _rank = CALENDAR_RANK_PLAYER;
+ _text = "";
+}
+
+std::string CalendarEvent::GetDebugString() const
+{
+ std::ostringstream data;
+
+ data << "CalendarEvent::"
+ << " EventId: " << _eventId
+ << " Title: " << _title
+ << " Description" << _description
+ << " Type: " << uint32(_type)
+ << " Max Invites: " << _maxInvites
+ << " Creator: " << _creatorGUID
+ << " Flags: " << _flags
+ << " Guild: " << _guildId
+ << " Time: " << _eventTime
+ << " Time2: " << _timezoneTime
+ << " Repeatable: " << uint32(_repeatable)
+ << " DungeonId: " << _dungeonId;
+
+ return data.str();
+}
+
+void CalendarEvent::Init()
+{
+ _creatorGUID = 0;
+ _guildId = 0;
+ _type = CALENDAR_TYPE_OTHER;
+ _dungeonId = -1;
+ _maxInvites = 0;
+ _eventTime = 0;
+ _flags = 0;
+ _repeatable = false;
+ _timezoneTime = 0;
+ _title = "";
+ _description = "";
+
+}
+
+std::string CalendarAction::GetDebugString() const
+{
+ std::ostringstream data;
+
+ data << "CalendarAction::"
+ << " Action: " << GetAction()
+ << " Guid: " << GetPlayer()->GetGUID()
+ << " Invite Id: " << GetInviteId()
+ << " Extra data: " << GetExtraData()
+ << " Event: " << Event.GetDebugString()
+ << " Invite: " << Invite.GetDebugString();
+
+ return data.str();
+}
diff --git a/src/server/game/Calendar/Calendar.h b/src/server/game/Calendar/Calendar.h
index dfc88e477f9..a2d2dc2ffb7 100755
--- a/src/server/game/Calendar/Calendar.h
+++ b/src/server/game/Calendar/Calendar.h
@@ -19,8 +19,171 @@
#ifndef TRINITY_CALENDAR_H
#define TRINITY_CALENDAR_H
-class Calendar
-{
+#include "Errors.h"
+#include "SharedDefines.h"
+#include