aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuhaha <none@none>2009-03-25 10:11:14 +0100
committerMuhaha <none@none>2009-03-25 10:11:14 +0100
commitea0fa1040b1abf6feb050e2f576d06fb11c0e66e (patch)
tree6edc3345d320a0b50eee7f7c121e5b40a51a77c5
parent4154efa5366afb6c627270bee4bfb324581eacb9 (diff)
* Merged ScriptDev2 935
--HG-- branch : trunk
-rw-r--r--src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp134
-rw-r--r--src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp68
-rw-r--r--src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp29
-rw-r--r--src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp10
4 files changed, 104 insertions, 137 deletions
diff --git a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp
index 51355f90198..a10c21a2300 100644
--- a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp
+++ b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp
@@ -23,44 +23,35 @@ EndScriptData */
#include "precompiled.h"
-#define SAY_AGGRO -1189019
-#define SAY_SPECIALAE -1189020
-
-#define SPELL_POLYMORPH 12826
-#define SPELL_AOESILENCE 8988
-#define SPELL_ARCANEEXPLOSION3 8438
-#define SPELL_ARCANEEXPLOSION4 8439
-#define SPELL_FIREAOE 9435
-#define SPELL_BLINK 1953
-#define SPELL_FIREBALL 21162
-#define SPELL_MANASHIELD4 10191
-#define SPELL_ARCANEBUBBLE 9438
+enum
+{
+ SAY_AGGRO = -1189019,
+ SAY_SPECIALAE = -1189020,
+
+ SPELL_POLYMORPH = 13323,
+ SPELL_AOESILENCE = 8988,
+ SPELL_ARCANEEXPLOSION = 9433,
+ SPELL_FIREAOE = 9435,
+ SPELL_ARCANEBUBBLE = 9438,
+};
struct TRINITY_DLL_DECL boss_arcanist_doanAI : public ScriptedAI
{
boss_arcanist_doanAI(Creature *c) : ScriptedAI(c) {Reset();}
- uint32 FullAOE_Timer;
uint32 Polymorph_Timer;
- uint32 ArcaneBubble_Timer;
uint32 AoESilence_Timer;
- uint32 ArcaneExplosion3_Timer;
- uint32 ArcaneExplosion4_Timer;
- uint32 Blink_Timer;
- uint32 Fireball_Timer;
- uint32 ManaShield4_Timer;
+ uint32 ArcaneExplosion_Timer;
+ bool bCanDetonate;
+ bool bShielded;
void Reset()
{
- FullAOE_Timer = 5000;
- Polymorph_Timer = 1;
- ArcaneBubble_Timer = 3000;
- AoESilence_Timer = 20000;
- ArcaneExplosion3_Timer = 10000;
- ArcaneExplosion4_Timer = 10000;
- Blink_Timer = 40000;
- Fireball_Timer = 6000;
- ManaShield4_Timer = 70000;
+ Polymorph_Timer = 20000;
+ AoESilence_Timer = 15000;
+ ArcaneExplosion_Timer = 3000;
+ bCanDetonate = false;
+ bShielded = false;
}
void Aggro(Unit *who)
@@ -73,73 +64,50 @@ struct TRINITY_DLL_DECL boss_arcanist_doanAI : public ScriptedAI
if (!UpdateVictim())
return;
- //If we are <50% hp cast Arcane Bubble and start casting SPECIAL FIRE AOE
- if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50 && !m_creature->IsNonMeleeSpellCasted(false))
+ if (bShielded && bCanDetonate)
{
- if (Polymorph_Timer < diff)
- {
- Unit* target = NULL;
-
- target = SelectUnit(SELECT_TARGET_RANDOM,0);
- if (target)DoCast(target,SPELL_POLYMORPH);
- Polymorph_Timer = 40000;
- }else Polymorph_Timer -= diff;
-
- if (ArcaneBubble_Timer < diff)
- {
- DoCast(m_creature,SPELL_ARCANEBUBBLE);
- ArcaneBubble_Timer = 40000;
- }else ArcaneBubble_Timer -= diff;
-
- if (FullAOE_Timer < diff)
- {
- DoScriptText(SAY_SPECIALAE, m_creature);
- DoCast(m_creature->getVictim(),SPELL_FIREAOE);
- FullAOE_Timer = 40000;
- }else FullAOE_Timer -= diff;
+ DoCast(m_creature,SPELL_FIREAOE);
+ bCanDetonate = false;
}
- //AoESilence_Timer
- if (AoESilence_Timer < diff)
- {
- DoCast(m_creature->getVictim(),SPELL_AOESILENCE);
- AoESilence_Timer = 30000;
- }else AoESilence_Timer -= diff;
+ if (m_creature->HasAura(SPELL_ARCANEBUBBLE))
+ return;
- //ArcaneExplosion3_Timer
- if (ArcaneExplosion3_Timer < diff)
+ //If we are <50% hp cast Arcane Bubble
+ if (!bShielded && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50)
{
- DoCast(m_creature->getVictim(),SPELL_ARCANEEXPLOSION3);
- ArcaneExplosion3_Timer = 8000;
- }else ArcaneExplosion3_Timer -= diff;
+ //wait if we already casting
+ if (m_creature->IsNonMeleeSpellCasted(false))
+ return;
- //ArcaneExplosion4_Timer
- if (ArcaneExplosion4_Timer < diff)
- {
- DoCast(m_creature->getVictim(),SPELL_ARCANEEXPLOSION4);
- ArcaneExplosion4_Timer = 10000;
- }else ArcaneExplosion4_Timer -= diff;
+ DoScriptText(SAY_SPECIALAE, m_creature);
+ DoCast(m_creature,SPELL_ARCANEBUBBLE);
+
+ bCanDetonate = true;
+ bShielded = true;
+ }
- //Blink_Timer
- if (Blink_Timer < diff)
+ if (Polymorph_Timer < diff)
{
- DoCast(m_creature,SPELL_BLINK);
- Blink_Timer = 30000;
- }else Blink_Timer -= diff;
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
+ DoCast(target,SPELL_POLYMORPH);
+
+ Polymorph_Timer = 20000;
+ }else Polymorph_Timer -= diff;
- //Fireball_Timer
- if (Fireball_Timer < diff)
+ //AoESilence_Timer
+ if (AoESilence_Timer < diff)
{
- DoCast(m_creature->getVictim(),SPELL_FIREBALL);
- Fireball_Timer = 12000;
- }else Fireball_Timer -= diff;
+ DoCast(m_creature->getVictim(),SPELL_AOESILENCE);
+ AoESilence_Timer = 15000 + rand()%5000;
+ }else AoESilence_Timer -= diff;
- //ManaShiled4_Timer
- if (ManaShield4_Timer < diff)
+ //ArcaneExplosion_Timer
+ if (ArcaneExplosion_Timer < diff)
{
- DoCast(m_creature,SPELL_MANASHIELD4);
- ManaShield4_Timer = 70000;
- }else ManaShield4_Timer -= diff;
+ DoCast(m_creature->getVictim(),SPELL_ARCANEEXPLOSION);
+ ArcaneExplosion_Timer = 8000;
+ }else ArcaneExplosion_Timer -= diff;
DoMeleeAttackIfReady();
}
diff --git a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp
index 8688d6a8292..1476b79ba7f 100644
--- a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp
+++ b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp
@@ -23,34 +23,35 @@ EndScriptData */
#include "precompiled.h"
-#define SAY_AGGRO -1189016
-#define SAY_HEALTH -1189017
-#define SAY_KILL -1189018
-
-#define SPELL_FROSTNOVA2 865
-#define SPELL_FLAMESHOCK3 8053
-#define SPELL_SHADOWBOLT5 1106
-#define SPELL_FLAMESPIKE 8814
-#define SPELL_FIRENOVA 16079
+enum
+{
+ SAY_AGGRO = -1189016,
+ SAY_HEALTH = -1189017,
+ SAY_KILL = -1189018,
+
+ SPELL_FLAMESHOCK = 8053,
+ SPELL_SHADOWBOLT = 1106,
+ SPELL_FLAMESPIKE = 8814,
+ SPELL_FIRENOVA = 16079,
+};
struct TRINITY_DLL_DECL boss_bloodmage_thalnosAI : public ScriptedAI
{
boss_bloodmage_thalnosAI(Creature *c) : ScriptedAI(c) {Reset();}
bool HpYell;
- uint32 FrostNova2_Timer;
- uint32 FlameShock3_Timer;
- uint32 ShadowBolt5_Timer;
+ uint32 FlameShock_Timer;
+ uint32 ShadowBolt_Timer;
uint32 FlameSpike_Timer;
uint32 FireNova_Timer;
void Reset()
{
- FrostNova2_Timer = 10000;
- FlameShock3_Timer = 15000;
- ShadowBolt5_Timer = 20000;
- FlameSpike_Timer = 20000;
- FireNova_Timer = 10000;
+ HpYell = false;
+ FlameShock_Timer = 10000;
+ ShadowBolt_Timer = 2000;
+ FlameSpike_Timer = 8000;
+ FireNova_Timer = 40000;
}
void Aggro(Unit *who)
@@ -75,26 +76,12 @@ struct TRINITY_DLL_DECL boss_bloodmage_thalnosAI : public ScriptedAI
HpYell = true;
}
- //FrostNova2_Timer
- if (FrostNova2_Timer < diff)
- {
- DoCast(m_creature->getVictim(),SPELL_FROSTNOVA2);
- FrostNova2_Timer = 10000;
- }else FrostNova2_Timer -= diff;
-
- //FlameShock3_Timer
- if (FlameShock3_Timer < diff)
- {
- DoCast(m_creature->getVictim(),SPELL_FLAMESHOCK3);
- FlameShock3_Timer = 15000;
- }else FlameShock3_Timer -= diff;
-
- //ShadowBolt5_Timer
- if (ShadowBolt5_Timer < diff)
+ //FlameShock_Timer
+ if (FlameShock_Timer < diff)
{
- DoCast(m_creature->getVictim(),SPELL_SHADOWBOLT5);
- ShadowBolt5_Timer = 20000;
- }else ShadowBolt5_Timer -= diff;
+ DoCast(m_creature->getVictim(),SPELL_FLAMESHOCK);
+ FlameShock_Timer = 10000 + rand()%5000;
+ }else FlameShock_Timer -= diff;
//FlameSpike_Timer
if (FlameSpike_Timer < diff)
@@ -107,9 +94,16 @@ struct TRINITY_DLL_DECL boss_bloodmage_thalnosAI : public ScriptedAI
if (FireNova_Timer < diff)
{
DoCast(m_creature->getVictim(),SPELL_FIRENOVA);
- FireNova_Timer = 20000;
+ FireNova_Timer = 40000;
}else FireNova_Timer -= diff;
+ //ShadowBolt_Timer
+ if (ShadowBolt_Timer < diff)
+ {
+ DoCast(m_creature->getVictim(),SPELL_SHADOWBOLT);
+ ShadowBolt_Timer = 2000;
+ }else ShadowBolt_Timer -= diff;
+
DoMeleeAttackIfReady();
}
};
diff --git a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp
index 83f115470e6..22ab3c8070f 100644
--- a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp
+++ b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp
@@ -24,13 +24,16 @@ EndScriptData */
#include "precompiled.h"
#include "def_scarlet_monastery.h"
-#define SAY_AGGRO -1189011
-#define SAY_HEALTH1 -1189012
-#define SAY_HEALTH2 -1189013
-#define SAY_KILL -1189014
-#define SAY_TRIGGER_VORREL -1189015
+enum
+{
+ SAY_AGGRO = -1189011,
+ SAY_HEALTH1 = -1189012,
+ SAY_HEALTH2 = -1189013,
+ SAY_KILL = -1189014,
+ SAY_TRIGGER_VORREL = -1189015,
-#define SPELL_POWERWORDSHIELD 2767
+ SPELL_SHADOWWORDPAIN = 2767,
+};
struct TRINITY_DLL_DECL boss_interrogator_vishasAI : public ScriptedAI
{
@@ -44,11 +47,11 @@ struct TRINITY_DLL_DECL boss_interrogator_vishasAI : public ScriptedAI
bool Yell30;
bool Yell60;
- uint32 PowerWordShield_Timer;
+ uint32 ShadowWordPain_Timer;
void Reset()
{
- PowerWordShield_Timer = 60000;
+ ShadowWordPain_Timer = 5000;
}
void Aggro(Unit *who)
@@ -89,12 +92,12 @@ struct TRINITY_DLL_DECL boss_interrogator_vishasAI : public ScriptedAI
Yell30 = true;
}
- //PowerWordShield_Timer
- if (PowerWordShield_Timer < diff)
+ //ShadowWordPain_Timer
+ if (ShadowWordPain_Timer < diff)
{
- DoCast(m_creature,SPELL_POWERWORDSHIELD);
- PowerWordShield_Timer = 60000;
- }else PowerWordShield_Timer -= diff;
+ DoCast(m_creature->getVictim(),SPELL_SHADOWWORDPAIN);
+ ShadowWordPain_Timer = 5000 + rand()%10000;;
+ }else ShadowWordPain_Timer -= diff;
DoMeleeAttackIfReady();
}
diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp
index 96801fd334b..60e946c708b 100644
--- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp
+++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp
@@ -570,13 +570,15 @@ struct TRINITY_DLL_DECL cthunAI : public Scripted_NoMovementAI
Map *map = m_creature->GetMap();
if(!map->IsDungeon()) return;
+ //Play random sound to the zone
Map::PlayerList const &PlayerList = map->GetPlayers();
- for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
+
+ if (!PlayerList.isEmpty())
{
- if (Player* i_pl = i->getSource())
+ for(Map::PlayerList::const_iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr)
{
- //Play random sound to the zone
- i_pl->SendPlaySound(RANDOM_SOUND_WHISPER, true);
+ if (Player* pPlr = itr->getSource())
+ pPlr->PlayDirectSound(RANDOM_SOUND_WHISPER,pPlr);
}
}