Пример #1
0
		void UpdateAI(const uint32 uiDiff)
		{
			if (!UpdateVictim())
				return;

			if (m_uiBerserkTimer < uiDiff)
			{
				DoCast(me, SPELL_BERSERK);
				DoScriptText(SAY_BERSERK, me);
				m_uiBerserkTimer = 9999999;
			} else m_uiBerserkTimer -= uiDiff;

			if(Phase == PHASE_LAND || Phase == PHASE_ENRAGE)
			{
				if (m_uiBreathTimer <= uiDiff)
				{
					//DoScriptText(SAY_BREATH, me);
					DoCast(me, RAID_MODE(SPELL_FROST_BREATH_10_NORMAL,SPELL_FROST_BREATH_25_NORMAL));
					m_uiBreathTimer = 15000;
				} else m_uiBreathTimer -= uiDiff;

				if (m_uiCleaveTimer <= uiDiff)
				{
					DoCast(me, SPELL_CLEAVE);
					m_uiCleaveTimer = 10000;
				} else m_uiCleaveTimer -= uiDiff;

				if (m_uiTailSmashTimer <= uiDiff)
				{
					DoCast(me, SPELL_TAIL_SMASH);
					m_uiTailSmashTimer = 8000;
				} else m_uiTailSmashTimer -= uiDiff;

				if (m_uiBlisteringColdTimer <= uiDiff)
				{
					BlisteringCold();
					m_uiBlisteringColdTimer = 35000;
				} else m_uiBlisteringColdTimer -= uiDiff;

				if (m_uiUnchainedMagicTimer <= uiDiff)
				{
					UnchainedMagic();
					m_uiUnchainedMagicTimer = 10000;
				} else m_uiUnchainedMagicTimer -= uiDiff;
			}

			if(Phase == PHASE_LAND)
			{
				if ((m_uiPhaseTimer <= uiDiff) || ((me->GetHealth()*100) / me->GetMaxHealth() == 85))
				{
					Phase = PHASE_FLY;
					m_uiPhaseTimer = 60000;
					TakeOff();
					m_uiMarkTimer = 15000;
				} else m_uiPhaseTimer -= uiDiff;
			}

			if(Phase == PHASE_FLY)
			{
				if (m_uiPhaseTimer <= uiDiff)
				{
					Phase = PHASE_LAND;
					m_uiPhaseTimer = 60000;
					LandDown();
				} else m_uiPhaseTimer -= uiDiff;

				if (m_uiMarkTimer < uiDiff)
				{
					MarkPlayer();
					m_uiMarkTimer = 9999999;
					m_uiIceBoltTriggerTimer = 5000;
				} else m_uiMarkTimer -= uiDiff;

				if (m_uiIceBoltTriggerTimer < uiDiff)
				{
					CastIceBlockTrigger();
					m_uiIceBoltTriggerTimer = 9999999;
					m_uiIceBombTimer = 10000;
				} else m_uiIceBoltTriggerTimer -= uiDiff;

				if (m_uiIceBombTimer <= uiDiff)
				{
					FrostBombTrigger();
					m_uiIceBombTimer = 10000;
				} else m_uiIceBombTimer -= uiDiff;
			}

			if(Phase == PHASE_ENRAGE)
			{
				if (m_uiMysticBuffetTimer <= uiDiff)
				{
					WorkAroundForLoSmkII();
					m_uiMysticBuffetTimer = 10000;
				} else m_uiMysticBuffetTimer -= uiDiff;

				if (m_uiMarkTimer < uiDiff)
				{
					MarkPlayer();
					m_uiMarkTimer = 9999999;
					m_uiIceBoltTriggerTimer = 5000;
				} else m_uiMarkTimer -= uiDiff;

				if (m_uiIceBoltTriggerTimer < uiDiff)
				{
					CastIceBlockTrigger();
					m_uiIceBoltTriggerTimer = 35000;
					m_uiMarkTimer = 30000;
				} else m_uiIceBoltTriggerTimer -= uiDiff;
			}

			if(Phase == PHASE_LAND || Phase == PHASE_FLY)
			{
				if((me->GetHealth()*100) / me->GetMaxHealth() < 35)
				{
					if (Phase == PHASE_FLY) LandDown();
					Phase = PHASE_ENRAGE;
					m_uiMarkTimer = 15000;
					//DoCast(me, SPELL_MYSTIC_BUFFET);
					WorkAroundForLoSmkII();
					DoScriptText(SAY_PHASE_3, me);
				}
			}

			DoMeleeAttackIfReady();
		}
Пример #2
0
    void UpdateAI(const uint32 uiDiff)
    {
		if (!UpdateVictim())
            return;

	if(Phase == PHASE_LAND || Phase == PHASE_ENRAGE)
	{
		if (m_uiBreathTimer <= uiDiff)
        {
			DoCast(me->getVictim(), RAID_MODE(SPELL_FROST_BREATH_10_NORMAL,SPELL_FROST_BREATH_25_NORMAL));
            m_uiBreathTimer = urand(14000,20000);
        } 
		else m_uiBreathTimer -= uiDiff;

		if (m_uiCleaveTimer <= uiDiff)
        {
			DoCast(me->getVictim() , SPELL_CLEAVE);
            m_uiCleaveTimer = urand(10000,11000);
        } 
		else m_uiCleaveTimer -= uiDiff;

		if (m_uiTailSmashTimer <= uiDiff)
        {
			TakeOff();//DoCast(me, SPELL_TAIL_SMASH);
            m_uiTailSmashTimer = 50000;//urand(5000,10000);
        } 
		else m_uiTailSmashTimer -= uiDiff;

		if (m_uiBlisteringColdTimer <= uiDiff)
        {
			BlisteringCold();
            m_uiBlisteringColdTimer = urand(30000,31000);
        } 
		else m_uiBlisteringColdTimer -= uiDiff;
	}

	if(Phase == PHASE_LAND)
	{
	// Todo: Flyphase
	}

	if(Phase == PHASE_FLY)
	{	
		if (m_uiMarkTimer < uiDiff)
		{
			MarkPlayer();
			m_uiMarkTimer = 20000;
			m_uiIceBoltTriggerTimer = 5000;
		}
		else m_uiMarkTimer -= uiDiff;

		if (m_uiIceBoltTriggerTimer < uiDiff)
		{
			CastIceBlockTrigger();
			m_uiIceBoltTriggerTimer = 31000;
		}
		else m_uiIceBoltTriggerTimer -= uiDiff;
	}

	if(Phase == PHASE_ENRAGE)
	{
	// Alle 5 sek Iceblock Count auf ein Random Spieler
	}

	if(Phase == PHASE_LAND || Phase == PHASE_FLY)
    {
        if((me->GetHealth()*100) / me->GetMaxHealth() < 35)
        {
			Phase = PHASE_ENRAGE;
			DoCast(me, SPELL_MYSTIC_BUFFED);
		}
	}

	 DoMeleeAttackIfReady();
    }