diff options
author | Adam Borowski <kilobyte@angband.pl> | 2010-01-03 20:56:16 +0100 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2010-01-03 21:03:04 +0100 |
commit | b8fc8202e00969a7585767100bee87a4def13fa5 (patch) | |
tree | 564408ec0e3077344c3d3ef7b55b5a6ca327f7bf /crawl-ref/source/mon-project.cc | |
parent | da5a6f678e819f92d5d3dc2f26e62de2006eadaf (diff) | |
download | crawl-ref-b8fc8202e00969a7585767100bee87a4def13fa5.tar.gz crawl-ref-b8fc8202e00969a7585767100bee87a4def13fa5.zip |
IOOD: use the actual (floating point) ray traced.
Diffstat (limited to 'crawl-ref/source/mon-project.cc')
-rw-r--r-- | crawl-ref/source/mon-project.cc | 13 |
1 files changed, 9 insertions, 4 deletions
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; |