Module:CalculatedStats: Difference between revisions

Jump to navigation Jump to search
no edit summary
mNo edit summary
No edit summary
Line 3: Line 3:
--Fix Mega-CD SMT1
--Fix Mega-CD SMT1
--Fix Soul Hackers
--Fix Soul Hackers
--Add Persona 2
--Add Persona 2: Eternal Punishment (formulas unknown)
--Add Shin Megami Tensei: Nine (formulas unknown)


local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
Line 12: Line 13:
end
end


local function outputCells(stat1,stat2,stat3,stat4,stat5,stat6)
local function outputCells6(stat1,stat2,stat3,stat4,stat5,stat6)
return string.format("| %s\n| %s\n| %s\n| %s\n| %s\n| %s",stat1,stat2,stat3,stat4,stat5,stat6)
return string.format("| %s\n| %s\n| %s\n| %s\n| %s\n| %s",stat1,stat2,stat3,stat4,stat5,stat6)
end
local function outputCells4(stat1,stat2,stat3,stat4)
return string.format("| %s\n| %s\n| %s\n| %s",stat1,stat2,stat3,stat4)
end
local function outputCells7(stat1,stat2,stat3,stat4,stat5,stat6,stat7)
return string.format("| %s\n| %s\n| %s\n| %s\n| %s\n| %s\n| %s",stat1,stat2,stat3,stat4,stat5,stat6,stat7)
end
end


Line 45: Line 54:
end
end
end
end
return outputCells(statTable["atk"],statTable["acc"],statTable["def"],statTable["eva"],statTable["matk"],statTable["mefc"])
return outputCells6(statTable["atk"],statTable["acc"],statTable["def"],statTable["eva"],statTable["matk"],statTable["mefc"])
end
end


Line 82: Line 91:
end
end
end
end
return outputCells(statTable["atk"],statTable["acc"],statTable["def"],statTable["eva"],statTable["matk"],statTable["mefc"])
return outputCells6(statTable["atk"],statTable["acc"],statTable["def"],statTable["eva"],statTable["matk"],statTable["mefc"])
end
end


Line 102: Line 111:
mefc = intelligence + math.floor(magic / 4)
mefc = intelligence + math.floor(magic / 4)
}
}
return outputCells(statTable["atk"],statTable["acc"],statTable["def"],statTable["eva"],statTable["matk"],statTable["mefc"])
return outputCells6(statTable["atk"],statTable["acc"],statTable["def"],statTable["eva"],statTable["matk"],statTable["mefc"])
end
end


Line 147: Line 156:
local outputMdef = bothPlatsValue("mdef")
local outputMdef = bothPlatsValue("mdef")


return outputCells(outputAtk,outputAcc,outputDef,outputEva,outputMatk,outputMdef)
return outputCells6(outputAtk,outputAcc,outputDef,outputEva,outputMatk,outputMdef)
end
end


Line 173: Line 182:
end
end
end
end
return outputCells(statTable["patk"],statTable["phit"],statTable["matk"],statTable["mhit"],statTable["def"],statTable["eva"])
return outputCells6(statTable["patk"],statTable["phit"],statTable["matk"],statTable["mhit"],statTable["def"],statTable["eva"])
end
 
function p.p2is(frame)
local args = getArgs(frame)
local level = args[1] --Level
local strength = args[2] --Strength
local vitality = args[3] --Vitality
local dexterity = args[4] --Dexterity
local agility = args[5] --Agility
local luck = args[6] --Luck
local platform = ""
if args["platform"] then
platform = string.lower(args["platform"]) --game platform
end
local statTable = {
atk = (level + strength) * 2,
def = (level + vitality) * 2,
matk = dexterity * 2 + math.floor(level * 0.8),
mdef = math.floor(dexterity * 2.5) + math.floor(vitality / 2),
atkPSP = math.floor(0.7 * ((level + strength) * 2)),
defPSP = math.floor(0.8 * ((level + vitality) * 2)),
matkPSP = math.floor(0.7 * (dexterity * 2 + math.floor(level * 0.8))),
mdefPSP = math.floor(0.8 * (math.floor(dexterity * 2.5) + math.floor(vitality / 2)))
}
local function bothPlatsValue(stat)
if platform == "psp" then
return statTable[stat.."PSP"]
elseif platform == "ps" then
return statTable[stat]
else
return frame:expandTemplate{ title = "tt", args = { statTable[stat], "PlayStation" } } .. "/" .. frame:expandTemplate{ title = "tt", args = { statTable[stat.."PSP"], "PlayStation Portable" } }
end
end
local outputAtk = bothPlatsValue("atk")
local outputDef = bothPlatsValue("def")
local outputMatk = bothPlatsValue("matk")
local outputMdef = bothPlatsValue("mdef")
 
return outputCells4(outputAtk,outputDef,outputMatk,outputMdef)
end
 
function p.smtn(frame)
local args = getArgs(frame)
local level = args[1] --Level
local strength = args[2] --Strength
local intelligence = args[3] --Intelligence
local magic = args[4] --Magic
local vitality = args[5] --Vitality
local agility = args[6] --Agility
local luck = args[7] --Luck
local statTable = {
atk = (level + strength) * 2, --Good
acc = math.floor(level * 1.5) + agility + math.floor((strength + luck) / 4),
pdef = (level + vitality) * 2 + 16,
peva = round(level * 1.5) + agility + round((intelligence + luck) / 4),
matk = (level + intelligence) * 2,
msuc = math.floor(intelligence / 4) + magic,
mdef = intelligence + level + math.floor(magic / 2) + vitality
}
local stats = { "atk", "acc", "pdef", "peva", "matk", "msuc", "mdef" }
for i, stat in ipairs(stats) do  --Manual override
if args[stat] then
statTable[stat] = args[stat]
end
end
return outputCells7(statTable["atk"],statTable["acc"],statTable["pdef"],statTable["peva"],statTable["matk"],statTable["msuc"],statTable["mdef"])
end
end


return p
return p

Navigation menu