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
2 changes: 1 addition & 1 deletion src/Data/Skills/act_int.lua
Original file line number Diff line number Diff line change
Expand Up @@ -866,7 +866,7 @@ skills["BlasphemyPlayer"] = {
statDescriptionScope = "skill_stat_descriptions",
statMap = {
["blasphemy_base_spirit_reservation_per_socketed_curse"] = {
mod("SkillData", "LIST", { key = "spiritReservationFlat", value = nil })
mod("SkillData", "LIST", { key = "blasphemyReservationFlatSpirit", value = nil })
},
},
baseFlags = {
Expand Down
2 changes: 1 addition & 1 deletion src/Export/Skills/act_int.txt
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ statMap = {
#flags area
statMap = {
["blasphemy_base_spirit_reservation_per_socketed_curse"] = {
mod("SkillData", "LIST", { key = "spiritReservationFlat", value = nil })
mod("SkillData", "LIST", { key = "blasphemyReservationFlatSpirit", value = nil })
},
},
#mods
Expand Down
14 changes: 8 additions & 6 deletions src/Modules/CalcDefence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ function calcs.doActorLifeManaSpiritReservation(actor)
if activeSkill.skillData[name.."ReservationFlatForced"] then
values.reservedFlat = activeSkill.skillData[name.."ReservationFlatForced"]
else
local baseFlatVal = values.baseFlat
local baseFlatVal = values.baseFlat * mult
values.reservedFlat = 0
if values.more > 0 and values.inc > -100 and baseFlatVal ~= 0 then
values.reservedFlat = m_max(m_ceil(baseFlatVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100), 0), 0)
Expand All @@ -232,17 +232,19 @@ function calcs.doActorLifeManaSpiritReservation(actor)
if activeSkill.skillTypes[SkillType.MultipleReservation] then
local activeSkillCount, enabled = calcs.getActiveSkillCount(activeSkill)
local minionFreeSpiritCount = skillModList:Sum("BASE", skillCfg, "MinionFreeSpiritCount")
values.reservedFlat = values.reservedFlat * mult * m_max(activeSkillCount - minionFreeSpiritCount, 0)
values.reservedFlat = values.reservedFlat * m_max(activeSkillCount - minionFreeSpiritCount, 0)
end

if activeSkill.skillTypes[SkillType.IsBlasphemy] and activeSkill.activeEffect.srcInstance.supportEffect and activeSkill.activeEffect.srcInstance.supportEffect.isSupporting then
if activeSkill.skillTypes[SkillType.IsBlasphemy] and activeSkill.activeEffect.srcInstance.supportEffect and activeSkill.activeEffect.srcInstance.supportEffect.isSupporting and activeSkill.skillData["blasphemyReservationFlat" .. name] then
-- Sadly no better way to get key/val table element count in lua.
local instances = 0
for _ in pairs(activeSkill.activeEffect.srcInstance.supportEffect.isSupporting) do
instances = instances + 1
end
values.reservedFlat = values.reservedFlat * instances * mult
values.reservedPercent = values.reservedPercent * instances * mult

-- Extra reservation of blasphemy needs to be separated from the reservation caused by curses
local blasphemyFlat = activeSkill.skillData["blasphemyReservationFlat" .. name]
local blasphemyEffectiveFlat = m_max(m_ceil(blasphemyFlat * mult * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100), 0), 0)
values.reservedFlat = values.reservedFlat + blasphemyEffectiveFlat * instances
end
-- Blood Sacrament increases reservation per stage channelled
if activeSkill.skillCfg.skillName == "Blood Sacrament" and activeSkill.activeStageCount then
Expand Down