void EnterCombat(Unit *who) { if (!pInstance) { ERROR_INST_DATA(m_creature); return; } }
void EnterCombat(Unit * /*who*/) { if (!pInstance) { ERROR_INST_DATA(me); return; } }
void JustDied(Unit* /*Killer*/) { if (pInstance) { uint64 TerestianGUID = pInstance->GetData64(DATA_TERESTIAN); if (TerestianGUID) { Unit* Terestian = Unit::GetUnit((*me), TerestianGUID); if (Terestian && Terestian->isAlive()) DoCast(Terestian, SPELL_BROKEN_PACT, true); } } else ERROR_INST_DATA(me); }
void Aggro(Unit* pWho) { if (!m_pInstance) { ERROR_INST_DATA(m_creature); return; } Creature* pTerestian = ((Creature*)Unit::GetUnit(*m_creature, m_pInstance->GetData64(DATA_TERESTIAN))); if (pTerestian && (!pTerestian->SelectHostileTarget() && !pTerestian->getVictim())) pTerestian->AddThreat(pWho); }
void Aggro(Unit *who) { if(!pInstance) { ERROR_INST_DATA(m_creature); return; } Creature* Terestian = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_TERESTIAN))); if(Terestian && (!Terestian->SelectHostilTarget() && !Terestian->getVictim())) Terestian->AddThreat(who, 1.0f); }
void EnterCombat(Unit *who) { if (!pInstance) { ERROR_INST_DATA(m_creature); return; } Creature* Terestian = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_TERESTIAN))); if (Terestian && !Terestian->getVictim()) Terestian->AddThreat(who, 1.0f); }
void Aggro(Unit* pWho) { if (Pet* pKilrek = m_creature->GetPet()) pKilrek->SetInCombatWithZone(); DoScriptText(SAY_AGGRO, m_creature); if (m_pInstance) m_pInstance->SetData(TYPE_TERESTIAN, IN_PROGRESS); else ERROR_INST_DATA(m_creature); }
void EnterCombat(Unit* who) { DoScriptText(SAY_AGGRO, me); if(pInstance) { // Put Kil'rek in combat against our target so players don't skip him Creature* Kilrek = (Unit::GetCreature(*me, pInstance->GetData64(DATA_KILREK))); if(Kilrek && !Kilrek->getVictim()) Kilrek->AddThreat(who, 1.0f); pInstance->SetData(DATA_TERESTIAN, IN_PROGRESS); }else ERROR_INST_DATA(me); }
void JustDied(Unit* pKiller) { if (m_pInstance) { uint64 m_uiTerestianGUID = m_pInstance->GetData64(DATA_TERESTIAN); if (m_uiTerestianGUID) { Unit* pTerestian = Unit::GetUnit((*m_creature), m_uiTerestianGUID); if (pTerestian && pTerestian->isAlive()) DoCast(pTerestian, SPELL_BROKEN_PACT, true); } } else ERROR_INST_DATA(m_creature); }
void JustDied(Unit* /*Killer*/) { me->TextEmote(EMOTE_KILREK_DIE, false); if (pInstance) { uint64 TerestianGUID = pInstance->GetData64(DATA_TERESTIAN); if (TerestianGUID) { Unit* Terestian = Unit::GetUnit((*me), TerestianGUID); if (Terestian && Terestian->IsAlive()) DoCast(Terestian, SPELL_BROKEN_PACT, true); /*Resummon Kil'rek*/ if (Creature* Terestian = me->FindNearestCreature(15688, 100.0f, true)) { CAST_AI(boss_terestianAI, Terestian->AI())->ReSummonKilrek_Timer = 30000; CAST_AI(boss_terestianAI, Terestian->AI())->SummonedKilrek = true; CAST_AI(boss_terestianAI, Terestian->AI())->ReSummonedKilrek = false; } } } else ERROR_INST_DATA(me); }
void UpdateAI(const uint32 diff) { if(!UpdateVictim()) return; if(CheckKilrekTimer < diff) { CheckKilrekTimer = 5000; if(pInstance) uint64 KilrekGUID = pInstance->GetData64(DATA_KILREK); else ERROR_INST_DATA(me); Creature* Kilrek = (Unit::GetCreature(*me, pInstance->GetData64(DATA_KILREK))); if(SummonKilrek && Kilrek) { Kilrek->Respawn(); if(Kilrek->AI()) { Kilrek->AI()->AttackStart(me->getVictim()); me->RemoveAurasDueToSpell(SPELL_BROKEN_PACT); } else DoCast(me, SPELL_SUMMON_IMP, true); } if(!Kilrek || !Kilrek->isDead()) { DoCast(me, SPELL_SUMMON_IMP, true); CheckKilrekTimer = 40000; } }else CheckKilrekTimer -= diff; if(SacrificeTimer < diff) { Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1); if (target && target->isAlive()) { DoCast(target, SPELL_SACRIFICE, true); Creature* Chains = me->SummonCreature(CREATURE_DEMONCHAINS, -11234.077148, -1698.314209, 179.237320, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 21000); if(Chains) { CAST_AI(mob_demon_chainAI, Chains->AI())->SacrificeGUID = target->GetGUID(); Chains->CastSpell(Chains, SPELL_DEMON_CHAINS, true); DoScriptText(RAND(SAY_SACRIFICE1,SAY_SACRIFICE2), me); SacrificeTimer = 30000; } } }else SacrificeTimer -= diff; if(ShadowboltTimer < diff) { DoCast(SelectUnit(SELECT_TARGET_TOPAGGRO, 0), SPELL_SHADOW_BOLT); ShadowboltTimer = 10000; }else ShadowboltTimer -= diff; if(SummonTimer < diff) { if(!SummonedPortals) { for(uint8 i = 0; i < 2; ++i) { Creature* Portal = me->SummonCreature(CREATURE_PORTAL, PortalLocations[i][0], PortalLocations[i][1], PORTAL_Z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); if(Portal) PortalGUID[i] = Portal->GetGUID(); } SummonedPortals = true; switch(rand()%2) { case 0: DoScriptText(SAY_SUMMON1, me); break; case 1: DoScriptText(SAY_SUMMON2, me); break; } } uint32 random = rand()%2; Creature* Imp = me->SummonCreature(CREATURE_FIENDISHIMP, PortalLocations[random][0], PortalLocations[random][1], PORTAL_Z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 15000); if(Imp) { Imp->AddThreat(me->getVictim(), 1.0f); Imp->AI()->AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 1)); } SummonTimer = 5000; }else SummonTimer -= diff; if(!Berserk) { if(BerserkTimer < diff) { DoCast(me, SPELL_BERSERK); Berserk = true; }else BerserkTimer -= diff; } DoMeleeAttackIfReady(); }