Differenze tra le versioni di "Modulo:EffTipi"

nessun oggetto della modifica
(Nuova tabella dei tipi)
eff[a].coleot = eff[a].coleot
end
 
-- Le abilità che alterano l'efficacia dei tipi.
-- il primo indice è il tipo alterato, il secondo
-- il nome dell'abilità e il terzo il valore da
-- moltiplicare. Filtro, Solidroccia e Magidifesa
-- sono trattate a parte.
 
local ability = {}
ability.terra = {levitazione = 0}
ability.fuoco = {grassospesso = 0.5, antifuoco = 0.5, fuocardore = 0, pellearsa = 1.25}
ability.acqua = {acquascolo = 0, assorbacqua = 0, pellearsa = 0}
ability.elettro = {parafulmine = 0, elettrorapid = 0, assorbivolt = 0}
ability.erba = {mangiaerba = 0}
ability.ghiaccio = {grassospesso = 0.5}
 
 
-- Calcola l'efficacia di un attacco (0 - 0.25 - 0.5 - 1 - 2 - 4)
-- si aspetta i nomi dei tipi, tutti in minuscolo
 
et.efficacia = function(a, d1, d2, abil)
local e = eff[a][d1]
if d2 ~= d1 then
e = e * eff[a][d2]
end
if e >= 2 then
if abil == 'filtro' or abil == 'solidroccia' then
return e * 0.25
elseif abil == 'magidifesa' then
return 0
end
elseif w.key_search(ability, a) and w.key_search(ability[a], abil) then
return e * ability[a][abil]
end
return e
end
-- trova tutti i tipi che attaccando tipo1,tipo2 hanno efficacia eff
 
et.difesa = function(eff, tipo1, tipo2, abil)
return cerca_tipi(function (x) return et.efficacia(x, tipo1, tipo2, abil) == eff end)
end
 
 
et.attacco = function(eff, tipo)
return cerca_tipi(function (x) return et.efficacia(tipo, x, x, 'Tanfo') == eff end)
end