From 1f333868eb16a5d4e30842926ac21adc0dfb461c Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 2 Dec 2017 04:31:26 +0000 Subject: [PATCH] Fix proximity bomb failure-to-spin Commit 7d36df315e5a9d1691ab316aaba54afcf59966fd restructured draw_weapon_vclip, but unintentionally broke the spin of proximity bombs because `modtime` could exceed `play_time * 2`, causing `draw_vclip_object` to clamp `bitmapnum` to the last frame of the animation. Switch from `-=` to `%=` so that modtime is always brought back in range. Reported-by: Descender1032 Fixes: 7d36df315e5a9d1691ab316aaba54afcf59966fd ("Simplify draw_weapon_vclip") --- similar/main/vclip.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/similar/main/vclip.cpp b/similar/main/vclip.cpp index c1cee12a0..714a4b975 100644 --- a/similar/main/vclip.cpp +++ b/similar/main/vclip.cpp @@ -80,7 +80,7 @@ void draw_weapon_vclip(grs_canvas &canvas, const vcobjptridx_t obj) modtime += (lifeleft * (objnum & 7)) / 16; //add variance to spin rate if (modtime > play_time) - modtime -= play_time; + modtime %= play_time; if ((objnum&1) ^ ((objnum>>1)&1)) //make some spin other way modtime = play_time - modtime;