Files
PathOfBuilding/Export/minions.lua
Openarl 82d42a0605 Release 1.4.4
- Fixed minion attack base damage calculation
- Fixed handling of minion damage fixup modifiers
- Improved handling of monster Blade Vortex skills
- Added support for Raise Spiders
- Added support for Spectral Spirits
- Added attack rate cap for clones
2017-04-17 21:10:22 +10:00

130 lines
3.9 KiB
Lua

#@
dofile("_common.lua")
loadDat("MonsterVarieties")
loadDat("MonsterTypes")
loadDat("MonsterResistances")
loadDat("Mods")
loadDat("GrantedEffects")
while true do
local modMap = { }
do
local lastMod
for line in io.lines("Minions/modmap.ini") do
local statName = line:match("^%[([^]]+)%]$")
if statName then
modMap[statName] = { }
lastMod = modMap[statName]
elseif line:match("^[^#].+") then
table.insert(lastMod, line)
end
end
end
local itemClassMap = {
[6] = "Claw",
[7] = "Dagger",
[8] = "Wand",
[9] = "One Handed Sword",
[10] = "One Handed Sword",
[11] = "One Handed Axe",
[12] = "One Handed Mace",
[13] = "Bow",
[14] = "Staff",
[15] = "Two Handed Sword",
[16] = "Two Handed Axe",
[17] = "Two Handed Mace",
[26] = "Shield",
[32] = "One Handed Mace",
[36] = "None",
}
for _, name in pairs({"Spectres"}) do
local out = io.open("Minions/"..name..".lua", "w")
for line in io.lines("Minions/"..name..".txt") do
local spec, args = line:match("#(%a+) ?(.*)")
if spec then
if spec == "monster" then
local key = MonsterVarieties.Id(args)[1]
if not key then
print("Invalid Id: "..args)
else
local MonsterVariety = MonsterVarieties[key]
local MonsterType = MonsterTypes[MonsterVariety.MonsterTypesKey]
out:write('minions["'..args..'"] = {\n')
out:write('\tname = "'..MonsterVariety.Name..'",\n')
out:write('\tlife = '..(MonsterVariety.LifeMultiplier/100)..',\n')
if MonsterType.Unknown4 ~= 0 then
out:write('\tenergyShield = '..(0.4 * MonsterType.Unknown4 / 100)..',\n')
end
local Resist = MonsterResistances[MonsterType.MonsterResistancesKey]
out:write('\tfireResist = '..Resist.FireMerciless..',\n')
out:write('\tcoldResist = '..Resist.ColdMerciless..',\n')
out:write('\tlightningResist = '..Resist.LightningMerciless..',\n')
out:write('\tchaosResist = '..Resist.ChaosMerciless..',\n')
out:write('\tdamage = '..(MonsterVariety.DamageMultiplier/100)..',\n')
out:write('\tdamageSpread = '..(MonsterType.Unknown5 / 100)..',\n')
out:write('\tattackTime = '..(MonsterVariety.AttackSpeed/1000)..',\n')
for _, key in ipairs(MonsterVariety.ModsKeys) do
local Mod = Mods[key]
if Mod.Id == "MonsterSpeedAndDamageFixupSmall" then
out:write('\tdamageFixup = 0.11,\n')
elseif Mod.Id == "MonsterSpeedAndDamageFixupLarge" then
out:write('\tdamageFixup = 0.22,\n')
elseif Mod.Id == "MonsterSpeedAndDamageFixupComplete" then
out:write('\tdamageFixup = 0.33,\n')
end
end
if MonsterVariety.MainHand_ItemClassesKey and itemClassMap[MonsterVariety.MainHand_ItemClassesKey] then
out:write('\tweaponType1 = "'..itemClassMap[MonsterVariety.MainHand_ItemClassesKey]..'",\n')
end
if MonsterVariety.OffHand_ItemClassesKey and itemClassMap[MonsterVariety.OffHand_ItemClassesKey] then
out:write('\tweaponType2 = "'..itemClassMap[MonsterVariety.OffHand_ItemClassesKey]..'",\n')
end
out:write('\tskillList = {\n')
for _, key in ipairs(MonsterVariety.GrantedEffectsKeys) do
out:write('\t\t"'..GrantedEffects[key].Id..'",\n')
end
out:write('\t},\n')
local modList = { }
for _, key in ipairs(MonsterVariety.ModsKeys) do
table.insert(modList, key)
end
for _, key in ipairs(MonsterVariety.Special_ModsKeys) do
table.insert(modList, key)
end
out:write('\tmodList = {\n')
for _, key in ipairs(modList) do
local Mod = Mods[key]
if modMap[Mod.Id] then
for _, mod in ipairs(modMap[Mod.Id]) do
out:write('\t\t'..mod..', -- '..Mod.Id..'\n')
end
else
out:write('\t\t-- '..Mod.Id..'\n')
end
end
out:write('\t},\n')
out:write('}\n')
end
end
else
out:write(line.."\n")
end
end
out:close()
end
print("Minion data exported.")
os.execute("xcopy Minions\\*.lua ..\\Data\\ /Y")
if io.read("*l") ~= "" then
break
end
end
os.execute("pause")