void MovementInform(uint32 uiMovementType, uint32 uiData) { if (uiMovementType != POINT_MOTION_TYPE) return; if (uiData == POINT_AIR) { m_uiPhase = PHASE_AIR; int max = m_bIs25Man ? 5 : 2; if (m_bIs25Man && m_bIsHeroic) max = 6; DoMark(max); // set timers m_uiIceTombTimer = 5500; m_uiFrostBombTimer = 12000; m_uiPhaseTimer = 35000; } else if (uiData == POINT_LAND) { m_uiPhase = PHASE_GROUND; SetCombatMovement(true); m_creature->SetLevitate(false); m_creature->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_UNK_2); if (m_creature->getVictim()) m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); } }
void MovementInform(uint32 uiMovementType, uint32 uiData) { if (uiMovementType != POINT_MOTION_TYPE) return; if (uiData == POINT_AGGRO) { if (m_creature->getVictim()) { DoCastSpellIfCan(m_creature, SPELL_FROST_AURA, CAST_TRIGGERED); DoCastSpellIfCan(m_creature, SPELL_PERMEATING_CHILL, CAST_TRIGGERED); SetLevitate(false); m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); m_uiPhase = PHASE_GROUND; } else EnterEvadeMode(); } else if (uiData == POINT_AIR) { m_uiPhase = PHASE_AIR; int max = m_bIs25Man ? 5 : 2; if (m_bIs25Man && m_bIsHeroic) max = 6; DoMark(max); // set timers m_uiIceTombTimer = 5500; m_uiFrostBombTimer = 12000; m_uiPhaseTimer = 35000; } else if (uiData == POINT_LAND) { m_uiPhase = PHASE_GROUND; SetCombatMovement(true); SetLevitate(false); if (m_creature->getVictim()) m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); m_uiPhaseTimer = 110000; } }
void MovementInform(uint32 uiMovementType, uint32 uiPointId) { if (uiMovementType != POINT_MOTION_TYPE) return; if (uiPointId == SINDRAGOSA_POINT_AIR_EAST) { m_creature->GetMotionMaster()->MovePoint(SINDRAGOSA_POINT_AIR_WEST, SindragosaPosition[9][0], SindragosaPosition[9][1], SindragosaPosition[9][2], false); } else if (uiPointId == SINDRAGOSA_POINT_AIR_WEST) { m_creature->GetMotionMaster()->MovePoint(SINDRAGOSA_POINT_AIR_EAST, SindragosaPosition[8][0], SindragosaPosition[8][1], SindragosaPosition[8][2], false); } else if (uiPointId == SINDRAGOSA_POINT_GROUND_CENTER) { // fly up if (m_uiPhase == SINDRAGOSA_PHASE_GROUND) { m_uiPhase = SINDRAGOSA_PHASE_FLYING_TO_AIR; SetLevitate(true); m_creature->GetMotionMaster()->MovePoint(SINDRAGOSA_POINT_AIR_CENTER, SindragosaPosition[1][0], SindragosaPosition[1][1], SindragosaPosition[1][2], false); } else // land and attack { if (m_uiPhase == SINDRAGOSA_PHASE_AGGRO) { DoCastSpellIfCan(m_creature, SPELL_FROST_AURA, CAST_TRIGGERED); DoCastSpellIfCan(m_creature, SPELL_PERMEATING_CHILL, CAST_TRIGGERED); } SetLevitate(false); SetCombatMovement(true); m_creature->GetMotionMaster()->Clear(); m_uiPhase = SINDRAGOSA_PHASE_GROUND; if (Unit *pVictim = m_creature->getVictim()) m_creature->GetMotionMaster()->MoveChase(pVictim); } } else if (uiPointId == SINDRAGOSA_POINT_AIR_PHASE_2) { m_uiPhase = SINDRAGOSA_PHASE_AIR; int max = m_bIs25Man ? 5 : 2; if (m_bIs25Man && m_bIsHeroic) max = 6; DoMark(max); // set timers m_uiIceTombTimer = 5500; m_uiFrostBombTimer = 12000; m_uiPhaseTimer = 35000; } else if (uiPointId == SINDRAGOSA_POINT_AIR_CENTER) { if (m_uiPhase == SINDRAGOSA_PHASE_AGGRO || m_uiPhase == SINDRAGOSA_PHASE_FLYING_TO_GROUND) { // land m_creature->GetMotionMaster()->MovePoint(SINDRAGOSA_POINT_GROUND_CENTER, SindragosaPosition[0][0], SindragosaPosition[0][1], SindragosaPosition[0][2], false); } else if (m_uiPhase == SINDRAGOSA_PHASE_FLYING_TO_AIR) { // fly up (air phase) m_creature->GetMotionMaster()->MovePoint(SINDRAGOSA_POINT_AIR_PHASE_2, SindragosaPosition[2][0], SindragosaPosition[2][1], SindragosaPosition[2][2], false); } } }