[1.0] Character's resistances bugged

Where bugs go to lie down and rest

Moderator: Moderator

Post Reply
Message
Author
Pucker
Wayist
Posts: 18
Joined: Sat Nov 05, 2011 5:08 pm

[1.0] Character's resistances bugged

#1 Post by Pucker »

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?

stinkstink
Spiderkin
Posts: 543
Joined: Sat Feb 11, 2012 1:12 am

Re: [1.0] Character's resistances bugged

#2 Post by stinkstink »

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.

aardvark
Wyrmic
Posts: 200
Joined: Wed Aug 22, 2012 12:16 am

Re: [1.0] Character's resistances bugged

#3 Post by aardvark »

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

darkgod
Master of Eyal
Posts: 10751
Joined: Wed Jul 24, 2002 9:26 pm
Location: Angolwen
Contact:

Re: [1.0] Character's resistances bugged

#4 Post by darkgod »

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 ;)

Post Reply