Diff
Not logged in

Differences From Artifact [b158ce3255b33a97]:

To Artifact [a41fda48c5fe0806]:


207 his++; 207 his++; 208 if(his>=2) 208 if(his>=2) 209 tgt ~= new Pos(y,x); 209 tgt ~= new Pos(y,x); 210 } 210 } 211 cand ~= search(g, ro, tgt, death, true); 211 cand ~= search(g, ro, tgt, death, true); 212 } 212 } 213 } 213 } > 214 > 215 // 'horo-push' mode > 216 if(cand.empty) { > 217 Pos[] horo = g.map.objects('@'); > 218 Pos[] tgt; > 219 foreach(p; horo) > 220 if((g.map[p.y,p.x-1]==' '||g.map[p.y,p.x-1]=='R' > 221 (g.map[p.y,p.x+1]==' '||g.map[p.y,p.x+1]=='R' > 222 ||(g.map[p.y-1,p.x]==' '||g.map[p.y-1,p.x]=='R' > 223 tgt ~= p; > 224 > 225 for(int y=1; y<=g.map.H; ++y) > 226 for(int x=1; x<=g.map.W; ++x) > 227 if(g.map[y,x]=='.') > 228 if(is_rocky(g.map[y+1,x])||is_rocky(g.ma > 229 ||is_rocky(g.map[y,x+1])||is_rocky(g.ma > 230 tgt ~= new Pos(y,x); > 231 > 232 if(!tgt.empty) > 233 cand ~= search(g, ro, tgt, death, true); > 234 } 214 235 215 // 'dig' mode 236 // 'dig' mode 216 if(cand.empty) { 237 if(cand.empty) { 217 const(Pos)[] tgt; | 238 Pos[] tgt; 218 for(int y=1; y<=g.map.H; ++y) 239 for(int y=1; y<=g.map.H; ++y) 219 for(int x=1; x<=g.map.W; ++x) 240 for(int x=1; x<=g.map.W; ++x) 220 if(g.map[y,x]=='.') 241 if(g.map[y,x]=='.') 221 if(is_rocky(g.map[y+1,x])||is_rocky(g.ma 242 if(is_rocky(g.map[y+1,x])||is_rocky(g.ma 222 ||is_rocky(g.map[y,x+1])||is_rocky(g.ma 243 ||is_rocky(g.map[y,x+1])||is_rocky(g.ma 223 tgt ~= new Pos(y,x); 244 tgt ~= new Pos(y,x); 224 cand ~= search(g, ro, tgt, death, true); 245 cand ~= search(g, ro, tgt, death, true); 225 } 246 } 226 247 227 // 'horo-push' mode < 228 if(cand.empty) { < 229 Pos[] horo = g.map.objects('@'); < 230 if(!horo.empty) { < 231 cand ~= search(g, ro, horo, death, true); < 232 } < 233 } < 234 < 235 if(cand.empty) { 248 if(cand.empty) { 236 choke_count++; 249 choke_count++; 237 cand ~= tuple('W',int.max); 250 cand ~= tuple('W',int.max); 238 } 251 } 239 sort!((Tuple!(char,int) c1, Tuple!(char,int) c2){ 252 sort!((Tuple!(char,int) c1, Tuple!(char,int) c2){ 240 if(c1[1] != c2[1]) 253 if(c1[1] != c2[1]) 241 return c1[1] < c2[1]; 254 return c1[1] < c2[1];