Ships with engine damage appear to be retroactively slowed. As a result it is possible that the now slower ship will fail to end up inside of missile intercept range. As a result the remaining missiles from the same wave may impact on the next 5s increment and allow point defenses an extra round of point defense missile fire.
As seen here 115 missiles intercepted the Krivak task group targeting Krivak 003, which was slowed after the 11th salvo impacted. Don't ask me why the explosions ended in front of the Krivak's in the direction of their travel, or why the missiles ended there movement before reaching the task group they were targeting. There might be other bugs that occurred with the interception.
When I added the code that allowed missiles to lead their target, I didn't allow for the situation where the missiles will hit immediately. So in a few cases the missiles are detonating where a moving target will be at the end of the next increment if they follow an intercept course. Amazed this hasn't been spotted sooner (especially by me
).
I've changed the code to first check if a direct course will result in a hit within the increment. If not, an intercept course is calculated against moving targets but with a flag set that no interception is possible.
That still leaves a second problem. Why does the target appear to be retroactively slowed? Ships move before missiles so the ship should already be in the new location before the interception takes place. However, even though ships move before missiles, those changes are not saved to the database until the whole increment is completed. Each fleet that moves is flagged with an 'Update' flag so that movement is saved in the post-increment db update. When a ship is slowed, a new fleet is created for that ship. However, the status of the Update flag was not being passed so the DB was not informed of the changed location. In effect, the ship wasn't retroactively slowed - it never moved at all. I've fixed that by setting the update flag of the new fleet.
The same issue regarding location applies to the location of life pods, wrecks and secondary explosions so I have updated that code too.
Thanks for the detailed bug report.