Such a curiosity from the programming side of "clones". The battle engine is the bane of every Ogame clone's game. This is because Ogame is not a project (probably) entirely written in PHP or something like that, the battle engine itself is (probably) written in C++.
What does this give? Languages like PHP, even though quite fast, are much slower than C++, so you have to make compromises, especially if our battle engine is supposed to be "common" (there is no problem with writing the battle language in another language, but the average blacksmith won't be able to use it on his hosting, because his hosting doesn't allow to run external code).
One day I'll describe the OPBE battle engine (Ogame Probability Battle Engine) in detail (as far as I know it, because it's not mine, I'm just improving it). It's generally based on probability. Let's say you destroyed 10000 Rocket Launchers and there is a 70% chance that the Rocket Launcher will repair itself after a battle. How many of them will be repaired? The answer at first glance is: 10000*0.7 = 7000, which is generally a good answer, but it's not how it works. In Ogame (and our OPBE), a random number is counted for each launcher and compared whether it "falls" into the range. So the number 6986 is also a good number if you had "more bad luck" and 7136 if you had less :P
There is also another interesting thing. If you have 1 Rocket Launcher, you can't destroy it completely from the planet in vanilla OPBE. 1*0.7 (rounded) = 1. So you always get this 1 RL repaired :D