Differenze tra le versioni di "Modulo:EffTipi"

1 465 byte aggiunti ,  01:55, 6 ott 2014
Il modulo ora provvede a generare dinamicamente due tabelle, con i tipi che hanno immunità e con le abilità che influenzano la compatibilità tra tipi; aggiunta l'abilità di MegaRayquaza: Flusso Delta *** sovrascritto il testo esistente ***
(Aggiunta abilità Archeoevoluzioni *** sovrascritto il testo esistente ***)
(Il modulo ora provvede a generare dinamicamente due tabelle, con i tipi che hanno immunità e con le abilità che influenzano la compatibilità tra tipi; aggiunta l'abilità di MegaRayquaza: Flusso Delta *** sovrascritto il testo esistente ***)
 
local et = {}
 
local tab = require('Modulo:Wikilib/tables')
 
-- Tabella contenente i valori di efficacia. Il livello esterno è il tipo attaccante, il livello interno il difensore.
 
local ability = {}
ability.terralevitazione = {levitazioneterra = 0}
ability.fuocograssospesso = {grassospessofuoco = 0.5, antifuocoghiaccio = 0.5, fuocardore = 0, pellearsa = 1.25,}
ability.antifuoco = {fuoco = 0.5}
['mare primordiale'] = 0}
ability.fuocardore = {fuoco = 0}
ability.acqua = {acquascolo = 0, assorbacqua = 0, pellearsa = 0, ['terra estrema'] = 0}
ability.elettropellearsa = {parafulminefuoco = 01.25, elettrorapid = 0, assorbivoltacqua = 0}
ability.erbaacquascolo = {mangiaerbaacqua = 0}
ability.ghiaccioassorbacqua = {grassospesso = 0ability.5}acquascolo
ability.parafulmine = {elettro = 0}
ability.elettrorapid = ability.parafulmine
ability.assorbivolt = ability.parafulmine
ability.mangiaerba = {erba = 0}
ability['mare primordiale'] = 0}ability.fuocardore
ability['terra estrema'] = ability.acquascolo
ability['flusso delta'] = {elettro = 0, ghiaccio = 0, roccia = 0}
 
-- Creazione dinamica di una table contenente tutte le
-- abilità che influenzano l'efficacia tipi, ad oguna
-- delle quali è associata una table con i tipi da essa
-- influenzati. Le abilità sono gli indici e i tipi
-- influenzati gli elementi associati, es: all'indice
-- pellearsa corrisponde una table contenente i tipi
-- fuoco e acqua. Fanno eccezione magidifesa, filtro e
-- solidroccia, che non hanno tipi associati fissi
 
et.modTypesAbil = {magidifesa = {}, filtro = {}, solidroccia = {}}
for abil, types in pairs(ability) do
et.modTypesAbil[abil] = {}
for Type, eff in pairs(types) do
table.insert(et.modTypesAbil[abil], Type)
end
end
 
-- Creazione dinamica di uan table con i tipi che hanno
-- immunità, con associati i tipi a cui sono immuni. I
-- primi sono gli indici, i secondi gli elementi di una
-- table associata agli indici, es: all'indice spettro
-- è associata una table contenente i tipi lotta e normale
 
et.typesHaveImm = {}
for atk, defs in pairs(eff) do
for def, eff in pairs(defs) do
if eff == 0 then
if type(et.typesHaveImm[def]) ~= 'table' then
et.typesHaveImm[def] = {}
end
table.insert(et.typesHaveImm[def], atk)
end
end
end
 
-- 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(aatk, d1def1, d2def2, abil)
local e = eff[aatk][d1def1]
if d2def2 ~= d1def1 then
e = e * eff[aatk][d2def2]
end
if ability[aabil] and ability[aabil][abilatk] then
return e * ability[aabil][abilatk]
elseif e >= 2 and (abil == 'filtro' or abil == 'solidroccia') then
return e * 0.75
for k in pairs(eff) do
if k ~= 'coleottero' and test(k) then
table.insert(t, k)
end
end
106 640

contributi