void AggressorAI::EnterEvadeMode() { if (!m_creature->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, he is dead [guid=%u]", m_creature->GetGUIDLow()); i_victimGuid.Clear(); m_creature->CombatStop(true); m_creature->DeleteThreatList(); return; } Unit* victim = m_creature->GetMap()->GetUnit(i_victimGuid); if (!victim) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, no victim [guid=%u]", m_creature->GetGUIDLow()); } else if (!victim->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is dead [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->HasStealthAura()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in stealth [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->IsTaxiFlying()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in flight [guid=%u]", m_creature->GetGUIDLow()); } else { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim out run him [guid=%u]", m_creature->GetGUIDLow()); // i_state = STATE_LOOK_AT_VICTIM; // i_tracker.Reset(TIME_INTERVAL_LOOK); } if (!m_creature->isCharmed()) { m_creature->RemoveAllAurasOnEvade(); // Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if (m_creature->IsInUnitState(UNIT_ACTION_CHASE)) m_creature->GetUnitStateMgr().DropAction(UNIT_ACTION_CHASE); if (!m_creature->GetVehicle()) m_creature->GetMotionMaster()->MoveTargetedHome(); } m_creature->DeleteThreatList(); i_victimGuid.Clear(); m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); }
void AggressorAI::EnterEvadeMode() { if( !i_creature.isAlive() ) { DEBUG_LOG("Creature stopped attacking cuz his dead [guid=%u]", i_creature.GetGUIDLow()); i_victimGuid = 0; i_creature.CombatStop(); i_creature.DeleteThreatList(); return; } Unit* victim = ObjectAccessor::GetUnit(i_creature, i_victimGuid ); if( !victim ) { DEBUG_LOG("Creature stopped attacking because victim is non exist [guid=%u]", i_creature.GetGUIDLow()); } else if( !victim->isAlive() ) { DEBUG_LOG("Creature stopped attacking cuz his victim is dead [guid=%u]", i_creature.GetGUIDLow()); } else if( victim->HasStealthAura() ) { DEBUG_LOG("Creature stopped attacking cuz his victim is stealth [guid=%u]", i_creature.GetGUIDLow()); } else if( victim->isInFlight() ) { DEBUG_LOG("Creature stopped attacking cuz his victim is fly away [guid=%u]", i_creature.GetGUIDLow()); } else { DEBUG_LOG("Creature stopped attacking due to target out run him [guid=%u]", i_creature.GetGUIDLow()); //i_state = STATE_LOOK_AT_VICTIM; //i_tracker.Reset(TIME_INTERVAL_LOOK); } if(!i_creature.GetCharmerOrOwner()) { i_creature.RemoveAllAuras(); // Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if( i_creature.GetMotionMaster()->GetCurrentMovementGeneratorType() == TARGETED_MOTION_TYPE ) i_creature.GetMotionMaster()->MoveTargetedHome(); } else if (i_creature.GetOwner() && i_creature.GetOwner()->isAlive()) i_creature.GetMotionMaster()->MoveFollow(i_creature.GetOwner(),PET_FOLLOW_DIST,PET_FOLLOW_ANGLE); i_creature.DeleteThreatList(); i_victimGuid = 0; i_creature.CombatStop(); i_creature.SetLootRecipient(NULL); }
void AggressorAI::EnterEvadeMode() { if( !m_creature->isAlive() ) { DEBUG_LOG("Creature stopped attacking, he is dead [guid=%u]", m_creature->GetGUIDLow()); i_victimGuid = 0; m_creature->CombatStop(true); m_creature->DeleteThreatList(); return; } Unit* victim = ObjectAccessor::GetUnit(*m_creature, i_victimGuid ); if( !victim ) { DEBUG_LOG("Creature stopped attacking, no victim [guid=%u]", m_creature->GetGUIDLow()); } else if( !victim->isAlive() ) { DEBUG_LOG("Creature stopped attacking, victim is dead [guid=%u]", m_creature->GetGUIDLow()); } else if( victim->HasStealthAura() ) { DEBUG_LOG("Creature stopped attacking, victim is in stealth [guid=%u]", m_creature->GetGUIDLow()); } else if( victim->isInFlight() ) { DEBUG_LOG("Creature stopped attacking, victim is in flight [guid=%u]", m_creature->GetGUIDLow()); } else { DEBUG_LOG("Creature stopped attacking, victim out run him [guid=%u]", m_creature->GetGUIDLow()); //i_state = STATE_LOOK_AT_VICTIM; //i_tracker.Reset(TIME_INTERVAL_LOOK); } if(!m_creature->isCharmed() && !m_creature->GetVehicleGUID()) { m_creature->RemoveAllAuras(); // Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if( m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == TARGETED_MOTION_TYPE ) m_creature->GetMotionMaster()->MoveTargetedHome(); } m_creature->DeleteThreatList(); i_victimGuid = 0; m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); m_creature->ResetObtainedDamage(); }
void GuardAI::EnterEvadeMode() { if (!me->isAlive()) { sLog->outStaticDebug( "Creature stopped attacking because he is dead [guid=%u]", me->GetGUIDLow()); me->GetMotionMaster()->MoveIdle(); i_state = STATE_NORMAL; i_victimGuid = 0; me->CombatStop(true); me->DeleteThreatList(); return; } Unit* victim = ObjectAccessor::GetUnit(*me, i_victimGuid); if (!victim) { sLog->outStaticDebug( "Creature stopped attacking because victim does not exist [guid=%u]", me->GetGUIDLow()); } else if (!victim->isAlive()) { sLog->outStaticDebug( "Creature stopped attacking because victim is dead [guid=%u]", me->GetGUIDLow()); } else if (victim->HasStealthAura()) { sLog->outStaticDebug( "Creature stopped attacking because victim is using stealth [guid=%u]", me->GetGUIDLow()); } else if (victim->isInFlight()) { sLog->outStaticDebug( "Creature stopped attacking because victim is flying away [guid=%u]", me->GetGUIDLow()); } else { sLog->outStaticDebug( "Creature stopped attacking because victim outran him [guid=%u]", me->GetGUIDLow()); } me->RemoveAllAuras(); me->DeleteThreatList(); i_victimGuid = 0; me->CombatStop(true); i_state = STATE_NORMAL; // Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == TARGETED_MOTION_TYPE) me->GetMotionMaster()->MoveTargetedHome(); }
void GuardAI::EnterEvadeMode() { if (!me->isAlive()) { DEBUG_LOG("Creature stopped attacking because he's dead [guid=%u]", me->GetGUIDLow()); me->StopMoving(); me->GetMotionMaster()->MoveIdle(); i_state = STATE_NORMAL; i_victimGuid = 0; me->CombatStop(true); me->DeleteThreatList(); return; } Unit* victim = ObjectAccessor::GetUnit(*me, i_victimGuid ); if (!victim) { DEBUG_LOG("Creature stopped attacking, no victim [guid=%u]", me->GetGUIDLow()); } else if (!victim->isAlive()) { DEBUG_LOG("Creature stopped attacking, victim is dead [guid=%u]", me->GetGUIDLow()); } else if (victim->HasStealthAura()) { DEBUG_LOG("Creature stopped attacking, victim is in stealth [guid=%u]", me->GetGUIDLow()); } else if (victim->isInFlight()) { DEBUG_LOG("Creature stopped attacking, victim is in flight [guid=%u]", me->GetGUIDLow()); } else { DEBUG_LOG("Creature stopped attacking, victim out run him [guid=%u]", me->GetGUIDLow()); } me->RemoveAllAuras(); me->DeleteThreatList(); i_victimGuid = 0; me->CombatStop(true); i_state = STATE_NORMAL; // Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) me->GetMotionMaster()->MoveTargetedHome(); }
void GuardAI::EnterEvadeMode() { if (!m_creature->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking because he's dead [guid=%u]", m_creature->GetGUIDLow()); m_creature->StopMoving(); m_creature->GetMotionMaster()->MoveIdle(); i_state = STATE_NORMAL; i_victimGuid.Clear(); m_creature->CombatStop(true); m_creature->DeleteThreatList(); return; } Unit* victim = m_creature->GetMap()->GetUnit(i_victimGuid); if (!victim) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, no victim [guid=%u]", m_creature->GetGUIDLow()); } else if (!victim->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is dead [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->HasStealthAura()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in stealth [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->IsTaxiFlying()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in flight [guid=%u]", m_creature->GetGUIDLow()); } else { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim out run him [guid=%u]", m_creature->GetGUIDLow()); } m_creature->RemoveAllAurasOnEvade(); m_creature->DeleteThreatList(); i_victimGuid.Clear(); m_creature->CombatStop(true); i_state = STATE_NORMAL; // Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) m_creature->GetMotionMaster()->MoveTargetedHome(); }
void GuardAI::EnterEvadeMode() { if (!m_creature->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking because he's dead [guid=%u]", m_creature->GetGUIDLow()); m_creature->StopMoving(); m_creature->GetMotionMaster()->MoveIdle(); i_state = STATE_NORMAL; i_victimGuid.Clear(); m_creature->CombatStop(true); m_creature->DeleteThreatList(); return; } Unit* victim = m_creature->GetMap()->GetUnit(i_victimGuid); if (!victim) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, no victim [guid=%u]", m_creature->GetGUIDLow()); } else if (!victim->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is dead [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->HasStealthAura()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in stealth [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->IsTaxiFlying()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in flight [guid=%u]", m_creature->GetGUIDLow()); } else { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim out run him [guid=%u]", m_creature->GetGUIDLow()); } m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); i_victimGuid.Clear(); m_creature->CombatStop(true); i_state = STATE_NORMAL; }
void ReactorAI::EnterEvadeMode() { if (!m_creature->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, he is dead [guid=%u]", m_creature->GetGUIDLow()); m_creature->GetMotionMaster()->MovementExpired(); m_creature->GetMotionMaster()->MoveIdle(); i_victimGuid = 0; m_creature->CombatStop(true); m_creature->DeleteThreatList(); return; } Unit* victim = m_creature->GetMap()->GetUnit(i_victimGuid); if (!victim) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, no victim [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->HasStealthAura()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in stealth [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->IsTaxiFlying()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in flight [guid=%u]", m_creature->GetGUIDLow()); } else { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim %s [guid=%u]", victim->isAlive() ? "out run him" : "is dead", m_creature->GetGUIDLow()); } m_creature->ExitVehicle(); m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); i_victimGuid = 0; m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); // Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) m_creature->GetMotionMaster()->MoveTargetedHome(); }
void ReactorAI::EnterEvadeMode() { if( !m_creature->isAlive() ) { DEBUG_LOG("Creature stoped attacking cuz his dead [guid=%u]", m_creature->GetGUIDLow()); m_creature->GetMotionMaster()->MovementExpired(); m_creature->GetMotionMaster()->MoveIdle(); i_victimGuid = 0; m_creature->CombatStop(true); m_creature->DeleteThreatList(); return; } Unit* victim = ObjectAccessor::GetUnit(*m_creature, i_victimGuid ); if( !victim ) { DEBUG_LOG("Creature stopped attacking because victim is non exist [guid=%u]", m_creature->GetGUIDLow()); } else if( victim->HasStealthAura() ) { DEBUG_LOG("Creature stopped attacking cuz his victim is stealth [guid=%u]", m_creature->GetGUIDLow()); } else if( victim->isInFlight() ) { DEBUG_LOG("Creature stopped attacking cuz his victim is fly away [guid=%u]", m_creature->GetGUIDLow()); } else { DEBUG_LOG("Creature stopped attacking due to target %s [guid=%u]", victim->isAlive() ? "out run him" : "is dead", m_creature->GetGUIDLow()); } m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); i_victimGuid = 0; m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); // Remove TargetedMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if( m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == TARGETED_MOTION_TYPE ) m_creature->GetMotionMaster()->MoveTargetedHome(); }
void ReactorAI::EnterEvadeMode() { if (!m_creature->isAlive()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, he is dead [guid=%u]", m_creature->GetGUIDLow()); m_creature->GetMotionMaster()->MoveIdle(); i_victimGuid.Clear(); m_creature->CombatStop(true); m_creature->DeleteThreatList(); return; } Unit* victim = m_creature->GetMap()->GetUnit(i_victimGuid); if (!victim) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, no victim [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->HasStealthAura()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in stealth [guid=%u]", m_creature->GetGUIDLow()); } else if (victim->IsTaxiFlying()) { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim is in flight [guid=%u]", m_creature->GetGUIDLow()); } else { DEBUG_FILTER_LOG(LOG_FILTER_AI_AND_MOVEGENSS, "Creature stopped attacking, victim %s [guid=%u]", victim->isAlive() ? "out run him" : "is dead", m_creature->GetGUIDLow()); } m_creature->ExitVehicle(); m_creature->RemoveAllAurasOnEvade(); m_creature->DeleteThreatList(); i_victimGuid.Clear(); m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); }