aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-04-11 01:54:09 -0500
committermegamage <none@none>2009-04-11 01:54:09 -0500
commita5e7907ff5e6c1510f85513f5ec16f21336d5a45 (patch)
tree028ffd3608390c65127a07fab7f4fcaf733232b4 /src
parent6c50ac907a97128b3da83f500669ec5d878e09fb (diff)
*Add some WLK scripts. Source: Frozen DB. Many of them are just placeholders, so none of them are enabled. Please feel free to modify/replace them.
*sql files are pushed in bindings/scripts/sql. But please do not apply them. They are only for development use. --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/CMakeLists.txt86
-rw-r--r--src/bindings/scripts/VC90/90ScriptDev2.vcproj389
-rw-r--r--src/bindings/scripts/scripts/custom/npc_acherus_taxi.cpp39
-rw-r--r--src/bindings/scripts/scripts/custom/npc_wyrmresttempel_taxi.cpp116
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_anub_arak.cpp92
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_hadronox.cpp78
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_krik_thir.cpp92
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/def_azjol-nerub.h4
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/instance_azjol-nerub.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_aminitar.cpp59
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_jedoga.cpp85
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_nadox.cpp89
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_taldaram.cpp83
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_volazj.cpp91
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/def_ahnkahet.h4
-rw-r--r--src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/instance_ahnkahet.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains536
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/.instance_black_temple.cpp-s8inyu347
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_epoch.cpp86
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp123
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_meathook.cpp138
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_salramm.cpp152
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/def_culling_of_stratholme.h4
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/draktharon_keep/boss_dred.cpp56
-rw-r--r--src/bindings/scripts/scripts/zone/draktharon_keep/boss_novos.cpp75
-rw-r--r--src/bindings/scripts/scripts/zone/draktharon_keep/boss_tharon_ja.cpp88
-rw-r--r--src/bindings/scripts/scripts/zone/draktharon_keep/boss_trollgore.cpp75
-rw-r--r--src/bindings/scripts/scripts/zone/draktharon_keep/def_drak_tharon_keep.h4
-rw-r--r--src/bindings/scripts/scripts/zone/draktharon_keep/instance_drak_tharon_keep.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/gundrak/boss_drakkari_colossus.cpp55
-rw-r--r--src/bindings/scripts/scripts/zone/gundrak/boss_eck.cpp65
-rw-r--r--src/bindings/scripts/scripts/zone/gundrak/boss_gal_darah.cpp85
-rw-r--r--src/bindings/scripts/scripts/zone/gundrak/boss_moorabi.cpp88
-rw-r--r--src/bindings/scripts/scripts/zone/gundrak/boss_slad_ran.cpp95
-rw-r--r--src/bindings/scripts/scripts/zone/gundrak/def_gundrak.h4
-rw-r--r--src/bindings/scripts/scripts/zone/gundrak/instance_gundrak.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/boss_malygos.cpp170
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/def_eye_of_eternity.h4
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/instance_eye_of_eternity.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp149
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp89
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp118
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp90
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/commander_kolurg.cpp57
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/commander_stoutbeard.cpp63
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/def_nexus.h35
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/instance_nexus.cpp158
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/oculus/boss_drakos.cpp82
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/oculus/boss_eregos.cpp104
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/oculus/boss_urom.cpp87
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/oculus/boss_varos.cpp85
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/oculus/def_oculus.h4
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/oculus/instance_oculus.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp300
-rw-r--r--src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h4
-rw-r--r--src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp94
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_ionar.cpp114
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp86
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_volkhan.cpp128
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/def_halls_of_lightning.h4
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/instance_halls_of_lightning.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_krystallus.cpp73
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_maiden_of_grief.cpp81
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_sjonnir.cpp83
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/def_halls_of_stone.h4
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/instance_halls_of_stone.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp97
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar.cpp106
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp96
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_keep.h10
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_keep.cpp98
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp78
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_skadi.cpp89
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_svala.cpp83
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_ymiron.cpp85
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/def_pinnacle.h4
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/instance_pinnacle.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/vault_of_archavon/boss_archavon.cpp93
-rw-r--r--src/bindings/scripts/scripts/zone/vault_of_archavon/def_vault_of_archavon.h4
-rw-r--r--src/bindings/scripts/scripts/zone/vault_of_archavon/instance_vault_of_archavon.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/boss_cyanigosa.cpp82
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/boss_erekem.cpp82
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/boss_ichoron.cpp81
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/boss_lavanthor.cpp52
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/boss_moragg.cpp50
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/boss_xevozz.cpp82
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/boss_zuramat.cpp82
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/def_violet_hold.h4
-rw-r--r--src/bindings/scripts/scripts/zone/violet_hold/instance_violet_hold.cpp21
-rw-r--r--src/bindings/scripts/sql/WotLK/npc_taxi.sql10
-rw-r--r--src/bindings/scripts/sql/WotLK/script_texts_wotlk.sql530
-rw-r--r--src/bindings/scripts/sql/WotLK/wotlk_bosses.sql124
94 files changed, 7918 insertions, 26 deletions
diff --git a/src/bindings/scripts/CMakeLists.txt b/src/bindings/scripts/CMakeLists.txt
index 13f3a57c658..331561e1784 100644
--- a/src/bindings/scripts/CMakeLists.txt
+++ b/src/bindings/scripts/CMakeLists.txt
@@ -387,6 +387,92 @@ SET(trinityscript_LIB_SRCS
scripts/zone/zulgurub/boss_wushoolay.cpp
scripts/zone/zulgurub/def_zulgurub.h
scripts/zone/zulgurub/instance_zulgurub.cpp
+ scripts/zone/utgarde_keep/utgarde_keep/instance_keep.cpp
+ scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp
+ scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp
+ scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp
+ scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar.cpp
+ scripts/zone/utgarde_keep/utgarde_keep/def_keep.h
+ scripts/zone/utgarde_keep/utgarde_pinnacle/instance_pinnacle.cpp
+ scripts/zone/utgarde_keep/utgarde_pinnacle/boss_skadi.cpp
+ scripts/zone/utgarde_keep/utgarde_pinnacle/boss_ymiron.cpp
+ scripts/zone/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp
+ scripts/zone/utgarde_keep/utgarde_pinnacle/boss_svala.cpp
+ scripts/zone/utgarde_keep/utgarde_pinnacle/def_pinnacle.h
+ scripts/zone/nexus/nexus/instance_nexus.cpp
+ scripts/zone/nexus/nexus/boss_magus_telestra.cpp
+ scripts/zone/nexus/nexus/boss_anomalus.cpp
+ scripts/zone/nexus/nexus/boss_ormorok.cpp
+ scripts/zone/nexus/nexus/boss_keristrasza.cpp
+ scripts/zone/nexus/nexus/commander_stoutbeard.cpp
+ scripts/zone/nexus/nexus/commander_kolurg.cpp
+ scripts/zone/nexus/nexus/def_nexus.h
+ scripts/zone/nexus/oculus/instance_oculus.cpp
+ scripts/zone/nexus/oculus/boss_drakos.cpp
+ scripts/zone/nexus/oculus/boss_urom.cpp
+ scripts/zone/nexus/oculus/boss_varos.cpp
+ scripts/zone/nexus/oculus/boss_eregos.cpp
+ scripts/zone/nexus/oculus/def_oculus.h
+ scripts/zone/azjol_nerub/azjol-nerub/instance_azjol-nerub.cpp
+ scripts/zone/azjol-nerub/azjol-nerub/boss_krik_thir.cpp
+ scripts/zone/azjol-nerub/azjol-nerub/boss_hadronox.cpp
+ scripts/zone/azjol-nerub/azjol-nerub/boss_anub_arak.cpp
+ scripts/zone/azjol-nerub/azjol-nerub/def_azjol-nerub.h
+ scripts/zone/azjol-nerub/ahnkahet/instance_ahnkahet.cpp
+ scripts/zone/azjol-nerub/ahnkahet/boss_taldaram.cpp
+ scripts/zone/azjol-nerub/ahnkahet/boss_nadox.cpp
+ scripts/zone/azjol-nerub/ahnkahet/boss_jedoga.cpp
+ scripts/zone/azjol-nerub/ahnkahet/boss_volazj.cpp
+ scripts/zone/azjol-nerub/ahnkahet/boss_aminitar.cpp
+ scripts/zone/azjol-nerub/ahnkahet/def_ahnkahet.h
+ scripts/zone/draktharon_keep/instance_draktharon_keep.cpp
+ scripts/zone/draktharon_keep/boss_trollgore.cpp
+ scripts/zone/draktharon_keep/boss_novos.cpp
+ scripts/zone/draktharon_keep/boss_dred.cpp
+ scripts/zone/draktharon_keep/boss_tharon_ja.cpp
+ scripts/zone/draktharon_keep/def_draktharon_keep.h
+ scripts/zone/violet_hold/instance_violet_hold.cpp
+ scripts/zone/violet_hold/boss_cyanigosa.cpp
+ scripts/zone/violet_hold/boss_erekem.cpp
+ scripts/zone/violet_hold/boss_ichoron.cpp
+ scripts/zone/violet_hold/boss_lavanthor.cpp
+ scripts/zone/violet_hold/boss_moragg.cpp
+ scripts/zone/violet_hold/boss_xevozz.cpp
+ scripts/zone/violet_hold/boss_zuramat.cpp
+ scripts/zone/violet_hold/def_violet_hold.h
+ scripts/zone/gundrak/instance_gundrak.cpp
+ scripts/zone/gundrak/boss_slad_ran.cpp
+ scripts/zone/gundrak/boss_moorabi.cpp
+ scripts/zone/gundrak/boss_drakkari_colossus.cpp
+ scripts/zone/gundrak/boss_gal_darah.cpp
+ scripts/zone/gundrak/boss_eck.cpp
+ scripts/zone/gundrak/def_gundrak.h
+ scripts/zone/ulduar/halls_of_stone/instance_halls_of_stone.cpp
+ scripts/zone/ulduar/halls_of_stone/boss_maiden_of_grief.cpp
+ scripts/zone/ulduar/halls_of_stone/boss_krystallus.cpp
+ scripts/zone/ulduar/halls_of_stone/boss_sjonnir.cpp
+ scripts/zone/ulduar/halls_of_stone/def_halls_of_stone.h
+ scripts/zone/ulduar/halls_of_lightning/instance_halls_of_lightning.cpp
+ scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp
+ scripts/zone/ulduar/halls_of_lightning/boss_ionar.cpp
+ scripts/zone/ulduar/halls_of_lightning/boss_volkhan.cpp
+ scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp
+ scripts/zone/ulduar/halls_of_lightning/def_halls_of_lightning.h
+ scripts/zone/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp
+ scripts/zone/caverns_of_time/culling_of_stratholme/boss_meathook.cpp
+ scripts/zone/caverns_of_time/culling_of_stratholme/boss_epoch.cpp
+ scripts/zone/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp
+ scripts/zone/caverns_of_time/culling_of_stratholme/boss_salramm.cpp
+ scripts/zone/caverns_of_time/culling_of_stratholme/def_culling_of_stratholme.h
+ scripts/zone/nexus/eye_of_eternity/instance_eye_of_eternity.cpp
+ scripts/zone/nexus/eye_of_eternity/boss_malygos.cpp
+ scripts/zone/nexus/eye_of_eternity/def_eye_of_eternity.h
+ scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp
+ scripts/zone/obsidian_sanctum/boss_sartharion.cpp
+ scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h
+ scripts/zone/vault_of_archavon/instance_vault_of_archavon.cpp
+ scripts/zone/vault_of_archavon/boss_vault_of_archavon.cpp
+ scripts/zone/vault_of_archavon/def_vault_of_archavon.h
system.cpp
)
diff --git a/src/bindings/scripts/VC90/90ScriptDev2.vcproj b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
index 40b3b4414f1..d2629224f68 100644
--- a/src/bindings/scripts/VC90/90ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="windows-1250"?>
<VisualStudioProject
ProjectType="Visual C++"
- Version="9,00"
+ Version="9.00"
Name="TrinityScript"
ProjectGUID="{4295C8A9-79B7-4354-8064-F05FB9CA0C96}"
RootNamespace="ScriptDev2"
@@ -103,7 +103,7 @@
/>
</Configuration>
<Configuration
- Name="Debug|x64"
+ Name="Release|Win32"
OutputDirectory="..\..\..\..\bin\$(PlatformName)_$(ConfigurationName)"
IntermediateDirectory=".\ScriptDev2__$(PlatformName)_$(ConfigurationName)"
ConfigurationType="2"
@@ -125,16 +125,16 @@
/>
<Tool
Name="VCMIDLTool"
- TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
- Optimization="0"
+ AdditionalOptions="/MP"
AdditionalIncludeDirectories="..\..\..\..\dep\include\;..\..\..\shared\;..\..\..\framework\;..\..\..\game\;..\include\;..\..\..\..\dep\ACE_wrappers"
- PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_WINDOWS;_USRDLL;SCRIPT"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SCRIPT"
+ MinimalRebuild="false"
+ RuntimeLibrary="2"
+ EnableEnhancedInstructionSet="1"
+ FloatingPointModel="2"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="precompiled.h"
WarningLevel="3"
@@ -154,15 +154,16 @@
Name="VCLinkerTool"
AdditionalDependencies="trinitycore.lib zthread.lib"
OutputFile="$(OutDir)/TrinityScript.dll"
- LinkIncremental="2"
+ LinkIncremental="1"
AdditionalLibraryDirectories="..\..\..\..\win\VC90\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName)"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/TrinityScript.pdb"
+ GenerateDebugInformation="false"
SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)/TrinityScript.lib"
- TargetMachine="17"
+ TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
@@ -187,7 +188,7 @@
/>
</Configuration>
<Configuration
- Name="Release|Win32"
+ Name="Debug|x64"
OutputDirectory="..\..\..\..\bin\$(PlatformName)_$(ConfigurationName)"
IntermediateDirectory=".\ScriptDev2__$(PlatformName)_$(ConfigurationName)"
ConfigurationType="2"
@@ -209,16 +210,16 @@
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalOptions="/MP"
+ Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\dep\include\;..\..\..\shared\;..\..\..\framework\;..\..\..\game\;..\include\;..\..\..\..\dep\ACE_wrappers"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SCRIPT"
- MinimalRebuild="false"
- RuntimeLibrary="2"
- EnableEnhancedInstructionSet="1"
- FloatingPointModel="2"
+ PreprocessorDefinitions="WIN32;_DEBUG;TRINITY_DEBUG;_WINDOWS;_USRDLL;SCRIPT"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="precompiled.h"
WarningLevel="3"
@@ -238,16 +239,15 @@
Name="VCLinkerTool"
AdditionalDependencies="trinitycore.lib zthread.lib"
OutputFile="$(OutDir)/TrinityScript.dll"
- LinkIncremental="1"
+ LinkIncremental="2"
AdditionalLibraryDirectories="..\..\..\..\win\VC90\zthread__$(PlatformName)_$(ConfigurationName);..\..\..\..\win\VC90\trinitycore__$(PlatformName)_$(ConfigurationName)"
- GenerateDebugInformation="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)/TrinityScript.pdb"
SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)/TrinityScript.lib"
- TargetMachine="1"
+ TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
@@ -477,6 +477,14 @@
<Filter
Name="custom"
>
+ <File
+ RelativePath="..\scripts\custom\npc_acherus_taxi.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\custom\npc_wyrmresttempel_taxi.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="areatrigger"
@@ -812,6 +820,10 @@
>
</File>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\ahnkahet\boss_aminitar.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Ahn&apos;kahet\boss_elder_nadox.cpp"
>
</File>
@@ -820,14 +832,30 @@
>
</File>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\ahnkahet\boss_jedoga.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Ahn&apos;kahet\boss_jedoga_shadowseeker.cpp"
>
</File>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\ahnkahet\boss_nadox.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Ahn&apos;kahet\boss_prince_taldaram.cpp"
>
</File>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\ahnkahet\boss_taldaram.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\azjol-nerub\ahnkahet\boss_volazj.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Ahn&apos;kahet\def_ahnkahet.h"
>
</File>
@@ -840,18 +868,34 @@
Name="Azjol-Nerub"
>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\azjol-nerub\boss_anub_arak.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Azjol-Nerub\boss_anubarak.cpp"
>
</File>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\azjol-nerub\boss_hadronox.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Azjol-Nerub\boss_hadronox.cpp"
>
</File>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\azjol-nerub\boss_krik_thir.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Azjol-Nerub\boss_krikthir_the_gatewatcher.cpp"
>
</File>
<File
+ RelativePath="..\scripts\zone\azjol-nerub\azjol-nerub\def_azjol-nerub.h"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\Azjol-Nerub\Azjol-Nerub\def_azjol_nerub.h"
>
</File>
@@ -864,10 +908,62 @@
<Filter
Name="Drak&apos;Tharon Keep"
>
+ <File
+ RelativePath="..\scripts\zone\draktharon_keep\boss_dred.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\draktharon_keep\boss_novos.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\draktharon_keep\boss_tharon_ja.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\draktharon_keep\boss_trollgore.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\draktharon_keep\def_drak_tharon_keep.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\draktharon_keep\instance_drak_tharon_keep.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Gundrak"
>
+ <File
+ RelativePath="..\scripts\zone\gundrak\boss_drakkari_colossus.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\gundrak\boss_eck.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\gundrak\boss_gal_darah.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\gundrak\boss_moorabi.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\gundrak\boss_slad_ran.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\gundrak\def_gundrak.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\gundrak\instance_gundrak.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Nexus"
@@ -875,19 +971,123 @@
<Filter
Name="Nexus"
>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\boss_anomalus.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\boss_keristrasza.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\boss_magus_telestra.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\boss_ormorok.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\commander_kolurg.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\commander_stoutbeard.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\def_nexus.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\nexus\instance_nexus.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Oculus"
>
+ <File
+ RelativePath="..\scripts\zone\nexus\oculus\boss_drakos.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\oculus\boss_eregos.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\oculus\boss_urom.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\oculus\boss_varos.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\oculus\def_oculus.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\oculus\instance_oculus.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Eye of Eternity"
>
+ <File
+ RelativePath="..\scripts\zone\nexus\eye_of_eternity\boss_malygos.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\eye_of_eternity\def_eye_of_eternity.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\nexus\eye_of_eternity\instance_eye_of_eternity.cpp"
+ >
+ </File>
</Filter>
</Filter>
<Filter
Name="Violet Hold"
>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\boss_cyanigosa.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\boss_erekem.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\boss_ichoron.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\boss_lavanthor.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\boss_moragg.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\boss_xevozz.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\boss_zuramat.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\def_violet_hold.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\violet_hold\instance_violet_hold.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Ulduar"
@@ -895,10 +1095,54 @@
<Filter
Name="Halls of Stone"
>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_stone\boss_krystallus.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_stone\boss_maiden_of_grief.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_stone\boss_sjonnir.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_stone\def_halls_of_stone.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_stone\instance_halls_of_stone.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Halls of Lightning"
>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_lightning\boss_bjarngrim.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_lightning\boss_ionar.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_lightning\boss_loken.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_lightning\boss_volkhan.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_lightning\def_halls_of_lightning.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\ulduar\halls_of_lightning\instance_halls_of_lightning.cpp"
+ >
+ </File>
</Filter>
</Filter>
<Filter
@@ -908,6 +1152,14 @@
Name="Utgarde Keep"
>
<File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\boss_dalronn.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\boss_ingvar.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\boss_ingvar_the_plunderer.cpp"
>
</File>
@@ -916,14 +1168,30 @@
>
</File>
<File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\boss_keleseth.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\boss_skarvald.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\boss_skarvald_dalronn.cpp"
>
</File>
<File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_keep.h"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_utgarde_keep.h"
>
</File>
<File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\instance_keep.cpp"
+ >
+ </File>
+ <File
RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\instance_utgarde_keep.cpp"
>
</File>
@@ -931,15 +1199,63 @@
<Filter
Name="Utgarde Pinnacle"
>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_pinnacle\boss_palehoof.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_pinnacle\boss_skadi.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_pinnacle\boss_svala.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_pinnacle\boss_ymiron.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_pinnacle\def_pinnacle.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_pinnacle\instance_pinnacle.cpp"
+ >
+ </File>
</Filter>
</Filter>
<Filter
Name="Obsidian Sanctum"
>
+ <File
+ RelativePath="..\scripts\zone\obsidian_sanctum\boss_sartharion.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\obsidian_sanctum\def_obsidian_sanctum.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\obsidian_sanctum\instance_obsidian_sanctum.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Vault of Archavon"
>
+ <File
+ RelativePath="..\scripts\zone\vault_of_archavon\boss_archavon.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\vault_of_archavon\def_vault_of_archavon.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\vault_of_archavon\instance_vault_of_archavon.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Scarlet Monastery"
@@ -2296,10 +2612,33 @@
>
</File>
</Filter>
-
<Filter
Name="Culling of Stratholme"
>
+ <File
+ RelativePath="..\scripts\zone\caverns_of_time\culling_of_stratholme\boss_epoch.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\caverns_of_time\culling_of_stratholme\boss_mal_ganis.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\caverns_of_time\culling_of_stratholme\boss_meathook.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\caverns_of_time\culling_of_stratholme\boss_salramm.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\caverns_of_time\culling_of_stratholme\def_culling_of_stratholme.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\caverns_of_time\culling_of_stratholme\instance_culling_of_stratholme.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Old Hillsbrad"
diff --git a/src/bindings/scripts/scripts/custom/npc_acherus_taxi.cpp b/src/bindings/scripts/scripts/custom/npc_acherus_taxi.cpp
new file mode 100644
index 00000000000..3e58efa345b
--- /dev/null
+++ b/src/bindings/scripts/scripts/custom/npc_acherus_taxi.cpp
@@ -0,0 +1,39 @@
+#include "precompiled.h"
+#include "WorldPacket.h"
+
+#define GOSSIP_FLIGHT "I need a ride"
+
+bool GossipHello_npc_acherus_taxi(Player *player, Creature *_Creature)
+{
+player->SetTaxiCheater(true);
+
+player->ADD_GOSSIP_ITEM(0, GOSSIP_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+ player->SEND_GOSSIP_MENU(9978,_Creature->GetGUID());
+ return true;
+}
+
+bool GossipSelect_npc_acherus_taxi(Player *player, Creature *_Creature, uint32 sender, uint32 action )
+{
+ if (action == GOSSIP_ACTION_INFO_DEF + 1)
+ {
+ if (player->GetPositionZ() >=316)
+ {
+ player->GetSession()->SendDoFlight(24446, 1053);
+ }else{
+ player->GetSession()->SendDoFlight(24446, 1054);
+ }
+
+ }
+ return true;
+}
+
+void AddSC_npc_acherus_taxi()
+{
+ Script *newscript;
+
+newscript = new Script;
+newscript->Name="npc_acherus_taxi";
+newscript->pGossipHello = &GossipHello_npc_acherus_taxi;
+newscript->pGossipSelect = &GossipSelect_npc_acherus_taxi;
+newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/custom/npc_wyrmresttempel_taxi.cpp b/src/bindings/scripts/scripts/custom/npc_wyrmresttempel_taxi.cpp
new file mode 100644
index 00000000000..2e9ab3f412d
--- /dev/null
+++ b/src/bindings/scripts/scripts/custom/npc_wyrmresttempel_taxi.cpp
@@ -0,0 +1,116 @@
+#include "precompiled.h"
+#include "WorldPacket.h"
+
+#define GOSSIP_UP "My Lord, I must go to the upper floor of the temple."
+#define GOSSIP_DOWN "I would like to take a flight to the ground, Lord Afrasastrasz."
+#define GOSSIP_MIDDLE "Can you spare a drake to travel to Lord Afrasastrasz, in the middle of the temple?"
+#define GOSSIP_TOP "Please, Let me take one of these dragons to the top floor of the temple."
+#define GOSSIP_BOTTOM "Yes, Please. I would like to return to the ground floor of the temple."
+#define GOSSIP_ONEDOWN "I would like to see Lord Afrasastrasz, in the middle of the temple."
+
+bool GossipHello_npc_wyrmresttempel_middle_taxi(Player *player, Creature *_Creature)
+{
+player->SetTaxiCheater(true);
+
+player->ADD_GOSSIP_ITEM(0, GOSSIP_UP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+player->ADD_GOSSIP_ITEM(0, GOSSIP_DOWN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
+ player->SEND_GOSSIP_MENU(12887,_Creature->GetGUID());
+
+ return true;
+}
+
+bool GossipSelect_npc_wyrmresttempel_middle_taxi(Player *player, Creature *_Creature, uint32 sender, uint32 action )
+{
+ if (action == GOSSIP_ACTION_INFO_DEF + 1)
+ {
+ player->GetSession()->SendDoFlight(6376, 881);
+ }
+
+
+ if (action == GOSSIP_ACTION_INFO_DEF + 2)
+ {
+ player->GetSession()->SendDoFlight(6376, 882);
+
+ }
+return true;
+}
+
+bool GossipHello_npc_wyrmresttempel_bottom_taxi(Player *player, Creature *_Creature)
+{
+player->SetTaxiCheater(true);
+
+player->ADD_GOSSIP_ITEM(0, GOSSIP_TOP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
+player->ADD_GOSSIP_ITEM(0, GOSSIP_MIDDLE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
+ player->SEND_GOSSIP_MENU(12713,_Creature->GetGUID());
+
+ return true;
+}
+
+
+
+bool GossipSelect_npc_wyrmresttempel_bottom_taxi(Player *player, Creature *_Creature, uint32 sender, uint32 action )
+{
+ if (action == GOSSIP_ACTION_INFO_DEF + 4)
+ {
+ player->GetSession()->SendDoFlight(6376, 878);
+ }
+
+
+ if (action == GOSSIP_ACTION_INFO_DEF + 3)
+ {
+ player->GetSession()->SendDoFlight(6376, 883);
+
+ }
+return true;
+}
+
+bool GossipHello_npc_wyrmresttempel_top_taxi(Player *player, Creature *_Creature)
+{
+player->SetTaxiCheater(true);
+
+player->ADD_GOSSIP_ITEM(0, GOSSIP_BOTTOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
+player->ADD_GOSSIP_ITEM(0, GOSSIP_ONEDOWN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
+ player->SEND_GOSSIP_MENU(12714,_Creature->GetGUID());
+
+ return true;
+}
+
+bool GossipSelect_npc_wyrmresttempel_top_taxi(Player *player, Creature *_Creature, uint32 sender, uint32 action )
+{
+ if (action == GOSSIP_ACTION_INFO_DEF + 5)
+ {
+ player->GetSession()->SendDoFlight(6376, 879);
+ }
+
+ if (action == GOSSIP_ACTION_INFO_DEF + 6)
+
+ {
+ player->GetSession()->SendDoFlight(6376, 880);
+
+ }
+return true;
+}
+
+void AddSC_npc_wyrmresttempel_taxi()
+{
+ Script *newscript;
+
+newscript = new Script;
+newscript->Name="npc_wyrmresttempelmiddle_taxi";
+newscript->pGossipHello = &GossipHello_npc_wyrmresttempel_middle_taxi;
+newscript->pGossipSelect = &GossipSelect_npc_wyrmresttempel_middle_taxi;
+newscript->RegisterSelf();
+
+newscript = new Script;
+newscript->Name="npc_wyrmresttempelbottom_taxi";
+newscript->pGossipHello = &GossipHello_npc_wyrmresttempel_bottom_taxi;
+newscript->pGossipSelect = &GossipSelect_npc_wyrmresttempel_bottom_taxi;
+newscript->RegisterSelf();
+
+newscript = new Script;
+newscript->Name="npc_wyrmresttempeltop_taxi";
+newscript->pGossipHello = &GossipHello_npc_wyrmresttempel_top_taxi;
+newscript->pGossipSelect = &GossipSelect_npc_wyrmresttempel_top_taxi;
+newscript->RegisterSelf();
+
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_anub_arak.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_anub_arak.cpp
new file mode 100644
index 00000000000..83695bd86d7
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_anub_arak.cpp
@@ -0,0 +1,92 @@
+/* Script Data Start
+SDName: Boss anub_arak
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_anub_arak' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CARRION_BEETLES 53520
+#define SPELL_LOCUST_SWARM 53467
+#define SPELL_IMPALE 53454
+#define SPELL_POUND 53472
+
+//Yell
+#define SAY_INTRO -1601010
+#define SAY_AGGRO -1601000
+#define SAY_SLAY_1 -1601001
+#define SAY_SLAY_2 -1601002
+#define SAY_SLAY_3 -1601003
+#define SAY_LOCUST_1 -1601005
+#define SAY_LOCUST_2 -1601006
+#define SAY_LOCUST_3 -1601007
+#define SAY_SUBMERGE_1 -1601008
+#define SAY_SUBMERGE_2 -1601009
+#define SAY_DEATH -1601004
+
+struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
+{
+ boss_anub_arakAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ phase =1;
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 33)
+ phase = 2;
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) == 15)
+ phase = 3;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_anub_arak(Creature *_Creature)
+{
+ return new boss_anub_arakAI (_Creature);
+}
+
+void AddSC_boss_anub_arak()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_anub_arak";
+ newscript->GetAI = GetAI_boss_anub_arak;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_hadronox.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_hadronox.cpp
index 72bcb708429..e72ccd6436f 100644
--- a/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_hadronox.cpp
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_hadronox.cpp
@@ -35,4 +35,80 @@ EndScriptData */
#define SPELL_LEECH_POISON_DEADTRIGGER 53800//heal 10% heroic und normal
#define SPELL_PIECE_ARMOR 53418
#define SPELL_WEB_GRAB 53406
-#define H_SPELL_WEB_GRAB 59420 \ No newline at end of file
+#define H_SPELL_WEB_GRAB 59420
+
+/* Script Data Start
+SDName: Boss hadronox
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_hadronox' where entry = '';
+*** SQL END ***/
+
+//Spells
+#define SPELL_LEECH_POISON 53030
+#define SPELL_ACID_CLOUD 53400
+#define SPELL_PIERCE_ARMOR 53418 //Source SUN++
+#define SPELL_WEB_GRAB 53406
+
+//Phase 0 => Gauntlet Event described below
+//Phase 1 => Boss Encounter
+
+/*When your group enters the main room (the one after the bridge), you will notice a group of 3 Nerubians.
+When you engage them, 2 more groups like this one spawn behind the first one - it is important to pull the first group back,
+so you don't aggro all 3. Hadronox will be under you, fighting Nerubians.
+
+This is the timed gauntlet - waves of non-elite spiders
+ will spawn from the 3 doors located a little above the main room, and will then head down to fight Hadronox. After clearing the
+ main room, it is recommended to just stay in it, kill the occasional non-elites that will attack you instead of the boss, and wait for
+ Hadronox to make his way to you. When Hadronox enters the main room, she will web the doors, and no more non-elites will spawn.*/
+
+struct TRINITY_DLL_DECL boss_hadronoxAI : public ScriptedAI
+{
+ boss_hadronoxAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ phase =1;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ //when Hadronox kills any enemy (that includes a party member) she will regain 10% of her HP if the target had Leech Poison on
+ }
+};
+
+CreatureAI* GetAI_boss_hadronox(Creature *_Creature)
+{
+ return new boss_hadronoxAI (_Creature);
+}
+
+void AddSC_boss_hadronox()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_hadronox";
+ newscript->GetAI = GetAI_boss_hadronox;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_krik_thir.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_krik_thir.cpp
new file mode 100644
index 00000000000..91c185aaf40
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/boss_krik_thir.cpp
@@ -0,0 +1,92 @@
+/* Script Data Start
+SDName: Boss krik_thir
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_krik_thir' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_SUMMON_SKITTERING_SWARMER 52438 //maybe 52439 //summons NPC 28735
+#define SPELL_MIND_FLAY 52586
+#define SPELL_FRENZY 53361
+#define SPELL_CURSE_OF_FATIGUE 52592 //Curses all enemies in a 5 radius around the target, dealing 2828 to 3172 Shadow damage, slowing movement speed by 30%, attack speed by 30%, and casting speed by 30%. Lasts 10 sec.
+
+#define SKITTERING_SWARMER 28735
+
+//Yell
+#define SAY_AGGRO -1601011
+#define SAY_SLAY_1 -1601012
+#define SAY_SLAY_2 -1601013
+#define SAY_SLAY_3 -1601014
+#define SAY_DEATH -1601015
+#define SAY_SEND_GROUP_1 -1601018
+#define SAY_SEND_GROUP_2 -1601019
+#define SAY_SEND_GROUP_3 -1601020
+#define SAY_SWARM_1 -1601016
+#define SAY_SWARM_2 -1601017
+#define SAY_PREFIGHT_1 -1601021
+#define SAY_PREFIGHT_2 -1601022
+#define SAY_PREFIGHT_3 -1601023
+
+struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
+{
+ boss_krik_thirAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if(!UpdateVictim())
+ return;
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) >= 10)
+ {
+ //Frenzy
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_krik_thir(Creature *_Creature)
+{
+ return new boss_krik_thirAI (_Creature);
+}
+
+void AddSC_boss_krik_thir()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_krik_thir";
+ newscript->GetAI = GetAI_boss_krik_thir;
+ newscript->RegisterSelf();
+
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/def_azjol-nerub.h b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/def_azjol-nerub.h
new file mode 100644
index 00000000000..56223b7b440
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/def_azjol-nerub.h
@@ -0,0 +1,4 @@
+#ifndef DEF_AZJOL_NERUB_H
+#define DEF_AZJOL_NERUB_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/instance_azjol-nerub.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/instance_azjol-nerub.cpp
new file mode 100644
index 00000000000..2267735df3a
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/Azjol-Nerub/instance_azjol-nerub.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_azjol-nerub.h"
+
+struct TRINITY_DLL_DECL instance_azjol_nerub : public ScriptedInstance
+{
+ instance_azjol_nerub(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_azjol_nerub(Map* map)
+{
+ return new instance_azjol_nerub(map);
+}
+
+void AddSC_instance_azjol_nerub()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_azjol_nerub";
+ newscript->GetInstanceData = GetInstanceData_instance_azjol_nerub;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_aminitar.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_aminitar.cpp
new file mode 100644
index 00000000000..28d8bba173a
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_aminitar.cpp
@@ -0,0 +1,59 @@
+/* Script Data Start
+SDName: Boss Amanitar
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment: Only appears in heroic mode
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_amanitar' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+#define SPELL_BASH 57094
+#define SPELL_ENTANGLING_ROOTS 57095
+#define SPELL_MINI 57055
+#define SPELL_VENOM_BOLT_VOLLEY 57088
+
+struct TRINITY_DLL_DECL boss_amanitarAI : public ScriptedAI
+{
+ boss_amanitarAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+
+ void JustDied(Unit* killer) {}
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+ }
+};
+
+CreatureAI* GetAI_boss_amanitar(Creature *_Creature)
+{
+ return new boss_amanitarAI (_Creature);
+}
+
+void AddSC_boss_amanitar()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_amanitar";
+ newscript->GetAI = GetAI_boss_amanitar;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_jedoga.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_jedoga.cpp
new file mode 100644
index 00000000000..f088badd149
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_jedoga.cpp
@@ -0,0 +1,85 @@
+/* Script Data Start
+SDName: Boss jedoga
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_jedoga' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+#define SPELL_CYCLONE_STRIKE 56855
+#define SPELL_LIGHTNING_BOLT 56891
+#define SPELL_THUNDERSHOCK 56926
+
+#define SAY_AGGRO -1619000
+#define SAY_C_SACRIFICE_1 -1619001
+#define SAY_C_SACRIFICE_2 -1619002
+#define SAY_SACRIFICE_1 -1619003
+#define SAY_SACRIFICE_2 -1619004
+#define SAY_SLAY_1 -1619005
+#define SAY_SLAY_2 -1619006
+#define SAY_SLAY_3 -1619007
+#define SAY_DEATH -1619008
+#define SAY_PREACHING_1 -1619009
+#define SAY_PREACHING_2 -1619010
+#define SAY_PREACHING_3 -1619011
+#define SAY_PREACHING_4 -1619012
+#define SAY_PREACHING_5 -1619013
+
+struct TRINITY_DLL_DECL boss_jedogaAI : public ScriptedAI
+{
+ boss_jedogaAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_jedoga(Creature *_Creature)
+{
+ return new boss_jedogaAI (_Creature);
+}
+
+void AddSC_boss_jedoga()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_jedoga";
+ newscript->GetAI = GetAI_boss_jedoga;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_nadox.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_nadox.cpp
new file mode 100644
index 00000000000..6e667a5254f
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_nadox.cpp
@@ -0,0 +1,89 @@
+/* Script Data Start
+SDName: Boss nadox
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_nadox' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_BROOD_PLAGUE_N 56130 //Diseases the enemy, causing 12750 Nature damage over 30 sec.
+#define SPELL_BROOD_PLAGUE_H 59467 //Diseases the enemy, causing 25500 Nature damage over 30 sec.
+#define BUFF_BROOD_RAGE_H 59465 //--> Heroic -- Enrages a Swarmer, increasing size and damage done.
+
+//randomly summons NPC 30178 and 30176 they can cast Sprint (56354)
+
+//Yell
+#define SAY_AGGRO -1619014
+#define SAY_SLAY_1 -1619015
+#define SAY_SLAY_2 -1619016
+#define SAY_SLAY_3 -1619017
+#define SAY_DEATH -1619018
+#define SAY_EGG_SAC_1 -1619019
+#define SAY_EGG_SAC_2 -1619020
+
+struct TRINITY_DLL_DECL boss_nadoxAI : public ScriptedAI
+{
+ boss_nadoxAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 plague,
+ summon;
+
+ void Reset() {}
+
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+
+ void summon_swarmer(){}
+ void summon_guardian(){}
+};
+
+CreatureAI* GetAI_boss_nadox(Creature *_Creature)
+{
+ return new boss_nadoxAI (_Creature);
+}
+
+void AddSC_boss_nadox()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_nadox";
+ newscript->GetAI = GetAI_boss_nadox;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_taldaram.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_taldaram.cpp
new file mode 100644
index 00000000000..b9d0b0ede97
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_taldaram.cpp
@@ -0,0 +1,83 @@
+/* Script Data Start
+SDName: Boss taldaram
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_taldaram' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_BLOODTHIRST 55968
+#define SPELL_CONJURE_FLAME_SPHERE 55931
+#define SPELL_EMBRACE_OF_THE_VAMPYR_N 55959
+#define SPELL_EMBRACE_OF_THE_VAMPYR_H 59513
+#define SPELL_VANISH 55964
+
+//Yell
+#define SAY_AGGRO -1619021
+#define SAY_SLAY_1 -1619022
+#define SAY_SLAY_2 -1619023
+#define SAY_SLAY_3 -1619024
+#define SAY_DEATH -1619025
+#define SAY_FEED_1 -1619026
+#define SAY_FEED_2 -1619027
+#define SAY_VANISH_1 -1619028
+#define SAY_VANISH_2 -1619029
+
+struct TRINITY_DLL_DECL boss_taldaramAI : public ScriptedAI
+{
+ boss_taldaramAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_taldaram(Creature *_Creature)
+{
+ return new boss_taldaramAI (_Creature);
+}
+
+void AddSC_boss_taldaram()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_taldaram";
+ newscript->GetAI = GetAI_boss_taldaram;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_volazj.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_volazj.cpp
new file mode 100644
index 00000000000..38dbe61f8ec
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/boss_volazj.cpp
@@ -0,0 +1,91 @@
+/* Script Data Start
+SDName: Boss volazj
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_volazj' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_INSANITY 57496 //Dummy
+#define INSANITY_VISUAL 57561
+#define SPELL_MIND_FLAY_N 57941
+#define SPELL_MIND_FLAY_H 59974
+#define SPELL_SHADOW_BOLT_VOLLEY_1 57942
+#define SPELL_SHADOW_BOLT_VOLLEY_2 59975
+#define SPELL_SHIVER_N 57949
+#define SPELL_SHIVER_H 59978
+
+//Yell
+#define SAY_AGGRO -1619030
+#define SAY_SLAY_1 -1619031
+#define SAY_SLAY_2 -1619032
+#define SAY_SLAY_3 -1619033
+#define SAY_DEATH_1 -1619034
+#define SAY_DEATH_2 -1619035
+#define SAY_PHASE -1619036
+
+struct TRINITY_DLL_DECL boss_volazjAI : public ScriptedAI
+{
+ boss_volazjAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ phase =1;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ if(phase == 1)
+ DoScriptText(SAY_DEATH_1, m_creature);
+ else
+ DoScriptText(SAY_DEATH_2, m_creature);
+ }
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_volazj(Creature *_Creature)
+{
+ return new boss_volazjAI (_Creature);
+}
+
+void AddSC_boss_volazj()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_volazj";
+ newscript->GetAI = GetAI_boss_volazj;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/def_ahnkahet.h b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/def_ahnkahet.h
new file mode 100644
index 00000000000..2ccf0a45ba2
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/def_ahnkahet.h
@@ -0,0 +1,4 @@
+#ifndef DEF_AHN_KAHET_H
+#define DEF_AHN_KAHET_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/instance_ahnkahet.cpp b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/instance_ahnkahet.cpp
new file mode 100644
index 00000000000..f6164dbc7dd
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/Azjol-Nerub/ahnkahet/instance_ahnkahet.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_ahnkahet.h"
+
+struct TRINITY_DLL_DECL instance_ahn_kahet : public ScriptedInstance
+{
+ instance_ahn_kahet(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_ahn_kahet(Map* map)
+{
+ return new instance_ahn_kahet(map);
+}
+
+void AddSC_instance_ahn_kahet()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_ahn_kahet";
+ newscript->GetInstanceData = GetInstanceData_instance_ahn_kahet;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains b/src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains
new file mode 100644
index 00000000000..327b670c6d3
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains
@@ -0,0 +1,536 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Boss_Teron_Gorefiend
+SD%Complete: 60
+SDComment: Requires Mind Control support for Ghosts.
+SDCategory: Black Temple
+EndScriptData */
+
+#include "precompiled.h"
+#include "def_black_temple.h"
+
+ //Speech'n'sound
+#define SAY_INTRO -1564037
+#define SAY_AGGRO -1564038
+#define SAY_SLAY1 -1564039
+#define SAY_SLAY2 -1564040
+#define SAY_SPELL1 -1564041
+#define SAY_SPELL2 -1564042
+#define SAY_SPECIAL1 -1564043
+#define SAY_SPECIAL2 -1564044
+#define SAY_ENRAGE -1564045
+#define SAY_DEATH -1564046
+
+//Spells
+#define SPELL_INCINERATE 40239
+#define SPELL_CRUSHING_SHADOWS 40243
+#define SPELL_SHADOWBOLT 40185
+#define SPELL_PASSIVE_SHADOWFORM 40326
+#define SPELL_SHADOW_OF_DEATH 40251
+#define SPELL_BERSERK 45078
+
+#define SPELL_ATROPHY 40327 // Shadowy Constructs use this when they get within melee range of a player
+
+#define CREATURE_DOOM_BLOSSOM 23123
+#define CREATURE_SHADOWY_CONSTRUCT 23111
+
+struct TRINITY_DLL_DECL mob_doom_blossomAI : public ScriptedAI
+{
+ mob_doom_blossomAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 CheckTeronTimer;
+ uint32 ShadowBoltTimer;
+ uint64 TeronGUID;
+
+ void Reset()
+ {
+ CheckTeronTimer = 5000;
+ ShadowBoltTimer = 12000;
+ TeronGUID = 0;
+ }
+
+ void Aggro(Unit *who) { }
+ void AttackStart(Unit* who) { }
+ void MoveInLineOfSight(Unit* who) { }
+
+ void Despawn()
+ {
+ m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+ m_creature->RemoveCorpse();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if(CheckTeronTimer < diff)
+ {
+ if(TeronGUID)
+ {
+ DoZoneInCombat();
+
+ Creature* Teron = ((Creature*)Unit::GetUnit((*m_creature), TeronGUID));
+ if((Teron) && (!Teron->isAlive() || Teron->IsInEvadeMode()))
+ Despawn();
+ }
+ else
+ Despawn();
+
+ CheckTeronTimer = 5000;
+ }else CheckTeronTimer -= diff;
+
+ if(ShadowBoltTimer < diff && InCombat)
+ {
+ DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_SHADOWBOLT);
+ ShadowBoltTimer = 10000;
+ }else ShadowBoltTimer -= diff;
+ return;
+ }
+
+ void SetTeronGUID(uint64 guid){ TeronGUID = guid; }
+};
+
+//This is used to sort the players by distance for Constructs to see who to cast Atrophy on
+struct TargetDistanceOrder : public std::binary_function<const Unit, const Unit, bool>
+{
+ const Unit* MainTarget;
+ TargetDistanceOrder(const Unit* Target) : MainTarget(Target) {};
+ // functor for operator "<"
+ bool operator()(const Unit* _Left, const Unit* _Right) const
+ {
+ return (MainTarget->GetDistance(_Left) < MainTarget->GetDistance(_Right));
+ }
+};
+
+struct TRINITY_DLL_DECL mob_shadowy_constructAI : public ScriptedAI
+{
+ mob_shadowy_constructAI(Creature* c) : ScriptedAI(c) {}
+
+ uint64 GhostGUID;
+ uint64 TeronGUID;
+
+ uint32 CheckPlayerTimer;
+ uint32 CheckTeronTimer;
+
+ void Reset()
+ {
+ GhostGUID = 0;
+ TeronGUID = 0;
+
+ CheckPlayerTimer = 2000;
+ CheckTeronTimer = 5000;
+ }
+
+ void Aggro(Unit* who) { }
+
+ void MoveInLineOfSight(Unit *who)
+ {
+ if(!who || (!who->isAlive()) || (who->GetGUID() == GhostGUID))
+ return;
+
+ ScriptedAI::MoveInLineOfSight(who);
+ }
+
+/* Comment it out for now. NOTE TO FUTURE DEV: UNCOMMENT THIS OUT ONLY AFTER MIND CONTROL IS IMPLEMENTED
+ void DamageTaken(Unit* done_by, uint32 &damage)
+ {
+ if(done_by->GetGUID() != GhostGUID)
+ damage = 0; // Only the ghost can deal damage.
+ }
+ */
+
+ void CheckPlayers()
+ {
+ std::list<HostilReference*>& m_threatlist = m_creature->getThreatManager().getThreatList();
+ if(m_threatlist.empty())
+ return; // No threat list. Don't continue.
+ std::list<HostilReference*>::iterator itr = m_threatlist.begin();
+ std::list<Unit*> targets;
+ for( ; itr != m_threatlist.end(); ++itr)
+ {
+ Unit* pUnit = Unit::GetUnit((*m_creature), (*itr)->getUnitGuid());
+ if(pUnit && pUnit->isAlive())
+ targets.push_back(pUnit);
+ }
+ targets.sort(TargetDistanceOrder(m_creature));
+ Unit* target = targets.front();
+ if(target && m_creature->IsWithinDistInMap(target, m_creature->GetAttackDistance(target)))
+ {
+ DoCast(target, SPELL_ATROPHY);
+ m_creature->AI()->AttackStart(target);
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if(CheckPlayerTimer < diff)
+ {
+ CheckPlayers();
+ CheckPlayerTimer = 3000;
+ }else CheckPlayerTimer -= diff;
+
+ if(CheckTeronTimer < diff)
+ {
+ Creature* Teron = ((Creature*)Unit::GetUnit((*m_creature), TeronGUID));
+ if(!Teron || !Teron->isAlive() || Teron->IsInEvadeMode())
+ m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+
+ CheckTeronTimer = 5000;
+ }else CheckTeronTimer -= diff;
+ }
+};
+
+struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI
+{
+ boss_teron_gorefiendAI(Creature *c) : ScriptedAI(c)
+ {
+ pInstance = ((ScriptedInstance*)c->GetInstanceData());
+ }
+
+ ScriptedInstance* pInstance;
+
+ uint32 IncinerateTimer;
+ uint32 SummonDoomBlossomTimer;
+ uint32 EnrageTimer;
+ uint32 CrushingShadowsTimer;
+ uint32 ShadowOfDeathTimer;
+ uint32 SummonShadowsTimer;
+ uint32 RandomYellTimer;
+ uint32 AggroTimer;
+
+ uint64 AggroTargetGUID;
+ uint64 GhostGUID; // Player that gets killed by Shadow of Death and gets turned into a ghost
+
+ bool Intro;
+
+ void Reset()
+ {
+ if(pInstance)
+ pInstance->SetData(DATA_TERONGOREFIENDEVENT, NOT_STARTED);
+
+ IncinerateTimer = 20000 + rand()%11000;
+ SummonDoomBlossomTimer = 12000;
+ EnrageTimer = 600000;
+ CrushingShadowsTimer = 22000;
+ SummonShadowsTimer = 60000;
+ RandomYellTimer = 50000;
+
+ m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ // Start off unattackable so that the intro is done properly
+ m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+
+ AggroTimer = 20000;
+ AggroTargetGUID = 0;
+ Intro = false;
+ }
+
+ void Aggro(Unit *who) {}
+
+ void MoveInLineOfSight(Unit *who)
+ {
+ if(!who || (!who->isAlive())) return;
+
+ if(who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who))
+ {
+ float attackRadius = m_creature->GetAttackDistance(who);
+
+ if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who))
+ {
+ //if(who->HasStealthAura())
+ // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
+
+ m_creature->AddThreat(who, 1.0f);
+ }
+
+ if(!InCombat && !Intro && m_creature->IsWithinDistInMap(who, 60.0f) && (who->GetTypeId() == TYPEID_PLAYER))
+ {
+ if(pInstance)
+ pInstance->SetData(DATA_TERONGOREFIENDEVENT, IN_PROGRESS);
+
+ m_creature->GetMotionMaster()->Clear(false);
+ m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ DoScriptText(SAY_INTRO, m_creature);
+ m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
+ AggroTargetGUID = who->GetGUID();
+ Intro = true;
+ }
+ }
+ }
+
+ void KilledUnit(Unit *victim)
+ {
+ switch(rand()%2)
+ {
+ case 0: DoScriptText(SAY_SLAY1, m_creature); break;
+ case 1: DoScriptText(SAY_SLAY2, m_creature); break;
+ }
+ }
+
+ void JustDied(Unit *victim)
+ {
+ if(pInstance)
+ pInstance->SetData(DATA_TERONGOREFIENDEVENT, DONE);
+
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+
+ float CalculateRandomLocation(float Loc, uint32 radius)
+ {
+ float coord = Loc;
+ switch(rand()%2)
+ {
+ case 0:
+ coord += rand()%radius;
+ break;
+ case 1:
+ coord -= rand()%radius;
+ break;
+ }
+ return coord;
+ }
+
+ void SetThreatList(Creature* Blossom)
+ {
+ if(!Blossom) return;
+
+ std::list<HostilReference*>& m_threatlist = m_creature->getThreatManager().getThreatList();
+ std::list<HostilReference*>::iterator i = m_threatlist.begin();
+ for(i = m_threatlist.begin(); i != m_threatlist.end(); i++)
+ {
+ Unit* pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid());
+ if(pUnit && pUnit->isAlive())
+ {
+ float threat = DoGetThreat(pUnit);
+ Blossom->AddThreat(pUnit, threat);
+ }
+ }
+ }
+
+ void MindControlGhost()
+ {
+ /************************************************************************/
+ /** NOTE FOR FUTURE DEVELOPER: PROPERLY IMPLEMENT THE GHOST PORTION *****/
+ /** ONLY AFTER TrinIty FULLY IMPLEMENTS MIND CONTROL ABILITIES *****/
+ /** THE CURRENT CODE IN THIS FUNCTION IS ONLY THE BEGINNING OF *****/
+ /** WHAT IS FULLY NECESSARY FOR GOREFIEND TO BE 100% COMPLETE *****/
+ /************************************************************************/
+
+ Unit* Ghost = NULL;
+ if(GhostGUID)
+ Ghost = Unit::GetUnit((*m_creature), GhostGUID);
+ if(Ghost && Ghost->isAlive() && Ghost->HasAura(SPELL_SHADOW_OF_DEATH, 0))
+ {
+ /*float x,y,z;
+ Ghost->GetPosition(x,y,z);
+ Creature* control = m_creature->SummonCreature(CREATURE_GHOST, x, y, z, 0, TEMPSUMMON_TIMED_DESAWN, 30000);
+ if(control)
+ {
+ ((Player*)Ghost)->Possess(control);
+ Ghost->DealDamage(Ghost, Ghost->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL,
+ false);
+ }*/
+ for(uint8 i = 0; i < 4; ++i)
+ {
+ Creature* Construct = NULL;
+ float X = CalculateRandomLocation(Ghost->GetPositionX(), 10);
+ float Y = CalculateRandomLocation(Ghost->GetPositionY(), 10);
+ Construct = m_creature->SummonCreature(CREATURE_SHADOWY_CONSTRUCT, X, Y, Ghost->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000);
+ if(Construct)
+ {
+ Construct->CastSpell(Construct, SPELL_PASSIVE_SHADOWFORM, true);
+ SetThreatList(Construct); // Use same function as Doom Blossom to set Threat List.
+ ((mob_shadowy_constructAI*)Construct->AI())->GhostGUID = GhostGUID;
+ Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1);
+ if(!target) // someone's trying to solo.
+ target = m_creature->getVictim();
+
+ if(target)
+ Construct->GetMotionMaster()->MoveChase(target);
+ }
+ }
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if(Intro)
+ {
+ if(AggroTimer < diff)
+ {
+ m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ DoScriptText(SAY_AGGRO, m_creature);
+ m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
+ Intro = false;
+ if(AggroTargetGUID)
+ {
+ Unit* pUnit = Unit::GetUnit((*m_creature), AggroTargetGUID);
+ if(pUnit)
+ AttackStart(pUnit);
+
+ DoZoneInCombat();
+ }else EnterEvadeMode();
+
+ }else AggroTimer -= diff;
+ }
+
+ if(!UpdateVictim() || Intro)
+ return;
+
+ if(SummonShadowsTimer < diff)
+ {
+ //MindControlGhost();
+
+ for(uint8 i = 0; i < 2; ++i)
+ {
+ Creature* Shadow = NULL;
+ float X = CalculateRandomLocation(m_creature->GetPositionX(), 10);
+ Shadow = m_creature->SummonCreature(CREATURE_SHADOWY_CONSTRUCT, X, m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 0);
+ if(Shadow)
+ {
+ Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1);
+ if(!target)
+ target = m_creature->getVictim();
+
+ if(target)
+ Shadow->AI()->AttackStart(target);
+ }
+ }
+ SummonShadowsTimer = 60000;
+ }else SummonShadowsTimer -= diff;
+
+ if(SummonDoomBlossomTimer < diff)
+ {
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ {
+ float X = CalculateRandomLocation(target->GetPositionX(), 20);
+ float Y = CalculateRandomLocation(target->GetPositionY(), 20);
+ float Z = target->GetPositionZ();
+ Z = m_creature->GetMap()->GetVmapHeight(X, Y, Z, true);
+ Creature* DoomBlossom = m_creature->SummonCreature(CREATURE_DOOM_BLOSSOM, X, Y, Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000);
+ if(DoomBlossom)
+ {
+ DoomBlossom->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ DoomBlossom->setFaction(m_creature->getFaction());
+ DoomBlossom->AddThreat(target, 1.0f);
+ ((mob_doom_blossomAI*)DoomBlossom->AI())->SetTeronGUID(m_creature->GetGUID());
+ ((mob_doom_blossomAI*)DoomBlossom->AI())->InCombat = true;
+ SetThreatList(DoomBlossom);
+ SummonDoomBlossomTimer = 35000;
+ }
+ }
+ }else SummonDoomBlossomTimer -= diff;
+
+ if(IncinerateTimer < diff)
+ {
+ Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1);
+ if(!target)
+ target = m_creature->getVictim();
+
+ if(target)
+ {
+ switch(rand()%2)
+ {
+ case 0: DoScriptText(SAY_SPECIAL1, m_creature); break;
+ case 1: DoScriptText(SAY_SPECIAL2, m_creature); break;
+ }
+ DoCast(target, SPELL_INCINERATE);
+ IncinerateTimer = 20000 + rand()%31 * 1000;
+ }
+ }else IncinerateTimer -= diff;
+
+ if(CrushingShadowsTimer < diff)
+ {
+ Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
+ if(target && target->isAlive())
+ DoCast(target, SPELL_CRUSHING_SHADOWS);
+ CrushingShadowsTimer = 10000 + rand()%16 * 1000;
+ }else CrushingShadowsTimer -= diff;
+
+ /*** NOTE FOR FUTURE DEV: UNCOMMENT BELOW ONLY IF MIND CONTROL IS FULLY IMPLEMENTED **/
+ /*if(ShadowOfDeathTimer < diff)
+ {
+ Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1);
+
+ if(!target)
+ target = m_creature->getVictim();
+
+ if(target && target->isAlive() && target->GetTypeId() == TYPEID_PLAYER)
+ {
+ DoCast(target, SPELL_SHADOW_OF_DEATH);
+ GhostGUID = target->GetGUID();
+ ShadowOfDeathTimer = 30000;
+ SummonShadowsTimer = 53000; // Make it VERY close but slightly less so that we can check if the aura is still on the player
+ }
+ }else ShadowOfDeathTimer -= diff;*/
+
+ if(RandomYellTimer < diff)
+ {
+ switch(rand()%2)
+ {
+ case 0: DoScriptText(SAY_SPELL1, m_creature); break;
+ case 1: DoScriptText(SAY_SPELL2, m_creature); break;
+ }
+ RandomYellTimer = 50000 + rand()%51 * 1000;
+ }else RandomYellTimer -= diff;
+
+ if(!m_creature->HasAura(SPELL_BERSERK, 0))
+ {
+ if(EnrageTimer < diff)
+ {
+ DoCast(m_creature, SPELL_BERSERK);
+ DoScriptText(SAY_ENRAGE, m_creature);
+ }else EnrageTimer -= diff;
+ }
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_mob_doom_blossom(Creature *_Creature)
+{
+ return new mob_doom_blossomAI(_Creature);
+}
+
+CreatureAI* GetAI_mob_shadowy_construct(Creature *_Creature)
+{
+ return new mob_shadowy_constructAI(_Creature);
+}
+
+CreatureAI* GetAI_boss_teron_gorefiend(Creature *_Creature)
+{
+ return new boss_teron_gorefiendAI (_Creature);
+}
+
+void AddSC_boss_teron_gorefiend()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "mob_doom_blossom";
+ newscript->GetAI = &GetAI_mob_doom_blossom;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "mob_shadowy_construct";
+ newscript->GetAI = &GetAI_mob_shadowy_construct;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="boss_teron_gorefiend";
+ newscript->GetAI = &GetAI_boss_teron_gorefiend;
+ newscript->RegisterSelf();
+}
+
diff --git a/src/bindings/scripts/scripts/zone/black_temple/.instance_black_temple.cpp-s8inyu b/src/bindings/scripts/scripts/zone/black_temple/.instance_black_temple.cpp-s8inyu
new file mode 100644
index 00000000000..43646746505
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/black_temple/.instance_black_temple.cpp-s8inyu
@@ -0,0 +1,347 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+/* ScriptData
+SDName: Instance_Black_Temple
+SD%Complete: 100
+SDComment: Instance Data Scripts and functions to acquire mobs and set encounter status for use in various Black Temple Scripts
+SDCategory: Black Temple
+EndScriptData */
+
+#include "precompiled.h"
+#include "def_black_temple.h"
+
+#define ENCOUNTERS 9
+
+/* Black Temple encounters:
+0 - High Warlord Naj'entus event
+1 - Supremus Event
+2 - Shade of Akama Event
+3 - Teron Gorefiend Event
+4 - Gurtogg Bloodboil Event
+5 - Reliquary Of Souls Event
+6 - Mother Shahraz Event
+7 - Illidari Council Event
+8 - Illidan Stormrage Event
+*/
+
+struct TRINITY_DLL_DECL instance_black_temple : public ScriptedInstance
+{
+ instance_black_temple(Map *map) : ScriptedInstance(map) {Initialize();};
+
+ uint32 Encounters[ENCOUNTERS];
+ std::string str_data;
+
+ uint64 Najentus;
+ uint64 Akama; // This is the Akama that starts the Illidan encounter.
+ uint64 Akama_Shade; // This is the Akama that starts the Shade of Akama encounter.
+ uint64 ShadeOfAkama;
+ uint64 Supremus;
+ uint64 LadyMalande;
+ uint64 GathiosTheShatterer;
+ uint64 HighNethermancerZerevor;
+ uint64 VerasDarkshadow;
+ uint64 IllidariCouncil;
+ uint64 BloodElfCouncilVoice;
+ uint64 IllidanStormrage;
+
+ uint64 NajentusGate;
+ uint64 MainTempleDoors;
+ uint64 ShadeOfAkamaDoor;
+ uint64 CommonDoor;//Teron
+ uint64 TeronDoor;
+ uint64 GuurtogDoor;
+ uint64 MotherDoor;
+ uint64 TempleDoor;//Befor mother
+ uint64 CouncilDoor;
+ uint64 SimpleDoor;//council
+ uint64 IllidanGate;
+ uint64 IllidanDoor[2];
+
+ void Initialize()
+ {
+ Najentus = 0;
+ Akama = 0;
+ Akama_Shade = 0;
+ ShadeOfAkama = 0;
+ Supremus = 0;
+ LadyMalande = 0;
+ GathiosTheShatterer = 0;
+ HighNethermancerZerevor = 0;
+ VerasDarkshadow = 0;
+ IllidariCouncil = 0;
+ BloodElfCouncilVoice = 0;
+ IllidanStormrage = 0;
+
+ NajentusGate = 0;
+ MainTempleDoors = 0;
+ ShadeOfAkamaDoor= 0;
+ CommonDoor = 0;//teron
+ TeronDoor = 0;
+ GuurtogDoor = 0;
+ MotherDoor = 0;
+ TempleDoor = 0;
+ SimpleDoor = 0;//Bycouncil
+ CouncilDoor = 0;
+ IllidanGate = 0;
+ IllidanDoor[0] = 0;
+ IllidanDoor[1] = 0;
+
+ for(uint8 i = 0; i < ENCOUNTERS; ++i)
+ Encounters[i] = NOT_STARTED;
+ }
+
+ bool IsEncounterInProgress() const
+ {
+ for(uint8 i = 0; i < ENCOUNTERS; ++i)
+ if(Encounters[i] == IN_PROGRESS) return true;
+
+ return false;
+ }
+
+ Player* GetPlayerInMap()
+ {
+ Map::PlayerList const& players = instance->GetPlayers();
+
+ if (!players.isEmpty())
+ {
+ for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ {
+ if (Player* plr = itr->getSource())
+ return plr;
+ }
+ }
+
+ debug_log("TSCR: Instance Black Temple: GetPlayerInMap, but PlayerList is empty!");
+ return NULL;
+ }
+
+ void OnCreatureCreate(Creature *creature, uint32 creature_entry)
+ {
+ switch(creature->GetEntry())
+ {
+ case 22887: Najentus = creature->GetGUID(); break;
+ case 23089: Akama = creature->GetGUID(); break;
+ case 22990: Akama_Shade = creature->GetGUID(); break;
+ case 22841: ShadeOfAkama = creature->GetGUID(); break;
+ case 22898: Supremus = creature->GetGUID(); break;
+ case 22917: IllidanStormrage = creature->GetGUID(); break;
+ case 22949: GathiosTheShatterer = creature->GetGUID(); break;
+ case 22950: HighNethermancerZerevor = creature->GetGUID(); break;
+ case 22951: LadyMalande = creature->GetGUID(); break;
+ case 22952: VerasDarkshadow = creature->GetGUID(); break;
+ case 23426: IllidariCouncil = creature->GetGUID(); break;
+ case 23499: BloodElfCouncilVoice = creature->GetGUID(); break;
+ }
+ }
+
+ void OnObjectCreate(GameObject* go)
+ {
+ switch(go->GetEntry())
+ {
+ case 185483: NajentusGate = go->GetGUID();// Gate past Naj'entus (at the entrance to Supermoose's courtyards)
+ if(Encounters[0] == DONE)HandleGameObject(NULL,true,go);break;
+ case 185882: MainTempleDoors = go->GetGUID();// Main Temple Doors - right past Supermoose (Supremus)
+ if(Encounters[1] == DONE)HandleGameObject(NULL,true,go);break;
+ case 185478: ShadeOfAkamaDoor = go->GetGUID();break;
+ case 185480: CommonDoor = go->GetGUID();
+ if(Encounters[3] == DONE)HandleGameObject(NULL,true,go);;break;
+ case 186153: TeronDoor = go->GetGUID();
+ if(Encounters[3] == DONE)HandleGameObject(NULL,true,go);;break;
+ case 185892: GuurtogDoor = go->GetGUID();
+ if(Encounters[4] == DONE)HandleGameObject(NULL,true,go);break;
+ case 185479: TempleDoor = go->GetGUID();
+ if(Encounters[5] == DONE)HandleGameObject(NULL,true,go);break;
+ case 185482: MotherDoor = go->GetGUID();
+ if(Encounters[6] == DONE)HandleGameObject(NULL,true,go);break;
+ case 185481: CouncilDoor = go->GetGUID();
+ if(Encounters[7] == DONE)HandleGameObject(NULL,true,go);break;
+ case 186152: SimpleDoor = go->GetGUID();
+ if(Encounters[7] == DONE)HandleGameObject(NULL,true,go);break;
+ case 185905: IllidanGate = go->GetGUID(); break; // Gate leading to Temple Summit
+ case 186261: IllidanDoor[0] = go->GetGUID(); break; // Right door at Temple Summit
+ case 186262: IllidanDoor[1] = go->GetGUID(); break; // Left door at Temple Summit
+ }
+ }
+
+ uint64 GetData64(uint32 identifier)
+ {
+ switch(identifier)
+ {
+ case DATA_HIGHWARLORDNAJENTUS: return Najentus;
+ case DATA_AKAMA: return Akama;
+ case DATA_AKAMA_SHADE: return Akama_Shade;
+ case DATA_SHADEOFAKAMA: return ShadeOfAkama;
+ case DATA_SUPREMUS: return Supremus;
+ case DATA_ILLIDANSTORMRAGE: return IllidanStormrage;
+ case DATA_GATHIOSTHESHATTERER: return GathiosTheShatterer;
+ case DATA_HIGHNETHERMANCERZEREVOR: return HighNethermancerZerevor;
+ case DATA_LADYMALANDE: return LadyMalande;
+ case DATA_VERASDARKSHADOW: return VerasDarkshadow;
+ case DATA_ILLIDARICOUNCIL: return IllidariCouncil;
+ case DATA_GAMEOBJECT_NAJENTUS_GATE: return NajentusGate;
+ case DATA_GAMEOBJECT_ILLIDAN_GATE: return IllidanGate;
+ case DATA_GAMEOBJECT_ILLIDAN_DOOR_R: return IllidanDoor[0];
+ case DATA_GAMEOBJECT_ILLIDAN_DOOR_L: return IllidanDoor[1];
+ case DATA_GAMEOBJECT_SUPREMUS_DOORS: return MainTempleDoors;
+ case DATA_BLOOD_ELF_COUNCIL_VOICE: return BloodElfCouncilVoice;
+ }
+
+ return 0;
+ }
+
+ void SetData(uint32 type, uint32 data)
+ {
+ switch(type)
+ {
+ case DATA_HIGHWARLORDNAJENTUSEVENT:
+ if(data == DONE)
+ {
+ HandleGameObject(NajentusGate, true);
+ }
+ Encounters[0] = data;break;
+ case DATA_SUPREMUSEVENT:
+ if(data == DONE)
+ {
+ HandleGameObject(NajentusGate, true);
+ }
+ Encounters[1] = data; break;
+ case DATA_SHADEOFAKAMAEVENT:
+ if(data == IN_PROGRESS)
+ {
+ HandleGameObject(ShadeOfAkamaDoor, false);
+ }else HandleGameObject(ShadeOfAkamaDoor, true);
+ Encounters[2] = data; break;
+ case DATA_TERONGOREFIENDEVENT:
+ if(data == IN_PROGRESS)
+ {
+ HandleGameObject(TeronDoor, false);
+ HandleGameObject(CommonDoor, false);
+ }else
+ {
+ HandleGameObject(TeronDoor, true);
+ HandleGameObject(CommonDoor, true);
+ }
+ Encounters[3] = data; break;
+ case DATA_GURTOGGBLOODBOILEVENT:
+ if(data == DONE)
+ {
+ HandleGameObject(GuurtogDoor, true);
+ }
+ Encounters[4] = data; break;
+ case DATA_RELIQUARYOFSOULSEVENT:
+ if(data == DONE)
+ {
+ HandleGameObject(TempleDoor, true);
+ }
+ Encounters[5] = data; break;
+ case DATA_MOTHERSHAHRAZEVENT:
+ if(data == DONE)
+ {
+ HandleGameObject(MotherDoor, true);
+ }
+ Encounters[6] = data; break;
+ case DATA_ILLIDARICOUNCILEVENT:
+ if(data == IN_PROGRESS)
+ {
+ HandleGameObject(CouncilDoor, false);
+ HandleGameObject(SimpleDoor, false);
+ }else
+ {
+ HandleGameObject(CouncilDoor, true);
+ HandleGameObject(SimpleDoor, true);
+ }
+ Encounters[7] = data; break;
+ case DATA_ILLIDANSTORMRAGEEVENT: Encounters[8] = data; break;
+ }
+
+ if (data == DONE)
+ {
+ OUT_SAVE_INST_DATA;
+
+ std::ostringstream saveStream;
+ saveStream << Encounters[0] << " " << Encounters[1] << " "
+ << Encounters[2] << " " << Encounters[3] << " " << Encounters[4]
+ << " " << Encounters[5] << " " << Encounters[6] << " " << Encounters[7]
+ << " " << Encounters[8];
+
+ str_data = saveStream.str();
+
+ SaveToDB();
+ OUT_SAVE_INST_DATA_COMPLETE;
+ }
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ switch(type)
+ {
+ case DATA_HIGHWARLORDNAJENTUSEVENT: return Encounters[0];
+ case DATA_SUPREMUSEVENT: return Encounters[1];
+ case DATA_SHADEOFAKAMAEVENT: return Encounters[2];
+ case DATA_TERONGOREFIENDEVENT: return Encounters[3];
+ case DATA_GURTOGGBLOODBOILEVENT: return Encounters[4];
+ case DATA_RELIQUARYOFSOULSEVENT: return Encounters[5];
+ case DATA_MOTHERSHAHRAZEVENT: return Encounters[6];
+ case DATA_ILLIDARICOUNCILEVENT: return Encounters[7];
+ case DATA_ILLIDANSTORMRAGEEVENT: return Encounters[8];
+ }
+
+ return 0;
+ }
+
+ const char* Save()
+ {
+ return str_data.c_str();
+ }
+
+ void Load(const char* in)
+ {
+ if (!in)
+ {
+ OUT_LOAD_INST_DATA_FAIL;
+ return;
+ }
+
+ OUT_LOAD_INST_DATA(in);
+
+ std::istringstream loadStream(in);
+ loadStream >> Encounters[0] >> Encounters[1] >> Encounters[2]
+ >> Encounters[3] >> Encounters[4] >> Encounters[5] >> Encounters[6]
+ >> Encounters[7] >> Encounters[8];
+
+ for(uint8 i = 0; i < ENCOUNTERS; ++i)
+ if (Encounters[i] == IN_PROGRESS)
+ Encounters[i] = NOT_STARTED;
+
+ OUT_LOAD_INST_DATA_COMPLETE;
+ }
+};
+
+InstanceData* GetInstanceData_instance_black_temple(Map* map)
+{
+ return new instance_black_temple(map);
+}
+
+void AddSC_instance_black_temple()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_black_temple";
+ newscript->GetInstanceData = &GetInstanceData_instance_black_temple;
+ newscript->RegisterSelf();
+}
+
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_epoch.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_epoch.cpp
new file mode 100644
index 00000000000..de2ff9b93fd
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_epoch.cpp
@@ -0,0 +1,86 @@
+/* Script Data Start
+SDName: Boss epoch
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CURSE_OF_EXERTION 52772
+#define SPELL_TIME_WARP 52766 //Time slows down, reducing attack, casting and movement speed by 70% for 6 sec.
+#define SPELL_TIME_STOP 58848 //Stops time in a 50 yard sphere for 2 sec.
+#define SPELL_WOUNDING_STRIKE_N 52771 //Used only on the tank
+#define SPELL_WOUNDING_STRIKE_H 58830
+
+//Say
+#define SAY_INTRO -1595000 //"Prince Arthas Menethil, on this day, a powerful darkness has taken hold of your soul. The death you are destined to visit upon others will this day be your own."
+#define SAY_AGGRO -1595001 //"We'll see about that, young prince."
+#define SAY_TIME_WARP_1 -1595002 //"Tick tock, tick tock..."
+#define SAY_TIME_WARP_2 -1595003 //"Not quick enough!"
+#define SAY_TIME_WARP_3 -1595004 //"Let's get this over with. "
+#define SAY_SLAY_1 -1595005 //"There is no future for you."
+#define SAY_SLAY_2 -1595006 //"This is the hour of our greatest triumph!"
+#define SAY_SLAY_3 -1595007 //"You were destined to fail. "
+#define SAY_DEATH -1595008 //"*gurgles*"
+
+struct TRINITY_DLL_DECL boss_epochAI : public ScriptedAI
+{
+ boss_epochAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0:DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1:DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2:DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_epoch(Creature *_Creature)
+{
+ return new boss_epochAI (_Creature);
+}
+
+void AddSC_boss_epoch()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_epoch";
+ newscript->GetAI = GetAI_boss_epoch;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp
new file mode 100644
index 00000000000..12cbb5f27a3
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp
@@ -0,0 +1,123 @@
+/* Script Data Start
+SDName: Boss mal_ganis
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_mal_ganis' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CARRION_SWARM_N 52720 //A cresting wave of chaotic magic splashes over enemies in front of the caster, dealing 3230 to 3570 Shadow damage and 380 to 420 Shadow damage every 3 sec. for 15 sec.
+#define SPELL_CARRION_SWARM_H 58852
+#define SPELL_MIND_BLAST_N 52722 //Inflicts 4163 to 4837 Shadow damage to an enemy.
+#define SPELL_MIND_BLAST_H 58850
+#define SPELL_SLEEP 52721 //Puts an enemy to sleep for up to 10 sec. Any damage caused will awaken the target.
+#define SPELL_VAMPIRIC_TOUCH 52723 //Heals the caster for half the damage dealt by a melee attack.
+
+//Yell Mal'ganis
+#define SAY_INTRO_1 -1595009
+#define SAY_INTRO_2 -1595010
+#define SAY_OUTRO -1595011
+#define SAY_AGGRO -1595012
+#define SAY_KILL_1 -1595013
+#define SAY_KILL_2 -1595014
+#define SAY_KILL_3 -1595015
+#define SAY_SLAY_1 -1595016
+#define SAY_SLAY_2 -1595017
+#define SAY_SLAY_3 -1595018
+#define SAY_SLAY_4 -1595019
+#define SAY_SLEEP_1 -1595020
+#define SAY_SLEEP_2 -1595021
+#define SAY_30HEALTH -1595022
+#define SAY_15HEALTH -1595023
+#define SAY_ESCAPE_SPEECH_1 -1595024
+#define SAY_ESCAPE_SPEECH_2 -1595025
+
+struct TRINITY_DLL_DECL boss_mal_ganisAI : public ScriptedAI
+{
+ boss_mal_ganisAI(Creature *c) : ScriptedAI(c) {}
+
+ bool yelled,
+ yelled2,
+ yelled3;
+
+ void Reset()
+ {
+ yelled = false;
+ yelled2 = false;
+ yelled3 = false;
+ }
+
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if(!yelled)
+ {
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 30)
+ {
+ DoScriptText(SAY_30HEALTH, m_creature);
+ yelled = true;
+ }
+ }
+
+ if(!yelled2)
+ {
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 15)
+ {
+ DoScriptText(SAY_15HEALTH, m_creature);
+ yelled2 = true;
+ }
+ }
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 1)
+ {
+ //Handle Escape Event
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%4)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ case 3: DoScriptText(SAY_SLAY_4, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_mal_ganis(Creature *_Creature)
+{
+ return new boss_mal_ganisAI (_Creature);
+}
+
+void AddSC_boss_mal_ganis()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_mal_ganis";
+ newscript->GetAI = GetAI_boss_mal_ganis;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_meathook.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_meathook.cpp
new file mode 100644
index 00000000000..187889cb053
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_meathook.cpp
@@ -0,0 +1,138 @@
+/* Script Data Start
+SDName: Boss meathook
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_meathook' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spell
+#define SPELL_CONSTRICTING_CHAINS_N 52696 //Encases the targets in chains, dealing 1800 Physical damage every 1 sec. and stunning the target for 5 sec.
+#define SPELL_CONSTRICTING_CHAINS_H 58823
+#define SPELL_DISEASE_EXPULSION_N 52666 //Meathook belches out a cloud of disease, dealing 1710 to 1890 Nature damage and interrupting the spell casting of nearby enemy targets for 4 sec.
+#define SPELL_DISEASE_EXPULSION_H 58824
+#define SPELL_FRENZY 58841 //Increases the caster's Physical damage by 10% for 30 sec.
+
+//Yell
+#define SAY_AGGRO -1595026
+#define SAY_SLAY_1 -1595027
+#define SAY_SLAY_2 -1595028
+#define SAY_SLAY_3 -1595029
+#define SAY_SPAWN -1595030
+#define SAY_DEATH -1595031
+
+struct TRINITY_DLL_DECL boss_meathookAI : public ScriptedAI
+{
+ boss_meathookAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 Chain_Timer,
+ Disease_Timer,
+ Frenzy_Timer;
+
+ void Reset()
+ {
+ Chain_Timer = 12000 + rand()%5000; //seen on video 13, 17, 15, 12, 16
+ Disease_Timer = 2000 + rand()%1000; //approx 3s
+ Frenzy_Timer = 20000 + rand()%10000; //made it up
+ }
+
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+
+ void AttackStart(Unit* who) {}
+
+ std::list <Unit*>pList;
+ void MoveInLineOfSight(Unit* who, const uint32 diff)
+ {
+ /*if (m_creature->isHostileTo(who))
+ {
+ pList.append(who);
+ }*/
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if(Disease_Timer < diff)
+ {
+ DoCast(m_creature->getVictim(), SPELL_DISEASE_EXPULSION_N);
+ Disease_Timer = 1500 + rand()%2500;
+ }else Disease_Timer -= diff;
+
+ if(Frenzy_Timer < diff)
+ {
+ DoCast(m_creature->getVictim(), SPELL_FRENZY);
+ Frenzy_Timer = 20000 + rand()%10000;
+ }else Frenzy_Timer -= diff;
+
+ if(Chain_Timer < diff)
+ {
+
+ /*
+ std::list<HostilReference*>& m_threatlist = m_creature->getThreatManager().getThreatList();
+ std::list<HostilReference*>::iterator itr;
+
+ int st=0;
+ for(itr = m_threatlist.begin(); itr != m_threatlist.end(); ++itr)
+ {
+ //st++;
+ m_creature->getThreatManager().
+ }
+ Unit* targets[st];
+ int st2=0;
+ for(int i=1; i<=st; i++){
+ if(!IsWithinLOSInMap(targets[i])
+ st2++;
+ }
+ Unit* targets_out_of_LOS[st2];*/
+
+ DoCast(SelectUnit(SELECT_TARGET_RANDOM, 1), SPELL_CONSTRICTING_CHAINS_N); //anyone but the tank
+ Chain_Timer = 2000 + rand()%1000;
+ }else Chain_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_meathook(Creature *_Creature)
+{
+ return new boss_meathookAI (_Creature);
+}
+
+void AddSC_boss_meathook()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_meathook";
+ newscript->GetAI = GetAI_boss_meathook;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_salramm.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_salramm.cpp
new file mode 100644
index 00000000000..7226a1304dc
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/boss_salramm.cpp
@@ -0,0 +1,152 @@
+/* Script Data Start
+SDName: Boss salramm
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_salramm' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CURSE_OF_TWISTED_FLESH 58845
+#define SPELL_EXPLODE_GHOUL_N 52480
+#define SPELL_EXPLODE_GHOUL_H 58825
+#define SPELL_SHADOW_BOLT_N 57725
+#define SPELL_SHADOW_BOLT_H 58828
+#define SPELL_STEAL_FLESH 52708
+#define SPELL_SUMMON_GHOULS 52451
+
+//Yell
+#define SAY_AGGRO -1595032
+#define SAY_SPAWN -1595033
+#define SAY_SLAY_1 -1595034
+#define SAY_SLAY_2 -1595035
+#define SAY_SLAY_3 -1595036
+#define SAY_DEATH -1595037
+#define SAY_EXPLODE_GHOUL_1 -1595038
+#define SAY_EXPLODE_GHOUL_2 -1595039
+#define SAY_STEAL_FLESH_1 -1595040
+#define SAY_STEAL_FLESH_2 -1595041
+#define SAY_STEAL_FLESH_3 -1595042
+#define SAY_SUMMON_GHOULS_1 -1595043
+#define SAY_SUMMON_GHOULS_2 -1595044
+
+struct TRINITY_DLL_DECL boss_salrammAI : public ScriptedAI
+{
+ boss_salrammAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 Curse_flesh_Timer,
+ Explode_ghoul_Timer,
+ Shadow_bolt_Timer,
+ Steal_flesh_Timer,
+ Summon_ghouls_Timer;
+
+ void Reset()
+ {
+ Curse_flesh_Timer = 30000; //30s DBM
+ Explode_ghoul_Timer = 25000 + rand()%3000; //approx 6 sec after summon ghouls
+ Shadow_bolt_Timer = 8000 + rand()%4000; // approx 10s
+ Steal_flesh_Timer = 12345;
+ Summon_ghouls_Timer = 19000 + rand()%5000; //on a video approx 24s after aggro
+ }
+
+ void Aggro(Unit* who)
+ {DoScriptText(SAY_AGGRO, m_creature);}
+
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ Unit* random_target = SelectUnit(SELECT_TARGET_RANDOM, 0);
+
+ //Curse of twisted flesh timer
+ if (Curse_flesh_Timer < diff)
+ {
+ DoCast(m_creature->getVictim(),SPELL_CURSE_OF_TWISTED_FLESH);
+ Curse_flesh_Timer = 37000;
+ }else Curse_flesh_Timer -= diff;
+
+ //Shadow bolt timer
+ if (Shadow_bolt_Timer < diff)
+ {
+ DoCast(random_target,SPELL_SHADOW_BOLT_N);
+ Shadow_bolt_Timer = 8000 + rand()%4000;
+ }else Shadow_bolt_Timer -= diff;
+
+ //Steal Flesh timer
+ if (Steal_flesh_Timer < diff)
+ {
+ switch(rand()%3)
+ {
+ case 0:
+ DoScriptText(SAY_STEAL_FLESH_1, m_creature);
+ break;
+ case 1:
+ DoScriptText(SAY_STEAL_FLESH_2, m_creature);
+ break;
+ case 2:
+ DoScriptText(SAY_STEAL_FLESH_3, m_creature);
+ break;
+ }
+ DoCast(random_target,SPELL_STEAL_FLESH);
+ Steal_flesh_Timer = 10000;
+ }else Steal_flesh_Timer -= diff;
+
+ //Summon ghouls timer
+ if (Summon_ghouls_Timer < diff)
+ {
+ switch(rand()%2)
+ {
+ case 0:
+ DoScriptText(SAY_SUMMON_GHOULS_1, m_creature);
+ break;
+ case 1:
+ DoScriptText(SAY_SUMMON_GHOULS_2, m_creature);
+ break;
+ }
+ DoCast(random_target,SPELL_SUMMON_GHOULS);
+ Summon_ghouls_Timer = 10000;
+ }else Summon_ghouls_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+
+ void JustDied(Unit* killer)
+ {DoScriptText(SAY_DEATH, m_creature);}
+
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_salramm(Creature *_Creature)
+{
+ return new boss_salrammAI (_Creature);
+}
+
+void AddSC_boss_salramm()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_salramm";
+ newscript->GetAI = GetAI_boss_salramm;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/def_culling_of_stratholme.h b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/def_culling_of_stratholme.h
new file mode 100644
index 00000000000..849549e8f99
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/def_culling_of_stratholme.h
@@ -0,0 +1,4 @@
+#ifndef DEF_CULLING_OF_STRATHOLME_H
+#define DEF_CULLING_OF_STRATHOLME_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp
new file mode 100644
index 00000000000..936f8365a35
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_culling_of_stratholme.h"
+
+struct TRINITY_DLL_DECL instance_culling_of_stratholme : public ScriptedInstance
+{
+ instance_culling_of_stratholme(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_culling_of_stratholme(Map* map)
+{
+ return new instance_culling_of_stratholme(map);
+}
+
+void AddSC_instance_culling_of_stratholme()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_culling_of_stratholme";
+ newscript->GetInstanceData = GetInstanceData_instance_culling_of_stratholme;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/draktharon_keep/boss_dred.cpp b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_dred.cpp
new file mode 100644
index 00000000000..a1980b7506b
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_dred.cpp
@@ -0,0 +1,56 @@
+/* Script Data Start
+SDName: Boss dred
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_BELLOWING_ROAR 44863 // fears the group, can be resisted/dispelled
+#define SPELL_GRIEVOUS_BITE 48920
+#define SPELL_MANGLING_SLASH 48873 //casted on the current tank, adds debuf
+#define SPELL_FEARSOME_ROAR_N 48849
+#define SPELL_FEARSOME_ROAR_H 48849 //Not stacking, debuff
+#define SPELL_PIERCING_SLASH 48878 //debuff -->Armor reduced by 75%
+#define SPELL_RAPTOR_CALL 59416 //dummy
+
+
+struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
+{
+ boss_dredAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_boss_dred(Creature *_Creature)
+{
+ return new boss_dredAI (_Creature);
+}
+
+void AddSC_boss_dred()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_dred";
+ newscript->GetAI = GetAI_boss_dred;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/draktharon_keep/boss_novos.cpp b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_novos.cpp
new file mode 100644
index 00000000000..54392bc3b1f
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_novos.cpp
@@ -0,0 +1,75 @@
+/* Script Data Start
+SDName: Boss novos
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_novos' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ARCANE_BLAST_N 49198
+#define SPELL_ARCANE_BLAST_H 59909
+#define SPELL_ARCANE_FIELD 47346
+#define SPELL_BLIZZARD_N 49034
+#define SPELL_BLIZZARD_H 59854
+#define SPELL_FROSTBOLT_N 49037
+#define SPELL_FROSTBOLT_H 59855
+#define SPELL_WRATH_OF_MISERY_N 50089
+#define SPELL_WRATH_OF_MISERY_H 59856
+#define SPELL_SUMMON_MINIONS 59910 //Summons an army of Fetid Troll Corpses to assist the caster.
+
+//Yell
+#define SAY_AGGRO -1600000
+#define SAY_KILL -1600001
+#define SAY_DEATH -1600002
+#define SAY_NECRO_ADD -1600003
+#define SAY_REUBBLE_1 -1600004
+#define SAY_REUBBLE_2 -1600005
+
+struct TRINITY_DLL_DECL boss_novosAI : public ScriptedAI
+{
+ boss_novosAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_novos(Creature *_Creature)
+{
+ return new boss_novosAI (_Creature);
+}
+
+void AddSC_boss_novos()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_novos";
+ newscript->GetAI = GetAI_boss_novos;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/draktharon_keep/boss_tharon_ja.cpp b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_tharon_ja.cpp
new file mode 100644
index 00000000000..1454a9de8f5
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_tharon_ja.cpp
@@ -0,0 +1,88 @@
+/* Script Data Start
+SDName: Boss tharon_ja
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_tharon_ja' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_COURSE_OF_LIFE 49527
+#define SPELL_DECAY_FLESH 49356 //casted at end of pahase 1, starts phase 2
+#define SPELL_EYE_BEAM_N 49544
+#define SPELL_LIGHTNING_BREATH_N 49537
+#define SPELL_POISON_CLOUD_N 49548
+#define SPELL_RAIN_OF_FIRE_N 49518
+#define SPELL_RETURN_FLESH 53463 //Channeled spell ending phase two and returning to phase 1. This ability will stun the party for 6 seconds.
+#define SPELL_SHADOW_VOLLEY_N 49528
+
+//Spells Heroic
+#define SPELL_COURSE_OF_LIFE_H 59972
+#define SPELL_EYE_BEAM_H 59965
+#define SPELL_LIGHTNING_BREATH_H 59963
+#define SPELL_POISON_CLOUD_H 59969
+#define SPELL_RAIN_OF_FIRE_H 59971
+#define SPELL_SHADOW_VOLLEY_H 59973
+
+//Players skills durring Phase2
+#define PLAYER_PHASE2_SLAYING_STRIKE 50799
+#define PLAYER_PHASE2_TAUNT 49613
+#define PLAYER_PHASE2_BONE_ARMOR 49609
+#define PLAYER_PHASE2_TOUCH_OF_LIFE 49617
+//Phase 1 all abilities except Eye beam
+//Phase 2 turns players to skeletons with new abilities, boss grows skin
+
+//Yell
+#define SAY_AGGRO 1600011
+#define SAY_KILL_1 1600012
+#define SAY_KILL_2 1600013
+#define SAY_FLESH_1 1600014
+#define SAY_FLESH_2 1600015
+#define SAY_SKELETON_1 1600016
+#define SAY_SKELETON_2 1600017
+#define SAY_DEATH 1600018
+
+struct TRINITY_DLL_DECL boss_tharon_jaAI : public ScriptedAI
+{
+ boss_tharon_jaAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH,m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_tharon_ja(Creature *_Creature)
+{
+ return new boss_tharon_jaAI (_Creature);
+}
+
+void AddSC_boss_tharon_ja()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_tharon_ja";
+ newscript->GetAI = GetAI_boss_tharon_ja;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/draktharon_keep/boss_trollgore.cpp b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_trollgore.cpp
new file mode 100644
index 00000000000..bfc123edb4d
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/draktharon_keep/boss_trollgore.cpp
@@ -0,0 +1,75 @@
+/* Script Data Start
+SDName: Boss trollgore
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_trollgore' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spell
+#define SPELL_INFECTED_WOUND 49637
+#define SPELL_CRUSH 49639
+#define SPELL_CORPSE_EXPLODE_N 49555
+#define SPELL_CONSUME_N 49380
+
+//Spell Heroic
+#define SPELL_CORPSE_EXPLODE_H 59807
+#define SPELL_CONSUME_H 59803
+
+//Yell
+#define SAY_AGGRO -1600006
+#define SAY_KILL -1600007
+#define SAY_CONSUME -1600008
+#define SAY_EXPLODE -1600009
+#define SAY_DEATH -1600010
+
+struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
+{
+ boss_trollgoreAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_trollgore(Creature *_Creature)
+{
+ return new boss_trollgoreAI (_Creature);
+}
+
+void AddSC_boss_trollgore()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_trollgore";
+ newscript->GetAI = GetAI_boss_trollgore;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/draktharon_keep/def_drak_tharon_keep.h b/src/bindings/scripts/scripts/zone/draktharon_keep/def_drak_tharon_keep.h
new file mode 100644
index 00000000000..321d77a9c27
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/draktharon_keep/def_drak_tharon_keep.h
@@ -0,0 +1,4 @@
+#ifndef DEF_DRAK_THARON_H
+#define DEF_DRAK_THARON_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/draktharon_keep/instance_drak_tharon_keep.cpp b/src/bindings/scripts/scripts/zone/draktharon_keep/instance_drak_tharon_keep.cpp
new file mode 100644
index 00000000000..3f3cd32e764
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/draktharon_keep/instance_drak_tharon_keep.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_drak_tharon_keep.h"
+
+struct TRINITY_DLL_DECL instance_drak_tharon : public ScriptedInstance
+{
+ instance_drak_tharon(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_drak_tharon(Map* map)
+{
+ return new instance_drak_tharon(map);
+}
+
+void AddSC_instance_drak_tharon()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_drak_tharon";
+ newscript->GetInstanceData = GetInstanceData_instance_drak_tharon;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/gundrak/boss_drakkari_colossus.cpp b/src/bindings/scripts/scripts/zone/gundrak/boss_drakkari_colossus.cpp
new file mode 100644
index 00000000000..0b2fc89dd97
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/gundrak/boss_drakkari_colossus.cpp
@@ -0,0 +1,55 @@
+/* Script Data Start
+SDName: Boss Drakkari Colossus
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_EMERGE 54850 //to phase2, Colossus unatackable, Elemental emerges
+#define SPELL_EMERGE_2 54851
+#define SPELL_MIGHTY_BLOW 54719
+
+struct TRINITY_DLL_DECL boss_drakkari_colossusAI : public ScriptedAI
+{
+ boss_drakkari_colossusAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ phase =1;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_boss_drakkari_colossus(Creature *_Creature)
+{
+ return new boss_drakkari_colossusAI (_Creature);
+}
+
+void AddSC_boss_drakkari_colossus()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_drakkari_colossus";
+ newscript->GetAI = GetAI_boss_drakkari_colossus;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/gundrak/boss_eck.cpp b/src/bindings/scripts/scripts/zone/gundrak/boss_eck.cpp
new file mode 100644
index 00000000000..9c518bee397
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/gundrak/boss_eck.cpp
@@ -0,0 +1,65 @@
+/* Script Data Start
+SDName: Boss Eck the Ferocious
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment: Only appears in Heroic mode
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+#define SPELL_ECK_BERSERK 55816 //Eck goes berserk, increasing his attack speed by 150% and all damage he deals by 500%.
+#define SPELL_ECK_BITE 55813 //Eck bites down hard, inflicting 150% of his normal damage to an enemy.
+#define SPELL_ECK_SPIT 55814 //Eck spits toxic bile at enemies in a cone in front of him, inflicting 2970 Nature damage and draining 220 mana every 1 sec for 3 sec.
+#define SPELL_ECK_SPRING_1 55815 //Eck leaps at a distant target. --> Drops aggro and charges a random player. Tank can simply taunt him back.
+#define SPELL_ECK_SPRING_2 55837 //Eck leaps at a distant target.
+
+struct TRINITY_DLL_DECL boss_eckAI : public ScriptedAI
+{
+ boss_eckAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 berserk;
+
+ void Reset()
+ {
+ //Source Deadly Boss Mod
+ berserk = 120000; //2min
+ }
+
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if(berserk < diff)
+ {
+ DoCast(m_creature,SPELL_ECK_BERSERK);
+ berserk = 120000;
+ }else berserk -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_boss_eck(Creature *_Creature)
+{
+ return new boss_eckAI (_Creature);
+}
+
+void AddSC_boss_eck()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_eck";
+ newscript->GetAI = GetAI_boss_eck;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/gundrak/boss_gal_darah.cpp b/src/bindings/scripts/scripts/zone/gundrak/boss_gal_darah.cpp
new file mode 100644
index 00000000000..71654de9852
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/gundrak/boss_gal_darah.cpp
@@ -0,0 +1,85 @@
+/* Script Data Start
+SDName: Boss gal_darah
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ENRAGE 55285
+#define SPELL_IMPALING_CHARGE 54956
+#define SPELL_STOMP 55292
+
+#define SPELL_PUNCTURE 55276
+#define SPELL_STAMPEDE 55218
+#define SPELL_WHIRLING_SLASH 55285
+
+//Yells
+#define SAY_AGGRO -1604000
+#define SAY_SLAY_1 -1604001
+#define SAY_SLAY_2 -1604002
+#define SAY_SLAY_3 -1604003
+#define SAY_DEATH -1604004
+#define SAY_SUMMON_RHINO_1 -1604005
+#define SAY_SUMMON_RHINO_2 -1604006
+#define SAY_SUMMON_RHINO_3 -1604007
+#define SAY_TRANSFORM_1 -1604008 //Phase change
+#define SAY_TRANSFORM_2 -1604009
+
+struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
+{
+ boss_gal_darahAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_gal_darah(Creature *_Creature)
+{
+ return new boss_gal_darahAI (_Creature);
+}
+
+void AddSC_boss_gal_darah()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_gal_darah";
+ newscript->GetAI = GetAI_boss_gal_darah;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/gundrak/boss_moorabi.cpp b/src/bindings/scripts/scripts/zone/gundrak/boss_moorabi.cpp
new file mode 100644
index 00000000000..49afd7b8126
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/gundrak/boss_moorabi.cpp
@@ -0,0 +1,88 @@
+/* Script Data Start
+SDName: Boss moorabi
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_moorabi' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_DETERMINED_GORE 55102
+#define SPELL_DETERMINED_STAB_2 59444
+#define SPELL_DETERMINED_STAB_3 55104
+
+#define SPELL_GROUND_TREMOR 55142
+#define SPELL_MOJO_FRENZY 55163
+#define SPELL_NUMBING_ROAR_1 55100
+#define SPELL_NUMBING_ROAR_2 55106
+#define SPELL_TRANSFORMATION 55098 //Periodic, The caster transforms into a powerful mammoth, increasing Physical damage done by 25% and granting immunity to Stun effects.
+#define SPELL_QUAKE 55101
+
+//Yell
+#define SAY_AGGRO -1604010
+#define SAY_SLAY_1 -1604011
+#define SAY_SLAY_2 -1604012
+#define SAY_SLAY_3 -1604013
+#define SAY_DEATH -1604014
+#define SAY_TRANSFORM -1604015
+#define SAY_QUAKE -1604016
+
+struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
+{
+ boss_moorabiAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ phase =1;
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_moorabi(Creature *_Creature)
+{
+ return new boss_moorabiAI (_Creature);
+}
+
+void AddSC_boss_moorabi()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_moorabi";
+ newscript->GetAI = GetAI_boss_moorabi;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/gundrak/boss_slad_ran.cpp b/src/bindings/scripts/scripts/zone/gundrak/boss_slad_ran.cpp
new file mode 100644
index 00000000000..7efd16fc375
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/gundrak/boss_slad_ran.cpp
@@ -0,0 +1,95 @@
+/* Script Data Start
+SDName: Boss slad_ran
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_slad_ran' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_POISON_NOVA 55081
+#define SPELL_POISON_NOVA_2 59842
+//--
+#define SPELL_POWERFUL_BITE 48287
+#define SPELL_POWERFUL_BITE_2 59840
+//--
+#define SPELL_VENOM_BOLT 54970
+#define SPELL_VENOM_BOLT_2 59839
+//At 30% HPStart summoning small serpents
+
+//Yell
+#define SAY_AGGRO -1604017
+#define SAY_SLAY_1 -1604018
+#define SAY_SLAY_2 -1604019
+#define SAY_SLAY_3 -1604020
+#define SAY_DEATH -1604021
+#define SAY_SUMMON_SNAKES -1604022 //npc 29680
+#define SAY_SUMMON_CONSTRICTORS -1604023 //npc 29713, can cast Grip of Slad'ran (spell 55093)
+
+struct TRINITY_DLL_DECL boss_slad_ranAI : public ScriptedAI
+{
+ boss_slad_ranAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 30)
+ {
+ //Summon 3 snakes --> npc 29680
+ DoScriptText(SAY_SUMMON_SNAKES,m_creature);
+ }
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
+ {
+ //Summon 3 constrictors --> npc 29713
+ DoScriptText(SAY_SUMMON_CONSTRICTORS,m_creature);
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%3)
+ {
+ case 0:DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1:DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2:DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_slad_ran(Creature *_Creature)
+{
+ return new boss_slad_ranAI (_Creature);
+}
+
+void AddSC_boss_slad_ran()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_slad_ran";
+ newscript->GetAI = GetAI_boss_slad_ran;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/gundrak/def_gundrak.h b/src/bindings/scripts/scripts/zone/gundrak/def_gundrak.h
new file mode 100644
index 00000000000..5f015610312
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/gundrak/def_gundrak.h
@@ -0,0 +1,4 @@
+#ifndef DEF_GUNDRAK_H
+#define DEF_GUNDRAK_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/gundrak/instance_gundrak.cpp b/src/bindings/scripts/scripts/zone/gundrak/instance_gundrak.cpp
new file mode 100644
index 00000000000..88df9e1b73c
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/gundrak/instance_gundrak.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_gundrak.h"
+
+struct TRINITY_DLL_DECL instance_gundrak : public ScriptedInstance
+{
+ instance_gundrak(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_gundrak(Map* map)
+{
+ return new instance_gundrak(map);
+}
+
+void AddSC_instance_gundrak()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_gundrak";
+ newscript->GetInstanceData = GetInstanceData_instance_gundrak;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/boss_malygos.cpp b/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/boss_malygos.cpp
new file mode 100644
index 00000000000..25a156b1bc4
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/boss_malygos.cpp
@@ -0,0 +1,170 @@
+/* Script Data Start
+SDName: Boss malygos
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ARCANE_BREATH_N 56272
+#define SPELL_ARCANE_BREATH_H 60072
+#define SPELL_ARCANE_PULSE 57432
+#define SPELL_ARCANE_STORM_1 57459
+#define SPELL_ARCANE_STORM_2 61693
+#define SPELL_ARCANE_STORM_3 61694
+#define SPELL_STATIC_FIELD 57430
+#define SPELL_SURGE_OF_POWER_1 56505
+#define SPELL_SURGE_OF_POWER_2 57407
+#define SPELL_SURGE_OF_POWER_3 60936
+#define SPELL_VORTEX 56105
+
+//Dragon "mounts" spells in Phase3
+//they use Rugelike energy
+#define SPELL_DMOUNT_FLAME_SPIKE 56091 //maybe not accurate
+#define SPELL_DMOUNT_ENGULF_IN_FLAMES 61621
+#define SPELL_DMOUNT_REVIVIFY 57090
+#define SPELL_DMOUNT_LIFE_BURST 57143
+#define SPELL_DMOUNT_FLAME_SHIELD 57108
+//#define SPELL_DMOUNT_UNKNOWN XYZ //Increases your drake's flight speed by 500%.
+
+
+//Yell
+//-->Other
+#define SAY_ANTI_MAGIC_SHELL -1616000
+#define SAY_BREATH_ATTACK -1616001
+#define SAY_HIGH_DAMAGE_MODE -1616002
+#define SAY_MAGIC_BLAST -1616003
+//--> Generic Spells
+#define SAY_GENERIC_SPELL_1 -1616004
+#define SAY_GENERIC_SPELL_2 -1616005
+#define SAY_GENERIC_SPELL_3 -1616006
+#define SAY_DEATH -1616007
+//--> Prefight
+#define SAY_PREFIGHT_1 -1616008
+#define SAY_PREFIGHT_2 -1616009
+#define SAY_PREFIGHT_3 -1616010
+#define SAY_PREFIGHT_4 -1616011
+#define SAY_PREFIGHT_5 -1616012
+//--> Phase1
+#define SAY_PHASE1_AGGRO -1616013
+#define SAY_PHASE1_END -1616014
+#define SAY_PHASE1_SLAY_1 -1616015
+#define SAY_PHASE1_SLAY_2 -1616016
+#define SAY_PHASE1_SLAY_3 -1616017
+
+//--> Phase2 at 50% HP,
+
+/*Malygos himself is not targetable during this phase, it will end when the adds he spawns are all killed. However, he does continue to play a part in the encounter.
+During this phase he drops anti-magic zones onto the ground the raid MUST stand inside of, it reduces magical damage taken by 50%. They shrink over time, so it's important that your raid moves to each new one he drops.
+Throughout the phase, he will deep breath doing ~4k damage per second, unless you are standing inside of the anti-magic zone.
+The way the fight works during this phase is there are NPCs riding around on disks in the room. There are two types of mobs, Lords and Scions.
+The Lords will move down onto the group, and need to be tanked (They will one-shot a non-tank). After they die, they drop a disk that a raid member can mount onto, which allows them to fly, to attack the Scions that do not come down to the ground.
+It is recommended to let melee take the first disks, then ranged. As those mobs die, they also drop disks, which allows the rest of your dps to get onto them.
+The Scions will continually cast Arcane Blast on random targets on the floor, which is mitigated by the anti-magic zones. While mounted on a disk, you will not take damage.
+After all of the NPCs riding on the disks die, the players on the disks need to dismount as Phase 3 is about to begin.*/
+
+#define SAY_PHASE2_AGGRO -1616018
+#define SAY_PHASE2_END -1616019
+#define SAY_PHASE2_SLAY_1 -1616020
+#define SAY_PHASE2_SLAY_2 -1616021
+#define SAY_PHASE2_SLAY_3 -1616022
+//--> Phase3 Malygos destroys the floor, encounter continues on dragon "mounts"
+#define SAY_PHASE3_INTRO -1616023
+#define SAY_PHASE3_AGGRO -1616024
+#define SAY_PHASE3_SLAY_1 -1616025
+#define SAY_PHASE3_SLAY_2 -1616026
+#define SAY_PHASE3_SLAY_3 -1616027
+#define SAY_PHASE3_BIG_ATTACK -1616028
+
+struct TRINITY_DLL_DECL boss_malygosAI : public ScriptedAI
+{
+ boss_malygosAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase,
+ enrage;
+
+ void Reset()
+ {
+ //Source Deadly Boss Mod
+ enrage = 615000; //10 min
+ }
+ void Aggro(Unit* who)
+ {
+ if(phase == 1)
+ DoScriptText(SAY_PHASE1_AGGRO, m_creature);
+ if(phase == 2)
+ DoScriptText(SAY_PHASE1_AGGRO, m_creature);
+ if(phase == 3)
+ DoScriptText(SAY_PHASE1_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ phase =1;
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 50){
+ phase = 2;
+ //spawn adds
+ //set malygos unatackable untill all adds spawned dead
+ //start phase3
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ if(phase ==1)
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_PHASE1_SLAY_1, m_creature); break;
+ case 1: DoScriptText(SAY_PHASE1_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_PHASE1_SLAY_3, m_creature);break;
+ }
+ if(phase ==2)
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_PHASE2_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_PHASE2_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_PHASE2_SLAY_3, m_creature);break;
+ }
+ if(phase ==3)
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_PHASE3_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_PHASE3_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_PHASE3_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_malygos(Creature *_Creature)
+{
+ return new boss_malygosAI (_Creature);
+}
+
+void AddSC_boss_malygos()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_malygos";
+ newscript->GetAI = GetAI_boss_malygos;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/def_eye_of_eternity.h b/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/def_eye_of_eternity.h
new file mode 100644
index 00000000000..caa82a92e95
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/def_eye_of_eternity.h
@@ -0,0 +1,4 @@
+#ifndef DEF_EYE_OF_ETERNITY_H
+#define DEF_EYE_OF_ETERNITY_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/instance_eye_of_eternity.cpp b/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/instance_eye_of_eternity.cpp
new file mode 100644
index 00000000000..48d26f2bcd9
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/eye_of_eternity/instance_eye_of_eternity.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_eye_of_eternity.h"
+
+struct TRINITY_DLL_DECL instance_eye_of_eternity : public ScriptedInstance
+{
+ instance_eye_of_eternity(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_eye_of_eternity(Map* map)
+{
+ return new instance_eye_of_eternity(map);
+}
+
+void AddSC_instance_eye_of_eternity()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_eye_of_eternity";
+ newscript->GetInstanceData = GetInstanceData_instance_eye_of_eternity;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp
new file mode 100644
index 00000000000..559a9081226
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp
@@ -0,0 +1,149 @@
+/* Script Data Start
+SDName: Boss anomalus
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_SPARK_1 47751
+#define SPELL_SPARK_2 57062
+#define SPELL_RIFT_SHIELD 47748
+#define SPELL_CHARGE_RIFT 47747
+#define SPELL_ARCANE_ATTRACTION 57063
+#define SPELL_CREATE_RIFT 47743 //Dummy ---> summons (npc 26918) "Chaotic Rift", which spawns "Crazed Mana Wraith"s (npc 26746)
+
+#define MOB_CRAZED_MANA_WRAITH 26746
+#define NPC_CHAOTIC_RIFT 26918
+
+//Yell
+#define SAY_AGGRO -1576000
+#define SAY_KILL -1576001
+#define SAY_DEATH -1576002
+#define SAY_RIFT -1576003
+#define SAY_SHIELD -1576004
+
+struct TRINITY_DLL_DECL boss_anomalusAI : public ScriptedAI
+{
+ boss_anomalusAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ //Source DBM
+ if((((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 80) && ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) > 77))
+ || (((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 55) && ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) > 52))
+ || (((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 30) && ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) > 27)))
+ {
+ //Summon rift at a random location
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+/*######
+## Crazed Mana Wraiths
+######*/
+#define SPELL_ARCANE_MISSILES 33833
+
+struct TRINITY_DLL_DECL mob_crazed_mana_wraithAI : public ScriptedAI
+{
+ mob_crazed_mana_wraithAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+/*######
+## Chaotic Rift
+######*/
+#define SPELL_CHAOTIC_ENERGY_BURST 47688
+#define SPELL_CHARGED_CHAOTIC_ENERGY_BURST 47737
+
+struct TRINITY_DLL_DECL npc_chaotic_riftAI : public ScriptedAI
+{
+ npc_chaotic_riftAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_npc_chaotic_rift(Creature *_Creature)
+{
+ return new npc_chaotic_riftAI (_Creature);
+}
+
+CreatureAI* GetAI_boss_anomalus(Creature *_Creature)
+{
+ return new boss_anomalusAI (_Creature);
+}
+
+CreatureAI* GetAI_mob_crazed_mana_wraith(Creature *_Creature)
+{
+ return new boss_anomalusAI (_Creature);
+}
+
+void AddSC_boss_anomalus()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_anomalus";
+ newscript->GetAI = GetAI_boss_anomalus;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_crazed_mana_wraith";
+ newscript->GetAI = GetAI_mob_crazed_mana_wraith;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="npc_chaotic_rift";
+ newscript->GetAI = GetAI_npc_chaotic_rift;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp
new file mode 100644
index 00000000000..7c764c3ec1a
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp
@@ -0,0 +1,89 @@
+/* Script Data Start
+SDName: Boss keristrasza
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_maiden_of_grief' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_TAIL_SWEEP 50155
+#define SPELL_CRYSTAL_CHAINS 50997
+#define SPELL_ENRAGE 8599
+#define SPELL_CRYSTALFIRE_BREATH_1 48096
+#define SPELL_CRYSTALFIRE_BREATH_2 57091
+#define SPELL_CRYSTALIZE 48179
+#define SPELL_INTENSE_COLD 48095 //stackable debuff
+
+//Yell
+#define SAY_AGGRO -1576005
+#define SAY_SLAY -1576006
+#define SAY_ENRAGE -1576007
+#define SAY_DEATH -1576008
+#define SAY_CRYSTAL_NOVA -1576009
+
+struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI
+{
+ boss_keristraszaAI(Creature *c) : ScriptedAI(c) {}
+
+ bool enraged;
+
+ void Reset()
+ {
+ enraged = false;
+ }
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) == 10)
+ {
+ if(!enraged)
+ {
+ DoScriptText(SAY_ENRAGE, m_creature);
+ DoCast(m_creature, SPELL_ENRAGE);
+ enraged = true;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ DoScriptText(SAY_SLAY, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_keristrasza(Creature *_Creature)
+{
+ return new boss_keristraszaAI (_Creature);
+}
+
+void AddSC_boss_keristrasza()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_keristrasza";
+ newscript->GetAI = GetAI_boss_keristrasza;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp
new file mode 100644
index 00000000000..0d97b530376
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp
@@ -0,0 +1,118 @@
+/* Script Data Start
+SDName: Boss magus_telestra
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+#include "def_nexus.h"
+
+
+//Spells
+
+//phase 1
+#define SPELL_ICE_NOVA 47772
+#define SPELL_ICE_NOVA 56935
+#define SPELL_FIREBOMB 47773
+#define SPELL_FIREBOMB 56934
+#define SPELL_GAVITY_WELL 47756
+
+//Phase 2 -->50% HP (3 clones, Frost, Fire, Arcane)
+//Frost Magus (npc 26930)
+#define FROST_MAGUS_VISUAL 47706 //Dummy
+#define SPELL_BLIZZARD_N 47727
+#define SPELL_ICE_BARB_N 47729
+//heroic
+#define SPELL_BLIZZARD_H 56936
+#define SPELL_ICE_BARB_H 56937
+
+//Fire Magus (npc 26928)
+#define FIRE_MAGUS_VISUAL 47705 //Dummy
+#define SPELL_FIRE_BLAST 47721
+#define SPELL_SCORCH 47723
+//heroic
+#define SPELL_FIRE_BLAST_H 56939
+#define SPELL_SCORCH_H 56938
+
+//Arcane Magus (npc 26929)
+#define ARCANE_MAGUS_VISUAL 47704 //Dummy
+#define SPELL_CRITTER 47731
+#define SPELL_TIME_STOP 47736
+
+//Yell
+#define SAY_AGGRO -1576010
+#define SAY_KILL -1576011
+#define SAY_DEATH -1576012
+#define SAY_MERGE -1576013
+#define SAY_SPLIT_1 -1576014
+#define SAY_SPLIT_2 -1576015
+
+
+struct TRINITY_DLL_DECL boss_magus_telestraAI : public ScriptedAI
+{
+ boss_magus_telestraAI(Creature *c) : ScriptedAI(c) {}
+
+ bool splited;
+ uint64 Magus_frost,
+ Magus_fire,
+ Magus_arcane;
+
+ void Reset()
+ {
+ splited = false;
+ }
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if(!splited)
+ {
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 50)
+ {
+ DoScriptText(SAY_SPLIT_1, m_creature);
+ //HandleSplit
+ splited = true;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_magus_telestra(Creature *_Creature)
+{
+ return new boss_magus_telestraAI (_Creature);
+}
+
+void AddSC_boss_magus_telestra()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_magus_telestra";
+ newscript->GetAI = GetAI_boss_magus_telestra;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp
new file mode 100644
index 00000000000..d4dcbae6616
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp
@@ -0,0 +1,90 @@
+/* Script Data Start
+SDName: Boss ormorok
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CRYSTAL_SPIKES_1 47958
+#define SPELL_CRYSTAL_SPIKES_2 57082
+#define SPELL_CRYSTAL_SPIKES_3 57083
+#define SPELL_SPELL_REFLECTION 47981
+#define SPELL_TRAMPLE_N 48016
+#define SPELL_TRAMPLE_H 57066
+#define SPELL_FRENZY_N 48017
+#define SPELL_FRENZY_H 57086
+#define SPELL_SUMMON_CRYSTALLINE_TANGLER 61564 //summons npc 32665
+
+//Yell
+#define SAY_AGGRO -1576016
+#define SAY_KILL -1576017
+#define SAY_DEATH -1576018
+#define SAY_REFLECT -1576019
+#define SAY_ICE_SPIKES -1576020
+
+struct TRINITY_DLL_DECL boss_ormorokAI : public ScriptedAI
+{
+ boss_ormorokAI(Creature *c) : ScriptedAI(c) {}
+
+ bool frenzy;
+
+ void Reset()
+ {
+ frenzy = false;
+ }
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) == 25)
+ {
+ if(!frenzy)
+ {
+ DoCast(m_creature, SPELL_FRENZY_N);
+ frenzy = true;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_ormorok(Creature *_Creature)
+{
+ return new boss_ormorokAI (_Creature);
+}
+
+void AddSC_boss_ormorok()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_ormorok";
+ newscript->GetAI = GetAI_boss_ormorok;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/commander_kolurg.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/commander_kolurg.cpp
new file mode 100644
index 00000000000..b8715fb6d7d
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/commander_kolurg.cpp
@@ -0,0 +1,57 @@
+/* Script Data Start
+SDName: Boss Commander Kolurg
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment: Only Alliance Heroic
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_commander_kolurg' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+#define SPELL_BATTLE_SHOUT 31403
+#define SPELL_CHARGE 60067
+#define SPELL_FRIGHTENING_SHOUT 19134
+#define SPELL_WHIRLWIND_1 38619
+#define SPELL_WHIRLWIND_2 38618
+
+//Yell
+#define SAY_AGGRO 1576024
+#define SAY_KILL 1576025
+#define SAY_DEATH 1576026
+
+struct TRINITY_DLL_DECL boss_commander_kolurgAI : public ScriptedAI
+{
+ boss_commander_kolurgAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_boss_commander_kolurg(Creature *_Creature)
+{
+ return new boss_commander_kolurgAI (_Creature);
+}
+
+void AddSC_boss_commander_kolurg()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_commander_kolurg";
+ newscript->GetAI = GetAI_boss_commander_kolurg;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/commander_stoutbeard.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/commander_stoutbeard.cpp
new file mode 100644
index 00000000000..26ef1fc5f97
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/commander_stoutbeard.cpp
@@ -0,0 +1,63 @@
+/* Script Data Start
+SDName: Boss Commander Stoutbeard
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment: Only Horde Heroic
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_commander_stoutbeard' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+#define SPELL_BATTLE_SHOUT 31403
+#define SPELL_CHARGE 60067
+#define SPELL_FRIGHTENING_SHOUT 19134
+#define SPELL_WHIRLWIND_1 38619
+#define SPELL_WHIRLWIND_2 38618
+
+//Yell
+#define SAY_AGGRO 1576021
+#define SAY_KILL 1576022
+#define SAY_DEATH 1576023
+
+struct TRINITY_DLL_DECL boss_commander_stoutbeardAI : public ScriptedAI
+{
+ boss_commander_stoutbeardAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_commander_stoutbeard(Creature *_Creature)
+{
+ return new boss_commander_stoutbeardAI (_Creature);
+}
+
+void AddSC_boss_commander_stoutbeard()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_commander_stoutbeard";
+ newscript->GetAI = GetAI_boss_commander_stoutbeard;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/def_nexus.h b/src/bindings/scripts/scripts/zone/nexus/nexus/def_nexus.h
new file mode 100644
index 00000000000..d868c72adf6
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/def_nexus.h
@@ -0,0 +1,35 @@
+#ifndef DEF_NEXUS_H
+#define DEF_NEXUS_H
+
+#define DATA_ANOMALUSDEAD 1
+#define DATA_ANOMALUS_DEATH 2
+#define DATA_ORMOROKDDEAD 3
+#define DATA_ORMOROK_DEATH 4
+
+#define DATA_MAGUSTELESTRADEAD 5
+#define DATA_MAGUSTELESTRA_DEATH 6
+#define DATA_MAGUSTELESTRA_A_DEAD 7
+#define DATA_MAGUSTELESTRA_A_DEATH 8
+#define DATA_MAGUSTELESTRA_F_DEAD 9
+#define DATA_MAGUSTELESTRA_F_DEATH 10
+#define DATA_MAGUSTELESTRA_FI_DEAD 11
+#define DATA_MAGUSTELESTRA_FI_DEATH 12
+
+#define DATA_KERISTRASZADEAD 13
+#define DATA_KERISTRASZA_DEATH 14
+#define DATA_COMMANDER_KOLURGDEAD 15
+#define DATA_COMMANDER_KOLURG_DEATH 16
+#define DATA_COMMANDER_STOUTBEARDDEAD 17
+#define DATA_COMMANDER_STOUTBEARD_DEATH 18
+#define DATA_ANOMALUS 19
+#define DATA_ORMOROK 20
+
+#define DATA_MAGUSTELESTRA 21
+#define DATA_MAGUSTELESTRA_A 22
+#define DATA_MAGUSTELESTRA_F 23
+#define DATA_MAGUSTELESTRA_FI 24
+
+#define DATA_KERISTRASZA 25
+#define DATA_COMMANDER_KOLURG 26
+#define DATA_COMMANDER_STOUTBEARD 27
+#endif
diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/instance_nexus.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/instance_nexus.cpp
new file mode 100644
index 00000000000..7f07b372be9
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/nexus/instance_nexus.cpp
@@ -0,0 +1,158 @@
+#include "precompiled.h"
+#include "def_nexus.h"
+
+struct TRINITY_DLL_DECL instance_nexus : public ScriptedInstance
+{
+ instance_nexus(Map *Map) : ScriptedInstance(Map) {Initialize();};
+
+ uint64 Anomalus,
+ Ormorok,
+ Magus_telestra,
+ Magus_frost,
+ Magus_fire,
+ Magus_arcane,
+ keristrasza,
+ Commander_kolurg,
+ Commander_stoutbeard;
+ bool IsBossDied[9];
+
+ void Initialize()
+ {
+ Anomalus = 0;
+ Ormorok = 0;
+ Magus_telestra =0;
+ Magus_frost =0;
+ Magus_fire =0;
+ Magus_arcane =0;
+ keristrasza =0;
+ Commander_kolurg = 0;
+ Commander_stoutbeard = 0;
+ IsBossDied[0] = false;
+ IsBossDied[1] = false;
+ IsBossDied[2] = false;
+ IsBossDied[3] = false;
+ IsBossDied[4] = false;
+ IsBossDied[5] = false;
+ IsBossDied[6] = false;
+ IsBossDied[7] = false;
+ IsBossDied[8] = false;
+ }
+
+ bool IsEncounterInProgress() const
+ {
+ //not active
+ return false;
+ }
+ void OnCreatureCreate(Creature *creature, uint32 creature_entry)
+ {
+ switch(creature->GetEntry())
+ {
+ case 26763: Anomalus = creature->GetGUID(); break;
+ case 26794: Ormorok = creature->GetGUID(); break;
+ case 26731: Magus_telestra = creature->GetGUID(); break;
+ case 26930: Magus_frost = creature->GetGUID(); break;
+ case 26928: Magus_fire = creature->GetGUID(); break;
+ case 26926: Magus_arcane = creature->GetGUID(); break;
+ case 26723: keristrasza = creature->GetGUID(); break;
+ case 26798: Commander_kolurg = creature->GetGUID(); break;
+ case 26796: Commander_stoutbeard = creature->GetGUID(); break;
+ }
+ }
+ uint32 GetData(uint32 type)
+ {
+ switch(type)
+ {
+ case DATA_ANOMALUSDEAD:
+ if(IsBossDied[0])
+ return 1;
+ break;
+ case DATA_ORMOROKDDEAD:
+ if(IsBossDied[1])
+ return 1;
+ break;
+ case DATA_MAGUSTELESTRADEAD:
+ if(IsBossDied[2])
+ return 1;
+ break;
+ case DATA_MAGUSTELESTRA_A_DEAD:
+ if(IsBossDied[3])
+ return 1;
+ break;
+ case DATA_MAGUSTELESTRA_F_DEAD:
+ if(IsBossDied[4])
+ return 1;
+ break;
+ case DATA_MAGUSTELESTRA_FI_DEAD:
+ if(IsBossDied[5])
+ return 1;
+ break;
+ case DATA_KERISTRASZADEAD:
+ if(IsBossDied[6])
+ return 1;
+ break;
+ case DATA_COMMANDER_KOLURGDEAD:
+ if(IsBossDied[7])
+ return 1;
+ break;
+ case DATA_COMMANDER_STOUTBEARDDEAD:
+ if(IsBossDied[8])
+ return 1;
+ break;
+ }
+
+ return 0;
+ }
+
+ uint64 GetData64 (uint32 identifier)
+ {
+ return 0;
+ }
+
+ void SetData(uint32 type, uint32 data)
+ {
+ switch(type)
+ {
+ case DATA_ANOMALUS_DEATH:
+ IsBossDied[0] = true;
+ break;
+ case DATA_ORMOROK_DEATH:
+ IsBossDied[1] = true;
+ break;
+ case DATA_MAGUSTELESTRA_DEATH:
+ IsBossDied[2] = true;
+ break;
+ case DATA_MAGUSTELESTRA_A_DEATH:
+ IsBossDied[3] = true;
+ break;
+ case DATA_MAGUSTELESTRA_F_DEATH:
+ IsBossDied[4] = true;
+ break;
+ case DATA_MAGUSTELESTRA_FI_DEAD:
+ IsBossDied[5] = true;
+ break;
+ case DATA_KERISTRASZA_DEATH:
+ IsBossDied[6] = true;
+ break;
+ case DATA_COMMANDER_KOLURG_DEATH:
+ IsBossDied[7] = true;
+ break;
+ case DATA_COMMANDER_STOUTBEARD_DEATH:
+ IsBossDied[8] = true;
+ break;
+ }
+ }
+};
+
+InstanceData* GetInstanceData_instance_nexus(Map* map)
+{
+ return new instance_nexus(map);
+}
+
+void AddSC_instance_nexus()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_nexus";
+ newscript->GetInstanceData = GetInstanceData_instance_nexus;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/oculus/boss_drakos.cpp b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_drakos.cpp
new file mode 100644
index 00000000000..eca9760262c
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_drakos.cpp
@@ -0,0 +1,82 @@
+/* Script Data Start
+SDName: Boss drakos
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_MAGIC_PULL 51336
+#define SPELL_THUNDERING_STOMP 50774
+#define SPELL_THUNDERING_STOMP_2 59370
+
+//Yell
+#define SAY_AGGRO -1578000
+#define SAY_KILL_1 -1578001
+#define SAY_KILL_2 -1578002
+#define SAY_KILL_3 -1578003
+#define SAY_DEATH -1578004
+#define SAY_PULL_1 -1578005
+#define SAY_PULL_2 -1578006
+#define SAY_PULL_3 -1578007
+#define SAY_PULL_4 -1578008
+#define SAY_STOMP_1 -1578009
+#define SAY_STOMP_2 -1578010
+#define SAY_STOMP_3 -1578011
+
+struct TRINITY_DLL_DECL boss_drakosAI : public ScriptedAI
+{
+ boss_drakosAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_KILL_1, m_creature);break;
+ case 1: DoScriptText(SAY_KILL_2, m_creature);break;
+ case 2: DoScriptText(SAY_KILL_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_drakos(Creature *_Creature)
+{
+ return new boss_drakosAI (_Creature);
+}
+
+void AddSC_boss_drakos()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_drakos";
+ newscript->GetAI = GetAI_boss_drakos;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/oculus/boss_eregos.cpp b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_eregos.cpp
new file mode 100644
index 00000000000..abfa904beb6
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_eregos.cpp
@@ -0,0 +1,104 @@
+/* Script Data Start
+SDName: Boss eregos
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment: Encounter is done entirely on drake vehicles
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Types of drake mounts: Ruby(Tank), Amber(DPS), Emerald(Healer)
+//Two Repeating phases
+
+//Spells
+#define SPELL_ARCANE_BARRAGE 50804
+#define SPELL_ARCANE_VOLLEY 51153
+#define SPELL_ENRAGED_ASSAULT 51170
+#define SPELL_PLANAR_ANOMALIES 57959
+#define SPELL_PLANAR_SHIFT 51162
+
+//Heroic
+#define SPELL_ARCANE_BARRAGE_H 59381
+#define SPELL_ARCANE_VOLLEY_H 59382
+
+/*Ruby Drake ,
+(npc 27756) (item 37860)
+(summoned by spell Ruby Essence = 37860 ---> Call Amber Drake == 49462 ---> Summon 27756)
+*/
+#define NPC_RUBY_DRAKE_VEHICLE 27756
+#define SPELL_RIDE_RUBY_DRAKE_QUE 49463 //Apply Aura: Periodic Trigger, Interval: 3 seconds ---> 49464
+#define SPELL_RUBY_DRAKE_SADDLE 49464 //Allows you to ride on the back of an Amber Drake. ---> Dummy
+
+#define SPELL_RUBY_SEARING_WRATH 50232 //(60 yds) - Instant - Breathes a stream of fire at an enemy dragon, dealing 6800 to 9200 Fire damage and then jumping to additional dragons within 30 yards. Each jump increases the damage by 50%. Affects up to 5 total targets
+#define SPELL_RUBY_EVASIVE_AURA 50248 //Instant - Allows the Ruby Drake to generate Evasive Charges when hit by hostile attacks and spells.
+#define SPELL_RUBY_EVASIVE_MANEUVERS 50240 //Instant - 5 sec. cooldown - Allows your drake to dodge all incoming attacks and spells. Requires Evasive Charges to use. Each attack or spell dodged while this ability is active burns one Evasive Charge. Lasts 30 sec. or until all charges are exhausted.
+//you do not have acces to until you kill Mage-Lord Urom
+#define SPELL_RUBY_MARTYR 50253 //Instant - 10 sec. cooldown - Redirect all harmful spells cast at friendly drakes to yourself for 10 sec.
+
+/*Amber Drake,
+(npc 27755) (item 37859)
+(summoned by spell Amber Essence = 37859 ---> Call Amber Drake == 49461 ---> Summon 27755)
+*/
+#define NPC_AMBER_DRAKE_VEHICLE 27755
+#define SPELL_RIDE_AMBER_DRAKE_QUE 49459 //Apply Aura: Periodic Trigger, Interval: 3 seconds ---> 49460
+#define SPELL_AMBER_DRAKE_SADDLE 49460 //Allows you to ride on the back of an Amber Drake. ---> Dummy
+
+#define SPELL_AMBER_SHOCK_LANCE 49840 //(60 yds) - Instant - Deals 4822 to 5602 Arcane damage and detonates all Shock Charges on an enemy dragon. Damage is increased by 6525 for each detonated.
+#define SPELL_AMBER_STOP_TIME //Instant - 1 min cooldown - Halts the passage of time, freezing all enemy dragons in place for 10 sec. This attack applies 5 Shock Charges to each affected target.
+//you do not have access to until you kill the Mage-Lord Urom.
+#define SPELL_AMBER_TEMPORAL_RIFT 49592 //(60 yds) - Channeled - Channels a temporal rift on an enemy dragon for 10 sec. While trapped in the rift, all damage done to the target is increased by 100%. In addition, for every 15,000 damage done to a target affected by Temporal Rift, 1 Shock Charge is generated.
+
+/*Emerald Drake,
+(npc 27692) (item 37815),
+ (summoned by spell Emerald Essence = 37815 ---> Call Emerald Drake == 49345 ---> Summon 27692)
+*/
+#define NPC_EMERALD_DRAKE_VEHICLE 27692
+#define SPELL_RIDE_EMERALD_DRAKE_QUE 49427 //Apply Aura: Periodic Trigger, Interval: 3 seconds ---> 49346
+#define SPELL_EMERALD_DRAKE_SADDLE 49346 //Allows you to ride on the back of an Amber Drake. ---> Dummy
+
+#define SPELL_EMERALD_LEECHING_POISON 50328 //(60 yds) - Instant - Poisons the enemy dragon, leeching 1300 to the caster every 2 sec. for 12 sec. Stacks up to 3 times.
+#define SPELL_EMERALD_TOUCH_THE_NIGHTMARE 50341 //(60 yds) - Instant - Consumes 30% of the caster's max health to inflict 25,000 nature damage to an enemy dragon and reduce the damage it deals by 25% for 30 sec.
+// you do not have access to until you kill the Mage-Lord Urom
+#define SPELL_EMERALD_DREAM_FUNNEL 50344 //(60 yds) - Channeled - Transfers 5% of the caster's max health to a friendly drake every second for 10 seconds as long as the caster channels.
+
+struct TRINITY_DLL_DECL boss_eregosAI : public ScriptedAI
+{
+ boss_eregosAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ phase =1;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_boss_eregos(Creature *_Creature)
+{
+ return new boss_eregosAI (_Creature);
+}
+
+void AddSC_boss_eregos()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_eregos";
+ newscript->GetAI = GetAI_boss_eregos;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/oculus/boss_urom.cpp b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_urom.cpp
new file mode 100644
index 00000000000..f7d35d014dd
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_urom.cpp
@@ -0,0 +1,87 @@
+/* Script Data Start
+SDName: Boss urom
+SDAuthor: LordVanMartin
+SD%Complete: 1%
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ARCANE_SHIELD 53813 //Dummy --> Channeled, shields the caster from damage.
+#define SPELL_EMPOWERED_ARCANE_EXPLOSION 51110
+#define SPELL_EMPOWERED_ARCANE_EXPLOSION_2 59377
+#define SPELL_FROSTBOMB 51103 //Urom throws a bomb, hitting its target with the highest aggro which inflict directly 650 frost damage and drops a frost zone on the ground. This zone deals 650 frost damage per second and reduce the movement speed by 35%. Lasts 1 minute.
+#define SPELL_SUMMON_MENAGERIE 50476 //Summons an assortment of creatures and teleports the caster to safety.
+#define SPELL_SUMMON_MENAGERIE_2 50495
+#define SPELL_SUMMON_MENAGERIE_3 50496
+#define SPELL_TELEPORT 51112 //Teleports to the center of Oculus
+#define SPELL_TIME_BOMB 51121 //Deals arcane damage to a random player, and after 6 seconds, deals zone damage to nearby equal to the health missing of the target afflicted by the debuff.
+#define SPELL_TIME_BOMB_2 59376
+
+//Yell
+#define SAY_AGGRO -1578012
+#define SAY_KILL_1 -1578013
+#define SAY_KILL_2 -1578014
+#define SAY_KILL_3 -1578015
+#define SAY_DEATH -1578016
+#define SAY_EXPLOSION_1 -1578017
+#define SAY_EXPLOSION_2 -1578018
+#define SAY_SUMMON_1 -1578019
+#define SAY_SUMMON_2 -1578020
+#define SAY_SUMMON_3 -1578021
+
+struct TRINITY_DLL_DECL boss_uromAI : public ScriptedAI
+{
+ boss_uromAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_KILL_1, m_creature);break;
+ case 1: DoScriptText(SAY_KILL_2, m_creature);break;
+ case 2: DoScriptText(SAY_KILL_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_urom(Creature *_Creature)
+{
+ return new boss_uromAI (_Creature);
+}
+
+void AddSC_boss_urom()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_urom";
+ newscript->GetAI = GetAI_boss_urom;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/oculus/boss_varos.cpp b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_varos.cpp
new file mode 100644
index 00000000000..272196008f2
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/oculus/boss_varos.cpp
@@ -0,0 +1,85 @@
+/* Script Data Start
+SDName: Boss varos
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ENERGIZE_CORES 50785 //Damage 5938 to 6562, effec2 Triggers 54069, effect3 Triggers 56251
+#define SPELL_ENERGIZE_CORES_TRIGGER_1 54069
+#define SPELL_ENERGIZE_CORES_TRIGGER_2 56251
+#define SPELL_ENERGIZE_CORES_2 59372 //Damage 9025 to 9975, effect2 Triggers 54069, effect 56251
+#define SPELL_CALL_AZURE_RING_CAPTAIN 51002 //Effect Send Event (12229)
+#define SPELL_CALL_AZURE_RING_CAPTAIN_2 51006 //Effect Send Event (10665)
+#define SPELL_CALL_AZURE_RING_CAPTAIN_3 51007 //Effect Send Event (18454)
+#define SPELL_CALL_AZURE_RING_CAPTAIN_4 51008 //Effect Send Event (18455)
+#define SPELL_CALL_AMPLIFY_MAGIC 51054
+#define SPELL_CALL_AMPLIFY_MAGIC_2 59371
+
+//Yell
+#define SAY_AGGRO -1578022
+#define SAY_KILL_1 -1578023
+#define SAY_KILL_2 -1578024
+#define SAY_DEATH -1578025
+#define SAY_STRIKE_1 -1578026
+#define SAY_STRIKE_2 -1578027
+#define SAY_STRIKE_3 -1578028
+#define SAY_SPAWN -1578029
+
+
+struct TRINITY_DLL_DECL boss_varosAI : public ScriptedAI
+{
+ boss_varosAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%2)
+ {
+ case 0: DoScriptText(SAY_KILL_1, m_creature);break;
+ case 1: DoScriptText(SAY_KILL_2, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_varos(Creature *_Creature)
+{
+ return new boss_varosAI (_Creature);
+}
+
+void AddSC_boss_varos()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_varos";
+ newscript->GetAI = GetAI_boss_varos;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/nexus/oculus/def_oculus.h b/src/bindings/scripts/scripts/zone/nexus/oculus/def_oculus.h
new file mode 100644
index 00000000000..0b63a52d866
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/oculus/def_oculus.h
@@ -0,0 +1,4 @@
+#ifndef DEF_OCULUS_H
+#define DEF_OCULUS_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/nexus/oculus/instance_oculus.cpp b/src/bindings/scripts/scripts/zone/nexus/oculus/instance_oculus.cpp
new file mode 100644
index 00000000000..ecf6bcfae89
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/nexus/oculus/instance_oculus.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_oculus.h"
+
+struct TRINITY_DLL_DECL instance_oculus : public ScriptedInstance
+{
+ instance_oculus(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_oculus(Map* map)
+{
+ return new instance_oculus(map);
+}
+
+void AddSC_instance_oculus()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_oculus";
+ newscript->GetInstanceData = GetInstanceData_instance_oculus;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp b/src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp
new file mode 100644
index 00000000000..73e6157c600
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp
@@ -0,0 +1,300 @@
+/* Script Data Start
+SDName: Boss sartharion
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Sartharion Spells
+#define SPELL_BERSERK 61632 // Increases the caster's attack speed by 150% and all damage it deals by 500% for 5 min.
+#define SPELL_CLEAVE 56909 // Inflicts 35% weapon damage to an enemy and its nearest allies, affecting up to 10 targets.
+#define SPELL_FLAME_BREATH_N 56908 // Inflicts 8750 to 11250 Fire damage to enemies in a cone in front of the caster.
+#define SPELL_FLAME_BREATH_H 58956 // Inflicts 10938 to 14062 Fire damage to enemies in a cone in front of the caster.
+#define SPELL_TAIL_LASH_N 56910 // A sweeping tail strike hits all enemies behind the caster, inflicting 3063 to 3937 damage and stunning them for 2 sec.
+#define SPELL_TAIL_LASH_H 58957 // A sweeping tail strike hits all enemies behind the caster, inflicting 4375 to 5625 damage and stunning them for 2 sec.
+#define SPELL_WILL_OF_SARTHARION 61254 // Sartharion's presence bolsters the resolve of the Twilight Drakes, increasing their total health by 25%. This effect also increases Sartharion's health by 25%.
+#define SPELL_POWER_OF_SARTHARION 61254 //Shadron's presence increases Fire damage taken by all enemies by 100%.
+
+//Sartharion Yell
+#define SAY_SARTHARION_AGGRO -1615016
+#define SAY_SARTHARION_BERSERK -1615017
+#define SAY_SARTHARION_BREATH -1615018
+#define SAY_SARTHARION_CALL_SHADRON -1615019
+#define SAY_SARTHARION_CALL_TENEBRON -1615020
+#define SAY_SARTHARION_CALL_VESPERON -1615021
+#define SAY_SARTHARION_DEATH -1615022
+#define SAY_SARTHARION_SPECIAL_1 -1615023
+#define SAY_SARTHARION_SPECIAL_2 -1615024
+#define SAY_SARTHARION_SPECIAL_3 -1615025
+#define SAY_SARTHARION_SPECIAL_4 -1615026
+#define SAY_SARTHARION_SLAY_1 -1615027
+#define SAY_SARTHARION_SLAY_2 -1615028
+#define SAY_SARTHARION_SLAY_3 -1615029
+
+//Miniboses (Vesperon, Shadron, Tenebron)
+#define SPELL_SHADOW_BREATH_H 59126 //Inflicts 8788 to 10212 Fire damage to enemies in a cone in front of the caster.
+#define SPELL_SHADOW_BREATH_N 57570 //Inflicts 6938 to 8062 Fire damage to enemies in a cone in front of the caster.
+//TAIL LASH the same as Sartharion's
+#define SPELL_SHADOW_FISSURE_H 59127 //Deals 9488 to 13512 Shadow damage to any enemy within the Shadow fissure after 5 sec.
+#define SPELL_SHADOW_FISSURE_N 57579 //Deals 6188 to 8812 Shadow damage to any enemy within the Shadow fissure after 5 sec.
+
+//Vesperon
+#define MINIBOSS_VESPERON 30449 //npc 30449 //In portal is a disciple, when disciple killed remove Power_of_vesperon, portal spawns multiple times
+#define BUFF_POWER_OF_VESPERON 61251 //Vesperon's presence decreases the maximum health of all enemies by 25%.
+
+//Shadron
+#define MINIBOSS_SHADRON 30451 //npc 30451 //In portal is a disciple, when disciple killed remove Power_of_vesperon, portal spawns multiple times
+#define BUFF_POWER_OF_SHADRON 58105 //Shadron's presence increases Fire damage taken by all enemies by 100%.
+
+//Tenebron
+#define MINIBOSS_TENEBRON 30452 //npc 30452 //in the portal spawns 6 eggs, if not killed in time (approx. 20s) they will hatch, whelps can cast 60708
+#define BUFF_POWER_OF_TENEBRON 61248 //Tenebron's presence increases Shadow damage taken by all enemies by 100%.
+
+//Minibosses common spells
+#define SPELL_SHADOW_BREATH_N 57570
+#define SPELL_SHADOW_BREATH_H 59126
+#define SPELL_SHADOW_FISSURE_N 57579
+#define SPELL_SHADOW_FISSURE_H 59127
+#define SPELL_TWILIGHT_REVENGE 60639
+
+//Tenebron, dummy spell
+#define SPELL_HATCH_EGGS 58793
+
+//Whelps
+#define TWILIGHT_WHELP 30890 //npc 30890
+#define SHARTHARION_TWILIGHT_WHELP 31214 //npc 31214
+#define SPELL_FADE_ARMOR 60708 //Reduces the armor of an enemy by 1500 for 15s
+
+/*Summons a portal, which all DPS and one healer should go through and proceed to kill all eggs. After about 20 seconds these eggs will hatch into whelplings with 60k health. Whelplings that hatched should be picked up by a tank and killed.
+Hatch Eggs Tenebron summons a portal in which eggs are spawned. After about 20s the eggs hatches into Whelps (156,396 hp - amount of whelps determined by Normal or Heroic mode) that do Fade Armor. */
+
+struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
+{
+ boss_sartharionAI(Creature *c) : ScriptedAI(c) {}
+
+ bool berserk;
+
+ void Reset()
+ {
+ berserk = false;
+ }
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_SARTHARION_DEATH,m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 10)
+ {
+ if(!berserk){
+ DoCast(m_creature,SPELL_BERSERK);
+ berserk = true;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_SARTHARION_DEATH,m_creature);
+ }
+};
+
+/*######
+## Mob Vesperon
+######*/
+
+//Vesperon Yell
+#define SAY_VESPERON_AGGRO -1615030
+#define SAY_VESPERON_SLAY_1 -1615031
+#define SAY_VESPERON_SLAY_2 -1615032
+#define SAY_VESPERON_DEATH -1615033
+#define SAY_VESPERON_BREATH -1615034
+#define SAY_VESPERON_RESPOND -1615035
+#define SAY_VESPERON_SPECIAL_1 -1615036
+#define SAY_VESPERON_SPECIAL_2 -1615037
+
+struct TRINITY_DLL_DECL mob_vesperonAI : public ScriptedAI
+{
+ mob_vesperonAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_VESPERON_AGGRO,m_creature);
+ }
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_VESPERON_DEATH,m_creature);
+ }
+};
+
+/*######
+## Mob Shadron
+######*/
+
+//Shadron Yell
+#define SAY_SHADRON_AGGRO -1615000
+#define SAY_SHADRON_SLAY_1 -1615001
+#define SAY_SHADRON_SLAY_2 -1615002
+#define SAY_SHADRON_DEATH -1615003
+#define SAY_SHADRON_BREATH -1615004
+#define SAY_SHADRON_RESPOND -1615005
+#define SAY_SHADRON_SPECIAL_1 -1615006
+#define SAY_SHADRON_SPECIAL_2 -1615007
+
+struct TRINITY_DLL_DECL mob_shadronAI : public ScriptedAI
+{
+ mob_shadronAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset(){}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_SHADRON_AGGRO,m_creature);
+ }
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_SHADRON_DEATH,m_creature);
+ }
+};
+/*######
+## Mob Tenebron
+######*/
+
+//Yell
+#define SAY_TENEBRON_AGGRO -1615008
+#define SAY_TENEBRON_SLAY_1 -1615009
+#define SAY_TENEBRON_SLAY_2 -1615010
+#define SAY_TENEBRON_DEATH -1615011
+#define SAY_TENEBRON_BREATH -1615012
+#define SAY_TENEBRON_RESPOND -1615013
+#define SAY_TENEBRON_SPECIAL_1 -1615014
+#define SAY_TENEBRON_SPECIAL_2 -1615015
+
+struct TRINITY_DLL_DECL mob_tenebronAI : public ScriptedAI
+{
+ mob_tenebronAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_TENEBRON_AGGRO,m_creature);
+ }
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_TENEBRON_DEATH,m_creature);
+ }
+};
+
+/*######
+## Mob Whelps
+######*/
+struct TRINITY_DLL_DECL mob_whelpAI : public ScriptedAI
+{
+ mob_whelpAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 Fade_armor_Timer;
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_mob_whelp(Creature *_Creature)
+{
+ return new mob_whelpAI (_Creature);
+}
+
+CreatureAI* GetAI_mob_tenebron(Creature *_Creature)
+{
+ return new mob_tenebronAI (_Creature);
+}
+
+CreatureAI* GetAI_mob_shadron(Creature *_Creature)
+{
+ return new mob_shadronAI (_Creature);
+}
+
+CreatureAI* GetAI_mob_vesperon(Creature *_Creature)
+{
+ return new mob_vesperonAI (_Creature);
+}
+
+CreatureAI* GetAI_boss_sartharion(Creature *_Creature)
+{
+ return new boss_sartharionAI (_Creature);
+}
+
+void AddSC_boss_sartharion()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_sartharion";
+ newscript->GetAI = GetAI_boss_sartharion;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_vesperon";
+ newscript->GetAI = GetAI_mob_vesperon;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_shadron";
+ newscript->GetAI = GetAI_mob_shadron;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_tenebron";
+ newscript->GetAI = GetAI_mob_tenebron;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_whelp";
+ newscript->GetAI = GetAI_mob_whelp;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h b/src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h
new file mode 100644
index 00000000000..59d76502af3
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h
@@ -0,0 +1,4 @@
+#ifndef DEF_OBSIDIAN_SANCTUM_H
+#define DEF_OBSIDIAN_SANCTUM_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp b/src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp
new file mode 100644
index 00000000000..2e24a1ae415
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_obsidian_sanctum.h"
+
+struct TRINITY_DLL_DECL instance_obsidian_sanctum : public ScriptedInstance
+{
+ instance_obsidian_sanctum(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_obsidian_sanctum(Map* map)
+{
+ return new instance_obsidian_sanctum(map);
+}
+
+void AddSC_instance_obsidian_sanctum()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_obsidian_sanctum";
+ newscript->GetInstanceData = GetInstanceData_instance_obsidian_sanctum;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp
new file mode 100644
index 00000000000..48ecfdbbcbf
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp
@@ -0,0 +1,94 @@
+/* Script Data Start
+SDName: Boss bjarngrim
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//AURAS AND STANCES
+#define BUFF_BATTLE_AURA 41106
+#define SPELL_BATTLE_STANCE 53792
+#define BUFF_BERSEKER_AURA 41107
+#define SPELL_BERSEKER_STANCE 53791
+#define BUFF_DEFENSIVE_AURA 41105
+#define SPELL_DEFENSIVE_STANCE 53790
+
+//OTHER SPELLS
+#define SPELL_CHARGE_UP 52098
+#define SPELL_CLEAVE 15284
+#define SPELL_INTERCEPT 58769
+#define SPELL_IRONFORM 52022
+#define SPELL_KNOCK_AWAY 52029
+#define SPELL_MORTAL_STRIKE 15708
+#define SPELL_SLAM 52026
+#define SPELL_SPELL_REFLECTION 36096
+#define SPELL_WHIRLWIND 52027
+
+//Yell
+#define SAY_AGGRO -1602000
+#define SAY_SLAY_1 -1602001
+#define SAY_SLAY_2 -1602002
+#define SAY_SLAY_3 -1602003
+#define SAY_DEATH -1602004
+#define SAY_BATTLE_STANCE -1602005
+#define SAY_BERSEKER_STANCE -1602006
+#define SAY_DEFENSIVE_STANCE -1602007
+
+struct TRINITY_DLL_DECL boss_bjarngrimAI : public ScriptedAI
+{
+ boss_bjarngrimAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 whirlwind;
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_bjarngrim(Creature *_Creature)
+{
+ return new boss_bjarngrimAI (_Creature);
+}
+
+void AddSC_boss_bjarngrim()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_bjarngrim";
+ newscript->GetAI = GetAI_boss_bjarngrim;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_ionar.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_ionar.cpp
new file mode 100644
index 00000000000..1760c8d0032
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_ionar.cpp
@@ -0,0 +1,114 @@
+/* Script Data Start
+SDName: Boss ionar
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_ionar' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_BALL_LIGHTNING 52780
+#define SPELL_BALL_LIGHTNING_2 59800
+#define SPELL_DISPERSE 52770 //Disperse into Sparks of Ionar.
+#define SPELL_STATIC_OVERLOAD 52658 //Effect Apply Aura: Periodic Trigger Interval: 2 seconds Spell 52659
+#define SPELL_STATIC_OVERLOAD_2 52658 //Effect Apply Aura: Periodic Trigger Interval: 2 seconds Spell 59796
+
+//Spark of Ionar spells
+#define NPC_SPARK_OF_IONAR 28962 //invulnerable
+#define SPELL_ARCING_BURN 52617
+#define SPELL_ARCING_BURN_2 59834
+
+//Yell
+#define SAY_AGGRO -1602008
+#define SAY_SLAY_1 -1602009
+#define SAY_SLAY_2 -1602010
+#define SAY_SLAY_3 -1602011
+#define SAY_DEATH -1602012
+#define SAY_SPLIT_1 -1602013
+#define SAY_SPLIT_2 -1602014
+
+//he does "morph" every about 25% into 4 sparks of ionar that chase people around, they r slow and easily avoidable.
+
+struct TRINITY_DLL_DECL boss_ionarAI : public ScriptedAI
+{
+ boss_ionarAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+struct TRINITY_DLL_DECL npc_spark_of_ionarAI : public ScriptedAI
+{
+ npc_spark_of_ionarAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_npc_spark_of_ionar(Creature *_Creature)
+{
+ return new npc_spark_of_ionarAI (_Creature);
+}
+CreatureAI* GetAI_boss_ionar(Creature *_Creature)
+{
+ return new boss_ionarAI (_Creature);
+}
+
+void AddSC_boss_ionar()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_ionar";
+ newscript->GetAI = GetAI_boss_ionar;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="spark_of_ionar";
+ newscript->GetAI = GetAI_npc_spark_of_ionar;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp
new file mode 100644
index 00000000000..e8b991a5172
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp
@@ -0,0 +1,86 @@
+/* Script Data Start
+SDName: Boss loken
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_loken' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ARC_NOVA 52921
+//Effect #1 School Damage (Nature), Value: 3238 to 3762
+//Effect #2 Apply Aura: Dummy, Value: 3238 to 3762, Server-side script
+
+#define SPELL_LIGHTNING_NOVA 52960
+#define SPELL_LIGHTNING_NOVA_2 59835
+
+//Yell
+#define SAY_AGGRO -1602015
+#define SAY_INTRO_1 -1602016
+#define SAY_INTRO_2 -1602017
+#define SAY_SLAY_1 -1602018
+#define SAY_SLAY_2 -1602019
+#define SAY_SLAY_3 -1602020
+#define SAY_DEATH -1602021
+#define SAY_NOVA_1 -1602022
+#define SAY_NOVA_2 -1602023
+#define SAY_NOVA_3 -1602024
+#define SAY_75HEALTH -1602025
+#define SAY_50HEALTH -1602026
+#define SAY_25HEALTH -1602027
+
+struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
+{
+ boss_lokenAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_loken(Creature *_Creature)
+{
+ return new boss_lokenAI (_Creature);
+}
+
+void AddSC_boss_loken()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_loken";
+ newscript->GetAI = GetAI_boss_loken;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_volkhan.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_volkhan.cpp
new file mode 100644
index 00000000000..a613a084f02
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_volkhan.cpp
@@ -0,0 +1,128 @@
+/* Script Data Start
+SDName: Boss volkhan
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_volkhan' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_HEAT 52387
+#define SPELL_HEAT_2 59528
+#define SPELL_SHATTERING_STOMP 52237
+#define SPELL_SHATTERING_STOMP_2 59529
+#define SPELL_TEMPER 52238 //Dummy ---> Strikes Volkhan's Anvil, creating a number of Molten Golems.
+
+#define NPC_VOLKHANS_ANVIL 28823
+#define MOB_MOLTEN_GOLEM 28695
+
+//Yells
+#define SAY_AGGRO -1602028
+#define SAY_SLAY_1 -1602029
+#define SAY_SLAY_2 -1602030
+#define SAY_SLAY_3 -1602031
+#define SAY_DEATH -1602032
+#define SAY_STOMP_1 -1602033
+#define SAY_STOMP_2 -1602034
+#define SAY_FORGE_1 -1602035
+#define SAY_FORGE_2 -1602036
+
+struct TRINITY_DLL_DECL boss_volkhanAI : public ScriptedAI
+{
+ boss_volkhanAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+/*######
+## Mob Molten Golem
+######*/
+//Molten Golem Spells
+#define SPELL_BLAST_WAVE 23113
+#define SPELL_IMMOLATION_STRIKE 52433
+#define SPELL_IMMOLATION_STRIKE_2 59530
+//Effect #1 Apply Aura: Periodic Damage, value: 900 every 3 seconds
+//Effect #2 School Damage (Fire), value: 900
+//Effect #3 Script Effect
+#define SPELL_SHATTER 52429
+//Effect #1 School Damage (Physical), value: 9250 to 10750, radius: 10 yards
+//Effect #2 Dummy, Server-side script
+#define SPELL_SHATTER_2
+
+struct TRINITY_DLL_DECL mob_molten_golemAI : public ScriptedAI
+{
+ mob_molten_golemAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_mob_molten_golem(Creature *_Creature)
+{
+ return new mob_molten_golemAI (_Creature);
+}
+
+CreatureAI* GetAI_boss_volkhan(Creature *_Creature)
+{
+ return new boss_volkhanAI (_Creature);
+}
+
+void AddSC_boss_volkhan()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_volkhan";
+ newscript->GetAI = GetAI_boss_volkhan;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_molten_golem";
+ newscript->GetAI = GetAI_mob_molten_golem;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/def_halls_of_lightning.h b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/def_halls_of_lightning.h
new file mode 100644
index 00000000000..134e32850ae
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/def_halls_of_lightning.h
@@ -0,0 +1,4 @@
+#ifndef DEF_HALLS_OF_LIGHTNING_H
+#define DEF_HALLS_OF_LIGHTNING_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/instance_halls_of_lightning.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/instance_halls_of_lightning.cpp
new file mode 100644
index 00000000000..4e694df73a5
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/instance_halls_of_lightning.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_halls_of_lightning.h"
+
+struct TRINITY_DLL_DECL instance_halls_of_lightning : public ScriptedInstance
+{
+ instance_halls_of_lightning(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_halls_of_lightning(Map* map)
+{
+ return new instance_halls_of_lightning(map);
+}
+
+void AddSC_instance_halls_of_lightning()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_halls_of_lightning";
+ newscript->GetInstanceData = GetInstanceData_instance_halls_of_lightning;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_krystallus.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_krystallus.cpp
new file mode 100644
index 00000000000..e58c2f8a2ac
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_krystallus.cpp
@@ -0,0 +1,73 @@
+/* Script Data Start
+SDName: Boss krystallus
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_krystallus' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_BOULDER_TOSS 50843
+#define SPELL_BOULDER_TOSS_2 59742
+#define SPELL_GROUND_SPIKE 59750
+#define SPELL_SHATTER 50810
+#define SPELL_SHATTER_2 61546
+#define SPELL_STOMP 48131
+#define SPELL_STOMP_2 59744
+
+//Yell
+#define SAY_AGGRO -1599000
+#define SAY_KILL -1599001
+#define SAY_DEATH -1599002
+#define SAY_SHATTER -1599003
+
+struct TRINITY_DLL_DECL boss_krystallusAI : public ScriptedAI
+{
+ boss_krystallusAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_krystallus(Creature *_Creature)
+{
+ return new boss_krystallusAI (_Creature);
+}
+
+void AddSC_boss_krystallus()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_krystallus";
+ newscript->GetAI = GetAI_boss_krystallus;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_maiden_of_grief.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_maiden_of_grief.cpp
new file mode 100644
index 00000000000..f179e8d7a73
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_maiden_of_grief.cpp
@@ -0,0 +1,81 @@
+/* Script Data Start
+SDName: Boss maiden_of_grief
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_maiden_of_grief' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spell
+#define SPELL_PARTING_SORROW 59723
+#define SPELL_STORM_OF_GRIEF 50752
+#define SPELL_STORM_OF_GRIEF_2 59772
+#define SPELL_SHOCK_OF_SORROW 50760
+#define SPELL_SHOCK_OF_SORROW_2 59726
+#define SPELL_PILLAR_OF_WOE 50761
+#define SPELL_PILLAR_OF_WOE_2 59727
+
+//Yell
+#define SAY_AGGRO -1599004
+#define SAY_SLAY_1 -1599005
+#define SAY_SLAY_2 -1599006
+#define SAY_SLAY_3 -1599007
+#define SAY_SLAY_4 -1599008
+#define SAY_DEATH -1599009
+#define SAY_STUN -1599010
+
+struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
+{
+ boss_maiden_of_griefAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_maiden_of_grief(Creature *_Creature)
+{
+ return new boss_maiden_of_griefAI (_Creature);
+}
+
+void AddSC_boss_maiden_of_grief()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_maiden_of_grief";
+ newscript->GetAI = GetAI_boss_maiden_of_grief;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_sjonnir.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_sjonnir.cpp
new file mode 100644
index 00000000000..ddb048ee241
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/boss_sjonnir.cpp
@@ -0,0 +1,83 @@
+/* Script Data Start
+SDName: Boss sjonnir
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_sjonnir' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_LIGHTING_RING_1 50840 //Periodic Trigger (interval 2s) spell = 50841
+#define SPELL_LIGHTING_RING_2 51849 //Periodic Trigger (interval 2s) spell = 50841
+#define SPELL_LIGHTING_RING_2 59848 //Periodic Trigger (interval 2s) spell = 59849
+#define SPELL_LIGHTING_RING_3 59861 //Periodic Trigger (interval 2s) spell = 59849
+#define SPELL_STATIC_CHARGE_1 50834 //Periodic Trigger 2s interval, spell =50835
+#define SPELL_STATIC_CHARGE_2 59846 //Periodic Trigger 2s interval, spell =50847
+#define SPELL_CHAIN_LIGHTING_1 50830
+#define SPELL_CHAIN_LIGHTING_2 59844
+#define SPELL_LIGHTING_SHIELD_1 50831
+#define SPELL_LIGHTING_SHIELD_2 59845
+#define SPELL_FRENZY 28747
+
+//Yell
+#define SAY_AGGRO -1599011
+#define SAY_SLAY_1 -1599012
+#define SAY_SLAY_2 -1599013
+#define SAY_SLAY_3 -1599014
+#define SAY_DEATH -1599015
+
+struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
+{
+ boss_sjonnirAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_sjonnir(Creature *_Creature)
+{
+ return new boss_sjonnirAI (_Creature);
+}
+
+void AddSC_boss_sjonnir()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_sjonnir";
+ newscript->GetAI = GetAI_boss_sjonnir;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/def_halls_of_stone.h b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/def_halls_of_stone.h
new file mode 100644
index 00000000000..ade934ad921
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/def_halls_of_stone.h
@@ -0,0 +1,4 @@
+#ifndef DEF_HALLS_OF_STONE_H
+#define DEF_HALLS_OF_STONE_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/instance_halls_of_stone.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/instance_halls_of_stone.cpp
new file mode 100644
index 00000000000..3c7d3970b47
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_stone/instance_halls_of_stone.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_halls_of_stone.h"
+
+struct TRINITY_DLL_DECL instance_halls_of_stone : public ScriptedInstance
+{
+ instance_halls_of_stone(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_halls_of_stone(Map* map)
+{
+ return new instance_halls_of_stone(map);
+}
+
+void AddSC_instance_halls_of_stone()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_halls_of_stone";
+ newscript->GetInstanceData = GetInstanceData_instance_halls_of_stone;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp
new file mode 100644
index 00000000000..76d51041e9e
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp
@@ -0,0 +1,97 @@
+/* Script Data Start
+SDName: Boss dalronn
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_dalronn' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_DEBILITATE 43650
+#define SPELL_SHADOWBOLT 43649
+#define SPELL_SHADOWBOLT_2 59575
+#define SPELL_SUMMON_SKELETONS 52611 //Trigger Spell: 52612, summons NPC (28878)
+#define SPELL_SKARVALD_GHOST 48613 //When Skarvald dies
+
+//Yell
+#define SAY_AGGRO -1574005
+#define SAY_KILL -1574006
+#define SAY_DEATH_1 -1574007
+#define SAY_DEATH_2 -1574008
+#define SAY_RAISES -1574009
+
+struct TRINITY_DLL_DECL boss_dalronnAI : public ScriptedAI
+{
+ boss_dalronnAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 killed;
+ uint64 Skarvald;
+
+ void Reset()
+ {
+ Skarvald = 0;
+ }
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if (Skarvald)
+ {
+ Creature* Skravald_m = ((Creature*)Unit::GetUnit((*m_creature), Skarvald));
+ if (Skravald_m)
+ {
+ if (!Skravald_m->isAlive())
+ {
+ DoCast(Skravald_m,SPELL_SKARVALD_GHOST);
+ DoScriptText(SAY_RAISES, m_creature);
+ }
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ killed++;
+ //On first death resurected instatly by Skarvald as a ghost, having the same abilities as when alive and is unatackable
+ //If Skarvald dies first, Dalron resurects him and says "SAY_RAISES"
+ if(killed ==2)
+ DoScriptText(SAY_DEATH_2,m_creature);
+ else
+ DoScriptText(SAY_DEATH_1,m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_dalronn(Creature *_Creature)
+{
+ return new boss_dalronnAI (_Creature);
+}
+
+void AddSC_boss_dalronn()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_dalronn";
+ newscript->GetAI = GetAI_boss_dalronn;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar.cpp
new file mode 100644
index 00000000000..c5e281d459d
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar.cpp
@@ -0,0 +1,106 @@
+/* Script Data Start
+SDName: Boss ingvar
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_ingvar' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//phase 1 Human
+#define SPELL_STAGGERING_ROAR 42708
+#define SPELL_DREADFUL_ROAR 42729
+#define SPELL_SMASH 42669
+#define SPELL_ENRAGE 42705
+#define SPELL_CLEAVE 42724
+//whed killed in phase1 is resurected by Annhylde the Caller and becomes Undead
+//only in phase 2
+#define INGVAR_RESURECTION_VISUAL 24012
+#define INGVAR_UNDEAD 23980
+#define INGVAR_IMAGE 31584
+#define INGVAR_THROW_TARGET 23996
+#define INGVAR_THROW_DUMMY 23997
+
+#define TRANSFORM_INGVAR 42796
+#define INGVAR_FEIGN_DEATH 42795
+#define NPC_ANNHYLDE_THE_CALLER 24068
+#define SPELL_WOE_STRIKE 42730
+#define SPELL_DARK_SMASH 42723
+#define SPELL_SHADOW_AXE 42748
+
+//Yell
+#define SAY_AGGRO -1574015
+#define SAY_KILL -1574016
+#define SAY_DEATH -1574017
+#define SAY_ATTACK_1 -1574018
+#define SAY_ATTACK_2 -1574019
+#define SAY_ATTACK_3 -1574020
+#define SAY_ATTACK_4 -1574021
+#define SAY_PHASE2_AGGRO -1574022
+#define SAY_PHASE2_KILL -1574023
+#define SAY_PHASE2_DEATH -1574024
+#define SAY_ANNHYLDE_THE_CALLER_RESURECTION -1574025
+
+struct TRINITY_DLL_DECL boss_ingvarAI : public ScriptedAI
+{
+ boss_ingvarAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ if(phase ==1)
+ DoScriptText(SAY_AGGRO, m_creature);
+ if(phase ==2)
+ DoScriptText(SAY_PHASE2_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ phase =1;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ if(phase ==1)
+ DoScriptText(SAY_DEATH, m_creature);
+ if(phase ==2)
+ DoScriptText(SAY_PHASE2_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ if(phase == 1)
+ DoScriptText(SAY_KILL, m_creature);
+ //remove all auras, set unatackable and untargetable an begin resurection event and set to phase 2
+ if(phase ==2)
+ DoScriptText(SAY_PHASE2_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_ingvar(Creature *_Creature)
+{
+ return new boss_ingvarAI (_Creature);
+}
+
+void AddSC_boss_ingvar()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_ingvar";
+ newscript->GetAI = GetAI_boss_ingvar;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp
new file mode 100644
index 00000000000..4b7a0bb03de
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp
@@ -0,0 +1,96 @@
+/* Script Data Start
+SDName: Boss skarvald
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_skarvald' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CHARGE 43651 //randomly charges anyone but tank WoWradio video 14s afer aggro, and then every 5s change target
+#define SPELL_ENRAGE 48193
+#define SPELL_STONE_STRIKE 48583
+#define SPELL_DALRON_GHOST 48612 //When Dalron dies
+
+//Yells
+#define SAY_AGGRO -1574010
+#define SAY_KILL -1574011
+#define SAY_DEATH_1 -1574012
+#define SAY_DEATH_2 -1574013
+#define SAY_RAISES -1574014
+
+struct TRINITY_DLL_DECL boss_skarvaldAI : public ScriptedAI
+{
+ boss_skarvaldAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 kiled;
+ uint64 Dalronn;
+
+ void Reset()
+ {
+ Dalronn = 0;
+ }
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ if (Dalronn)
+ {
+ Creature* Dalronn_m = ((Creature*)Unit::GetUnit((*m_creature), Dalronn));
+ if (Dalronn_m)
+ {
+ if (!Dalronn_m->isAlive())
+ {
+ DoCast(Dalronn_m,SPELL_DALRON_GHOST);
+ DoScriptText(SAY_RAISES, m_creature);
+ }
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ kiled++;
+ //On first death resurected instatly by Dalron as a ghost, having the same abilities as when alive and is unatackable
+ //If Dalron dies first, Skarvald resurects him and says "SAY_RAISES"
+ if(kiled ==2)
+ DoScriptText(SAY_DEATH_2,m_creature);
+ else
+ DoScriptText(SAY_DEATH_1,m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ DoScriptText(SAY_KILL, m_creature);
+ }
+};
+
+CreatureAI* GetAI_boss_skarvald(Creature *_Creature)
+{
+ return new boss_skarvaldAI (_Creature);
+}
+
+void AddSC_boss_skarvald()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_skarvald";
+ newscript->GetAI = GetAI_boss_skarvald;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_keep.h b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_keep.h
new file mode 100644
index 00000000000..3d2572c6020
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_keep.h
@@ -0,0 +1,10 @@
+#ifndef DEF_KEEP_H
+#define DEF_KEEP_H
+
+#define DATA_DALRONDEAD 1
+#define DATA_DALRON_DEATH 2
+#define DATA_SKARVALDDEAD 3
+#define DATA_SKARVALD_DEATH 4
+#define DATA_DALRON 5
+#define DATA_SKARVALD 6
+#endif
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_keep.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_keep.cpp
new file mode 100644
index 00000000000..22baa5ac1fb
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_keep.cpp
@@ -0,0 +1,98 @@
+#include "precompiled.h"
+#include "def_keep.h"
+
+struct TRINITY_DLL_DECL instance_keep : public ScriptedInstance
+{
+ instance_keep(Map *Map) : ScriptedInstance(Map) {Initialize();};
+
+ uint64 Skarvald,
+ Skarvald_ghost,
+ Dalronn,
+ Dalronn_ghost,
+ Annhylde_thr_caller,
+ Ingvar,
+ Ingvar_undead;
+ bool IsBossDied[2];
+
+ void Initialize()
+ {
+ Skarvald = 0;
+ Skarvald_ghost = 0;
+ Dalronn =0;
+ Dalronn_ghost =0;
+ Annhylde_thr_caller =0;
+ Ingvar =0;
+ Ingvar_undead =0;
+ IsBossDied[0] = false;
+ IsBossDied[1] = false;
+ }
+
+ bool IsEncounterInProgress() const
+ {
+ //not active
+ return false;
+ }
+
+ void OnCreatureCreate(Creature *creature, uint32 creature_entry)
+ {
+ switch(creature->GetEntry())
+ {
+ case 24200: Dalronn = creature->GetGUID(); break;
+ case 27389: Dalronn_ghost = creature->GetGUID(); break;
+ case 24201: Skarvald = creature->GetGUID(); break;
+ case 27390: Skarvald_ghost = creature->GetGUID(); break;
+ case 24068: Annhylde_thr_caller = creature->GetGUID(); break;
+ case 23954: Ingvar = creature->GetGUID(); break;
+ case 23980: Ingvar_undead = creature->GetGUID(); break;
+ }
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ switch(type)
+ {
+ case DATA_SKARVALDDEAD:
+ if(IsBossDied[0])
+ return 1;
+ break;
+ case DATA_DALRONDEAD:
+ if(IsBossDied[1])
+ return 1;
+ break;
+ }
+
+ return 0;
+ }
+
+ uint64 GetData64 (uint32 identifier)
+ {
+ return 0;
+ }
+
+ void SetData(uint32 type, uint32 data)
+ {
+ switch(type)
+ {
+ case DATA_SKARVALD_DEATH:
+ IsBossDied[0] = true;
+ break;
+ case DATA_DALRON_DEATH:
+ IsBossDied[0] = true;
+ break;
+ }
+ }
+};
+
+InstanceData* GetInstanceData_instance_keep(Map* map)
+{
+ return new instance_keep(map);
+}
+
+void AddSC_instance_keep()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_keep";
+ newscript->GetInstanceData = GetInstanceData_instance_keep;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp
new file mode 100644
index 00000000000..d2351f1f458
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp
@@ -0,0 +1,78 @@
+/* Script Data Start
+SDName: Boss palehoof
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_palehoof' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ARCING_SMASH 48260
+#define SPELL_IMPALE 48261
+#define SPELL_WITHERING_ROAR 48256
+
+//Yell
+#define SAY_AGGRO -1575000
+#define SAY_SLAY_1 -1575001
+#define SAY_SLAY_2 -1575002
+#define SAY_DEATH -1575003
+
+struct TRINITY_DLL_DECL boss_palehoofAI : public ScriptedAI
+{
+ boss_palehoofAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if (victim == m_creature)
+ return;
+
+ switch(rand()%2)
+ {
+ case 0:
+ DoScriptText(SAY_SLAY_1, m_creature);
+ break;
+ case 1:
+ DoScriptText(SAY_SLAY_2, m_creature);
+ break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_palehoof(Creature *_Creature)
+{
+ return new boss_palehoofAI (_Creature);
+}
+
+void AddSC_boss_palehoof()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_palehoof";
+ newscript->GetAI = GetAI_boss_palehoof;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_skadi.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_skadi.cpp
new file mode 100644
index 00000000000..e08f249b036
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_skadi.cpp
@@ -0,0 +1,89 @@
+/* Script Data Start
+SDName: Boss skadi
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_skadi' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Phase 0 "gauntlet even" Skadi on a flying mount, waves of adds charging to the group periodicaly carrying harpoons
+//Phase 1 Kill the Skadi drake mount with harppons launcher
+//Phase 2 Kill the Skadi
+
+//Skadi Spells
+#define SPELL_CRUSH 50234
+#define SPELL_POISONED_SPEAR 50225
+#define SPELL_WHIRLWIND 50228 //random target, but not the tank approx. every 20s
+
+//Yell
+#define SAY_AGGRO -1575004
+#define SAY_KILL_1 -1575005
+#define SAY_KILL_2 -1575006
+#define SAY_KILL_3 -1575007
+#define SAY_DEATH -1575008
+#define SAY_DRAKE_DEATH -1575009
+#define SAY_DRAKE_HIT_1 -1575010
+#define SAY_DRAKE_HIT_2 -1575011
+#define SAY_DRAKE_BREATH_1 -1575012
+#define SAY_DRAKE_BREATH_2 -1575013
+#define SAY_DRAKE_BREATH_3 -1575014
+
+struct TRINITY_DLL_DECL boss_skadiAI : public ScriptedAI
+{
+ boss_skadiAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 phase;
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ phase = 0;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_KILL_1, m_creature);break;
+ case 1: DoScriptText(SAY_KILL_2, m_creature);break;
+ case 2: DoScriptText(SAY_KILL_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_skadi(Creature *_Creature)
+{
+ return new boss_skadiAI (_Creature);
+}
+
+void AddSC_boss_skadi()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_skadi";
+ newscript->GetAI = GetAI_boss_skadi;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_svala.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_svala.cpp
new file mode 100644
index 00000000000..30064208cc3
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_svala.cpp
@@ -0,0 +1,83 @@
+/* Script Data Start
+SDName: Boss svala
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_svala' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CALL_FLAMES 48258
+#define SPELL_RITUAL_OF_THE_SWORD 48276 //Effect #1 Teleport, Effect #2 Dummy
+#define SPELL_SINSTER_STRIKE 15667
+
+//Yells
+#define SAY_DIALOG_WITH_ARTHAS_1 -1575015
+#define SAY_DIALOG_WITH_ARTHAS_2 -1575016
+#define SAY_DIALOG_WITH_ARTHAS_3 -1575017
+#define SAY_AGGRO -1575018
+#define SAY_SLAY_1 -1575019
+#define SAY_SLAY_2 -1575020
+#define SAY_SLAY_3 -1575021
+#define SAY_DEATH -1575022
+#define SAY_SACRIFICE_PLAYER_1 -1575023
+#define SAY_SACRIFICE_PLAYER_2 -1575024
+#define SAY_SACRIFICE_PLAYER_3 -1575025
+#define SAY_SACRIFICE_PLAYER_4 -1575026
+#define SAY_SACRIFICE_PLAYER_5 -1575027
+
+struct TRINITY_DLL_DECL boss_svalaAI : public ScriptedAI
+{
+ boss_svalaAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_svala(Creature *_Creature)
+{
+ return new boss_svalaAI (_Creature);
+}
+
+void AddSC_boss_svala()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_svala";
+ newscript->GetAI = GetAI_boss_svala;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_ymiron.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_ymiron.cpp
new file mode 100644
index 00000000000..527a18d9af4
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/boss_ymiron.cpp
@@ -0,0 +1,85 @@
+/* Script Data Start
+SDName: Boss ymiron
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = 'boss_ymiron' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_BANE 48294
+#define SPELL_DARK_SLASH 48292
+#define SPELL_FETID_ROT 48291
+#define SPELL_SCREAMS_OF_THE_DEAD 51750
+#define SPELL_SPIRIT_BURST 48529
+#define SPELL_SPIRIT_STRIKE 48423
+//every 20% stuns the party and runs to a boat
+
+//Yell
+#define SAY_AGGRO -1575028
+#define SAY_SLAY_1 -1575029
+#define SAY_SLAY_2 -1575030
+#define SAY_SLAY_3 -1575031
+#define SAY_SLAY_4 -1575032
+#define SAY_DEATH -1575033
+#define SAY_SUMMON_BJORN -1575034
+#define SAY_SUMMON_HALDOR -1575035
+#define SAY_SUMMON_RANULF -1575036
+#define SAY_SUMMON_TORGYN -1575037
+
+struct TRINITY_DLL_DECL boss_ymironAI : public ScriptedAI
+{
+ boss_ymironAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%4)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ case 3: DoScriptText(SAY_SLAY_4, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_ymiron(Creature *_Creature)
+{
+ return new boss_ymironAI (_Creature);
+}
+
+void AddSC_boss_ymiron()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_ymiron";
+ newscript->GetAI = GetAI_boss_ymiron;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/def_pinnacle.h b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/def_pinnacle.h
new file mode 100644
index 00000000000..82e2173fab5
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/def_pinnacle.h
@@ -0,0 +1,4 @@
+#ifndef DEF_PINNACLE_H
+#define DEF_PINNACLE_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/instance_pinnacle.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/instance_pinnacle.cpp
new file mode 100644
index 00000000000..0772aee0647
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_pinnacle/instance_pinnacle.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_pinnacle.h"
+
+struct TRINITY_DLL_DECL instance_pinnacle : public ScriptedInstance
+{
+ instance_pinnacle(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_pinnacle(Map* map)
+{
+ return new instance_pinnacle(map);
+}
+
+void AddSC_instance_pinnacle()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_pinnacle";
+ newscript->GetInstanceData = GetInstanceData_instance_pinnacle;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/vault_of_archavon/boss_archavon.cpp b/src/bindings/scripts/scripts/zone/vault_of_archavon/boss_archavon.cpp
new file mode 100644
index 00000000000..9eb629f2f5f
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/vault_of_archavon/boss_archavon.cpp
@@ -0,0 +1,93 @@
+/* Script Data Start
+SDName: Boss archavon
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells Archavon
+#define SPELL_ROCK_SHARDS 60883 //Instant -- Hurls a jagged rock shard, inflicting 707 to 793 Physical damage to any enemies within 5 of the target.
+#define SPELL_CRUSHING_LEAP 60895 //Instant (10-80yr range) -- Leaps at an enemy, inflicting 8000 Physical damage, knocking all nearby enemies away, and creating a cloud of choking debris.
+#define SPELL_CHOKING_CLOUD 61672 //Leaving behind CRUSHING_LEAP --> Slams into the ground, kicking up an asphyxiating cloud of debris, inflicting 2828 to 3172 Nature damage per second to all enemies caught within and reducing their chance to hit by 50%.
+//#define SPELL_STOMP //48131 or 55292 or 60880
+#define SPELL_IMPALE 60882 //Lifts an enemy off the ground with a spiked fist, inflicting 47125 to 52875 Physical damage and 9425 to 10575 additional damage each second for 8 sec.
+
+//Spells Archavon Warders
+#define SPELL_ROCK_SHOWER_N 60919
+#define SPELL_ROCK_SHOWER_H 60923
+#define SPELL_SHIELD_CRUSH_N 60897
+#define SPELL_SHIELD_CRUSH_H 60899
+#define SPELL_WHIRL_N 60902
+#define SPELL_WHIRL_H 60916
+
+//4 Warders spawned
+#define ARCHAVON_WARDER 32353 //npc 32353
+
+//Yell
+#define SAY_LEAP "Archavon the Stone Watcher lunges for $N!" //$N should be the target
+
+struct TRINITY_DLL_DECL boss_archavonAI : public ScriptedAI
+{
+ boss_archavonAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+/*######
+## Mob Archavon Warder
+######*/
+struct TRINITY_DLL_DECL mob_warderAI : public ScriptedAI //npc 32353
+{
+ mob_warderAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_mob_warder(Creature *_Creature)
+{
+ return new mob_warderAI (_Creature);
+}
+
+CreatureAI* GetAI_boss_archavon(Creature *_Creature)
+{
+ return new boss_archavonAI (_Creature);
+}
+
+void AddSC_boss_archavon()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_archavon";
+ newscript->GetAI = GetAI_boss_archavon;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_archavon_warder";
+ newscript->GetAI = GetAI_mob_warder;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/vault_of_archavon/def_vault_of_archavon.h b/src/bindings/scripts/scripts/zone/vault_of_archavon/def_vault_of_archavon.h
new file mode 100644
index 00000000000..f46ba447945
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/vault_of_archavon/def_vault_of_archavon.h
@@ -0,0 +1,4 @@
+#ifndef DEF_ARCHAVON_H
+#define DEF_ARCHAVON_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/vault_of_archavon/instance_vault_of_archavon.cpp b/src/bindings/scripts/scripts/zone/vault_of_archavon/instance_vault_of_archavon.cpp
new file mode 100644
index 00000000000..94ee36212ec
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/vault_of_archavon/instance_vault_of_archavon.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_vault_of_archavon.h"
+
+struct TRINITY_DLL_DECL instance_archavon : public ScriptedInstance
+{
+ instance_archavon(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_archavon(Map* map)
+{
+ return new instance_archavon(map);
+}
+
+void AddSC_instance_archavon()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_archavon";
+ newscript->GetInstanceData = GetInstanceData_instance_archavon;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/boss_cyanigosa.cpp b/src/bindings/scripts/scripts/zone/violet_hold/boss_cyanigosa.cpp
new file mode 100644
index 00000000000..cf6833d94bb
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/boss_cyanigosa.cpp
@@ -0,0 +1,82 @@
+/* Script Data Start
+SDName: Boss cyanigosa
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ARCANE_VACUM 58694
+#define SPELL_BLIZZARD 58693
+#define SPELL_MANA_DESTRUCTION 59374
+#define SPELL_TAIL_SWEEP 58690
+#define SPELL_UNCONTROLLABLE_ENERGY 58688
+
+//Yells
+#define SAY_AGGRO -1608000
+#define SAY_SLAY_1 -1608001
+#define SAY_SLAY_2 -1608002
+#define SAY_SLAY_3 -1608003
+#define SAY_DEATH -1608004
+#define SAY_SPAWN -1608005
+#define SAY_DISRUPTION -1608006
+#define SAY_BREATH_ATTACK -1608007
+#define SAY_SPECIAL_ATTACK_1 -1608008
+#define SAY_SPECIAL_ATTACK_2 -1608009
+
+struct TRINITY_DLL_DECL boss_cyanigosaAI : public ScriptedAI
+{
+ boss_cyanigosaAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_cyanigosa(Creature *_Creature)
+{
+ return new boss_cyanigosaAI (_Creature);
+}
+
+void AddSC_boss_cyanigosa()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_cyanigosa";
+ newscript->GetAI = GetAI_boss_cyanigosa;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/boss_erekem.cpp b/src/bindings/scripts/scripts/zone/violet_hold/boss_erekem.cpp
new file mode 100644
index 00000000000..c74b3e28b6f
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/boss_erekem.cpp
@@ -0,0 +1,82 @@
+/* Script Data Start
+SDName: Boss erekem
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_BLOODLUST 54516
+#define SPELL_BREAK_BONDS 59463
+#define SPELL_CHAIN_HEAL 54481
+#define SPELL_EARTH_SHIELD 54479
+#define SPELL_EARTH_SHOCK 54511
+#define SPELL_LIGHTNING_BOLT 53044
+#define SPELL_STORMSTRIKE 51876
+
+//Yells
+#define SAY_AGGRO -1608010
+#define SAY_SLAY_1 -1608011
+#define SAY_SLAY_2 -1608012
+#define SAY_SLAY_3 -1608013
+#define SAY_DEATH -1608014
+#define SAY_SPAWN -1608015
+#define SAY_ADD_KILED -1608016
+#define SAY_BOTH_ADDS_KILED -1608017
+
+struct TRINITY_DLL_DECL boss_erekemAI : public ScriptedAI
+{
+ boss_erekemAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_erekem(Creature *_Creature)
+{
+ return new boss_erekemAI (_Creature);
+}
+
+void AddSC_boss_erekem()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_erekem";
+ newscript->GetAI = GetAI_boss_erekem;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/boss_ichoron.cpp b/src/bindings/scripts/scripts/zone/violet_hold/boss_ichoron.cpp
new file mode 100644
index 00000000000..871eba33c32
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/boss_ichoron.cpp
@@ -0,0 +1,81 @@
+/* Script Data Start
+SDName: Boss ichoron
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_DRAINED 59820
+#define SPELL_FRENZY 54312
+#define SPELL_PROTECTIVE_BUBBLE 54306
+#define SPELL_WATER_BLAST 54237
+#define SPELL_WATER_BOLT_VOLLEY 54241
+
+//Yells
+#define SAY_AGGRO -1608018
+#define SAY_SLAY_1 -1608019
+#define SAY_SLAY_2 -1608020
+#define SAY_SLAY_3 -1608021
+#define SAY_DEATH -1608022
+#define SAY_SPAWN -1608023
+#define SAY_ENRAGE -1608024
+#define SAY_SHATTER -1608025
+#define SAY_BUBBLE -1608026
+
+struct TRINITY_DLL_DECL boss_ichoronAI : public ScriptedAI
+{
+ boss_ichoronAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_ichoron(Creature *_Creature)
+{
+ return new boss_ichoronAI (_Creature);
+}
+
+void AddSC_boss_ichoron()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_ichoron";
+ newscript->GetAI = GetAI_boss_ichoron;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/boss_lavanthor.cpp b/src/bindings/scripts/scripts/zone/violet_hold/boss_lavanthor.cpp
new file mode 100644
index 00000000000..2f88a6f2e30
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/boss_lavanthor.cpp
@@ -0,0 +1,52 @@
+/* Script Data Start
+SDName: Boss lavanthor
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CAUTERIZING_FLAMES 59466
+#define SPELL_FIREBOLT 54235
+#define SPELL_FLAME_BREATH 54282
+#define SPELL_LAVA_BURN 54249
+
+struct TRINITY_DLL_DECL boss_lavanthorAI : public ScriptedAI
+{
+ boss_lavanthorAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_boss_lavanthor(Creature *_Creature)
+{
+ return new boss_lavanthorAI (_Creature);
+}
+
+void AddSC_boss_lavanthor()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_lavanthor";
+ newscript->GetAI = GetAI_boss_lavanthor;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/boss_moragg.cpp b/src/bindings/scripts/scripts/zone/violet_hold/boss_moragg.cpp
new file mode 100644
index 00000000000..72be8a72632
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/boss_moragg.cpp
@@ -0,0 +1,50 @@
+/* Script Data Start
+SDName: Boss moragg
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_CORROSICE_SALIVA 54527
+#define SPELL_OPTIC_LINK 54396
+
+struct TRINITY_DLL_DECL boss_moraggAI : public ScriptedAI
+{
+ boss_moraggAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who) {}
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer) {}
+};
+
+CreatureAI* GetAI_boss_moragg(Creature *_Creature)
+{
+ return new boss_moraggAI (_Creature);
+}
+
+void AddSC_boss_moragg()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_moragg";
+ newscript->GetAI = GetAI_boss_moragg;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/boss_xevozz.cpp b/src/bindings/scripts/scripts/zone/violet_hold/boss_xevozz.cpp
new file mode 100644
index 00000000000..e8653018cc9
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/boss_xevozz.cpp
@@ -0,0 +1,82 @@
+/* Script Data Start
+SDName: Boss xevozz
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_ARCANE_BARRAGE_VOLLEY 54202
+#define SPELL_ARCANE_BUFFET 54226
+#define SPELL_SUMMON_ETHEREAL_SPHERE_1 54102
+#define SPELL_SUMMON_ETHEREAL_SPHERE_2 54137
+#define SPELL_SUMMON_ETHEREAL_SPHERE_3 54138
+
+//Yells
+#define SAY_AGGRO -1608027
+#define SAY_SLAY_1 -1608028
+#define SAY_SLAY_2 -1608029
+#define SAY_SLAY_3 -1608030
+#define SAY_DEATH -1608031
+#define SAY_SPAWN -1608032
+#define SAY_CHARGED -1608033
+#define SAY_REPEAT_SUMMON_1 -1608034
+#define SAY_REPEAT_SUMMON_2 -1608035
+#define SAY_SUMMON_ENERGY -1608036
+
+struct TRINITY_DLL_DECL boss_xevozzAI : public ScriptedAI
+{
+ boss_xevozzAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_xevozz(Creature *_Creature)
+{
+ return new boss_xevozzAI (_Creature);
+}
+
+void AddSC_boss_xevozz()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_xevozz";
+ newscript->GetAI = GetAI_boss_xevozz;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/boss_zuramat.cpp b/src/bindings/scripts/scripts/zone/violet_hold/boss_zuramat.cpp
new file mode 100644
index 00000000000..e14c3ba672d
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/boss_zuramat.cpp
@@ -0,0 +1,82 @@
+/* Script Data Start
+SDName: Boss zuramat
+SDAuthor: LordVanMartin
+SD%Complete:
+SDComment:
+SDCategory:
+Script Data End */
+
+/*** SQL START ***
+update creature_template set scriptname = '' where entry = '';
+*** SQL END ***/
+#include "precompiled.h"
+
+//Spells
+#define SPELL_SHROUD_OF_DARKNESS 54524
+#define SPELL_SUMMON_VOID_SENTRY 54524
+#define SPELL_VOID_SHIFT 54524
+
+#define NPC_VOID_SENTRY 29364
+
+//Yells
+#define SAY_AGGRO -1608037
+#define SAY_SLAY_1 -1608038
+#define SAY_SLAY_2 -1608039
+#define SAY_SLAY_3 -1608040
+#define SAY_DEATH -1608041
+#define SAY_SPAWN -1608042
+#define SAY_SHIELD -1608043
+#define SAY_WHISPER -1608044
+
+struct TRINITY_DLL_DECL boss_zuramatAI : public ScriptedAI
+{
+ boss_zuramatAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 void_shift;
+
+ void Reset() {}
+ void Aggro(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, m_creature);
+ }
+ void AttackStart(Unit* who) {}
+ void MoveInLineOfSight(Unit* who) {}
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if(!UpdateVictim())
+ return;
+
+ DoMeleeAttackIfReady();
+ }
+ void JustDied(Unit* killer)
+ {
+ DoScriptText(SAY_DEATH, m_creature);
+ }
+ void KilledUnit(Unit *victim)
+ {
+ if(victim == m_creature)
+ return;
+ switch(rand()%3)
+ {
+ case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
+ case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
+ case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
+ }
+ }
+};
+
+CreatureAI* GetAI_boss_zuramat(Creature *_Creature)
+{
+ return new boss_zuramatAI (_Creature);
+}
+
+void AddSC_boss_zuramat()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name="boss_zuramat";
+ newscript->GetAI = GetAI_boss_zuramat;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/def_violet_hold.h b/src/bindings/scripts/scripts/zone/violet_hold/def_violet_hold.h
new file mode 100644
index 00000000000..71bc0d18d2f
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/def_violet_hold.h
@@ -0,0 +1,4 @@
+#ifndef DEF_VIOLET_HOLD_H
+#define DEF_VIOLET_HOLD_H
+
+#endif
diff --git a/src/bindings/scripts/scripts/zone/violet_hold/instance_violet_hold.cpp b/src/bindings/scripts/scripts/zone/violet_hold/instance_violet_hold.cpp
new file mode 100644
index 00000000000..5d6ba3a5be3
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/violet_hold/instance_violet_hold.cpp
@@ -0,0 +1,21 @@
+#include "precompiled.h"
+#include "def_violet_hold.h"
+
+struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
+{
+ instance_violet_hold(Map *Map) : ScriptedInstance(Map) {Initialize();};
+};
+
+InstanceData* GetInstanceData_instance_violet_hold(Map* map)
+{
+ return new instance_violet_hold(map);
+}
+
+void AddSC_instance_violet_hold()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name = "instance_violet_hold";
+ newscript->GetInstanceData = GetInstanceData_instance_violet_hold;
+ newscript->RegisterSelf();
+}
diff --git a/src/bindings/scripts/sql/WotLK/npc_taxi.sql b/src/bindings/scripts/sql/WotLK/npc_taxi.sql
new file mode 100644
index 00000000000..b93f5dfdfca
--- /dev/null
+++ b/src/bindings/scripts/sql/WotLK/npc_taxi.sql
@@ -0,0 +1,10 @@
+#Taxi in Archerus
+UPDATE `creature_template` SET `ScriptName`='npc_acherus_taxi' WHERE `entry`='28864';
+
+#Stormwind Harbor
+UPDATE `creature_template` SET `ScriptName`='npc_stormwindharbor_taxi' WHERE `entry`='29154';
+
+#Taxis to the 3 parts of the Wyrmresttempel
+UPDATE `creature_template` SET `ScriptName`='npc_wyrmresttempelbottom_taxi' WHERE `entry`='26443';
+UPDATE `creature_template` SET `ScriptName`='npc_wyrmresttempelmiddle_taxi' WHERE `entry`='27575';
+UPDATE `creature_template` SET `ScriptName`='npc_wyrmresttempeltop_taxi' WHERE `entry`='26949';
diff --git a/src/bindings/scripts/sql/WotLK/script_texts_wotlk.sql b/src/bindings/scripts/sql/WotLK/script_texts_wotlk.sql
new file mode 100644
index 00000000000..de3de7b9464
--- /dev/null
+++ b/src/bindings/scripts/sql/WotLK/script_texts_wotlk.sql
@@ -0,0 +1,530 @@
+-- -1 574 000 UTGARDE KEEP
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Prince Keleseth
+ (-1574000, 'Your blood is mine!',13221,1,0,'keleseth SAY_AGGRO'),
+ (-1574001, 'Darkness waits',13223,1,0, 'keleseth SAY_KILL'),
+ (-1574002, 'I join... the night.',13225,1,0, 'keleseth SAY_DEATH'),
+ (-1574003, 'Not so fast.',13222,1,0, 'keleseth SAY_FROST_TOMB'),
+ (-1574004, 'Aranal, lidel! Their fate shall be yours!',13224,1,0, 'keleseth SAY_SKELETONS'),
+-- Dalronn the Controller
+ (-1574005, 'By all means, don\'t assess the situation, you halfwit! Just jump into the fray!',13199, 1,0,'dalronn SAY_AGGRO'),
+ (-1574006, 'You may serve me yet.',13202, 1,0,'dalronn SAY_KILL'),
+ (-1574007, 'See... you... soon.',13200, 1,0,'dalronn SAY_DEATH_1'),
+ (-1574008, 'There\'s no... greater... glory.',13201, 1,0,'dalronn SAY_DEATH_2'),
+ (-1574009, 'Skarvald, you incompetent slug! Return and make yourself useful!',13203,1,0, 'dalronn SAY_RAISES'),
+-- Skarvald the Constructor
+ (-1574010, 'Dalronn! See if you can muster the nerve to join my attack!',13229, 1,0,'skarvald SAY_AGGRO'),
+ (-1574011, '...',13232,1,0, 'skarvald SAY_KILL'),
+ (-1574012, 'Not... over... yet.',13230,1,0, 'skarvald SAY_DEATH_1'),
+ (-1574013, 'A warrior\'s death.',13231,1,0, 'skarvald SAY_DEATH_2'),
+ (-1574014, 'Pagh! What sort of necromancer lets death stop him? I knew you were worthless!',13233,1,0, 'skarvald SAY_RAISES'),
+-- Ingvar the Plunderer
+ (-1574015, 'I\'ll paint my face with your blood!',13207,1,0, 'ingvar SAY_AGGRO'),
+ (-1574016, 'I am a warrior born!',13214,1,0, 'ingvar SAY_KILL'),
+ (-1574017, 'My life for the... death god!',13213,1,0, 'ingvar SAY_DEATH'),
+ (-1574018, 'Fight on or face me!',13208,1,0, 'ingvar SAY_ATTACK_1'),
+ (-1574019, '...',13240, 1,0,'ingvar SAY_ATTACK_2'),
+ (-1574020, 'Slay them all, no excuses, no mercy, no rest!',13241,1,0, 'ingvar SAY_ATTACK_3'),
+ (-1574021, '... of destruction silence every ...!',13242,1,0, 'ingvar SAY_ATTACK_4'),
+ (-1574022, 'I return! A second chance to carve out your skull!',13208,1,0, 'ingvar SAY_PHASE2_AGGRO'),
+ (-1574023, 'Mjul orm agn gjor!',13212, 1,0,'ingvar SAY_PHASE2_KILL'),
+ (-1574024, 'No! I can do... better! I can...',13211,1,0, 'ingvar SAY_PHASE2_DEATH'),
+-- Said by Annhylde the Caller when resurecting Ingvar
+ (-1574025, 'Ingvar! Your pathetic failure will serve as a warning to all... you are damned! Arise and carry out the master\'s will!',13754, 1,0,'ingvar SAY_ANNHYLDE_THE_CALLER_RESURECTION');
+
+-- -1 575 000 UTGARDE PINNACLE
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Gortok Palehoof
+ (-1575000, 'What this place? I will destroy you!',13464,1,0, 'palehoof SAY_AGGRO'),
+ (-1575001, 'You die! That what master wants!',13465,1,0, 'palehoof SAY_SLAY_1'),
+ (-1575002, 'An easy task!',13466,1,0, 'palehoof SAY_SLAY_2'),
+ (-1575003, '...',13467,1,0, 'palehoof SAY_DEATH'),
+-- Skadi the Ruthless
+ (-1575004, 'What mongrels dare intrude here? Look alive, my brothers! A feast for the one that brings me their heads!',13497,1,0, 'skadi SAY_AGGRO'),
+ (-1575005, 'Mjor Na Ul Kaval!',13503,1,0, 'skadi SAY_KILL_1'),
+ (-1575006, 'Not so brash now, are you?',13504,1,0, 'skadi SAY_KILL_2'),
+ (-1575007, 'I\'ll mount your skull from the highest tower!',13505,1,0, 'skadi SAY_KILL_3'),
+ (-1575008, 'ARGH! You call that... an attack? I\'ll... show... aghhhh...',13506,1,0, 'skadi SAY_DEATH'),
+ (-1575009, 'You motherless knaves! Your corpses will make fine morsels for my new drake!',13507,1,0, 'skadi SAY_DRAKE_DEATH'),
+ (-1575010, 'I ask for ... to kill them, yet all I get is feeble whelps! By Ye.. SLAUGHTER THEM!',13501,1,0, 'skadi SAY_DRAKE_HIT_1'),
+ (-1575011, 'If one more harpoon touches my drake I\'ll flae my miserable heins.',13502,1,0, 'skadi SAY_DRAKE_HIT_2'),
+ (-1575012, 'Sear them to the bone!',13498,1,0, 'skadi SAY_DRAKE_BREATH_1'),
+ (-1575013, 'Go now! Leave nothing but ash in your wake!',13499,1,0, 'skadi SAY_DRAKE_BREATH_2'),
+ (-1575014, 'Cleanse our sacred halls with flame!',13500,1,0, 'skadi SAY_DRAKE_BREATH_3'),
+-- Svala Sorrowgrave
+ (-1575015, 'I will vanquish your soul!',13842,1,0, 'svala SAY_AGGRO'),
+ (-1575016, 'You were a fool to challenge the power of the Lich King!',13845, 1,0,'svala SAY_SLAY_1'),
+ (-1575017, 'Your will is done, my king.',13847,1,0, 'svala SAY_SLAY_2'),
+ (-1575018, 'Another soul for my master.',13848, 1,0,'svala SAY_SLAY_3'),
+ (-1575019, 'Nooo! I did not come this far... to...',13855,1,0, 'svala SAY_DEATH'),
+ (-1575020, 'Your death approaches.',13850,1,0, 'svala SAY_SACRIFICE_PLAYER_1'),
+ (-1575021, 'Go now to my master.',13851,1,0, 'svala SAY_SACRIFICE_PLAYER_2'),
+ (-1575022, 'Your end is inevitable.',13852,1,0, 'svala SAY_SACRIFICE_PLAYER_3'),
+ (-1575023, '...',13853,1,0, 'svala SAY_SACRIFICE_PLAYER_4'),
+ (-1575024, 'Any last words?',13854,1,0, 'svala SAY_SACRIFICE_PLAYER_5'),
+ (-1575025, 'My liege! I have done as you asked, and now beseech you for your blessing!',13856,1,0, 'svala SAY_SAY_DIALOG_WITH_ARTHAS_1'),
+ (-1575026, 'The sensation is... beyond my imagining. I am yours to command, my king.',13857,1,0, 'svala SAY_SAY_DIALOG_WITH_ARTHAS_2'),
+ (-1575027, 'I will be happy to slaughter them in your name! Come, enemies of the Scourge! I will show you the might of the Lich King!',13858,1,0, 'svala SAY_SAY_DIALOG_WITH_ARTHAS_3'),
+-- King Ymiron
+ (-1575028, 'You invade my home and then dare to challenge me? I will tear the hearts from your chests and offer them as gifts to the death god! Rualg nja gaborr!',13609, 1,0,'ymiron SAY_AGGRO'),
+ (-1575029, 'Your death is only the beginning!',13614,1,0, 'ymiron SAY_SLAY_1'),
+ (-1575030, 'You have failed your people!',13615, 1,0,'ymiron SAY_SLAY_2'),
+ (-1575031, 'There is a reason I am king!',13616, 1,0,'ymiron SAY_SLAY_3'),
+ (-1575032, 'Bleed no more!',13617, 1,0,'ymiron SAY_SLAY_4'),
+ (-1575033, 'What... awaits me... now?',13618,1,0, 'ymiron SAY_DEATH'),
+ (-1575034, 'Bjorn of the Black Storm! Honor me now with your presence!',13610,1,0, 'ymiron SAY_SUMMON_BJORN'),
+ (-1575035, 'Haldor of the rocky cliffs, grant me your strength!',13611, 1,0,'ymiron SAY_SUMMON_HALDOR'),
+ (-1575036, 'Ranulf of the screaming abyss, snuff these maggots with darkest night!',13612,1,0, 'ymiron SAY_SUMMON_RANULF'),
+ (-1575037, 'Tor of the Brutal Siege! Bestow your might upon me!',13613,1,0, 'ymiron SAY_SUMMON_TORGYN');
+
+-- -1 576 000 NEXUS
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Anomalus
+ (-1576000, 'Chaos beckons.',13186,1,0,'anomalus SAY_AGGRO'),
+ (-1576001, 'Expiration... is necessary...',13274,1,0,'anomalus SAY_KILL'),
+ (-1576002, 'Of course.',13187,1,0,'anomalus SAY_DEATH'),
+ (-1576003, 'Reality... unwoven.',13188,1,0,'anomalus SAY_RIFT'),
+ (-1576004, 'Indestructible.',13189,1,0,'anomalus SAY_SHIELD'),
+-- Keristrasza
+ (-1576005, 'Preserve? Why? There\'s no truth in it. No no no... only in the taking! I see that now!',13450,1,0,'keristrasza SAY_AGGRO'),
+ (-1576006, 'Now we\'ve come to the truth! ',13453,1,0,'keristrasza SAY_SLAY'),
+ (-1576007, 'Finish it! Finish it! Kill me, or I swear by the Dragonqueen you\'ll never see daylight again!',13452,1,0,'keristrasza SAY_ENRAGE'),
+ (-1576008, 'Dragonqueen... Life-Binder... preserve... me.',13454,1,0,'keristrasza SAY_DEATH'),
+ (-1576009, 'Stay. Enjoy your final moments.',13451,1,0,'keristrasza SAY_CRYSTAL_NOVA'),
+-- Grand Magus Telestra
+ (-1576010, 'You know what they say about curiosity.',13319,1,0,'magus_telestra SAY_AGGRO'),
+ (-1576011, 'Death becomes you!',13324,1,0,'magus_telestra SAY_KILL'),
+ (-1576012, 'Damn the... luck.',13320,1,0,'magus_telestra SAY_DEATH'),
+ (-1576013, 'Now to finish the job!',13323,1,0,'magus_telestra SAY_MERGE'),
+ (-1576014, 'There\'s plenty of me to go around.',13321,1,0,'magus_telestra SAY_SPLIT_1'),
+ (-1576015, 'I\'ll give you more than you can handle.',13322,1,0,'magus_telestra SAY_SPLIT_2'),
+-- Ormorok
+ (-1576016, 'Noo!',13328,1,0,'ormorok SAY_AGGRO'),
+ (-1576017, 'Aargh Kill!',13329,1,0,'ormorok SAY_KILL'),
+ (-1576018, 'Aaggh!',13330,1,0,'ormorok SAY_DEATH'),
+ (-1576019, 'Back!',13331,1,0,'ormorok SAY_REFLECT'),
+ (-1576020, 'Bleed!',13332,1,0,'ormorok SAY_ICE_SPIKES'),
+-- Commander Stoutbeard
+ (-1576021, 'What? Where in a..? Don\'t just stand around lads KILL SOMEBODY!',13193,1,0,'commander_stoutbeard SAY_AGGRO'),
+ (-1576022, 'Now we\re getting someplace!',13195,1,0,'commander_stoutbeard SAY_KILL'),
+ (-1576023, 'Is that all you\'ve... got?',13194,1,0,'commander_stoutbeard SAY_DEATH'),
+-- Commander Kolurg
+ (-1576024, 'What is this? Mag thorin Kar! Kill them!',13458,1,0,'commander_kolurg SAY_AGGRO'),
+ (-1576025, 'Our task is not yet done!',13459,1,0,'commander_kolurg SAY_KILL'),
+ (-1576026, 'GOOO!',13460,1,0,'commander_kolurg SAY_DEATH');
+
+-- -1 578 000 OCULUS
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Drakos the Interrogator
+ (-1578000, 'The prisoners shall not go free. The word of Malygos is law!',13594,1,0, 'drakos SAY_AGGRO'),
+ (-1578001, 'A fitting punishment!',13602, 1,0,'drakos SAY_KILL_1'),
+ (-1578002, 'Sentence: executed!',13603,1,0, 'drakos SAY_KILL_2'),
+ (-1578003, 'Another casualty of war!',13604, 1,0,'drakos SAY_KILL_3'),
+ (-1578004, 'The war... goes on.',13605,1,0, 'drakos SPELL_DEATH'),
+ (-1578005, 'It is too late to run!',13598, 1,0,'drakos SAY_PULL_1'),
+ (-1578006, 'Gather \'round! ',13599, 1,0,'drakos SAY_PULL_2'),
+ (-1578007, 'None shall escape!',13600, 1,0,'drakos SAY_PULL_3'),
+ (-1578008, 'I condemn you to death!',13601,1,0, 'drakos SAY_PULL_4'),
+ (-1578009, 'Tremble, worms!',13595,1,0, 'drakos SAY_STOMP_1'),
+ (-1578010, 'I will crush you!',13596, 1,0,'drakos SAY_STOMP_2'),
+ (-1578011, 'Can you fly?',13597, 1,0,'drakos SAY_STOMP_3'),
+-- Mage-Lord Urom
+ (-1578012, 'Poor blind fools!',13638,1,0, 'urom SAY_AGGRO'),
+ (-1578013, 'If only you understood!',13641,1,0, 'urom SAY_KILL_1'),
+ (-1578014, 'Now, do you see? DO YOU?!',13642,1,0, 'urom SAY_KILL_2'),
+ (-1578015, 'Unfortunate, but necessary.',13643,1,0, 'urom SAY_KILL_3'),
+ (-1578016, 'Everything I\'ve done... has been for Azeroth...',13644,1,0, 'urom SAY_DEATH'),
+ (-1578017, 'A taste... just a small taste... of the Spell-Weaver\'s power!',13639,1,0, 'urom SAY_EXPLOSION_1'),
+ (-1578018, 'So much unstable energy... but worth the risk to destroy you!',13640,1,0, 'urom SAY_EXPLOSION_2'),
+ (-1578019, 'What do we have here... those would defy the Spell-Weaver? Those without foresight or understanding. How could I make you see? Malygos is saving the world from itself! Bah! You are hardly worth my time!',13635,1,0, 'urom SAY_SUMMON_1'),
+ (-1578020, 'Clearly my pets failed. Perhaps another demonstration is in order.',13636,1,0, 'urom SAY_SUMMON_2'),
+ (-1578021, 'Still you fight. Still you cling to misguided principles. If you survive, you\'ll find me in the center ring.',13637,1,0, 'urom SAY_SUMMON_3'),
+-- Varos Cloudstrider
+ (-1578022, 'There will be no mercy!',13649,1,0, 'varos SAY_AGGRO'),
+ (-1578023, 'You were warned.',13653,1,0, 'varos SAY_KILL_1'),
+ (-1578024, 'The Oculus is ours.',13654,1,0, 'varos SAY_KILL_2'),
+ (-1578025, 'They are... too strong! Underestimated their... fortitude.',13655,1,0, 'varos SAY_DEATH'),
+ (-1578026, 'Blast them! Destroy them!',13650,1,0, 'varos SAY_STRIKE_1'),
+ (-1578027, 'Take no prisoners! Attack!',13651,1,0, 'varos SAY_STRIKE_2'),
+ (-1578028, 'Strike now! Obliterate them!',13652,1,0, 'varos SAY_STRIKE_3'),
+-- Varos says when Drakos dies
+ (-1578029, 'Intruders, your victory will be short-lived. I am Commander Varos Cloudstrider. My drakes control the skies and protest this conduit. I will see to it personally that the Oculus does not fall into your hands!',13648,1,0, 'varos SAY_SPAWN');
+
+-- -1 595 000 CULLING OF STRATHOLME
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Epoch
+ (-1595000, 'We\'ll see about that, young prince.',13409,1,0, 'epoch SAY_AGGRO'),
+ (-1595001, 'Tick tock, tick tock...',13410, 1,0,'epoch SAY_TIME_WARP_1'),
+ (-1595002, 'Not quick enough!',13411,1,0, 'epoch SAY_TIME_WARP_2'),
+ (-1595003, 'Let\'s get this over with. ',13412, 1,0,'epoch SAY_TIME_WARP_3'),
+ (-1595004, 'There is no future for you.',13413,1,0, 'epoch SAY_SLAY_1'),
+ (-1595005, 'This is the hour of our greatest triumph!',13414,1,0, 'epoch SAY_SLAY_2'),
+ (-1595006, 'You would destined to fail. ',13415,1,0, 'epoch SAY_SLAY_3'),
+ (-1595007, 'Prince Arthas Menethil, on this day, a powerful darkness has taken hold of your soul. The death you are destined to visit upon others will this day be your own.',13408,1,0, 'epoch SAY_INTRO'),
+ (-1595008, '*gurgles*',13416,1,0, 'epoch SAY_DEATH'),
+-- Mal'ganis
+ (-1595009, 'Yes...this is the beginning...I\'ve been waiting for you...young prince...I...am Mal\'Ganis..', 14410,1,0, 'mal_ganis SAY_INTRO_1'),
+ (-1595010, 'As you can see, your people...are now mine. I will now turn this city, household by household, until the flame of life has been snuffed out...forever...', 14411,1,0, 'mal_ganis SAY_INTRO_2'),
+ (-1595011, 'This will be a fine test...Prince Arthas...', 14413,1,0, 'mal_ganis SAY_AGGRO'),
+ (-1595012, 'All too easy...', 14416,1,0, 'mal_ganis SAY_KILL_1'),
+ (-1595013, 'The dark lord is displeased with your interference...', 14417, 1,0,'mal_ganis SAY_KILL_2'),
+ (-1595014, 'It is Prince Arthas I want...not you...', 14418,1,0, 'mal_ganis SAY_KILL_3'),
+ (-1595015, 'Anak\'Keri...', 14422, 1,0,'mal_ganis SAY_SLAY_1'),
+ (-1595016, 'My onslaught will wash over the Lich King\'s forces...', 14423,1,0, 'mal_ganis SAY_SLAY_2'),
+ (-1595017, 'Your death is in vain, tiny mortal...', 14424, 1,0,'mal_ganis SAY_SLAY_3'),
+ (-1595018, 'Your time has come to an end! ', 14425,1,0, 'mal_ganis SAY_SLAY_4'),
+ (-1595019, 'Time out...', 14414, 1,0,'mal_ganis SAY_SLEEP_1'),
+ (-1595020, 'You seem...tired... ', 14415,1,0, 'mal_ganis SAY_SLEEP_2'),
+ (-1595021, '*Struggling sounds* I spent too much time in that weak little shell... ', 14426,1,0, 'mal_ganis SAY_30HEALTH'),
+ (-1595022, '(Eredun) I AM MAL\'GANIS! I AM ETERNAL! ', 14427,1,0, 'mal_ganis SAY_15HEALTH'),
+ (-1595023, 'ENOUGH! I waste my time here...I must gather my strength on the home world...', 14428,1,0, 'mal_ganis SAY_ESCAPE_SPEECH_1'),
+ (-1595024, 'You\'ll never defeat the Lich King without my forces! I\'ll have my revenge...on him, AND you... ', 14429,1,0, 'mal_ganis SAY_ESCAPE_SPEECH_2'),
+ (-1595025, 'Your journey has just begun, young prince...Gather your forces, and meet me in the arctic land of Northrend...It is there we shall settle the score between us...It is there that your true destiny will unfold...', 14412,1,0, 'mal_ganis SAY_OUTRO'),
+-- Meathook
+ (-1595026, 'New toys!',13429,1,0, 'meathook SAY_AGGRO'),
+ (-1595027, 'Boring...',13430,1,0, 'meathook SAY_SLAY_1'),
+ (-1595028, 'Why you stop moving?',13431,1,0, 'meathook SAY_SLAY_2'),
+ (-1595029, 'Get up! Me not done! ',13432,1,0, 'meathook SAY_SLAY_3'),
+ (-1595030, 'Play time! ',13428,1,0, 'meathook SAY_SPAWN'),
+ (-1595031, 'This not fun...',13433,1,0, 'meathook SAY_DEATH'),
+-- Salramm the Fleshcrafter
+ (-1595032, 'Ah, the entertainment has arrived!',13472,1,0, 'salramm SAY_AGGRO'),
+ (-1595033, 'You are too late, champion of Lordaeron. The dead shall have their day. ',13471,1,0, 'salramm SAY_SPAWN'),
+ (-1595034, 'The fun is just beginning!',13473,1,0, 'salramm SAY_SLAY_1'),
+ (-1595035, 'Aah, quality materials!',13474, 1,0,'salramm SAY_SLAY_2'),
+ (-1595036, 'Don\'t worry, I\'ll make good use of you. ',137475, 1,0,'salramm SAY_SLAY_3'),
+ (-1595037, 'You only advance... the master\'s plan...',13483,1,0, 'salramm SAY_DEATH'),
+ (-1595038, 'BOOM! Hahahahah...',13478, 1,0,'salramm SAY_EXPLODE_GHOUL_1'),
+ (-1595039, 'Blood... destruction... EXHILARATING! ',13479,1,0, 'salramm SAY_EXPLODE_GHOUL_2'),
+ (-1595040, 'I want a sample...',13480,1,0, 'salramm SAY_STEAL_FLESH_1'),
+ (-1595041, 'Such strength... it must be mine!',13481,1,0, 'salramm SAY_STEAL_FLESH_2'),
+ (-1595042, 'Your flesh betrays you.',13482,1,0, 'salramm SAY_STEAL_FLESH_3'),
+ (-1595043, 'Say hello to some friends of mine.',13476,1,0, 'salramm SAY_SUMMON_GHOULS_1'),
+ (-1595044, 'Come, citizen of Stratholme! Meet your saviors.',13477,1,0, 'salramm SAY_SUMMON_GHOULS_2');
+
+-- -1 599 000 HALLS OF STONE
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Krystallus
+ (-1599000, 'Crush....', 14176, 1,0,'krystallus SAY_AGGRO'),
+ (-1599001, 'Ha...ha...ha...ha...', 14177,1,0, 'krystallus SAY_KILL'),
+ (-1599002, 'Uuuuhhhhhhhhhh......', 14179,1,0, 'krystallus SAY_DEATH'),
+ (-1599003, 'Break.... you....', 14178,1,0, 'krystallus SAY_SHATTER'),
+-- Maiden of Grief
+ (-1599004, 'You shouldn\'t have come...now you will die!',13487,1,0, 'maiden_of_grief SAY_AGGRO'),
+ (-1599005, 'Why must it be this way?',13488,1,0, 'maiden_of_grief SAY_SLAY_1'),
+ (-1599006, 'You had it coming!',13489, 1,0,'maiden_of_grief SAY_SLAY_2'),
+ (-1599007, 'My burden grows heavier.',13490,1,0, 'maiden_of_grief SAY_SLAY_3'),
+ (-1599008, 'This is your own fault!',13491,1,0, 'maiden_of_grief SAY_SLAY_4'),
+ (-1599009, 'I hope you all rot! I never...wanted...this.',13493, 1,0,'maiden_of_grief SAY_DEATH'),
+ (-1599010, 'So much lost time... that you\'ll never get back!',13492,1,0, 'maiden_of_grief SAY_STUN'),
+-- Sjonnir
+ (-1599011, 'Soft, vulnerable shells. Brief, fragile lives. You can not escape the curse of flesh!', 14180,1,0, 'sjonnir SAY_AGGRO'),
+ (-1599012, '...', 14181,1,0, 'sjonnir SAY_SLAY_1'),
+ (-1599013, 'Flesh is no match for iron!', 14182, 1,0,'sjonnir SAY_SLAY_2'),
+ (-1599014, 'Armies of iron will smother the world!', 14183, 1,0,'sjonnir SAY_SLAY_3'),
+ (-1599015, 'Loken will not rest, until the forge is retaken. You changed nothing!', 14184,1,0, 'sjonnir SAY_DEATH');
+
+-- -1 600 000 DRAK'THARON KEEP
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Novos the Summoner
+ (-1600000, 'The chill you feel is the herald of your doom.', 13173, 1,0, 'novos SAY_AGGRO'),
+ (-1600001, 'Such is the faith of all who oppose the Lich King!', 13175, 1,0, 'novos SAY_KILL'),
+ (-1600002, 'Your efforts... are in vain.', 13174, 1,0, 'novos SAY_DEATH'),
+ (-1600003, 'Surely you can see the futility of it all!', 13177, 1,0, 'novos SAY_REBUBLE_1'),
+ (-1600004, 'Just give up and die already!', 13178, 1,0, 'novos SAY_REBUBLE_2'),
+ (-1600005, 'Bolster my defenses! Hurry, curse you!', 13176, 1,0, 'novos SAY_NECRO_ADD'),
+-- Trollgore
+ (-1600006, 'Mogas moblath moghuld!', 13181, 1,0, 'trollgore SAY_AGGRO'),
+ (-1600007, '... I will eat you!', 13185, 1,0, 'trollgore SAY_KILL'),
+ (-1600008, '... .. so hungry, .. ... must\'t feed.', 13182, 1,0, 'trollgore SAY_CONSUME'),
+ (-1600009, '*laugh* Corpse go boom!', 13184, 1,0, 'trollgore SAY_EXPLODE'),
+ (-1600010, '...', 13183, 1,0, 'trollgore SAY_DEATH'),
+-- The Prophet Tharon'ja
+ (-1600011, 'Tharon\'ja sees all! The work of mortals shall not end the eternal dynasty!', 13862, 1, 0, 'tharon_ja SAY_AGGRO'),
+ (-1600012, 'As Tharon\'ja predicted.', 13863, 1, 0, 'tharon_ja SAY_KILL_1'),
+ (-1600013, 'As it was written.', 13863, 1, 0, 'tharon_ja SAY_KILL_2'),
+ (-1600014, 'Your flesh serves Tharon\'ja now!', 13865, 1, 0, 'tharon_ja SAY_FLESH_1'),
+ (-1600015, 'Tharon\'ja has a use for your mortal shell!', 13866, 1, 0, 'tharon_ja SAY_FLESH_2'),
+ (-1600016, 'No! A taste... all too brief!', 13868, 1, 0, 'tharon_ja SAY_SKELETON_1'),
+ (-1600017, 'Tharon\'ja will have more!', 13868, 1, 0, 'tharon_ja SAY_SKELETON_2'),
+ (-1600018, 'Im... impossible! Tharon\'ja is eternal! Tharon\'ja... is...', 13869, 1, 0, 'tharon_ja SAY_DEATH');
+
+-- -1 601 000 AZJOL-NERUB
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Anub'arak
+ (-1601000, 'Eternal agony awaits you!', 14054,1,0, 'anub_arak SAY_AGGRO'),
+ (-1601001, 'You shall experience my torment, first-hand!', 14055,1,0, 'anub_arak SAY_SLAY_1'),
+ (-1601002, 'You have made your choice.', 14056,1,0, 'anub_arak SAY_SLAY_2'),
+ (-1601003, 'Soon, the Master\'s voice will call to you.', 14057,1,0, 'anub_arak SAY_SLAY_3'),
+ (-1601004, 'Ahhh... RAAAAAGH! Never thought... I would be free of him...', 14069,1,0, 'anub_arak SAY_DEATH'),
+ (-1601005, 'Your armor is useless against my locusts!', 14060, 1,0,'anub_arak SAY_LOCUST_1'),
+ (-1601006, '?!!??!!!', 14067,1,0, 'anub_arak SAY_LOCUST_2'),
+ (-1601007, 'The pestilence upon you!', 14068,1,0, 'anub_arak SAY_LOCUST_3'),
+ (-1601008, '!!!???!!!', 14058,1,0, 'anub_arak SAY_SUBMERGE_1'),
+ (-1601009, 'Come forth, my brethren. Feast on their flesh!', 14059,1,0, 'anub_arak SAY_SUBMERGE_2'),
+ (-1601010, 'I was king of this empire once, long ago. In life I stood as champion. In death I returned as conqueror. Now I protect the kingdom once more. Ironic, yes?', 14053, 1,0,'anub_arak SAY_INTRO'),
+-- Krik'thir
+ (-1601011, 'This kingdom belongs to the Scourge! Only the dead may enter.', 14075,1,0, 'krik_thir SAY_AGGRO'),
+ (-1601012, 'Hash\'tak hi\'tak.', 14076,1,0, 'krik_thir SAY_SLAY_1'),
+ (-1601013, 'You were foolish to come.', 14077, 1,0,'krik_thir SAY_SLAY_2'),
+ (-1601014, 'As Anub\'Arak commands!', 14078,1,0, 'krik_thir SAY_SLAY_3'),
+ (-1601015, 'I should be grateful. But I long ago lost the capacity.', 14087,1,0, 'krik_thir SAY_DEATH'),
+ (-1601016, 'They hunger.', 14085,1,0, 'krik_thir SAY_SWARM_1'),
+ (-1601017, 'Dinner time, my pets.', 14086,1,0, 'krik_thir SAY_SWARM_2'),
+ (-1601018, 'We are besieged. Strike out and bring back their corpses!', 14079,1,0, 'krik_thir SAY_SEND_GROUP_1'),
+ (-1601019, 'We must hold the gate. Attack! Tear them limb from limb!', 14080,1,0, 'krik_thir SAY_SEND_GROUP_2'),
+ (-1601020, 'The gate must be protected at all costs. Rip them to shreds!', 14081,1,0, 'krik_thir SAY_SEND_GROUP_3'),
+ (-1601021, 'Keep an eye on the tunnel. We must not let anyone through!', 14082,1,0, 'krik_thir SAY_PREFIGHT_1'),
+ (-1601022, 'I hear footsteps. Be on your guard.', 14083,1,0, 'krik_thir SAY_PREFIGHT_2'),
+ (-1601023, 'I sense the living. Be ready.', 14084,1,0, 'krik_thir SAY_PREFIGHT_3');
+
+-- -1 602 000 HALLS OF LIGHTNING
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- General Bjarngrim
+ (-1602000, 'I am the greatest of my father\'s sons! Your end has come!', 14149,1,0,'bjarngrim SAY_AGGRO'),
+ (-1602001, 'So ends your curse!', 14153,1,0, 'bjarngrim SAY_SLAY_1'),
+ (-1602002, 'Flesh... is... weak!', 14154,1,0, 'bjarngrim SAY_SLAY_2'),
+ (-1602003, '...', 14155,1,0, 'bjarngrim SAY_SLAY_3'),
+ (-1602004, 'How can it be...? Flesh is not... stronger!', 14156,1,0, 'bjarngrim SAY_DEATH'),
+ (-1602005, 'Defend yourself, for all the good it will do!', 14151,1,0, 'bjarngrim SAY_BATTLE_STANCE'),
+ (-1602006, 'GRAAAAAH! Behold the fury of iron and steel!', 14152,1,0, 'bjarngrim SAY_BERSEKER_STANCE'),
+ (-1602007, 'Give me your worst!', 14150,1,0, 'bjarngrim SAY_DEFENSIVE_STANCE'),
+-- Ionar
+ (-1602008, 'You wish to confront the master? You must weather the storm!', 14453,1,0, 'ionar SAY_AGGRO'),
+ (-1602009, 'Shocking ... I know!', 14456,1,0, 'ionar SAY_SLAY_1'),
+ (-1602010, 'You atempt the unpossible.', 14457,1,0, 'ionar SAY_SLAY_2'),
+ (-1602011, 'Your spark of light is ... extinguish.', 14458,1,0, 'ionar SAY_SLAY_3'),
+ (-1602012, 'Master... you have guests.', 14459,1,0, 'ionar SAY_DEATH'),
+ (-1602013, 'The slightest spark shall be your undoing.', 14454,1,0, 'ionar SAY_SPLIT_1'),
+ (-1602014, 'No one is safe!', 14455,1,0, 'ionar SAY_SPLIT_2'),
+-- Loken
+ (-1602015, 'What hope is there for you? None!', 14162,1,0, 'loken SAY_AGGRO0'),
+ (-1602016, '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 beyond a constant. Your presence here confirms this.', 14160,1,0, 'loken SAY_INTRO_1'),
+ (-1602017, '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!', 14162,1,0, 'loken SAY_INTRO_2'),
+ (-1602018, 'Only mortal...', 14166,1,0, 'loken SAY_SLAY_1'),
+ (-1602019, 'I... am... FOREVER!', 14167,1,0, 'loken SAY_SLAY_2'),
+ (-1602020, 'What little time you had, you wasted!', 14168,1,0, 'loken SAY_SLAY_3'),
+ (-1602021, 'My death... heralds the end of this world.', 14172,1,0, 'loken SAY_DEATH'),
+ (-1602022, 'You cannot hide from fate!', 14163,1,0, 'lokenSAY_NOVA_1'),
+ (-1602023, 'Come closer. I will make it quick.', 14164,1,0, 'loken SAY_NOVA_2'),
+ (-1602024, 'Your flesh cannot hold out for long.', 14165,1,0, 'loken SAY_NOVA_3'),
+ (-1602025, 'You stare blindly into the abyss!', 14169,1,0, 'loken SAY_75HEALTH'),
+ (-1602026, 'Your ignorance is profound. Can you not see where this path leads?', 14170,1,0, 'loken SAY_50HEALTH'),
+ (-1602027, 'You cross the precipice of oblivion!', 14171,1,0, 'loken SAY_25HEALTH'),
+-- Volkhan
+ (-1602028, 'It is you who have destroyed my children? You... shall... pay!',13960,1,0, 'volkhan SAY_AGGRO'),
+ (-1602029, 'The armies of iron will conquer all!',13965, 1,0,'volkhan SAY_SLAY_1'),
+ (-1602030, 'Ha, pathetic!',13966,1,0, 'volkhan SAY_SLAY_2'),
+ (-1602031, 'You have cost me too much work!',13967,1,0, 'volkhan SAY_SLAY_3'),
+ (-1602032, 'The master was right... to be concerned.',13968, 1,0,'volkhan SAY_DEATH'),
+ (-1602033, 'I will crush you beneath my boots!',13963, 1,0,'volkhan SAY_STOMP_1'),
+ (-1602034, 'All my work... undone!',13964, 1,0,'volkhan SAY_STOMP_2'),
+ (-1602035, 'Life from the lifelessness... death for you.',13961,1,0, 'volkhan SAY_FORGE_1'),
+ (-1602036, 'Nothing is wasted in the process. You will see....',13962, 1,0,'volkhan SAY_FORGE_2');
+
+-- -1 603 000 ULDUAR (RAID NIU)
+
+-- -1 604 000 GUNDRAK
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Gal'darah
+ (-1604000, 'I\'m gonna spil your guts, man!', 14430, 1,0,'gal_darah SAY_AGGRO'),
+ (-1604001, 'What a rush.', 14436,1,0, 'gal_darah SAY_SLAY_1'),
+ (-1604002, 'Who needs gods, when we ARE gods!', 14437, 1,0,'gal_darah SAY_SLAY_2'),
+ (-1604003, 'I told ya so ...', 14438,1,0, 'gal_darah SAY_SLAY_3'),
+ (-1604004, 'Even the mighty ... can .. fall.', 14439,1,0, 'gal_darah SAY_DEATH'),
+ (-1604005, 'God damn! Impale them!', 14433, 1,0,'gal_darah SAY_SUMMON_RHINO_1'),
+ (-1604006, 'Kill them ALL!', 14434, 1,0,'gal_darah SAY_SUMMON_RHINO_2'),
+ (-1604007, 'Say hello to my BIG friend.', 14435,1,0, 'gal_darah SAY_SUMMON_RHINO_3'),
+ (-1604008, 'Ain\'t gonna bee nothig left after this.', 14431,1,0, 'gal_darah SAY_TRANSFORM_1'),
+ (-1604009, 'You wanna see POWER? I\'m gonna show you POWER!', 14432,1,0, 'gal_darah SAY_TRANSFORM_2'),
+-- Moorabi
+ (-1604010, 'We fought back the Scourge. What chance you be thinking you got?', 14721,1,0, 'moorabi SAY_AGGRO'),
+ (-1604011, 'I crush you, cockroaches!', 14725,1,0, 'moorabi SAY_SLAY_1'),
+ (-1604012, 'Who gonna stop me, you?', 14726,1,0, 'moorabi SAY_SLAY_2'),
+ (-1604013, 'Not so tough now.', 14727,1,0, 'moorabi SAY_SLAY_3'),
+ (-1604014, 'If our gods can die, then so can we.', 14728,1,0, 'moorabi SAY_DEATH'),
+ (-1604015, 'Get ready for something much bigger!', 14722,1,0, 'moorabi SAY_TRANSFORM'),
+ (-1604016, 'The ground will swallow you up!', 14723,1,0, 'moorabi SAY_QUAKE'),
+-- Slad'ran
+ (-1604017, 'Drak\'thari gonna kill anybody who trespass on this lands.', 14443,1,0, 'slad_ran SAY_AGGRO'),
+ (-1604018, 'Can not breath then, good ...', 14446,1,0, 'slad_ran SAY_SLAY_1'),
+ (-1604019, 'You\'re scared now.', 14447,1,0, 'slad_ran SAY_SLAY_2'),
+ (-1604020, 'I eat you next man!', 14448,1,0, 'slad_ran SAY_SLAY_3'),
+ (-1604021, 'I ... see now. Scourge was not tha greatest enemy.', 14449,1,0, 'slad_ran SAY_DEATH'),
+ (-1604022, 'Minions of this ... heed my call.', 14444,1,0, 'slad_ran SAY_SUMMON_SNAKES'),
+ (-1604023, 'A thousand fangs gonna rim yar flesh.', 14445,1,0, 'slad_ran SAY_SUMMON_CONSTRICTORS');
+
+-- -1 608 000 VIOLET HOLD
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Cyanigosa
+ (-1608000, 'We finish this now, champions of Kirin Tor!', 13947, 1, 0, 'cyanigosa SAY_AGGRO'),
+ (-1608001, 'I will end the Kirin Tor!', 13952, 1, 0, 'cyanigosa SAY_SLAY_1'),
+ (-1608002, 'Dalaran will fall!', 13953, 1, 0, 'cyanigosa SAY_SLAY_2'),
+ (-1608003, 'So ends your defiance of the Spell-Weaver!', 13954, 1, 0, 'cyanigosa SAY_SLAY_3'),
+ (-1608004, 'Perhaps... we have... underestimated... you.', 13955, 1, 0, 'cyanigosa SAY_DEATH'),
+ (-1608005, 'A valiant defense, but this city must be razed. I will fulfill Malygos\'s wishes myself!', 13946, 1, 0, 'cyanigosa SAY_SPAWN'),
+ (-1608006, 'Am I interrupting?', 13951, 1, 0, 'cyanigosa SAY_DISRUPTION'),
+ (-1608007, 'Shiver and die!', 13948, 1, 0, 'cyanigosa SAY_BREATH_ATTACK'),
+ (-1608008, 'The world has forgotten what true magic is! Let this be a reminder!', 13949, 1, 0, 'cyanigosa SAY_SPECIAL_ATTACK_1'),
+ (-1608009, 'Who among you can withstand my power?', 13950, 1, 0, 'cyanigosa SAY_SPECIAL_ATTACK_2'),
+-- Erekem
+ (-1608010, 'Notcawwget in way ofrrak-rrakflee!', 14219, 1, 0, 'erekem SAY_AGGRO'),
+ (-1608011, '...', 14222, 1, 0, 'erekem SAY_SLAY_1'),
+ (-1608012, 'Precious life ... wasted.', 14223, 1, 0, 'erekem SAY_SLAY_2'),
+ (-1608013, 'Only strong ... survive.', 14224, 1, 0, 'erekem SAY_SLAY_3'),
+ (-1608014, 'Nokaw, kawflee...', 14225, 1, 0, 'erekem SAY_DEATH'),
+ (-1608015, 'Free tommfly onw. Ra-aak... Not find usekh-ekh! Escape!', 14218, 1, 0, 'erekem SAY_SPAWN'),
+ (-1608016, 'My-raaakfavorite! Awk awk awk! Raa-kaa!', 14220, 1, 0, 'erekem SAY_ADD_KILLED'),
+ (-1608017, 'Nasty little...A-ak, kaw! Kill! Yes, kill you!', 14221, 1, 0, 'erekem SAY_BOTH_ADDS_KILLED'),
+-- Ichoron
+ (-1608018, 'Stand aside, mortals!', 14230, 1, 0, 'ichoron SAY_AGGRO'),
+ (-1608019, 'I am a force of nature!', 14234, 1, 0, 'ichoron SAY_SLAY_1'),
+ (-1608020, 'I shall pass!', 14235, 1, 0, 'ichoron SAY_SLAY_2'),
+ (-1608021, 'You can not stop the tide!', 14236, 1, 0, 'ichoron SAY_SLAY_3'),
+ (-1608022, 'I... recede.', 14237, 1, 0, 'ichoron SAY_DEATH'),
+ (-1608023, 'I... am fury... unrestrained!', 14239, 1, 0, 'ichoron SAY_SPAWN'),
+ (-1608024, 'I shall consume, decimate, devastate, and destroy! Yield now to the wrath of the pounding sea!', 14231, 1, 0, 'ichoron SAY_ENRAGE'),
+ (-1608025, 'I will not be contained! Ngyah!!', 14233, 1, 0, 'ichoron SAY_SHATTER'),
+ (-1608026, 'Water can hold any form, take any shape... overcome any obstacle.', 14232, 1, 0, 'ichoron SAY_BUBBLE'),
+-- Xevozz
+ (-1608027, 'It seems my freedom must be bought with blood...', 14499, 1, 0, 'xevozz SAY_AGGRO'),
+ (-1608028, 'Nothing personal.', 14504, 1, 0, 'xevozz SAY_SLAY_1'),
+ (-1608029, 'Business concluded.', 14505, 1, 0, 'xevozz SAY_SLAY_2'),
+ (-1608030, 'Profit!', 14506, 1, 0, 'xevozz SAY_SLAY_3'),
+ (-1608031, 'This is an... unrecoverable... loss.', 14507, 1, 0, 'xevozz SAY_DEATH'),
+ (-1608032, 'Back in business! Now to execute an exit strategy.', 14498, 1, 0, 'xevozz SAY_SPAWNED'),
+ (-1608033, 'It would seem that a renegotiation is in order.', 14503, 1, 0, 'xevozz SAY_CHARGED'),
+ (-1608034, 'The air teems with latent energy... quite the harvest!', 14501, 1, 0, 'xevozz SAY_REPEAT_SUMMON_1'),
+ (-1608035, 'Plentiful, exploitable resources... primed for acquisition!', 14502, 1, 0, 'xevozz SAY_REPEAT_SUMMON_2'),
+ (-1608036, 'Intriguing... a high quantity of arcane energy is near. Time for some prospecting...', 14500, 1, 0, 'xevozz SAY_SUMMON_ENERGY'),
+-- Zuramat
+ (-1608037, 'Eradicate.', 13996, 1, 0, 'zuramat SAY_AGGRO'),
+ (-1608038, 'More... energy.', 13999, 1, 0, 'zuramat SAY_SLAY_1'),
+ (-1608039, 'Relinquish.', 14000, 1, 0, 'zuramat SAY_SLAY_2'),
+ (-1608040, 'Fall... to shadow.', 14001, 1, 0, 'zuramat SAY_SLAY_3'),
+ (-1608041, 'Disperse.', 14002, 1, 0, 'zuramat SAY_DEATH'),
+ (-1608042, 'I am... renewed.', 13995, 1, 0, 'zuramat SAY_SPAWN'),
+ (-1608043, 'Know... my... pain.', 13997, 1, 0, 'zuramat SAY_SHIELD'),
+ (-1608044, 'Gaze... into the void.', 13998, 1, 0, 'zuramat SAY_WHISPER');
+
+-- -1 615 000 OBSIDIAN SANCTUM
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Shadron
+ (-1615000, 'I fear nothing! Least of all you!', 14111,1,0, 'shadron SAY_SHADRON_AGGRO'),
+ (-1615001, 'You are insignificant!', 14112,1,0, 'shadron SAY_SHADRON_SLAY_1'),
+ (-1615002, 'Such mediocre resistance!', 14113,1,0, 'shadron SAY_SHADRON_SLAY_2'),
+ (-1615003, 'We...are superior! How could this...be...', 14118, 1,0,'shadron SAY_SHADRON_DEATH'),
+ (-1615004, 'You are easily bested! ', 14114,1,0, 'shadron SAY_SHADRON_BREATH'),
+ (-1615005, 'I will take pity on you Sartharion, just this once.', 14117, 1,0,'shadron SAY_SHADRON_RESPOND'),
+ (-1615006, 'Father tought me well!', 14115,1,0, 'shadron SAY_SHADRON_SPECIAL_1'),
+ (-1615007, 'On your knees!', 14116,1,0, 'shadron SAY_SHADRON_SPECIAL_2'),
+-- Tenebron
+ (-1615008, 'You have no place here. Your place is among the departed.', 14122,1,0, 'tenebron SAY_TENEBRON_AGGRO'),
+ (-1615009, 'No contest.', 14123,1,0, 'tenebron SAY_TENEBRON_SLAY_1'),
+ (-1615010, 'Typical... Just as I was having fun.', 14124,1,0, 'tenebron SAY_TENEBRON_SLAY_2'),
+ (-1615011, 'I should not... have held back...', 14129,1,0, 'tenebron SAY_TENEBRON_DEATH'),
+ (-1615012, 'To darkness I condemn you...', 14125,1,0, 'tenebron SAY_TENEBRON_BREATH'),
+ (-1615013, 'It is amusing to watch you struggle. Very well, witness how it is done.', 14128, 1,0,'tenebron SAY_TENEBRON_RESPOND'),
+ (-1615014, 'Arrogant little creatures! To challenge powers you do not yet understand...', 14126,1,0, 'tenebron SAY_TENEBRON_SPECIAL_1'),
+ (-1615015, 'I am no mere dragon! You will find I am much, much, more...', 14127, 1,0,'tenebron SAY_TENEBRON_SPECIAL_2'),
+-- Sartharion
+ (-1615016, 'It is my charge to watch over these eggs. I will see you burn before any harm comes to them!', 14093,1,0, 'sartharion SAY_SARTHARION_AGGRO'),
+ (-1615017, 'This pathetic siege ends NOW!', 14103,1,0, 'sartharion SAY_SARTHARION_BERSERK'),
+ (-1615018, 'Burn, you miserable wretches!', 14098, 1,0,'sartharion SAY_SARTHARION_BREATH'),
+ (-1615019, 'Shadron! Come to me, all is at risk!', 14105,1,0, 'sartharion SARTHARION_CALL_SHADRON'),
+ (-1615020, 'Tenebron! The eggs are yours to protect as well!', 14106,1,0, 'sartharion SAY_SARTHARION_CALL_TENEBRON'),
+ (-1615021, 'Vesperon! The clutch is in danger! Assist me!', 14104,1,0, 'sartharion SAY_SARTHARION_CALL_VESPERON'),
+ (-1615022, 'Such is the price... of failure...', 14107,1,0, 'sartharion SAY_SARTHARION_DEATH'),
+ (-1615023, 'Such flammable little insects....', 14099,1,0, 'sartharion SAY_SARTHARION_SPECIAL_1'),
+ (-1615024, 'Your charred bones will litter the floor!', 14100,1,0, 'sartharion SAY_SARTHARION_SPECIAL_2'),
+ (-1615025, 'How much heat can you take?', 14101,1,0, 'sartharion SAY_SARTHARION_SPECIAL_3'),
+ (-1615026, 'All will be reduced to ash!', 14102,1,0, 'sartharion SAY_SARTHARION_SPECIAL_4'),
+ (-1615027, 'You will make a fine meal for the hatchlings.', 14094,1,0, 'sartharion SAY_SARTHARION_SLAY_1'),
+ (-1615028, 'You are the grave disadvantage.', 14096,1,0, 'sartharion SAY_SARTHARION_SLAY_2'),
+ (-1615029, 'This is why we call you lesser beeings.', 14097,1,0, 'sartharion SAY_SARTHARION_SLAY_3'),
+-- Vesperon
+ (-1615030, 'You pose no threat, lesser beings...give me your worst!', 14133, 1,0,'vesperon SAY_VESPERON_AGGRO'),
+ (-1615031, 'The least you could do is put up a fight...', 14134,1,0, 'vesperon SAY_VESPERON_SLAY_1'),
+ (-1615032, 'Was that the best you can do?', 14135,1,0, 'vesperon SAY_VESPERON_SLAY_2'),
+ (-1615033, 'I still have some...fight..in...me...', 14140, 1,0,'vesperon SAY_VESPERON_DEATH'),
+ (-1615034, 'I will pick my teeth with your bones!', 14136,1,0, 'vesperon SAY_VESPERON_BREATH'),
+ (-1615035, 'Father was right about you, Sartharion...You are a weakling!', 14139,1,0, 'vesperon SAY_VESPERON_RESPOND'),
+ (-1615036, 'Aren\'t you tricky...I have a few tricks of my own...', 14137,1,0, 'vesperon SAY_VESPERON_SPECIAL_1'),
+ (-1615037, 'Unlike, I have many talents.', 14138,1,0, 'vesperon SAY_VESPERON_SPECIAL_2');
+
+-- -1 616 000 EYE OF ETERNITY
+INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Malygos
+ (-1616000, 'I will teach you IGNORANT children just how little you know of magic...', 14524,1,0, 'malygos SAY_ANTI_MAGIC_SHELL'),
+ (-1616001, 'YOU WILL NOT SUCCEED WHILE I DRAW BREATH!', 14518,1,0, 'malygos SAY_BREATH_ATTACK'),
+ (-1616002, 'I AM UNSTOPPABLE!', 14533,1,0, 'malygos SAY_HIGH_DAMAGE_MODE'),
+ (-1616003, 'Watch helplessly as your hopes are swept away...', 14525, 1,0,'malygos SAY_MAGIC_BLAST'),
+ (-1616004, 'Still standing? Not for long...', 14537, 1,0,'malygos SAY_GENERIC_SPELL_1'),
+ (-1616005, 'Your cause is lost!', 14538, 1,0,'malygos SAY_GENERIC_SPELL_2'),
+ (-1616006, 'Your fragile mind will be shattered! ', 14539,1,0, 'malygos SAY_GENERIC_SPELL_3'),
+ (-1616007, 'UNTHINKABLE! The mortals will destroy...e-everything...my sister...what have you-', 14540,1,0, 'malygos SAY_DEATH'),
+ (-1616008, 'Lesser beings, intruding here! A shame that your excess courage does not compensate for your stupidity!', 14512,1,0, 'malygos SAY_PREFIGHT_1'),
+ (-1616009, 'None but the blue dragonflight are welcome here! Perhaps this is the work of Alexstrasza? Well then, she has sent you to your deaths.', 14513,1,0, 'malygos SAY_PREFIGHT_2'),
+ (-1616010, 'What could you hope to accomplish, to storm brassily into my domain? To employ MAGIC? Against ME? *Laughs*', 14514,1,0, 'malygos SAY_PREFIGHT_3'),
+ (-1616011, 'I am without limits here...the rules of your cherished reality do not apply...In this realm, I am in control...', 14515, 1,0,'malygos SAY_PREFIGHT_4'),
+ (-1616012, 'I give you one chance. Pledge loyalty to me, and perhaps I won\'t slaughter you for your insolence!', 14516,1,0, 'malygos SAY_PREFIGHT_5'),
+ (-1616013, 'My patience has reached its limit, I WILL BE RID OF YOU!', 14517,1,0, 'malygos SAY_PHASE1_AGGRO'),
+ (-1616014, 'I had hoped to end your lives quickly, but you have proven more...resilient then I had anticipated. None the less, your efforts are in vain, it is you reckless, careless mortals who are to blame for this war! I do what I must...And if it means your...extinction...THEN SO BE IT!', 14522,1,0, 'malygos SAY_PHASE1_END'),
+ (-1616015, 'Your stupidity has finally caught up to you!', 14519,1,0, 'malygos SAY_PHASE1_SLAY_1'),
+ (-1616016, 'More artifacts to confiscate...', 14520, 1,0,'malygos SAY_PHASE1_SLAY_2'),
+ (-1616017, '*Laughs* How very...naive.. ', 14521,1,0, 'malygos SAY_PHASE1_SLAY_3'),
+ (-1616018, 'Few have experienced the pain I will now inflict on you!', 14523, 1,0,'malygos SAY_PHASE2_AGGRO'),
+ (-1616019, 'ENOUGH! If you intend to reclaim Azeroth\'s magic, then you shall have it... ', 14529,1,0, 'malygos SAY_PHASE2_END'),
+ (-1616020, 'Your energy will be put to good use!', 14526,1,0, 'malygos SAY_PHASE2_SLAY_1'),
+ (-1616021, 'I AM THE SPELL WEAVER! My power is INFINITE!', 14527, 1,0,'malygos SAY_PHASE2_SLAY_2'),
+ (-1616022, 'Your spirit will linger here forever!', 14528, 1,0,'malygos SAY_PHASE2_SLAY_3'),
+ (-1616023, 'Now your benefactors make their appearance...But they are too late. The powers contained here are powerful enough to destroy the world ten times over! What do you think they will do to you?', 14530,1,0, 'malygos SAY_PHASE3_INTRO'),
+ (-1616024, 'SUBMIT!', 14531,1,0, 'malygos SAY_PHASE3_AGGRO'),
+ (-1616025, 'Alexstrasza! Another of your brood falls!', 14534,1,0, 'malygos SAY_PHASE3_SLAY_1'),
+ (-1616026, 'Little more then gnats!', 14535, 1,0,'malygos SAY_PHASE3_SLAY_2'),
+ (-1616027, 'Your red allies will share your fate...', 14536, 1,0,'slad_ran SAY_PHASE3_SLAY_3'),
+ (-1616028, 'The powers at work here exceed anything you could possibly imagine!', 14532, 1,0,'malygos SAY_PHASE3_BIG_ATTACK');
+
+-- -1 619 000 AHN'KAHET
+ INSERT INTO `script_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`) VALUES
+-- Jedoga Shadowseeker
+ (-1619000, 'These are sacred halls, your intrusion will be met with death', 14343, 1, 0, 'jedoga SAY_AGGRO'),
+ (-1619001, 'Who among you is devoted', 14344, 1, 0, 'jedoga SAY_C_SACRIFICE_1'),
+ (-1619002, 'You there! Step foward', 14345, 1, 0, 'jedoga SAY_C_SACRIFICE_2'),
+ (-1619003, 'Yogg-Saron, grant me your power!', 14346, 1, 0, 'jedoga SAY_SACRIFICE_1'),
+ (-1619004, 'Master, a gift for you!', 14347, 1, 0, 'jedoga SAY_SACRIFICE_2'),
+ (-1619005, 'Glory to the Yogg-Saron!', 14348, 1, 0, 'jedoga SAY_SLAY_1'),
+ (-1619006, 'You are unworthy', 14349, 1, 0, 'jedoga SAY_SLAY_2'),
+ (-1619007, 'Get up! You haven\'t suffered enough', 14350, 1, 0, 'jedoga SAY_SLAY_3'),
+ (-1619008, 'Do not expect your sacrilege... to go unpunished.', 14351, 1, 0, 'jedoga SAY_DEATH'),
+ (-1619009, 'The elements themselves will rise up against the civilized world! Only the faithful will be spared!', 14352, 1, 0, 'jedoga SAY_PREACHING_1'),
+ (-1619010, 'Immortality can be yours. But only if you pledge yourself fully to Yogg-Saron!', 14353, 1, 0, 'jedoga SAY_PREACHING_2'),
+ (-1619011, 'Here on the very borders of his domain. You will expirience powers you would never have imagined!', 14354, 1, 0, 'jedoga SAY_PREACHING_3'),
+ (-1619012, 'You have traveled long and risked much to be here. Your devotion shall be rewarded.', 14355, 1, 0, 'jedoga SAY_PREACHING_4'),
+ (-1619013, 'The faithful shall be exalted! But there is more work to be done. We will press on until all of Azeroth lies beneath his shadow!', 14356, 1, 0, 'jedoga SAY_PREACHING_5'),
+-- Elder Nadox
+ (-1619014, 'The secrets of the deep shall remain hidden.', 14033, 1, 0, 'nadox SAY_AGGRO'),
+ (-1619015, 'Sleep now, in the cold dark.', 14036, 1, 0, 'nadox SAY_SLAY_1'),
+ (-1619016, 'For the Lich King!', 14307, 1, 0, 'nadox SAY_SLAY_2'),
+ (-1619017, 'Perhaps we will be allies soon.', 14038, 1, 0, 'nadox SAY_SLAY_3'),
+ (-1619018, 'Master, is my service complete?', 14039, 1, 0, 'nadox SAY_DEATH'),
+ (-1619019, 'The young must not grow hungry.', 14034, 1, 0, 'nadox SAY_EGG_SAC_1'),
+ (-1619020, 'Shad\'ak kerish\'akak', 14035, 1, 0, 'nadox SAY_EGG_SAC_2'),
+-- Prince Taldaram
+ (-1619021, 'I will feast on your remains.', 14360, 1, 0, 'taldaram SAY_AGGRO'),
+ (-1619022, '(Elfish)', 14365, 1, 0, 'taldaram SAY_SLAY_1'),
+ (-1619023, 'I will drink no blood before it is time.', 14366, 1, 0, 'taldaram SAY_SLAY_2'),
+ (-1619024, 'One final embrace.', 14367, 1, 0, 'taldaram SAY_SLAY_3'),
+ (-1619025, 'Still ... I hunger, still ... I thirst...', 14368, 1, 0, 'taldaram SAY_DEATH'),
+ (-1619026, 'Your heartbeat is music to my ears.', 14361, 1, 0, 'taldaram SAY_VANISH_1'),
+ (-1619027, 'I am nowhere. I am everywhere. I am the watcher, unseen.', 14362, 1, 0, 'taldaram SAY_VANISH_2'),
+ (-1619028, 'So appetizing.', 14363, 1, 0, 'taldaram SAY_FEED_1'),
+ (-1619029, 'Fresh, warm blood. It has been too long.', 14364, 1, 0, 'taldaram SAY_FEED_2'),
+-- Herald Volazj
+ (-1619030, '??? ??? ???', 14043, 1, 0, 'volazj SAY_AGGRO'),
+ (-1619031, 'Ywaq ma phgwa\\\'cul hnakf. - They are the whisper on the shivering wind.', 14045, 1, 0, 'volazj SAY_AGGRO'),
+ (-1619032, '?!? !?! ?!?', 14046, 1, 0, 'volazj SAY_AGGRO'),
+ (-1619033, '!?! !?! !?!', 14047, 1, 0, 'volazj SAY_AGGRO'),
+ (-1619034, 'Iilth vwah, uhn\'agth fhssh za. - Where one falls, many shall take its place.', 14048, 1, 0, 'volazj SAY_AGGRO'),
+ (-1619035, '... ...! ...?', 14049, 1, 0, 'volazj SAY_AGGRO'),
+ (-1619036, 'Phasing', 14044, 1, 0, 'volazj SAY_AGGRO');
diff --git a/src/bindings/scripts/sql/WotLK/wotlk_bosses.sql b/src/bindings/scripts/sql/WotLK/wotlk_bosses.sql
new file mode 100644
index 00000000000..f8d10a64cf3
--- /dev/null
+++ b/src/bindings/scripts/sql/WotLK/wotlk_bosses.sql
@@ -0,0 +1,124 @@
+/* */
+/* AZJOL-NERUB */
+/* */
+
+/* AHN'KAHET */
+UPDATE `instance_template` SET `script`='instance_ahn_kahet' WHERE `map`=4494;
+UPDATE `creature_template` SET `ScriptName`='boss_jedoga' WHERE `entry`='29310';
+UPDATE `creature_template` SET `ScriptName`='boss_nadox' WHERE `entry`='29309';
+UPDATE `creature_template` SET `ScriptName`='boss_taldaram' WHERE `entry`='29308';
+UPDATE `creature_template` SET `ScriptName`='boss_volazj' WHERE `entry`='29311';
+
+/* AZJOL-NERUB */
+UPDATE `instance_template` SET `script`='instance_azjol_nerub' WHERE `map`=3477;
+UPDATE `creature_template` SET `ScriptName`='boss_anub_arak' WHERE `entry`='29120';
+UPDATE `creature_template` SET `ScriptName`='boss_hardronox' WHERE `entry`='28921';
+UPDATE `creature_template` SET `ScriptName`='boss_krik_thir' WHERE `entry`='28684';
+
+/* THE CULLING OF STRATHOLME */
+UPDATE `instance_template` SET `script`='instance_culling_of_stratholme' WHERE `map`=4100;
+UPDATE `creature_template` SET `ScriptName`='boss_epoch' WHERE `entry`='26532';
+UPDATE `creature_template` SET `ScriptName`='boss_mal_ganis' WHERE `entry`='26533';
+UPDATE `creature_template` SET `ScriptName`='boss_meathook' WHERE `entry`='26529';
+UPDATE `creature_template` SET `ScriptName`='boss_salramm' WHERE `entry`='26530';
+
+/* DRAK'THARON KEEP */
+UPDATE `instance_template` SET `script`='instance_drak_tharon' WHERE `map`=4196;
+UPDATE `creature_template` SET `ScriptName`='boss_dred' WHERE `entry`='27483';
+UPDATE `creature_template` SET `ScriptName`='boss_novos' WHERE `entry`='26631';
+UPDATE `creature_template` SET `ScriptName`='boss_tharon_ja' WHERE `entry`='26632';
+UPDATE `creature_template` SET `ScriptName`='boss_trollgore' WHERE `entry`='26630';
+
+/* GUNDRAK */
+UPDATE `instance_template` SET `script`='instance_gundrak' WHERE `map` =4375;
+UPDATE `creature_template` SET `ScriptName`='boss_eck' WHERE `entry`='29932';
+UPDATE `creature_template` SET `ScriptName`='boss_drakkari_colossus' WHERE `entry`='29307';
+UPDATE `creature_template` SET `ScriptName`='boss_gal_darah' WHERE `entry`='29306';
+UPDATE `creature_template` SET `ScriptName`='boss_moorabi' WHERE `entry`='29305';
+UPDATE `creature_template` SET `ScriptName`='boss_slad_ran' WHERE `entry`='29304';
+
+/* */
+/* THE NEXUS */
+/* */
+
+/* EYE OF ETERNITY */
+UPDATE `instance_template` SET `script`='instance_eye_of_eternity' WHERE `map`=4500;
+UPDATE `creature_template` SET `ScriptName`='boss_malygos' WHERE `entry`='28859';
+
+/* NEXUS */
+UPDATE `instance_template` SET `script`='instance_nexus' WHERE `map`=4120;
+UPDATE `creature_template` SET `ScriptName`='boss_anomalus' WHERE `entry`='26763';
+UPDATE `creature_template` SET `ScriptName`='npc_chaotic_rift' WHERE `entry`='26918';
+UPDATE `creature_template` SET `ScriptName`='mob_crazed_mana_wraith' WHERE `entry`='26746';
+UPDATE `creature_template` SET `ScriptName`='boss_keristrasza' WHERE `entry`='26723';
+UPDATE `creature_template` SET `ScriptName`='boss_magus_telestra' WHERE `entry`='26731';
+UPDATE `creature_template` SET `ScriptName`='boss_ormorok' WHERE `entry`='26794';
+UPDATE `creature_template` SET `ScriptName`='boss_commander_stoutbeard' WHERE `entry`='26796';
+UPDATE `creature_template` SET `ScriptName`='boss_commander_kolurg' WHERE `entry`='26798';
+
+/* OCULUS */
+UPDATE `instance_template` SET `script`='instance_oculus' WHERE `map`=4228;
+UPDATE `creature_template` SET `ScriptName`='boss_drakos' WHERE `entry`='27654';
+UPDATE `creature_template` SET `ScriptName`='boss_eregos' WHERE `entry`='27656';
+UPDATE `creature_template` SET `ScriptName`='boss_urom' WHERE `entry`='27655';
+UPDATE `creature_template` SET `ScriptName`='boss_varos' WHERE `entry`='27447';
+
+/* OBSIDIAN SANCTUM */
+UPDATE `instance_template` SET `script`='instance_obsidian_sanctum' WHERE `map`=4493;
+UPDATE `creature_template` SET `ScriptName`='boss_sartharion' WHERE `entry`='28860';
+UPDATE `creature_template` SET `ScriptName`='mob_vesperon' WHERE `entry`='30449';
+UPDATE `creature_template` SET `ScriptName`='mob_shadron' WHERE `entry`='30451';
+UPDATE `creature_template` SET `ScriptName`='mob_tenebron' WHERE `entry`='30452';
+UPDATE `creature_template` SET `ScriptName`='mob_whelp' WHERE `entry`='30890';
+UPDATE `creature_template` SET `ScriptName`='mob_whelp' WHERE `entry`='31214';
+
+/* */
+/* ULDUAR */
+/* */
+
+/* HALLS OF LIGHTNING */
+UPDATE `instance_template` SET `script`='instance_halls_of_lightning' WHERE `map`=4272;
+UPDATE `creature_template` SET `ScriptName`='boss_bjarngrim' WHERE `entry`='28586';
+UPDATE `creature_template` SET `ScriptName`='boss_ionar' WHERE `entry`='28546';
+UPDATE `creature_template` SET `ScriptName`='spark_of_ionar' WHERE `entry`='28962';
+UPDATE `creature_template` SET `ScriptName`='boss_volkhan' WHERE `entry`='28587';
+UPDATE `creature_template` SET `ScriptName`='mob_molten_golem' WHERE `entry`='28695';
+UPDATE `creature_template` SET `ScriptName`='boss_loken' WHERE `entry`='28923';
+/* HALLS OF STONE */
+UPDATE `instance_template` SET `script`='instance_halls_of_stone' WHERE `map`=4264;
+UPDATE `creature_template` SET `ScriptName`='boss_krystallus' WHERE `entry`='27977';
+UPDATE `creature_template` SET `ScriptName`='boss_maiden_of_grief' WHERE `entry`='27975';
+UPDATE `creature_template` SET `ScriptName`='boss_sjonnir' WHERE `entry`='27978';
+
+/* */
+/* UTGARDE KEEP */
+/* */
+
+/* UTGARDE KEEP */
+UPDATE `instance_template` SET `script`='instance_keep' WHERE `map`=206;
+UPDATE `creature_template` SET `ScriptName`='boss_dalronn' WHERE `entry`='24201';
+UPDATE `creature_template` SET `ScriptName`='boss_ingvar' WHERE `entry`='23954';
+UPDATE `creature_template` SET `ScriptName`='boss_keleseth' WHERE `entry`='23953';
+UPDATE `creature_template` SET `ScriptName`='boss_skarvald' WHERE `entry`='24200';
+
+/* UTGARDE PINNACLE */
+UPDATE `instance_template` SET `script`='instance_pinnacle' WHERE `map`=1196;
+UPDATE `creature_template` SET `ScriptName`='boss_palehoof' WHERE `entry`='26687';
+UPDATE `creature_template` SET `ScriptName`='boss_skadi' WHERE `entry`='26693';
+UPDATE `creature_template` SET `ScriptName`='boss_svala' WHERE `entry`='26668';
+UPDATE `creature_template` SET `ScriptName`='boss_ymiron' WHERE `entry`='26861';
+
+/* VAULT OF ARCHAVON */
+UPDATE `instance_template` SET `script`='instance_archavon' WHERE `map`=4603;
+UPDATE `creature_template` SET `ScriptName`='boss_archavon' WHERE `entry`='31125';
+UPDATE `creature_template` SET `ScriptName`='mob_archavon_warder' WHERE `entry`='32353';
+
+/* VIOLET HOLD */
+UPDATE `instance_template` SET `script`='instance_violet_hold' WHERE `map`=4415;
+UPDATE `creature_template` SET `ScriptName`='boss_cyanigosa' WHERE `entry`='31134';
+UPDATE `creature_template` SET `ScriptName`='boss_erekem' WHERE `entry`='29315';
+UPDATE `creature_template` SET `ScriptName`='boss_ichoron' WHERE `entry`='29313';
+UPDATE `creature_template` SET `ScriptName`='boss_lavanthor' WHERE `entry`='29312';
+UPDATE `creature_template` SET `ScriptName`='boss_moragg' WHERE `entry`='29316';
+UPDATE `creature_template` SET `ScriptName`='boss_xevozz' WHERE `entry`='29266';
+UPDATE `creature_template` SET `ScriptName`='boss_zuramat' WHERE `entry`='29314';