diff options
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/rocket.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/game/rocket.cpp b/src/game/rocket.cpp index a03b169..5310922 100644 --- a/src/game/rocket.cpp +++ b/src/game/rocket.cpp @@ -54,12 +54,19 @@ void rocket_t::on_think(void) trace = world->ray_v_all(x, end, CF_SOLID|CF_BODY|CF_BODY_SMALL, shooter); } else { end = target; - trace = world->ray_v_all_p3d(x, end, CF_SOLID|CF_BODY|CF_BODY_SMALL, -1, nullptr); - trace.hit = true; + trace = world->ray_v_all_p3d(x, end, CF_SOLID|CF_BODY|CF_BODY_SMALL, -1, this); } if (trace.hit) { - game->explosion(trace.end); + if (trace.tile && trace.tile->type == TILE_WATER) { + fx_bullet_miss_t *bullet_miss; + + bullet_miss = new fx_bullet_miss_t(game, trace.end, true); + bullet_miss->place(world); + } else { + game->explosion(trace.end); + } + delete this; return; } |