Si ( Le soldat est en collision avec un autre (cad deux cylindres se touchent) ET si les deux soldats sont dans une armée opposée ) { On détermine l'angle entre notre soldat et celui avec lequel il est en collision; Si ( Cet angle est différent de 0 (cad le soldat n'est pas aligné avec celui avec lequel il est en contact) ) { On aligne le soldat face à celui avec lequel il est en contact; } Sinon { Si ( Le soldat a le droit de lancer une attaque (cad il n'est pas en train de se manger un coup ou il n'a pas déjà lancé une attaque récemment) ) { On lance une animation d'attaque sélectionnée au hasard. } } }
Si (Le soldat est en collision avec un point d'attaque) { On récupère les données du soldat qui a lancé ladite attaque; On calcule l'angle entre notre soldat et celui qui a lancé l'attaque; On recalcule le facteur de protection de bouclier par rapport à l'angle (cad plus l'angle est éloigné de celui de la position du bouclier (à gauche et en face), plus ce facteur est diminué); On recalcule le facteur de protection par esquive par rapport à l'angle (cad plus l'angle est éloigné de celui de la position de l'esquive (en face), plus ce facteur est diminué); On calcule le résultat de l'attaque via une équation du style : Résultat de l'attaque = {Facteur aléatoire} + {Facteur de bouclier + Facteur d'armure + Facteur d'esquive} - {Valeur d'attaque du soldat ayant frappé + Bonus éventuels (efficacité contre les armures, charge, pente favorable ou non...)}; Si (Le résultat est supérieur à un certain seuil (par exemple 10)) { Le soldat esquive; } Si (Le résultat est inférieur au seuil précédent mais supérieur à un certain seuil (par exemple 5)) { Le soldat pare; } Si (Le résultat est inférieur au seuil précédent mais supérieur à un certain seuil (par exemple 0)) { Si (Le Facteur de poussée de l'attaque est supérieur à un nombre tiré au sort (entre 0 et 10 par exemple)) { Le soldat chute; } Sinon { Le soldat titube; } } Si (Le résultat est inférieur au seuil précédent (donc 0)) { On enlève un point de coup au soldat; Si (Le nombre de point de coup est inférieur à 0) { Le soldat meurt; } } }
stat_pri 5, 41, no, 0, 0, melee, blade, piercing, spear, 180 ,0.38 stat_pri_attr ap stat_sec 11, 22, no, 0, 0, melee, simple, slashing, sword, 0 ,0.11