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)