From 26a85c195647c51159544a5460f16ce76c9008ec Mon Sep 17 00:00:00 2001
From: Alexander Sedov <alex0player@gmail.com>
Date: Mon, 15 Dec 2014 07:21:42 +0300
Subject: [PATCH] Added a bit more checks to removeEffectsFilter and made it
 more concise.

---
 game/modules/tome/class/Actor.lua | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 32bdd0c267..dfa22f8efb 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -5522,8 +5522,18 @@ function _M:removeEffectsFilter(t, nb, silent, force)
 		local e = self.tempeffect_def[eff_id]
 		if type(t) == "function" then
 			if t(e) then effs[#effs+1] = eff_id end
-		elseif (not t.type or t.type == e.type) and (not t.status or e.status == t.status) and (not t.ignore_crosstier or not e.subtype["cross tier"]) then
-			effs[#effs+1] = eff_id
+		else
+			local test = true
+			test = (not t.ignore_crosstier or not e.subtype["cross tier"])
+			test = test and (not t.type or t.type == e.type)
+			test = test and (not t.types or t.types[e.type])
+			if t.subtype then
+				local valid = false
+				for k, _ in pairs(t.subtype) do valid = valid or e.subtype[k] end
+				test = test and valid
+			end
+			test = test and (not t.status or e.status == t.status)
+			if test then effs[#effs+1] = eff_id end
 		end
 	end
 
-- 
GitLab