Voici une réponse qui explique tous les problèmes apparents avec l'arithmétique, par exemple le problème de l'erreur de 1, ou les fantômes des modificateurs additifs.
Le facteur de conversion exact des tuiles/mobilité est le suivant 0.666 . Cela diffère du facteur prévu de 1/1,5 (ou 2/3), qui équivaut à 0,666(6) en décimal, avec un nombre infini de 6 à la fin. Comme le jeu ne peut pas traiter les nombres de précision infinie, il les tronque à 0,666, avec 3 ou plus de 6 de fin. De ce fait, nous avons maintenant 1/0,666 ou 1,5015 points de mobilité par tuile.
Par exemple, avec la mobilité 12, nous avons :
mouvement bleu : 12 * 0.666 = 12/1.5015 = 7.99 => round_down(7.99) = 7 tuiles coup jaune : 12 * 0.666 * 2 = 15.98 => round_down(15.98) = 15 tuiles
Nous obtenons donc le mouvement réel de 7/15 tuiles au lieu des 8/16 tuiles prévues pour une valeur de mobilité de 12.
J'ai testé tous les mouvements (simple/double pour les droites et les diagonales) pour toutes les valeurs de mobilité entre 3-30, et j'ai confirmé que le facteur de 0.666 prédit correctement 100% des cas en supposant que les nombres fractionnaires de tuiles sont toujours arrondis à l'inférieur.
J'ai mis à jour la page de ufopaedia.org sur Mouvement et j'en dirai plus à ce sujet dans le page de discussion
Cette conversion fonctionne également pour la portée et le rayon des objets à lancer (par exemple, les grenades). Par exemple, une grenade AP a un rayon d'explosion de 5,6 de mobilité, ce qui équivaut à 5,6 * 0,666 = 3,73 carreaux droits, arrondis à 3 carreaux, et aussi 5,6*0,666/1,414 = 2,6 carreaux diagonaux, arrondis à 2 carreaux diagonaux.