diff options
Diffstat (limited to 'src/bindings/scripts')
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; |
