void UpdateAI(uint32 diff) { if (postGossipStep>0 && postGossipStep<4) { if (Text_Timer<diff) { switch (postGossipStep) { case 1: //weegli doesn't fight - he goes & blows up the door if (Creature* pWeegli = instance->instance->GetCreature(instance->GetData64(ENTRY_WEEGLI))) pWeegli->AI()->DoAction(0); Talk(SAY_1); Text_Timer = 5000; break; case 2: Talk(SAY_2); Text_Timer = 5000; break; case 3: me->setFaction(FACTION_HOSTILE); if (Player* target = Player::GetPlayer(*me, PlayerGUID)) AttackStart(target); if (instance) { switchFactionIfAlive(instance, ENTRY_RAVEN); switchFactionIfAlive(instance, ENTRY_ORO); switchFactionIfAlive(instance, ENTRY_MURTA); } } postGossipStep++; } else Text_Timer -= diff; } if (!UpdateVictim()) return; if (ShieldBash_Timer <= diff) { DoCast(me->getVictim(), SPELL_SHIELD_BASH); ShieldBash_Timer = 15000; } else ShieldBash_Timer -= diff; if (Revenge_Timer <= diff) { DoCast(me->getVictim(), SPELL_REVENGE); Revenge_Timer = 10000; } else Revenge_Timer -= diff; DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { if (postGossipStep>0 && postGossipStep<4) { if (Text_Timer<diff) { switch (postGossipStep) { case 1: //weegli doesn't fight - he goes & blows up the door if (Creature* pWeegli = m_creature->GetMap()->GetCreature(pInstance->GetData64(ENTRY_WEEGLI))) m_creature->AI()->SendAIEvent(AI_EVENT_CUSTOM_EVENTAI_A, m_creature, pWeegli); DoScriptText(SAY_1, m_creature); Text_Timer = 5000; break; case 2: DoScriptText(SAY_2, m_creature); Text_Timer = 5000; break; case 3: m_creature->setFaction(FACTION_HOSTILE); Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); m_creature->AI()->AttackStart(target); if (pInstance) { switchFactionIfAlive(pInstance, ENTRY_RAVEN); switchFactionIfAlive(pInstance, ENTRY_ORO); switchFactionIfAlive(pInstance, ENTRY_MURTA); } } postGossipStep++; } else Text_Timer -= diff; } if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; if (ShieldBash_Timer <= diff) { DoCast(m_creature->getVictim(), SPELL_SHIELD_BASH); ShieldBash_Timer = 15000; } else ShieldBash_Timer -= diff; if (Revenge_Timer <= diff) { DoCast(m_creature->getVictim(), SPELL_REVENGE); Revenge_Timer = 10000; } else Revenge_Timer -= diff; DoMeleeAttackIfReady(); }