aboutsummaryrefslogtreecommitdiff
path: root/src/bindings
diff options
context:
space:
mode:
authormegamage <none@none>2008-10-31 21:42:00 -0500
committermegamage <none@none>2008-10-31 21:42:00 -0500
commite2eb694c57885e49f37c328b899d802e1ff4ea90 (patch)
tree7259333552fadf2bd67414c70e85b3cf3bd797c0 /src/bindings
parent1c3d4c40c3fef1eec9d1c8438254e97cdcef063a (diff)
[svn] Improve TargetedMovement (TODO: let mob find "near angle" rather than "random angle").
Delete a repeated check in instance canenter(). Fix some spell targets. Add some sunwell spell sql. Fix Magtheridons earthquake. (TODO: need to find out why soul transfer has no effect when casted by mobs) Let Brutallus dual wield. Enable burn (still no script effect). Quick fix for shadowmoon valley illidan quest crash (wait for author's fix). --HG-- branch : trunk
Diffstat (limited to 'src/bindings')
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp20
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp9
-rw-r--r--src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp505
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp6
5 files changed, 277 insertions, 265 deletions
diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
index f1278aa8c6e..9f0a47acdf6 100644
--- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
+++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
@@ -2079,7 +2079,7 @@ void boss_illidan_stormrageAI::Reset()
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, 0);
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
- DoCast(m_creature, SPELL_DUAL_WIELD, true);
+ m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
}
void boss_illidan_stormrageAI::HandleTalkSequence()
diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp
index 49dd5d5950d..458dafa2511 100644
--- a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp
+++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp
@@ -31,7 +31,7 @@ EndScriptData */
#define SPELL_BLASTNOVA 30616
#define SPELL_CLEAVE 30619
-#define SPELL_QUAKE_TRIGGER 30576 // must be cast with 30561 as the proc spell
+#define SPELL_QUAKE_TRIGGER 30657 // must be cast with 30561 as the proc spell
#define SPELL_QUAKE_KNOCKBACK 30571
#define SPELL_BLAZE_TARGET 30541 // core bug, does not support target 7
#define SPELL_BLAZE_TRAP 30542
@@ -168,6 +168,21 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
pInstance =(ScriptedInstance*)m_creature->GetInstanceData();
m_creature->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10);
m_creature->SetFloatValue(UNIT_FIELD_COMBATREACH, 10);
+
+ // target 7, random target with certain entry spell, need core fix
+ SpellEntry *TempSpell;
+ TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_BLAZE_TARGET);
+ if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 6)
+ {
+ TempSpell->EffectImplicitTargetA[0] = 6;
+ TempSpell->EffectImplicitTargetB[0] = 0;
+ }
+ TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_QUAKE_TRIGGER);
+ if(TempSpell && TempSpell->EffectTriggerSpell[0] != SPELL_QUAKE_KNOCKBACK)
+ {
+ TempSpell->EffectTriggerSpell[0] = SPELL_QUAKE_KNOCKBACK;
+ }
+
Reset();
}
@@ -328,8 +343,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
// to avoid blastnova interruption
if(!m_creature->IsNonMeleeSpellCasted(false))
{
- int32 i = SPELL_QUAKE_KNOCKBACK;
- m_creature->CastCustomSpell(m_creature, SPELL_QUAKE_TRIGGER, &i, 0, 0, false);
+ m_creature->CastSpell(m_creature, SPELL_QUAKE_TRIGGER, true);
Quake_Timer = 50000;
}
}else Quake_Timer -= diff;
diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp
index b059b81c1bd..8a6815e068a 100644
--- a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp
+++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp
@@ -26,8 +26,6 @@ EndScriptData */
#define SPELL_SOUL_TRANSFER 30531 // core bug, does not support target 7
#define SPELL_BLAZE_TARGET 30541 // core bug, does not support target 7
-#define SPELL_DEBRIS_DAMAGE 30631 // core bug, does not support target 8
-#define SPELL_DEBRIS_KNOCKDOWN 36449 // core bug, does not support target 8
#define CHAMBER_CENTER_X -15.14
#define CHAMBER_CENTER_Y 1.8
@@ -40,13 +38,6 @@ struct TRINITY_DLL_DECL instance_magtheridons_lair : public ScriptedInstance
instance_magtheridons_lair(Map *Map) : ScriptedInstance(Map)
{
Initialize();
- // target 7, random target with certain entry spell, need core fix
- SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_BLAZE_TARGET);
- if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 6)
- {
- TempSpell->EffectImplicitTargetA[0] = 6;
- TempSpell->EffectImplicitTargetB[0] = 0;
- }
}
uint32 Encounters[ENCOUNTERS];
diff --git a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp
index 8024b1d0bd2..7bc1ad312a9 100644
--- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp
+++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp
@@ -813,261 +813,266 @@ void DoSpeach(int phase)
struct TRINITY_DLL_DECL Overlord_MorghorAI : public ScriptedAI
{
-Overlord_MorghorAI(Creature *c) : ScriptedAI(c) {Reset();}
-
- Unit* m_player;
- Unit* PlayerCheck;
-
- uint32 SpeachTimer;
- uint32 SpeachNum;
-
- uint64 PlayerGUID;
- uint64 YazillGUID;
-
- bool DoingSpeach;
- bool Failed;
-
- Creature* Lord;
- Creature* Yarzill;
-
-void Reset()
-{
- if (Lord)
- {
- Lord->SetUInt64Value(UNIT_FIELD_TARGET, 0);
- Lord->SetVisibility(VISIBILITY_OFF);
- Lord->setDeathState(JUST_DIED);
- }
+ Overlord_MorghorAI(Creature *c) : ScriptedAI(c)
+ {
+ Lord = NULL;
+ Yarzill = NULL;
+ Reset();
+ }
- if (Yarzill)
- {
- Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, 0);
- }
-
- m_creature->Relocate(-5085.77, 577.231, 86.6719, 2.32608);
- m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 2);
- m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0);
- m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
- m_player = NULL;
- PlayerCheck = NULL;
- PlayerGUID = 0;
- YazillGUID = 0;
- Lord = NULL;
- Yarzill = NULL;
- DoingSpeach = false;
- Failed = false;
- SpeachNum = 0;
- SpeachTimer = 0;
-}
+ Unit* m_player;
+ Unit* PlayerCheck;
-void BeginSpeach(Unit* target)
-{
- m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
- m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
- DoSay(OVERLORD_SAY_1,LANG_UNIVERSAL,target);
- m_player = target;
- PlayerCheck = NULL;
- PlayerGUID = target->GetGUID();
- SpeachTimer = 4200;
- SpeachNum = 0;
- DoingSpeach = true;
-}
-
-void Aggro(Unit *who){}
+ uint32 SpeachTimer;
+ uint32 SpeachNum;
-void MoveInLineOfSight(Unit *who)
-{
- if (!who)
- return;
+ uint64 PlayerGUID;
+ uint64 YazillGUID;
- if (DoingSpeach)
- {
- if (who->GetEntry() == 23141 && m_creature->IsWithinDistInMap(who, 15))
- {
- if (!YazillGUID)
- {
- YazillGUID = who->GetGUID();
- }
- }
- }
-}
+ bool DoingSpeach;
+ bool Failed;
-void UpdateAI(const uint32 diff)
-{
- //Speach
- if (DoingSpeach)
- {
- if (SpeachTimer < diff)
- {
- if (YazillGUID && !Yarzill)
- Yarzill = ((Creature*)Unit::GetUnit((*m_creature), YazillGUID));
-
- if (!m_creature->IsWithinDistInMap(m_player, 50) && ((Player*)m_player)->GetQuestStatus(QUEST_LORD_ILLIDAN_STORMRAGE) == QUEST_STATUS_INCOMPLETE)
- {
- ((Player*)m_player)->FailQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
- SpeachNum = 30;
- }
-
- switch (SpeachNum)
- {
- // Overlord Movement
- case 0:
- m_creature->GetMotionMaster()->MovePoint(0, -5104.41, 595.297, 85.6838);
- SpeachTimer = 9000; SpeachNum++; break;
- // Overlord Yell 1
- case 1:
- m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_SHOUT);
- DoYell(OVERLORD_YELL_1,LANG_UNIVERSAL,m_player);
- SpeachTimer = 4500; SpeachNum++; break;
- // Overlord Angle
- case 2:
- m_creature->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
- SpeachTimer = 3200; SpeachNum++; break;
- // Overlord Say 2
- case 3:
- DoSay(OVERLORD_SAY_2,LANG_UNIVERSAL,NULL);
- SpeachTimer = 2000; SpeachNum++; break;
- // Summon Illidan
- case 4:
- Lord = m_creature->SummonCreature(LORD_ILLIDAN_STORMRAGE, -5107.83, 602.584, 85.2393, 4.92598, TEMPSUMMON_CORPSE_DESPAWN, 0);
- Lord->LoadCreaturesAddon();
- SpeachTimer = 350; SpeachNum++; break;
- // Illidan Cast Red Bolt
- case 5:
- Lord->CastSpell(Lord, SPELL_ONE, true);
- Lord->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID());
- m_creature->SetUInt64Value(UNIT_FIELD_TARGET, Lord->GetGUID());
- SpeachTimer = 2000; SpeachNum++; break;
- // Overlord Yell 2
- case 6:
- DoYell(OVERLORD_YELL_2,LANG_UNIVERSAL,NULL);
- SpeachTimer = 4500; SpeachNum++; break;
- // Overlord Kneel
- case 7:
- m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,8);
- SpeachTimer = 2500; SpeachNum++; break;
- // Overlord Say 3
- case 8:
- DoSay(OVERLORD_SAY_3,LANG_UNIVERSAL,NULL);
- SpeachTimer = 6500; SpeachNum++; break;
- // Illidan Say 1
- case 9:
- ((Lord_IllidanAI*)Lord->AI())->DoSpeach(1);
- SpeachTimer = 5000; SpeachNum++; break;
- // Overlord Say 4
- case 10:
- DoSay(OVERLORD_SAY_4,LANG_UNIVERSAL,m_player);
- SpeachTimer = 6000; SpeachNum++; break;
- // Illidan Say 2
- case 11:
- ((Lord_IllidanAI*)Lord->AI())->DoSpeach(2);
- SpeachTimer = 5500; SpeachNum++; break;
- // Illidan Say 3
- case 12:
- ((Lord_IllidanAI*)Lord->AI())->DoSpeach(3);
- SpeachTimer = 4000; SpeachNum++; break;
- // Illidan Angle
- case 13:
- Lord->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
- SpeachTimer = 1500; SpeachNum++; break;
- // Illidan Say 4
- case 14:
- ((Lord_IllidanAI*)Lord->AI())->DoSpeach(4);
- SpeachTimer = 1500; SpeachNum++; break;
- // Illidan Cast
- case 15:
- PlayerCheck = Unit::GetUnit(*Lord, PlayerGUID);
- if (PlayerCheck)
- {
- Lord->CastSpell(m_player, SPELL_TWO, true);
- m_player->RemoveAurasDueToSpell(SPELL_THREE);
- m_player->RemoveAurasDueToSpell(SPELL_FOUR);
- SpeachTimer = 5000; SpeachNum++;
- }
- else
- {
- ((Player*)m_player)->FailQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
- SpeachTimer = 100; SpeachNum = 30;
- }
- break;
- // Illidan Say 5
- case 16:
- ((Lord_IllidanAI*)Lord->AI())->DoSpeach(5);
- SpeachTimer = 5000; SpeachNum++; break;
- // Illidan Say 6
- case 17:
- ((Lord_IllidanAI*)Lord->AI())->DoSpeach(6);
- SpeachTimer = 5000; SpeachNum++; break;
- // Illidan Say 7
- case 18:
- ((Lord_IllidanAI*)Lord->AI())->DoSpeach(7);
- SpeachTimer = 5000; SpeachNum++; break;
- // Illidan Fly
- case 19:
- Lord->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
- Lord->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
- SpeachTimer = 500; SpeachNum++; break;
- // Overlord Say 5
- case 20:
- DoSay(OVERLORD_SAY_5,LANG_UNIVERSAL,NULL);
- SpeachTimer = 500; SpeachNum++; break;
- // Illidan Despawn
- case 21:
- Lord->SetVisibility(VISIBILITY_OFF);
- Lord->setDeathState(JUST_DIED);
- Lord = NULL;
- SpeachTimer = 1000; SpeachNum++; break;
- // Overlord Stand Up
- case 22:
- m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
- SpeachTimer = 2000; SpeachNum++; break;
- // Overlord Angle
- case 23:
- m_creature->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
- SpeachTimer = 5000; SpeachNum++; break;
- // Overlord Say 6
- case 24:
- DoSay(OVERLORD_SAY_6,LANG_UNIVERSAL,NULL);
- SpeachTimer = 2000; SpeachNum++; break;
- // Complete Quest
- case 25:
- ((Player*)m_player)->CompleteQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
- SpeachTimer = 6000; SpeachNum++; break;
- // Goblin Angle
- case 26:
- if (Yarzill)
- Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
- SpeachTimer = 500; SpeachNum++; break;
- // Cast Again Dragonaw Illusion
- case 27:
- m_player->RemoveAurasDueToSpell(SPELL_TWO);
- m_player->RemoveAurasDueToSpell(41519);
- m_player->CastSpell(m_player, SPELL_THREE, true);
- m_player->CastSpell(m_player, SPELL_FOUR, true);
- SpeachTimer = 1000; SpeachNum++; break;
- // Goblin
- case 28:
- if (Yarzill)
- ((Yarzill_The_MercAI*)Yarzill->AI())->DoSpeach(m_player);
- SpeachTimer = 5000; SpeachNum++; break;
- // Goblin Off
- case 29:
- if (Yarzill)
- Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, 0);
- SpeachTimer = 5000; SpeachNum++; break;
- // Overlord Go Back
- case 30:
- m_creature->GetMotionMaster()->MovePoint(0, -5085.77, 577.231, 86.6719);
- SpeachTimer = 5000; SpeachNum++; break;
- // Reset
- case 31:
- Reset();
- break;
- default: break;
- }
- }else SpeachTimer -= diff;
-}
-}
+ Creature* Lord;
+ Creature* Yarzill;
+
+ void Reset()
+ {
+ if (Lord)
+ {
+ Lord->SetUInt64Value(UNIT_FIELD_TARGET, 0);
+ Lord->SetVisibility(VISIBILITY_OFF);
+ Lord->setDeathState(JUST_DIED);
+ }
+
+ if (Yarzill)
+ {
+ Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, 0);
+ }
+
+ m_creature->Relocate(-5085.77, 577.231, 86.6719, 2.32608);
+ m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 2);
+ m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0);
+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
+ m_player = NULL;
+ PlayerCheck = NULL;
+ PlayerGUID = 0;
+ YazillGUID = 0;
+ Lord = NULL;
+ Yarzill = NULL;
+ DoingSpeach = false;
+ Failed = false;
+ SpeachNum = 0;
+ SpeachTimer = 0;
+ }
+
+ void BeginSpeach(Unit* target)
+ {
+ m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
+ DoSay(OVERLORD_SAY_1,LANG_UNIVERSAL,target);
+ m_player = target;
+ PlayerCheck = NULL;
+ PlayerGUID = target->GetGUID();
+ SpeachTimer = 4200;
+ SpeachNum = 0;
+ DoingSpeach = true;
+ }
+
+ void Aggro(Unit *who){}
+
+ void MoveInLineOfSight(Unit *who)
+ {
+ if (!who)
+ return;
+
+ if (DoingSpeach)
+ {
+ if (who->GetEntry() == 23141 && m_creature->IsWithinDistInMap(who, 15))
+ {
+ if (!YazillGUID)
+ {
+ YazillGUID = who->GetGUID();
+ }
+ }
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ //Speach
+ if (DoingSpeach)
+ {
+ if (SpeachTimer < diff)
+ {
+ if (YazillGUID && !Yarzill)
+ Yarzill = ((Creature*)Unit::GetUnit((*m_creature), YazillGUID));
+
+ if (!m_creature->IsWithinDistInMap(m_player, 50) && ((Player*)m_player)->GetQuestStatus(QUEST_LORD_ILLIDAN_STORMRAGE) == QUEST_STATUS_INCOMPLETE)
+ {
+ ((Player*)m_player)->FailQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
+ SpeachNum = 30;
+ }
+
+ switch (SpeachNum)
+ {
+ // Overlord Movement
+ case 0:
+ m_creature->GetMotionMaster()->MovePoint(0, -5104.41, 595.297, 85.6838);
+ SpeachTimer = 9000; SpeachNum++; break;
+ // Overlord Yell 1
+ case 1:
+ m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_SHOUT);
+ DoYell(OVERLORD_YELL_1,LANG_UNIVERSAL,m_player);
+ SpeachTimer = 4500; SpeachNum++; break;
+ // Overlord Angle
+ case 2:
+ m_creature->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
+ SpeachTimer = 3200; SpeachNum++; break;
+ // Overlord Say 2
+ case 3:
+ DoSay(OVERLORD_SAY_2,LANG_UNIVERSAL,NULL);
+ SpeachTimer = 2000; SpeachNum++; break;
+ // Summon Illidan
+ case 4:
+ Lord = m_creature->SummonCreature(LORD_ILLIDAN_STORMRAGE, -5107.83, 602.584, 85.2393, 4.92598, TEMPSUMMON_CORPSE_DESPAWN, 0);
+ Lord->LoadCreaturesAddon();
+ SpeachTimer = 350; SpeachNum++; break;
+ // Illidan Cast Red Bolt
+ case 5:
+ Lord->CastSpell(Lord, SPELL_ONE, true);
+ Lord->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID());
+ m_creature->SetUInt64Value(UNIT_FIELD_TARGET, Lord->GetGUID());
+ SpeachTimer = 2000; SpeachNum++; break;
+ // Overlord Yell 2
+ case 6:
+ DoYell(OVERLORD_YELL_2,LANG_UNIVERSAL,NULL);
+ SpeachTimer = 4500; SpeachNum++; break;
+ // Overlord Kneel
+ case 7:
+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,8);
+ SpeachTimer = 2500; SpeachNum++; break;
+ // Overlord Say 3
+ case 8:
+ DoSay(OVERLORD_SAY_3,LANG_UNIVERSAL,NULL);
+ SpeachTimer = 6500; SpeachNum++; break;
+ // Illidan Say 1
+ case 9:
+ ((Lord_IllidanAI*)Lord->AI())->DoSpeach(1);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Overlord Say 4
+ case 10:
+ DoSay(OVERLORD_SAY_4,LANG_UNIVERSAL,m_player);
+ SpeachTimer = 6000; SpeachNum++; break;
+ // Illidan Say 2
+ case 11:
+ ((Lord_IllidanAI*)Lord->AI())->DoSpeach(2);
+ SpeachTimer = 5500; SpeachNum++; break;
+ // Illidan Say 3
+ case 12:
+ ((Lord_IllidanAI*)Lord->AI())->DoSpeach(3);
+ SpeachTimer = 4000; SpeachNum++; break;
+ // Illidan Angle
+ case 13:
+ Lord->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
+ SpeachTimer = 1500; SpeachNum++; break;
+ // Illidan Say 4
+ case 14:
+ ((Lord_IllidanAI*)Lord->AI())->DoSpeach(4);
+ SpeachTimer = 1500; SpeachNum++; break;
+ // Illidan Cast
+ case 15:
+ PlayerCheck = Unit::GetUnit(*Lord, PlayerGUID);
+ if (PlayerCheck)
+ {
+ Lord->CastSpell(m_player, SPELL_TWO, true);
+ m_player->RemoveAurasDueToSpell(SPELL_THREE);
+ m_player->RemoveAurasDueToSpell(SPELL_FOUR);
+ SpeachTimer = 5000; SpeachNum++;
+ }
+ else
+ {
+ ((Player*)m_player)->FailQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
+ SpeachTimer = 100; SpeachNum = 30;
+ }
+ break;
+ // Illidan Say 5
+ case 16:
+ ((Lord_IllidanAI*)Lord->AI())->DoSpeach(5);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Illidan Say 6
+ case 17:
+ ((Lord_IllidanAI*)Lord->AI())->DoSpeach(6);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Illidan Say 7
+ case 18:
+ ((Lord_IllidanAI*)Lord->AI())->DoSpeach(7);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Illidan Fly
+ case 19:
+ Lord->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
+ Lord->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
+ SpeachTimer = 500; SpeachNum++; break;
+ // Overlord Say 5
+ case 20:
+ DoSay(OVERLORD_SAY_5,LANG_UNIVERSAL,NULL);
+ SpeachTimer = 500; SpeachNum++; break;
+ // Illidan Despawn
+ case 21:
+ Lord->SetVisibility(VISIBILITY_OFF);
+ Lord->setDeathState(JUST_DIED);
+ Lord = NULL;
+ SpeachTimer = 1000; SpeachNum++; break;
+ // Overlord Stand Up
+ case 22:
+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
+ SpeachTimer = 2000; SpeachNum++; break;
+ // Overlord Angle
+ case 23:
+ m_creature->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Overlord Say 6
+ case 24:
+ DoSay(OVERLORD_SAY_6,LANG_UNIVERSAL,NULL);
+ SpeachTimer = 2000; SpeachNum++; break;
+ // Complete Quest
+ case 25:
+ ((Player*)m_player)->CompleteQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
+ SpeachTimer = 6000; SpeachNum++; break;
+ // Goblin Angle
+ case 26:
+ if (Yarzill)
+ Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
+ SpeachTimer = 500; SpeachNum++; break;
+ // Cast Again Dragonaw Illusion
+ case 27:
+ m_player->RemoveAurasDueToSpell(SPELL_TWO);
+ m_player->RemoveAurasDueToSpell(41519);
+ m_player->CastSpell(m_player, SPELL_THREE, true);
+ m_player->CastSpell(m_player, SPELL_FOUR, true);
+ SpeachTimer = 1000; SpeachNum++; break;
+ // Goblin
+ case 28:
+ if (Yarzill)
+ ((Yarzill_The_MercAI*)Yarzill->AI())->DoSpeach(m_player);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Goblin Off
+ case 29:
+ if (Yarzill)
+ Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, 0);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Overlord Go Back
+ case 30:
+ m_creature->GetMotionMaster()->MovePoint(0, -5085.77, 577.231, 86.6719);
+ SpeachTimer = 5000; SpeachNum++; break;
+ // Reset
+ case 31:
+ Reset();
+ break;
+ default: break;
+ }
+ }else SpeachTimer -= diff;
+ }
+ }
};
CreatureAI* GetAI_Overlord_Morghor(Creature *_Creature)
diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp
index fefc0655383..fc1bca5233f 100644
--- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp
+++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp
@@ -59,6 +59,7 @@ EndScriptData */
#define SPELL_BURN 46394
#define SPELL_STOMP 45185
#define SPELL_BERSERK 26662
+#define SPELL_DUAL_WIELD 42459
struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
{
@@ -75,6 +76,7 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
StompTimer = 30000;
BurnTimer = 60000;
BerserkTimer = 360000;
+ m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
}
void Aggro(Unit *who)
@@ -145,8 +147,8 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
if(BurnTimer < diff)
{
- Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0);
- //DoCast(target,SPELL_BURN);
+ if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ target->CastSpell(target,SPELL_BURN,true);
BurnTimer = 60000;
}
else BurnTimer -= diff;