void Aggro(Unit* pWho) override { if (Creature* pPrecious = m_creature->GetMap()->GetCreature(m_preciousGuid)) { if (pPrecious->isAlive()) { if (pWho) pPrecious->AI()->AttackStart(pWho); } } if (pWho->getClass() == CLASS_HUNTER && (m_hunterGuid.IsEmpty() || m_hunterGuid == pWho->GetObjectGuid())) { m_hunterGuid = pWho->GetObjectGuid(); } else DemonDespawn(); }
void Aggro(Unit* pWho) { if (Creature* pPrecious = m_creature->GetMap()->GetCreature(m_preciousGuid)) { if (pPrecious->isAlive()) { if (pWho) pPrecious->AI()->AttackStart(pWho); } } if (pWho->getClass() == CLASS_HUNTER && (m_hunterGuid.IsEmpty() || m_hunterGuid == pWho->GetObjectGuid())/*&& pWho->GetQuestStatus(QUEST_STAVE_OF_THE_ANCIENTS) == QUEST_STATUS_INCOMPLETE*/) { m_hunterGuid = pWho->GetObjectGuid(); } else DemonDespawn(); }
void UpdateAI(const uint32 uiDiff) override { if (m_uiDespawn_Timer < uiDiff) { if (m_creature->isAlive() && !m_creature->isInCombat()) DemonDespawn(false); } else m_uiDespawn_Timer -= uiDiff; if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) { if (m_uiSplitCheck_Timer < uiDiff) { m_uiSplitCheck_Timer = 2500; if (Creature* pPrecious = m_creature->GetMap()->GetCreature(m_preciousGuid)) { if (pPrecious->isInCombat()) pPrecious->AI()->EnterEvadeMode(); } } else m_uiSplitCheck_Timer -= uiDiff; return; } if (m_creature->getThreatManager().getThreatList().size() > 1) { DemonDespawn(); } if (m_uiThreatCheck_Timer < uiDiff) { m_uiThreatCheck_Timer = 2000; if (Creature* pPrecious = m_creature->GetMap()->GetCreature(m_preciousGuid)) { if (pPrecious->getThreatManager().getThreatList().size() > 1) DemonDespawn(); } } else m_uiThreatCheck_Timer -= uiDiff; if (m_uiTemptressKiss_Timer < uiDiff) { if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_TEMPTRESS_KISS) == CAST_OK) m_uiTemptressKiss_Timer = 45000; } else m_uiTemptressKiss_Timer -= uiDiff; if (m_uiLightingBolt_Timer < uiDiff) { if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_CHAIN_LIGHTNING) == CAST_OK) m_uiLightingBolt_Timer = urand(8000, 12000); } else m_uiLightingBolt_Timer -= uiDiff; DoMeleeAttackIfReady(); }