void Wolf::_findNewWay( const TilePos& start ) { WalkerList walkers = _city()->statistic().walkers .find<Walker>( walker::any, config::distance::animalRandrom, start ) .exclude<Wolf>(); Pathway pathway; if( !walkers.empty() ) { WalkerPtr wlk = walkers.random(); pathway = PathwayHelper::create( start, wlk->pos(), PathwayHelper::allTerrain ); } if( !pathway.isValid() ) { pathway = PathwayHelper::randomWay( _city(), start, config::distance::animalRandrom ); } if( pathway.isValid() ) { setPos( start ); setPathway( pathway ); go(); } else { die(); } }
void Wolf::_centerTile() { Animal::_centerTile(); WalkerList walkers = _city()->statistic().walkers .neighbors<Walker>( pos() ) .exclude<Wolf>(); if( !walkers.empty() ) { WalkerPtr wlk = walkers.random(); turn( wlk->pos() ); _setAction( acFight ); //setSpeedMultiplier( 0.0 ); _d->attackPos = wlk->pos(); } }