Metalichap ~~> Désolé de te décevoir mais tu ne peux pas faire 40 000 PV de dégât avec les armes maudites.
Voici l´explication :
"Dans un programme informatique (ou en locurence, un jeu vidéo) quand une variable doit être utilisée, il faut lui attribuer une place dans le système (la notion d´infini n´existe pas en info, on est en effet limité par les performances du matos...). Cette variable sera sans doute influencée par des paramètres quelconques (ici stats, equipements etc).
Pour lui réserver une place, on déclare cette variable comme étant d´un certain type : Char, Short, Long ou Long long. Les places attribuées sont respectivement de 8, 16, 32 et 64 bits.
Pour vous donner une idée de l´ordre de grandeur, la quantité de valeurs décimales réservées sont simplement 2^8, 2^16, 2^32 et 2^64.
Les développeurs doivent éviter d´occuper inutilement la mémoire, ils prendront dont la quantité la plus petite.
Prenons le cas de 16 bits.
2^16 = 65536
Par défaut, l´intervalle de valeurs est : [-32768;32567] (soit en effet 2^16 valeurs.)
Il s´agira ici donc d´une variable de type Signed Short.
Les développeurs se sont certainement dit que aucun joueur ne dépasserait les 32567 de limite...ils ont eu visiblement tord. En cas de dépassement de la valeur max, on fait une boucle et on repart par les valeurs négatives. Si par exemple un joueur devait faire 40000 dégats il ferait en réalité -32335 dégats ^^
Ainsi les -28798 ou -29157 sont expliqués.
Si la variable aurait été Unsigned Short, l´intervalle aurait été [0;65535]... sans prendre plus de mémoire, et en évitant ce genre de bug ^^;"
Source :
http://kingdom-of-tales.net/viewtopic.php?topic=59&cat=10&page=6