FelmystAI(Creature* pCreature) : ArcScriptBossAI(pCreature) { //Phase 1 spells AddPhaseSpell(1, AddSpell(FELMYST_CLEAVE, Target_Current, 6, 0, 10, 0, 5)); AddPhaseSpell(1, AddSpell(FELMYST_GAS_NOVA, Target_Self, 25, 1, 18)); AddPhaseSpell(1, AddSpell(FELMYST_ENCAPSULATE, Target_RandomPlayer, 25, 7, 30, 0, 30)); AddPhaseSpell(1, AddSpell(FELMYST_CORROSION, Target_Current, 20, 0.75f, 35, 0, 30, false, "Choke on your final breath!")); //Phase 2 spells AddPhaseSpell(2, AddSpell(FELMYST_DEMONIC_VAPOR, Target_RandomPlayer, 10, 0, 20)); //Phase 3 spells //Fog of corruption is the actual breath Felmyst does during his second phase, probably we'll have to spawn it like a creature. //AddSpell(FELMYST_FOG_OF_CORRUPTION, Target_RandomPlayerApplyAura, 15, 0, 20, 0, 10); Does not support by the core. //10min Enrage SetEnrageInfo(AddSpell(FELMYST_ENRAGE, Target_Self, 0, 0, 0, 0, 0, false, "No more hesitation! Your fates are written!"), 600000); //Emotes AddEmote(Event_OnCombatStart, "Glory to Kil'jaeden! Death to all who oppose!", Text_Yell); AddEmote(Event_OnTargetDied, "I kill for the master! ", Text_Yell); AddEmote(Event_OnTargetDied, "The end has come!", Text_Yell); AddEmote(Event_OnDied, "Kil'jaeden... will... prevail...", Text_Yell); AddEmote(Event_OnTaunt, "I am stronger than ever before!", Text_Yell); }
VexallusAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { AddPhaseSpell(1, AddSpell(VEXALLUS_CHAIN_LIGHTNING, Target_Current, 19, 0, 8, 0, 0)); AddPhaseSpell(1, AddSpell(VEXALLUS_ARCANE_SHOCK, Target_ClosestPlayer, 12, 0, 20, 0, 0, true, "Un...con...tainable.", Text_Yell, 12392)); AddPhaseSpell(2, AddSpell(VEXALLUS_OVERLOAD, Target_Self, 85, 0, 3, 0, 0)); mPureEnergy = AddSpell(VEXALLUS_SUMMON_PURE_ENERGY, Target_Self, 85, 0, 3); mSummon = 0; }
void phaseTester() { _unit->Root(); GetAllowMelee(); SetBehavior(Behavior_Spell); if ((HandOfTheDeceiver1 && HandOfTheDeceiver2 && HandOfTheDeceiver3) && (HandOfTheDeceiver1->isDead() && HandOfTheDeceiver2->isDead() && HandOfTheDeceiver3->isDead()) && (GetPhase() != 1) && (GetPhase() != 2) && (starter == 0)) { _unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, SAY_KJ_EMERGE); _unit->PlaySoundToSet(SOUND_KJ_EMERGE); RemoveAura(42866); _unit->m_invisible = false; starter = 1; } switch(GetPhase()) { case 1: { if(GetHealthPercent()<=85 && phase == 2) { _unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, SAY_KJ_PHASE3); _unit->PlaySoundToSet(SOUND_KJ_PHASE3); AddPhaseSpell(1, AddSpell(SPELL_SINISTER_REFLECTION, Target_RandomPlayer, 10, 1.5f, 4, 0, 35)); AddPhaseSpell(1, AddSpell(SPELL_SHADOW_SPIKE, Target_RandomDestination, 10, 2.0f, 6, 0, 35)); AddPhaseSpell(1, AddSpell(SPELL_FLAME_DART, Target_RandomPlayer, 10, 1.3f, 4, 0, 35)); ShieldOrb2 = _unit->GetMapMgr()->GetInterface()->SpawnCreature(CN_SHIELD_ORB, 1712.00f, 604.00f, 48.00f, 0.00f, true, true, 0, 0); phase++; } if(GetHealthPercent()<=55 && phase == 3) { _unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, SAY_KJ_PHASE4); _unit->PlaySoundToSet(SOUND_KJ_PHASE4); ShieldOrb3 = _unit->GetMapMgr()->GetInterface()->SpawnCreature(CN_SHIELD_ORB, 1684.00f, 651.00f, 48.00f, 0.00f, true, true, 0, 0); dtimmer = 0; phase++; } if(GetHealthPercent()<=25 && phase == 4 && (dtimmer > 54 || dtimmer == 0)) { _unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, SAY_KJ_PHASE5); _unit->PlaySoundToSet(SOUND_KJ_PHASE5); ShieldOrb4 = _unit->GetMapMgr()->GetInterface()->SpawnCreature(CN_SHIELD_ORB, 1720.00f, 642.00f, 48.00f, 0.00f, true, true, 0, 0); CastSpellOnTarget(_unit, Target_Self, dbcSpell.LookupEntry(SPELL_SACRIFICE_OF_ANVEENA), true); dtimmer = 0; phase++; } }break; } }
KaelThasMTAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { //AddPhaseSpell(1, AddSpell(FELMYST_CLEAVE, Target_Current, 6, 0, 10, 0, 5)); AddPhaseSpell(1, AddSpell(KAELTHAS_FIREBALL, Target_RandomPlayer, 40, 2, 6, 0, 40)); }
KaelThasMTAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { AddPhaseSpell(1, AddSpell(SPELL_FIREBALL_NORMAL, Target_RandomPlayer, 40, 2, 6, 0, 40)); Phases = 3; }
GolemaggAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { CoreRager1 = CoreRager2 = NULL; GolemaggTrust = AddSpell(GOLEMAGG_TRUST, Target_Self, 8, 0, 3); AddSpell(GOLEMAGG_MAGMA_SPLASH, Target_Self, 15, 0, 0); AddSpell(GOLEMAGG_PYROBLAST, Target_RandomPlayer, 10, 0, 8, 0, 40); AddPhaseSpell(2, AddSpell(GOLEMAGG_EARTHQUAKE, Target_Self, 10, 0, 0)); }
HighKingMaulgarAI(Creature* pCreature) : ArcTicScriptBossAI(pCreature) { AddPhaseSpell(2, AddSpell(HIGH_KING_MAULGAR_BERSERKER_CHARGE, Target_RandomPlayer, 10, 0, 25, 0, 40)); AddPhaseSpell(2, AddSpell(HIGH_KING_MAULGAR_INTIMIDATING_ROAR, Target_Current, 7, 0, 20, 0, 5)); AddSpell(HIGH_KING_MAULGAR_ARCING_SMASH, Target_Current, 8, 0, 15, 0, 10); AddSpell(HIGH_KING_MAULGAR_WHIRLWIND, Target_Self, 7, 15, 25); // SpellFunc for range check? AddSpell(HIGH_KING_MAULGAR_MIGHTY_BLOW, Target_Current, 7, 0, 20, 0, 5); mEnrage = AddSpellFunc(&SpellFunc_Maulgar_Enrage, Target_Self, 0, 0, 0); mEnrage->AddEmote("You will not defeat the hand of Gruul!", Text_Yell, 11368); AddEmote(Event_OnCombatStart, "Gronn are the real power in Outland!", Text_Yell, 11367); AddEmote(Event_OnTargetDied, "You not so tough after all!", Text_Yell, 11373); AddEmote(Event_OnTargetDied, "Maulgar is king!", Text_Yell, 11375); AddEmote(Event_OnTargetDied, "", Text_Emote, 11374); AddEmote(Event_OnDied, "Grull... will crush you!", Text_Yell, 11376); mLastYell = -1; mAliveAdds = 0; }
KilJaedenAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { SetCanEnterCombat( false ); DelayNextAttack( 11600 ); SetAllowMelee( false ); SetAllowSpell( false ); SetAllowTargeting( false ); SetCanMove( false ); TriggerCooldownOnAllSpells(); SetCanMove( false ); Emote( "The expendible have perished... So be it! Now I shall succeed where Sargeras could not! I will bleed this wretched world and secure my place as the true master of the Burning Legion. The end has come! Let the unraveling of this world commence!", Text_Yell, 12500 ); mStarted = false; RegisterAIUpdateEvent( 100 ); pKJDummy = static_cast<KJDummyAI*>( GetNearestCreature( CN_KIL_JADEN_DUMMY ) ); if( pKJDummy ) pKJDummy->AddEncounterCreature( _unit ); AddPhaseSpell( 1, AddSpell( SOUL_FLAY, Target_Current, 50, 0, 6 ) ); AddPhaseSpell( 1, AddSpell( LEGION_LIGHTNING, Target_RandomPlayer, 25, 2.0f, 8 ) ); AddPhaseSpell( 1, AddSpell( FIRE_BLOOM, Target_RandomPlayer, 20, 0, 10 ) ); };
IngvarAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { // Phase 1 AddPhaseSpell(1, AddSpell(INGVAR_CLEAVE, Target_Current, 24, 0, 6 )); AddPhaseSpell(1, AddSpell(INGVAR_ENRAGE, Target_Self, 45, 0, 6 )); AddPhaseSpell(1, AddSpell(INGVAR_SMASH, Target_Self, 12, 3, 16 )); AddPhaseSpell(1, AddSpell(INGVAR_ROAR, Target_Self, 25, 2, 10 )); //Phase 2 AddPhaseSpell(2, AddSpell(INGVAR_DARK_SMASH, Target_Self, 12, 3, 16 )); AddPhaseSpell(2, AddSpell(INGVAR_DREADFUL_ROAR, Target_Self, 25, 2, 10 )); AddPhaseSpell(2, AddSpell(INGVAR_WOE_STRIKE, Target_ClosestUnit, 18, 0, 16 )); //AddPhaseSpell(2, AddSpell(INGVAR_SHADOW_AXE)); AddEmote(Event_OnTargetDied, "Mjul orm agn gjor!", Text_Yell, 13212); }
HalazziAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { AddPhaseSpell(1, AddSpell(HALAZZI_SABER_LASH, Target_Destination, 0.5, 0, 0, 0, 0, false, "Me gonna carve ya now!", Text_Yell, 12023)); AddPhaseSpell(2, AddSpell(HALAZZI_FLAME_SHOCK, Target_Current, 12, 0, 0)); AddPhaseSpell(2, AddSpell(HALAZZI_EARTH_SHOCK, Target_Current, 12, 0, 0)); AddPhaseSpell(3, AddSpell(HALAZZI_SABER_LASH, Target_Destination, 0.5, 0, 0, 0, 0, false, "You gonna leave in pieces!", Text_Yell, 12024)); AddPhaseSpell(3, AddSpell(HALAZZI_FLAME_SHOCK, Target_Current, 18, 0, 0)); AddPhaseSpell(3, AddSpell(HALAZZI_EARTH_SHOCK, Target_Current, 18, 0, 0)); AddPhaseSpell(3, AddSpell(HALAZZI_ENRAGE, Target_Self, 100, 0, 60)); // Transfigure: 4k aoe damage Transfigure = AddSpell(44054, Target_Self, 0, 0, 0, 0, 0, false, "I fight wit' untamed spirit...", Text_Yell, 12021); AddEmote(Event_OnCombatStart, "Get on your knees and bow to da fang and claw!", Text_Yell, 12020); AddEmote(Event_OnTargetDied, "You cant fight da power...", Text_Yell, 12026); AddEmote(Event_OnTargetDied, "You all gonna fail...", Text_Yell, 12027); AddEmote(Event_OnDied, "Chaga... choka'jinn.", Text_Yell, 12028); mLynx = NULL; }
NalorakkAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { AddPhaseSpell(1, AddSpell(NALORAKK_BRUTAL_SWIPE, Target_Current, 2, 0, 35)); AddPhaseSpell(1, AddSpell(NALORAKK_MANGLE, Target_Current, 12, 0, 20)); AddPhaseSpell(1, AddSpell(NALORAKK_SURGE, Target_RandomPlayer, 8, 0, 20, 0.0f, 45.0f, true, "I bring da pain!", Text_Yell, 12071)); AddPhaseSpell(2, AddSpell(NALORAKK_LACERATING_SLASH, Target_Current, 12, 0, 20)); AddPhaseSpell(2, AddSpell(NALORAKK_REND_FLESH, Target_Current, 12, 0, 12)); AddPhaseSpell(2, AddSpell(NALORAKK_DEAFENING_ROAR, Target_RandomPlayer, 11, 0, 12)); SetEnrageInfo(AddSpell(NALORAKK_BERSERK, Target_Self, 0, 0, 600, 0, 0, false, "You had your chance, now it be too late!", Text_Yell, 12074), 600000); AddEmote(Event_OnCombatStart, "You be dead soon enough!", Text_Yell, 12070); AddEmote(Event_OnTargetDied, "Da Amani gonna rule again!", Text_Yell, 12076); AddEmote(Event_OnTargetDied, "Now whatchoo got to say?", Text_Yell, 12075); AddEmote(Event_OnDied, "I... be waitin' on da udda side....", Text_Yell, 12077); // Bear Form Morph = AddSpell(42377, Target_Self, 0, 0, 0, 0, 0, false, "You call on da beast, you gonna get more dan you bargain for!", Text_Yell, 12072); }
GeneralBjarngrimAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { mInstance = GetInstanceScript(); // Battle Stance AddPhaseSpell(1, AddSpell( SPELL_MORTAL_STRIKE, Target_Current, 25, 0, 5)); AddPhaseSpell(1, AddSpell( SPELL_WHIRLWIND, Target_Self, 90, 8, 30)); // Berserker Stance AddPhaseSpell(2, AddSpell( SPELL_CLEAVE, Target_Current, 30, 0, 5 )); // Defensive Stance AddPhaseSpell(3, AddSpell( SPELL_SPELL_REFLECTION, Target_Self, 20, 0, 10)); AddPhaseSpell(3, AddSpell( SPELL_INTERCEPT, Target_RandomPlayerNotCurrent, 40, 0, 6)); AddPhaseSpell(3, AddSpell( SPELL_PUMMEL, Target_Current, 40, 0, 5)); AddEmote(Event_OnCombatStart, "I am the greatest of my father's sons! Your end has come!", Text_Yell, 14149); AddEmote(Event_OnTargetDied, "So ends your curse!", Text_Yell, 14153); AddEmote(Event_OnTargetDied, "Flesh... is... weak!", Text_Yell, 14154); AddEmote(Event_OnDied, "How can it be...? Flesh is not... stronger!", Text_Yell, 14156); mStanceTimer = INVALIDATE_TIMER; };
KilJaedenAI(Creature* pCreature) : ArcScriptBossAI(pCreature) { AddPhaseSpell(1, AddSpell(SPELL_LEGION_LIGHTNING, Target_RandomPlayer, 20, 2, 3, 0, 50)); AddPhaseSpell(1, AddSpell(SPELL_SOUL_FLAY_DAMAGE, Target_RandomPlayer, 20, 2.5, 3, 0, 50)); AddPhaseSpell(1, AddSpell(SPELL_FIRE_BLOOM, Target_RandomPlayer, 20, 1, 15, 0, 20)); }
void AIUpdate() { if ((HandOfTheDeceiver1 && HandOfTheDeceiver2 && HandOfTheDeceiver3 && HandOfTheDeceiver4) && (HandOfTheDeceiver1->isDead() || HandOfTheDeceiver2->isDead() || HandOfTheDeceiver3->isDead() || HandOfTheDeceiver4->isDead()) && (GetPhase() != 1)) { RemoveAura(46410); } if ((HandOfTheDeceiver1 && HandOfTheDeceiver2 && HandOfTheDeceiver3 && HandOfTheDeceiver4) && (HandOfTheDeceiver1->isDead() && HandOfTheDeceiver2->isDead() && HandOfTheDeceiver3->isDead() && HandOfTheDeceiver4->isDead()) && (GetPhase() != 1) && (GetPhase() != 2)) { SetPhase(1); _unit->SetUInt64Value(UNIT_FIELD_FLAGS, ( true ) ? 0 : UNIT_FLAG_NOT_ATTACKABLE_9); _unit->GetAIInterface()->SetAllowedToEnterCombat(true); RemoveAura(46367); ShieldOrb1 = _unit->GetMapMgr()->GetInterface()->SpawnGameObject(CN_SHIELD_ORB, 1678.00f, 610.00f, 28.00f, 0.00f, false, 0, 0); } if (ShieldOrb1) { //ShieldOrb1->CastSpell(ShShadowbolt); } if (ShieldOrb2) { //ShieldOrb2->CastSpell(ShShadowbolt); } if (ShieldOrb3) { //ShieldOrb3->CastSpell(ShShadowbolt); } if (ShieldOrb4) { //ShieldOrb4->CastSpell(ShShadowbolt); } switch (dtimmer) { case 100: { dtimmer++; if (GetHealthPercent()<=85) { SetPhase(2); SetAllowMelee(false); SetCanMove(false); _unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, "Kil'jaeden begins to channel dark energy"); } }break; case 120: { dtimmer++; if (GetPhase() == 2) CastSpellOnTarget(_unit, Target_RandomPlayer, Darkness_explosion, true); //CastSpellOnTarget(_unit, Target_RandomPlayer, Darkness, true); //this is the correct, but the dragon doesn't work. SetAllowMelee(false); SetCanMove(false); }break; case 128: { SetPhase(1); SetAllowMelee(false); SetCanMove(false); dtimmer = 1; }break; default: { SetCanMove(false); SetAllowMelee(false); dtimmer++; }break; } switch(GetPhase()) { case 1: { if(GetHealthPercent()<=85) { AddPhaseSpell(1, AddSpell(SINISTER_REFLECTION, Target_RandomPlayer, 10, 1.5f, 4, 0, 35)); AddPhaseSpell(1, AddSpell(SHADOW_SPIKE, Target_RandomDestination, 10, 2.0f, 6, 0, 35)); AddPhaseSpell(1, AddSpell(FLAME_DART_EXPLOSION, Target_RandomPlayer, 10, 1.3f, 4, 0, 35)); ShieldOrb1 = _unit->GetMapMgr()->GetInterface()->SpawnGameObject(CN_SHIELD_ORB, 1678.00f, 610.00f, 28.00f, -1.72788f, false, 0, 0); } if(GetHealthPercent()<=55) { ShieldOrb1 = _unit->GetMapMgr()->GetInterface()->SpawnGameObject(CN_SHIELD_ORB, 1684.00f, 651.00f, 28.00f, 0.00f, false, 0, 0); } if(GetHealthPercent()<=25) { //Armageddon ShieldOrb1 = _unit->GetMapMgr()->GetInterface()->SpawnGameObject(CN_SHIELD_ORB, 1720.00f, 642.00f, 28.00f, 0.00f, false, 0, 0); AddPhaseSpell(1, AddSpell(SACRIFICE_OF_ANVEENA, Target_RandomPlayer, 50, 0.5f, 10, 0, 35)); } }break; } ParentClass::AIUpdate(); }
KilJaedenAI(Creature* pCreature) : ArcTicScriptBossAI(pCreature) { AddPhaseSpell(1, AddSpell(LEGION_LIGHTNING, Target_RandomPlayer, 10, 1.5f, 2, 0, 35)); AddPhaseSpell(1, AddSpell(SOUL_FLAY, Target_RandomPlayer, 10, 0, 0, 0, 35)); AddPhaseSpell(1, AddSpell(FIRE_BLOOM, Target_RandomPlayer, 10, 1, 0, 0, 100)); }