From 0dd5281e0fd6b0d06bcd797331c4d8cf943f063e Mon Sep 17 00:00:00 2001 From: justjuangui Date: Thu, 21 Dec 2023 01:03:33 -0500 Subject: [PATCH 1/4] identify the corpsetype base on tags and corpsetypetags.dat --- src/Export/Scripts/minions.lua | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Export/Scripts/minions.lua b/src/Export/Scripts/minions.lua index bb7a45bf69..cec2759b62 100644 --- a/src/Export/Scripts/minions.lua +++ b/src/Export/Scripts/minions.lua @@ -59,6 +59,26 @@ local itemClassMap = { local directiveTable = { } +-- #buildcorpsetypes +directiveTable.buildcorpsetypes = function(state, args, out) + -- this only run once + if state.corpsetypedict then + return + end + + local corpsetypetags = dat("corpsetypetags") + state.corpsetypedict = { } + local tagIndex = corpsetypetags.colMap["Tag"] + local nameIndex = corpsetypetags.colMap["Name"] + for i=1, corpsetypetags.rowCount do + local tagString = corpsetypetags:ReadCellText(i, tagIndex) + local nameString = corpsetypetags:ReadCellText(i, nameIndex) + state.corpsetypedict[tagString] = nameString + end + + print("corpsetypedict generated") +end + -- #monster [] [] directiveTable.monster = function(state, args, out) state.varietyId = nil @@ -100,6 +120,9 @@ end -- #emit directiveTable.emit = function(state, args, out) + -- this only run once internally + directiveTable.buildcorpsetypes(state, args, out) + local monsterVariety = dat("MonsterVarieties"):GetRow("Id", state.varietyId) if not monsterVariety then print("Invalid Variety: "..state.varietyId) @@ -149,6 +172,17 @@ directiveTable.emit = function(state, args, out) out:write('\t\t"', skill, '",\n') end out:write('\t},\n') + + if state.corpsetypedict then + -- identify the corpsetype base on tags and corpsetypetags.dat + for _, tag in ipairs(monsterVariety.Tags) do + if state.corpsetypedict[tag.Id] then + out:write('\tcorpseType = "', state.corpsetypedict[tag.Id], '",\n') + break + end + end + end + local modList = { } for _, mod in ipairs(monsterVariety.Mods) do table.insert(modList, mod) From 14ab06da03369cfe1b3f1b07b4ee6c19783ad4de Mon Sep 17 00:00:00 2001 From: justjuangui Date: Fri, 22 Dec 2023 00:27:04 -0500 Subject: [PATCH 2/4] Spectre Hulking Miscreation was added, mod minionmodifier was implemented for spectres, mod playermodifier was implemented for spectres, Spectre mod playermodifier / minion modifier was implemented like buff and minionbuff, BreakDown tooltips for Spectre Buff was added, Moster Category was added in Spectre Popup, CorpseType was added to Mod validations --- src/Classes/CalcBreakdownControl.lua | 5 +++++ src/Classes/MinionListControl.lua | 14 ++++++++---- src/Classes/ModStore.lua | 27 +++++++++++++++++++++++ src/Export/Main.lua | 5 ++++- src/Export/Minions/Spectres.txt | 16 +++++++++++++- src/Export/Scripts/minions.lua | 32 +++++++++++++--------------- src/Modules/CalcPerform.lua | 14 ++++++++++++ 7 files changed, 90 insertions(+), 23 deletions(-) diff --git a/src/Classes/CalcBreakdownControl.lua b/src/Classes/CalcBreakdownControl.lua index a4792b4683..0101e66577 100644 --- a/src/Classes/CalcBreakdownControl.lua +++ b/src/Classes/CalcBreakdownControl.lua @@ -397,7 +397,10 @@ function CalcBreakdownClass:AddModSection(sectionData, modList) row.sourceName = build.data.skills[row.mod.source:match("Skill:(.+)")].name elseif sourceType == "Pantheon" then row.sourceName = row.mod.source:match("Pantheon:(.+)") + elseif sourceType == "Spectre" then + row.sourceName = row.mod.source:match("Spectre:(.+)") end + if row.mod.flags ~= 0 or row.mod.keywordFlags ~= 0 then -- Combine, sort and format modifier flags local flagNames = { } @@ -455,6 +458,8 @@ function CalcBreakdownClass:AddModSection(sectionData, modList) desc = self:FormatModName(tag.effectType) elseif tag.type == "Limit" then desc = "Limited to "..(tag.limitVar and self:FormatModName(tag.limitVar) or self:FormatModBase(row.mod, tag.limit)) + elseif tag.type == "CorpseType" then + desc = "Monster Category: "..(tag.corpseTypeList and table.concat(tag.corpseTypeList, "/") or tag.corpseType) else desc = self:FormatModName(tag.type) end diff --git a/src/Classes/MinionListControl.lua b/src/Classes/MinionListControl.lua index e912167080..efe745b562 100644 --- a/src/Classes/MinionListControl.lua +++ b/src/Classes/MinionListControl.lua @@ -49,12 +49,17 @@ function MinionListClass:AddValueTooltip(tooltip, index, minionId) if tooltip:CheckForUpdate(minionId) then local minion = self.data.minions[minionId] tooltip:AddLine(18, "^7"..minion.name) - tooltip:AddLine(14, s_format("^7Life multiplier: x%.2f", minion.life)) + + if minion.corpseType then + tooltip:AddLine(14, "^7Monster Category: "..minion.corpseType) + end + + tooltip:AddLine(14, s_format("^7Life Multiplier: x%.2f", minion.life)) if minion.energyShield then tooltip:AddLine(14, s_format("^7Energy Shield: %d%% of base Life", minion.energyShield * 100)) end if minion.armour then - tooltip:AddLine(14, s_format("^7Armour multiplier: x%.2f", minion.armour)) + tooltip:AddLine(14, s_format("^7Armour Multiplier: x%.2f", minion.armour)) end tooltip:AddLine(14, s_format("^7Resistances: %s%d^7/%s%d^7/%s%d^7/%s%d", colorCodes.FIRE, minion.fireResist, @@ -62,8 +67,9 @@ function MinionListClass:AddValueTooltip(tooltip, index, minionId) colorCodes.LIGHTNING, minion.lightningResist, colorCodes.CHAOS, minion.chaosResist )) - tooltip:AddLine(14, s_format("^7Base damage: x%.2f", minion.damage)) - tooltip:AddLine(14, s_format("^7Base attack speed: %.2f", 1 / minion.attackTime)) + tooltip:AddLine(14, s_format("^7Base Damage: x%.2f", minion.damage)) + tooltip:AddLine(14, s_format("^7Base Attack Speed: %.2f", 1 / minion.attackTime)) + for _, skillId in ipairs(minion.skillList) do if self.data.skills[skillId] then tooltip:AddLine(14, "^7Skill: "..self.data.skills[skillId].name) diff --git a/src/Classes/ModStore.lua b/src/Classes/ModStore.lua index f01b0292cc..565deef471 100644 --- a/src/Classes/ModStore.lua +++ b/src/Classes/ModStore.lua @@ -751,6 +751,33 @@ function ModStoreClass:EvalMod(mod, cfg) if band(cfg.keywordFlags, tag.keywordFlags) ~= tag.keywordFlags then return end + elseif tag.type == "CorpseType" then + -- actor should be a minion to apply + if not self.actor or not self.actor.minionData or not self.actor.minionData.corpseType then + return + end + + local match = false + + -- validate for actor and minionData + local matchName = self.actor.minionData.corpseType + matchName = matchName:lower() + if tag.corpseTypeList then + for _, name in pairs(tag.corpseTypeList) do + if name:lower() == matchName then + match = true + break + end + end + else + match = (tag.corpseType and tag.corpseType:lower() == matchName) + end + if tag.neg then + match = not match + end + if not match then + return + end end end return value diff --git a/src/Export/Main.lua b/src/Export/Main.lua index 5ab88bf243..1475359fac 100644 --- a/src/Export/Main.lua +++ b/src/Export/Main.lua @@ -172,7 +172,10 @@ function main:Init() self:LoadDatFiles() end end, nil) - self.controls.datSource:SelByValue(self.datSource.label, "label") + + if self.datSource and self.datSource.label then + self.controls.datSource:SelByValue(self.datSource.label, "label") + end self.controls.scripts = new("ButtonControl", nil, 160, 30, 100, 18, "Scripts >>", function() self:SetCurrentDat() diff --git a/src/Export/Minions/Spectres.txt b/src/Export/Minions/Spectres.txt index ca4e257a24..079c641606 100644 --- a/src/Export/Minions/Spectres.txt +++ b/src/Export/Minions/Spectres.txt @@ -227,4 +227,18 @@ local minions, mod = ... -- Ancient Wraith #spectre Metadata/Monsters/LeagueDelve/GhostEncounter/Wraith # DelveMonsterEnfeebleOnHit -- Forged Frostbearer -#spectre Metadata/Monsters/LeagueCrucible/Cold/Pyromaniac \ No newline at end of file +#spectre Metadata/Monsters/LeagueCrucible/Cold/Pyromaniac + +#spectre Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusLow + +#monster Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusMid +#mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) +#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) +#emit + +#monster Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusHigh__ +#mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) +#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) +#mod mod("PlayerModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}) +#mod mod("MinionModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}) +#emit diff --git a/src/Export/Scripts/minions.lua b/src/Export/Scripts/minions.lua index cec2759b62..3ed00d63e4 100644 --- a/src/Export/Scripts/minions.lua +++ b/src/Export/Scripts/minions.lua @@ -59,24 +59,22 @@ local itemClassMap = { local directiveTable = { } --- #buildcorpsetypes -directiveTable.buildcorpsetypes = function(state, args, out) +-- #buildCorpseTypes +directiveTable.buildCorpseTypes = function(state, args, out) -- this only run once - if state.corpsetypedict then + if state.corpseTypeDict then return end - local corpsetypetags = dat("corpsetypetags") - state.corpsetypedict = { } - local tagIndex = corpsetypetags.colMap["Tag"] - local nameIndex = corpsetypetags.colMap["Name"] - for i=1, corpsetypetags.rowCount do - local tagString = corpsetypetags:ReadCellText(i, tagIndex) - local nameString = corpsetypetags:ReadCellText(i, nameIndex) - state.corpsetypedict[tagString] = nameString + local corpseTypeTags = dat("corpsetypetags") + state.corpseTypeDict = { } + local tagIndex = corpseTypeTags.colMap["Tag"] + local nameIndex = corpseTypeTags.colMap["Name"] + for i=1, corpseTypeTags.rowCount do + local tagString = corpseTypeTags:ReadCellText(i, tagIndex) + local nameString = corpseTypeTags:ReadCellText(i, nameIndex) + state.corpseTypeDict[tagString] = nameString end - - print("corpsetypedict generated") end -- #monster [] [] @@ -121,7 +119,7 @@ end -- #emit directiveTable.emit = function(state, args, out) -- this only run once internally - directiveTable.buildcorpsetypes(state, args, out) + directiveTable.buildCorpseTypes(state, args, out) local monsterVariety = dat("MonsterVarieties"):GetRow("Id", state.varietyId) if not monsterVariety then @@ -173,11 +171,11 @@ directiveTable.emit = function(state, args, out) end out:write('\t},\n') - if state.corpsetypedict then + if state.corpseTypeDict then -- identify the corpsetype base on tags and corpsetypetags.dat for _, tag in ipairs(monsterVariety.Tags) do - if state.corpsetypedict[tag.Id] then - out:write('\tcorpseType = "', state.corpsetypedict[tag.Id], '",\n') + if state.corpseTypeDict[tag.Id] then + out:write('\tcorpseType = "', state.corpseTypeDict[tag.Id], '",\n') break end end diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 4968aaf2fa..4deb3523b3 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1743,6 +1743,20 @@ function calcs.perform(env, fullDPSSkipEHP) if modData.name == "EnemyCurseLimit" then minionCurses.limit = modData.value + 1 break + elseif modData.name == "MinionModifier" and modData.type == "LIST" then + minionBuffs["Spectre"] = minionBuffs["Spectre"] or new("ModList") + for _, modValue in pairs(modData.value) do + local copyModValue = copyTable(modValue) + copyModValue.source = "Spectre:"..spectreData.name + t_insert(minionBuffs["Spectre"], copyModValue) + end + elseif modData.name == "PlayerModifier" and modData.type == "LIST" then + buffs["Spectre"] = buffs["Spectre"] or new("ModList") + for _, modValue in pairs(modData.value) do + local copyModValue = copyTable(modValue) + copyModValue.source = "Spectre:"..spectreData.name + t_insert(buffs["Spectre"], copyModValue) + end end end end From 9da2fd0d4a7cfe63b0e2d1db8a392bb5de32096e Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 4 Jan 2024 18:04:10 +1100 Subject: [PATCH 3/4] Change variable name to monsterCategory and export values Change variable name as Monster Category is more correct Add parsing for the more attack damage mod on the Hulking Miscreation Move the export of the monster category to under the monster name --- src/Classes/CalcBreakdownControl.lua | 4 +- src/Classes/MinionListControl.lua | 4 +- src/Classes/ModStore.lua | 12 +- src/Data/Minions.lua | 39 +++++ src/Data/Spectres.lua | 235 +++++++++++++++++++++++++++ src/Export/Minions/Spectres.txt | 10 +- src/Export/Scripts/minions.lua | 43 +++-- 7 files changed, 311 insertions(+), 36 deletions(-) diff --git a/src/Classes/CalcBreakdownControl.lua b/src/Classes/CalcBreakdownControl.lua index 0101e66577..fe8f6e56b5 100644 --- a/src/Classes/CalcBreakdownControl.lua +++ b/src/Classes/CalcBreakdownControl.lua @@ -458,8 +458,8 @@ function CalcBreakdownClass:AddModSection(sectionData, modList) desc = self:FormatModName(tag.effectType) elseif tag.type == "Limit" then desc = "Limited to "..(tag.limitVar and self:FormatModName(tag.limitVar) or self:FormatModBase(row.mod, tag.limit)) - elseif tag.type == "CorpseType" then - desc = "Monster Category: "..(tag.corpseTypeList and table.concat(tag.corpseTypeList, "/") or tag.corpseType) + elseif tag.type == "MonsterCategory" then + desc = "Monster Category: "..(tag.monsterCategoryList and table.concat(tag.monsterCategoryList, "/") or tag.monsterCategory) else desc = self:FormatModName(tag.type) end diff --git a/src/Classes/MinionListControl.lua b/src/Classes/MinionListControl.lua index efe745b562..b3db0c5b04 100644 --- a/src/Classes/MinionListControl.lua +++ b/src/Classes/MinionListControl.lua @@ -50,8 +50,8 @@ function MinionListClass:AddValueTooltip(tooltip, index, minionId) local minion = self.data.minions[minionId] tooltip:AddLine(18, "^7"..minion.name) - if minion.corpseType then - tooltip:AddLine(14, "^7Monster Category: "..minion.corpseType) + if minion.monsterCategory then + tooltip:AddLine(14, "^7Monster Category: "..minion.monsterCategory) end tooltip:AddLine(14, s_format("^7Life Multiplier: x%.2f", minion.life)) diff --git a/src/Classes/ModStore.lua b/src/Classes/ModStore.lua index 565deef471..d6d7eb0adf 100644 --- a/src/Classes/ModStore.lua +++ b/src/Classes/ModStore.lua @@ -751,26 +751,26 @@ function ModStoreClass:EvalMod(mod, cfg) if band(cfg.keywordFlags, tag.keywordFlags) ~= tag.keywordFlags then return end - elseif tag.type == "CorpseType" then + elseif tag.type == "MonsterCategory" then -- actor should be a minion to apply - if not self.actor or not self.actor.minionData or not self.actor.minionData.corpseType then + if not self.actor or not self.actor.minionData or not self.actor.minionData.monsterCategory then return end local match = false -- validate for actor and minionData - local matchName = self.actor.minionData.corpseType + local matchName = self.actor.minionData.monsterCategory matchName = matchName:lower() - if tag.corpseTypeList then - for _, name in pairs(tag.corpseTypeList) do + if tag.monsterCategoryList then + for _, name in pairs(tag.monsterCategoryList) do if name:lower() == matchName then match = true break end end else - match = (tag.corpseType and tag.corpseType:lower() == matchName) + match = (tag.monsterCategory and tag.monsterCategory:lower() == matchName) end if tag.neg then match = not match diff --git a/src/Data/Minions.lua b/src/Data/Minions.lua index 0356d39d90..472a3f84c5 100644 --- a/src/Data/Minions.lua +++ b/src/Data/Minions.lua @@ -8,6 +8,7 @@ local minions, mod = ... minions["RaisedZombie"] = { name = "Raised Zombie", + monsterCategory = "Undead", life = 3.75, armour = 0.7, fireResist = 40, @@ -33,6 +34,7 @@ minions["RaisedZombie"] = { minions["SummonedChaosGolem"] = { name = "Chaos Golem", + monsterCategory = "Construct", life = 6.9, energyShield = 0.2, fireResist = 40, @@ -59,6 +61,7 @@ minions["SummonedChaosGolem"] = { minions["SummonedFlameGolem"] = { name = "Flame Golem", + monsterCategory = "Construct", life = 5.82, energyShield = 0.4, fireResist = 70, @@ -87,6 +90,7 @@ minions["SummonedFlameGolem"] = { minions["SummonedIceGolem"] = { name = "Ice Golem", + monsterCategory = "Construct", life = 5.82, energyShield = 0.4, fireResist = 40, @@ -114,6 +118,7 @@ minions["SummonedIceGolem"] = { minions["SummonedLightningGolem"] = { name = "Lightning Golem", + monsterCategory = "Construct", life = 5.82, energyShield = 0.2, fireResist = 40, @@ -141,6 +146,7 @@ minions["SummonedLightningGolem"] = { minions["SummonedStoneGolem"] = { name = "Stone Golem", + monsterCategory = "Construct", life = 7.25, armour = 0.6, fireResist = 40, @@ -166,6 +172,7 @@ minions["SummonedStoneGolem"] = { minions["SummonedRagingSpirit"] = { name = "Raging Spirit", + monsterCategory = "Construct", life = 2.16, fireResist = 40, coldResist = 40, @@ -191,6 +198,7 @@ minions["SummonedRagingSpirit"] = { minions["SummonedEssenceSpirit"] = { name = "Essence Spirit", + monsterCategory = "Construct", life = 2.25, fireResist = 40, coldResist = 40, @@ -213,6 +221,7 @@ minions["SummonedEssenceSpirit"] = { minions["SummonedSpectralWolf"] = { name = "Spectral Wolf Companion", + monsterCategory = "Beast", life = 4.5, fireResist = 40, coldResist = 40, @@ -234,6 +243,7 @@ minions["SummonedSpectralWolf"] = { minions["RaisedSkeleton"] = { name = "Summoned Skeleton", + monsterCategory = "Humanoid", life = 1.05, fireResist = 40, coldResist = 40, @@ -260,6 +270,7 @@ minions["RaisedSkeleton"] = { minions["RaisedSkeletonCaster"] = { name = "Summoned Skeleton Caster", + monsterCategory = "Humanoid", life = 1.05, energyShield = 0.4, fireResist = 40, @@ -284,6 +295,7 @@ minions["RaisedSkeletonCaster"] = { minions["RaisedSkeletonArcher"] = { name = "Summoned Skeleton Archer", + monsterCategory = "Humanoid", life = 1.05, fireResist = 40, coldResist = 40, @@ -305,6 +317,7 @@ minions["RaisedSkeletonArcher"] = { minions["Clone"] = { name = "Clone", + monsterCategory = "Construct", life = 1, fireResist = 40, coldResist = 40, @@ -325,6 +338,7 @@ minions["Clone"] = { minions["ArrowClone"] = { name = "Clone", + monsterCategory = "Construct", life = 1.5, fireResist = 40, coldResist = 40, @@ -345,6 +359,7 @@ minions["ArrowClone"] = { minions["SpiderMinion"] = { name = "Spider Minion", + monsterCategory = "Beast", life = 1.8, fireResist = 40, coldResist = 40, @@ -368,6 +383,7 @@ minions["SpiderMinion"] = { minions["AnimatedWeapon"] = { name = "Animated Weapon", + monsterCategory = "Construct", life = 4, fireResist = 40, coldResist = 40, @@ -388,6 +404,7 @@ minions["AnimatedWeapon"] = { minions["AnimatedArmour"] = { name = "Animated Guardian", + monsterCategory = "Construct", life = 5, armour = 0.5, fireResist = 40, @@ -412,6 +429,7 @@ minions["AnimatedArmour"] = { minions["IcyRagingSpirit"] = { name = "Grave Spirit", + monsterCategory = "Construct", life = 3.75, fireResist = 40, coldResist = 40, @@ -434,6 +452,7 @@ minions["IcyRagingSpirit"] = { minions["UniqueAnimatedWeapon"] = { name = "Dancing Dervish", + monsterCategory = "Construct", life = 5, fireResist = 40, coldResist = 40, @@ -454,6 +473,7 @@ minions["UniqueAnimatedWeapon"] = { minions["SummonedPhantasm"] = { name = "Summoned Phantasm", + monsterCategory = "Undead", life = 1.58, energyShield = 0.2, fireResist = 40, @@ -477,6 +497,7 @@ minions["SummonedPhantasm"] = { minions["HeraldOfAgonySpiderPlated"] = { name = "Agony Crawler", + monsterCategory = "Beast", life = 1.5, fireResist = 0, coldResist = 0, @@ -503,6 +524,7 @@ minions["HeraldOfAgonySpiderPlated"] = { minions["AxisEliteSoldierHeraldOfLight"] = { name = "Sentinel of Purity", + monsterCategory = "Humanoid", life = 3.4, armour = 0.5, fireResist = 40, @@ -528,6 +550,7 @@ minions["AxisEliteSoldierHeraldOfLight"] = { minions["HolyLivingRelic"] = { name = "Holy Relic", + monsterCategory = "Construct", life = 6, energyShield = 0.6, fireResist = 40, @@ -551,6 +574,7 @@ minions["HolyLivingRelic"] = { minions["AxisEliteSoldierDominatingBlow"] = { name = "Sentinel of Dominance", + monsterCategory = "Humanoid", life = 4, armour = 0.5, fireResist = 40, @@ -578,6 +602,7 @@ minions["AxisEliteSoldierDominatingBlow"] = { minions["AxisEliteSoldierDominatingBlowVaal"] = { name = "Ascended Sentinel of Dominance", + monsterCategory = "Humanoid", life = 4, armour = 0.5, fireResist = 40, @@ -605,6 +630,7 @@ minions["AxisEliteSoldierDominatingBlowVaal"] = { minions["AbsolutionTemplarJudge"] = { name = "Sentinel of Absolution", + monsterCategory = "Humanoid", life = 4, energyShield = 0.2, armour = 0.5, @@ -629,6 +655,7 @@ minions["AbsolutionTemplarJudge"] = { minions["AbsolutionTemplarJudgeVaal"] = { name = "Ascended Sentinel of Absolution", + monsterCategory = "Humanoid", life = 4, energyShield = 0.2, armour = 0.5, @@ -656,6 +683,7 @@ minions["AbsolutionTemplarJudgeVaal"] = { minions["RhoaUniqueSummoned"] = { name = "Summoned Rhoa", + monsterCategory = "Beast", life = 9, armour = 0.2, fireResist = 40, @@ -681,6 +709,7 @@ minions["RhoaUniqueSummoned"] = { minions["SnakeSpitUniqueSummoned"] = { name = "Summoned Cobra", + monsterCategory = "Beast", life = 9, armour = 0.15, fireResist = 40, @@ -704,6 +733,7 @@ minions["SnakeSpitUniqueSummoned"] = { minions["DropBearUniqueSummoned"] = { name = "Summoned Ursa", + monsterCategory = "Beast", life = 9, armour = 0.5, fireResist = 40, @@ -729,6 +759,7 @@ minions["DropBearUniqueSummoned"] = { minions["SummonedCarrionGolem"] = { name = "Carrion Golem", + monsterCategory = "Construct", life = 5.82, energyShield = 0.4, fireResist = 40, @@ -756,6 +787,7 @@ minions["SummonedCarrionGolem"] = { minions["SkitterbotCold"] = { name = "Chilling Skitterbot", + monsterCategory = "Construct", life = 1, fireResist = 0, coldResist = 0, @@ -777,6 +809,7 @@ minions["SkitterbotCold"] = { minions["SkitterbotLightning"] = { name = "Shocking Skitterbot", + monsterCategory = "Construct", life = 1, fireResist = 0, coldResist = 0, @@ -798,6 +831,7 @@ minions["SkitterbotLightning"] = { minions["SummonedReaper"] = { name = "Reaper", + monsterCategory = "Undead", life = 3.74, armour = 1, fireResist = 40, @@ -833,6 +867,7 @@ minions["SummonedReaper"] = { minions["SummonedArbalists"] = { name = "Summoned Arbalist", + monsterCategory = "Undead", life = 7.41, fireResist = 40, coldResist = 40, @@ -854,6 +889,7 @@ minions["SummonedArbalists"] = { minions["GuardianSentinel"] = { name = "Sentinel of Radiance", + monsterCategory = "Humanoid", life = 12, armour = 0.5, fireResist = 40, @@ -900,6 +936,7 @@ minions["GuardianRelicAll"] = { minions["GuardianRelicFire"] = { name = "Fire Relic", + monsterCategory = "Construct", life = 4, energyShield = 0.6, fireResist = 40, @@ -922,6 +959,7 @@ minions["GuardianRelicFire"] = { minions["GuardianRelicCold"] = { name = "Cold Relic", + monsterCategory = "Construct", life = 4, energyShield = 0.6, fireResist = 40, @@ -944,6 +982,7 @@ minions["GuardianRelicCold"] = { minions["GuardianRelicLightning"] = { name = "Lightning Relic", + monsterCategory = "Construct", life = 4, energyShield = 0.6, fireResist = 40, diff --git a/src/Data/Spectres.lua b/src/Data/Spectres.lua index 5f4cfe31fe..95f753cc18 100644 --- a/src/Data/Spectres.lua +++ b/src/Data/Spectres.lua @@ -9,6 +9,7 @@ local minions, mod = ... -- Blackguard minions["Metadata/Monsters/Axis/AxisCaster"] = { name = "Blackguard Mage", + monsterCategory = "Humanoid", life = 0.9, energyShield = 0.2, fireResist = 0, @@ -35,6 +36,7 @@ minions["Metadata/Monsters/Axis/AxisCaster"] = { } minions["Metadata/Monsters/Axis/AxisCasterArc"] = { name = "Blackguard Arcmage", + monsterCategory = "Humanoid", life = 0.9, energyShield = 0.2, fireResist = 0, @@ -61,6 +63,7 @@ minions["Metadata/Monsters/Axis/AxisCasterArc"] = { } minions["Metadata/Monsters/Axis/AxisCasterLunaris"] = { name = "Lunarsworn Wintermage", + monsterCategory = "Humanoid", life = 0.9, energyShield = 0.2, fireResist = 0, @@ -86,6 +89,7 @@ minions["Metadata/Monsters/Axis/AxisCasterLunaris"] = { } minions["Metadata/Monsters/Axis/AxisEliteSoldier3Champion"] = { name = "Solaris Champion", + monsterCategory = "Humanoid", life = 1.5, armour = 0.4, fireResist = 20, @@ -112,6 +116,7 @@ minions["Metadata/Monsters/Axis/AxisEliteSoldier3Champion"] = { } minions["Metadata/Monsters/Axis/AxisExperimenter"] = { name = "Mortality Experimenter", + monsterCategory = "Humanoid", life = 0.96, energyShield = 0.2, fireResist = 0, @@ -135,6 +140,7 @@ minions["Metadata/Monsters/Axis/AxisExperimenter"] = { } minions["Metadata/Monsters/Axis/AxisExperimenter2"] = { name = "Flesh Sculptor", + monsterCategory = "Humanoid", life = 0.96, energyShield = 0.2, fireResist = 0, @@ -158,6 +164,7 @@ minions["Metadata/Monsters/Axis/AxisExperimenter2"] = { } minions["Metadata/Monsters/Axis/AxisExperimenterRaiseZombie"] = { name = "Reanimator", + monsterCategory = "Humanoid", life = 0.96, energyShield = 0.2, fireResist = 0, @@ -182,6 +189,7 @@ minions["Metadata/Monsters/Axis/AxisExperimenterRaiseZombie"] = { -- Bandit minions["Metadata/Monsters/Bandits/BanditBowExplosiveArrow"] = { name = "Oak's Sniper", + monsterCategory = "Humanoid", life = 1.08, fireResist = 0, coldResist = 0, @@ -203,6 +211,7 @@ minions["Metadata/Monsters/Bandits/BanditBowExplosiveArrow"] = { } minions["Metadata/Monsters/Bandits/BanditBowPoisonArrow"] = { name = "Alira's Deadeye", + monsterCategory = "Humanoid", life = 1.08, fireResist = 0, coldResist = 0, @@ -224,6 +233,7 @@ minions["Metadata/Monsters/Bandits/BanditBowPoisonArrow"] = { } minions["Metadata/Monsters/Bandits/BanditMeleeWarlordsMarkMaul"] = { name = "Oak's Devoted", + monsterCategory = "Humanoid", life = 1.15, armour = 0.2, fireResist = 0, @@ -246,6 +256,7 @@ minions["Metadata/Monsters/Bandits/BanditMeleeWarlordsMarkMaul"] = { } minions["Metadata/Monsters/Bandit/DockworkerChampion_"] = { name = "Foreman", + monsterCategory = "Humanoid", life = 2.1, armour = 0.5, fireResist = 0, @@ -267,6 +278,7 @@ minions["Metadata/Monsters/Bandit/DockworkerChampion_"] = { } minions["Metadata/Monsters/Bandits/BanditBowChampion"] = { name = "Kraityn's Sentry", + monsterCategory = "Humanoid", life = 1.57, fireResist = 0, coldResist = 0, @@ -289,6 +301,7 @@ minions["Metadata/Monsters/Bandits/BanditBowChampion"] = { } minions["Metadata/Monsters/Bandits/BanditRangedTornadoShotPetrified"] = { name = "Imperial Vanguard", + monsterCategory = "Humanoid", life = 1.08, fireResist = 0, coldResist = 0, @@ -310,6 +323,7 @@ minions["Metadata/Monsters/Bandits/BanditRangedTornadoShotPetrified"] = { -- Beast minions["Metadata/Monsters/Beasts/BeastCaveDegenAura"] = { name = "Shaggy Monstrosity", + monsterCategory = "Beast", life = 2.1, armour = 0.6, fireResist = 0, @@ -331,6 +345,7 @@ minions["Metadata/Monsters/Beasts/BeastCaveDegenAura"] = { } minions["Metadata/Monsters/Beasts/BeastVulnerabilityCurse"] = { name = "Armour Cruncher", + monsterCategory = "Beast", life = 2.1, armour = 0.6, fireResist = 0, @@ -352,6 +367,7 @@ minions["Metadata/Monsters/Beasts/BeastVulnerabilityCurse"] = { } minions["Metadata/Monsters/Beasts/BeastCleaveEnduringCry"] = { name = "Hairy Bonecruncher", + monsterCategory = "Beast", life = 2.1, armour = 0.6, fireResist = 0, @@ -377,6 +393,7 @@ minions["Metadata/Monsters/Beasts/BeastCleaveEnduringCry"] = { -- Blood Apes minions["Metadata/Monsters/BloodChieftain/MonkeyChiefBloodEnrage"] = { name = "Carnage Chieftain", + monsterCategory = "Beast", life = 2.4, armour = 0.2, fireResist = 75, @@ -401,6 +418,7 @@ minions["Metadata/Monsters/BloodChieftain/MonkeyChiefBloodEnrage"] = { } minions["Metadata/Monsters/BloodChieftain/MonkeyChiefBloodParasite"] = { name = "Host Chieftain", + monsterCategory = "Beast", life = 2.4, armour = 0.2, fireResist = 75, @@ -424,6 +442,7 @@ minions["Metadata/Monsters/BloodChieftain/MonkeyChiefBloodParasite"] = { -- Bone Stalker minions["Metadata/Monsters/BoneStalker/BoneStalker"] = { name = "Bone Stalker", + monsterCategory = "Humanoid", life = 2.1, armour = 0.75, fireResist = 0, @@ -447,6 +466,7 @@ minions["Metadata/Monsters/BoneStalker/BoneStalker"] = { -- Bull minions["Metadata/Monsters/Bull/Bull"] = { name = "Fighting Bull", + monsterCategory = "Beast", life = 2.38, armour = 1, fireResist = 0, @@ -469,6 +489,7 @@ minions["Metadata/Monsters/Bull/Bull"] = { -- Cage Spider minions["Metadata/Monster/CageSpider/CageSpider2"] = { name = "Sandworn Slaves", + monsterCategory = "Undead", life = 4.4, armour = 0.6, fireResist = 0, @@ -491,6 +512,7 @@ minions["Metadata/Monster/CageSpider/CageSpider2"] = { -- Cannibals minions["Metadata/Monsters/Cannibal/CannibalMaleChampion"] = { name = "Cannibal Fire-eater", + monsterCategory = "Humanoid", life = 1.44, fireResist = 0, coldResist = 0, @@ -513,6 +535,7 @@ minions["Metadata/Monsters/Cannibal/CannibalMaleChampion"] = { -- Goatmen minions["Metadata/Monsters/Goatman/GoatmanLeapSlam"] = { name = "Goatman", + monsterCategory = "Beast", life = 1.1, armour = 0.15, fireResist = 40, @@ -536,6 +559,7 @@ minions["Metadata/Monsters/Goatman/GoatmanLeapSlam"] = { } minions["Metadata/Monsters/Goatman/GoatmanLightningLeapSlamMaps"] = { name = "Bearded Devil", + monsterCategory = "Beast", life = 1, armour = 0.15, fireResist = 40, @@ -560,6 +584,7 @@ minions["Metadata/Monsters/Goatman/GoatmanLightningLeapSlamMaps"] = { } minions["Metadata/Monsters/Goatman/GoatmanShamanFireball"] = { name = "Goatman Shaman", + monsterCategory = "Beast", life = 1, energyShield = 0.2, fireResist = 75, @@ -582,6 +607,7 @@ minions["Metadata/Monsters/Goatman/GoatmanShamanFireball"] = { } minions["Metadata/Monsters/Goatman/GoatmanShamanFireChampion"] = { name = "Goatman Fire-raiser", + monsterCategory = "Beast", life = 1.4, energyShield = 0.2, fireResist = 75, @@ -605,6 +631,7 @@ minions["Metadata/Monsters/Goatman/GoatmanShamanFireChampion"] = { } minions["Metadata/Monsters/Goatman/GoatmanShamanLightning"] = { name = "Bearded Shaman", + monsterCategory = "Beast", life = 1, energyShield = 0.2, fireResist = 0, @@ -628,6 +655,7 @@ minions["Metadata/Monsters/Goatman/GoatmanShamanLightning"] = { } minions["Metadata/Monsters/Goatman/MountainGoatmanChampion"] = { name = "Colossus Crusher", + monsterCategory = "Beast", life = 2.1, armour = 0.15, fireResist = 0, @@ -650,6 +678,7 @@ minions["Metadata/Monsters/Goatman/MountainGoatmanChampion"] = { } minions["Metadata/Monsters/Goatman/MountainGoatmanShamanIceSpear"] = { name = "Alpine Shaman", + monsterCategory = "Beast", life = 1, energyShield = 0.2, fireResist = 0, @@ -671,6 +700,7 @@ minions["Metadata/Monsters/Goatman/MountainGoatmanShamanIceSpear"] = { -- Miscreation minions["Metadata/Monsters/DemonFemale/DemonFemale"] = { name = "Whipping Miscreation", + monsterCategory = "Demon", life = 0.99, fireResist = 0, coldResist = 0, @@ -691,6 +721,7 @@ minions["Metadata/Monsters/DemonFemale/DemonFemale"] = { } minions["Metadata/Monsters/DemonModular/DemonFemaleRanged"] = { name = "Tentacle Miscreation", + monsterCategory = "Demon", life = 0.96, fireResist = 0, coldResist = 0, @@ -716,6 +747,7 @@ minions["Metadata/Monsters/DemonModular/DemonFemaleRanged"] = { } minions["Metadata/Monsters/DemonModular/DemonFemaleRanged2"] = { name = "Lunaris Concubine", + monsterCategory = "Demon", life = 0.96, fireResist = 0, coldResist = 40, @@ -735,6 +767,7 @@ minions["Metadata/Monsters/DemonModular/DemonFemaleRanged2"] = { } minions["Metadata/Monsters/DemonModular/DemonModularBladeVortex"] = { name = "Slashed Miscreation", + monsterCategory = "Demon", life = 1.5, fireResist = 0, coldResist = 0, @@ -755,6 +788,7 @@ minions["Metadata/Monsters/DemonModular/DemonModularBladeVortex"] = { } minions["Metadata/Monsters/DemonModular/DemonModularFire"] = { name = "Burned Miscreation", + monsterCategory = "Demon", life = 1, fireResist = 40, coldResist = 0, @@ -777,6 +811,7 @@ minions["Metadata/Monsters/DemonModular/DemonModularFire"] = { -- Maw minions["Metadata/Monsters/Frog/Frog"] = { name = "Fetid Maw", + monsterCategory = "Beast", life = 1, fireResist = 0, coldResist = 0, @@ -797,6 +832,7 @@ minions["Metadata/Monsters/Frog/Frog"] = { } minions["Metadata/Monsters/Frog/Frog2"] = { name = "Murk Fiend", + monsterCategory = "Beast", life = 1, fireResist = 0, coldResist = 0, @@ -818,6 +854,7 @@ minions["Metadata/Monsters/Frog/Frog2"] = { -- Chimeral minions["Metadata/Monsters/GemMonster/Iguana"] = { name = "Plumed Chimeral", + monsterCategory = "Beast", life = 1.25, energyShield = 0.2, fireResist = 52, @@ -839,6 +876,7 @@ minions["Metadata/Monsters/GemMonster/Iguana"] = { } minions["Metadata/Monsters/GemMonster/IguanaChrome"] = { name = "Chrome-infused Chimeral", + monsterCategory = "Beast", life = 1.54, energyShield = 0.2, fireResist = 52, @@ -863,6 +901,7 @@ minions["Metadata/Monsters/GemMonster/IguanaChrome"] = { -- Ghost Pirate minions["Metadata/Monsters/GhostPirates/GhostPirateBlackBowMaps"] = { name = "Spectral Bowman", + monsterCategory = "Undead", life = 0.96, energyShield = 0.2, fireResist = 0, @@ -886,6 +925,7 @@ minions["Metadata/Monsters/GhostPirates/GhostPirateBlackBowMaps"] = { } minions["Metadata/Monsters/GhostPirates/GhostPirateBlackFlickerStrikeMaps"] = { name = "Cursed Mariner", + monsterCategory = "Undead", life = 1, energyShield = 0.2, fireResist = 0, @@ -913,6 +953,7 @@ minions["Metadata/Monsters/GhostPirates/GhostPirateBlackFlickerStrikeMaps"] = { } minions["Metadata/Monsters/GhostPirates/GhostPirateGreenBladeVortex"] = { name = "Spectral Scoundrel", + monsterCategory = "Undead", life = 1.5, energyShield = 0.2, fireResist = 0, @@ -941,6 +982,7 @@ minions["Metadata/Monsters/GhostPirates/GhostPirateGreenBladeVortex"] = { -- Undying Grappler minions["Metadata/Monsters/Grappler/Grappler"] = { name = "Undying Grappler", + monsterCategory = "Demon", life = 1, armour = 0.3, fireResist = 20, @@ -965,6 +1007,7 @@ minions["Metadata/Monsters/Grappler/Grappler"] = { } minions["Metadata/Monsters/Grappler/GrapplerLabyrinth"] = { name = "Shadow Lurker", + monsterCategory = "Demon", life = 1, armour = 0.3, fireResist = 20, @@ -990,6 +1033,7 @@ minions["Metadata/Monsters/Grappler/GrapplerLabyrinth"] = { -- Ribbon minions["Metadata/Monsters/Guardians/GuardianFire"] = { name = "Flame Sentinel", + monsterCategory = "Construct", life = 1.8, energyShield = 0.4, fireResist = 0, @@ -1014,6 +1058,7 @@ minions["Metadata/Monsters/Guardians/GuardianFire"] = { } minions["Metadata/Monsters/Guardians/GuardianFire_BlueMaps"] = { name = "Frost Sentinel", + monsterCategory = "Construct", life = 1.8, energyShield = 0.4, fireResist = 0, @@ -1035,6 +1080,7 @@ minions["Metadata/Monsters/Guardians/GuardianFire_BlueMaps"] = { } minions["Metadata/Monsters/Guardians/GuardianLightning"] = { name = "Galvanic Ribbon", + monsterCategory = "Construct", life = 1.8, energyShield = 0.4, fireResist = 0, @@ -1055,6 +1101,7 @@ minions["Metadata/Monsters/Guardians/GuardianLightning"] = { -- Gut flayer minions["Metadata/Monsters/HalfSkeleton/HalfSkeleton"] = { name = "Gut Flayer", + monsterCategory = "Demon", life = 1.32, armour = 0.5, fireResist = 20, @@ -1078,6 +1125,7 @@ minions["Metadata/Monsters/HalfSkeleton/HalfSkeleton"] = { -- Solar Guard minions["Metadata/Monsters/HolyFireElemental/HolyFireElementalSolarisBeam"] = { name = "Solar Guard", + monsterCategory = "Construct", life = 1.98, energyShield = 0.1, armour = 0.25, @@ -1101,6 +1149,7 @@ minions["Metadata/Monsters/HolyFireElemental/HolyFireElementalSolarisBeam"] = { -- Construct minions["Metadata/Monsters/incaminion/Fragment"] = { name = "Ancient Construct", + monsterCategory = "Construct", life = 1.19, energyShield = 0.2, fireResist = 0, @@ -1122,6 +1171,7 @@ minions["Metadata/Monsters/incaminion/Fragment"] = { -- Carrion Queen minions["Metadata/Monsters/InsectSpawner/InsectSpawner"] = { name = "Carrion Queen", + monsterCategory = "Beast", life = 2.45, fireResist = 0, coldResist = 0, @@ -1143,6 +1193,7 @@ minions["Metadata/Monsters/InsectSpawner/InsectSpawner"] = { -- Kaom's Warriors minions["Metadata/Monsters/KaomWarrior/KaomWarrior2"] = { name = "Kaom's Chosen", + monsterCategory = "Demon", life = 1.43, armour = 0.5, fireResist = 40, @@ -1163,6 +1214,7 @@ minions["Metadata/Monsters/KaomWarrior/KaomWarrior2"] = { } minions["Metadata/Monsters/KaomWarrior/KaomWarrior3"] = { name = "Kaom's Chosen", + monsterCategory = "Demon", life = 1.43, armour = 0.5, fireResist = 40, @@ -1183,6 +1235,7 @@ minions["Metadata/Monsters/KaomWarrior/KaomWarrior3"] = { } minions["Metadata/Monsters/KaomWarrior/KaomWarrior7"] = { name = "Tukohama's Vanguard", + monsterCategory = "Demon", life = 1.43, armour = 0.5, fireResist = 40, @@ -1211,6 +1264,7 @@ minions["Metadata/Monsters/KaomWarrior/KaomWarrior7"] = { -- Kitava's Cultist minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearBloodDelve"] = { name = "Risen Vaal Fanatic", + monsterCategory = "Humanoid", life = 2.88, armour = 0.2, fireResist = 20, @@ -1232,6 +1286,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearBloodDelve"] = { } minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearBloodChampionDelve"] = { name = "Risen Vaal Advocate", + monsterCategory = "Humanoid", life = 4.05, armour = 0.2, fireResist = 35, @@ -1254,6 +1309,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearBloodChampionDelve"] = } minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearChaosDelve"] = { name = "Risen Vaal Fanatic", + monsterCategory = "Humanoid", life = 2.88, armour = 0.2, fireResist = 20, @@ -1275,6 +1331,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearChaosDelve"] = { } minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearChaosChampionDelve"] = { name = "Risen Vaal Advocate", + monsterCategory = "Humanoid", life = 4.05, armour = 0.2, fireResist = 35, @@ -1298,6 +1355,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearChaosChampionDelve"] = } minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearFireDelve"] = { name = "Risen Vaal Fanatic", + monsterCategory = "Humanoid", life = 2.88, armour = 0.2, fireResist = 20, @@ -1319,6 +1377,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearFireDelve"] = { } minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearFireChampionDelve_"] = { name = "Risen Vaal Advocate", + monsterCategory = "Humanoid", life = 4.05, armour = 0.2, fireResist = 35, @@ -1341,6 +1400,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearFireChampionDelve_"] = } minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearLightningDelve"] = { name = "Risen Vaal Fanatic", + monsterCategory = "Humanoid", life = 2.88, armour = 0.2, fireResist = 20, @@ -1362,6 +1422,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearLightningDelve"] = { } minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearLightningChampionDelve_"] = { name = "Risen Vaal Advocate", + monsterCategory = "Humanoid", life = 4.05, armour = 0.2, fireResist = 35, @@ -1386,6 +1447,7 @@ minions["Metadata/Monsters/KitavaCultist/VaalCultistSpearLightningChampionDelve_ -- Kitava's Herald minions["Metadata/Monster/KitavaDemon/KitavaDemon"] = { name = "Kitava's Herald", + monsterCategory = "Demon", life = 3.6, armour = 0.6, fireResist = 37, @@ -1414,6 +1476,7 @@ minions["Metadata/Monster/KitavaDemon/KitavaDemon"] = { -- Birdman minions["Metadata/Monsters/Kiweth/Kiweth"] = { name = "Avian Retch", + monsterCategory = "Beast", life = 1.54, energyShield = 0.2, fireResist = 0, @@ -1438,6 +1501,7 @@ minions["Metadata/Monsters/Kiweth/Kiweth"] = { } minions["Metadata/Monsters/Kiweth/KiwethSeagull"] = { name = "Gluttonous Gull", + monsterCategory = "Beast", life = 1.3, energyShield = 0.12, fireResist = 0, @@ -1463,6 +1527,7 @@ minions["Metadata/Monsters/Kiweth/KiwethSeagull"] = { -- Delve League minions["Metadata/Monsters/LeagueDelve/ProtoVaalWarriorElite"] = { name = "Stoneskin Flayer", + monsterCategory = "Humanoid", life = 8, armour = 1, fireResist = 35, @@ -1487,6 +1552,7 @@ minions["Metadata/Monsters/LeagueDelve/ProtoVaalWarriorElite"] = { -- Hellion minions["Metadata/Monsters/Lion/LionDesertSkinPuncture"] = { name = "Dune Hellion", + monsterCategory = "Beast", life = 1, armour = 0.1, fireResist = 40, @@ -1508,6 +1574,7 @@ minions["Metadata/Monsters/Lion/LionDesertSkinPuncture"] = { } minions["Metadata/Monsters/Lion/LionWolf3Champion"] = { name = "Freezing Wolf", + monsterCategory = "Beast", life = 1.8, armour = 0.1, fireResist = 0, @@ -1531,6 +1598,7 @@ minions["Metadata/Monsters/Lion/LionWolf3Champion"] = { -- Knitted Horror minions["Metadata/Monsters/MassSkeleton/MassSkeleton"] = { name = "Knitted Horror", + monsterCategory = "Humanoid", life = 2.25, armour = 0.5, fireResist = 0, @@ -1553,6 +1621,7 @@ minions["Metadata/Monsters/MassSkeleton/MassSkeleton"] = { -- Miners minions["Metadata/Monsters/Miner/MinerLantern"] = { name = "Pocked Lanternbearer", + monsterCategory = "Humanoid", life = 1.21, fireResist = 40, coldResist = 0, @@ -1573,6 +1642,7 @@ minions["Metadata/Monsters/Miner/MinerLantern"] = { } minions["Metadata/Monsters/Miner/MinerLanternCrystalVeins"] = { name = "Pocked Illuminator", + monsterCategory = "Humanoid", life = 1.21, fireResist = 40, coldResist = 0, @@ -1594,6 +1664,7 @@ minions["Metadata/Monsters/Miner/MinerLanternCrystalVeins"] = { -- Voidbearer minions["Metadata/Monsters/Monkeys/FlameBearer"] = { name = "Voidbearer", + monsterCategory = "Demon", life = 1.1, fireResist = 40, coldResist = 0, @@ -1614,6 +1685,7 @@ minions["Metadata/Monsters/Monkeys/FlameBearer"] = { -- Stone golem minions["Metadata/Monsters/MossMonster/FireMonster"] = { name = "Cinder Elemental", + monsterCategory = "Construct", life = 2.7, armour = 0.5, fireResist = 40, @@ -1636,6 +1708,7 @@ minions["Metadata/Monsters/MossMonster/FireMonster"] = { -- Mother of Flames minions["Metadata/Monsters/MotherOfFlames/MotherOfFlamesZombie"] = { name = "Kiln Mother", + monsterCategory = "Humanoid", life = 0.9, energyShield = 0.28, fireResist = 40, @@ -1657,6 +1730,7 @@ minions["Metadata/Monsters/MotherOfFlames/MotherOfFlamesZombie"] = { -- Necromancer minions["Metadata/Monsters/Necromancer/NecromancerConductivity"] = { name = "Sin Lord", + monsterCategory = "Demon", life = 2.4, energyShield = 0.4, fireResist = 0, @@ -1679,6 +1753,7 @@ minions["Metadata/Monsters/Necromancer/NecromancerConductivity"] = { } minions["Metadata/Monsters/Necromancer/NecromancerEnfeebleCurse"] = { name = "Diabolist", + monsterCategory = "Demon", life = 2.4, energyShield = 0.4, fireResist = 0, @@ -1702,6 +1777,7 @@ minions["Metadata/Monsters/Necromancer/NecromancerEnfeebleCurse"] = { } minions["Metadata/Monsters/Necromancer/NecromancerFlamability"] = { name = "Ash Prophet", + monsterCategory = "Demon", life = 2.4, energyShield = 0.4, fireResist = 0, @@ -1725,6 +1801,7 @@ minions["Metadata/Monsters/Necromancer/NecromancerFlamability"] = { } minions["Metadata/Monsters/Necromancer/NecromancerFrostbite"] = { name = "Death Bishop", + monsterCategory = "Demon", life = 2.4, energyShield = 0.4, fireResist = 0, @@ -1747,6 +1824,7 @@ minions["Metadata/Monsters/Necromancer/NecromancerFrostbite"] = { } minions["Metadata/Monsters/Necromancer/NecromancerElementalWeakness"] = { name = "Defiler", + monsterCategory = "Demon", life = 2.4, energyShield = 0.4, fireResist = 0, @@ -1769,6 +1847,7 @@ minions["Metadata/Monsters/Necromancer/NecromancerElementalWeakness"] = { } minions["Metadata/Monsters/Necromancer/NecromancerProjectileWeakness"] = { name = "Necromancer", + monsterCategory = "Demon", life = 2.4, energyShield = 0.4, fireResist = 0, @@ -1791,6 +1870,7 @@ minions["Metadata/Monsters/Necromancer/NecromancerProjectileWeakness"] = { } minions["Metadata/Monsters/Necromancer/NecromancerVulnerability"] = { name = "Necromancer", + monsterCategory = "Demon", life = 2.4, energyShield = 0.4, fireResist = 0, @@ -1814,6 +1894,7 @@ minions["Metadata/Monsters/Necromancer/NecromancerVulnerability"] = { -- Undying Bomber minions["Metadata/Monsters/Pyromaniac/PyromaniacFire"] = { name = "Undying Incinerator", + monsterCategory = "Demon", life = 1, fireResist = 75, coldResist = 0, @@ -1836,6 +1917,7 @@ minions["Metadata/Monsters/Pyromaniac/PyromaniacFire"] = { } minions["Metadata/Monsters/Pyromaniac/PyromaniacPoison"] = { name = "Undying Alchemist", + monsterCategory = "Demon", life = 1, fireResist = 75, coldResist = 0, @@ -1856,6 +1938,7 @@ minions["Metadata/Monsters/Pyromaniac/PyromaniacPoison"] = { -- Stygian Revenant minions["Metadata/Monsters/Revenant/Revenant"] = { name = "Stygian Revenant", + monsterCategory = "Demon", life = 1.82, fireResist = 0, coldResist = 0, @@ -1878,6 +1961,7 @@ minions["Metadata/Monsters/Revenant/Revenant"] = { -- Sea Witch minions["Metadata/Monsters/Seawitch/SeaWitchFrostBolt"] = { name = "Merveil's Blessed", + monsterCategory = "Demon", life = 1.44, energyShield = 0.4, fireResist = 0, @@ -1899,6 +1983,7 @@ minions["Metadata/Monsters/Seawitch/SeaWitchFrostBolt"] = { } minions["Metadata/Monsters/Seawitch/SeaWitchScreech"] = { name = "Singing Siren", + monsterCategory = "Demon", life = 1.02, energyShield = 0.4, fireResist = 0, @@ -1920,6 +2005,7 @@ minions["Metadata/Monsters/Seawitch/SeaWitchScreech"] = { } minions["Metadata/Monsters/Seawitch/SeaWitchSpawnExploding"] = { name = "Merveil's Attendant", + monsterCategory = "Demon", life = 1.02, energyShield = 0.4, fireResist = 0, @@ -1942,6 +2028,7 @@ minions["Metadata/Monsters/Seawitch/SeaWitchSpawnExploding"] = { } minions["Metadata/Monsters/Seawitch/SeaWitchSpawnTemporalChains"] = { name = "Merveil's Chosen", + monsterCategory = "Demon", life = 1.02, energyShield = 0.4, fireResist = 0, @@ -1964,6 +2051,7 @@ minions["Metadata/Monsters/Seawitch/SeaWitchSpawnTemporalChains"] = { } minions["Metadata/Monsters/Seawitch/SeaWitchVulnerabilityCurse"] = { name = "Merveil's Retainer", + monsterCategory = "Demon", life = 1.02, energyShield = 0.4, fireResist = 0, @@ -1986,6 +2074,7 @@ minions["Metadata/Monsters/Seawitch/SeaWitchVulnerabilityCurse"] = { -- Skeleton minions["Metadata/Monsters/Skeletons/SkeletonBowPuncture"] = { name = "Brittle Bleeder", + monsterCategory = "Humanoid", life = 0.96, fireResist = 0, coldResist = 0, @@ -2010,6 +2099,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowPuncture"] = { } minions["Metadata/Monsters/Skeletons/SkeletonBowLightning"] = { name = "Brittle Poacher", + monsterCategory = "Humanoid", life = 0.96, fireResist = 0, coldResist = 0, @@ -2033,6 +2123,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowLightning"] = { } minions["Metadata/Monsters/Skeletons/SkeletonMeleeLarge"] = { name = "Colossal Bonestalker", + monsterCategory = "Undead", life = 1.98, armour = 0.8, fireResist = 0, @@ -2054,6 +2145,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonMeleeLarge"] = { } minions["Metadata/Monsters/Skeletons/SkeletonBowLightning3"] = { name = "Flayed Archer", + monsterCategory = "Humanoid", life = 0.96, fireResist = 0, coldResist = 0, @@ -2075,6 +2167,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowLightning3"] = { } minions["Metadata/Monsters/Skeletons/SkeletonCasterColdMultipleProjectiles"] = { name = "Frost Harbinger", + monsterCategory = "Undead", life = 0.84, energyShield = 0.4, fireResist = 0, @@ -2096,6 +2189,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonCasterColdMultipleProjectiles"] = { } minions["Metadata/Monsters/Skeletons/SkeletonCasterFireMultipleProjectiles2"] = { name = "Incinerated Mage", + monsterCategory = "Undead", life = 0.84, energyShield = 0.4, armour = 0.15, @@ -2119,6 +2213,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonCasterFireMultipleProjectiles2"] = } minions["Metadata/Monsters/Skeletons/SkeletonBowPoison"] = { name = "Plagued Bowman", + monsterCategory = "Humanoid", life = 0.96, fireResist = 0, coldResist = 0, @@ -2141,6 +2236,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowPoison"] = { } minions["Metadata/Monsters/Skeletons/SkeletonBowLightning2"] = { name = "Restless Archer", + monsterCategory = "Humanoid", life = 0.96, fireResist = 0, coldResist = 0, @@ -2162,6 +2258,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowLightning2"] = { } minions["Metadata/Monsters/Skeletons/SkeletonBowLightning4"] = { name = "Sin Archer", + monsterCategory = "Humanoid", life = 0.96, fireResist = 0, coldResist = 0, @@ -2183,6 +2280,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowLightning4"] = { } minions["Metadata/Monsters/Skeletons/SkeletonCasterLightningSpark"] = { name = "Sparking Mage", + monsterCategory = "Undead", life = 0.84, energyShield = 0.4, fireResist = 0, @@ -2205,6 +2303,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonCasterLightningSpark"] = { } minions["Metadata/Monsters/Skeletons/SkeletonBlackCaster1_"] = { name = "Desecrated Saint", + monsterCategory = "Undead", life = 0.84, energyShield = 0.4, fireResist = 20, @@ -2226,6 +2325,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBlackCaster1_"] = { } minions["Metadata/Monsters/Skeletons/SkeletonBowProjectileWeaknessCurse"] = { name = "Vexing Archer", + monsterCategory = "Humanoid", life = 0.96, fireResist = 0, coldResist = 0, @@ -2248,6 +2348,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowProjectileWeaknessCurse"] = { } minions["Metadata/Monsters/Skeletons/SkeletonMeleeKnightElementalSwordIncursionChampion"] = { name = "Enhanced Vaal Fallen", + monsterCategory = "Construct", life = 2.25, armour = 1, fireResist = 35, @@ -2271,6 +2372,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonMeleeKnightElementalSwordIncursionC } minions["Metadata/Monsters/Skeletons/SkeletonBowKnightElemental"] = { name = "Vaal Slayer", + monsterCategory = "Construct", life = 0.96, fireResist = 37, coldResist = 37, @@ -2292,6 +2394,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonBowKnightElemental"] = { } minions["Metadata/Monsters/Skeletons/SkeletonMeleeBlackAbyssBoneLance"] = { name = "Primeval Hunter", + monsterCategory = "Undead", life = 1.7, armour = 0.15, fireResist = 0, @@ -2318,6 +2421,7 @@ minions["Metadata/Monsters/Skeletons/SkeletonMeleeBlackAbyssBoneLance"] = { } minions["Metadata/Monsters/SkeletonCannon/SkeletonCannon1"] = { name = "Bone Husk", + monsterCategory = "Undead", life = 2.07, armour = 0.25, fireResist = 0, @@ -2341,6 +2445,7 @@ minions["Metadata/Monsters/SkeletonCannon/SkeletonCannon1"] = { -- Snake minions["Metadata/Monsters/Snake/SnakeMeleeSpit"] = { name = "Bramble Cobra", + monsterCategory = "Beast", life = 0.94, armour = 0.15, fireResist = 30, @@ -2362,6 +2467,7 @@ minions["Metadata/Monsters/Snake/SnakeMeleeSpit"] = { } minions["Metadata/Monsters/Snake/SnakeScorpionMultiShot"] = { name = "Barb Serpent", + monsterCategory = "Beast", life = 0.94, armour = 0.15, fireResist = 30, @@ -2385,6 +2491,7 @@ minions["Metadata/Monsters/Snake/SnakeScorpionMultiShot"] = { -- Spider minions["Metadata/Monsters/Spiders/SpiderThornFlickerStrike"] = { name = "Leaping Spider", + monsterCategory = "Beast", life = 1, fireResist = 0, coldResist = 0, @@ -2404,6 +2511,7 @@ minions["Metadata/Monsters/Spiders/SpiderThornFlickerStrike"] = { } minions["Metadata/Monsters/Spiders/SpiderThornViperStrikeFlickerStrike"] = { name = "Deadly Tarantula", + monsterCategory = "Beast", life = 2.21, fireResist = 40, coldResist = 40, @@ -2425,6 +2533,7 @@ minions["Metadata/Monsters/Spiders/SpiderThornViperStrikeFlickerStrike"] = { -- Statue minions["Metadata/Monsters/Statue/DaressoStatueLargeMaleSpear"] = { name = "Towering Figment", + monsterCategory = "Construct", life = 5.76, armour = 1, fireResist = 0, @@ -2449,6 +2558,7 @@ minions["Metadata/Monsters/Statue/DaressoStatueLargeMaleSpear"] = { } minions["Metadata/Monsters/Statue/StoneStatueMaleBow"] = { name = "Archer Statue", + monsterCategory = "Construct", life = 2.46, armour = 0.2, fireResist = 0, @@ -2474,6 +2584,7 @@ minions["Metadata/Monsters/Statue/StoneStatueMaleBow"] = { -- Ophidian minions["Metadata/Monsters/Taster/Taster"] = { name = "Noisome Ophidian", + monsterCategory = "Beast", life = 1, armour = 0.2, fireResist = 40, @@ -2496,6 +2607,7 @@ minions["Metadata/Monsters/Taster/Taster"] = { -- Templar minions["Metadata/Monsters/TemplarSlaveDriver/TemplarSlaveDriver"] = { name = "Slave Driver", + monsterCategory = "Humanoid", life = 1, armour = 0.25, fireResist = 0, @@ -2520,6 +2632,7 @@ minions["Metadata/Monsters/TemplarSlaveDriver/TemplarSlaveDriver"] = { } minions["Metadata/Monsters/TemplarSlaveDriver/TemplarSlaveDriverKitava"] = { name = "Crazed Driver", + monsterCategory = "Humanoid", life = 1, armour = 0.25, fireResist = 0, @@ -2545,6 +2658,7 @@ minions["Metadata/Monsters/TemplarSlaveDriver/TemplarSlaveDriverKitava"] = { -- Undying minions["Metadata/Monsters/Undying/CityStalkerMaleCasterArmour"] = { name = "Undying Evangelist", + monsterCategory = "Demon", life = 1.2, armour = 0.5, fireResist = 37, @@ -2567,6 +2681,7 @@ minions["Metadata/Monsters/Undying/CityStalkerMaleCasterArmour"] = { } minions["Metadata/Monsters/Undying/UndyingOutcastPuncture"] = { name = "Undying Impaler", + monsterCategory = "Demon", life = 1, fireResist = 0, coldResist = 0, @@ -2587,6 +2702,7 @@ minions["Metadata/Monsters/Undying/UndyingOutcastPuncture"] = { } minions["Metadata/Monsters/Undying/UndyingOutcastWhirlingBlades"] = { name = "Undying Outcast", + monsterCategory = "Demon", life = 1, fireResist = 0, coldResist = 0, @@ -2607,6 +2723,7 @@ minions["Metadata/Monsters/Undying/UndyingOutcastWhirlingBlades"] = { -- Wicker Man minions["Metadata/Monsters/WickerMan/WickerMan"] = { name = "Wicker Man", + monsterCategory = "Construct", life = 2.25, armour = 1, fireResist = 20, @@ -2631,6 +2748,7 @@ minions["Metadata/Monsters/WickerMan/WickerMan"] = { -- Redemption Sentry minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieSeraphArcherSpectre"] = { name = "Redemption Sentry", + monsterCategory = "Humanoid", life = 2.7, fireResist = 0, coldResist = 75, @@ -2659,6 +2777,7 @@ minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieSeraphArcherS -- Baranite Thaumaturge minions["Metadata/Monsters/AtlasExiles/CrusaderInfluenceMonsters/CrusaderMageguardCasterSpectre"] = { name = "Baranite Thaumaturge", + monsterCategory = "Humanoid", life = 3.6, energyShield = 0.8, fireResist = 0, @@ -2684,6 +2803,7 @@ minions["Metadata/Monsters/AtlasExiles/CrusaderInfluenceMonsters/CrusaderMagegua -- Baranite Sister minions["Metadata/Monsters/AtlasExiles/CrusaderInfluenceMonsters/CrusaderBlessedSisterSpectre"] = { name = "Baranite Sister", + monsterCategory = "Humanoid", life = 1.2, energyShield = 0.4, fireResist = 0, @@ -2705,6 +2825,7 @@ minions["Metadata/Monsters/AtlasExiles/CrusaderInfluenceMonsters/CrusaderBlessed -- Baranite Preacher minions["Metadata/Monsters/AtlasExiles/CrusaderInfluenceMonsters/CrusaderTemplarJudgeSpectre"] = { name = "Baranite Preacher", + monsterCategory = "Humanoid", life = 1.68, energyShield = 0.2, armour = 0.5, @@ -2728,6 +2849,7 @@ minions["Metadata/Monsters/AtlasExiles/CrusaderInfluenceMonsters/CrusaderTemplar -- Scale of Esh minions["Metadata/Monsters/SandLeaper/SandLeaperBreachSpectre_"] = { name = "Scale of Esh", + monsterCategory = "Beast", life = 3, fireResist = 30, coldResist = 30, @@ -2755,6 +2877,7 @@ minions["Metadata/Monsters/SandLeaper/SandLeaperBreachSpectre_"] = { -- Scinteel Synthete minions["Metadata/Monsters/LeagueSynthesis/SynthesisSoulstealer3Spectre"] = { name = "Scinteel Synthete", + monsterCategory = "Construct", life = 3.6, energyShield = 0.8, fireResist = 0, @@ -2779,6 +2902,7 @@ minions["Metadata/Monsters/LeagueSynthesis/SynthesisSoulstealer3Spectre"] = { -- Redemption Knight minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieSeraphFighterSpectre_"] = { name = "Redemption Knight", + monsterCategory = "Humanoid", life = 2.7, fireResist = 0, coldResist = 75, @@ -2803,6 +2927,7 @@ minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieSeraphFighter -- Primal Crushclaw minions["Metadata/Monsters/LeagueHarvest/Blue/HarvestNessaCrabT3Spectre"] = { name = "Primal Crushclaw", + monsterCategory = "Beast", life = 3.6, armour = 1, fireResist = 20, @@ -2831,6 +2956,7 @@ minions["Metadata/Monsters/LeagueHarvest/Blue/HarvestNessaCrabT3Spectre"] = { -- Primal Rhex Matriarch minions["Metadata/Monsters/LeagueHarvest/Blue/HarvestRhexT3Spectre"] = { name = "Primal Rhex Matriarch", + monsterCategory = "Beast", life = 3.57, fireResist = 20, coldResist = 20, @@ -2859,6 +2985,7 @@ minions["Metadata/Monsters/LeagueHarvest/Blue/HarvestRhexT3Spectre"] = { -- Templar Tactician minions["Metadata/Monsters/LegionLeague/LegionTemplarCaster1Spectre"] = { name = "Templar Tactician", + monsterCategory = "Humanoid", life = 3.45, energyShield = 0.4, armour = 0.5, @@ -2886,6 +3013,7 @@ minions["Metadata/Monsters/LegionLeague/LegionTemplarCaster1Spectre"] = { -- Frost Auto-Scout minions["Metadata/Monsters/LeagueHeist/Robot/RobotClockworkGolemColdSpectre"] = { name = "Frost Auto-Scout", + monsterCategory = "Construct", life = 3.6, armour = 1, fireResist = 40, @@ -2909,6 +3037,7 @@ minions["Metadata/Monsters/LeagueHeist/Robot/RobotClockworkGolemColdSpectre"] = -- Syndicate Operative minions["Metadata/Monsters/LeagueBetrayal/BetrayalSecretPolice2Spectre_"] = { name = "Syndicate Operative", + monsterCategory = "Humanoid", life = 2.1, energyShield = 0.08, fireResist = 20, @@ -2934,6 +3063,7 @@ minions["Metadata/Monsters/LeagueBetrayal/BetrayalSecretPolice2Spectre_"] = { -- Cloud Retch minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieKiwethSpectre"] = { name = "Cloud Retch", + monsterCategory = "Demon", life = 2.52, energyShield = 0.2, fireResist = 0, @@ -2957,6 +3087,7 @@ minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieKiwethSpectre -- Artless Assassin minions["Metadata/Monsters/LeagueHeist/Thug/ThugRanged1EliteSpectre"] = { name = "Artless Assassin", + monsterCategory = "Humanoid", life = 3.58, fireResist = 0, coldResist = 75, @@ -2986,6 +3117,7 @@ minions["Metadata/Monsters/LeagueHeist/Thug/ThugRanged1EliteSpectre"] = { -- Ashblessed Warden minions["Metadata/Monsters/LeagueHeist/Robot/RobotPyreKnightEliteSpectre"] = { name = "Ashblessed Warden", + monsterCategory = "Construct", life = 3.6, energyShield = 0.2, fireResist = 0, @@ -3013,6 +3145,7 @@ minions["Metadata/Monsters/LeagueHeist/Robot/RobotPyreKnightEliteSpectre"] = { -- Snow Rhex minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieArmouredBirdSpectre__"] = { name = "Snow Rhex", + monsterCategory = "Beast", life = 3.6, armour = 0.5, fireResist = 0, @@ -3037,6 +3170,7 @@ minions["Metadata/Monsters/AtlasExiles/EyrieInfluenceMonsters/EyrieArmouredBirdS -- Flickershade minions["Metadata/Monsters/Maligaro/SecretDesecrateMonster"] = { name = "Flickershade", + monsterCategory = "Demon", life = 3, energyShield = 0.2, fireResist = 0, @@ -3062,6 +3196,7 @@ minions["Metadata/Monsters/Maligaro/SecretDesecrateMonster"] = { -- Trial Galecaller minions["Metadata/Monsters/LeagueUltimatum/Guard/GuardBowColdWeakSpectre"] = { name = "Trial Galecaller", + monsterCategory = "Humanoid", life = 2.47, armour = 0.3, fireResist = 0, @@ -3084,6 +3219,7 @@ minions["Metadata/Monsters/LeagueUltimatum/Guard/GuardBowColdWeakSpectre"] = { -- Trial Windchaser minions["Metadata/Monsters/LeagueUltimatum/Guard/GuardBowColdSpectre"] = { name = "Trial Windchaser", + monsterCategory = "Humanoid", life = 2.47, armour = 0.3, fireResist = 0, @@ -3108,6 +3244,7 @@ minions["Metadata/Monsters/LeagueUltimatum/Guard/GuardBowColdSpectre"] = { -- Hyrri's Watch minions["Metadata/Monsters/LegionLeague/LegionKaruiArcherSpectre"] = { name = "Hyrri's Watch", + monsterCategory = "Humanoid", life = 2.25, fireResist = 20, coldResist = 20, @@ -3132,6 +3269,7 @@ minions["Metadata/Monsters/LegionLeague/LegionKaruiArcherSpectre"] = { -- Demon Harpy minions["Metadata/Monsters/LeagueHellscape/DemonFaction/HellscapeDemonElite1Spectre"] = { name = "Demon Harpy", + monsterCategory = "Demon", life = 2.38, armour = 0.5, fireResist = 75, @@ -3157,6 +3295,7 @@ minions["Metadata/Monsters/LeagueHellscape/DemonFaction/HellscapeDemonElite1Spec -- Pale Angel minions["Metadata/Monsters/LeagueHellscape/PaleFaction/HellscapePaleElite1Spectre"] = { name = "Pale Angel", + monsterCategory = "Demon", life = 2.55, energyShield = 0.4, fireResist = 0, @@ -3184,6 +3323,7 @@ minions["Metadata/Monsters/LeagueHellscape/PaleFaction/HellscapePaleElite1Spectr -- Demon Herder minions["Metadata/Monsters/LeagueHellscape/DemonFaction/HellscapeDemonElite2_Spectre"] = { name = "Demon Herder", + monsterCategory = "Demon", life = 2.85, energyShield = 0.4, fireResist = 0, @@ -3209,6 +3349,7 @@ minions["Metadata/Monsters/LeagueHellscape/DemonFaction/HellscapeDemonElite2_Spe -- Pale Seraphim minions["Metadata/Monsters/LeagueHellscape/PaleFaction/HellscapePaleElite2Spectre"] = { name = "Pale Seraphim", + monsterCategory = "Demon", life = 3.04, armour = 0.66, fireResist = 0, @@ -3238,6 +3379,7 @@ minions["Metadata/Monsters/LeagueHellscape/PaleFaction/HellscapePaleElite2Spectr -- Ravenous Mishapen minions["Metadata/Monsters/LeagueHellscape/FleshFaction/HellscapeFleshFodder4Spectre"] = { name = "Ravenous Misshapen", + monsterCategory = "Demon", life = 1.16, energyShield = 0.4, fireResist = 0, @@ -3260,6 +3402,7 @@ minions["Metadata/Monsters/LeagueHellscape/FleshFaction/HellscapeFleshFodder4Spe -- Aurid Synthete minions["Metadata/Monsters/LeagueSynthesis/SynthesisSoulstealer4Spectre"] = { name = "Aurid Synthete", + monsterCategory = "Construct", life = 3.6, energyShield = 0.8, fireResist = 42, @@ -3290,6 +3433,7 @@ minions["Metadata/Monsters/LeagueSynthesis/SynthesisSoulstealer4Spectre"] = { -- Ruins Hellion minions["Metadata/Monsters/Hellion/Hellion3Spectre"] = { name = "Ruins Hellion", + monsterCategory = "Beast", life = 1, armour = 0.1, fireResist = 40, @@ -3311,6 +3455,7 @@ minions["Metadata/Monsters/Hellion/Hellion3Spectre"] = { -- Arena Master minions["Metadata/Monsters/AtlasExiles/AdjudicatorInfluenceMonsters/AdjudicatorGrandMasterSpectre"] = { name = "Arena Master", + monsterCategory = "Humanoid", life = 3.6, armour = 0.8, fireResist = 35, @@ -3338,6 +3483,7 @@ minions["Metadata/Monsters/AtlasExiles/AdjudicatorInfluenceMonsters/AdjudicatorG -- They of Tul minions["Metadata/Monsters/MinerLarge/MinerLargeCommanderBreachSpectre"] = { name = "They of Tul", + monsterCategory = "Demon", life = 3, armour = 0.5, fireResist = 30, @@ -3363,6 +3509,7 @@ minions["Metadata/Monsters/MinerLarge/MinerLargeCommanderBreachSpectre"] = { -- Ancient Suffering minions["Metadata/Monsters/LeagueDelve/GhostEncounter/WraithPurple"] = { name = "Ancient Suffering", + monsterCategory = "Undead", life = 1.68, energyShield = 0.2, fireResist = 0, @@ -3387,6 +3534,7 @@ minions["Metadata/Monsters/LeagueDelve/GhostEncounter/WraithPurple"] = { -- Ancient Wraith minions["Metadata/Monsters/LeagueDelve/GhostEncounter/Wraith"] = { name = "Ancient Wraith", + monsterCategory = "Undead", life = 1.68, energyShield = 0.2, fireResist = 0, @@ -3412,6 +3560,7 @@ minions["Metadata/Monsters/LeagueDelve/GhostEncounter/Wraith"] = { -- Forged Frostbearer minions["Metadata/Monsters/LeagueCrucible/Cold/Pyromaniac"] = { name = "Forged Frostbearer", + monsterCategory = "Demon", life = 1.68, fireResist = 0, coldResist = 75, @@ -3430,3 +3579,89 @@ minions["Metadata/Monsters/LeagueCrucible/Cold/Pyromaniac"] = { -- MonsterNoMapDrops [monster_no_map_drops = 1] }, } + +minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusLow"] = { + name = "Imperfect Hulking Miscreation", + monsterCategory = "Construct", + life = 4.58, + armour = 1, + fireResist = 20, + coldResist = 20, + lightningResist = 20, + chaosResist = 0, + damage = 1.5, + damageSpread = 0.2, + attackTime = 1.785, + attackRange = 21, + accuracy = 1, + skillList = { + "AzmeriArgusMeleeAtAnimationSpeed", + "GAAzmeriRobotArgusSlam", + "EGAzmeriRobotArgusActivationWave", + "SSMAzmeriRobotArgusItsRainingMannequins", + }, + modList = { + -- AzmeriRobotArgusAttackDamagePerArmour [attack_damage_+%_per_450_physical_damage_reduction_rating = 5] + }, +} + +minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusMid"] = { + name = "Hulking Miscreation", + monsterCategory = "Construct", + life = 4.58, + armour = 1, + fireResist = 20, + coldResist = 20, + lightningResist = 20, + chaosResist = 0, + damage = 1.5, + damageSpread = 0.2, + attackTime = 1.785, + attackRange = 21, + accuracy = 1, + skillList = { + "AzmeriArgusMeleeAtAnimationSpeed", + "GAAzmeriRobotArgusSlam", + "EGAzmeriRobotArgusOverchargeBuff", + "EGAzmeriRobotArgusActivationWave", + "SSMAzmeriRobotArgusItsRainingMannequins", + }, + modList = { + -- AzmeriRobotArgusAttackDamagePerArmour [attack_damage_+%_per_450_physical_damage_reduction_rating = 5] + mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }), + mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}), + mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}), + }, +} + +minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusHigh__"] = { + name = "Perfect Hulking Miscreation", + monsterCategory = "Construct", + life = 4.58, + armour = 1, + fireResist = 20, + coldResist = 20, + lightningResist = 20, + chaosResist = 0, + damage = 1.5, + damageSpread = 0.2, + attackTime = 1.785, + attackRange = 21, + accuracy = 1, + skillList = { + "AzmeriArgusMeleeAtAnimationSpeed", + "GAAzmeriRobotArgusSlam", + "EGAzmeriRobotArgusOverchargeBuff", + "EGAzmeriRobotArgusActivationWave", + "SSMAzmeriRobotArgusItsRainingMannequins", + "ABTTAzmeriRobotArgusPhysAsExtraLightning", + }, + modList = { + -- AzmeriRobotArgusAttackDamagePerArmour [attack_damage_+%_per_450_physical_damage_reduction_rating = 5] + mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }), + mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}), + mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}), + mod("PlayerModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}), + mod("MinionModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}), + }, +} diff --git a/src/Export/Minions/Spectres.txt b/src/Export/Minions/Spectres.txt index 079c641606..f09be430b9 100644 --- a/src/Export/Minions/Spectres.txt +++ b/src/Export/Minions/Spectres.txt @@ -232,13 +232,15 @@ local minions, mod = ... #spectre Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusLow #monster Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusMid -#mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) -#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) +#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }) +#mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) +#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) #emit #monster Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusHigh__ -#mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) -#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "CorpseType", corpseType = "Construct" })}) +#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }) +#mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) +#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) #mod mod("PlayerModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}) #mod mod("MinionModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}) #emit diff --git a/src/Export/Scripts/minions.lua b/src/Export/Scripts/minions.lua index 3ed00d63e4..c656434149 100644 --- a/src/Export/Scripts/minions.lua +++ b/src/Export/Scripts/minions.lua @@ -59,21 +59,21 @@ local itemClassMap = { local directiveTable = { } --- #buildCorpseTypes -directiveTable.buildCorpseTypes = function(state, args, out) +-- #buildMonsterCategory +directiveTable.buildMonsterCategory = function(state, args, out) -- this only run once - if state.corpseTypeDict then + if state.monsterCategoryDict then return end - local corpseTypeTags = dat("corpsetypetags") - state.corpseTypeDict = { } - local tagIndex = corpseTypeTags.colMap["Tag"] - local nameIndex = corpseTypeTags.colMap["Name"] - for i=1, corpseTypeTags.rowCount do - local tagString = corpseTypeTags:ReadCellText(i, tagIndex) - local nameString = corpseTypeTags:ReadCellText(i, nameIndex) - state.corpseTypeDict[tagString] = nameString + local monsterCategoryTags = dat("corpsetypetags") + state.monsterCategoryDict = { } + local tagIndex = monsterCategoryTags.colMap["Tag"] + local nameIndex = monsterCategoryTags.colMap["Name"] + for i=1, monsterCategoryTags.rowCount do + local tagString = monsterCategoryTags:ReadCellText(i, tagIndex) + local nameString = monsterCategoryTags:ReadCellText(i, nameIndex) + state.monsterCategoryDict[tagString] = nameString end end @@ -119,7 +119,7 @@ end -- #emit directiveTable.emit = function(state, args, out) -- this only run once internally - directiveTable.buildCorpseTypes(state, args, out) + directiveTable.buildMonsterCategory(state, args, out) local monsterVariety = dat("MonsterVarieties"):GetRow("Id", state.varietyId) if not monsterVariety then @@ -128,6 +128,15 @@ directiveTable.emit = function(state, args, out) end out:write('minions["', state.name, '"] = {\n') out:write('\tname = "', monsterVariety.Name, '",\n') + if state.monsterCategoryDict then + -- identify the monster category base on tags and corpsetypetags.dat + for _, tag in ipairs(monsterVariety.Tags) do + if state.monsterCategoryDict[tag.Id] then + out:write('\tmonsterCategory = "', state.monsterCategoryDict[tag.Id], '",\n') + break + end + end + end out:write('\tlife = ', (monsterVariety.LifeMultiplier/100), ',\n') if monsterVariety.Type.EnergyShield ~= 0 then out:write('\tenergyShield = ', (0.4 * monsterVariety.Type.EnergyShield / 100), ',\n') @@ -171,16 +180,6 @@ directiveTable.emit = function(state, args, out) end out:write('\t},\n') - if state.corpseTypeDict then - -- identify the corpsetype base on tags and corpsetypetags.dat - for _, tag in ipairs(monsterVariety.Tags) do - if state.corpseTypeDict[tag.Id] then - out:write('\tcorpseType = "', state.corpseTypeDict[tag.Id], '",\n') - break - end - end - end - local modList = { } for _, mod in ipairs(monsterVariety.Mods) do table.insert(modList, mod) From 507b578876cf9b4022b5502b546b0bbf3efef85d Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 4 Jan 2024 18:19:11 +1100 Subject: [PATCH 4/4] Add melee damage mod to basic variant --- src/Data/Spectres.lua | 7 +++---- src/Export/Minions/Spectres.txt | 10 +++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/Data/Spectres.lua b/src/Data/Spectres.lua index 95f753cc18..f4e56eee72 100644 --- a/src/Data/Spectres.lua +++ b/src/Data/Spectres.lua @@ -3579,7 +3579,7 @@ minions["Metadata/Monsters/LeagueCrucible/Cold/Pyromaniac"] = { -- MonsterNoMapDrops [monster_no_map_drops = 1] }, } - +-- Hulking Miscreation minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusLow"] = { name = "Imperfect Hulking Miscreation", monsterCategory = "Construct", @@ -3602,9 +3602,9 @@ minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusLow"] = { }, modList = { -- AzmeriRobotArgusAttackDamagePerArmour [attack_damage_+%_per_450_physical_damage_reduction_rating = 5] + mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }), }, } - minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusMid"] = { name = "Hulking Miscreation", monsterCategory = "Construct", @@ -3633,7 +3633,6 @@ minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusMid"] = { mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}), }, } - minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusHigh__"] = { name = "Perfect Hulking Miscreation", monsterCategory = "Construct", @@ -3664,4 +3663,4 @@ minions["Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusHigh__"] = { mod("PlayerModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}), mod("MinionModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}), }, -} +} \ No newline at end of file diff --git a/src/Export/Minions/Spectres.txt b/src/Export/Minions/Spectres.txt index f09be430b9..3cf41f0cb8 100644 --- a/src/Export/Minions/Spectres.txt +++ b/src/Export/Minions/Spectres.txt @@ -228,19 +228,19 @@ local minions, mod = ... #spectre Metadata/Monsters/LeagueDelve/GhostEncounter/Wraith # DelveMonsterEnfeebleOnHit -- Forged Frostbearer #spectre Metadata/Monsters/LeagueCrucible/Cold/Pyromaniac - -#spectre Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusLow - +-- Hulking Miscreation +#monster Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusLow +#mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }) +#emit #monster Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusMid #mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }) #mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) #mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) #emit - #monster Metadata/Monsters/LeagueAzmeri/SpecialCorpses/RobotArgusHigh__ #mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 5, ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 450 }) }) #mod mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", 30, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) #mod mod("MinionModifier", "LIST", { mod = mod("Damage", "INC", 100, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true }, { type = "MonsterCategory", monsterCategory = "Construct" })}) #mod mod("PlayerModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}) #mod mod("MinionModifier", "LIST", { mod = mod("PhysicalDamageGainAsLightning", "BASE", 20, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "HulkingMiscreation", unscaleable = true })}) -#emit +#emit \ No newline at end of file