void Monster_BladeSpirit::check() { // Our current victim P_CHAR m_currentVictim = World::instance()->findChar( m_currentVictimSer ); if ( !m_currentVictim ) { m_currentVictimSer = INVALID_SERIAL; } if ( m_currentVictim && invalidTarget( m_npc, m_currentVictim ) ) { m_currentVictim = 0; m_currentVictimSer = INVALID_SERIAL; m_npc->fight( 0 ); } if ( nextVictimCheck < Server::instance()->time() ) { // Don't switch if we can hit it... if ( !m_currentVictim || m_currentVictim->dist( m_npc ) > 1 ) { P_CHAR target = findBestTarget( m_npc ); if ( target ) { m_currentVictim = target; m_currentVictimSer = target->serial(); m_npc->fight( target ); } } nextVictimCheck = Server::instance()->time() + 1500; } AbstractAI::check(); }
bool CAutoAirblast::move(CUserCmd *pUserCmd) { if(!variables[0].bGet()) return false; if(gLocalPlayerVars.activeWeapon == classId::CTFFlameThrower) { int closeIndex = findBestTarget(); if(closeIndex == -1) return false; if(targets[closeIndex] <= 185.0f) { pUserCmd->buttons |= IN_ATTACK2; } targets.erase(closeIndex); } return true; }