Another simple idea regarding base defense:
1) Let defenses facilities have number of shots per wave with default value of 1. Each is calculated separately but can be weaker then original. Grav shield works as usual. Main reason is to differentiate different buildings as standard ones are very similar to each other. Expected value of damage would be the same. Now buildings differs mainly by sound as they are not even shown on base defense screen.
2) Would be nice to have information about damage done to alien ship in percentage, not just info about hit / miss.
3) When mission starts and UFO is damaged then kill proportional number of aliens based on damage. 10% of destroyed hull would mean 10% of killed alien units during battlescape. They can be just killed after mission is generated with bodies exist on the battlescape. This could be configurable by a flag / option "Lethal base defenses" as a bool.
4) Set delay between weapons are fired per facility as for now this delay is hardcoded to be 250 or 333 ms.
5) Let facilities consume ammo if defined. If no ammo is available in stores then add message "No ammo". Default value would be no ammo is required.
2a) If percentage information about UFO is impossible then at least create a more advanced UFO status that could be displayed in future on other screens. Now its just DESTROYED / CRUSHED / LANDED / FLYING.
100-90% no damage (at least we know that UFO is tough)
70-90% light damage (at least we know we done some damage to UFO)
50-70% medium damage (at least we know that it is closed to shot down UFO)
below 50% -> normally is crushed but here would be heavily damaged until destroyed
I know this base defense is very very very small part of the game but on the other hand all those customizations are very simple to implement in single file.
Other thing is would be nice to have a flag for an item that says "IS DESIGNED TO BE THROWN". This would reduce range or / and arc of thrown items that are not designed to do it by some percentage. By default all items are designed to be thrown so no modifier is applied. For example grenade has weight of 3 and high explosive of 8, but the second one never was designed to be thrown, which means for purpose of throwing we should treat its weight not as 8 but as 12 for example.