Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Data/Global.lua
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,7 @@ SkillType = {
Link = 118,
Blessing = 119,
ZeroReservation = 120,
DynamicCooldown = 121,
}

GlobalCache = {
Expand Down
10 changes: 10 additions & 0 deletions src/Data/SkillStatMap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,10 @@ return {
skill("corpseExplosionLifeMultiplier", nil),
div = 100,
},
["corpse_explosion_monster_life_permillage_fire"] = {
skill("corpseExplosionLifeMultiplier", nil),
div = 1000,
},
["spell_base_fire_damage_%_maximum_life"] = {
skill("selfFireExplosionLifeMultiplier", nil),
div = 100,
Expand Down Expand Up @@ -971,6 +975,9 @@ return {
["freeze_as_though_dealt_damage_+%"] = {
mod("FreezeAsThoughDealing", "MORE", nil),
},
["shock_maximum_magnitude_+"] = {
mod("ShockMax", "BASE", nil),
},
-- Global flags
["never_ignite"] = {
flag("CannotIgnite"),
Expand Down Expand Up @@ -1684,6 +1691,9 @@ return {
mod("CullPercent", "MAX", nil),
value = 10
},
["spell_cast_time_added_to_cooldown_if_triggered"] = {
flag("SpellCastTimeAddedToCooldownIfTriggered"),
},
--
-- Spectre or Minion-specific stats
--
Expand Down
2 changes: 2 additions & 0 deletions src/Export/Bases/ring.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ local itemBases = ...
#base Metadata/Items/Rings/Ring13 Two-Stone Ring (Cold/Lightning)
#base Metadata/Items/Rings/Ring14 Two-Stone Ring (Fire/Cold)
#baseMatch Metadata/Items/Rings/RingE%d+
#baseMatch Metadata/Items/Rings/RingK%d+
#baseMatch Metadata/Items/Rings/MirrorRing
#forceShow false

#base Metadata/Items/Rings/BreachRing
Expand Down
12 changes: 11 additions & 1 deletion src/Export/Bases/wand.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,14 @@ local itemBases = ...
#type Wand
#baseTags weapon onehand wand ranged one_hand_weapon weapon_can_roll_minion_modifiers
#socketLimit 3
#base Metadata/Items/Weapons/OneHandWeapons/Wands/WandAtlas1
#base Metadata/Items/Weapons/OneHandWeapons/Wands/WandAtlas1

#type Wand
#baseTags weapon onehand wand ranged one_hand_weapon weapon_can_roll_minion_modifiers
#socketLimit 3
#base Metadata/Items/Weapons/OneHandWeapons/Wands/WandMinion1

#type Wand
#baseTags weapon onehand wand ranged one_hand_weapon weapon_can_roll_minion_modifiers
#socketLimit 3
#base Metadata/Items/Weapons/OneHandWeapons/Wands/WandMinion2
9 changes: 5 additions & 4 deletions src/Export/Scripts/enchant.lua
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ local sourceOrder = { "NORMAL", "CRUEL", "MERCILESS", "ENDGAME", "DEDICATION", "
local function doLabEnchantment(fileName, group)
local byDiff = { }
for _, mod in ipairs(dat("Mods"):GetRowList("GenerationType", 10)) do
if mod.Family == group and mod.SpawnWeights[1] > 0 then
if mod.Family[1].Id == group and mod.SpawnWeights[1] > 0 then
local stats, orders = describeMod(mod)
local diff = lab[mod.Level]
byDiff[diff] = byDiff[diff] or { }
Expand Down Expand Up @@ -46,9 +46,9 @@ local function doOtherEnchantment(fileName, groupsList)
local byDiff = { }
for generation in pairs(groupsList) do
for _, mod in ipairs(dat("Mods"):GetRowList("GenerationType", generation)) do
if groupsList[generation][mod.Family] then
if groupsList[generation][mod.Family[1].Id] then
local stats, orders = describeMod(mod)
local diff = groupsList[generation][mod.Family]
local diff = groupsList[generation][mod.Family[1].Id]
byDiff[diff] = byDiff[diff] or { }
table.insert(byDiff[diff], stats)
end
Expand Down Expand Up @@ -79,6 +79,7 @@ doOtherEnchantment("../Data/EnchantmentWeapon.lua", { [3] = { ["AlternateWeaponQ

local skillMap = {
["Summone?d?RagingSpirit"] = "Summon Raging Spirit",
["SpiritOffering"] = "Spirit Offering",
["Discharge"] = "Discharge",
["AncestorTotem[^S][^l]"] = "Ancestral Protector",
["AncestorTotemSlamMelee"] = "Ancestral Warchief",
Expand Down Expand Up @@ -208,7 +209,7 @@ local skillMap = {

local bySkill = { }
for _, mod in ipairs(dat("Mods"):GetRowList("GenerationType", 10)) do
if mod.Family == "SkillEnchantment" and mod.SpawnWeights[1] > 0 then
if mod.Family[1].Id == "SkillEnchantment" and mod.SpawnWeights[1] > 0 then
local stats = { mod.Stat1, mod.Stat2, mod.Stat3, mod.Stat4, mod.Stat5, mod.Stat6 }
local skill
for _, stat in pairs(stats) do
Expand Down
2 changes: 1 addition & 1 deletion src/Export/Scripts/masters.lua
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ for _, craft in ipairs(dat("CraftingBenchOptions"):GetRowList("IsDisabled", fals
out:write('modTags = { ', stats.modTags, ' }, ')
out:write('"', table.concat(stats, '", "'), '", ')
out:write('statOrder = { ', table.concat(orders, ', '), ' }, ')
out:write('level = ', craft.Mod.Level, ', group = "', craft.Mod.Family, '", ')
out:write('level = ', craft.Mod.Level, ', group = "', craft.Mod.Type.Id, '", ')
out:write('types = { ')
for _, category in ipairs(craft.ItemCategories) do
for _, itemClass in ipairs(category.ItemClasses) do
Expand Down
15 changes: 9 additions & 6 deletions src/Export/Scripts/mods.lua
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,17 @@ local function writeMods(outName, condFunc)
out:write('type = "Scourge", ')
end
out:write('affix = "', mod.Name, '", ')
if string.find(mod.Family, "LocalDisplayNearbyEnemy") and #stats > 1 and #orders > 1 then
table.remove(stats, 1)
table.remove(orders, 1)
end
for index, value in pairs(mod.Family) do
if string.find(value.Id, "LocalDisplayNearbyEnemy") and #stats > index and #orders > index then
table.remove(stats, index)
table.remove(orders, index)
break
end
end
out:write('"', table.concat(stats, '", "'), '", ')
out:write('statOrderKey = "', table.concat(orders, ','), '", ')
out:write('statOrder = { ', table.concat(orders, ', '), ' }, ')
out:write('level = ', mod.Level, ', group = "', mod.Family, '", ')
out:write('level = ', mod.Level, ', group = "', mod.Type.Id, '", ')
out:write('weightKey = { ')
for _, tag in ipairs(mod.SpawnTags) do
out:write('"', tag.Id, '", ')
Expand Down Expand Up @@ -105,7 +108,7 @@ writeMods("../Data/ModJewelCluster.lua", function(mod)
return (mod.Domain == 21 and (mod.GenerationType == 1 or mod.GenerationType == 2)) or (mod.Domain == 10 and mod.GenerationType == 5)
end)
writeMods("../Data/Uniques/Special/WatchersEye.lua", function(mod)
return mod.Family == "AuraBonus" and mod.GenerationType == 3 and not mod.Id:match("^Synthesis")
return mod.Family[1].Id == "AuraBonus" and mod.GenerationType == 3 and not mod.Id:match("^Synthesis")
end)
writeMods("../Data/ModVeiled.lua", function(mod)
return mod.Domain == 28 and (mod.GenerationType == 1 or mod.GenerationType == 2)
Expand Down
1 change: 1 addition & 0 deletions src/Export/Scripts/skills.lua
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ local skillTypes = {
"Link",
"Blessing",
"ZeroReservation",
"DynamicCooldown",
}

local function mapAST(ast)
Expand Down
29 changes: 26 additions & 3 deletions src/Export/Skills/act_dex.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,26 @@
--
local skills, mod, flag, skill = ...

#skill AlchemistsMark
#flags spell curse mark area duration
statMap = {
["alchemists_mark_igniter_creates_burning_ground_%_ignite_damage"] = {
mod("IgniteDpsAsBurningGround", "MAX", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }),
},
["alchemists_mark_poisoner_creates_caustic_ground_%_poison_damage"] = {
mod("PoisonDpsAsCausticGround", "MAX", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }),
},
["alchemists_mark_grant_attacker_x_flask_charges_when_hit_once_per_3s"] = {
-- Uncomment below and delete subsequent line when we get "per hit" flask charge generation working
-- mod("FlaskChargesGenerated", "BASE", nil, 0, KeywordFlag.Hit, { type = "ActorCondition", actor = "enemy", var = "Cursed" }),
-- Delete this line if you uncomment the one above: this assume we are hitting the marked target as often as we can
mod("FlaskChargesGenerated", "BASE", nil),
div = 3,
},
},
#baseMod skill("debuff", true)
#mods

#skill Ambush
#flags spell movement duration travel
#mods
Expand Down Expand Up @@ -643,9 +663,12 @@ local skills, mod, flag, skill = ...
skill("baseMultiplier", nil, { type = "SkillPart", skillPart = 1 }),
div = -10000,
},
["explosive_arrow_hit_and_ailment_damage_+%_final_per_stack"] = {
mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment), { type = "SkillPart", skillPart = 1 }, { type = "Multiplier", var = "ExplosiveArrowStage" }),
["explosive_arrow_hit_damage_+%_final_per_stack"] = {
mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "SkillPart", skillPart = 1 }, { type = "Multiplier", var = "ExplosiveArrowStage" }),
},
["explosive_arrow_ailment_damage_+%_final_per_stack"] = {
mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "SkillPart", skillPart = 1 }, { type = "Multiplier", var = "ExplosiveArrowStage" }),
},
["explosive_arrow_maximum_bonus_explosion_radius"] = {
mod("Multiplier:ExplosiveArrowMaxBonusRadius", "BASE", nil),
},
Expand Down Expand Up @@ -1645,8 +1668,8 @@ local skills, mod, flag, skill = ...
["tornado_base_damage_interval_ms"] = {
skill("damageInterval", nil ),
div = 1000,
},
},
},
#mods

#skill IntuitiveLink
Expand Down
60 changes: 51 additions & 9 deletions src/Export/Skills/act_int.txt
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,7 @@ local skills, mod, flag, skill = ...
mod("Damage", "INC", nil, 0, 0, { type = "Condition", var = "FullEnergyShield" }, { type = "GlobalEffect", effectType = "Aura" }),
},
["energy_shield_delay_-%"] = {
mod("EnergyShieldRechargeFaster", "INC", nil, { type = "GlobalEffect", effectType = "Aura" }),
mod("EnergyShieldRechargeFaster", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
}
},
#baseMod skill("radius", 40)
Expand Down Expand Up @@ -1103,6 +1103,41 @@ local skills, mod, flag, skill = ...
#baseMod mod("MaxDoom", "BASE", 30)
#mods

#skill GalvanicField
#flags spell area duration chaining
preDamageFunc = function(activeSkill, output)
activeSkill.skillData.hitTimeOverride = activeSkill.skillData.repeatFrequency
end,
parts = {
{
name = "Single Target",
},
{
name = "Multi Target",
}
},
statMap = {
["skill_buff_grants_shock_duration_+%"] = {
mod("EnemyShockDuration", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
},
["galvanic_field_damage_+%_final_per_5%_increased_damage_taken_from_shock"] = {
mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "ShockEffect", div = 5, actor = "enemy" }),
},
["galvanic_field_radius_+_per_10%_increased_damage_taken_from_shock"] = {
skill("radiusExtra", nil, { type = "Multiplier", var = "ShockEffect", div = 10, actor = "enemy" }),
},
["galvanic_field_retargeting_delay_ms"] = {
skill("repeatFrequency", nil, { type = "SkillPart", skillPart = 1 }),
div = 1000,
},
["base_galvanic_field_beam_delay_ms"] = {
skill("repeatFrequency", nil, { type = "SkillPart", skillPart = 2 }),
div = 1000,
},
},
#baseMod skill("radius", 20)
#mods

#skill IceDash
#flags spell area hit
#baseMod skill("showAverage", true)
Expand Down Expand Up @@ -1390,6 +1425,16 @@ local skills, mod, flag, skill = ...
#baseMod skill("radius", 24)
#mods

#skill LightningConduit
#flags spell area
statMap = {
["energy_release_damage_+%_final_per_5%_increased_damage_taken_from_shock_on_target"] = {
mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "ShockEffect", div = 5, actor = "enemy" }),
},
},
#baseMod skill("radius", 14)
#mods

#skill LightningTendrilsChannelled
#flags spell area
parts = {
Expand Down Expand Up @@ -1898,14 +1943,11 @@ local skills, mod, flag, skill = ...
#skill SpiritOffering
#flags spell duration
statMap = {
["physical_damage_%_to_add_as_chaos"] = {
mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
["spirit_offering_critical_strike_chance_+%"] = {
mod("CritChance", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
},
["base_resist_all_elements_%"] = {
mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
},
["base_chaos_damage_resistance_%"] = {
mod("ChaosResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
["spirit_offering_critical_strike_multiplier_+"] = {
mod("CritMultiplier", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
},
},
#baseMod skill("buffMinions", true)
Expand Down Expand Up @@ -2356,4 +2398,4 @@ local skills, mod, flag, skill = ...

#skill DestructiveLink
#flags spell duration
#mods
#mods
5 changes: 4 additions & 1 deletion src/Export/Skills/other.txt
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,10 @@ local skills, mod, flag, skill = ...
div = 100,
},
["flameblast_damage_+%_final_per_10_life_reserved"] = {
mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "ChannelledLifeReservedPerStage", div = 10 }, { type = "ModFlagOr", modFlags = bit.bor(ModFlag.Hit, ModFlag.Ailment) }, { type = "Multiplier", var = "BloodSacramentStage" }),
mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Multiplier", var = "ChannelledLifeReservedPerStage", div = 10 }, { type = "Multiplier", var = "BloodSacramentStage" }),
},
["flameblast_ailment_damage_+%_final_per_10_life_reserved"] = {
mod("Damage", "MORE", nil, ModFlag.Ailment, 0, { type = "Multiplier", var = "ChannelledLifeReservedPerStage", div = 10 }, { type = "Multiplier", var = "BloodSacramentStage" }),
},
},
#mods
Expand Down
16 changes: 15 additions & 1 deletion src/Export/Skills/sup_int.txt
Original file line number Diff line number Diff line change
Expand Up @@ -519,6 +519,20 @@ local skills, mod, flag, skill = ...
},
#mods

#skill SupportOvercharge
statMap = {
["support_pure_shock_shock_as_though_damage_+%_final"] = {
mod("ShockAsThoughDealing", "MORE", nil),
},
["support_pure_shock_damage_+%_final"] = {
mod("Damage", "MORE", nil),
},
["shock_effect_+%_with_critical_strikes"] = {
mod("EnemyShockEffect", "INC", nil),
},
},
#mods

#skill SupportPhysicalToLightning
statMap = {
["enemies_you_shock_take_%_increased_physical_damage"] = {
Expand Down Expand Up @@ -719,4 +733,4 @@ local skills, mod, flag, skill = ...
},
},
#baseMod flag("HasSeals")
#mods
#mods
Loading