aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/Makefile.am1
-rw-r--r--src/bindings/scripts/ScriptMgr.cpp3
-rw-r--r--src/bindings/scripts/VC71/71ScriptDev2.vcproj4
-rw-r--r--src/bindings/scripts/VC80/80ScriptDev2.vcproj4
-rw-r--r--src/bindings/scripts/VC90/90ScriptDev2.vcproj4
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp195
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp58
7 files changed, 253 insertions, 16 deletions
diff --git a/src/bindings/scripts/Makefile.am b/src/bindings/scripts/Makefile.am
index 94a01ac23af..278d702c00c 100644
--- a/src/bindings/scripts/Makefile.am
+++ b/src/bindings/scripts/Makefile.am
@@ -72,6 +72,7 @@ scripts/zone/alterac_mountains/alterac_mountains.cpp \
scripts/zone/arathi_highlands/arathi_highlands.cpp \
scripts/zone/ashenvale_forest/ashenvale.cpp\
scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp \
+scripts/zone/aunchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher \
scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp \
scripts/zone/aunchindoun/mana_tombs/boss_pandemonius.cpp \
scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp \
diff --git a/src/bindings/scripts/ScriptMgr.cpp b/src/bindings/scripts/ScriptMgr.cpp
index 49a1dc79cc8..5d78d40030d 100644
--- a/src/bindings/scripts/ScriptMgr.cpp
+++ b/src/bindings/scripts/ScriptMgr.cpp
@@ -116,6 +116,8 @@ extern void AddSC_ashenvale();
//Aunchindoun
//--Auchenai Crypts
extern void AddSC_boss_exarch_maladaar();
+extern void AddSC_boss_shirrak_the_dead_watcher();
+
//--Mana Tombs
extern void AddSC_boss_nexusprince_shaffar();
extern void AddSC_boss_pandemonius();
@@ -1317,6 +1319,7 @@ void ScriptsInit()
//Aunchindoun
//--Auchenai Crypts
AddSC_boss_exarch_maladaar();
+ AddSC_boss_shirrak_the_dead_watcher();
//--Mana Tombs
AddSC_boss_nexusprince_shaffar();
diff --git a/src/bindings/scripts/VC71/71ScriptDev2.vcproj b/src/bindings/scripts/VC71/71ScriptDev2.vcproj
index 5d8da080d66..24b76d9d4cf 100644
--- a/src/bindings/scripts/VC71/71ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC71/71ScriptDev2.vcproj
@@ -1259,6 +1259,10 @@
RelativePath="..\scripts\zone\aunchindoun\auchenai_crypts\boss_exarch_maladaar.cpp"
>
</File>
+ <File
+ RelativePath="..\scripts\zone\aunchindoun\auchenai_crypts\boss_shirrak_the_dead_watcher.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Mana Tombs"
diff --git a/src/bindings/scripts/VC80/80ScriptDev2.vcproj b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
index 60b74c03320..72e05948c9d 100644
--- a/src/bindings/scripts/VC80/80ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
@@ -1436,6 +1436,10 @@
RelativePath="..\scripts\zone\aunchindoun\auchenai_crypts\boss_exarch_maladaar.cpp"
>
</File>
+ <File
+ RelativePath="..\scripts\zone\aunchindoun\auchenai_crypts\boss_shirrak_the_dead_watcher.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Mana Tombs"
diff --git a/src/bindings/scripts/VC90/90ScriptDev2.vcproj b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
index 9c8c7da5a93..996ccb6f6d2 100644
--- a/src/bindings/scripts/VC90/90ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
@@ -1429,6 +1429,10 @@
RelativePath="..\scripts\zone\aunchindoun\auchenai_crypts\boss_exarch_maladaar.cpp"
>
</File>
+ <File
+ RelativePath="..\scripts\zone\aunchindoun\auchenai_crypts\boss_shirrak_the_dead_watcher.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Mana Tombs"
diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp
new file mode 100644
index 00000000000..afc161afed4
--- /dev/null
+++ b/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp
@@ -0,0 +1,195 @@
+/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (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
+Name: Boss_Shirrak_the_dead_watcher
+%Complete: 80
+Comment: InhibitMagic should stack slower far from the boss, proper Visual for Focus Fire, heroic implemented
+Category: Auchindoun, Auchenai Crypts
+EndScriptData */
+
+#include "precompiled.h"
+
+#define SPELL_INHABITMAGIC 32264
+#define SPELL_ATTRACTMAGIC 32265
+#define N_SPELL_CARNIVOROUSBITE 36383
+#define H_SPELL_CARNIVOROUSBITE 39382
+#define SPELL_CARNIVOROUSBITE (HeroicMode?H_SPELL_CARNIVOROUSBITE:N_SPELL_CARNIVOROUSBITE)
+
+#define ENTRY_FOCUS_FIRE 18374
+
+#define N_SPELL_FIERY_BLAST 32302
+#define H_SPELL_FIERY_BLAST 38382
+#define SPELL_FIERY_BLAST (HeroicMode?H_SPELL_FIERY_BLAST:N_SPELL_FIERY_BLAST)
+#define SPELL_FOCUS_FIRE_VISUAL 42075 //need to find better visual
+
+struct TRINITY_DLL_DECL boss_shirrak_the_dead_watcherAI : public ScriptedAI
+{
+ boss_shirrak_the_dead_watcherAI(Creature *c) : ScriptedAI(c)
+ {
+ HeroicMode = m_creature->GetMap()->IsHeroic();
+ Reset();
+ }
+
+ uint32 Inhabitmagic_Timer;
+ uint32 Attractmagic_Timer;
+ uint32 Carnivorousbite_Timer;
+ uint32 FocusFire_Timer;
+ bool HeroicMode;
+ Unit *focusedTarget;
+
+ void Reset()
+ {
+ Inhabitmagic_Timer = 3000;
+ Attractmagic_Timer = 28000;
+ Carnivorousbite_Timer = 10000;
+ FocusFire_Timer = 17000;
+ focusedTarget = NULL;
+ }
+
+ void Aggro(Unit *who)
+ { }
+
+ void JustSummoned(Creature *summoned)
+ {
+ if (summoned && summoned->GetEntry() == ENTRY_FOCUS_FIRE)
+ {
+ summoned->CastSpell(summoned,SPELL_FOCUS_FIRE_VISUAL,false);
+ summoned->setFaction(m_creature->getFaction());
+ summoned->SetLevel(m_creature->getLevel());
+ summoned->addUnitState(UNIT_STAT_ROOT);
+
+ if(focusedTarget)
+ summoned->AI()->AttackStart(focusedTarget);
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if (!m_creature->SelectHostilTarget() || !m_creature->getVictim() )
+ return;
+
+ //Inhabitmagic_Timer
+ if (Inhabitmagic_Timer < diff)
+ {
+ DoCast(m_creature,SPELL_INHABITMAGIC);
+ Inhabitmagic_Timer = 2000+(rand()%2000);
+ }else Inhabitmagic_Timer -= diff;
+
+ //Attractmagic_Timer
+ if (Attractmagic_Timer < diff)
+ {
+ DoCast(m_creature,SPELL_ATTRACTMAGIC);
+ Attractmagic_Timer = 30000;
+ }else Attractmagic_Timer -= diff;
+
+ //Carnivorousbite_Timer
+ if (Carnivorousbite_Timer < diff)
+ {
+ DoCast(m_creature,SPELL_CARNIVOROUSBITE);
+ Carnivorousbite_Timer = 10000;
+ }else Carnivorousbite_Timer -= diff;
+
+ //FocusFire_Timer
+ if (FocusFire_Timer < diff)
+ {
+ // Summon Focus Fire & Emote
+ Unit *target = SelectUnit(SELECT_TARGET_RANDOM,0);
+ if (target && target->GetTypeId() == TYPEID_PLAYER)
+ {
+ focusedTarget = target;
+ m_creature->SummonCreature(ENTRY_FOCUS_FIRE,target->GetPositionX(),target->GetPositionY(),target->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN,5500);
+
+ // Emote
+ std::string *emote = new std::string("focuses his energy on ");
+ emote->append(target->GetName());
+ DoTextEmote(emote->c_str(),NULL,true);
+ delete emote;
+
+ FocusFire_Timer = 15000+(rand()%5000);
+ }
+ }else FocusFire_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_boss_shirrak_the_dead_watcher(Creature *_Creature)
+{
+ return new boss_shirrak_the_dead_watcherAI (_Creature);
+}
+
+struct TRINITY_DLL_DECL mob_focus_fireAI : public ScriptedAI
+{
+ mob_focus_fireAI(Creature *c) : ScriptedAI(c)
+ {
+ HeroicMode = m_creature->GetMap()->IsHeroic();
+ Reset();
+ }
+
+ bool HeroicMode;
+ uint32 FieryBlast_Timer;
+ bool fiery1, fiery2, fiery3;
+
+ void Reset()
+ {
+ FieryBlast_Timer = 3000+(rand()%1000);
+ fiery1 = fiery2 = true;
+ }
+
+ void Aggro(Unit *who)
+ { }
+
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if (!m_creature->SelectHostilTarget() || !m_creature->getVictim() )
+ return;
+
+ //FieryBlast_Timer
+ if (fiery2 && FieryBlast_Timer < diff)
+ {
+ DoCast(m_creature,SPELL_FIERY_BLAST);
+
+ if(fiery1) fiery1 = false;
+ else if(fiery2) fiery2 = false;
+
+ FieryBlast_Timer = 1000;
+ }else FieryBlast_Timer -= diff;
+
+ //DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_mob_focus_fire(Creature *_Creature)
+{
+ return new mob_focus_fireAI (_Creature);
+}
+
+void AddSC_boss_shirrak_the_dead_watcher()
+{
+ Script *newscript;
+ newscript = new Script;
+ newscript->Name="boss_shirrak_the_dead_watcher";
+ newscript->GetAI = &GetAI_boss_shirrak_the_dead_watcher;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_focus_fire";
+ newscript->GetAI = &GetAI_mob_focus_fire;
+ newscript->RegisterSelf();
+} \ No newline at end of file
diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp
index c566ab40230..f38b144da90 100644
--- a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp
+++ b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp
@@ -17,7 +17,7 @@
/* ScriptData
SDName: Boss_Darkweaver_Syth
SD%Complete: 85
-SDComment: Shock spells/times need more work. Heroic not implemented.
+SDComment: Shock spells/times need more work. Heroic partly implemented.
SDCategory: Auchindoun, Sethekk Halls
EndScriptData */
@@ -34,30 +34,31 @@ EndScriptData */
#define SAY_DEATH -1556006
-#define SPELL_FROST_SHOCK 37865
+#define SPELL_FROST_SHOCK 21401 //37865
#define SPELL_FLAME_SHOCK 34354
#define SPELL_SHADOW_SHOCK 30138
#define SPELL_ARCANE_SHOCK 37132
-#define SPELL_CHAIN_LIGHTNING 39945
+#define SPELL_CHAIN_LIGHTNING 15659 //15305
#define SPELL_SUMMON_SYTH_FIRE 33537 // Spawns 19203
#define SPELL_SUMMON_SYTH_ARCANE 33538 // Spawns 19205
#define SPELL_SUMMON_SYTH_FROST 33539 // Spawns 19204
#define SPELL_SUMMON_SYTH_SHADOW 33540 // Spawns 19206
-#define SPELL_FLAME_BUFFET 33526
-#define H_SPELL_FLAME_BUFFET 38141
-#define SPELL_ARCANE_BUFFET 33527
-#define H_SPELL_ARCANE_BUFFET 38138
-#define SPELL_FROST_BUFFET 33528
-#define H_SPELL_FROST_BUFFET 38142
-#define SPELL_SHADOW_BUFFET 33529
-#define H_SPELL_SHADOW_BUFFET 38143
+#define SPELL_FLAME_BUFFET (HeroicMode?38141:33526)
+#define SPELL_ARCANE_BUFFET (HeroicMode?38138:33527)
+#define SPELL_FROST_BUFFET (HeroicMode?38142:33528)
+#define SPELL_SHADOW_BUFFET (HeroicMode?38143:33529)
struct TRINITY_DLL_DECL boss_darkweaver_sythAI : public ScriptedAI
{
- boss_darkweaver_sythAI(Creature *c) : ScriptedAI(c) {Reset();}
+ boss_darkweaver_sythAI(Creature *c) : ScriptedAI(c)
+
+ {
+ HeroicMode = m_creature->GetMap()->IsHeroic();
+ Reset();
+ }
uint32 flameshock_timer;
uint32 arcaneshock_timer;
@@ -68,6 +69,7 @@ struct TRINITY_DLL_DECL boss_darkweaver_sythAI : public ScriptedAI
bool summon90;
bool summon50;
bool summon10;
+ bool HeroicMode;
void Reset()
{
@@ -204,10 +206,16 @@ CreatureAI* GetAI_boss_darkweaver_syth(Creature *_Creature)
struct TRINITY_DLL_DECL mob_syth_fireAI : public ScriptedAI
{
- mob_syth_fireAI(Creature *c) : ScriptedAI(c) {Reset();}
+ mob_syth_fireAI(Creature *c) : ScriptedAI(c)
+
+ {
+ HeroicMode = m_creature->GetMap()->IsHeroic();
+ Reset();
+ }
uint32 flameshock_timer;
uint32 flamebuffet_timer;
+ bool HeroicMode;
void Reset()
{
@@ -250,10 +258,16 @@ CreatureAI* GetAI_mob_syth_fire(Creature *_Creature)
struct TRINITY_DLL_DECL mob_syth_arcaneAI : public ScriptedAI
{
- mob_syth_arcaneAI(Creature *c) : ScriptedAI(c) {Reset();}
+ mob_syth_arcaneAI(Creature *c) : ScriptedAI(c)
+
+ {
+ HeroicMode = m_creature->GetMap()->IsHeroic();
+ Reset();
+ }
uint32 arcaneshock_timer;
uint32 arcanebuffet_timer;
+ bool HeroicMode;
void Reset()
{
@@ -296,10 +310,16 @@ CreatureAI* GetAI_mob_syth_arcane(Creature *_Creature)
struct TRINITY_DLL_DECL mob_syth_frostAI : public ScriptedAI
{
- mob_syth_frostAI(Creature *c) : ScriptedAI(c) {Reset();}
+ mob_syth_frostAI(Creature *c) : ScriptedAI(c)
+
+ {
+ HeroicMode = m_creature->GetMap()->IsHeroic();
+ Reset();
+ }
uint32 frostshock_timer;
uint32 frostbuffet_timer;
+ bool HeroicMode;
void Reset()
{
@@ -342,10 +362,16 @@ CreatureAI* GetAI_mob_syth_frost(Creature *_Creature)
struct TRINITY_DLL_DECL mob_syth_shadowAI : public ScriptedAI
{
- mob_syth_shadowAI(Creature *c) : ScriptedAI(c) {Reset();}
+ mob_syth_shadowAI(Creature *c) : ScriptedAI(c)
+
+ {
+ HeroicMode = m_creature->GetMap()->IsHeroic();
+ Reset();
+ }
uint32 shadowshock_timer;
uint32 shadowbuffet_timer;
+ bool HeroicMode;
void Reset()
{