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(); }
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(); }