return npc->step(best, frame);
return npc->step(best, frame)!=0;
static bool Take_best_step	(	Actor *npc,	Actor *leader,	Tile_coord& pos,		// Current pos.	int frame,			// Frame to show.	int dir				// Direction we want to go.	)	{	static int deltadir[] = {0, 1, 7, 2, 6, 3, 5};	const int cnt = sizeof(deltadir)/sizeof(deltadir[0]);	int best_cost = max_cost + 8;	Tile_coord best(-1, -1, -1);	Actor *best_in_way = 0;	for (int i = 0; i < cnt; i++)		{		int diri = (dir + deltadir[i])%8;		Tile_coord to = pos.get_neighbor(diri);		Actor *in_way;		// Fudge cost with diff. in dir.		int cost = Get_cost(npc, leader, to, &in_way);		if (cost < best_cost)			{			best_cost = cost;			best_in_way = in_way;			best = to;			}		}	if (best_cost >= max_cost)		return false;	if (!best_in_way)		// Nobody in way?		return npc->step(best, frame);	best = best_in_way->get_tile();	// Swap positions.	npc->remove_this(true);	best_in_way->remove_this(true);	npc->set_frame(frame);		// Appear to take a step.	npc->move(best);	best_in_way->move(pos);	return true;	}