Page 1 of 1

(b30) Crushing Hold bug

Posted: Wed Jul 20, 2011 9:06 pm
by Hedrachi
If you die while strangled through this thing, you're perma-silenced (unless you later find a wild infusion that cures physical, I think).

Re: (b30) Crushing Hold bug

Posted: Wed Jul 20, 2011 9:22 pm
by madmonk
Obviously not on rogue-like or insane mode?

Dead is dead there unless you have certain things...

Re: (b30) Crushing Hold bug

Posted: Wed Jul 20, 2011 10:55 pm
by Hedrachi
Uh yeah, heh. I got to go see Eidy, and was silenced there. Silence never wore off.

Edit: Going back to level doesn't fix this either.

Re: (b30) Crushing Hold bug

Posted: Wed Jul 20, 2011 11:21 pm
by tiger_eye
Just wondering... before you died, were you both "Grappled" and in a "Strangle Hold"? If so, upon entering the eidolon, was the "Grappled" effect gone?

Re: (b30) Crushing Hold bug

Posted: Wed Jul 20, 2011 11:46 pm
by tiger_eye
I suspect that the effect "Strangle Hold" is actually reapplied, because removing the "Grappled" effect also removes the "Strangle Hold" effect.

A table of current effects is constructed in "DeathDialogue.lua:cleanActor", and the effects are randomly removed via "actor:removeEffect" or "actor:forceUseTalent". Hence, if Grappled is removed first, then it will also remove the Strangle Hold effect. If Strangle Hold is subsequently forced to be used (intended to disable it) via "actor:forceUseTalent", then I believe the effect will become active again.

The best fix, probably, is to double check in "function _M:cleanActor(actor)" to make sure the effect is active (i.e., "hasEffect(...)") before removing or force using the talent. I'm not very familiar with this part of the code, so I don't feel comfortable posting a patch to do this (especially since I'm not certain this is the bug :wink: ).

Re: (b30) Crushing Hold bug

Posted: Sat Jul 23, 2011 7:02 pm
by edge2054
It looks like the forceUse check is to disable sustains. It makes a table of all effects and if it's a timed effect it clears it, otherwise it assumes it's a sustained effect and forces the dead actor to use the talent.

Strangle Hold is clearly a timed effect so I'm not sure why the silence isn't being removed. The timed effect itself has a holdover though that might be at fault (originally I wanted the strangle hold to do full damage to silence immune targets but at some point decided that didn't make sense).

Anyway...

lines 3759 - 3770 in timed effects could be replaced with this

Code: Select all

	activate = function(self, eff)
		eff.tmpid = self:addTemporaryValue("silence", 1)
		eff.dur = self:updateEffectDuration(eff.dur, "silence")
	end,
	deactivate = function(self, eff)
		self:removeTemporaryValue("silence", eff.tmpid)
	end,
}
And that might fix it. I'll try to do some more extensive debugging tomorrow when my wife has the day off.

Re: (b30) Crushing Hold bug

Posted: Sat Jul 23, 2011 7:55 pm
by tiger_eye
Yeah, that looks better, edge2054 (although I haven't tested it either). 'canBe("silence")' is checked for in the talent itself, so it's not needed in the timed effect as well. Also, I'm not sure what the (seemingly global) variable "silenced" was doing there.

Re: (b30) Crushing Hold bug

Posted: Sat Jul 23, 2011 8:21 pm
by edge2054
Probably bad things :(