Bon, après moulte recherches sur le net j'ai compris déjà une chose :
en lua % c'est pas vraiment le modulo (et C non plus si j'ai bien compris), en tout cas ça ne marche pas de la même manière car ça ne gère pas les nombres négatifs, du coup j'ai du utiliser la fonction math.fmod()
Ça n'a aps marché pour autant avec une nouvelle valeur positive sur des itnervalle négatifs... j'ai donc pour la première fois de ma vie utilisé chat gpt pour voir, en précisant que je voulais math.abs et math.fmod, déjà du mal à savoir formuler ça
, mais il a compris et m'a fourni le code suivant :
-- Fonction qui ajoute la valeur à la valeur actuelle tout en restant dans l'intervalle [départ, limite]
function ajouterDansIntervalle(valeurActuelle, depart, limite, nouvelleValeur)
-- Calcul de l'intervalle (absolu)
local intervalle = math.abs(limite - depart) +1
-- On utilise math.fmod pour ajouter nouvelleValeur et rester dans l'intervalle
local valeurResultat = math.fmod(valeurActuelle + nouvelleValeur - depart, intervalle)
-- Si le résultat est négatif, on le ramène dans l'intervalle positif
if valeurResultat < 0 then
valeurResultat = valeurResultat + intervalle
end
-- On ajuste pour que la valeur se situe bien dans l'intervalle [depart, limite]
return depart + valeurResultat
end
-- Exemple d'utilisation
local depart = -5
local limite = -2
local valeurActuelle = -3
local nouvelleValeur = -5
local resultat = ajouterDansIntervalle(valeurActuelle, depart, limite, nouvelleValeur)
print("Résultat final : " .. resultat)
j'ai juste du rajouter +1 au calcul de la variable intervalle, j'ai fait quelques essais avec différents nombres positifs/négatifs, ça semble marcher.
Je vais transposer ça à mon objet maintenant, ça ne devrait pas être compliqué.
Je laisse la réponse là des fois que quelqu'un ait le même problème un jour 
N'hésitez pas cependant si mathématiquement vous pensez que ce n'est pas tout à fait ça, ça a marché pour mes quelques tests mais il y a peut-être des exceptions... 