diff options
author | Muhaha <none@none> | 2009-03-25 10:11:14 +0100 |
---|---|---|
committer | Muhaha <none@none> | 2009-03-25 10:11:14 +0100 |
commit | ea0fa1040b1abf6feb050e2f576d06fb11c0e66e (patch) | |
tree | 6edc3345d320a0b50eee7f7c121e5b40a51a77c5 | |
parent | 4154efa5366afb6c627270bee4bfb324581eacb9 (diff) |
* Merged ScriptDev2 935
--HG--
branch : trunk
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); } } |