Even 6.X.X versions clearly used gillmen arching attacks very well from no-LoS terrain. I did playthrough of XCF with it some time ago.
The arcing-shot-logic was correctly applied for the "can I attack from where I stand?"-logic. But it was not applied by the "where do I have to go to attack?"-logic.
That's why they sometimes would indeed attack from positions without having LOS. But with the change they should do so way more often. I tested it in TFTD with a terror-mission where there's a lot of these enemies and they killed everyone in one turn. I feared that it would be expensive to call that because they try 10 different angles. But then again it's tile-based not voxel-based so they don't do it as often. And it's done instead of the other line-of-sight-check, so it does not have significant impact on turn-time.
1) BAI on extender accuracy (not RA) - works same well as with RA?
2) Will you somehow teach BAI to throw flares back?
3) Will super-high TU units scout (last video shows how Armored cars dispose their TU's instead of best solution)?
4) What was with these gillmen, did they see me? If they did, why human units didn't attack at all this turn?
1) I did all my testing without RA. So I can't tell for RA for sure. But most issues were AI-bugs afterall, so they should be fixed now either way.
2) Not planned so far. Maybe something for the backlog.
3) Currently the scouting logic works in a way that may not be ideal for scenarios often encountered in mods. On aggressiveness 3 units now should scout much more aggressively at the expense of their own safety. On lower aggressiveness, they will scout but also preserve TUs to go back into cover. And they won't scout very much when they have low weapon-range. The idea is to force you to scout them instead. Playing with sub 100% intelligence however will likely backfire. Because the units who roll a random move might just put themselves out somewhere with no real purpose. Testing under these circumstances is definitely not ideal to make conclusions about the AI's tactics.
Fixed max intelligence and ideally also no randomization is way more conclusive as then you can be sure that the bad moves are actually bad decisions by the AI and not the result of a random-roll.
4) The Gillmen simply didn't suffer from the bug that the other units suffered from as they used an arcing attack and the bug only affected direct attacks. What I did wrong was to subtract the No-LOF-Penalty, which was 50%. That means if their normal hit-chance would have been below 50% they thought they wouldn't hit you at all. The correct application would have been Accuracy *= NoLOFPenalty / 100.0, so halfing their accuracy and not making them think it's negative now. The result was a lot of units simply not attacking at all, when they should have.
So morale of the story: You don't always need a new mechanism of how the AI should behave when they don't work as intended in the first place.
Your savegame definitely was very valuable in improving flaws in the AI.
Wait a minute... Accuracy *= NoLOFPenalty / 100.0 might still be wrong and only work because it was 50. But that's what I think it was also used like in the other code. I need to check. Question is: does it mean: "That much percent of the accuracy is it reduced by" or does it mean "That much percent of the accuracy will be left"? It's same at 50, but what about 25 or 75? In the end it wouldn't matter too much as long as it won't turn the accuracy negative. But I'd still like to understand how it's supposed to be used.
Edit: Just checked again in Projectile.cpp
if (noLOSAccuracyPenalty != -1 && !hasLOS)
{
real_accuracy = real_accuracy * noLOSAccuracyPenalty / 100;
}
Not really intuitive.