private bool AI_CheckNextStep(Tile start,PhysicalObject obj,bool flee) { List<int> dirs = new List<int>(); List<int> sideways_directions = new List<int>(); AI_Step_Build_Direction_Lists(start,obj,flee,dirs,sideways_directions); List<int> partially_blocked_dirs = new List<int>(); Tile t = null; foreach(int i in dirs){ t = start.TileInDirection(i); if(t.Is(TileType.RUBBLE)){ //other tiles might go here eventually partially_blocked_dirs.Add(i); } else{ if(AI_WillingToMove(start,t,null)){ return true; } } } foreach(int i in partially_blocked_dirs){ if(AI_WillingToMove(start,TileInDirection(i),null)){ return true; } } return false; }