I just used the item vault to pull Wanderer's Rest out for my Ghoul Paradox Mage. I think it completely bugged out my character's resistances: http://te4.org/characters/5993/tome/2de ... 0e9f90daa5
I took off all my gear and I'm left with -6% cold resist... what??
Paradox Mastery gives +35% temporal resistance, yet I'm sitting at 21%...
Is there something that happens in the game that permanently reduces your resists? Or is my character just bugged out somehow?
[1.0] Character's resistances bugged
Moderator: Moderator
-
- Spiderkin
- Posts: 543
- Joined: Sat Feb 11, 2012 1:12 am
Re: [1.0] Character's resistances bugged
People have been reporting bugs with permanently higher/lower resistances after getting hit with the Doomed talent Feed, it's probably a result of that.
Re: [1.0] Character's resistances bugged
It does seem like there may be something missing with Feed. EFF_FEED handles both the caster's bonuses and the target's maluses. Anything that might prevent EFF_FEED's removal prevents it from removing EFF_FED_UPON. Since EFF_FED_UPON doesn't handle its own penalties, its own timeout can't remove them. Here's a patch that moves the penalty handling to EFF_FED_UPON. Hopefully, it ensures that Feed's target always recovers. It's only lightly tested.
Code: Select all
Index: game/modules/tome/data/timed_effects/mental.lua
===================================================================
--- game/modules/tome/data/timed_effects/mental.lua (revision 6382)
+++ game/modules/tome/data/timed_effects/mental.lua (working copy)
@@ -579,43 +579,30 @@
-- health
if eff.constitutionGain and eff.constitutionGain > 0 then
- eff.constitutionGainId = self:addTemporaryValue("inc_stats",
- {
- [Stats.STAT_CON] = eff.constitutionGain,
- })
- eff.constitutionLossId = eff.target:addTemporaryValue("inc_stats",
- {
- [Stats.STAT_CON] = -eff.constitutionGain,
- })
+ eff.constitutionGainId = self:addTemporaryValue("inc_stats", { [Stats.STAT_CON] = eff.constitutionGain })
end
if eff.lifeRegenGain and eff.lifeRegenGain > 0 then
eff.lifeRegenGainId = self:addTemporaryValue("life_regen", eff.lifeRegenGain)
- eff.lifeRegenLossId = eff.target:addTemporaryValue("life_regen", -eff.lifeRegenGain)
end
-- power
if eff.damageGain and eff.damageGain > 0 then
eff.damageGainId = self:addTemporaryValue("inc_damage", {all=eff.damageGain})
- eff.damageLossId = eff.target:addTemporaryValue("inc_damage", {all=eff.damageLoss})
end
-- strengths
if eff.resistGain and eff.resistGain > 0 then
local gainList = {}
- local lossList = {}
for id, resist in pairs(eff.target.resists) do
if resist > 0 and id ~= "all" then
- local amount = eff.resistGain * 0.01 * resist
- gainList[id] = amount
- lossList[id] = -amount
+ gainList[id] = eff.resistGain * 0.01 * resist
end
end
eff.resistGainId = self:addTemporaryValue("resists", gainList)
- eff.resistLossId = eff.target:addTemporaryValue("resists", lossList)
end
- eff.target:setEffect(eff.target.EFF_FED_UPON, eff.dur, { src = eff.src, target = eff.target })
+ eff.target:setEffect(eff.target.EFF_FED_UPON, eff.dur, { src = eff.src, target = eff.target, constitutionLoss = -eff.constitutionGain, lifeRegenLoss = -eff.lifeRegenGain, damageLoss = -eff.damageGain, resistLoss = -eff.resistGain })
end,
deactivate = function(self, eff)
-- hate
@@ -623,17 +610,13 @@
-- health
if eff.constitutionGainId then self:removeTemporaryValue("inc_stats", eff.constitutionGainId) end
- if eff.constitutionLossId then eff.target:removeTemporaryValue("inc_stats", eff.constitutionLossId) end
if eff.lifeRegenGainId then self:removeTemporaryValue("life_regen", eff.lifeRegenGainId) end
- if eff.lifeRegenLossId then eff.target:removeTemporaryValue("life_regen", eff.lifeRegenLossId) end
-- power
if eff.damageGainId then self:removeTemporaryValue("inc_damage", eff.damageGainId) end
- if eff.damageLossId then eff.target:removeTemporaryValue("inc_damage", eff.damageLossId) end
-- strengths
if eff.resistGainId then self:removeTemporaryValue("resists", eff.resistGainId) end
- if eff.resistLossId then eff.target:removeTemporaryValue("resists", eff.resistLossId) end
if eff.particles then
-- remove old particle emitter
@@ -684,8 +667,42 @@
no_remove = true,
parameters = { },
activate = function(self, eff)
+ -- health
+ if eff.constitutionLoss and eff.constitutionLoss < 0 then
+ eff.constitutionLossId = self:addTemporaryValue("inc_stats", { [Stats.STAT_CON] = eff.constitutionLoss })
+ end
+ if eff.lifeRegenLoss and eff.lifeRegenLoss < 0 then
+ eff.lifeRegenLossId = self:addTemporaryValue("life_regen", eff.lifeRegenLoss)
+ end
+
+ -- power
+ if eff.damageLoss and eff.damageLoss < 0 then
+ eff.damageLossId = self:addTemporaryValue("inc_damage", {all=eff.damageLoss})
+ end
+
+ -- strengths
+ if eff.resistLoss and eff.resistLoss < 0 then
+ local lossList = {}
+ for id, resist in pairs(self.resists) do
+ if resist > 0 and id ~= "all" then
+ lossList[id] = eff.resistLoss * 0.01 * resist
+ end
+ end
+
+ eff.resistLossId = self:addTemporaryValue("resists", lossList)
+ end
end,
deactivate = function(self, eff)
+ -- health
+ if eff.constitutionLossId then self:removeTemporaryValue("inc_stats", eff.constitutionLossId) end
+ if eff.lifeRegenLossId then self:removeTemporaryValue("life_regen", eff.lifeRegenLossId) end
+
+ -- power
+ if eff.damageLossId then self:removeTemporaryValue("inc_damage", eff.damageLossId) end
+
+ -- strengths
+ if eff.resistLossId then self:removeTemporaryValue("resists", eff.resistLossId) end
+
if eff.target == self and eff.src:hasEffect(eff.src.EFF_FEED) then
eff.src:removeEffect(eff.src.EFF_FEED)
end
- Attachments
-
- feed-fix-maybe.txt
- Patch for permanent Feed maluses
- (4.41 KiB) Downloaded 97 times
Re: [1.0] Character's resistances bugged
fixed
[tome] joylove: You can't just release an expansion like one would release a Kraken XD
--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning
--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning
