@@ -291,8 +291,16 @@ } Tuple!(char,int)[] search(in Game g, in Pos s, in Pos[] gs, string death, bool danger_ok=false) { + bool very_danger(int y, int x) + { + if(g.map[y,x] == ' ' || g.map[y,x] == 'R') + return false; + if(is_rocky(g.map[y+1,x])) + return true; + return false; + } bool danger(int y, int x) { if(g.map[y,x] == ' ' || g.map[y,x] == 'R') return false; @@ -314,9 +322,9 @@ // avoid directly below '*' Tuple!(char,int)[] tryA() { const(Pos)[] q; foreach(p; gs) - if(!danger(p.y,p.x)) + if(!very_danger(p.y,p.x)) q ~= p; bool[][] v = new bool[][](g.map.H+2, g.map.W+2); foreach(p; q) v[p.y][p.x]=true; bool first_step = true;