Bonjour,
Dans la série tutos, voici la gestion des résistances dans vos intelligences artificielles.
Le code est beaucoup commenté pour que vous en compreniez chaque lignes.
Si vous avez des questions ou des remarques, comme d'habitude, n'hésitez pas à apposer une réponse sur ce sujet.
Dans la série tutos, voici la gestion des résistances dans vos intelligences artificielles.
Le code est beaucoup commenté pour que vous en compreniez chaque lignes.
Attention : le code ne comprend pas la partie de vérification si la cible est ennemie, ni si celle-ci est une invocation !
Code:
local entitiesList = fight:getAllEntities()
local entitiesCount = fight:getEntitiesCount()
local cellIDEnnemy = fight:getNearestEnemy()
for i = 0, entitiesCount - 1 do
if cellIDEnnemy == entitiesList[i].CellId then -- Ici, c'est l'entité que l'on souhaite attaquer
-- On stocke dans des variables pour plus de visibilité dans le code
-- le pourcentage de résistance dans chaque élément
local resNeutre = entitiesList[i].Stats.neutralElementResistPercent
local resTerre = entitiesList[i].Stats.earthElementResistPercent
local resEau = entitiesList[i].Stats.waterElementResistPercent
local resAgi = entitiesList[i].Stats.airElementResistPercent
local resIntel = entitiesList[i].Stats.fireElementResistPercent
-- Enfin, on stocke les valeurs dans un tableau sous la forme
-- Neutre - Terre - Eau - Agilité - Intelligence
local resTable = {resNeutre, resTerre, resEau, resAgi, resIntel}
-- On parcours le tableau à la recherche de la résistance la plus basse
local resistance = 100000 -- on met une valeur incroyablement grande (on va du plus grand au plus petit)
local index -- permettra de stocker l'index, et donc de savoir dans quel élément il faut frapper
for k, v in ipairs(resTable) do -- Pour chaque valeur dans le tableau
if v < resistance then -- Si v (valeur actuelle parcourue) est inférieure à resistance
resistance = v -- On change la valeur de resistance par v
index = k -- On stocke l'index, qui servira dans le "if" d'en dessous
end
end
-- Comme il n'y a pas de "switch case" natif en LUA, on passe par un "if"
if index == 1 then
-- Plus faible = neutre
elseif index == 2 then
-- plus faible = terre
elseif index == 3 then
-- plus faible = eau
elseif index == 4 then
-- plus faible = agilité
elseif index == 5 then
-- plus faible = intelligence
end
end
end
Si vous avez des questions ou des remarques, comme d'habitude, n'hésitez pas à apposer une réponse sur ce sujet.
Last edited: