/** * @brief * * @param path * @return bool */ bool NewRoboControl::drivePath(std::vector<Position>* path) { Position *target = NULL; for (std::vector<Position>::iterator it = path->begin() ; it != path->end() ; it++) { target = &(*it); if (!IsOnTarget(*target, false)) { double d = 0; Position prevPos = GetPos(); for (; it != path->end() ; it++) { Position pos = *it; d += pos.DistanceTo(prevPos); prevPos = pos; } return cruisetoBias(target->GetX(), target->GetY(), 700, -10, 30, d); } } if (!target || IsOnTarget(*target)) { RandomMove(); return true; } return cruisetoBias(target->GetX(), target->GetY(), 600); }
void UpdateAI(const uint32 diff) { events.Update(diff); switch (events.ExecuteEvent()) { case EVENT_MOVE_RANDOM: RandomMove(); events.ScheduleEvent(EVENT_MOVE_RANDOM, urand(4000,12000)); break; case EVENT_FORCE_OF_WILL: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 80.0f, true)) { me->SetFacingTo(me->GetAngle(target)); DoCast(target,SPELL_FORCE_OF_WILL); } //DoCast(SPELL_FORCE_OF_WILL); if (Creature* durumu = ObjectAccessor::GetCreature(*me, FindDurumuGUID(me))) durumu->GetAI()->DoAction(ACTION_SAY_FORCE_OF_WILL); events.ScheduleEvent(EVENT_FORCE_OF_WILL, 20000); break; case EVENT_LINGERING_GAZE: for (uint8 i=0;i<=1;++i) if (Player* target = ObjectAccessor::GetPlayer(*me, SelecGUIDtRandomPlayerInRage(me,100.0f, true))) DoCast(target,SPELL_LINGERING_GAZE_MARKER); DoCast(SPELL_LINGERING_GAZE_CAST); events.ScheduleEvent(EVENT_LINGERING_GAZE, 45000); break; case EVENT_DRAIN_LIFE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 80.0f, true)) { DoCast(target,SPELL_DRAIN_LIFE_STUN); DoCast(target,SPELL_DRAIN_LIFE_CHANNEL); } break; case EVENT_DRAIN_LIFE_TAR_CHECK: CheckBetweenPlayerAndDmg(); events.ScheduleEvent(EVENT_DRAIN_LIFE_TAR_CHECK, 1500); break; case EVENT_EYES_ORIENTATION: if (Unit* target = ObjectAccessor::GetUnit(*me, SelectBeamTargetGuid())) me->SetFacingToObject(target); if (me->GetEntry() != YELLOW_EYE) TrySearchFogs(); events.ScheduleEvent(EVENT_EYES_ORIENTATION, 200); break; default: break; } }
void MainScene::CreateObjects() { Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); std::ifstream ifs("UploadObjects.txt"); int k = 0; for (int i = 0; i < 10; ++i) for (int j = 0; j < 10; ++j) { ifs >> a[i][j]; switch (a[i][j]) { case BONUSTYPE_FLOWER: bObjTmp = (BonusObject*)Sprite::create("flower.png"); bObjTmp->setPosition(j * 32 + 16, i * 32 + 16); bObjTmp->setType(BONUSTYPE_FLOWER); bonusObjects.pushBack(bObjTmp); this->addChild(bObjTmp, 1); break; case BONUSTYPE_BONE: bObjTmp = (BonusObject*)Sprite::create("bone.png"); bObjTmp->setPosition(j * 32 + 16, i * 32 + 16); bObjTmp->setType(BONUSTYPE_BONE); bonusObjects.pushBack(bObjTmp); this->addChild(bObjTmp, 2); break; case BONUSTYPE_CACTUS: bObjTmp = (BonusObject*)Sprite::create("cactus.png"); bObjTmp->setPosition(j * 32 + 16, i * 32 + 16); bObjTmp->setType(BONUSTYPE_CACTUS); bonusObjects.pushBack(bObjTmp); this->addChild(bObjTmp, 3); break; case 4: myCat->setPosition(j * 32 + 16, i * 32 + 16); break; case 5: cObjTmp = (BonusObject*)Sprite::create("Player.png"); cObjTmp->setPosition(j * 32 + 16, i * 32 + 16); cObjTmp->setType(BONUSTYPE_PLAYER); bonusObjects.pushBack(cObjTmp); RandomMove(); this->addChild(cObjTmp, 5); /*myPerson = Sprite::create("Player.png"); myPerson->setPosition(j * 32 + 16, i * 32 + 16); RandomMove(); this->addChild(myPerson, 5);*/ break; default: break; } } }
void CAIThread::GetMoveTarget() { // TODO: Make this more better if ( m_pAttackTarget == NULL ) { RandomMove(); } else { MoveToEntity( m_pAttackTarget ); } // m_pMoveTarget should never be NULL when exiting this function ASSERT( m_pMoveTarget != NULL ); }
void ClientSession::HandleMapLoaded(QString& /*packet*/) { // make character moving randomly on map RandomMove(); }