diff --git a/game/engines/default/engine/Level.lua b/game/engines/default/engine/Level.lua
index 86d3791a22c9b70b1b014a2e26f645b0b83f39ea..f4133642af8684a89ad56289501944fe501b14f8 100644
--- a/game/engines/default/engine/Level.lua
+++ b/game/engines/default/engine/Level.lua
@@ -79,9 +79,9 @@ function _M:addEntity(e, after, no_error)
 	end
 
 	if self.entities[e.uid] and self.entities[e.uid] == e then return end
-	if self.entities[e.uid] then 
+	if self.entities[e.uid] then
 		if self.remove_old_entity_on_duplicate then self:removeEntity(self.entities[e.uid], true) end
-		if no_error then return else error("Entity "..e.uid.."("..(e.name or "???")..") already present on the level") end 
+		if no_error then return else error("Entity "..e.uid.."("..(e.name or "???")..") already present on the level") end
 	end
 	self.entities[e.uid] = e
 	if e.addEntityOrder then after = e:addEntityOrder(level) end
diff --git a/game/modules/tome/class/Trap.lua b/game/modules/tome/class/Trap.lua
index 76368121529d9d18fee8ac5a2e3bf27094e89198..80030e44ef354840dedbddbcd43724de8fa50de2 100644
--- a/game/modules/tome/class/Trap.lua
+++ b/game/modules/tome/class/Trap.lua
@@ -78,7 +78,7 @@ end
 
 --- Called when disarmed
 function _M:onDisarm(x, y, who)
-	-- Let the actor gain exp
+	self:check("disarmed", x, y, who)
 end
 
 --- Called when triggered
diff --git a/game/modules/tome/data/general/traps/complex.lua b/game/modules/tome/data/general/traps/complex.lua
index 10f52cd34d47716e00467e3c93d1d27e095f19b1..c1526bc9600d10bab61f0ba19472a1ca63809497 100644
--- a/game/modules/tome/data/general/traps/complex.lua
+++ b/game/modules/tome/data/general/traps/complex.lua
@@ -99,6 +99,9 @@ newEntity{ base = "TRAP_COMPLEX",
 		if self:reactionToward(who) < 0 then self.dam = self.dam * 1.5 end
 		return true
 	end,
+	disarmed = function(self, x, y, who)
+		game.level:removeEntity(self, true)
+	end,
 	canAct = false,
 	energy = {value=0},
 	act = function(self)
@@ -132,6 +135,9 @@ newEntity{ base = "TRAP_COMPLEX",
 		self:firePoison()
 		return true
 	end,
+	disarmed = function(self, x, y, who)
+		game.level:removeEntity(self, true)
+	end,
 	canAct = false,
 	energy = {value=0},
 	firePoison = function(self)