Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }