Maint_sim.py
https://www.dropbox.com/s/yy3dntjxth2g6lu/maint_sim.zip?dl=0
https://pastebin.com/bA5ijfjs - just source code. More stable than version in the archive but no new functional.
First version of maint_sim.py devoted to calculate the ideal setup and profit of any manufacturable item possible. You punch in all the values and get what needed. Be aware that TFTD rules for most part follow easy rule: more engineers = more profit, so you might be using it just to evaluate your average profit.
(https://i.imgur.com/PkfNMdu.png)
UFOEnemy.py
https://www.dropbox.com/s/2jnt7shtt2c0d63/UFOEnemy.zip?dl=0
https://pastebin.com/7ZJS5eHZ - just source code and nothing else. It is far more readable than one in archive but I am not going to bother with reuploading solely because source code is better.
Advanced version of older UFOEnemy.py. It is supposed to evaluate efficiency of any given weapon against any given enemy.
Now it supports mass evaluation and can easily and quite reliably be used by modders who want to balance things out. Or by common players seeking to know what weapon deals with what enemy best.
(https://i.imgur.com/4kMCKLT.png)
Each archive contains two folders: bin and src. bin has executable file for windows users (I am not sure if it works in 64-bit Windows, but it should) and src contains the actual py script which lies, well, "compiled" in bin folder. You can use any script however you want.
It simulates the whole process of manufacturing throughout a virtual month. The reason of that is because UFO: EU uses a very weird system of manufacturing and calculating it mathematically would require using some special means. Simulating is just overall easier to implement.
It also simulates the whole process of killing virtual enemies. It collects statistical data and outputs it in readable form.
The tab in the screenshot consists of three values: first is average amount of shots needed to kill some enemy, second is standard deviation and third is the absolute minimum of shots needed to kill an enemy
It appears if there were more than 1/100 of TRIES without killing that particular enemy (100 shots at default). It used to have actual determinating of immunity to some weapon, but I faced a problem that made numbers meaningless. I don't think anyone would truly consider firing 3500 +- 1250 times at some enemy and not think he's not dying. It's a trade-off between common sense and accuracy.
If there are any bugs, you can post them here.