There is now a separate fallback_ray() that needs to be called explicitly. I've manually converted uses of find_ray with allow_fallback == true.
find_ray with allow_fallback set always returned true, yet there were a number of places that used the return value, in particular in directn.cc. I'll check these later.
TZNURHCLTLE3A55EPNU66BU6NX7LOBA7EFG4NAJJBUKZLOAEFU4AC M7RPJOAAK7UTJP2JDNKT2JWW3QWFSUFMJPN33ASPFDOZQAD2DRDQC DDYDJKL5CGSTC3NGTOBCNKHDTG5LX5F4U7VNZN2YAK5ANLT7UO5AC HAHX6NKIVDCUYFBNF2SPRFGIPTWMJVCQNASKJE5GMFQ63KTDNJAAC J2TAQGBG2YV7TWJZ5KQWM3FYBCTLWMRTS7QCIUBGLX62AXQLYZXQC KMF52RF3NIY2ABMHEZABT3GOG3KCHEJD55NBJ3IPAOHBKF2WPKQAC PKK5BBJU6ZPC5TP2HLCWJQV73S6JMTBNJJEJKAZIX53AEHMWQYHAC IFYZSFWJRTV6JM46H6U4CMTQX46VT562EAM64Y6UYU3F6RDWRRYQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC IDMROPT5ZXZEODQHIPYUAXEO5DVQEAOUYWFQ6GAB6RIDS3STL3SQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC ACZYEIX7WMPIIODKCATBCUE626AJ4ZGGBOMVC6BGXM27EQU2RECAC 3ORZZ66JXYWJUO4W5YP2JRKKZ6ZNMHU7QWAF2QMKH4LFWNNMPM7QC PEWNWU7TD3LETUMWCCI365KH7PVV2XCUOIFTPBH2LK2ZPGS4URZAC T7CCGLOZ25B7BQKKGR6IA6LWBRKUWTXLTIRXUQ4YKQRVAA7AHZKQC 2MVY3CA2SGUEQDDHIFOLAJ7N532M4ZYZT7LSCPWZR7VKPMRX2CQAC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC XCL4GC6RUWUK57HONM5CRUEOCCECR4NYAI5KLPJKCYM5OURU3AYQC CHO4U5JC3RNTLXVIDXXJYZMOBZJ4VXW2GVJWDOTBRKK3AJ36LDLQC NLSZ4SHFD6LN6AWB3HLLKQTCKQW55ZHEW3YM7XRAVAKIPD3C3Q3AC VD4KDTGHVKCN35AWREYB4TEOUMCTW7SAUPAMTMF5ABC7VBHVKP4AC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC GVCGKTH5IJ4VSQEIN4CRC7ZFVZW26JPIYNCPTO7GY66CSZZEW3ZQC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC DK76MINM4TMQKZ6HKMJZMZM7QPGQUO3YY3I226G7JDUYJJLWKWAQC 6DNNPEMZGBQDMA7YG4LCTQUVZ7LYPC3R4A2XBYT5SDQ65GYOLJVAC UADYVV3UD5ERJTZZJGY4EUQ4NJ2JSBG7YYUJ75ZRBIXRQXQKOJPAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC bool find_ray( const coord_def& source, const coord_def& target,bool allow_fallback, ray_def& ray, int cycle_dir = 0,bool find_shortest = false, bool ignore_solid = false );
bool find_ray(const coord_def& source, const coord_def& target,ray_def& ray, int cycle_dir = 0, bool find_shortest = false,bool ignore_solid = false);void fallback_ray(const coord_def& source, const coord_def& target,ray_def& ray);
if (allow_fallback){#ifdef DEBUG_DIAGNOSTICScoord_def src = t.transform(coord_def(0,0));coord_def trg = t.transform(target);mprf(MSGCH_DIAGNOSTICS,"falling back in ray search: (%d,%d) to (%d,%d)",src.x, src.y, trg.x, trg.y);#endifray.accx = 0.5;ray.accy = 0.5;if (target.x == 0)ray.slope = VERTICAL_SLOPE;elseray.slope = target.y / target.x;ray.fullray_idx = -1;return (true);}return (false);
return (found);
}void fallback_ray(const coord_def& source, const coord_def& target,ray_def& ray){ray.accx = source.x + 0.5;ray.accy = source.y + 0.5;coord_def diff = target - source;ray.slope = _calc_slope(std::abs(diff.x), std::abs(diff.y));_set_ray_quadrant(ray, source.x, source.y, target.x, target.y);
show_beam = find_ray(you.pos(), moves.target,true, ray, (show_beam ? 1 : 0));
// XXX: show_beam was conditional on find_ray// with fallback succeeding.if (!find_ray(you.pos(), moves.target,ray, (show_beam ? 1 : 0)))fallback_ray(you.pos(), moves.target, ray);show_beam = true;
show_beam = find_ray(you.pos(), moves.target,true, ray, 0, true);
// XXX: show_beam was conditional on find_ray// with fallback succeeding.if (!find_ray(you.pos(), moves.target,ray, 0, true))fallback_ray(you.pos(), moves.target, ray);show_beam = true;
need_beam_redraw = show_beam&& find_ray(you.pos(), moves.target, true, ray,0, true)&& !_blocked_ray(moves.target);
if (show_beam){if (!find_ray(you.pos(), moves.target, ray, 0, true))fallback_ray(you.pos(), moves.target, ray);need_beam_redraw = !_blocked_ray(moves.target);}