void UpdateAI(const uint32 uiDiff) { if(!m_pInstance) return; if (m_pInstance->GetData(TYPE_FALRIC) == SPECIAL) { if(!m_bIsCall) { m_bIsCall = true; Summon(); } } if(m_pInstance->GetData(TYPE_MARWYN) == SPECIAL) { if(m_uiSummonTimer < uiDiff) { ++SummonCount; if(SummonCount == 1) DoScriptText(SAY_MARWYN_INTRO, me); if(SummonCount > 4) { m_pInstance->SetData(TYPE_MARWYN, IN_PROGRESS); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetInCombatWithZone(); } else CallFallSoldier(); m_uiSummonTimer = 60000; } else m_uiSummonTimer -= uiDiff; } if(!UpdateVictim()) return; if(m_uiObliterateTimer < uiDiff) { DoCast(me->getVictim(), Regular ? SPELL_OBLITERATE_N : SPELL_OBLITERATE_H); m_uiObliterateTimer = urand(8000, 12000); } else m_uiObliterateTimer -= uiDiff; if (m_uiWellTimer < uiDiff) { DoScriptText(SAY_MARWYN_SP02, me); if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM)) DoCast(pTarget, SPELL_WELL_OF_CORRUPTION); m_uiWellTimer= urand(25000, 30000); } else m_uiWellTimer -= uiDiff; if (m_uiSharedSufferingTimer < uiDiff) { if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM)) DoCast(pTarget, Regular ? SPELL_SHARED_SUFFERING_N : SPELL_SHARED_SUFFERING_H); m_uiSharedSufferingTimer = urand(15000, 20000); } else m_uiSharedSufferingTimer -= uiDiff; if (m_uiFleshTimer < uiDiff) { DoScriptText(SAY_MARWYN_SP01, me); if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM)) DoCast(pTarget, Regular ? SPELL_CORRUPTED_FLESH_N : SPELL_CORRUPTED_FLESH_H); m_uiFleshTimer = urand(10000, 16000); } else m_uiFleshTimer -= uiDiff; if(m_uiBerserkTimer < uiDiff) { DoCast(me, SPELL_BERSERK); m_uiBerserkTimer = 180000; } else m_uiBerserkTimer -= uiDiff; DoMeleeAttackIfReady(); return; }
void UpdateAI(const uint32 uiDiff) { if(!m_pInstance) return; if (m_pInstance->GetData(DATA_FALRIC_EVENT) == SPECIAL) { if(!m_bIsCall) { m_bIsCall = true; Summon(); } if (m_uiSummonTimer < uiDiff) { ++SummonCount; AddWave(); if(SummonCount > 4) { m_pInstance->SetData(DATA_FALRIC_EVENT, IN_PROGRESS); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->SetInCombatWithZone(); } else CallFallSoldier(); m_uiSummonTimer = 60000; } else m_uiSummonTimer -= uiDiff; } if (!UpdateVictim()) return; if(m_uiStrikeTimer < uiDiff) { DoCast(me->getVictim(), Regular ? SPELL_QUIVERING_STRIKE_N : SPELL_QUIVERING_STRIKE_H); m_uiStrikeTimer = (urand(7000, 14000)); } else m_uiStrikeTimer -= uiDiff; if(m_uiHorrorTimer < uiDiff) { DoScriptText(SAY_FALRIC_SP01, me); if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM)) DoCast(pTarget, SPELL_IMPENDING_DESPAIR); m_uiHorrorTimer = (urand(15000, 25000)); } else m_uiHorrorTimer -= uiDiff; if(m_uiGrowlTimer < uiDiff) { DoScriptText(SAY_FALRIC_SP02, me); DoCast(me->getVictim(), Regular ? SPELL_DEFILING_HORROR_N : SPELL_DEFILING_HORROR_H); m_uiGrowlTimer = (urand(25000, 30000)); } else m_uiGrowlTimer -= uiDiff; if (m_uiBerserkTimer < uiDiff) { DoCast(me, SPELL_BERSERK); m_uiBerserkTimer = 180000; } else m_uiBerserkTimer -= uiDiff; DoMeleeAttackIfReady(); return; }