--- src/cmd7.c.orig Fri Apr 25 19:13:34 2003 +++ src/cmd7.c Sun Jun 1 22:13:36 2003 @@ -4575,6 +4575,8 @@ { random_spell *s_ptr; + u32b proj_flags; + int dir, chance; int ty = 0, tx = 0; @@ -4643,6 +4645,7 @@ p_ptr->csp -= s_ptr->mana; s_ptr->untried = FALSE; + proj_flags = s_ptr->proj_flags; /* Hack -- Spell needs a target */ if ((s_ptr->proj_flags & PROJECT_BEAM) || @@ -4655,12 +4658,20 @@ { tx = target_col; ty = target_row; + /* Mega-Hack -- Beam spells should continue through + * the target; bolt spells should stop at the + * target. --dsb */ + if (s_ptr->proj_flags & PROJECT_BEAM) + proj_flags |= PROJECT_THRU; } else { /* Use the given direction */ ty = py + ddy[dir]; tx = px + ddx[dir]; + /* Mega-Hack -- Both beam and bolt spells should + * continue through this fake target. --dsb */ + proj_flags |= PROJECT_THRU; } } @@ -4684,7 +4695,7 @@ { project(0, s_ptr->radius, ty, tx, damroll(s_ptr->dam_dice, s_ptr->dam_sides), - s_ptr->GF, s_ptr->proj_flags); + s_ptr->GF, proj_flags); } /* Take a turn */