Release 1.4.75

- Added announced uniques
- Added 3.1 skill helmet enchantments
- Fixed missing Elder mods on shields
- Fixed rounding on reservation calculations when there is increased reservation
- Fixed Indimidate to be Attack Damage only
- Oni-Goroshi buff no longer persists when item is removed
- Fixed various item issues
This commit is contained in:
Openarl
2018-02-22 14:46:09 +10:00
parent ed34b292e9
commit 3e25c95f0a
32 changed files with 523 additions and 120 deletions

View File

@@ -109,6 +109,7 @@ local modNameList = {
["chance to evade melee attacks"] = "MeleeEvadeChance",
-- Resistances
["physical damage reduction"] = "PhysicalDamageReduction",
["physical damage reduction from hits"] = "PhysicalDamageReductionWhenHit",
["fire resistance"] = "FireResist",
["maximum fire resistance"] = "FireResistMax",
["cold resistance"] = "ColdResist",
@@ -129,18 +130,28 @@ local modNameList = {
["damage taken when hit"] = "DamageTakenWhenHit",
["damage taken from damage over time"] = "DamageTakenOverTime",
["physical damage taken"] = "PhysicalDamageTaken",
["physical damage from hits taken"] = "PhysicalDamageTaken",
["physical damage taken when hit"] = "PhysicalDamageTakenWhenHit",
["physical damage taken over time"] = "PhysicalDamageTakenOverTime",
["lightning damage taken"] = "LightningDamageTaken",
["lightning damage from hits taken"] = "LightningDamageTaken",
["lightning damage taken when hit"] = "LightningDamageTakenWhenHit",
["lightning damage taken over time"] = "LightningDamageTakenOverTime",
["cold damage taken"] = "ColdDamageTaken",
["cold damage from hits taken"] = "ColdDamageTaken",
["cold damage taken when hit"] = "ColdDamageTakenWhenHit",
["cold damage taken over time"] = "ColdDamageTakenOverTime",
["fire damage taken"] = "FireDamageTaken",
["fire damage from hits taken"] = "FireDamageTaken",
["fire damage taken when hit"] = "FireDamageTakenWhenHit",
["fire damage taken over time"] = "FireDamageTakenOverTime",
["chaos damage taken"] = "ChaosDamageTaken",
["chaos damage from hits taken"] = "ChaosDamageTaken",
["chaos damage taken when hit"] = "ChaosDamageTakenWhenHit",
["chaos damage taken over time"] = "ChaosDamageTakenOverTime",
["elemental damage taken"] = "ElementalDamageTaken",
["elemental damage taken when hit"] = "ElementalDamageTakenWhenHit",
["chaos damage taken over time"] = "ChaosDamageTakenOverTime",
["elemental damage taken over time"] = "ElementalDamageTakenOverTime",
-- Other defences
["to dodge attacks"] = "AttackDodgeChance",
["to dodge spells"] = "SpellDodgeChance",
@@ -214,6 +225,8 @@ local modNameList = {
["endurance charge duration"] = "EnduranceChargesDuration",
["maximum frenzy charges and maximum power charges"] = { "FrenzyChargesMax", "PowerChargesMax" },
["endurance, frenzy and power charge duration"] = { "PowerChargesDuration", "FrenzyChargesDuration", "EnduranceChargesDuration" },
["maximum siphoning charge"] = "SiphoningChargesMax",
["maximum siphoning charges"] = "SiphoningChargesMax",
-- On hit/kill/leech effects
["life gained on kill"] = "LifeOnKill",
["mana gained on kill"] = "ManaOnKill",
@@ -282,6 +295,7 @@ local modNameList = {
["cold damage"] = "ColdDamage",
["fire damage"] = "FireDamage",
["chaos damage"] = "ChaosDamage",
["non-chaos damage"] = "NonChaosDamage",
["elemental damage"] = "ElementalDamage",
-- Other damage forms
["attack damage"] = { "Damage", flags = ModFlag.Attack },
@@ -502,6 +516,8 @@ local preFlagList = {
["^left ring slot: "] = { tag = { type = "SlotNumber", num = 1 } },
["^right ring slot: "] = { tag = { type = "SlotNumber", num = 2 } },
["^socketed gems [hgd][ae][via][enl] "] = { addToSkill = { type = "SocketedIn", slotName = "{SlotName}" } },
["^socketed attacks [hgd][ae][via][enl] "] = { addToSkill = { type = "SocketedIn", slotName = "{SlotName}", keyword = "attack" } },
["^socketed spells [hgd][ae][via][enl] "] = { addToSkill = { type = "SocketedIn", slotName = "{SlotName}", keyword = "spell" } },
["^socketed curse gems [hgd][ae][via][enl] "] = { addToSkill = { type = "SocketedIn", slotName = "{SlotName}", keyword = "curse" } },
["^socketed melee gems [hgd][ae][via][enl] "] = { addToSkill = { type = "SocketedIn", slotName = "{SlotName}", keyword = "melee" } },
["^socketed golem gems [hgd][ae][via][enl] "] = { addToSkill = { type = "SocketedIn", slotName = "{SlotName}", keyword = "golem" } },
@@ -533,12 +549,20 @@ local modTagList = {
["per power charge"] = { tag = { type = "Multiplier", var = "PowerCharge" } },
["per frenzy charge"] = { tag = { type = "Multiplier", var = "FrenzyCharge" } },
["per endurance charge"] = { tag = { type = "Multiplier", var = "EnduranceCharge" } },
["per siphoning charge"] = { tag = { type = "Multiplier", var = "SiphoningCharge" } },
["per level"] = { tag = { type = "Multiplier", var = "Level" } },
["per (%d+) player levels"] = function(num) return { tag = { type = "Multiplier", var = "Level", div = num } } end,
["for each normal item you have equipped"] = { tag = { type = "Multiplier", var = "NormalItem" } },
["for equipped normal item"] = { tag = { type = "Multiplier", var = "NormalItem" } },
["for each magic item you have equipped"] = { tag = { type = "Multiplier", var = "MagicItem" } },
["for equipped magic item"] = { tag = { type = "Multiplier", var = "MagicItem" } },
["for each rare item you have equipped"] = { tag = { type = "Multiplier", var = "RareItem" } },
["for equipped rare item"] = { tag = { type = "Multiplier", var = "RareItem" } },
["for each unique item you have equipped"] = { tag = { type = "Multiplier", var = "UniqueItem" } },
["for equipped unique item"] = { tag = { type = "Multiplier", var = "UniqueItem" } },
["per elder item equipped"] = { tag = { type = "Multiplier", var = "ElderItem" } },
["per shaper item equipped"] = { tag = { type = "Multiplier", var = "ShaperItem" } },
["per elder or shaper item equipped"] = { tag = { type = "Multiplier", varList = { "ElderItem", "ShaperItem" } } },
["per abyssa?l? jewel affecting you"] = { tag = { type = "Multiplier", var = "AbyssJewel" } },
["for each type of abyssa?l? jewel affecting you"] = { tag = { type = "Multiplier", var = "AbyssJewelType" } },
["per buff on you"] = { tag = { type = "Multiplier", var = "BuffOnSelf" } },
@@ -670,6 +694,7 @@ local modTagList = {
["if you[' ]h?a?ve cast a spell recently"] = { tag = { type = "Condition", var = "CastSpellRecently" } },
["if you[' ]h?a?ve consumed a corpse recently"] = { tag = { type = "Condition", var = "ConsumedCorpseRecently" } },
["if you[' ]h?a?ve taunted an enemy recently"] = { tag = { type = "Condition", var = "TauntedEnemyRecently" } },
["if you[' ]h?a?ve used a skill recently"] = { tag = { type = "Condition", var = "UsedSkillRecently" } },
["if you[' ]h?a?ve used a warcry recently"] = { tag = { type = "Condition", var = "UsedWarcryRecently" } },
["if you[' ]h?a?ve used a fire skill recently"] = { tag = { type = "Condition", var = "UsedFireSkillRecently" } },
["if you[' ]h?a?ve used a cold skill recently"] = { tag = { type = "Condition", var = "UsedColdSkillRecently" } },
@@ -838,8 +863,7 @@ local specialModList = {
mod("LightningDamageTaken", "INC", -num, { type = "Condition", var = "HitByLightningDamageRecently" })
} end,
["when you kill an enemy, for each curse on that enemy, gain (%d+)%% of non%-chaos damage as extra chaos damage for 4 seconds"] = function(num) return {
mod("PhysicalDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }),
mod("ElementalDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }),
mod("NonChaosDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }),
} end,
["warcries cost no mana"] = { mod("ManaCost", "MORE", -100, nil, 0, KeywordFlag.Warcry) },
["enemies you taunt take (%d+)%% increased damage"] = function(num) return { mod("EnemyModifier", "LIST", { mod = mod("DamageTaken", "INC", num, { type = "Condition", var = "Taunted" }) }) } end,
@@ -1154,6 +1178,7 @@ local specialModList = {
mod("FireDegen", "BASE", 0.005, { type = "PerStat", stat = "Life" }, { type = "Multiplier", var = "Level" }, { type = "Condition", var = "HerEmbrace" }),
mod("FireDegen", "BASE", 0.005, { type = "PerStat", stat = "EnergyShield" }, { type = "Multiplier", var = "Level" }, { type = "Condition", var = "HerEmbrace" }),
} end,
["gain her embrace for %d+ seconds when you ignite an enemy"] = { flag("Condition:CanGainHerEmbrace") },
-- Skill-specific enchantment modifiers
["(%d+)%% increased decoy totem life"] = function(num) return { mod("TotemLife", "INC", num, { type = "SkillName", skillName = "Decoy Totem" }) } end,
["(%d+)%% increased ice spear critical strike chance in second form"] = function(num) return { mod("CritChance", "INC", num, { type = "SkillName", skillName = "Ice Spear" }, { type = "SkillPart", skillPart = 2 }) } end,
@@ -1269,7 +1294,9 @@ local regenTypes = {
}
-- Build active skill name lookup
local skillNameList = { }
local skillNameList = {
[" corpse cremation " ] = { tag = { type = "SkillName", skillName = "Cremation" } }, -- Sigh.
}
local preSkillNameList = { }
for skillName, grantedEffect in pairs(data["3_0"].gems) do
if not grantedEffect.hidden and not grantedEffect.support then
@@ -1577,7 +1604,7 @@ local function parseMod(line, order)
if not damageType then
return { }, line
end
modValue = { tonumber(formCap[1]), tonumber(formCap[2]) }
modValue = { tonumber(formCap[1]), tonumber(formCap[2]) }
modName = { damageType.."Min", damageType.."Max" }
modFlag = modFlag or { keywordFlags = KeywordFlag.Spell }
elseif modForm == "DMGBOTH" then
@@ -1585,7 +1612,7 @@ local function parseMod(line, order)
if not damageType then
return { }, line
end
modValue = { tonumber(formCap[1]), tonumber(formCap[2]) }
modValue = { tonumber(formCap[1]), tonumber(formCap[2]) }
modName = { damageType.."Min", damageType.."Max" }
modFlag = modFlag or { keywordFlags = bor(KeywordFlag.Attack, KeywordFlag.Spell) }
end