I don’t get it why this is a big problem for the devs to fix it. I suppose that these objects such as ammo, fuel tanks etc. inside the tank are coded in that way that they inherit properties from a super class. Why is it such a big problem to create another child class that has all the super class props with one difference - that the parameter responsible for it being explosive is set to false?
That way, every two-part munitions could be fixed in a easy way. An explosive-derivative object class for HESH (by snail-logic it explodes when hit ;p), smoke etc., and a non-explosive-derivative object class for darts and APDS.
The question stay - is it the laziness? Is the ammo class so old and spaghetti like that touching it would require large code refactoring? Or is it supposed to be like that and they don’t see any problem here?
I would bet the spaghetti code. This problem is known from the introduction of the Challenger 1. It disappeared for a while only to be brought back to life after some time.