Btw, if I remember correctly there are two (or maybe even three?) different functionalities of calculating combat odds in the standard code. Once in getBestDefender or so and the other in getCombatOdds. Of course both deliver different values... Edit: I don't know if you have touched the combat system yet. I had once completely rewritten it as the internal logic was so strange that a prediction of the outcome of changes was almost impossible, even when calculating the odds per Excel.