From b8fc8202e00969a7585767100bee87a4def13fa5 Mon Sep 17 00:00:00 2001 From: Adam Borowski Date: Sun, 3 Jan 2010 20:56:16 +0100 Subject: IOOD: use the actual (floating point) ray traced. --- crawl-ref/source/mon-project.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'crawl-ref/source/mon-project.cc') diff --git a/crawl-ref/source/mon-project.cc b/crawl-ref/source/mon-project.cc index aa2b29f22e..6e00408a54 100644 --- a/crawl-ref/source/mon-project.cc +++ b/crawl-ref/source/mon-project.cc @@ -52,10 +52,15 @@ bool cast_iood(actor *caster, int pow, bolt *beam) monsters &mon = menv[mind]; const coord_def pos = caster->pos(); - mon.props["iood_x"] = (float)pos.x; - mon.props["iood_y"] = (float)pos.y; - mon.props["iood_vx"] = (float)(beam->target.x - pos.x); - mon.props["iood_vy"] = (float)(beam->target.y - pos.y); + beam->choose_ray(); + dprf("beam (%d,%d)+t*(%d,%d) ray (%f,%f)+t*(%f,%f)", + pos.x, pos.y, beam->target.x - pos.x, beam->target.y - pos.y, + beam->ray.r.start.x - 0.5, beam->ray.r.start.y - 0.5, + beam->ray.r.dir.x, beam->ray.r.dir.y); + mon.props["iood_x"].get_float() = beam->ray.r.start.x - 0.5; + mon.props["iood_y"].get_float() = beam->ray.r.start.y - 0.5; + mon.props["iood_vx"].get_float() = beam->ray.r.dir.x; + mon.props["iood_vy"].get_float() = beam->ray.r.dir.y; mon.props["iood_kc"].get_byte() = (caster->atype() == ACT_PLAYER) ? KC_YOU : ((monsters*)caster)->friendly() ? KC_FRIENDLY : KC_OTHER; mon.props["iood_pow"].get_short() = pow; -- cgit v1.2.3-54-g00ecf