Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
Openarl committed Dec 11, 2018
2 parents a1a7ef9 + 5f04ecc commit 4450f60
Show file tree
Hide file tree
Showing 41 changed files with 453 additions and 205 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
### 1.4.121 - 2018/12/12
* Applied the unique balance changes for 3.5
* Added base radius values for Vortex (20), Armageddon Brand (18/8), Winter Orb (16), and the Banner skills (40)
* Fixed issue with certain conditional skill stats not working correctly
* This notably caused Elemental Hit to deal all elements at once

### 1.4.120 - 2018/12/11
* Added skill parts to Shattering Steel to show both projectile and cone damage
* Fixed Claw Crit Chance conversion from Rigwald's Curse
Expand Down
12 changes: 6 additions & 6 deletions Classes/ModDB.lua
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ function ModDBClass:SumInternal(context, modType, cfg, flags, keywordFlags, sour
local mod = modList[i]
if mod.type == modType and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
result = result + (self:EvalMod(context, mod, cfg) or 0)
result = result + (context:EvalMod(mod, cfg) or 0)
else
result = result + mod.value
end
Expand All @@ -85,7 +85,7 @@ function ModDBClass:MoreInternal(context, cfg, flags, keywordFlags, source, ...)
local mod = modList[i]
if mod.type == "MORE" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
result = result * (1 + (self:EvalMod(context, mod, cfg) or 0) / 100)
result = result * (1 + (context:EvalMod(mod, cfg) or 0) / 100)
else
result = result * (1 + mod.value / 100)
end
Expand All @@ -107,7 +107,7 @@ function ModDBClass:FlagInternal(context, cfg, flags, keywordFlags, source, ...)
local mod = modList[i]
if mod.type == "FLAG" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
if self:EvalMod(context, mod, cfg) then
if context:EvalMod(mod, cfg) then
return true
end
elseif mod.value then
Expand All @@ -130,7 +130,7 @@ function ModDBClass:OverrideInternal(context, cfg, flags, keywordFlags, source,
local mod = modList[i]
if mod.type == "OVERRIDE" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
local value = self:EvalMod(context, mod, cfg)
local value = context:EvalMod(mod, cfg)
if value then
return value
end
Expand All @@ -155,7 +155,7 @@ function ModDBClass:ListInternal(context, result, cfg, flags, keywordFlags, sour
if mod.type == "LIST" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
local value
if mod[1] then
local value = self:EvalMod(context, mod, cfg) or nullValue
local value = context:EvalMod(mod, cfg) or nullValue
if value then
t_insert(result, value)
end
Expand All @@ -181,7 +181,7 @@ function ModDBClass:TabulateInternal(context, result, modType, cfg, flags, keywo
if (mod.type == modType or not modType) and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
local value
if mod[1] then
value = self:EvalMod(context, mod, cfg)
value = context:EvalMod(mod, cfg)
else
value = mod.value
end
Expand Down
12 changes: 6 additions & 6 deletions Classes/ModList.lua
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function ModListClass:SumInternal(context, modType, cfg, flags, keywordFlags, so
local mod = self[i]
if mod.name == modName and mod.type == modType and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
result = result + (self:EvalMod(context, mod, cfg) or 0)
result = result + (context:EvalMod(mod, cfg) or 0)
else
result = result + mod.value
end
Expand All @@ -77,7 +77,7 @@ function ModListClass:MoreInternal(context, cfg, flags, keywordFlags, source, ..
local mod = self[i]
if mod.name == modName and mod.type == "MORE" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
result = result * (1 + (self:EvalMod(context, mod, cfg) or 0) / 100)
result = result * (1 + (context:EvalMod(mod, cfg) or 0) / 100)
else
result = result * (1 + mod.value / 100)
end
Expand All @@ -97,7 +97,7 @@ function ModListClass:FlagInternal(context, cfg, flags, keywordFlags, source, ..
local mod = self[i]
if mod.name == modName and mod.type == "FLAG" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
if self:EvalMod(mod, cfg) then
if context:EvalMod(mod, cfg) then
return true
end
elseif mod.value then
Expand All @@ -118,7 +118,7 @@ function ModListClass:OverrideInternal(context, cfg, flags, keywordFlags, source
local mod = self[i]
if mod.name == modName and mod.type == "OVERRIDE" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
if mod[1] then
local value = self:EvalMod(mod, cfg)
local value = context:EvalMod(mod, cfg)
if value then
return value
end
Expand All @@ -141,7 +141,7 @@ function ModListClass:ListInternal(context, result, cfg, flags, keywordFlags, so
if mod.name == modName and mod.type == "LIST" and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
local value
if mod[1] then
local value = self:EvalMod(context, mod, cfg) or nullValue
local value = context:EvalMod(mod, cfg) or nullValue
if value then
t_insert(result, value)
end
Expand All @@ -164,7 +164,7 @@ function ModListClass:TabulateInternal(context, result, modType, cfg, flags, key
if mod.name == modName and (mod.type == modType or not modType) and band(flags, mod.flags) == mod.flags and (mod.keywordFlags == 0 or band(keywordFlags, mod.keywordFlags) ~= 0) and (not source or mod.source:match("[^:]+") == source) then
local value
if mod[1] then
value = self:EvalMod(context, mod, cfg)
value = context:EvalMod(mod, cfg)
else
value = mod.value
end
Expand Down
28 changes: 14 additions & 14 deletions Classes/ModStore.lua
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ local conditionName = setmetatable({ }, { __index = function(t, var)
end })

local ModStoreClass = newClass("ModStore", function(self, parent)
self.parent = parent
self.parent = parent or false
self.actor = parent and parent.actor or { }
self.multipliers = { }
self.conditions = { }
Expand Down Expand Up @@ -167,11 +167,11 @@ function ModStoreClass:GetStat(stat, cfg)
return (self.actor.output and self.actor.output[stat]) or (cfg and cfg.skillStats and cfg.skillStats[stat]) or 0
end

function ModStoreClass:EvalMod(context, mod, cfg)
function ModStoreClass:EvalMod(mod, cfg)
local value = mod.value
for _, tag in ipairs(mod) do
if tag.type == "Multiplier" then
local target = context
local target = self
if tag.actor then
if self.actor[tag.actor] then
target = self.actor[tag.actor].modDB
Expand All @@ -190,7 +190,7 @@ function ModStoreClass:EvalMod(context, mod, cfg)
local mult = m_floor(base / (tag.div or 1) + 0.0001)
local limitTotal
if tag.limit or tag.limitVar then
local limit = tag.limit or context:GetMultiplier(tag.limitVar, cfg)
local limit = tag.limit or self:GetMultiplier(tag.limitVar, cfg)
if tag.limitTotal then
limitTotal = limit
else
Expand All @@ -217,7 +217,7 @@ function ModStoreClass:EvalMod(context, mod, cfg)
end
end
elseif tag.type == "MultiplierThreshold" then
local target = context
local target = self
if tag.actor then
if self.actor[tag.actor] then
target = self.actor[tag.actor].modDB
Expand All @@ -242,15 +242,15 @@ function ModStoreClass:EvalMod(context, mod, cfg)
if tag.statList then
base = 0
for _, stat in ipairs(tag.statList) do
base = base + context:GetStat(stat, cfg)
base = base + self:GetStat(stat, cfg)
end
else
base = context:GetStat(tag.stat, cfg)
base = self:GetStat(tag.stat, cfg)
end
local mult = m_floor(base / (tag.div or 1) + 0.0001)
local limitTotal
if tag.limit or tag.limitVar then
local limit = tag.limit or context:GetMultiplier(tag.limitVar, cfg)
local limit = tag.limit or self:GetMultiplier(tag.limitVar, cfg)
if tag.limitTotal then
limitTotal = limit
else
Expand Down Expand Up @@ -281,12 +281,12 @@ function ModStoreClass:EvalMod(context, mod, cfg)
if tag.statList then
stat = 0
for _, stat in ipairs(tag.statList) do
stat = stat + context:GetStat(stat, cfg)
stat = stat + self:GetStat(stat, cfg)
end
else
stat = context:GetStat(tag.stat, cfg)
stat = self:GetStat(tag.stat, cfg)
end
local threshold = tag.threshold or context:GetStat(tag.thresholdStat, cfg)
local threshold = tag.threshold or self:GetStat(tag.thresholdStat, cfg)
if (tag.upper and stat > threshold) or (not tag.upper and stat < threshold) then
return
end
Expand All @@ -311,13 +311,13 @@ function ModStoreClass:EvalMod(context, mod, cfg)
local match = false
if tag.varList then
for _, var in pairs(tag.varList) do
if context:GetCondition(var, cfg) or (cfg and cfg.skillCond and cfg.skillCond[var]) then
if self:GetCondition(var, cfg) or (cfg and cfg.skillCond and cfg.skillCond[var]) then
match = true
break
end
end
else
match = context:GetCondition(tag.var, cfg) or (cfg and cfg.skillCond and cfg.skillCond[tag.var])
match = self:GetCondition(tag.var, cfg) or (cfg and cfg.skillCond and cfg.skillCond[tag.var])
end
if tag.neg then
match = not match
Expand All @@ -327,7 +327,7 @@ function ModStoreClass:EvalMod(context, mod, cfg)
end
elseif tag.type == "ActorCondition" then
local match = false
local target = context
local target = self
if tag.actor then
target = self.actor[tag.actor] and self.actor[tag.actor].modDB
end
Expand Down
2 changes: 1 addition & 1 deletion Data/2_6/ModCache.lua

Large diffs are not rendered by default.

7 changes: 3 additions & 4 deletions Data/3_0/Minions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -284,15 +284,14 @@ minions["SpiderMinion"] = {
coldResist = 40,
lightningResist = 40,
chaosResist = 20,
damage = 1.32,
damage = 1.76,
damageSpread = 0.2,
attackTime = 0.96,
attackRange = 3,
attackRange = 5,
weaponType1 = "One Handed Sword",
limit = "ActiveSpiderLimit",
skillList = {
"Melee",
"SpiderMinionLeapSlam",
"SummonedSpiderViperStrike",
},
modList = {
},
Expand Down
2 changes: 1 addition & 1 deletion Data/3_0/ModCache.lua

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions Data/3_0/Skills/act_int.lua
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,8 @@ skills["CataclysmSigil"] = {
skill("castTime", 0.4),
skill("damageEffectiveness", 0.9),
skill("CritChance", 6),
skill("radius", 18),
skill("radiusSecondary", 8),
},
levelMods = {
[1] = skill("levelRequirement", nil),
Expand Down Expand Up @@ -10452,6 +10454,7 @@ skills["FrostBoltNova"] = {
skill("CritChance", 6.5),
skill("cooldown", 1.8),
skill("dotIsArea", true),
skill("radius", 20),
},
levelMods = {
[1] = skill("levelRequirement", nil),
Expand Down Expand Up @@ -10595,6 +10598,7 @@ skills["FrostFury"] = {
skill("castTime", 0.25),
skill("damageEffectiveness", 0.6),
skill("CritChance", 6),
skill("radius", 16),
},
levelMods = {
[1] = skill("levelRequirement", nil),
Expand Down
2 changes: 2 additions & 0 deletions Data/3_0/Skills/act_str.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1668,6 +1668,7 @@ skills["PuresteelBanner"] = {
skill("castTime", 0),
skill("manaCost", 10),
skill("cooldown", 1),
skill("radius", 40),
skill("manaCost", 0, { type = "Condition", var = "BannerPlanted" }),
},
levelMods = {
Expand Down Expand Up @@ -6908,6 +6909,7 @@ skills["BloodstainedBanner"] = {
skill("castTime", 0),
skill("manaCost", 10),
skill("cooldown", 1),
skill("radius", 40),
skill("manaCost", 0, { type = "Condition", var = "BannerPlanted" }),
},
levelMods = {
Expand Down
37 changes: 15 additions & 22 deletions Data/3_0/Skills/minion.lua
Original file line number Diff line number Diff line change
Expand Up @@ -810,46 +810,39 @@ skills["ZombieSlam"] = {
[1] = { 1, },
},
}
skills["SpiderMinionLeapSlam"] = {
name = "Leap Slam",
skills["SummonedSpiderViperStrike"] = {
name = "Viper Strike",
hidden = true,
color = 4,
description = "Jump into the air, damaging enemies (and knocking back some) with your weapon where you land. Enemies you would land on are pushed out of the way. Requires an axe, mace, sword or staff. Cannot be supported by Multistrike.",
skillTypes = { [1] = true, [11] = true, [24] = true, [38] = true, },
baseEffectiveness = 0.64999997615814,
incrementalEffectiveness = 0.025499999523163,
description = "Hits the enemy, adding some of your physical damage as chaos damage and applying poison. Requires a claw, dagger or sword.",
skillTypes = { [1] = true, [12] = true, [28] = true, [24] = true, [25] = true, [40] = true, [50] = true, },
weaponTypes = {
["One Handed Mace"] = true,
["Sceptre"] = true,
["Claw"] = true,
["Thrusting One Handed Sword"] = true,
["Two Handed Sword"] = true,
["Staff"] = true,
["Two Handed Axe"] = true,
["Two Handed Mace"] = true,
["One Handed Axe"] = true,
["Dagger"] = true,
["One Handed Sword"] = true,
},
baseFlags = {
attack = true,
melee = true,
area = true,
movement = true,
},
qualityStats = {
},
stats = {
"skill_art_variation",
"active_skill_area_of_effect_radius_+%_final",
"is_area_damage",
"cast_time_overrides_attack_duration",
"physical_damage_%_to_add_as_chaos",
"base_chance_to_poison_on_hit_%",
"base_skill_effect_duration",
"poison_duration_is_skill_duration",
},
statInterpolation = { 1, 1, },
statInterpolation = { 1, 1, 1, },
statLevels = {
[1] = { 3, 0, nil, nil, },
[1] = { 25, 100, 8000, nil, },
},
baseMods = {
skill("castTime", 1.4),
skill("damageEffectiveness", 1.5),
skill("baseMultiplier", 1.5),
skill("cooldown", 2),
skill("castTime", 1),
},
levelMods = {
[1] = skill("levelRequirement", nil),
Expand Down
44 changes: 44 additions & 0 deletions Data/3_0/Skills/other.lua
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,42 @@ skills["SupportUniqueCosprisMaliceColdSpellsCastOnMeleeCriticalStrike"] = {
[1] = { 1, },
},
}
skills["UniqueSupportGreaterVolley"] = {
name = "Greater Volley",
hidden = true,
color = 2,
support = true,
requireSkillTypes = { 68, },
addSkillTypes = { },
excludeSkillTypes = { 70, 71, },
fromItem = true,
statMap = {
["support_greater_volley_projectile_damage_+%_final"] = {
mod("Damage", "MORE", nil, ModFlag.Projectile),
},
},
qualityStats = {
},
stats = {
"support_parallel_projectile_number_of_points_per_side",
"greater_volley_additional_projectiles_fire_parallel_x_dist",
"number_of_additional_projectiles",
"support_greater_volley_projectile_damage_+%_final",
},
statInterpolation = { 1, 1, 1, 1, },
statLevels = {
[20] = { 4, 80, 4, -26, },
},
baseMods = {
mod("ManaCost", "MORE", 40),
},
levelMods = {
[1] = nil,
},
levels = {
[20] = { 70, },
},
}
skills["RepeatingShockwave"] = {
name = "Abberath's Fury",
hidden = true,
Expand Down Expand Up @@ -1492,6 +1528,14 @@ skills["TriggeredSummonSpider"] = {
minionList = {
"SpiderMinion",
},
statMap = {
["summoned_spider_grants_attack_speed_+%"] = {
mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "Multiplier", var = "RaisedSpider" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Raised Spider" }),
},
["summoned_spider_grants_poison_damage_+%"] = {
mod("Damage", "INC", nil, 0, KeywordFlag.Poison, { type = "Multiplier", var = "RaisedSpider" }, { type = "GlobalEffect", effectType = "Buff", effectName = "Raised Spider" }),
},
},
baseFlags = {
spell = true,
minion = true,
Expand Down
Loading

0 comments on commit 4450f60

Please sign in to comment.